From e907cbcfbb6f075013c6f18fbfd097f6c1e34dd9 Mon Sep 17 00:00:00 2001 From: DMGithubPublisher Date: Thu, 4 Aug 2022 15:36:00 +0800 Subject: [PATCH] 9.2.12 --- Api Reference.url | 2 +- README.md | 56 +++++++++--------- ...worker.js => dbr-9.2.12.browser.worker.js} | 2 +- ...-9.2.11.full.wasm => dbr-9.2.12.full.wasm} | Bin 4124671 -> 4124616 bytes ...1.full.wasm.js => dbr-9.2.12.full.wasm.js} | 0 dist/{dbr-9.2.11.wasm => dbr-9.2.12.wasm} | Bin 2927757 -> 2927701 bytes ...{dbr-9.2.11.wasm.js => dbr-9.2.12.wasm.js} | 0 dist/dbr.js | 8 +-- dist/dbr.mjs | 8 +-- dist/dbr.pure.esm.js | 8 +-- dist/dbr.pure.js | 4 +- dist/dbr.pure.mjs | 4 +- dist/types/class/barcodereader.d.ts | 6 +- dist/types/class/barcodescanner.d.ts | 2 +- package.json | 4 +- samples.url | 2 +- 16 files changed, 53 insertions(+), 53 deletions(-) rename dist/{dbr-9.2.11.browser.worker.js => dbr-9.2.12.browser.worker.js} (99%) rename dist/{dbr-9.2.11.full.wasm => dbr-9.2.12.full.wasm} (76%) rename dist/{dbr-9.2.11.full.wasm.js => dbr-9.2.12.full.wasm.js} (100%) rename dist/{dbr-9.2.11.wasm => dbr-9.2.12.wasm} (80%) rename dist/{dbr-9.2.11.wasm.js => dbr-9.2.12.wasm.js} (100%) diff --git a/Api Reference.url b/Api Reference.url index ba9188f..f2c09e2 100644 --- a/Api Reference.url +++ b/Api Reference.url @@ -1,2 +1,2 @@ [InternetShortcut] -URL=https://www.dynamsoft.com/barcode-reader/programming/javascript/api-reference/?ver=9.2.11 \ No newline at end of file +URL=https://www.dynamsoft.com/barcode-reader/programming/javascript/api-reference/?ver=9.2.12 \ No newline at end of file diff --git a/README.md b/README.md index 42f9f69..339e094 100644 --- a/README.md +++ b/README.md @@ -28,18 +28,18 @@ In this guide, you will learn step by step on how to integrate the DBR-JS SDK in **Popular Examples** -* Hello World - [Guide](#hello-world---simplest-implementation) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.11/1.hello-world/1.hello-world.html) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/1.hello-world.html?ver=9.2.11&utm_source=github) -* Angular App - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/helloworld-angular.html?ver=9.2.11&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.11/1.hello-world/3.read-video-angular) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/3.read-video-angular/dist/hello-world/?ver=9.2.11&utm_source=github) -* React App - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/helloworld-reactjs.html?ver=9.2.11&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.11/1.hello-world/4.read-video-react) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/4.read-video-react/build/?ver=9.2.11&utm_source=github) -* Vue App - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/helloworld-vuejsv3.html?ver=9.2.11&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.11/1.hello-world/6.read-video-vue3) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/6.read-video-vue3/dist/?ver=9.2.11&utm_source=github) -* PWA App - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/helloworld-pwa.html?ver=9.2.11&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.11/1.hello-world/10.read-video-pwa) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/10.read-video-pwa/helloworld-pwa.html?ver=9.2.11&utm_source=github) -* Read Driver Licenses - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/use-cases.html?ver=latest#read-the-pdf417-barcode-on-the-drivers-license?ver=9.2.11&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.11/4.use-case/2.read-a-drivers-license.html) \| [Run](https://demo.dynamsoft.com/samples/dbr/js/4.use-case/2.read-a-drivers-license.html?ver=9.2.11&utm_source=github) -* Fill A Form - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/use-cases.html?ver=latest#read-barcodes-and-fill-form-fields?ver=9.2.11&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.11/4.use-case/1.fill-a-form-with-barcode-reading.html) \| [Run](https://demo.dynamsoft.com/samples/dbr/js/4.use-case/1.fill-a-form-with-barcode-reading.html?ver=9.2.11&utm_source=github) +* Hello World - [Guide](#hello-world---simplest-implementation) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.12/1.hello-world/1.hello-world.html) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/1.hello-world.html?ver=9.2.12&utm_source=github) +* Angular App - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/helloworld-angular.html?ver=9.2.12&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.12/1.hello-world/3.read-video-angular) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/3.read-video-angular/dist/hello-world/?ver=9.2.12&utm_source=github) +* React App - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/helloworld-reactjs.html?ver=9.2.12&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.12/1.hello-world/4.read-video-react) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/4.read-video-react/build/?ver=9.2.12&utm_source=github) +* Vue App - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/helloworld-vuejsv3.html?ver=9.2.12&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.12/1.hello-world/6.read-video-vue3) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/6.read-video-vue3/dist/?ver=9.2.12&utm_source=github) +* PWA App - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/helloworld-pwa.html?ver=9.2.12&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.12/1.hello-world/10.read-video-pwa) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/1.hello-world/10.read-video-pwa/helloworld-pwa.html?ver=9.2.12&utm_source=github) +* Read Driver Licenses - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/use-cases.html?ver=latest#read-the-pdf417-barcode-on-the-drivers-license?ver=9.2.12&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.12/4.use-case/2.read-a-drivers-license.html) \| [Run](https://demo.dynamsoft.com/samples/dbr/js/4.use-case/2.read-a-drivers-license.html?ver=9.2.12&utm_source=github) +* Fill A Form - [Guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/use-cases.html?ver=latest#read-barcodes-and-fill-form-fields?ver=9.2.12&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v9.2.12/4.use-case/1.fill-a-form-with-barcode-reading.html) \| [Run](https://demo.dynamsoft.com/samples/dbr/js/4.use-case/1.fill-a-form-with-barcode-reading.html?ver=9.2.12&utm_source=github) You can also: -* Try the Official Demo - [Run](https://demo.dynamsoft.com/barcode-reader-js/?ver=9.2.11&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-demo/) -* Try Online Examples - [Run](https://demo.dynamsoft.com/Samples/DBR/JS/index.html?ver=9.2.11&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/v9.2.11/) +* Try the Official Demo - [Run](https://demo.dynamsoft.com/barcode-reader-js/?ver=9.2.12&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-demo/) +* Try Online Examples - [Run](https://demo.dynamsoft.com/Samples/DBR/JS/index.html?ver=9.2.12&utm_source=github) \| [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/v9.2.12/) ## Hello World - Simplest Implementation @@ -59,9 +59,9 @@ The complete code of the "Hello World" example is shown below - + + ``` * UNPKG ```html - + ``` #### Host the SDK yourself @@ -157,7 +157,7 @@ Options to download the SDK: * From the website - Download the JavaScript Package + Download the JavaScript Package * yarn @@ -174,7 +174,7 @@ Options to download the SDK: Depending on how you downloaded the SDK and how you intend to use it, you can typically include it like this: ```html - + ``` or @@ -201,7 +201,7 @@ The SDK requires a license to work, use the API `license` to specify a license k Dynamsoft.DBR.BarcodeScanner.license = "YOUR-LICENSE-KEY"; ``` -To test the SDK, you can request a 30-day trial license via the [customer portal](https://www.dynamsoft.com/customer/license/trialLicense?ver=9.2.11&utm_source=github&product=dbr&package=js). +To test the SDK, you can request a 30-day trial license via the [customer portal](https://www.dynamsoft.com/customer/license/trialLicense?ver=9.2.12&utm_source=github&product=dbr&package=js). > If you registered a Dynamsoft account and downloaded the SDK from the official website, Dynamsoft will automatically generate a 30-day trial license for you and put the license key into all the samples that come with the SDK. @@ -213,7 +213,7 @@ The purpose is to tell the SDK where to find the engine files (\*.worker.js, \*. ```javascript //The following code uses the jsDelivr CDN, feel free to change it to your own location of these files -Dynamsoft.DBR.BarcodeScanner.engineResourcePath = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.2.11/dist/"; +Dynamsoft.DBR.BarcodeScanner.engineResourcePath = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.2.12/dist/"; ``` ### Interact with the SDK @@ -308,9 +308,9 @@ As you can see from the above code snippets, there are three types of configurat Try in [JSFiddle](https://jsfiddle.net/DynamsoftTeam/f24h8c1m/). - See also [settings samples](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/parameter-settings.html?ver=9.2.11&utm_source=github). + See also [settings samples](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/parameter-settings.html?ver=9.2.12&utm_source=github). -> Find the full list of the runtime settings here. +> Find the full list of the runtime settings here. ### Customize the UI (optional) @@ -404,12 +404,12 @@ The built-in UI of the `BarcodeScanner` object is defined in the file `dist/dbr. > Generally, you need to provide a resolution that the camera supports. However, in case a camera does not support the specified resolution, it usually uses the cloest supported resolution. As a result, the selected resolution may not be the actual resolution. In this case, add an option with the class name `dce-opt-gotResolution` (as shown above) and the SDK will then use it to show the **actual resolution**. - See also [UI customization samples](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/ui-customization.html?ver=9.2.11&utm_source=github). + See also [UI customization samples](https://www.dynamsoft.com/barcode-reader/programming/javascript/samples-demos/ui-customization.html?ver=9.2.12&utm_source=github). ## API Documentation You can check out the detailed documentation about the APIs of the SDK at -[https://www.dynamsoft.com/barcode-reader/programming/javascript/api-reference/?ver=9.2.11](https://www.dynamsoft.com/barcode-reader/programming/javascript/api-reference/?ver=9.2.11). +[https://www.dynamsoft.com/barcode-reader/programming/javascript/api-reference/?ver=9.2.12](https://www.dynamsoft.com/barcode-reader/programming/javascript/api-reference/?ver=9.2.12). ## System Requirements @@ -430,7 +430,7 @@ DBR requires the following features to work: * `MediaDevices`/`getUserMedia` - This API is only required for in-browser video streaming. If a browser does not support this API, the [Single Frame Mode](https://www.dynamsoft.com/barcode-reader/programming/javascript/api-reference/BarcodeScanner.html?ver=9.2.11&utm_source=github#singleframemode) will be used automatically. If the API exists but doesn't work correctly, the Single Frame Mode can be used as an alternative way to access the camera. + This API is only required for in-browser video streaming. If a browser does not support this API, the [Single Frame Mode](https://www.dynamsoft.com/barcode-reader/programming/javascript/api-reference/BarcodeScanner.html?ver=9.2.12&utm_source=github#singleframemode) will be used automatically. If the API exists but doesn't work correctly, the Single Frame Mode can be used as an alternative way to access the camera. * `getSettings` @@ -448,14 +448,14 @@ The following table is a list of supported browsers based on the above requireme 1 iOS 14.3+ is required for camera video streaming in Chrome and Firefox or Apps using webviews. 2 On Edge, due to strict Same-origin policy, you must host the SDK files on the same domain as your web page. - + 3 Safari v11.x already has the required features, but it has many other issues, so we recommend v12+. Apart from the browsers, the operating systems may impose some limitations of their own that could restrict the use of the SDK. Browser compatibility ultimately depends on whether the browser on that particular operating system supports the features listed above. ## How to Upgrade -If you want to upgrade the SDK from an old version to a newer one, please see [how to upgrade](https://www.dynamsoft.com/barcode-reader/programming/javascript/upgrade-guide/?ver=9.2.11&utm_source=github). +If you want to upgrade the SDK from an old version to a newer one, please see [how to upgrade](https://www.dynamsoft.com/barcode-reader/programming/javascript/upgrade-guide/?ver=9.2.12&utm_source=github). ## Next Steps diff --git a/dist/dbr-9.2.11.browser.worker.js b/dist/dbr-9.2.12.browser.worker.js similarity index 99% rename from dist/dbr-9.2.11.browser.worker.js rename to dist/dbr-9.2.12.browser.worker.js index 30ad523..5d7d273 100644 --- a/dist/dbr-9.2.11.browser.worker.js +++ b/dist/dbr-9.2.12.browser.worker.js @@ -4,7 +4,7 @@ * @website http://www.dynamsoft.com * @copyright Copyright 2022, Dynamsoft Corporation * @author Dynamsoft - * @version 9.2.11 (js 20220727) + * @version 9.2.12 (js 20220727) * @fileoverview Dynamsoft JavaScript Library for Barcode Reader * More info on DBR JS: https://www.dynamsoft.com/barcode-reader/sdk-javascript/ */ diff --git a/dist/dbr-9.2.11.full.wasm b/dist/dbr-9.2.12.full.wasm similarity index 76% rename from dist/dbr-9.2.11.full.wasm rename to dist/dbr-9.2.12.full.wasm index 1fde96acecaae06c7a5a2fbf94397ba888cd25f4..db12e1986fa7d9b4057ea6c180e0fe9d492a405f 100644 GIT binary patch delta 819090 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

yr3OYIU72bdO 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 ayksO!$3O>w8KC<479_*?Q+8R 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 z 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

Q2v1<{^>6jzhI@YAksJl?} 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

sp>V>LlHaj*uIt3k_`h3%DdN8l}5GL7-p_5ZE z$>s`Xatf6b)fzcD1xvE2?xCYoU$EJ9P-!-OIY|Z z3YOPpjq+mL!MscFVV-a6%bY$lIR#6y>7xXP3rO53KmVK_JA);pEKmt4*QjKS4az(d z%2(P$=b4sGN9n?JlmSdfnZP`&8T@7GPYak`q3jA}SIAvKclDLiuAsYu+0_U-IRz6} zmM|IR1`exl9M8NvoY5&%oYXhB}f=*7o$nods z)JsjX8Nf7~5p;A4IywcDY?jc;Dd^-BbaDzhIkn9?cxr2^QK}V;)erz_!TmM2Qr(lxJ1$1%>IynWMoPthH z!QbZJUpLs%DVS!nhmKBNH_fIClWYdi$tmdM6il+2!z7y}OtQIwNjA3?c616lI`xgF z*>qrZs1s9o|f=*6BC#T?>bMXY7oPtR3x$|v|I!Zp`%kU&1MR-2GLU>4zALPw`yn#~d>+1x-Ur=XKl(8;N9ae~Tn z0qEouOtKk&tL|T{!r@6w+3e^PbaVw7$)Yo9k?tWYdR9HW$#zDd^-B zJSH3Z*8)2_1s$D&X*PS9W^?|J{9KU%73ky?baD!25zZxaatbEdETNNAuu8MJ#g0xv zN2j2pQ|qSL^k9~g-gcWN z*>qr%O&@+M_dlCpN2g$#%?hU3tYMnX9Za&hhejzD< z>B1zN0Zg(P!7ReLgh@6xCE4&lXIJAgImI9T>DlH3uRHs9XZ0eS*Hku}4S$kmvxOO) zLJm&dHqE9BlWYbs$z}wdn}W_w)ep$r6f9RlHz>)by2TDoK?kQ`noawkn`YC44o*Sm zrl50E(77q-+!SIyVKKn}W_w zLFcBRb5m8lIfGL_YMMloF z3eFxoer(>rB%529%ikSzZVEa#^6>H^fs_UQ_#UFm}GMabF9x{=B7{*$PILE3g!*4 zgGn}rpY#5AaOxM$u{VGYPC*B!po3G;xha@ra|3gf-PVuI+!QRY%K_!ZX#dh@UY+%D zp70Q+j*MYxHdB=1a0OF0R;P!qVWyc-=_vQ8RE*ZW6{Calh5E2`lIY3MScHK=%ZXd*b{z!`amWIyePWSGF)6We?L)y1zEr3{ZIn zBUGZ%C30>G=Evm@9d>XEW?!w}oc0ABoPtR<6X@I&OtM)(=cb@@Q_#67 z=-kx4YMM=F&*4*oT^~9)1s$A%8Jt4SO+n|TV3N%(bZ!bJ*|dJ!B%2OACL6y0eVk@9 zfsdCDwpqP3gHzDKDVSw88|d5=bZ!bdH}z_hYzEM|Dd^l3tQ?%e4o<-|n;Yoh6m)P3 zCfOWdl1=+}O|t1h=cb@@Q_#67SdtC%AK1Yu=-?D|a0)s&1+&bib!d`J2PWC{p>tEv zxha@rGlR}e!8hgiFJI#{n+;5}*}^oNJxsGX|9z8ey3n~P=-d>1wJeO8Lg%JnlFbSx z*;H%n;1qmwuAZQSQ-9zMT)tWdIyeQLn}W_w!6cg*bZ!bdHwB%Wf}j6L`S+JSc5v#C zO|$7j2d7|~%?KvhT*4%qIdpCcCfVFT=cZti%?>&@RbdCGS`XQ5dhn6*oftv~r=WvV zFv(^CotuKrO~E9aEljf6L+7R*d8ke{$MeqsJ2(Z?Y%ZaLQ!veD36pGYpmS5uxhd$} z6m)Lt4Sa>vE$H0T8>)wFHd8jI*<3*fr=WvV(7`E~WYhY~hfFpdm}Jw3&P_q*rl50E zuue90|61TQn``Lc6il<(LIO+ASUEU_9h`cMmobA=FwJHF(`-gC$!1RFH!!^J@|OucJO0`W0+<$g;{2^g3e9BB%2*f zvN^ycoA#R?GTHQClFbl~vi@s=9h`y=PC*B!po3E|$z}_kn|d<`Tb9c}=cb@@Q_#67 zm}FDUv4d04!6}$#a|_dKcF@5o=-kv>cn4-~3MSbMp>tC($z}$VY!>jvr^@;F8mHOJ z-};apW(l))2Dx?yde>q2XgQP)(4{kPd&mycgD#zcE}el{I`cN(f3BTjt7~VVYiFQq zXP|3mU^-0e?fm7lbOyR~2D)?xx^xD*bOs(f4DY`McI^yw?F@A740P=bbnQ%+H)#2n z-7a+L40P!Xbm=-L_R+L^!N6X%b|RsKEb(i!N|8R*g( z=+YVJ(ivDf4EJBbuAPBdJA+(1^A29mw;y9i7v}nW0CTZ3f-aqbE}elcoq;Z$fi9ha zZ~tCdf4{@7oq?{Mc_*(%=BQvg%n+u-jN$CD^3NC0r8Cf_Gti|o(4{lbr85o9cb40P!XbmP3AbOv6Xm(Tz6zvfJowKLGQGtjj& z(6uu#9cB()Is;ug16?`;U55Z&I`cPtM3h05-rw-~@7ftQyLJZJ+h97(0=jkvde>p- z(i!N|8R*iPck%uC@$qQw!W=XMSYIL6pZ_E5+8OBD8JG^UgjqX-Tss3Z?zDq0oq;Z$ z>2tPBZi6nJfi9ham1}3PYiD5A&Y-NFL9U&Fx$7`;>CC$yN{8v7ES*6voq;Z$fi9ha zm1}3PYiFQqXP|3mplfGfI?Vas^3}3*2D)?xx^xD*bOyR~29^#}oh`9zXP|3mplfHK zYiFQqXWqk!B}Wm=u|9-ZI)if5PoYa^pi5`q7dqwhXN_Gu13hNztyw!WV8@yFgXu6s z=+YUO4l{*0%C73iX6X#f(i!B^nE}Utp87qT^MqTEbNh}brdUi)51qj* zok3a8f=Zg$psZ&>`9k~0*}n@~{*KS%GGf$)E@*-73c7X%W>+Y?LfI9{u8_Ne?&7f<*UmuK&cN(z z1Kk&N?F@A3%zODMto+;C0H(u?pi5_64Ktqt7i@Oz40P=bbnOgu?F{s;!_cKO(4{lbr87_QikE)Tg)W_eb%!~A z{$SV6K-bPd*UmuK&Oq1BK$p%ym(IM8E7-C!rUTPq`p~5_Fdb&{K7Rgn?F^e;I|I{U zuAysZU^>hero-%^OJ_#BULQYxFT2pCGti|o(4{l**kSnjcZpp)16?}=-L^W4zqwRoq;Z$fi9haE}i*M(_y+W9i|#!*UmuK&Oq1B zz;u`;bnOgu=?rw~40P!Xe7Rg4wx4b~Ob@zr20n37KL5wqwKLGQGw_-6B~~yUW)0I} z?x0I&pi5_-;Yi8S8R*g(=+YVJ(wPdob_Tk32ByPYL)Xqg*UrFnm_2mq%%tfs1L)Ej z=+YVJ(i!-|MLGX2v1@0bYiFQqXP|3mU^-0u!@N<-=iU&ybOyR~2D)?xx^$-AS`NGQ zhdKYcc81OAF!wMWruC7g!*pOeOdqDhOrT3=pi5_ z(_z-or8Cf_Gti|oA8k5J7rJx?9y<)@-w}50479_*n@;&yhv_iL4g>8l@X>S_Xoq?3 z)M20<2KLKi$8cQzm*e6;XorDz7-)xqb{J@ffp(aW@t04Bfp!>Zhk8l&<-;_br@)efp!>Zhk}dl*ldS^=`hF+^NCZ3fp!>Zhkw8KC<479^QI}EhLKsyYq3^CXaGdpz{XorDz7-)xqb{J@ffp!>Z zhk2 zI}EhLKsyYy!$3O>w8KC<479^QJIwQ^4g+)0R0Et#q{AHFe`9Qifp!>}4ujHRkR1l5!yr4%XPOR!(qWJt2HIgD9p|1MM)Mtqd_|OE%kKpdALM+m_ z1JhxU9R}KA;PDN>`+tSAAZ88iFwkSR-kJ_`b?PwC4g>8l&<+FbF!f{8VPHB8dP`N` z1n7S{yTf)EXoq=$^Jh8?Oou^s7-$?hJ#+>WM^NGjN*qCnBj{IEDK2|#9r^sJjzHrG zbXU+01G6iXU7_p>Wmm`!1KraXIRBY^u)BhG7-)xqb{J@ffwmEt4ujHR7CwU>vco_- z%!1=DUv%@VW1rb+F_s_2HIhu9R}KApdAL|1MM)-4g>8l&<^v`sl&im zO9ARbI}BV*%Jt_2+hL#`2HIhu9R|K!zS8l&<;~!XPBTJ2HIhu z9R}KApdIF`rw#+{FwhPI?J&>|1L-iw&%YJ6!$3O>w8KC<%-1+{(_x?;2HIhu9R}KA zpdALZhkrZEx*ldS^b{J@ffp!>ZhkM-!wVfg$X;wQ=@#?TG}?J)3}@_-ez!$3O>w8KC<%r`kw(qW(-2HIg@ zWr)Fc7-)xqb{J@ffp!>Zhk_B+hL#`2HIi1ed;jK4g>8l&<+FbFwhPI?JzJMrn<*j z5Yzfc-fQVF&<+FbFwhPI?J&>|1MM)-4g>8l&+F_s_2HIhu9R}KA zpdALA*CeKFrM11x(|a)DI{} z^b8)aoVd>xOyjwRX*?U4#xrb>ytsn5Sa@pE}X*_+HwKf;&<#&ZqRcsB5tFO_vJTb#zT zho$kH-?HP9&blybZH6${Ut^dHsVPk3xq@jtE11T!hG{%^Fl%k@Z!5l98G35{bJKV_ zFpZ}Vv)1MUrtwT*8qW--@ho5(&o#{D@&=~yY+)MD9@ba<_2=yQ51Yo*g;{GefVnar z!8D#rn8q`QX*^4q#&ZMHcy3`X9(OPoj|Z5g2JIj5IeT?}Y&^Xmagr;IX9&}H#xRX% z3e$M5U>eT~rtz#{8qXa}<7wSBuU7}A@$}(wtqq^E7dVY)0@HZrFt76xrt#dsG@e_S z#eT~rtz#{X*_o*jprVw@w9&2 zG@cGjRewZv&WH!uh7EllIt!8D!&Oyg;9o5s_FX*@%i#xsU#JX4q> z`3k1-tl;0jIqO_-8qXa}(Nc(s(woye?aGd@(rw z_c%}e{9l?U+=Zzr16Uf*2qjTm!qkxY>7h$l!pjXR;pG;U?6E^7yd2Q+3$g$9j%QVB zQV%A)3}M2{7`iK%XSIac70Rwqc7?Jll;_<3`DstE-cx=48)A0_v#Tjg<5|Jfm^Dmy zxr6C0tzX!9I;cE@J}S@P0;TaxV4lnzj=oWjza>uNxq)dsw=nzKLHG4bo+7^?iYMNI zX*@%i#xsU#JX4s)a|P3QRxoRA))h|U*}*iP15D#--#3k?2h(_lur!_tO5>TqG@b=a z=&YnaBffoVKjn8ve*X*}n@X&O%# zX06Qt9@pA%{Eu)N&m~ObnZq=mB~0VFfoVLqFpXyi(|8Urjicne(ovX;x5cun*n^aRGAS>0;cgyU>eU1 zrtvIb8qYOM#Vw6z0MmFzFpcLDrt!>S8qX4@@!Y^Po*hi% zIlwfY_8*(Z(}S6L8bT6J`FAdy#xsR!JXbJ{X9d%E)-a9d4yN(k!!({&>tP#D2fkdc zO!_c0PZuz2Z6>Yi;j<^oBW7$)<5|Eoo@@9_dB6sy@oZrl&mN}noImogji(FKcn0;> zGV?ToX*`#(PCWJbcaGC|mN1Ry2Bz`c!Ze;8OyfDgG@kYwc<$xBKZKci8pAZ6DNN(J zf>~>`dc(t&jc3i~G@d({#&ZwTcv^q?u#Kk!(|GzYjb~Cnpd3mwn8ve!X*}03jb~GD ztsl$zcZ<___Arg-{QO}XPZwt9X#mrBMlg+M4%2v+FpXye(|EQpjb{(jc+MYv_^e9f z>Ebk=Axz^L!!({LOyjwNX*?^K#R z8qWfz@m#|+o()Xn*}^oQJxt>{f9zo!PZwt9X$aGJ#_&^BX~%*aMNL+9R}KA;Guk5C(sT9?J&>|1CJes_umF*t<4tNVPHB;haIQGKsyYy z!$3O>w8KC<479^QI}H3ywK@JIeUI%hZ)G2=^7A#c!$3O>w8KC<479^QI}EhLKsyXf zhpF~Bm*wYgd)T!$U1*1ab{J@ffp!>ZhkZhkn!>+aIKsyYy!$3RCJ9z&k#LU=ihk|1MM&{9R}H9pdALj zyZYwwxo@x?2HIi%raAUH&<+FbFwhPI?J&>|1MM*NW7A<^I!p!gYV4sM=3UJb?m{~Z zOou^s7-$?hJ#+~ZM^NGjN*qCnBNeoc^m$h4FwhPIjU&)qK|2i0u26P`vMZEbA@}s| zW=~ZQyDR9fpdAL8l&<+FbFt9SjU^@)7!$3RCfK%6t<&6gIFfbhk*8l&<+FbFwhPI?J&>|^Y{G7TYe)>7usPeoS~-?w8KC<479^QI}EhL zKsyYy!$3RCkk=?32HIiZ>d9PxVml19!$3O>w8KC<479^QJIs6exhEY4+F{_U=`hd^ z^WKW{aCz{Y&2|`Qhkmf!^KFwhPI?J%(JF!j&BE1b19YiNgo zb{J@fd4emuPaOBrfp!>Zhk8l zaP#ExsZF6B2HIhu9R?md4CkLaoV7NsC;7?fL*;J=?J&>|1MM)-4g>8l&<+FbFwhPI z?J%%1#5~1|n+^l*FwhPI?J&>|1MM)-4g>8l&<^uHelp5n8Y~^A{ylemE6OW6hISaZ zFW<~7XorDz7-)xqb{J@f8S%C&r?3vR!$3O>{J!@Y!FCvEhk8l&<+E?{r>Xr z4=emaxpZ4YI}EhLKs(F_If~2QqXX?Q&<;~SARPwUVW1rb+F`1Cb9wL<+F_s_W_;=} z&<+FbFwhPI?J&>|1MM)-4g={h$DjYtKg5$L2U{1~VW1rb+F_s_2HIhu9R}KApdAL< zVV*v9n5Q}a=H@d)HrrvK9R}KApdALJcbNM8JH}aSGlg~- zXorDz7?=)&>@aX#zJIOBsl&j2+1iJ882EhII)RlT2B*UyI}EhLKsyYy!$3RChff^_ z+F_s_2HIg@I!rakE{K747-)xqb{J@ffp(aW@U~5dfp!>Zhk zc9?qWqsLE!dw5aUdX}GO3p>yb1MM)-4g>8l&<+FbFco$|479^QI}A*Rxn#%bFwhPI z?J&>|1MM)-4g>8luZhkZhkZ zhkZhk8l&<+FBVUQgL+F?F%>M+m_1MM*I-9Ihwze)Xwl89!|4g>8lFdYV^ z!yr2hOo#a-pD^h#FdYV^!yr2he9Py{{^!^Z1MM)-4g>8l&<+FbFtbyKfp!>Zhke*a%%7sNn2479_1x;geb z&<+FbFwhPI?J&>|1MM*NW7AedBR<2hk@xZ$PNRIBd3QhVd4l% z96^aA&$Iv35jI*!<{T~QFwi&xjU&)qK|2i0u26P`vMZE5A@}r|`tP4zede?)=&qn0 z2HIhu9R}KApl#%{O@~40Fen`c*8l&<+FbFjuDz1MM&{9R}H9pdAL|1MM)-4)b~5;PrJspFbV!f*5Frfp!>Zhk5QFV7&<+FbFwhPI?J&>|1MM)-4g>8l3tppi7+5+CpFen2ejpt~I}EhL zKsyYy!$3O>w8KC<%oq8&CmjabVW1rbe!nVB<`UaspdAL8l&<+FbFwhPIci!g`+hL#`2HIhu z9cIaanGOT(FwhPIH{}JLLOTq!!$3Psg?J!?Cbr@)efp!>Zhk|v*K-+4g>8luw8KC<479_1 zl^^BOVW1tR-kJ{cRnEUIh+(rG2HIhu9R}KApdAL|1CJes^Y0aQ zK@7CRKsyYy!$3RC*Ex#QVW1rb+F|Mkq{Bcv479_*$`Dg;PKSYZ7-)yNK6MyqhkZhk8l&<+FbFwhPI?J&>|1MM)-4)e`Zhk@xZ)eyTN2HIhu9R}KApdALL!yr2h z9GCB3>*my9V83kbLpuz7{>gIwnbeOc`ELf(VUQgL+F_s_2HIhu9p+o74g>8l&<+Fb zFyG?+=YkkE+hL#`2HIhu9R}KApdIGhylvBApdALZhpD$d zS~?88C~W=Xslz}!479^QI}EhLKsyYq3^CXa1MM)-4g=F+)~5~w?J&>|1MM)-4g>8l zFde2^V;96gI}EhLeCO0*pdAL|1MM)-4g>8l&<+FbFcr=v=>ghdzRQPNIt;YKKsyYy!$3O>w8KC<479^QJIv|1MM)-4g>8l&<+FbFwhPI?J(avb(rr}hM2P8l&<+Fb zFfbhk*Zhk@xZC>;jbVPHDU5BP*hhk@xZ zC>;hJI}H23#4d<|b{J@ffp!>ZhkZhk=zL2HRnv9R}KApdAL< zVgC8lVW1rb+F_s_2ByQH9Q4%!yC4SIVW1rb+F^d!9D5yThkKH2B*UyI}EhL{HS@tU1*1a=`hF+1C1l6hc02_2ud75o$9~VOP6*qbp%;Q?s!s( zBhU^5jU&)qK|2i0u26P`(qT~cgnso(`TMtDIqeF%E9kDE9R}KApdAL|1MM)- z4zoRV7-)xq=`hF+1MM)-4g-IBUH<)ZgY7WT4g>8lKRtCAXosn{ro%ux479^QI}EhL zKs!wJGv48)5_F&)2HIhu9R}KApdAL zw8KC<479^QI}EhLKsyYy!|ZsC(qVRd{KNK#pdALZhkw8OyCVfa0R*ab1r z4)beX+;kXdhk8l_10&~ z`FDivFwhPI?J&>|1MM)-4g>8l&<^wJslz}!479^k*ab1r4g>8l&<+FbFwhS3JI-6_ zFwhPI?J)HN(qW(-2GU`UKmT82J50Sf9R}KApdIFL>M+m_1MM)-4g>8l&<+FbFbB@R zE{I{X9p?8uiE^-Yp&bU=VW1rb+F_s_2HIhu9R}KAVBKNr^KbhPylK*5pdALZhk^&zrd%g>*e z*bW2jFwhPI?J&>|1MM)-4)caTZ#vBX$JPDC#(LLzp3ga)%tX74lvzSAy~;?L?x>YN zXGe_0oMp9WhiAnF7k$wyu`5>URda!~Et-}3qA!?fx}O3J6r=(LIM@M03NTP14phJm zCK$RJOk!vQMKHku0|gi`V4whpnBc&^pZa~?Po=kS`o+(6{FJMnKUMF1%Z7FsXorDz zm>N3}1MM)-4g>8l&FZU5hk@&bombt|&ci@E479^QI}EhLKswC)_}j&H7-)xqb{J@f zf$1|vvgB!h&g204g>8l&<^uzwvo>zK|2hz!$3O>w8KC< z479_*`CD49|5NNh479^QJIrftYCo3*?J&>|1MM)-4g>8l&<+FbFt9enU^@)7!@TyU zw!=U>479^QI}EhLKsyYy!$3O>EFFf|U)}Zz>p?pVw8KC<479^QI}EhLKsyYy!$3O> zw8OlPL%7ZdldvC5f_4~ahk@d&{^ZJ|G&m}=SOpP6gfp(bY7U?k1 z4g>8lFdYV^!yr2hOozGcrnbYtbQqKlQ$q)0pdAL9&F7M! z9R}KAART6Y{BL19479^QI}EhLKsyYy!`yyT`?(}&hkC3XRqI7)eZyg zFwhPI?J#d>_q`sp!$3O>w8KC<479_*`A+sM#&4P%XCMZq!yr2hw8Ok{ew42K;uDvi zRwuo%WO{-25NHp9=^-dR1f_?d^bllu>2o(yUZ6PynnPgirm&lW*%ZpAP&S3KDdeW! zwAd7MQ_xL8%L}x;yoqPd^un^~1)4+N%w@ZL6bU80prjXMd4ZM}XnBE_7if8bmX{j4 zt+#L=lU|_d1)5%<=><9h11&Gm@&YX{(DDK;FUy>(zF3Z&Wo&wZNiWFs0!=T_^a34$ zftD9&d4ZOfJ2=^ww=Dx`dAWnf-}J(==>?izpy>sgUZCmatsK)SFVOM=EicgW0xd6a zUS67a&e-$&0!=T_^s;hOI|2hOFVOM=EicgW0xd7FHoaie3pBkz(+f1ctnwTs zy+F$goRn9f8_@CsEidq%56oY9O<*Z6{Dn$vdV!`FXnMJmmpVx=(DVYE^wN|UXnBE_ z7if8bmKSJwf#1k)NS&0!=T_5g2HBftD9&d4ZM}Xn9#<$9#Wz=iJAp7ifBcrWa^>fu#rN*WgXnKLB7ifBcrWfc4479vJ%gZ}?a#LQQ`pe>?AC zFHU-arWa^>X>O480>|a&*oCvgeQ0@UR#RS}sgUZCj(nqHtIFz@4-NqK>m7if8b zmKV5^2M|7xa=DL9FVOS?O)t>&@_ydAl*6tMEicgW0xd7l@&YX{Fy*B_#7Qs6^a4#U z!$o?5rWfc4479v7H%NJbDKE(K0xd7FDKE|OcY;kX(DZWmBE3M<3pBkzM_{1k1zKL9 z?izpydTxUZCX#T3(vfl3PyUyu38W-#xsZ zEz3P<9h11&Gm@&YX{A6%3dXnBF(dZd)QAvV20 z(+f1cK+_8}y+F$gw7fve%ZIq8Wda6TUZCZr#-?izKD#1&vbjhv(DVXLFVGPfXnBE_7kJm}=Py1Fq2&cyUSMr{ z`G-Y%fuYAeLfI6`rjVQZ_+nGgO+h;hw8Ow3XL4qO?J&>|18pPsw;cwh z!=Q8+WQT!v7-)xqb{J@ffwdt9yRA=fAJbu=9R}KApdAL|1MM)-4g>8l@Swcr>wa?4VcZ zhk zw8KC<45Y)9>kqcWKsyYy!$3O>w8M;fj?!VE9R}KApdAL8l&<+FbFwhPI?J%(EFwN`VBkTwad^jIPf_9isFFFjg!$3O> zw8KC<479^QI}EhLe45w4j=+3o(P5w+2HIhu9R}KApdAL8l&<+FbFwhPI z?Jy7U+@`}oI}9uxrmi-zBQVeo1MM)-4g>8l&<^w9qQgKt479^QI}EhL!29x>TPD~J z1MM)-4g>8lyBv1uFwhPI?J&>|1MM)-4g=F+>V518479^QI}EhLe2&+0=`hd^)2yb$ zKsyYy!$3O>ysaGj2k=Mfe@EC31MM)-4)gg%hkZhk8l&<+FbFwhS3#YKmKb{J@ffp!?U z!lTxle|PZ%C8+E}I}EhLKsyYy!+dGcVW1rb+F_s_2HIhu9p+1%e-mO3Sx$#Rb{J@f znJhXCw8KC<479^EH%Nzp=`hF+1JhyZDRu+~+F_s_=F5u?1MM)-4g>8l&<+FbFwhPI z?J)40`{n)j4BKI#9p)j9+jJOchk}4g>8l z&<+FbFwhPI?J&>|1MM)-4g>8lkPg%Ae@pvpI2{JsVW1rb+F_s_2HIhu9R}KApdAL< zVZOTPFkfZ=a|DKEI}EhLKsyYy!$3O>w8KC<479^QJIuq24g=>MhU@ZhkOngUw8KC< z3@ja{<}dWM|85W3VW1rb+F_s_2HIgBS#%g^hkZhpBN!U{E>?vctf1m~U`}Nr!>yFen`c*w8KC<47}_0rNclw45Y)%ufM0*4)e`Lhk@d&{1MM)-4g>8l-{SbsIi~lmMTdcQ7-)xqb{J@ffp(bYw&^f19R}H9 zpdIGh-d}!mGEVVWgXu8H4g-xNi<|Dj#1WJ@f)Yni;s`R1Ou19(FtEfCescx3jzBjB z?JzK#LfI6`rcgG8+|+j#n}T*2=$7DoOPv38l&^Gejw!@%w7?ci!>@d&{ z1MM)-4g={h^ZoA#+hL&F`X2W&9R}KApdALw8KC<479`i zfFnE|2HIiZ6J^Wm&<+D@LkzaVKsyYy!$3O>w8KC<%nuhG2HIhu9R}KAVCgVif3O2F z&<+FbFwhPI?J&>|bIfy;4g>8l&<+FbFwhPI@2Sh9GQoBjXorDz7-)z25wCmFVW1rb zKAw3PXorDz7-)xq=`i&Hb|41YVW1rb+F^dY=rGU@1MM)-4g>8l&<+FbFz}HNm;QH( z?Jz%CbQoxdfp!>Zhk|1MM)-4g>8l z&<+FbFh5;%7)XbipMO@d9R}KApdALw8Oxr!!)n|cd!F7&<+FbFwhPI?JzSAyL1?6 zhk8l&<+FbFwhPIYeNjS!~BZ9I2{JsVW1tRxj{M% z9G6qrE}RwaLpw~fnhpc)FtBu(x>`D&hnVKSKlGs;2HIhu9R}KApdAL5$ zPNc&?I}Cih&hL!Ib{J@ffp!>ZhkZ zhk&+fE?#xRHT>&8x~A%%-PHV%?dCgQ`;r^4V*58dY5UhVU!QOP`o;F2QLSe28H>g1 zssW45ow{zZcx^RgvAI*%W^w*Ajk4&^#67*H+Io6c{h?UBRE<~u?T;^AcVTzsPkwyq zkN*2fHnDeAzTL$u7oT4pto+4~FFpP8G+*5DiXD{yDv#QQ-ZmKSFkDs+zd}h^U@hL1mbFp~2>a%!>#mkFDUN5kCHH$Z8k)Ptm zYQW;ZV)4c-a<^}&hILkN$m&zBT)e&-Wzol*AL1F+Ru+A{`5~_3?<|&Y>f`;du3Wsf z+GX*{k2j0#Lo7Bwl8-lw>_fj<`S4FJJ?#&se6jf{+->+GyUofsesbxL>RG9RRlfZTtAnf_xXN95K{aKy zc_#N=y`IheS#_M{iOX#6PdQ}A%{@HJ7kB+4-~V}4=e&HU_R#11Key_#+C2Xr`h552 z&|u1dL9=q}Bco_V<%X4QR~EnTigEH-7*$u9(j_4YGRT6Ts?URzp^s zeZJjsSbcFdVzs$;wL177nR#R4+AEv!Vu=@P!nAK*_Zuc8jpGQde|Lr$_-|RPMS#`gud9a>S zb$(ZF>yE?E@@zioTo&DN__3c=^|R=X!+!V7YBh`QH$1tQt3ejsZ&>6t5sObg7e3|6 zf8b;|Vzv3PJQs4)8>%f9n@7Oih{fxRV&|HD3CZgz>CCw+N*p<4a@%75m||M!3|H$Ua}lfJxlp&GK>JS1B#b2m0G zRHH0!y3Ac3U8uIQJaU<5W#a;m%YDDP^asz_%~ywhmB(QHLN!_WHeam|_-gZr4xaSY zwF}jh<>qd$J!yIM0{=CpJjSaov!&$=)hx@)E_1*7TmiD&cbT7}#}%M+^Zbcwt{3(E zHQvjwT;zh$W&P!Bv%O%j%mt&*a`P0n7YvrUV65i5v=1cu{qb)%M8e0r>N3n$`Bezn+Kdh1GGE+iM1o?F*V$ZjUyXfqbz&^x3=rwCcQ~ z+?V#y=VbZ(s+-mJ&}a2|RiD-7r)e)4tUk9|WwrUqJ@i?8PBmb$*(p8pFJ1Y6IrN9D zHV>kQJ~w?3j_a#w7QJNf$UTGCAyfXrk-S%L(#qr zVwt^qi{<8FYxioF*{jDZUw-V;AN*gte6@M}+r5~tzPy^S+B{e7Ud-ytssmP=J+Ix1 zS^b-8%4%~dZm(tRrGL#s^4v3an_0ft?!r7Ke_5SnwcUl;Eni%9URAzPy9@K!zNqSE zwcUkz8veZMXSLmhIj6j^TFq*^2md>s&lgmKEVmakp87wlhOb)r#TnP)QNG&l!(7{+ zUv074{H*Oh%i z(2V8gLEP{H!19pm0?W+<-dvGZ{+Hig`fvZR^Xl@%tUu|71Fi_KUipjPav=8ka`Ozg z$0^^ZIZjz_c8B(A#4=Z-0n5$4(;l`gH-|0D&4JP$wk$V??aG&b%T;oVuQsn*+ryN{ zXnvUfp0C!s`D%NZ@?dkAX0<&`d0se7v)Ue}JcS&lS#1wfo^1}(thN^(c8r%+v#hp9 zZF3xP*k-vsY}v&)Y+ti--#N!o_ci4QXb)6g4s)PpwLMT-_Ncv{We!`Go1?BhY+2>7U3t+Hm!5v>E?;b(cCR&j zjpLNXW*6~V!y?D&%HRopq$yu(b~Z0Ae2oK>#payt#f3!pHUq6aPe0S9dsJ!siwIB2uz zLCf*UL7PPnT6R4S+Sjgp_;;K-cFPw_%o$%GSydC399@DLT|$m7K}VOmH@CmN2Rgb0 zfAOCAe->YdjxIGf$mkL*0|E6eban~)88YbT5_EJ4I=b|_o7>;s107w0jxIq*m!P9d z(9tFM=;z9i(gAjM3Hli_=;#u3bm{dsx1&q&2S@WiIXZxjEpNU4o7-K}VOMqf7Ad@%(|=N`dWYEzin9(KV=n}mBw)yVddGpQfZ|{MQES26j4q*!E+I#kprcFB(WM$Yy9AwGf{rdhN0*?ZOUv9>|Ef6O?d#Q5_EJ4@=fR0pFQmC67(}<(9tF6w%*QN%;*wybP3+UUrXk{v~EC0 zm!P9d(9tF6=+fKko7>qXmYrRKjxMcn>hiCO^V;F|`8EcuW^@TTx&$3vf{rdhN0*?Z zOK?8A#N&UC56XWg?Y@Ike}0z_babg%&FB(zbO}1T1RY(1jxIq*m)^+%p3x=f=n|}- zC|h2~&MrYmm!P9duvZ@8edy>CbaV+ix&$3vy6filSNT9kmtYxP;+I5WXP2O#A%l)C zK}VOMqf5}yCFtl9baZLJbCl5~=;#u3bO}C`Uy`$hon3u^gY(|%wA*BuM>=N`dWbnT1D$vm-=;#u3 zbO}1TG~}?$=n`~v2|Bt2zgxcVXvp>dJ$XyWva?Ij(Ix2U5_EJ4I=TcMUAmi>av5EM zjxIH;8C`;oF2VWe66fDBc6JHQXO|dVf{rdhN0*?ZOVH7!4{+bhu|I&0Ex&$A{N66q4|1Lqxv<8Kf988T>xfp!>Z zhk8l&<+D@LkzaVKsyYy!+eC-v!%}TpdALZhkmOFe^_)F z=tsz)9R}KApdAL}SY6y67;_4g>8l&<+FbFwhPI?J&>|1MM)- z4g+}`I=}vRKgLBZpCN;G7-)xqb{J@ffp!>ZhkZhkv7aG>b{J@ffp!>}4ukA4@b>ak zbnaht7-)xqb{J@ffwdt9+hL#`2ByQHbQolZf$1=x;0ohk6>mEXi|H`P4g>8lur|bC zI}EhLKsyYy!$3RC_M*c;I}EhLKsyYy!@$yE>S}@sG0j`oLuiMAb{J@f`Q)O*KsyZl zOm-q@hk@xZ$PNSTF!0W=mE(Vk?J&>|^Qpx?3r|YvUWIlTXorDz7-)xqc9`b2=`b)I z=2Ptdeuj)yJIp_}ceoGjFfbhk*6w0PhHifb&WQX~u#g=O9rl6aGb{J@ffp!>Zhk>?{Pq!Tgm3y#?(qWJt z29`U+hlFsx>mIbjKsyYy!$7z78SY{_479_*JIYI)4QPjfb{J@ff$y!qGB1~h*w2tb zI}EhL>?}GAw8Ox37-WZmb{J@ffp!>ZhpDljA%k|9&n`L)w8J#3=`hd^1MM)-4g>8l z&<^te2Y5ORq{GawKdaad1MM)-4g>8luvZ@8eQ1Y)b{J@ffp(Y&7aa!LVIE}v_cLTH z+hL#`2HIhu9R}KApdALZhk|1HXGudH*@Wb{J@ffp!>Zhkb{J@ffp!>Zhk479^Q zJIq(ui_>AC9R@yHo}^K8gLD{ZhkZhk;FpY0ke(U*%4u!@yzrZUbnCfp!>Zhkw8OwB%DtRII}EhLKs(IW799ruBtIOScNosU8`#f~K|2hz!$3O> zOou^s7-)w%SacX@hkZhkw8KC<479^QJIpsY{v3#5*$xBkFfbkFkPWB9KsyYy!$3O>w8KC<479_* zd52;DJH`&gKs(Gg7aa!LVW1rb+F_s_2HIhu9R}KApdAL*h8S#z`PQPtKsyYy!$3O> zw8KC<479^QI}EhL!19i?uFkOoG2iB*mJS2$FwhPI?J&>|1MM)-4g>8l&<-8l zFdYWjVc_lMr|5il(P5w+2HIgDPx$=!8#TAcKn%3QKsyXfhe7Eu$PNS3VZO%|#=k1w zb{H1ZVUQgL^3H$0{V}$~KsyYy!$3O>w8KC<%+aF5KsyYy!$3O>w8I?LhL~!?vKL%Bpn9YVW1rb z+F_s_2HIho+or?7Iw1zyVW1u6hwUBiLpuyihe382XdGGGbPpzupu`cBID+cb5ojGb zW^YM{fyNPN9D!~M+F@Weg|aD>O`&WFxuqX9KYuob-4t|F&<+FbFwhPI?J&?b^5eF{ zpmZ3N4ukA4KW6{Sy&1D?hkpM|r8U0qro*4g;GG)4cwh zU|1MM)-4g>8l&<+FbFwhPI?JzT*qjVUU4pR@X12NDJ1MM)-4g>8l&<+Fb zFwhS33tso6!$3O>d_40o@Vi^({pTjO!$3O>w8KC<479^QI}EhL{BqG@pdALZhkZhk8l&<+E4%57)R4g>8lk1aaPW4!sPWjhSC z!$3O>yf1qSw8KC<479^QJIon}T{;Z3!@zlm;rhRhzgxcX2-;zw9R}KApdAL8l z&<+FBVUQgL+F?4kw4Y0Yb{J@fflY^L&Of8(7U?iB9R}H9pdALgW8VW1rb+F@YnFdTo_ff#6qfp(Z? zH5~@pVP17h+hL#`2HIhu9R}KApdAK&rheo6_0K-G!$3O>w8Ox3m?bux4g>8l&<+Fb zFwhPI?J&>|Q)35WpdALk?3I}EhLKsyYy!$3O>w8KC;%>4R)g6%NS z4)dB@+Rr6HI}EhLKsyYy!$3O>w8KC<479_%roP3uq~|Q#VP1Pn+hL#`2HIhu9R}KA zpdALw8KC<%G0iQ~VW1rb z+F@Wi3`&PVb{LorbK5O#hk^c8@muULtd$PKAF03UX?w8KC<479^QI}EhL^tiA7 zRdK#qK9|I*9R}KA;J4~>;~iWEVyX$W!$3O>w8KC<%Zc(_xSu zrp6A$KsyYy!$3RC8`^!Z2T#&rpdAL zw8KC<479^QxAhk8Vmb`8!@xVrOPvj9hk@xZ^$vC*2HIhu9R}KApdDtJQ+qy_1nn>| z9R_uW^AqVdw8KC<45Y)%AO9(~!$3O>w8PxNsXw1ff_9i@H5~@pVW1rb+F_s_2HIiX z%Js*An78u7ePVu(SD_sS+F_s_2HIhu9R}KApdAL| z1MM)-4g>8l&<+FbFwhPI?J%o6N9i!DTz?#hVc8A??J&>|1MM)-4g>8l&<+FbFn990 zCmjabVc@*O@cwg%9f*N;82CWhf%f1-g$K|M1MM*I;rwYUXoqw8KC<44l;E6F-O84g>8l@8E?|K9>aTFwhPI?J&>|1MM)- z4g>8lFde2o!4AYgJIp(Ia?@d;9R}W6o}^7^hkZhk|1MM)-4g>8l&<+Fb zFz@1}TsjQ2!!)ZOD(BxJw!=U>479^QI}EhLKsyYy!$3RCySeY>*dIVU479_%yXF*i z_xz;0!?GO)+F_s_2HIhu9p*jk#py864g>8l%?;9FpdAJ_9i}<|?qdgHn&osDXorDz zn05BX9CpwS1MM*Ik+P4Dp&bU=VW1smo%62)F)Z6*-pidxhkZhk^4B!}+)SJ`NiH#yEGg6sZBLb{J@ffp!>ZhkPP;Ydh-5TZsJ!w?a%+;wQs)o@2|Om-){Gmm+;GD z4&Q&v4c9ck|7prUNUb@6rPiFG)S9IsC)+&A@YN;2tijZpAxy2=gqfNd!#cHQ50^JV z2Pn1X2&UG|U~0`dOs(nO-PW3A__d#w-<<$cYc^nN%@$0p*@1~Q^#rHZ9KzI^W0+cV z3R7!3AK;|WpC4j9m|C+6Gc~ggQ)@;rwPqWp*6hMe&FsVdA7*GDr`DXn)S9zqwbYuW zd)ivlhnbpLgQ+z`m|C+5Q)|XBwPp{d)*Qf0%^cM@wPprWYtCV6O?Sguvy4(}1~9c| z1oJL_8|E$1E=;Z2hp9DFm|AlJn^@DFG|q5p&C=kYRxfBtvQ8x8`$|!-Uf2g=;6FsU4@yNS%;}LBbZvV4O44&VQS4jOs$#1)S45R zT5|?dYx<-1`C5Z@YRwR*)@;JmnlVhRnZP{HhcLC~7^c>o!ql41eQmAj!PJ^nm|C+A z%hXI=jd1pwZJ1iK3sY1-4M8W_I9h z50vdsaB9sVOszSF*=bKZIm!tBZWHBPOW z!ql1*m|AlNQ)`y~p{+H2_|VtpcVZ2u)(l~4%_hvgK8B^%?4i_}1K7lx=J-FtIRIub zwdNeA*7QHx?t5!6wPpxYYc^qO%^0TE?7`HU1DKucsJU&Knwfp{mK*cLoU@u*)BRX` z*Owu8c;yxU=haWEOQ6|eDS2TBCS^=us>vZN)#MnJYI2H7HR){GEP5#4XceZWyUafW&-m~4`KSuF-)I1h1pc6{={NiFo9+bCeVyv0?jr|pxK29 zH2W}pW(w11PGI^>XS?k)J(xbT3h6WRyt0lHXhyIEnlb8@mt=b|f#v`v&>X=G%FJN; zOy`qrpXtH$nN^rRGlJ|Oicns5LPT@E5>uoxp z<^V3=tp^imR$&6oI!vG$!33IZm_D-$(`TmeBV}_ZFn#6>rq3*WrtLFzACJo)qFI9p zG((s`vk4Pu#xQ|q4`xv20H)6z!StCKOrJT2=`-CO4%X6{mf4P=LTHemHoIrC16KIxp+1W~!>B9t?HJCs%gy}Pz zFnwkW(`WWz`pf}LpE-g}pJ`qx%y0tDIZUAGevTuh91_bgfo1>`Xf~SF5;nGA`pgbY zpP9h)nM0U9a}3jGPCv)_H-V<}`8Lq>U;@o5OrROT1e$G_K(h-?C^gtyK=Fn!z}(6jfVe` zD02==l<7{|D6L#g&LJ#sb&gS;D07MvWjbGOqf8Gb z%B;eS(5%BmnGsBs*@lTSyD(8^A12C7VVcYdEKP=wm*GU2rH9%m(}#&NYcNq}2oq&C zVWP|!Cd%x=M41DaD02ieK{JDCGUxE?^_S*vce-C;xkQ;|m=T%*OqAJxi85O-QDz4w z%1mIQ%ppvaIfjWcr!Y;Xv(GbIHeB~`qRc8RBQ)zMQDy`aWya9a3Yd332QX3Q2qwzR zV4}=9%mhvMt8J56hBTS^^=E(+Wj0`<%oa?P*@1~N6PPG-2oq(FVWP|_%=_EU!)=u5 z!8Dmwm?pFSFxQ_%nGws0GTSh3Wp`ns%sxz%nZiVw6PPG-1`}nLzSh3m>%+V~U4wZ` zI)qJ=X|6w;I8kN{6J_>bqRatIlsSTlGBcPca}E<_x(Dp7pDV=@=K0!yX);?dO=jnS z>rbN0gylq;>Ehp=z(kodm?*RKNE>DPFe5Z;Fi~a*6J<7GKFTzP*=hFR{Oxk{`X49C z9Kl4H8BCNphb78%zs}2r{rL~K3^PJAfQd32Fi~a;Cd%x&~OhDl8*3>nKrX1WT0JMkUJZqC}Z}m<%w5X)-79=XLqd<7YTK z?b2ZzW%@8tW(_9F3}K?oCQOtW!$g@qm?(1qvnLfqD=RjZIoGt8KD`# zM41hkD6<64N8;Y67Mbf0Zj%LvUDOqAJy zi82$ID02uCWsYI?veV|aCCYTZ?eo$@c`{bN&HkUezRq&)@Cc@bY{OD$c2NSuK1|G* zE^c}POEx(}C7UcwjTU`WqQx4@HyTdae!9sf%jqU#m~OHM-4x8dI)T{~%BH^4ZVF{n z$W1}F1l`hi>cys5&ZZ7v63q-IrkulMlkRspAAfazJPcqNq1iyC&}^Y{4|Y%r%>?Go zOkuuheS(u{&R`PF()ZeJ^`YB>DKr}}g=P#>X!c+V%>hiIIf5xPGnhhi4mW>SN@@S7 zO*CsTiDn2hLbC}|XvVMQ+AG#fC5W(zijrn&y?;3S#}Orkl2 z8KF6bDKw`rg{Jevw$Suo3e76a2+cZ7p&7vxnr)auv-?B#|0J4ymXm0vFp1^_rqGDKrN#g=PjnGT#~>uf|C<-Ji6HW*Od9?#}?G&}_gInk|?@vjbCT zCNPEO5T?)^!xWlRm_pMz;ni84=@pzrvkH@F)?r3yMlgkD3{z;)4?7|e9eV9Ts{RQXWB$^YJ zlW5Lh63x;tc~M)wMIUB_W(}s$3}Fh*7^cwd!4#SUm_l;|Q)p(eDKyRb_Z%nDbbrP5 zIME4agk}I!Xf|L9%@$0dnKU;j&;B7yp*e;rG^a3yrgO?_xoz*1^KTN(D$7YU>oAFC z1XF0XVG7MIOre>=6q*y5LeqJ)Ei^rtLbD1pL9-6$g@*I*2q)2uVG_+A%m~c^Orbe~ zDKs;fLURsNX!^fy3(Xo#p&7yynoXEOGlq2%%>*aW9Ks};WB5QRG^a3yrt?@^XnHV( zW)&WlGv+!>p&7vxnlVhF*@LCf)ck4jHqjixB$^qt!@zWyvqgu2b{J@ffp!>Zhk8lzgct`XorDz7-)xqb{J@ffp!>Zhk8l&<+FbFwhPI?J&>|1MM)-4g;GGGe7=thGV+FWjP%N+F_s_2HIhu9R}KApdAL< zVW1rb+F{N){t{w(=j{5woxinRh3PQJ4g>8l&<+FbFwhPI?J&>|1MM(R*kS5w8D}_V z0PQf)4g>8l&<+FbFwhPI?J&>|^Secdfp!>pXI+M4*0CK1+F_s_2HIhu9R}KApdAL< zVSeAfH|;|^49wfmdWf44!+CfU+F_s_2HIhu9R}KApdAL|1MM)-4pZa2MLvLb7-)xqb{Lor^U7P> z4g>8l&<+FbFwhPI?J&&^=rGOkcZf3_a}4b;FdgPqx272P(9gQ_CufpdDuER)=Hy&<+FbFwhPI?J&>|1MM)-4g>8lOSjgBm~)ox zFt5JV;h1G;hkZhiPt`4)a={mmYFbX%*XHpdALcqWjhSC!`#+xs}Jok&<+FbFwhPI?J&>| z1MM(y-eGwCcaAeE)9|1MM&{9R_vFE3ZRnhkZhkOoyqra7JZzpdALrr+F_s_2HIhu9R}XHU9La7*bW2jFwhPI?J&>|(`P?Ohk|1MM)74l{rKJH>Vw_)yuG&Y&IU z%{=AlF!14Y7-)xqb{J@ffp!>Zhkw8Oxr!!*~w&ho8}%JiTe2HIhu9R}KApdALw8KC<479^QJIq_TxaVU%&<+FV9j1Bzi8Cs*4ec<{4g>8l z&<+FbFwhRO!lkafyIzBK7-)xqb{JS2Vz3%E&o~GCi1MM)- z4)Zo%)TYBgI}EhLKsyYy!@#w>=jX-)_`Sj-m=06Va1&xU4$fh>+@kw-uE*&x&<+Fb zFwhPI?J&&^%Cmn6?J&>|1MM(ttfv38lHO{Ea2-;zw9R}KApdAL|a~I#Z4D8l&<+FbFwG5`y^izGA?q|wxA&nP2HIhu9R}KApdAL_7~( z!@P&pbQoxdfp!>Zhkw8KC<479^QI}EhLKs(I)IL-WE zzO^1~I!tr@U&Ri@zq9%t`?>x*5W}(^ z2HIhu9R}KApdALZhk zK3E>WHE4%{KP{`9&<+D@LkzaVKsyYy!$3O>Oo#aZFA6db1MM)-4g>8l&<+Fhgx8bi z7UixTLOTq!!@zWydpuF~kR1l5!yr2hOou_~Fvt!A(_!i8l&<+FbFwhPI?JzJM2H9bt9p+w+ ze+Obdxacs@4g=k1o7Hp}XorDz7-)xqb{J@fX>OYi^P%#*u>bd<12NDJ1MM)-4g=F+ zkR1jZM;13dfr%q1ab#qg=%Xf0u>Cb?9f8&nXorEu5$L9%9R_AoD4V*k-4sfPL2d~) zTWZdKo7hc3HwEo5&<+FbFwhS3Va~^yhk@xZC>;i+!yr2hv_DO;9R}KApdIET?Y8>R zZ9zK>w8KC<479^QI}EhL)YyR-XouNcbQoxdfp!>Zhk@xZ$PNSTFwhPI?J)mPI!yEU z_pt*p&<+FbFwhRutfs?2I}EhLKsyYy!+ezeA{_?WVLr|1MM)-4g>8l z&<^vlMTdcQ7-)xqb{IJCFzo-^*nt>mhkZhkw8Pxb zQ=Se3A5MpXb{J@ffp!>Zhk|1MM)-4g>8l&<+Fb zFfbjaKE)2iY%e+tw8KC<479^QI}EhLKsyYy!$3O>w8OxM^XpZ*pX4f2-X{*A9R}KA zpdALw8KC<479^QJIt78CLIRaVW1rb+F_s_W?UO$stL<>7-)xq zb{J@f`6mvgbQoxdfp!>Zhk8l z&<+FF%IZhk8l&<+Fb zFwhPI?Jy54It;YKz|vv(^^Vwq7-)xqb{J@ffp!>Zhk0<(VW1rb+F_s_2HIiZTQdK* zhwU)X4g=F+`nzq1S%am+3{g7FCfq0;W(?C|_Fy{90ZfNEg6S}`y17O2A1ocF`?n|0ZfP4fax$>Fdb$Gro&8NI?N$VhdGAnFsHETFwODT`8BD57S|$FdgOuro)`UbeN@o=J-p9>HjlF8Ur!hpEZ~cGi+8%huMVb zFk_ewvj@{*4q!UW5ln}f!E~5&m=4q3ONZh3TgDlP8NhUy4VVtI1xtt7LFq6Pm<}_A zzCVX~vvUU1VV1tYu|w?OXY0dsm^JvOn%@?~@(`!PY{GPyF-(WqgXu5_FdgOyro+r& zI?Opthv|N??J&zQZ)pcG9j4yE8Hm|}d0V~%?|t3;ayo(OFo!VjUXNiq%qdKV>3pf} zFg=(KvkKE;)?wb@jo>|#(!aKG-iGeNbeMgZ4l{-6Fefk_<_xC8EKS-D(}(FWYcL&V z2-9K4FwfUsjWZB)0MlWPU^>hUro(i;-2S^BOov&8=`iaszbs}1A1n{xHcW@vg+DE; z`;ZP({`()!UULHT7WoXO!z?}2c9=d)hgpNA!wgY6%qC2S8N+m#J(v!20MlWP9%}km znSh!#wp zOz}8`rNbPfG>uc3V$nHhZ`y+;j;x{*N7hkE6ZHs|HnENJopxb5%sxyUnZm@86X>QM zS!@bsQz)B4Wm6-REun0w-oH7?uvRhsr%T zK;<4Bp?Qa4|C{05o6a}d@7jauFsm>fW*uf*Bj~nZI?NtShnd23m=l-|a|Y94mJWIS zmk`s(=`d?B9cBbG53>!^VRm6U%sxzqnZnXxW+)xz9Hzr`zu9(}Wta|A5Ag5yOYw*4 zFxxO4W*4TzOkq0ANwZpl${9?DS^8GnVfru~W(}sp3}HIV7~VfB*PlI{4s!t0VUA!r z%nYW(oWpdO?zh_xvkcQ=1~Bt58!#Pa3#P;Dz;u{NjWZB)2-9JXVLHqyOo!=A+YZx% z=`gD>9cCS-!;D}$%r;Di*@fva`;ZP(u0J>(<^-n0oWXRMrSEVO;L}>o3mBLVvj)>) zhVb*{ebOdOhZ)0kmq$}m=S!q ze79|w4zml>VfJA<%oL`>oWQ2TG_QZpa0X)f-(#;STV8|dFhiJM9kU73Va6~WW)G&r z9Kdv#BbW{|gXu8mFde3Q#Pu&BX8EY?Fawxh9kT(`VYXm8%nnS4nZR_IDNKhsf$1=3 zFdb&;`)!Bm!+D3{{IiBL5Hp17Fk_ewvj@{*4q!UW5ln}f!E~5&c>mq=J*E4Dw!{TsLp z#8fkw4s#CEVY)wJ$1Gz+%P<{g0MlVMU^>heOo!Ql=`a(R4s+P7mJU-N;|#={!gQF< zkJ()5Nj;bjvkKE;)?wyhMlc;_8>YkT!gQD^OousvYi0L1gWtQmoPU>o(hkJ*VLHqj z?3No3VLHqvOoti6beKJu4s!t0VP?$@N?JLG=`h`sw!d9p)IO!*qVyc94Yjh0|enU^>hMro&8OI?M@7hdG1k zFiSt<1XO;DRUf9qtig1c5zIWyHcW@v{Tb)q48-iSoDMUE=`b^x4s#CEVY)x(+*tP9 zWta{#fSHHcfax$>Fdb$Gro&8N(_xzP?-XYs<^-n0oWXRMrP-pxz=PiW{IUkqVUQgL zZluFNI}EhLKsyYq4Kd9v(qUja%r6!l2HIhu9R}KApdALw8KC<479^QI}EhLKsyYy!$3O>w8Ow}eZKtn=cQlqbmdPLK|2hz!!)buFwhPI z?J&>|1MM)-4g>8l&<<0dwgWNC&<+FbFwhPI(_xSu2HIhu9R}KApdIE>j-7NE*mRg? z|69Wuh#5jV479^QI}EhLKsyYy!$3O>w8Q**(P5w+=GR>R6Jj=4w!=U>47|6zE1y6+ z479^QI}EhLJhtdC&<+FbFmV0`kL&*k=N;ZQw8KC<479^QI}EhLKs(IYqQgKt479^Q zI}EISQ;Y2|&<+FbFwhS3oA!C`K|2hz!$3O>e6T!#+t3aJe>z{~`j0aZGlg~-XorDz zn8z0#2HIg@It;SIKsyYy!$3O>{A_+x?-91cG`A>s_#E0{e!J)}FdYV^!yr2hOou^s z7?=)&(qYg$A1ufJDYnC$^Rgu!2HIhu9R}KApdALZhk6_!f`@41^W*ORHpdAL| z1MM)-4)gnVCtLnK$A9*+0n6zy$PNSTFwhPI?JzJM2H9btainwEoAzMh2ud93)R(Oz zET)biI}9|AK;sBBjzBl{ip8d2Hifb&ln#TkrB__8+fA|Rrl6aGZVK9ApdIFwm)i~l z?J&?b0@GnoIt)sOsbL0UX3!4vs`k6~pdALZhkZhk^#i!t9kqrVg@YRVW1rb+F_s_2HIho z)pQtWhk4Cq=VAKL4g>8laNc3K{)}-3V)mdN2HIhu9R}KApdIG5JhNqxVj0?DpdAL< zVW1rb)`l2thk8l&<+DjhvE8zGY~U{b{J@ffp(bJ zU2Z!Jw8KC<479^QI}EhLKsyY4yiSP0`C!s1w8OlfLpmJ>+F_s_2HIiZ!|5>44g>8l z&<+FBVd@i{ftWLBhq;ZtCLIRaVW1rb+F_s_2HIhu9R}KApdAK&^S<)_v)kin&HEXc zd6)sT!$3O>w8KC<479^QI}EhLKs(Ismz{^{*Ej<)YtRk@?J&>|1K*Gj3&3IF5wycV zI}E)4?$Tl2aM^j7WoU|)7&5(2HIhk zIsaxLW*OUIpdALz%t#}gLW8LI!s+{;0(lUK|2hz!$3O> zw8KC<479_%l@m}p479^QI}EhLz|YoYU)sfX7-)xqb{J@ffp(Y`&W$;5K|2hz!$3O> zw8Ox3n0kUU5Hp2#7-)xqc9_-6nTPpfepByNfAvRK-FVdvS5<#^<>E`LK41G={>RBx zFS+(pPXm8{<>Fsft64pEwZ3xk#nm9IM_0Y%-;^6)b>-rVs^RL&f84tIx_Xo^ANr3j zUb*XnvKDRnvnKt)u#uqR0#pmQ_nZ{V*amMz_o zMV^)Gt5FuO&*I-+x%iA~i^b-SK4Yh zKke27zSul)*DStxshYCbJjRz6i&yceJ@fvnZ>(p0?Z5D~wF~*;%dcEqy-=NHdDUg^ z`SOLT^R{y9WtaIW`xmNimisRAkn}E8{Vexf<}vMFs8+MwW%=LCcT1jtr3=;IZ7b9J zuYP(x%-1{qvrAVlzPuV`_54ZC{mZJYte(00udiJEn`+Ezv)`XSY4xwGT~=St>g-9Y zFRdo5HoIkej9kyR_{-{m<>oPK4-!^iTuoQ{pWq%I^Tp;Vm_F${{dqNGwRyJMLxg|w z!s?9G=80_&5msMNb>4oty2NUGh_L!+RhQLf$NZOvNT1bz&1!py{5u|y=U1y)ZjTZ6 z?dMg4x35&&S6_GQFkgM{UzLNIhyFR$D2pB_%F>tF=es&c|0aqyrDW~vH8(&$PUNi_0_CqwRxC4C|G?) zb;e@zhOO)=-7}cfeGZelyYJ+s<)_Px z3!Im3UULj^QuhW->fVA$-8(R;djgZX4`EXGF-+<{g+C}ErgInHED0SZb+5vV9InGU zse6Qzy0>9c_inRVQujVg>Yl=+?h}~QeFl@dmj;(j-F=wUy#|xIhp>F~lbKh%^ve0G z^D#{7-h)Zq2e72>Bb3xVgGt?;cku?He1jfLv|NQr-Rm%^djvCbxDDU*Po??o;-v0< znAAOmN!=$fsrw8jbuYb}*U;rNoPC(oy#|xIhcF-g+=QuyW0=ytSL3Aa1DNo61e3aF z@O5vPKRo9!eX#o;_NwyhYL;PA_W_bN>4UWfVU=LjZsZ^NYSU6|B8h5o0B^_mC%f%zeE#&S~k(tCNs zRz~sqFsXY0^Y1obQuh{2>fV7#-4mG9eF&4fk6}sO)hTRBck`a7^S*Yk>A^(ERhZPh z4)f8^5lrgdh9!0HqNMJ9nAAOmN!=$fsrw9O-gGt>}=sw%5mNV=bOzK{`haIP! zZ2K^&dkwz!HS^@br!f7wb1$d3@*hTf&`m)%1+yuX zO`&WGWlP8{)!0ozH}%2AreHR;3X{4=a9BnTw_)=0E=+!&!jigAP`L+ZsN9344_UhF zs*iJT1~A`s115EE!KCgTm~Bm<+k#2mCorkIGipc5!i*fQ!$OO=?-N!Jg zyYt~Tb@yOW_bN>4UWfVU=LjZsZ^NYSU6_%>DWr7IuRkX^srw8jbuWE{6WQMU;OWDp z?lqXyJ%mZ!n=q++43oO|U{d!1OzJ*@Dc!S=aQ#{NV!67qoYdXjY*Y6#OzIxMeDrez zCUtMYr0yM<)IEVo-G?x#`xs{A@Dw(sdw%`-2Y$Npg0u&dx>sRR_d3kT;Rq&mZ^NYS zU6|Cp50kp5FsXY6le*90<0VdaKT2~;>R$e6o4N-use1z^b#K9>?j4xaJ%JCG?{)~2 zx{qN}_bE*3?tF~9c_byE8-iJxuQ<&6!0+YJWU{d$e z7EfpiZGD*3y#_OKID~al_a;v29>b*WJ($#e0F%0pU{d!CCUti{-lpyzOzK{RN!{x( zAN?G`Qo8GE8z*(|!ldpgOzJ*?Zzz5H3=RvI?r&3fA0~CL!KCgX%tt>rVN&-PX5?@W zeyJ|S>;NZq&tOvbIZW#Aeu4)x|5*tpbr1eOrta`by|cjE{5(%>?Tg(vR_(j}9}<(A zr=H!~dTO_NtM>0YL|es33^UU+qQfYot)ikq2S-#KQQHKS7*vdCh#`uKii+B5Cxhc& zhx>cMyvir1Xl@$LIdHDuebX?hdjONV$1tgT0h7AdFsXY7Q@UAmdrsYr3C~0chAo)X z-GNEnw=k)D2$Q-eFsXY6le(8Mse1#Hy7w?s4js3+L3`hDqIBnAF{eN!=ru z)IEhs-E)}Ky@E;ITbR^+fJxoQdTW_-*sT7I_ssIWTQ@MNy9blH2QaC743oO=U{d!2 zCUvi2QuhufbvM3vPTehdO5GfFkkWlR|K8#sl&C#~N!=5e)IEbq-AkC%y@5&HdzjSy z0F%1gQ*Ka>z%ESc?!%Ps(X=|J?rFWb+;|R?x>qo%dkd4g4=}0w2tQPI;^vpmsk;Z0 zx(6_+dkQnK{Bk*}wlJyt0F$~KU*>hrjtP^xJ20vH7AAEMVN&-5CUq}h zQui8W%Hi(IoPU$L@7bKx-T2Bmb+=(scNZpg_u;eUcOJo{?kP;_p2MW>6-?^h!ldp4 zJe6+Fzm2Tba=lxLy?le%wVmVS<4{#qST=0E?>l>bSgnZr_ORw#vL3sYzgFoot= z;Ut>oSI>#&1}4$;U<%CumJ6RTN};)fDKrb1LbHY`G&`6=a}QH!8qe~y@L{%o{aZMR zrUR2`Zeb=P4q*z-1g6l;U<%C=rqFC)3e6s-&^*8tn(ODzg{J)+uYVFvm(58ueV9Zu zf+;jpm_jp$DKx8kYbi8am_l=aDKtlzLerd`3(XBYO-8Ky6HcNTz$BV6%(rvh!4#SW zOrcrB6q+3@h2|cm&@{ewE;MbJtEVo^Wl$f!UX>|`Bb-Dtg-JAXn8}DMm_oCKDKrO| zLUV*EG|jJ{3(XBoq3OXCngL9qsm3^o<__j+cL9@V)-Z);2XnoC4^wCw-#8bV7EGb( zz!aKWm_jpzDKr!K(dW~ja1zZD=Gt!qbM3c>xj=n@DKyt}PElpOP#dPubYTijAEwZZ zU<%C?rqIkQoJ6yNNi+wT7wiaAXqwNT3(XBoq3OXCnjy@OO<)Sm45rX5VG7L#QfSKO zf1E_~0F!90zgZGZeMtke*K}bnp8GI`W&~4crZ9zO4ojg~p%j`eOrbe^ljARm=E&wG zn&u1VL~{f4iuYg&%>bs*jA07R9V~@rfy#+$jZ$cKuoRkmltR;}7ABe&DkY$Ul4x#W zqQDTQ&`e+o%?xIrUBVQa4NRfg!xWkam_l>?E$-|Gv;>a-Hcq1H!X%nL%&t6wDKt}< zLNkXcG%J`wvxO-%2be;0gef%5Z=Vaz4Xm=S_i#xx1C+gf4D;<=cQ6OQ0;bTcVG7Lw zy35vEOQC6g=UixRUbSRid zHGvrk)g$rxFJXp4845WRbf_0ELqUgv8LAIcXr?eNWe!tKRxs7%0AKmPPsjfemPgS1 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

rWzUAKj80OZ;RMdVi$T)bo3B|5g3cyKX8Oq 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 diff --git a/dist/dbr-9.2.11.full.wasm.js b/dist/dbr-9.2.12.full.wasm.js similarity index 100% rename from dist/dbr-9.2.11.full.wasm.js rename to dist/dbr-9.2.12.full.wasm.js diff --git a/dist/dbr-9.2.11.wasm b/dist/dbr-9.2.12.wasm similarity index 80% rename from dist/dbr-9.2.11.wasm rename to dist/dbr-9.2.12.wasm index d91fc9648bada3690f6010f347e7d2e3e90d96d1..400e3594f699ad8ce733d7893b31195eda922809 100644 GIT binary patch delta 418726 zcmZVHVeo5po#*-gy|i}M3hag1+Um7xwk&7p?I*oeP*$_&ZBv>CqUGwM?HEY1`QB3YJ{i(0!E1%Bx=Nn0RsjN5Hw1}pb-NG2(a&SzMs$e z(>+tw&gFTecx(BpSqcyxK!h5mcq@{TL6xcKG^7cQP%ym;Zl75u+9 zU3k-lKf8F%pTC*E;Qzhp&2Kup;!SV*Q?7A#;lhPCz3IZmyTAID+JAL%{_(rtdEI~e zPcGE&{&#=#{GVO(?3X@w;Vb`gaO<@f|MTR+|5urR{PMrA{L>4y%O9%zH~jBCmA56e z?RAy2zrJ|(mbYD~TzdCEKfCxpR{Gcf#b2GBRWAI$SDod)^wh=w`Kq&jc2>FcZ{L3L zpPyCcuU&WP_KR<=RA0ZYlJJ$4<7?Md>aSmya}S5xD|2$S%J8+f1F+1t+k^5UOVF1-7%`Cq<>+cAIb^8fz#|0e0bbX}!d zExuXK&FjTC%Q*^mVK>-=`S+{jf1TgLJ1(Bz;_UV7Eq zGmbZbSH1BjH!lB+zyI?;_)?DGHi_kWwzUoLN5&dK$~4b9mKR$)C@gT<}O|2n@l zcU-K@IYjrFEBP1x#ig6xQCadgTy*IZ@2J$Pe^LC+kiTiZqtbhY?*ngsM`g_4WWTzy zvakL{l7CV4bX|T~{zctaxjCo&=UTb)-{$|zAKv|!7ymr}yQ99W%bm$LT<}#~lz+n$ zU&SBKzluK;U&Y_?(>=eOKfF7?jemXdf2r^f`^$?-d7PK|8*XFqH*fq_`3-pcg|}VE z@7?P7>_6o9?|*Wve|&}iW#zq}EdD-&pSZbT3m$@9_@3YZrg7adyd^H3!JGar|6a>ylPfE?){5`2 z;nLr~SR7&xC&3f!1?#`LvhuTF13tSguG@yKUli=Y+II^M;YYt+Z~|}H6`aG__X@7y z*I>e}*y1PS;sfkITwJ5NyR!1l_ZBxTg*OG8@KbRkI`ENoaos+=XIgLsx6c%u!dv6g z1^jT_$~FA-L&X(#yDO8*6SKlcE}pzru=d=QJmd>z@B^;>-5%#r(j@TPr8Ld7-$t{@W`n&%ZOjXBwy%M{C2| z<2&@>H{v^t;K!E5S54t&TyOy|2iGvWzqoVhvbRE8UFbX3%1~+ ze=OLA-;1vsz*nCxE*--U#vM9?&&Q8v2_KFdyn!#qow$b||9SCcCwNDEv-hG_t z+IyQ>91_MPHjUHHHa#SsS2^Z0u-eiCCY?&@)J{&g!jejxsF@XmM+IKX>u zE51eb4_8)}@$*aJhvT|U_)J{dfvfnkKGZogg0FMk{P8!%_x+?e#sWS(DY%BC;0}Ji z_$MFHEbiLcfjcq&85vysp!lj5d@&wfUAT^a+aSNL{+aN;xMee#JQioi5KBnh^^Q*4l6U9}x=*z_m z+yT8p`dQn3hGcuheA5kE9Ie(4+VWB z=p!ZAhk`oP6y6%QWetDz)#6^-!Jh|@@X26yy0Y^9;vd#RaSOUA{;>m8kLR#4)Qy?L z_@+r^g+F~yaeytnKA!syP{*pidVVZ8i`Rx0d?46|_qB@eFoKV_3r^u(oq~(}3c)pe z`A5ZFyMvdLc=%Oc<6#m^;T>_8G~qAed8Gp%i7M*DwD<>)(SwmUGx*W?fh^(m@ekU- zJL1wk90jYd^V7MtxMgXAKNz>Y3DdakefZ-zn@6w}w`>Yu`Bib-7x0d_bPb<=HU35L zTgnOe*|UzcyI=Pcvo@h65bWJasz)B zw{j0(h%21n{qbe>>#wQ|;)mUUzl!U&;WKv@->e6piW@P!KDny$q4-fuxcGf>@f>!8 zE7*%GY~df`(gXZfuzJH)mHlUmZ=Awgf=&3LI9vzzKV4j*pI;&FuMuo=D~s13{L%Qj z1^msYiYu?-tMO0T!S}|uIKoGQwHvRhyclO|1|N(caT`7o?7$t-F z#;cOb({Y1VT>M;c3%?pXz)!~yvs$~V@??CA6y6vwzfJgT{Cqm__BdQ0s^Ld48h(n@ z@Cz6XpH$XZ5x;|q_#;%r*WPoLBR+$Q_!f-U#x7FB51<-;4At;6sD@ucHT(uXyN&+Y zV@3Q4D&p(!<$j5XZ$L$S8!F;^Fpqdn;UQGRPoNrp4%P50sD|G{HT)sLiumgLu5!eu zP!ZpRiuevx#P^{hegxIcbtKsEdts^ND~4S$3*eDV0J)vt2IXHXH}f{OSqRKyRU zB7O{uh<|Hk2G#IO7!AKcYWO`=!&l#bl^Z^NKj)ubDw|xai0?o}d><;}M^F(zg^KtE z{8%*n8mi%UPz`^CYWUg*ctpj^W(JFfXZ~nmMSK@3;s;PcG=_@!8C1kCp_*<3)$n_$ zhCe~2PyK^ex#1g74c~@|BEE+e@k6MHpFrio9I9tlP!Y3*&&QMR0jlAvDbHW=%#cDg zd=skSJ1`nP=|e^Q2rA;Iup4Lg8fxa+K}Gx#D&lJ&;)fk^n?W^v8|uq?Pz^tXYWNAf z=eFptIab84pdx+?74ZkCh_8N_8?h`NbSYF`HK7{51J&?-sD>ZGX!t2o!!JI}^S>f~ z&BcoN9aO|0p(4Kak@61Dpd!8n)$m=Yh9AIa_%Vv-sToqkFJUx%vVn^DJ&cGyBgiHL7Nbz>VU;(JgHKZH7ECr}MPhidp0RKss!-thVB&jBmqs~_bRGa^2Piufkf zncRVj_&$t?uZ*A?ehSs_3#f))LpA&ks^O0x^%FS*V6TLN$EtGIvGM@CnO+JZ>W5TTl_-g*wXyP-oc~#{Duwx-*tg z57G_P?cGDw@(D)6*Be(kK^u_TEuMed*u4*B=P0^%g%q<}sIoplm38&w z{E(vIQ>d_RLmvq~@vh?dL#RU`9SZ4C$cKVH6!f8PIzJTDp_)()--l}W5mZ-C;gd-u z=^97G?@-)=BZ^y4`@~g__zddCw4uIh531pZPz^tUI@TO&URXml{O%K+e~S2Old~fd zGlh!yCRD_C@+(9N^`Rnu1TRPD&Y>E91=a9dsD?j4HGK7EnkH{}&OfM#Z$U+T7b@Zh zP!T_diugHH#IK+lehby`)lc$3jD}C48omkD@Ev%E=8ryB#E+mNehL-wYp96dK}GyA zze4=bYM&|_K7(rb7F5G`p&EVw)$qv}E8=HR5x<0r_zhIV@1Y|81Qqf1R@v|ksD^Jt zHGB`M;fGKSKY`!+tX_YxB7OxG@mr{fKR`u%^_DW?Q^XeM^Ftv zg=+Xkf)(*=_+W(jKEFor1Qqf1Tg!-VKt+5Ts^NQ34L^ix_z6_Q&!HNA1!?%=@xR52 z_ybhL*KXscJyrbcvU9f2IfQ4IK62r$m3gVb`a)&H|D{h~sGL<={4Z~B{Pap3|NH%C z&MLQY>3?_W&6WJRN$Y!Om5Y@Q7xnnRe_8qOFa2rp7oYznZ(UXTT$X>6zpnf%U4HZY zta3$Vz-43p?{6yqgD(H}%m48D|5}&d`HwFDH@f_a$~6BTf6o6rbXH*^|IdoUKK0~T zrSUY&d6)m6|MR~{@>_Td-(Zqo!ZrV{@~%q{Tqypy%)k1qa{n0@TzX6KwXaOxcufX} ze|S~afy%2s^AE1d%G^J^Dlho?RsUV_ZNL7+S>?|vYmQg_Id7_+Rd|bmtDjwBO_AI8 z&^s%CQpxz6HvjkVS%qqQ!{7e&NBNJp%U|WU|B*x6ED=K~ddVKlc|6gw{ z{=u8?oK@ajnRD5e|9kYT!V1J2zU07Pzp1k4uWG-zP(sdPqIfes=Ap5By1`zPk2*I{R0=wZ)$+{oRH9?Y=B7e}K> z#!53s{&)M&l*8l+#xPm`Y&lFepxzK_L(P&ss9ACdHA_yQ-VmBY&5|ovG+I*GLJgA# zsA00&DTm1vYM5+74U-+HH-!37v*ZYBmYhP(k_)I=at$?0?%>ywNbV!nFj@OtIZS3y z!(_H8a zL#Q`|CQxq(&7o$=71S)bg_|nkDPqa+Yj#6TU?ZlWi{6Fxi6|CWlbN z0V>R^Uo2rgNo9gHOwOT($u)G)Lk*KhsA00!%ZJH$t%8~*TTruP7iyLqK+Te4sB>lpUr%DK zeu*_qZlH$AJ=8FHf-y|izf=yB4X9bN4K+*lpk~P-)GRs4uNyP-9BP(aC0N7c7HXJ0 zz!)a0U-mGWA`O#G7{g=-X_oB6m?cN~g~cp6MVciSP~*!QYL?t3Si|HI>YS~8r5q+R zs9~}NHB5G)-Vho<&5~oNS#kz7OD>^KMU9-WhRJ%r93~r3!(s5gY>P_yI; zYL?tWon;58S+aVU@0S$Cosm?USU0@`b%Xm*W7`PEFgZmUg%(g_*ZTabI~cR%5ygO4 zyPLbUc=I4bF}6#v*Eid!&2dP8Uqbz|0$Z(5vxJFH>y z2sKRB?k$g%K@F2_s9~}PHA{}6X2}`UEV+c5B{%sMVsO|)&61~kdHvBanSGUqNz9ck zs9~}THB1iRBeC)^hVh2b9BGzZLCum|s9Ev=HA_~9JL2~4p=QYw)GS&5S~*L$p=QY*)GRrKiH6Au)*C`|s9|yiHB4@yhRFle zFj@V2IZLKcvt$!$mh3>yl6|OIas*?ROe#~XH-r}OeV;8}Q`S(!Ji9h8 z!(_bvK+TdZs9CZLHA@blX324Wg?OiB2AfHo6HBaNasxF??xBXs6VxzSAC<#o18SCR zL(P)?{0cEkj^GXP4$Tzm4WR|pESapahRGe&FnNR;CTrg)hsg|Tm~274A=HJMB?s{K zINTWO4WSu~hF>DRA+&)seDV0(V@3Q4D&p(kEF-=F74dDTi0{E7;wwX>hMzz+{2b~H zp%qlaZ=o9g@J*io74g+?l@XspMSK$~;yX|g--n9$5!4$(Q>cbtK)oTfhHCg7RKp)( z(eOO}YU48EGpLAf!EHo*7b@ZhP!T_diuf5+!!M!U5ZXXB{2r>|Pf!hCzn{mSBEEqY z@olJx??FZU5Gvv)P!T_edP8Uh)$m&w4Szst`0BUIhR>j0V3QWsOJx@-;s;O>KZc6< z8C1kCq23VMKsEdxs^L#i4PSqtZ1@IL!?)oFcQJqTup)j474Z|OAeuwHA+&;u_$^e^ z9iSS%Iw>1Ig-V|$RKs_m8or-kMf?aV;-^p%zktevHB=t#pd#i7)$q0NlntLjHGB)I z;k!@`KY%oRK7Wj%B7O!H@k^*Tg!WMP*9j`(>)&<6R~k?a--c@VKGc_upc;M()$oh& z^7vE4uen$ezk`bSBUHrKzE?(k26fJ~pz^8<)$jwTh95&U{0v6JFHyW9lvFlY5x<9u z_!Csb*QdNzM!7ej?(jBL#P^^YehAg@6BrFYNAWzhLTdOeq~VKqW1u3w`h7=yiX!5h zND<$GiugWM#E+mFehPKUE}-5JT0=Gb4yxgg@cJaSa@8IzBR+$Q_!d;eccISY0aV0~ zq23UhK{fmm>J6a{RKxF~8vX>;@Jam#WyCk2PW3j7i0>ht^h2nKpFo}ebEt-2LA@cg zhdyPY8ooZ`PGdcclfD6I_~P}ajTP}dsE8jzon;fKvuqCIepw;i8C$4Zet^2Y)gP9% zoWf}MCQ^cSV4~dZpI>(bqpYVW%6fsKYu6~cc8Bzxj! z465PRPz}F>YWO2m!`B`u8$N^S-^KX{74bc&h#x{l`~)iE=TL75t)bo!+Ceq^5vt*{ zAD0c^f@=6KRKpK`%+FsDKjvaZ{0u7Mmr!pA?V%$61Qqf1MfrwM1FGTMPz~RMYWN{k z!%tw|@cHxK9P16C6;#A;p(6eO74g+a%ZN{*-Vka+HGBuE;rmbxKZ0ubDOAHR9_9R3 z#ILzn5x;|q_#;%r*B&b)K7)$*7StO;U8sg1KsEdrs^Mo)4ZnoN8$$Ho1}ozC@WCke z>QBmuPoW~d2^H}jsEF@FHT(#w;ipgyzkqr}XbsiyJD4cqk6003Tb2=@K}CEEM#OiK zB7Ok15I=@$_!(5gFQFFVH&6|~hidrbgyY4r{&*Sj4XB83Lq&WKD&mJw5kG-y_&L-< z{0ge!w@?j#fNJ>aPm6{x9)BrT#5bWLz5^BUeW-{ZK}Gx&Y9W3BwGh9CYWN-8M#CSW z8ou_kvf;Cz@%U53x42jl--U|!0aV0~p(1_;74b``hTlLn{2r>|Pf!hCUzH8tfO*5` zkH0on#P^^geh4GtCrA-LhgyhVL%qW8pk67DPz_&uqHOpKs^MEu4c~={B7T4s@nfin zpFu_Z5^5oS0~PUmsD=0wRKwSwEE~Q76+~^QhVQ{>_@pw#YPtzj#LuA?;#W}VvxSQI z160IUpDG(Zg=+XFRKs_m@}Liu2P3#kVwd_9E8-VW3-N2Hh~Gg){1GbRYilpWXGjg- zf@=6KRKt&LRK)M0BEI@``E@BbWLz5~_peW->XK{fmos^J$< z3-N2nIa56Tc363Jgo^mu&&!C^_Xe^Ew!14hKRQ9MuekRpBvVn4h@?x4upK8mm&B~agK3RTt%sD=17R9Ww!5B2NwLqQ!1=}<_ALOK-kk)V#0EU*s+ zeJH3y9ibvVd$!E&7F1Ywp~89$qv2;LZov}8E!ZG6{2mrJhV!rboASG+P!ZpRiuexH zvHH-*f{OSVRKu^K8h!`W@JFbIukFf)&tRg6Z(&7zA1dNUP!T_ciueW8Li`%WLi`@7 z;ZINvUw^J__y$zNx1kz7>0?Fw2rA;IP!Yd|T8Q64Mf?#e;%mPx8$N?-_!d;dccB`7 z4At;6*w${SWqu8P+5#%#_fQdkf{OV1@Az59bsJC%@olJv??E;E5USxPPz^taT8LjI zSP{R4iueOm#8>xa#HUaZ--L?z4phVUp&EV!)$miOhF?G}#IN%!X#IJI74b)?h_C&= zjQ9*H;#*J=--X)MHGpdPF;v6P^D9Koub>)!3)S$4-zR0nSD!Badpg#Z(HD&Ceri>%>=f7Vpr;H40%4k7N8C|F;V*r18bL^rVV~rUz zs4-&+{Q+>Ow+i-9Q^pBu%BcU*Q$_=6%4kDP8GWb(7(q=L(?9aK(U`H|V!c(ch8i<= zP-Dgs`UBuczC~>J$)Ki;7Sxo{h5r0E)RZxX{`@!0r;L1VT4H|y94guN&>sMYdaI!R zQdyl1s41fj{rPXGI2%HL{u^q_m_vX5`z5+jW5$+?HD(;30;c+M889i-QfU)v%IH9U z{u^q_7(q=LQ>ZCp0rmNB6jKJD;>8*>j!TX^^ zO&MFLDdPbB`R@}cm|S1H^_pUh8BM4$qXYc`aHx}J1Qmc&s3~Is{rPXGDPsp?$~Yo_ z{`=K(%E%I|F{1@FW^|#(j6r_o7&FFDQ^pKx%2+~w{u{=Wu}ASdbwZjl>aTgqXrP!f zl1dxv1K|0k#h5Wf8Z#zPVLOMKGFH%^|Asnc573|ge!ZMBQm84T2{mPOAX7#$xAn2c zj1knBF@-vl7tkL7hng~WP*cVc`t#q_t3738P*X+=YRc$BO&Nn~a}F+-~M zCG-ctq0aw3)Rb|8{`~j#SNq&+K}{K5s3~IrHD!!pF=g=jGs7A)mQZKe2I?%^!?<5g zNOwm4hVqs-pl)v)YRc%rm@=kl+l5jGWt-T|3<}>k)MB9W5yEd zt%42In6Zcc0C=6Bjy?bmHDxrRri?!H=f9z*j49NVv4D5PcAqs&G-m9u#*8EM2f*LY zV>!aN1@%@z7i!8FK!5%lYRZ^FO&Lq5DPsdQW$a;08A;`YHD=U5aJ9#b2Gp3*hW-FJ z)RZxV{`@!8lre|?{5RB;v4xs44p37@^@CSe_DSq=NwLO^Ce)bGf&Kt^eudcYGlH5j zrchJH0{ZjcP*cVZYRWi5O&PV6vpqiLnPgaFMjQGA;80`65NgbrKz{%n`t#pVQ^po* z$~ZuO{`*5b4D|VLs41ffpS?BuuY)ya^r0et1S8_7$R7ZQdaGa!^;W?Ss^O2&pa1?a z=VkoRGN^`c!FX-#e)#Id5kKHkMf@201K>~*zl3_LU;`ELd+5)9Lp6N;Bit|g{5Mp? zx1m4(4U2~7@i)YZ_zCm}z@a|?4i)iRsE9v6MSL~8+6|w=Z8Urns^L4(pZ|tx_z_GL z@l)&%fJ1)(94g{>P!WHGiul?`ul8F78C1i!pc=jl{rPXGh9ARd_@pw!iufhe2f&dc zeh>Wt@Q;F2ivzz$3_$5wlsITimMf?yd;wMlMKZpMOH&nxKp&I@G{rT@t zl;=zei@M_R*TjnW4)h1Wp(1_+BjTsX9{`7Xt6&Y)@H?o6KSDKpty$jT8C1i!;A2UA z(6)>H0dN=*KSuFHHA9N{C5*QUHb`$3?4dsYonKfqeEnvgV)XfMsBCOQHGB^~q)%}U zvCi2E^asG9KL8FD@mr{fKR|!}`;)w2>hs@F4c~-1kvq_z|AuP#WP}y*Q|J$XLw^7q zD&lug5r2e=_}Zt+Q$2&x@GYd1z6<^NZ>aNs3~Bh{{GVZe037<9g^KtiRK(X>WyEJt zZxytl8omql%rt;%_%V$8WrlQTEL)uadX#RsST}eNmCGj>5nsQhOwa~Y?zW+OA4XXZ zQ8fGnMb^$yWbF#6Ww*C*e3kWqi&fUuTg$Rep$`RpD5ygr9SZ4CNQXi`6!ejxk8~UT ztB6l;D-YF#iugYC&K#()o>p^r0Gl1TP=s^=FR#0dS~@-$F(F0V?9F zpK-)zNN*Lipc=jl)$jwTh95(J{u`>{SD#7Bh~ILtBEI_BGU8LHh;KqgdXIpKL8FD@gt~+pF&0a0xIIyPz}G&uMiW{398}iUnm>C0e>A=Xv4%G0LO~> zAymXqpg#Z(74a*mh~Gkg{u`>{tKG8UQy2~3L~8gBRKq8ItcV{$Mf?;h;ula6zlMtV z9gNq;Bho^A?Tcl@XHX5_f@=6KRKpJ-4PQL}kFg?t1{Lv3sEFS{Mf@Hr;!jWu@%7uw zhHpSMd>g9adr%EOglhQ7?L7Vz@pCTLLi`FU;K)uK@w*~ZsD^JsHGBuE z;rmbxKZ0ubDa;!_fBY@5_WP`%B7O%I@kgkLul0B+#_v(hpcdj=Pz~RO(eMMLh95&U z{2Y3P7AAVB++s!i0V?9FUn(O$g^KtlRK$0n7UKI*4L^cv_$gGwFQ6KJ4Wr>%f5wXV zBUHrKzRW)^eqCn<74a>oi0?v0`~a%q$8Z`AKZ8o2B~-(2pc;M;znsKSal(rD`d26g z?Jb7NgEmwi^q?YU2(=JDfok|URKu^J8h#7a@CO(TUrqYl$`~(FsEBVuMSLIX{u)6= z{1htU7f=nqhHCgd)RoqufM~mOi*nl*A@%U?FMSKq`;)hTXKY@z)In+6`g37Bc zRKp*j8oqj0+3+chhHoM@eCIBn{}u6lE>^^kpdx+>74ZwGJA4fl@jIx6_#;%q*Y0-1 zXDFVhT1XAwh0*YX1S;akFd}}IUsy!^5-H+0P~EtPiue=MLVSHtp0W+7hHpbPd=IMO zhp=dPUVkQ75kH5D_!U&dZ=ufQ160IU?(pTa~DzrZ@x z*DxY}hjh{(p(4I^Z+ZS_Pz&)bsD|%DpR!O5KZR=e1=K=(vc`(|9aO|0q0X|}SIe_3 zgK@vKknW5w)GZ%C-QF=&Eze*y{1PcaH!u(D{P}l(e%%v{vaSzZ)(sS0+eXo~J*4k6 zgevO^R9VlV!g>YO@O$XV0&=AM`1P-qheA3O(xH$K1$`*!LqQ)3>QGy#hOd6T%zp&Gsi)$l{8hMzz+{2azYJfE8^BYp=J@kgkL zuYIG8_zWuI+fWhTgIb6mLN)vxY9W3F)$m)WhCjeNG=EgTSw?&c74c1|i0?y1{0J)I zr}-6P@>xJF#IKs^KS44L^rk zh+jc9{1)a7pPzpRtcb5p%ZN{*BEAU~@g1m$??WxbkDwZU3f1rnsD@udHT({$;g8e2 z|6+4R?fYfKXK)%3--1e?E>y%1pdx+@wGcmpYWO8o!*8JSU=NiCCs;H*{Z)UkjQ9pr z#J8a$z6TZYL#T+Kz=-%cQp2yH8h#7a@YNrbcUKD4@J;wYQvCLuN(U?A`%n=-hPs<) zP!Yd`iueuGLi`@8;ZINvU!Ro?-+*fPHq<$j^spj+2o>=YsED6KEyS;2MEn*h;tx;_ zU;Sa(@F`ToH=!E719gA*Aq`(V|BtXDehL-w3m6OWYZT8@JEVv|!if0VL;P&wKTnXs zX!ursVbSniq=p|rW#bsq@Wt_GSP{R3I%hXf5x<9u_!Csb*MFpl=ToRq4c~@p_#RZl z51~%v2~@++f5hvLR^nG&tcc%2Mf?FO;;ZvA;!~)IZ$dSE2kKPs!)W*s(n&vsYWM~8 z`M<`B_#ITlS066Vy%Z|qn@|zofr|J(RKt&;8h#3OmMx%8vNeqRWrseW#DCl3h;`Fz zkCZn!gUaO=jEL_dCFlSucgN>foxy1MC5qMY4T`MYqsZD5`eG8(aQ(++SvR1{x(!v< zJ?KM0j}}meLOK-Ep^y%Rberpo^CQ8;hr&J-)S-q@5kH6C_W~8xTd1(EKI(=~QQU$i zid)b@YWP0XjTt}6`KRwX<6=ep5^5oS19hxD^syc*BR+*{_%>9-_n;bn2-WbD{0hof&JygS=pc=mZv$EkEPz~RPYWSpw74bu;h@U`3{2Xc_egzfrTd0UXKs9`IRW^JE z)$lE-hVMc(`~d#?7VUq=iuf5+#4n*1;x|wczlVzW6VyU{{fV;S8&D13fmQzBf6TYa zx8L}OE`Jz2b$01*IRCp(UL8C8heqER8*^hST>jym?@X>Zt2B#0gSL@9b#?5`Z#|{& z+wmnmUo!9|LtirXB@``QWK8iq(BG97<^e6&7ioke5$I6_Y8074Pa@Eh2=pWZJ&C}Z-Ww-R{paVS z2=pidJ&Hh&BG97<^e6)LcESpJ5`msXpeK=EoKGSN_9y~9ia?Jd(4z?SC;~l-K#wBO zlL+)A0yT+j&LYfgVMmM-k{z1bP&K9z~$uPB=hMBELMJM4%@T=t<<4 z3=bYfxY(lz^e6&7ia?Jd(4z?SC;~l+{OWuXfm2N)(31!(CJ}~*0rn^YJ&Hh&BG97< z^e6&7ia@=cP=Drp5`msXpeGUNNdzVyMX*K@@itNru5$I6_dK7^kMW9C!=urfE5`msXpeGUNN#wbh zMDoXfiam-zk0Q{c2-GNoJc>Y%B2ef58hR3eo{D1vln9HA$X-<7vFgPug7CXobs6oH-(&aXRznh%iX1El!?X+A)n5BBHt0rYqP zJsvsNbI-3i?pchk~9&peGR+GXwt#HtbOZdOUc(97Ryv zf+o@^f;@^qk0Q{M2=pWZJ&8b1A}~Kxe*RVea6XDak0Q{c2=pidJ&NR4&?o}6Cujvd zi9k;x(38mFd=feE`r}cAi#3WMk0Q{c2=pidJ&Hh&BG8iv^d$1a`6L28iNKgd_@x)v zqX_gU0zHaAk0Q{c$cyKr2-MpNP3TDkdJ=)2M4%@TcvqtL9pb3p?Z za{>L;#u^NIP=mn`YA%>S|5_oaxnKn~7i^*Cf&U)Hm3u=o?o(nRlxu69#7j&WKf&tWAFoxP@G)u4sgC*2puz{Kj_E2-d32H8=KYGb? zK?5qX+E8;r4{9zLLS^Cv`nL)}=7OR>S6DfAG_qaAcdL>nox5=2RfFZ z5@`h0MN{bCDg-qbtRG7*c`(>c>GnD<=3T9gFzE&F6cnb1%0TwU<5T6Orf?JEuiLtHPkt?gDSQo)Lc+| zoX4LAgA8jhXu)`kqKh;a44~$MG4!t$f|?7KP;e3hkH5as?=7KK#@gm+l9bgRxW9VNi z1T_~dq2_`O)TzFQF&CVWPWt*2mpm6Vpw9m`)LhVmnhVBHaQ^$8rE7~-a(PdeH5uYLi$EisJ%Z6Sj0NVUt`t!4*F2*^Fu)$3h7WtheA3O@}Zy)1vM9} zp^pUfBjx>l#2O5;r#Y?SzY5oaiuEqkTrh_EwL&Ov!4kzS*dWaXd#D>z{dxIKQ>eM1 z39lbSe|4~q)rUS7^sg0ynhVxYbHNU3E;vHX1+`yrg_sL6sJWm8H5c@u=7LdzH5g2x zf2|PIT(E{Q7wnPdf)mtSP~Y&+i2vYo18Od4L(K(!sJUPSH5W`_zRf8A`LD4CgB{dc z6i2AJp!Q3?alA#5LCpm%sJWmEH5ZJbf2|PIT(Hcq5UIa`nhW;7yp(t_IB~HCgZi)d zS;mzcP;)^Wz7YSx=N{BtFoc>5CeXiD2x=}^LCpnQsJY+(i@6|w{dtDhqIeG@g&GW+ zP;)^CYA)zQ%>^TyHM53~MlGLA^!Mg_;Wn zP;f6ZMNwDb4Df7O~#mf60RNfDv@_qu9_j9PcU%`0Q z+#)UeAE1`~tG_AhK833LCM@cn`@e&g_kF0mA3^2)6e{l*P+gv$F3)Uy8`D(_EFd0&6dd0%Nj)qNYP?t3um zp7|du?%S}Wz5$i@ZK%BOLDl^bs_rLHbw5wA@_q%C_gkoC{{vJj zRrh7yr%-v{gsQy`RNnWYmiK{y5B?9{Ru|h z*AF~^lX!qOu=2hQmG?cUydOg4{UpC`I;6JN|EZm`2s)x z$omeLD)0L+@_v+GSmgZ_Deo6hMY)E``yEu?AE8d!+KXk~XHa$Df~xzZiAE3_v>aooG6e{oA(5Ea^-4CJaesbjJue_ggvGRTemG@hyv+MwMmQ`Q!{gNWx z8BM5L-hsNkeW(eqq&bLn!ENg_iOy;yHFHw3n_EEP|ZDn zYVI*qbI+iU1dCh6<8Oy`D5OKZQXUHFP{@aZJ{0t!pbrIgs3lb0@1g4c1oPs~`?G#3 zle-Ng?|Ufzu|pKMV1ktQbEq4$hWf5MsJuTyE&JDAE$cpms{1ya{V~qJ9#-Cuq4ItP zmG?`iyx-(kh`irJ<^2gN@3Yr!OHtRRNkMU^1fcZ#(Cd{%KIKv-VgID zM6pkx@_r7r?7xCPjCkKd)%~G*P2#+-UVn}AK84ErCRE;cpz^*CmG>j4yq`kl{Q_#) ze+^alJE*!p!lLf;*Pk1%ao%T8dEbJ{`z}=851{gXoL?bwdIpvEOQ^ixK-K*os_suv zbzi^nno6R)Z(!wp8!GSnPUmFcjq|?4#opBey{iY_ zR6OTRk$3e#@9Kfx)dT(c0;t9N+I#so#jAA&y{QKlb? z(7Sq|clAK!ef@pcc=5ggRrhVEy6?fnyLzy9^+50Hf!@^vy{iX$R}b{Ap87S;`xJUp z5A>!U=uJH^>OQHAuy^%9@9Kfx)dRh&2YOcz)UKZQ^K*~ifto>oz5x2Q7wR>12)(HX zULMEu?;Lwq5A?1c=v_U~yLvuwjq^T*-qi!Ws|R{h5A>!U=uJJ)n|czgR$4>v>Ve+X z166yq5Aq}yzicvt%KH{n6m_9LUjV(S2YOQv^rjw2-5348!77J6R5_fW@}{10<6n)K zg5K2wy{iX$R}WO)PoOsSAaCk{-qe%w{OeskA1d#!6na+=RNi->clAK;>VdkOXHa>+ zgx=Hxy{QL!Qx7cap2uJP!#tbEkF^24s|V_&=|P3p5PDY+^sXN0T|F@Jev7=R2YOS_ zN3L<*r|`ujK7!xG-qizjhxeg(^+50Hf!@^vwW|lk^VAM`QxDXpo{XQ3R>Pq-^`Ip3 zz6-sp2dXH?(7Sq|clAJ>vK#1KJVe+XbGbbC zQs`Yh(3^UoH}yc({Rnzf&t+bJbe1i+SZCQ9#{IHGx-*VYH@(&+#XzmSqv3RN5qbS}J(s!zVoG0}s<2eATx!X|9-Ge?9)UBGqIMfp9 zNJvLYpbmw6sGH6Y1$`*!LqQ#C2)(NZD#TY%3+h{_U z;=K*Ms|Wh?1<;#%pz3}ORrf2H*L~jqTkKsupDOb{h06OTRNi->clAK;>VeApDfH(H zpf~lv7oz`n(3^Tb#p{oE^|Z>o&!BhpK;?ZGdRGtht{&)JJ?P%IY_?vqLfmwDfQ;~)C`L3uxdk@r)iyk9`& z{TllBctYj<5o+z^*`z5!MDZCKPj_kRy7?}t!%KY_~oIaJ=Spz?kTwRnGk%KPeP%DhjZ>b?n8_Z_IZ z@54lSKf=oUDOBDspz?kVwR*pU%KIZ!-q$``=6wdWc;AAm`z}=74`9@NQW<0A{R}Ga zmoV~vgOvAssJyRs&R=_>UPGHudEbFryzfKR{Rpb=r|{)f^#1}Y@7GYP_dBS(KSJew z?Q><`XHa?Hg39|YRNfDuQfUlT_cN%vUnW?!w}Hz0JyhPGprWY$`7-YtPFT|95EAazsp&lW514^Vku{X&`dDOBD!q4K^1Bk%i2c|U^6`zci2 zuc24rq3Ztl1)hJE_qA@B_Zd{)x1pyvsJtIS<^2RI@8?i?zk*u4-$K>>0jln+U(`9n z<1fVuuO?L9ccAjV50&>L7QG3BLOK-Ep^%RReWX6GzdqER=ZAtiR1+%i z`%oc1f=ccwRC2GOevc=LTW~~i3u`xO@}@3&BSU%jWy`xGkgn^1Y*fy(pk?=d+4qA zFkUt5_my?ufU5iUecb=vde6n)dJmQN6X>n?&|B}Jx86fkp|{>c)%^e_-g=L{^&Wcb zJ@nRl=&kqATkoN_-hZ>q`v&yZd+4qA&|B|e)O|96-g*zc^&a}Q7wSdy2)*_GTV>v7 z&|B}Jx86f;1UQ`vz1hwV}7(LvOu@s{0A_ z)_bVBUnN*ow1wV!554vN{xa`V=&kqATkoO5p%3qlydOa=UQVI6-a~J_hb-O~{lCNB zdJmQNwQoD`GvuxJ&|B}Jx86hDT{Gyd_fU1ef!=x#Rrl2gc>L+>(g*k#Jy0xQHKDiO zLvOu@-g*zc^&Tqk7tmYpq0X5dRCpbsx86@w_dNbG?5+1O^1h3_^&WcbJ@nRl=&kqA zTkrGhYU@4p)_dr!_unb&z5yRj{pj%g`~1Qp@3+WX@1cUS z`duCX+IkPY^&aY!?Z9^ONbw`@V{g5O-g*zc^&WcbJ@nRl=&koqCvxq3W!`7dTkoN_ z-b2-WGQi$?554ssdh0#()_bT^eGj$u9_gg7Ps_Y-K%M_>=&koqbw7rjdd2xa!`^xi zz4ab?>pfK7pP;wif4@A-8c=6h8^-<8L%K7DP`7*nb$jRE=loYluedn!ev4G62dEIP zK3Fz)3ZuE3D4M&2qIml#ig$$cjiyk|y?{#Y^@AK=OX@o=_Mv`oekiCzAsq_oP)LVD zJ{0t!pbrIoB&Z`De~^@UpUuh;Z$Tw@7b>~OP+RX&+=3;FTd+aidJlDDsy{5hX$n>M zO{lt0I#|c*Lmvxz>pk?=d+4qA&|B}Jx86U*6}0spdh0z@-S?rl-orbdjQ*cuZ@q`g z`!&?od*rS6&|B|+ROWpHdh0#()_dr!_t0DKq3VA9BYyr`z29-Mx86f+@1gR33%&Iodh7k7toszI?wc_2)_d%& z_fUC1g5G)$z4ab?>pd(N@7Hhq!=68Q>pj%g`$x;VZ$Rq4c>Zl;Z@q`!dJnzz9(wCN z^wxVAubNxrt@qGd?;k4{?^Ecl_fU1;d5rttTkpBpTkoN_-a~J_hu(S*z4ab?>pk?= z`=2Q9xp$$r-b2-W7Z!ET{Xf9U`!Q7B&!D&7LvOu@-g*zc^&Wcb{j$va2K3f@=&koq zbw7lOx87rKy@%d<554ssdh0#(*89gfHMR8~dh0#Z)_dfw_t0DKp|UTTVWrvir&i>pk?=`=6G1-+l=&kqATkoN_-op>>;`w)lz4ab?>pfH}Rex6IeG0wx z9;)^_&|B}Jx86fV(G+^?JyhMV6YQ<`&|B}Jx8ASHa>(G_k@qdAyy-%3y@%d<554ss zdh0z@-ESa^_xbbh9(wCN^w#?)%Ditw-CsTEt@luQKY`wQ554ss>dSUeb$^7a``VK{ z{*?FGlV#qwpts&b<^2G9>pj#tGlL4RCG^&N=&kqATkm1ief=rdeNt&)Z@q`!dJnzz z9(wD2eqC+7hu(S*z4ab?>pj%g`?a5^Qsk}okh;%*{vGJ8_fT8!^9zf-pCWI)hbqc7 z^wxXmt@lu;Z0%{DfTQj+=&koqb>D^8Cyy2VKfvC4554ssdh0#ZnY@ACdJnzz9(wEj z&&#}TKyST=-g*yJ_sI}@>pfH?&!M*7Bc1eH=&koq=YRDVW!|SydEbUUWudp;LvOu@ z)P3>#GsnvN74+77sI%+;S;9`@FI=&kqATkoN_-se}))_dr!_fUDC{hCLKw%$W;y@%d<4^{VL zn8ts+cn-bw9(wCNygoizdw|}0|7@A}8T8hB=&kqATkoN_-a~J_hpPL{v;6$;h#S1; zV&(k_dh7jf%DitwZ@q`g`(b{CDE0~T)_dr!_t0DKp|{?{yzcYozv`~c`xJWXJ@nRl z=&kqATkoOrehR(y9(wCN^wxXmt@luMUwe-8UwNNBSLS^Sdh0#()_dr!_xTmH^&Wcb zJ@nRl=&kqATkoOjzW!U)J^k0f-g*zc^*+Bwpk?=d#Jka{+|2aTkpBpTkoN_-a~J_ zhu(S*z4ab?>pk?=`{$MS+`CY9--fFD9xUpf`+tbN^&WcbJ@nRl=&kqATkoN_-v6P@ z`xJWXJ@nRl=&koqbw7fMx87rKy@%d<554ssdh0#Z*84-5_Zjrod+66*sMpXT^wxW* zx=-fVTkoN_-a~J_hu(VsLYem|^wxXmt@qGd@1eKeLvOu@-g*yTd^q}ljlK0Adh0z@ z?bTi^^FD*#dJh#vUFfa%&|B}Jx86f>VGWrz5%`U9(wCN z^wxW*yq`dAy+_`9554ss=8N~m^Y5{|zf$O}_fUD?f!=x#z4adIZk|Eq{StcXJ@nRl z=&koqbzgsp$Di`P@lu)hZK#u`2NhmJ=&kqATkoN_-a~D@N8Wl5z4iX(vhGtDbpk?=d+4qAP+RX&JWuVAx86f-y?=$DjkexHZN1Mg%cZ@oW}4^j6G=&koqb>D-xC65;UKg2qdC(v8(p|{>cZ@q`! zdJnzz{?#(?Q|PVt&|B}J&h$Qvx*sJ_C;b$9>pj%@zlPp=50&@T*UED*h2DA(z4ab? z>pfK6kD#~SLr${)JAeCSfpwOxVT@fnq&wpXb<=CFm$x^A3h5Tq)_bHl9Y8|(6O}73 z{F5Xqd&xyn*&7s%yGPNuC#0{fSFd$tH=ruJ4OQ7asLCEg-HsX5k&uprUQA+NKh&X+ z4|Vp=T`V@MzJyg#pJ*=P~LT|Ruuc6KM(3|a{f_@LZ*&ceceeGHY zeFG}!+fbYBkvH2zdcMeZcnIC(zJyg(lp*Pz@Z?=ctY!AKJ z9(uDq^k#dgpg%!xw*LU%_tyA#!bCye!DZ05-}r~_2d>S3HzxmIrT59=cVq6MSMZ@$ z@IT1IOaJ*zsKjqWFW^Hj;6p9oCll-yeCQQ?7%!b$aOf)Bld550g7 zy?_tBfDbAB;_H+`ryugVSR6@2IweCQQ?=mmV}1$^iQe3%!0o_SmB6@2Iw z{Eu+9Y6Ty91s`e!A9)2IdIcZ4{h(@X3B7<1y?_rBui#^^;AcGH@}KYGmNlSP@S#`m zp;z#sSMZ@%@Szfa1-*a|y?_rRmy$~Lqt`m|Q|J|ZsN(BDui!(k;6tzAL$BaNui!&3 z;6pFqLoeWejC(Fw7XQ!;t9Dw@EBMeW_|Pl(&@1@REBMeW_%ITGkGy~ny?}q2Z$RSn z18yhSBN_AxKJ*Gc^a?)o3O>}A?Vwlip;z!5obR_4Pcs=*;^}BPR7x1AM@Szv*KhE>NSMc*IYXu*A1s{3^A9@8J zY6br$KToB|EBG)Hzk|Gh54C`wUzjI;WqK3G_X<9jdIcYP1s{3^A9@A<6FdQH1s{3^ zA9@8J`gi9*FW^Hj;KO18pVyxy_6k1q3O@7-KJ*HHlg`jD&w*aShhD*lO8g=80zOnH z&!HCZ(cMYRwOi~JeCQSYoB8S9Se!&D^a?)oDGR-V550m9mH2b$1$^iQe5jKwIbg5g zf6{kMioAjkb<;ag57IvL3O>{dK2okOpwf7Ke$^e+syZqvJgL+^#r+y9_$V5d=RRUcrYt6w(5It2`2lBPA{9LqQ)3`cTk^f;!X^dIcYP1s{3^|CTbs z+fctd2gSd2i1J&&`8R=H!H2prYv>hxsNg?Bui)QW9xH=h!G~JG??Er%LoeV%FW|$( zEBN^}w1N-4f)5q^*=;;Zw1N-4f)Bld550m9^}BPB7x1AM@S%D?Ibg5gx69zqpjYsr zSMZ@%@S#`mp;z#sSMZ^Ne-FKY550i@>Ad%2nX8Sxf)BldpI<{O`0!qGohPk1d_1^< zUcrZ6!G{X|>SxN}PhlSXe1|6V0)B$Mf)Bld550m9y@C(Df)Bld550m9y@LPQGWav7 z;BP@M;6r*pUVpGx@bhbE1s{3^A9@8JdIcZ88vmpd^a_5b4E_f60zUKtetrcl;CGTT z_@`X#6@2IweCQQ?=oNhE75vYY!Jk2|;6pFqLoeV%FW|$x_mkp3-!;~sia*TxgIDmO zR`8Km@S#`mKVRm33cZ34mG>R!1$^iQd>C~HsB@+V>8|4OH^g4ShhD*lUcrZ2!AD-fhhD+& zmwBH;<$V)+0UxUF`_K#cefrxg_+0E2e5e(C6i-w;8hpPjGZ zbCK57QAF+@MP{FnzP5gES=kNfWp(Ifb*Rc7L$BaNt>7aa33&w{>QKms`s(?ipbrIo zD5ygXp;z#sSMZ@%@S#`LhYtF5$Qc~}*d`aoE$ASx;6vS*G4u*PRM0P>SMZ@%@S%_O zwKC{a=oNfeuHa*@;6tzA=hx5*KJ*GcRM79CSMZ@%@V{OLeFJ(0A8G|3c?BPqEBIJN zzkpuBhhD*lUcrZ6!N0Ez`Zn|mKJ*Gc^a?&y(9fY)@b9A_RP)el>W8j=sOm?Ke(30jj(+Iq zhmQVlpGQAb^d~Ls>W8j==<0{Ae&}sG(9sVa{m{`59sLiSM?ZA*!+WMNLHDq$AG-RX zs~@`hp`#x<`k|wLavuHA(GMN{(9xe@S3h+1Lsvg^^+RvlfsTHt=>N`n^g~BKbo4_< zKg^>)fBa9ds~@`hp{pOd`k|x$yXVml9sSVJ4;}r`(GMN{-{tY|>gQrtKXmm&S3gt) z*1mTh{m{`59sSVJ4;}r`(GQF0&sR{fs~@`hp{pOd`lsA@ML%@(Lq|V!^g~BKRP-Z9 zKO7}LE>`ll*wz32^8QMps~@`hp`#x<`k|vAI{KlbA3FM>qCYudSO0_O)el|$(A5vs zV?*fZhmL;e=!c4akhw` zf9rD3w?}7Y&+N5k?X`aDUog++!91Bq^JK59L#io9g)DM&TVNyTL*bYqS|Ht~;>%fG5n9vUs`e8ypY$WyL zq<)yx4^90jsUIfvZ|ld~g$e!8(2o-OVRHGayKWlTV2%vt$O?eWBo$dx|9^Y2pJ=u#+4ee%^(FiXKK1yccFDgaCcfT;j5vHYJ>0U8}x9zh>j z0Z=LcOa*|c05BB*rUJlJ0GPFQuPOjc1%OorsII>WP6dFe0M$LL05BB*rUJlJ0GJB! zsaF*MrUF1K07?ab4L9}II28b<0>D%Nm0Y3ez0>D%Nm0bnWsEERx%s2HaL zz*KFcko%0>D%NmD%Nm0bnWsv;s69I2GWtuPOjc1%RmlFcko%0>D%N_+u*oOa*|c05BEcpQ{Q` zeo;*qrvkuK0GJ8@QvqNq089mdsQ@q)0Hy-KRDjRDssIg~As+au0{rLyn0(F(un1p4Ly!1W8{&kwAh3GBhmR)F>w>k80=R)8V20!*M4U=FPSD`*ASLdSXz&66<`Ie09)8_uIGTQ0B2|gxK(#9V?E8Uvs!s%9cTsULo2`tmI^RM<$Y>_tN?3R zD!>j|0ghki`(HNxFV(Hj3UEhOfY!NAon2@J7(gq)7<$RhpcP;VtpFQn1=vH!dQPxZ zfX2%eyYc^kR)F?5>MOYitpG!41(-l9z#LiuR?rHtg^u+cpcUW@tpGQe3AW}pQvo{2 zi@p!703+!2KZRC+1+)TeVJ=x{1vo=1zztdfn%}A`K&OGN0Db6HHiBMdQ&^st1+oIH zp)b-M^zj~{VfzA01-K&vZ0k~ox6k0J;)-uEZ}Yhc1O&3S}vnrC^qVSqi#T`#W_77(&DP1RBfd&{)2O zjP+En{{t+K;Ec*6xFIV*^Iz%*(}jN30ki^)p%q{TU26%m7IduV0IdL5_@PFbPNz~tK|M3v;qvF6<`9b083~E*gz}59y-=@f>wYlEES;nuXP3JG_Vz*53K+rXa$%; zE5H(30XEPIu!oNIT%i@<0j&V-f2%7%4_X0+kP7hJ|CnGaz#Liuw$QPj1GEC1t2>l$ z+6`I(n%}J}KnGd@`p^n6f>wYjv;r)?%lqF)N?=}dvlU0q)QW(7M$X zpbM=4184;pLo2`xS^<`@ssPW=A8ZBKL+AKU&-%*D=t3*N09paY&TJ-q*%uod72>k4rF&;QZjRL`}Pm( zc;AD@`yn*mPoVLB4vqIKXuRJ-)BORO?$6K-{@V|E{*Cv|f3M?x2O97D(0D(B#``HW z-Y=l>ehrQHJLnGo5xT*Dfu{RAe5QMz|JILqmHz0Nqq@*|KY+&jF)Z=L(kB$o*OjXHy?Gn@4z3K|NGc@KZ3^lDKy?Mpz(eUjrTifygx#B_%G0Se}|^~ z){ptS`J)%mbl(_YTU~<$Y>^jQ3+$;{6O6@0YNo`%QJ@Gu`iz>HY*8Cdw-|-anx6zWp;iZhssB z8t;eDct3&0`#Ch;ub?~pTWGpJK-2vhmJ7M@a>K^^X6v=Y`wleT_o4BA1daDoXuMxQ zM?|0Bk{Rqnj{{@+r@9;hURQhl0XJ52yH6*O~ip_%&tvlR4EJ)ldq>!pxOAy-0Kse!W;%u+B*L63&=O zqtSd$?H~Cs2Y4>9#QQrk-nV{*ziasxb)oTo0FC!!XuO|6`G~Uml@qPuJ-`PUb{Q;Wp&#>COub%%K zHr_XTuO;4hpz*#BjrSvHyq`kj{Q?^A*U)&sgQoi;iJ8tAo?<#`_60-p`@&eg%#9TWGvLK;!)x8t-q=;L!Zd zIyiKo>Anw5_ape750?Bt#m4&uG~TbF@qPzOygwr2{RJBD@6dSP{jK`x8bH(i7@F>9 z&~(52Ena`d`|YbgcYwzGGj#X<295X4->&0*2O97D(0D(BZr)F!*USQ%?$@wN_toof zhmH3~=Q%)s4@1KS##<6*N$8q3QkrP4{Qm@S440<9+jY>UiIQ#```r z-jAU1ehQ8E3uwGwLoehVG~FMeoA(!3(tYFQj*a)NchvE|3yt>!XuKao)DL*b%?9ZSEb)Gh45uq-5Z=DJ>j9R`eMV*T{)S58ZN4jsw}bpb zeQ4w!y^HnD+*58gb1z_)f*8&S_>NQ2heywg~s~@ zG~TbF@qSm`p``mGG~HjI>Av~4i2a`ET5WlWV~NN)BP5j?hnv(fBs{hf8+g)n~nF)KdIw=2O97D(0D(B z#``HW-Y=l>ehrG-nZUU$NMfc-VdPhehiKGGibbDLgW1g z8t?bebbo?w-d~~V{_!53f8%|7TF3hyG~N%P@qPl0_j72xUqR#j78>sl(9QcZESvW? zWV&y@H|f6d(#6L60rW$342}0QXuMxSAo?-#``HW-Y=l> zehrQHJ80%PLX*w~8gK5a5sN;PP8t;eDbU%eDanN+X{s6B(bG%BQF$4*G--q49nKjrVhC zx?jPP?zgDCPaV+c&82^xaoN4UA>(~>o_OCuB}Vp<@qPqNlv8NDUqIvi8hXj@py~by z-MqiRhVlN6jrXlTtK)qa8t(_tct3_-$unrYUqa*k2D*8_ho<`zbo2fSOS*5oJh1V; z{pWSO??Es1AuREJg1qSG(0IRsUjJKYygxuU@2@bIEHvG>Kg5&f&p-9B@qP%6_Y-Km zpF^**74$0G!t%TvkWa=L`p9q4$J<=gIl2Q&y6-P||23VCxYZy$eRbajESY_W)+4zu@&}ykBs$OCgs+E`?kQWht1Y{_@pQFiSy~ z8bj0l5*oxe4Q%AzL*xAwmfiaYDvzN3;XHyKGTslN4`vGestZ`+{mUAf?sw3oj<77n z{24ahKcMlxyX5L9`_KbuydOj3{j9n}iT6uryx&0M{Smr(e}Sg^J2c(5KEh|cKSAEb zCEgE_@qPl0_j72xUqR#j78>u5(0G4=#``-o-FN@0PWJ<7x*s>N@qPx4_e*HJ-$3L2 z9vbhj(Ak^^G~TyATF3hybn|`)P4^RMx}QVR{WJfsugbg~s~@G~KVE>3#=I z_s75H{m0$=3pX3@@6dSP`kOl5_h23GyZ`w=hWv-|egYl6M;X0`8NG)Yy@$8o^z#pA z^d4sPeqG1=4lEy=ePp~J!HnL+jNZeH-b2&<4rcTox_N(D^ZaM@o|`jz|F?C#@4}4U z!;Id;jNZeH-ouRE!;IcT)BOp$d4Gjfy04!92hQmI-_`NH2QzvPGkOm*dJi*t4>NiX zGkOm*dJi*t4^8*YzvuZk-go|NiXGkOm*dJm2F2bj@&n9+Nf(ffa>(|re;?)&f)4SoiLr(lH5 zN>iB8dzjICXxiJsjNZeH-a|vt9cJ|Y<8`|4!i?TS(|u!%GkOnA4ohfq*g)gW9%l3& zX7nCr^d4sP{vYej`yO=k9%b|%lJ1}HzjK_?d+76ZfEm4q?%v;EM(?+EyzfH)*Z>;u z$1tP!Fr)X-bidj1`pf7&HyiIyFr)X-i{=3hUhPlt;p^x<%;-JL=sk4w9%b|%X7nCD z(>?kBfHQgzGkRa$xg`DOCt1zWdzjICn9+Oa=sha$Qwx;Qd+6vr%IH00^S*lhU#eT_ zBJ2d9jNboKohZ97qxUeQ_s~mr1~YmOGkOm*dJi*t58b@K!bV2#aYpZV^_AR%8NG)Y zy@wgShZ((x8NG)Yy@wgShZ((xFOdW)~ z(7O&k!~1W^++%JnnR|vx;$5PWxi`qKw1;Ny6Ld@c3eDUPXy)$jUo8b)3Aqw#xD<3L zl%-&nf>{b?Dd4Hi_Z|4QKP~yEkB#>un9+Nf(R-NDdzjICn9+Nf(R-ND`_I?uz6VYBLuk66 zG;l`mVMgy^M(?5V{#@O`(R*mTZ+@YU_Z^tgdzjICn9+Nf(R)a`e}4X~@vMB`cQB*( z@atte{Q`~mcbL)pFV^wC3p08TGkOo*yq`hS{Sun)H(zYj@qW+EZ!OE6U`Fp@M(<%p z?~ir7@4<}TL*xAfx_Li`8NG)Yy@yr0uipQU)jb@&hsOIm%;^1>>UiIU8NG)Yy@wgS zhZ((x8NG)Yy@#gz)0cSv$>=>d*YW=PpZ}xzpm!YbbL>>gl7?_oyoVU_Ny=fC+?p0bZW@7#eIy@wgS zhZ((x8NG)Yy@wgShZ((x8NG)Yy@#gz*4KFcGkX6uuFdib^9L}a_t4RMl+k;b(R-NB zUg&4&8D{hzn(muluhV@8mUPcQRD?5n4>NiXjrR+f(R-NDdzjICn9+Nf(R-ND`!jzx zNAIEOegNO?{Qnr6_GU1n_b{XP(0IRx8NG)Yy@wgShZ(*91`(oM2R&$T7(#?HMi^}`d0A=(ZI(m;XdJi4FuWo#% z`#s9&J$wdA*1zJ6-ouREf2Y1?doZK-Fr)V{qxUeQ_b{XPFr)V{qxaAY`34&qz5kaw z-gjU|?_oyoVMgy^M(<%p?_oyop_lp*I(m=1=U-)LRy>%R*#dJi*t4|C1JjNZeH z-ouRELpSd)Fr)X-i>&pp^+nc&%m4Ab{s+)_KZZW^8T0`!p_zRH9lb{;M91*$&M>3*w>pS-ppm-|joee{=shZrV2#Qn*df#X5jK1@S8Tk0K;wP; zdv(0;LDw3>tOYZA4>NiXGkOm*dJi*tU)|vuIO(6?uj73O8t;cNqxUeQ_b{XP(0IRv zj^3k;-ouREL(_fh2X(sd!iD*Nh%NiXGkOn=_sx49?>jJ~_b{XP z&~(3OVB`I|x`(6pFr)V{qxUeQ_b{XPKdj?@7iRPxX7nD;O1huHjNZeqzqjQ74L08I zVMgy^M(<%p?_oyo|Gkd)J!rfi!i?U-jNZeymUO>@ru*%`^ZAp}dv4C?JUiIQ#``|Z=snEnJ7pVTd&18o6) zXbTuYTfh|B0v6B~u!gpP9i#<3-~W%;P5ukC1>B*V{H^92(gM2B7BGOefHAZM%%Ck` z32gxzXbadwTfnK=ctbY%uiR`4ctBe~`^|4i3+O>xz!2I3CeRizhqizfv;}OTE#Lrc z0cTjXfa?0YVOv1+r{9nk(1EsqJ}fO@glqv*XbV_EKcY9#&)Pk-1)QKQ;0oR2f53*D z{OzB4Ls~!&+5(2q7BGRffH|}Ute`Dm3vB@hXbU()Tfhz40-CKi*a8|a9qcB5AKC&& z&=xR-wtxjRJguQEUZcv_!VP@@Y=G9Dnm z(iqwTX3%K9ghulX%u>)tb%8F0T;LE4)m~g#G~90>;o5FoU*$B`hsqi);Z0XbU()Tfhyv z$KPoFD(`3hFfOzO44^Gw3~d2RXbadtTfiRL0#48taD{I2KcFq3-Frh?zz}}U-~Twl zwt#tckJ18G&=#UBWMelHZV1ydShHb zTfiFH0(Q_AaD=vi3$z8?p_}}zU*|9SyXEr-+5!g97BGgkfElC(l+T~)9%V#-18o6& zXbU(&Tfh~%$^U@1fc9^29h4uW?Lk|>5ZVH!)g4L;SU_9A`ZvgbZu0NA*%okwwtx$? z1>B*V{H;DOj#8<*&=xR&wtz9T1u(R;%0I!(;ls?~!_49T<{J{? zdoXkOFmw2@d^XNe=I~+W@L}fg;iOSUPR`g6e}kFB|1B=^GN93cnZt*f!-tu}hnd5N znZt*f!-tu}hi3T31sme;&=BAH?K;GFp&@<%Glvf|hYvG{4>N}kGlvf|hYvG{58vYX z^8;rNe^7_`9?Tp*%p5+<96rn(KFl0G%p5+<96odoA7u{z?OcC``0m^5PuKzUqjC&0 zhYt<$OPD!)m^plyIeeHod}xM$z|7(QPRa09|L9>u{19diA7&08W)2@3h_*0u_%L($ z&`5WKnZtiao#8vs4BvkT`O6SL;^xfZ!_48s%;Ce#;X~uW5gHFJ&N}ky<~SVbNG-9|NQ*9;LPE}%;EoD9pbw%bNDcG_|PkP1~Z2bGlvf|hYvG{ z4>O1VdyP88Ke#z__`hF=_#X69A42Ewkr(|OW)2^E{cmCB@L}fgVJ=zt%z1CJc9PS^9Xtk^w1k<%hi3RA%p5+<96qcveD(R$`r|sp zccF9mD0BEQbNJ8@zk->=hnd5NnZt*f!-tu}|C2hy4`3sM_&9U;&=9|bhWHK496rn( zKFl0GG{d*wQ)l=d%p5+<96l@=zVR~0hWHiC96rn(KFl0GG{oOv=J2O=hVMW#d>>{G zA7&08W)2@t8s$fl*VquhgNFDc%p5+<96mI}x8C~<@z2j6m^plyIeeHoe3&_WXohcW zupxdAGlvf|hYvG{|GqlJcc3A@4>N}kGlvf|hYvG{4>N}k-#IGtUq_rdd}xTj!_48o zzYg(TXow%cvJpQHWO^4DnZPHpD+*_2I~S^Q;c>J!ps@ zLPPunx)DEzX808}!*8J({s7JJXZXzUy#L>@A-?&6I>dLNA-)d{@gr!6pF%_Y0-E91 z&-H1Oxqt6+d;cw6k-~97B!*`$=z7NgtBS<`W=C3I>A1t6DW(^JTJNTXQ!?Z_e zh`&HL;_uK5-}+E8d>5JF2ha>ZhGzKXhv*+ZUmI>V#P6XS@h51AzgB;a-x$lQvbm_A z<_>ftz7NgtBWQ-7LNojVn&H>*nc;c;?XdGWN9aX!fyS#lG{m?5q7Lz0Xow%clHte5 z3_pWr_$4&MZ=e}|508x!;!o9`3$M@+|A2=0_FvW^z6VQ)AENR;H9=4|h0O3< zST^Dh)s4^4cSe8KD8GF4hRu!557!~S0}b(g=rucnhWIITBYpwR@M~y>-$6IxkI)Q% zfoAx|9eX9WmUW2lLPPuj8sf*$5I=*4_$72Begn<$d+0{|37Ukjuw?iL;+lV6|Lu>| zA-)H_{)f;IKY@n$CCnuY-H6{qH{wsw41a}Y_y;t@xBsfX$a;U(sIRgiH9{sPVLclbW@PwQ{E zhx?h(5I=y1_$f5RFQ6fQ4c&;}K{w)$uw?ivGQ&Th8NR))GkkB&_umjdQhKBeXG{iUmz7Fvn z=tg`Wn&C_pct_ysh>ui-PpSD!!Fd7NW)kFpVefrj`yG{mm9_ycSh;?LL+e}jhj=0DUSz5@;MeQ1auK{w*3&Oz(OB-mstZ}CEVW#t;ZQugSr|cbNIR78( zHqeC`&W9P!hqi$k%y2%;a6WAPb;+N5oaua+>3ryx{sU$>e_OYK9?Wn)v<*yPhV!9q zU5y>-O_JUnBjbw;e43kd`KI3e*Ru? zrt@K@^FPUp+TV*0Gn@}IoDUt&M;XqC8P11(R3D(h?hG@W|4Cl|Zs|Awsov7>K-)kc zW;h>aI3L;u7BIv4FvIyU!}&17`7p!z@VTSU>%X<*FXwbV%yd4q4UD1Ta0YDyOPJw& zXolLu4CliP=fe!=!wlztir0Up^RYo=2n`w&Xd0Ts4Clk|ls2%18P10p&WE;v8+17T z(>zFr^Pz2^(Z`w2hdy5mXd75V+rSQHI3H#>ANt20&^FNi49hv34>Oz(Gn@~9>7(WK zH^*-2uVAM0p%={o+6K-r!}&17`TM#JbfCleD8uaI3H#>|FdZWT~ywu1}MY%(BXWP;e6aI3MPcg&EF=8P10p&WE;v3oLDb-~Wld z%37bVud*&I&&vS$WQ?H?eFlBJOK2O|K!@{@S@s0Y&DU3VeLy05_5E*uAsM}gNb=c5eg!_o%0{;*s6 zt*_K=pbKpSLzv-wnBjbw;e43ke3;>UnBjc*?lMNyJk@QW13%m-KXTW{na+oq&WE;v zb#(`a^I?YbVTSWzhVx;D^S@fRfiBE&KC}%q#@ISAgPG2Uwt)?_4eVit^I?YbVTSWz zhV#Exw}BqC4Gdw1^WodyRrbHt2r2*S|D>;q@=W552xB1Xu2nIeqAy z{x|AE(1V%Nhm8#C;|%J<4C+G*!4_stAC?c=Gs>Jk%$)u=>q5|hnbU_Bf)TV3G^RL% z`Y?m~FoXKgLU4qc(}$VUhnds=R$U0X@Glu~=ly*EGp7$N1T*-_W63{DY$Mpf4C+G* z!3kOjt}t`@Fmw8sx)AhW=Ja9a^kL@oVdnH3ID`5ygZeOo`p`mfgPGI+Hdk|b>*&DD z=|kuAQRehv=JcVT)*D!T>Q3^p#1U;BJeP|(=z|85x%<03- z>BG$Fe~0(~4C-@p2KAwZp!qL#A?U!&=|l732wDiHFmw9Q7`29((}$VUhtER5=kEn) zP#VoIZ3;|GRY|=s^m>^Zjp#GpG+Us1Gx!U){MBf-STV9AM`3VdnIqbNaWuPjyh{ z^r3V5XxaGT^F(Ee9n`OGeHMZ>%Ah_pgC1e#^kL@op_gpydvzh`!p!Nz%<03->3^?L zH-aTMXHXwzP#=0FpJ3+nVdnH<=JdZ`7lIzloIcE)KFpjxtO`N(`d?vV^%gp)kG$y5 z&_Zy7UjNM>)PO(!_4W!%<031jo^SiA2>s=vK#a&Yu@v`bdXO*ANt5g z(8oK48K!~G=_BLp4jP@0zwzn!{+IuwQPTOH+sj^k>xVp@&jau-D$#g=`~qWWIG;ho z`4Sq=H!v$eAIt^15^|+~XQf723c3`^QZP%wECsU^bg4bG2V7wiJ2acOe^h7lA#^_JHn>d2u+N4>O(*GoBCa0ZZt3KFWALqz63TgwEI=aD$!-H2i)tf*cXFeZhJ|AX0AKC-fFyr|!O(*GoBAKo)7H-?Vo;QdO#0mJRd%L03l#n z-NX5OXb)J!jOW9Q=fjNW!;I&{jOYK%8`A^2Fyr~q9x#R(&xZ|<1zHb}1)9K9fr|Ek zijOZod%%)E^Yzywg)V05|A~K=bF`m;%s&7Jxpq0E}Qc5oo+ju?1iOEdXn10oXwc zz!6#iF3XaD^6t z2ebgR+i$c0^pFK$2rU3p=%@1n`YF3^U<<$wS^$pF0&syAfIIX=p!ExU3I8oEXaN{N z3&0p!0A|nvu!I(X4J7|R-+%Ym0&s$+sVnqE-~lZF?YHn|Rq|jDS^$R70x*Hbra80# zte^#83q27yyruER6o4}~TL5m*Y|;G1Hzr$jpaG~4EdV2E0hmGyzyewT*3bg5gQWl* z(R-`>UzHGS0k}g?1iGF2`5HhAz!+KpX3zq#gcg7;^l3go3&0s#0B+C|f#zFz{aFAy z*aFap7Jw1708F75%>o+D*3bg5gBE}zv;bUSDFAomi9qX@cn(RRT=@JDPXww>SX>Igq`LK4 z0OrU7u!3gJEwlg}patLzy<~6D6M<%z*Uj$PFgnlz(1#X)5&X)h%O=DWTL2c&0OHgooS@hL z6?!7@fEIx6uhiGx09pXX&;l@n7JwzJ@_+UDv%waCJ@hI&L9enaEYHgW`DCzgDzVQ4;9dOC#XH@d}4V7@*>~S?dgL((~mHNM9_6KM2ssRA!UXcL$~o4_2}1Xj={u!S~(1GEX8p-tchJql>Pt8M}vXcOqe=?}~2 z{|I{&FoiaO1+)pQp-o^1Z30JV6SzQ|z#W#OfY$HUO`r>H0z;U6y5DWopSN>vwh64D zO<)Uc0taXlI76Gj4cY{nqq+%npiQ6;Z2}``6PUuP2~_XD3+z$A8rlSQ&{%bZHh~MY z3EZKc(di7$cj&3>rR{&?c~fHi13#l08A2z!lmA9?&Mxe)qEpJo|4CI~+8G zHh~GW3Cy8a@(S7nw$LVUfHr|Mvw|R@=t7&o0NMn`&?Yd0Hi0Fy z32dNEU=M8qC-~t;`JFviY!i4un?Un6~HHi03u2~40(U=D2pD`*qgLYu$=+62zf zCeXNH4+Wa@x(RflO<(|R0%K?sm_eJs650ed&?c~lHh~kg30$FP0uT5z?Hi2H6K=)M>sAv?b1u*9YFy{p@=LIn51u*9YFy{qu`ib)X-(1u+p#yVZ0CQjfZ3$CoOIX01 z7r>ksz?>JroEN~H7r>ksH2$Kl30;^21DFE?m;(c7OIX637r>ksz?>JroEN~H7r>ks z{N=MHRQbCHb6@~-U;uMq0R1dp!<-kuoEN~H7r>ksz?>I+n6Kb@0nB;9hq?Z8V8G2e zFn~EQfH^RLwuC**c>&CM0nB*;%z44G4vjsS^8)y63B3PLa1IP$4h&!p3}6lnpe^AH zb6x-qAkB}|0i*+SUI24m0CQdd8#yq*IWT}ZFn}HyAX~x(=DYyryx_0ur)vOnUI24m z0CQddZ3&Gn&Vd2UfdR~c0nCBHN9&f*fjKXLIWK@YFMwV%3z+i)nDYYoiB)<19dQl} zpa%vh2L`LUC3K+!Lj#!e0+{oH>b{;Az?>JroEN~H7pxko30H0{Z&VMI1A~uQ6JC1A zmN0~#7gRTv^8%Ff0+{mxnDYXd^8%Rjf{(F&4h;Uft_dBO0|S@?187T_!kibtoEN~H z7r>ksz?>JroEN~VB~-8f*5A}Mp$l_h0CQjfb6^0y)R)ln0+jOtnDYXd^8%Rj0+{oH zHP^q_-T>#o0Or5|=D+~j5;idB1<hJug5xFZkQ~k@ujFw=u*yFn}HyAVcm7 zW*7g}T@TP*eB^lnD#5w=cL~lNks!1sAxP~E}v0+{mxXiI2*oL7nG1s~`0CkF=H zoC5=x0|V%R0kS1*;M>YKWDji#C;0Ai>lH2voBzmn$MXW1^8#4T3z$E^IWT}ZFn~EQ zfVPAq%y|LKc>&CM!M1J*1DNvynDYXd^8)zU1~WiB1sj|L1DFE?m;(c7OL)MX7kr{_ z2|bwe0+{mxnDYXd^8#o~Xl!u~3}6lnU=9pm4h%k7w}cMNc>&CM0nB+pbqCK2V9pC* z&I{nTe%oKdgL7a2b6@~-VDL{|?#}~*moChC0kkDdV9pC*&I@493t-L*V9pB~I0ptW z2L`*kCUjs944^Gx1Z@d}w1obvmQc}_Q1Sfja$dk6di~4rTUAT=uhq;D|A)_CesW;T z|B~YZ=y3tcaRGF2sQIb72XtUg3t&zQU``8QP77f9cwM8M7JQ1=Uycj7ImZPs#|1FQ z1)r{aKo{n;0Oqs+=ClCjv;gL`0Oqs+K6?Q9?}T$)0CQXbb6oJ5x(D=NP79ztU;=Ym z0CQRZb6Nm%S^#re02?_jz&S41*FB&Eb6f!J0V9~x0+`bRn9~B7(*l^&0+`bRSb6|I z1cf~=_-x$+x-iED&=2Ve^wV|@b6Nm%S^#re0CQRZb6Nm%TJX3z*Xan9~B7(*l^&0+`bRXe?}fuI>Td2F`H-%y9wCaRJP60nBLu%xMA4X#q4G zU13fOU``7Tbr0x4dcbr4cZhRb0CQXbb6fyR57?rd7Qmbqz?>F*zJ9toFsB7Drv)&l z1)t~jm*aw0e{KVFTmW-i0PO)+n9~B7(}FM5J)j43S^&LfCNQT3@Yw@+{jKmPR?jhv zEzEHN^tb@!xB%v~;EQz+=)jy7z?>F9pYSQnX#vb>0sMC3XP=*cJM3`*DsNO5l;Z+e z28UWlzBis0Ku-&*8_Q_{%4q@2X#vb>0nBLu{C=bS^!o|txB%w30Oq*hOLY(E!JHPr zoEE^G7Qmbqz?>GqoEAWPK;w*aTmW-i@a4J(bYPAPU``95m--ZXT7Ys|0CQRZb6Nm% zS^((*&+EVWl~>m+%y9wCaRIakOkqw7U``95SJ@8cv;cZqfO1*@edMhZ*S`jrvSfZW1IB^qCmTlmN?)c$H6&U;^F{p{g$bN29ImV!AhfG&kx z3b_<=DU_wY_G&4Zm0(u-TBBZS&doV4fL|;5^#IN0XZQtE?bp)-I;cE?KJv5x<+K3$ zV3yD?x`Fn9#vbRm0Djp74YSs{?g1T`(*l^&0+`bR_&!eysyldE0CQRZ?EzQ#-h27{ zdEguue539GJ(%MHSbD$|<+K34tvuc}vUoz{)J#p3t&zQzRCCB!J*+d>mD$H zIWB-XE`aucEzD^F%xMA4X~DPZ9?*d~Er2;KfK?Bu`qvcaxB%w30Oq&=+5?U-rv)&l z1u&-tm%0aZVNMHRP77d83ocy$IWFMl92dYG7r-1BKzqOy=ClCjwBXxy59q<17Qmbq zz?>GqXAh`8e{hZqV2%r5jtihY;0AMA@SVB`bm1qR(tJ_n9?*mKfKhtD@Kq0}Xb-5kyOz@e{?O}RuHSk6%YS=mRL2F+|5NpV zCI5>(U;|4J*du$u3EBg$(DQ%?vCfE)BYp!u(L59mO9Kp)xzM$jHGh4z32vUZE0e9$mKqnKZruZV&>k>^_J9er z2h5>8Uiixzzo_0me3xsf%bqs zvk>__J9Sn2dtqzUqnK zcRp_YDG}%sK7{sw39NcR_4zl)9tf;p=>c0*-lz`99&m=G2i%Z7p!uWpfDS5ovybcn zBWU!TLVLghRz09ve~rCnchDYig!X_7v_AuK&$g1qSG&>paYUjJKIdO+jlfISen z!d$b^9?<>|p0)L}ANHU#yHr1LH`oeyA^g7$y~ zbSdOg$fb}=p)3VG4`{vl)k^Tv;5EP{IKVD7hW3CZOk{^<^F926sTP)>A9$eh2--iL zN6#fcAjy&%7x;U;ym_V`vYURd*;o zUbDz517EWm2b!#+5=Yb-R0ITTofLm zJ>UX=u~B}Y_m1rW-Jg9^&I1O}9x#UXfElz0ETKJM1MLBOXb-qTe}3Qr?E&qd;|^uv zMh|-+FogDi3A6{yp*>&)?Ezb84>&-3z!};DZqW09=Fh(=J)i^a0e$$^-zoWTgzW)S zXb)IGd%zmn19s3JaD?`N3$zE^q2~du_M6fJy3iglfcAiK1A8DagZ6+WvbXol}YGyDja4A1!&b~Aqg4e@Jeh~Gg&{1F=BFVGNwhi3TJFY$!? z3ngKG3lKEJkD(cU20z(2KHvYA*bu*ghWI@+#Gjxc{t6B859nro`{H-fKYx55Ognp3H^ZG zKt3r;|Gp>?70U;qsCp1Rd&G!f`n%+(0w@9-84#uw?ivY8c`l*bv|D@fG~% zdZEwP1RCP!(9Qf6bTfYo&G1L)AG<&^{2iL%TffHT{*G$ro1cHehWG(A#E+pNeg@sl zUqa*61{$yS&K!#`lj@a`7J=u5I={8_*Hf1lIOS3 z5PyJf=AWS%{sv2iZ~jK!r#i?C--ji`k5I!9KgDG;e}PI^Tq8sL4w@T}&=7xtZsy;i zmu#!g8?Zlr3(fEYXoerd{1%`Fb~Aqo4e=Xjh~Go6S9 zGyD+dw*Wyi{2a2E|9t(gu$TH4mJokHUi4>Zh`&Lv|K@M;-SuDVg=Y96%q0uW@N;N} zUqLhc_P6-_F~lFZ*${t*US&7vRo49NJTD#OlhKDh@)7j$PGQnAEE#@{jG#Mc+HD+P z-S+}Zvc98|tXl(~*YZ1hP)XJUOK>IJ^@ z1J6^mJA89_?`yrIUaJeu@I#ni2L#FR&+BiA-OS%WL;M~Z;!o8bN{GKgL;M3iLp=YW z`moOM189aH!~8lR=wAL3mJGiga{U?N58P^qKSM+O4I1K`@2o?77aHOR(9QfYG{Y}p zejN}r!|$OP{sf;HzS{r7hWH0G#JAs7hxj4PuLFXH_<3~)e;p7s!*8J({s7JJXK04M zK{I^wcX|Ia#CNbEz7O;3fM9+d5Ogzt0S)nM=w|*7n&FSo41a-U_&YSiw?@hEeEwiV z`~Vu_$1uMR2)dcStnN^TdN$AyzlUb{6EwqLp&9-G&G7Btt22BLe!o#J*C95wuskehm%rJ7|bMLO1g-&a1lkqm(5|q8 z&i!nmRp9`w3TJ3lxIwEz^N;GP(1BKkKC~)~8rZHdg?5Dnv@5KkU10~U3P)&FxInAI z9a!e$Pk)BCeWxfhgO9Zv?^?2=Kl}au5gBS zg&Qngq4^#jr2m8fv?}zWRbdK!x)#u?u!dHJ9kePOVdnp@*gyAxc7^to<=iiT?)ML& zRbc|H3Ug>xSV6187JAJbpds!ItqM1o`Typ7>#op&r7QH2U10>>@1H`e!U9?q*3hc3 ztL|H>!Vy{(F3_rQhgOBw`x@yA-S_2si2_D}c7s&Im) z(<`(pJfKyf{r>ur?Y*D%?FvI~wku4aU11LG3M*(;*g~tq0a_K#&64J=(@k4(BJXsW)x zy6Xd$0N?)83N7sdY&M^&>WiISJ3?4*kS|x0cI)aqk2G>n%7GqmqIRuvJ}ix z(51F8E5Wi-L)3e7*OQ+)^875dQpK82+!EKqp_Yg8V=4p|kB&FOZ=qG;0IdpVXjQmXcPLe%`JuWhbf8sX2;J_Ve2C8*J zepSm~)K#GatqOhUe*Y9&6&BE{u&(Yo4oB(1lio0kkTN zp;ci9tqMzMRoFnQ!X8=`PB8QTS8P{!K)XWw!*y5aLHGNI(5f(jR)smVDy*PYVO!my zRD}byDx9HJ;RZAR-(1#Rp#$v-edvDw2!6j*g(K#x zVTSi%hWB9!@oSXfeVEyOnAv@p*?nk+Z+*1R@LibMeb~tGKF;ty%rog_+%l*^GmJQqEy!_Z!#{ zzl9mzhZ)|78QzB(-v66A#CKq3_hDxDVP^MXX7^!c_aPbnx&O1nhWI1Q@IK7&J~Y#{ z)^&*Q!p!bNqt6&-b{}STA7*wRW_EwwASsmDf)h8J53bOB@PLN+_TSbaz6TBQLpUz) z3=^2yeQ1VXL1*_-X7}MU!?XW$#u?uKyZZU+Ktp^V8sbMV!}~C^`_QL(1I_SznAv@p z*?pMVeb~tG{@>Rjz6UeB54~t6&=5a|hWHh9zkdreyAPe+N15G+ncd&i8NSiM8QzB( z-iJQnQ<&j>nBjeBh~GhH_fdJDx*#+B9Xh-J4}5Q&-G|Q%-*_2Rw?0Gs7-e`Lnj4oe z!}~D9`_N1F1T(u2GrJEnyZ`Yz!}nlj_u<#JW&UJ>GrSMIl2c!`_K%( zfK`UCK7ZEOt853o%8sx+FBjyKafd$i)+g%6+l8j(0d#gB89`^zV7+{G*A2|?-+^Tl z{)9@dy`qw9AIPuN{$!o3d(dP(geL0=%u+DT0+tNFN3MkYN4T!grBIgor&mkCECsU^ zbg4Pa>^?MZAE3GV49(TeT{3(JHOgPM56dGMp$zXsAIuW^RX5NOzlU!w?|moeT3490 zK2>M<4$SO6%&hDek?!zj> zKd(P*h~Gi?`;X8Ne}x&|hZ)}gOhWw25aw6?z|8K$%FVP^MXX7^!c_hDxD;WNYY`E$n^-v4YJ;=3@z`_K?Sh8f<6 zncat(-G`aohwk^Epc(!OGrJEP8Q%ZrI>h&2hWBBH_n{$v4h``unAv@p*?nk+Kf}!K z!|#`?wfVVZc+MZNA$|Z2@ne|beVE~WnBjex*?pMVeVEyOnAv@3hHoG04Bvx))Ogo3 z{|&JregaE~pCd#33L4_K(2e*5bR+%@&G0v9hHrkp&hQ;rJ{$YU3_toj`Nt4HhsE+Kx0+=xFyL;MwHhZg!t+5S=;;(O2xKZIuZ z2{gmcp&5P!&G1|J<;FieCtMEL5Pyb-_!~6DH@{qm_zpD0_n{l{BWNI+LNojVn&H>b zNVkJ-#5a!E5PyM2pF1?fx4u$`_%1ZW51=7_49)N}XgpX#>#CM<@@qOr3HiBMdQ&^st1v100p^tp` zEv|nb@R6I1%NJNe{2duVTbDZSc46{9EXjI|O0u4z5^I;J#M%w=3+k9H}Pz+A$||th(AF?{1uiE-~87)#CM<@@qK89A3-zx6q@0e z&J+jpc(#L-Jxv6-yj+O zx&PJtZXMz~&=B8;hWHUQ#806iegWNxUqdte4!RM4gl6~)G{fJa8NPMn`ZvUPZ*_NcVGk6a(cn`~G;~8b}9%k_VUT63Y z%-}sV!;hdDehLR)DewOaoWXmT!F!m&dzis{n8ACP!TTT98NLhuKf2yO{=Iv?`~Q6M zxm-FwrYN6JY4y_|u63LFF)qyN$Jx!Uxi%a7Uas5CwPCgO+FWMCR$FICK14-@rbH8@ zl@f%eZA!E$sip*JMWsZA1t~#H5EcZ%_kLc_$MYobx32x;bI*C6b6&6WdcDr;Jf7z~ zpRczxdrD^KL9=O9`wL_&;##554;CG@ct*si})hwf%l*X-h&=^ z4@$%LKs0=~|Aw#!-h&=^4|?D|=z;e?WdJJh9`wL_P=WW52i}7ocn|s;T2N2Q@lP3l z9(d1YiTEYxf%l*X-ft2SUj#ky9#k|<1N6Xq&;##554;CG@E!~rK7RiUd*D4NL6rGf zBI5I)2i}9ybT!Ze??Df|2c_ZrpanW69~3~zg9<1SQwKfp z9`wL_ux>NM0QA6nP%q+VpaSn9Y54R8_Q3mJBqF{Fs=pebM0^{Ri0^?Ocn^BuJ*dML zpfvm%^uYVfVb|~laD2@Cj|%L8_n<_43-rKyP=jUwN?wgY54;CG@E-KQdr*P*#}2!O zFM`tW)nn$= zVFljDTZ4%2Lmqe!N;ghH54;CG@E+8V&A#HWYxn}_f%l*X-h&=^55^ike*Sb}54;CG z@E+7io`D{C4|?D|=z;gy!>-|rpaS%LSE2K^lLz1xi_WK`HA2 z=tY6=wNJT+j6zD~PUKHp>fhuYYdf+`MxxE3Ut8=eD?7F%N-eiCO zs{z`@wjrxQ5Awi!P?ed2I_m1?YXf`W{c8`qh_8Ykcn?a%x8ofY zcn^BuJ?Me=papaCK_%Wmx@iR~&ehKPD{05YU&%OSzYxp844POPN;Txc7_%@W5i0{D? z@k7v8zyT%V=b%LV3Y3V?yn#Xf)i8wfpfr3Ll!mW?((p}C8omRXhG+d>SR#G|`U*Ip zMEnAjh+l&e@!2B1Wy!Mz@ckA!37z3zUZMg3|B<@QZ1a(qmXJ;%A^l{1TLi z-+&VFxi?Zv`;1=%^&-9s`U*IpG<+MBhVOyW@Iz1P37Tl!ott5=2ALSHJR6tW#ynllw;#;6Zd>536AAly}$BQfYR`}3Xe(??nO`?UInG$ z8{lnUG5@~}OT_m;6Y)dHCaMV}5kCh_#IGQU_{=4);q#Db_%b97Ujro@o1ip&2fRh= z@AYAg*%7E0@l#MDegR6vuR)3U?4>5+(QpM&8omNb!`DF#MK|k&Rmwrm{faa3HHeuI4o;LelV6P?c$dI%y{j zUuKfG4@$(3K$SHGy(~~7egjIx7v90(FgaQQrQz$KG<+-G!K6?Zl!hOGX!!8_nZmvT z4k!`71|{ON?@UB|0W=X`g%nNG0HxvE;4!lRzlyL#d=>N+a6pOpHYgF_ z10~{zpkBmJKxz0nC=I^?rQtL0PBeTTl!h;ZX^Hq6ED_%XCE`1vM0_8Vh#!Fx@l#MQ z;uoMa{2G*o&%P(o@C8sBz5<$t=lKIm#J50+_%0|BKL91-$Dl;~43vmpg3|Dr%M%Ts z2c_Z5pfr39l!kADx2Mgi=)e;3eNZBP1WLqDL5cVUC=tH~^&&poa1DR@f#~?ZJ?-Eb z2aX<$|B&w8q5`IL{1oe@aJ|bW<1V}Y+|W=YzN~5Yi5fR zZaFY)s{3&bvxRds8;4I#9eTpi)bAa56uYLPK@n|F~%F#*H1Q_P|E^@D*yS>=mIQciSU}Ei`hz^pwY>PJdRx_buAKPqqrA9+`Sl zRCZg%Y)>-Vp+}~k7**X?Guso*Mo~|Q>TYY4hL1_zC*AblE!+33_`9Eb*HduU>NP&C9AUvo4Hwsh)2iSf*6jPXvfabgFa zX*TL`Ml{9tUt`ZWWB7 zX=-MSnE{XOKvc&TTBcEY!&#}*(@lPd3bbrrbsOcdFO6y4^w zf!Wk;6ic_cZ4_)tw^0YW4P&_Ci5;kJ<3PI2Z8Ni-VHd@5bQ`wN8Vj?j+c=JHbKA;n z>Nbv}+peVBLQ8GTxTo8$k}Z4HZntqD-G(i+V%}`(HtJ5dxvgk6bsP1g+uT+$n|B*^ zpxfM7Ghd@w=*E#5Uy@YnylCvUiP_FG8{_QUXzI4vRfp5@ymqb`sq_n? zImWnOO6t&&fF`H&%D)Yps>$aZRo|shT2~i&#Ct#+GZP63{_RLf~ zJV5G`J}Vl!ePqY#Hm5$1j>c}Am`%4ir+Y*+b=%Bry3MK2L!-Id7G~3JPPq??me|6; zU13Yp{SUI*aNwEI+Kn4KP`5b;o)KlP_Q~?<(2ZxcSHlT=|;hJZZyOe?uC)rcJGt1+a_kyeZua~i>7Xy1zS3$8wKNY zqPZ8iumg3YU^^#TVha^rne80AVCr{vw07IZY-gM8rSW}|dGFx}I1pvu8+u0f37eiC z<=)Fg`m)%VH=}M8j8BUS92g2LnoTzfwx>pAY@uZ;X48Fw?a5IUTWFb@*>s;^ds0-# z7G{Em*`5>^z-Y(##Hfie+?g#iKGAH{?+H=cZJpS*d!ulMv!bq>dv>Vq6RP;=sPDFc z*>s;!#YaTLv>Qie)Qv(N9~zC_HZhxS6sq{3XzI3^*>s;^J2RSN3m3UCo9+{AXGBYE zp>bAbOY26#cr;pL46V8`<56n>Y$rvT_o+9s?+e|yd!yvASudJR_X)?H5EZb|x(Ii( z={});$4BM&;X4Ln#f-X9sNmhAsvlT0+uf`()bF^c?zV>6jx!rw!OA&qYnhF^HSXb1 zzqZ>tW;^i6(sjR|I{7YLwucMvm8QSXgRjr;aKOO!>&H!IC+QuGhFHVE9GSJZwRR6i zV?Wo#tlh1(b1<4>jW&C22S^1}NFv_(2IaeC~4=yq1zw@oopLOj`@wJ0d0c*S=Dw?&nwN?*CWvrpODrT*2 zt(AjO6>DgonprDbYxy8=hC|bGi48NCW#*sa!Ki8G15wMYMOi7XfIx9;$E*ceDK397 z>bkX8>i$98i~NqK(`aCO=d?H5vh*U>F!n}fb#a3=LofQdCT4YUgY_lR6l1u;nHl3k z7#;j`UNpxR+Gde9qb6;P=SEA6aV4Ua*)(ZmdqK3u7Vg@O*)(ZmdtQ`zzhTo?|s-Y@Z#K-BvN%*=FOyo)J~uRx{f(%*KU1 zJ*vB{VK&X#T-Vd0rrTQYH~FSXn+tnt)OKUX4%DR0H1Xu9>$aZRG--2TPm20(8<_1$ zRvBzhjE2}a0q&gHo|xF4kdDR}Lz7NoCjc0v@t#?%3R}*!fS#}lQy<9qZ~H+lWsKI?xbCC zThVN1SVg(Cqfyyy6|)^R8@-V}DXO}$X2z4u$b}t=>TYY8O_Mekc0$y2Tgz;kw7Ib3 zqqf^RX49O_t#r4j>$V=Y(jWg(>a_HbP5&BS*T{DF*??`#24g>9Vpg9Fure7;v4&f8 zW>%jJure9Uv4*BznAIl(tV{+=tXxZ)d(F)5>R`szSz`|UyD_WJ4Op2QGS_NkWUmb! z<#Pj8=7t>BFs$-s^|=A-OQHhCFd&P;m`=r=%HYFzUR1_NZy$&%cBJM8Z0AN*Y(e_g z%(go>)ZNxFo8|`E=6O-mZ7s8DZlGnJ6Sc2JUxkx)%&5tMhB+td`hh*Oos$fXv!lM- z24*|kY>cXBL_@cY%=Qek(IQWe#%`OK?dkD-!qw9vPm88*oS9K`0}b-jXzsR!*)%s$ z_a{e7x2?>kxdGdgqBXYAq8qbmZou}$DAPV1ogVrk+Ya6MM5_$OCqy}n)`{)Xt&ibp zQD8%un~S#dS;@|ij>_1=XsMV@vjHc1L{!BVUu9G?n`Q%S4~^>B!VqnkO_Kq(2SrV6 zVQ{yCEqSAX@yw`=F&;Qk#}3qNfQ_XDu`yzJ^JTU(tfI8S(WvjXf!U6ljYi-VrQ1ek zJIQP`0$y7Q$KKKHq8b!2=6G}wlJG!0~+LR(b8=zv)#=Kq(OK^ z>9&p8{EY@J!aK_ARGI8`q2J;TW)Ou2$+<0G`qWcW4@?*M{bKA<(e`yg#Wn<0+4ruP z)%6rs^i&mVIBCtSuBWh~r|MWk2Q|#~=LC3Vr+=vGcwZvRUsbCJHqGMK< zS6Go(U94d|^~~z>3Tu@YD_Fxw9F&GnWn>Qd9fs=2_Vy{1z2hkqYZ&Acv-%W@HJ(DT z#?2Sa%<5Ap)_4lV%9uiKn$@RJtnn0z6`wVpLe0Ey3N`bAXk%8NLTS->3jKgPxKrck%$&FWJqEy@(?#$qrgQz-4p6zax`9jPgl)?^BGTg_~mLTSqvM0K|{%%&-n zc4Z26Tgz;kLTOc|&<}8D&3rci8QAS}$LDHI!1D7G+!R%X)_ij650TNrK| zvuO&&#uWO&!_jGBq-H<3JB4Co3dI=4c)oP(fAK26!0#~I6>Z9QlUTT<4GblD@P;87;?!aK%H-oydV+U#mrSX_S-PSYP8CFpm zj~Uc$1G6198;!>d>b8;DPBI&f#|-*G#!0Bn#EhCjX*_07KX7I?&7d?MGpO4ZX44Ex zLo$Q9ZDlsipfn^isM|JXJ1*`Dn=Z??F5Ij(z<4_i?IW7Xo4 zE1<>B)gi^swZQZ3dtVn+?A!ocrCExKNQg141eh79;JGEJ;JFQGF)6w0`ADC&ctY@d zKMX-|RZy{W4N$RjZBVguJy5Z8Lr}4ElQgX0xjCrdxfQ73xy*->;JG}g1eh|Y*tr_0 z*tsUC*trg<*ttHa*trp?*tsc4?3{%`!wQ~Tg9@I@-jD>(6+i{gRX`=c)Ir70wLrzr zbwS0>4M4@tjX}lE%|OM@EpJFC!E+lnD|jx~O@il&pn~VBpn~Tbpkn9RpvBJhAjQrN zLB-BZK?SxfKt-sm!4NygXZY-mN$^|&EZi76v;r!4t_~`At_3OqrVA=|ZU8EFZVV~` zW(F#DZV4)OZUZWIF85)kqFXJ9vIr{>sR}B1t^q1|t_>=dss}1|ZU`y?W&&P)Td4aS zRP5XeRP0>lBT4LB9<|6o5+E$aTfSu1+7+4)v@LU&Ee+@td&y7I^&&@!^&MiU3&SgHD9F_+aJ68r3 zJ68i0JJ$piJJ(6W3ZCnO3Z5H*N`RSy8Z-+~VNGjLv2)pvC9!h_P_c6r&|>H6kYeXr zpkn8`U>rLahhYt11<#E^1<%dmoh^=T2`YGQ11bR~_wgilt_WJ}Totl;ssSl>t_@o3 zTn|$0+z|ZsS>gVl#9JR9&x3PF!E-B6@miUF5k!)HDqg`V&|HmV&^)bV(0px zV&_JnlGvwxUZpB{Zoy^+&#gg?|7mG>|6^}>|7UA?A!oU?A#bs z0?Z5yBc1zy30v^o2GXF<-JAr^6+w;vDyRgQ2B_G%F6cuRRP5XsR07NlRP5XmRP5Xa zd`tQl;f~FHA{k{xP@}90TE8?Pbw(T1P1*xh-yx_dwFzjkb8|?cUn@{iW|={ z9=yy#&B~x+=W3wJYJy%CsMxsysMxtF7-Hube+yW_b8Aq+bJ-z#D31VC@LUBXcrLzG zo1kLnI-p|b`k-RxMxYX4rl7^nEg{9uZNQ7tmfw=QH3^<8f(o9if(o8%f(oANfQp^# zgNmJ-f=Yl{fQp@4gNmKYemaSrD}aifOIKh8&(%Q%&viis&kaBY&yC|9EaGqmDt2xO zDt2xIDt0dS8Jg1eErN=jtAdK1Yk)U4Ee)j&D|oI4DtK-PDgkB!DtK-VDt2xKDt0b2 zN@C~opkn9Bpkn80pkn8mpkn7bX;{H?eNe%3Bd}>XE7N!f)2<6p2{3C=v2)qaCb4q` zP_c6rP_c7$P_c6@P_c7ekl48}{}1CmECFT$DtK-VDtK-MDtIn)8+~W>$%BfWD}#!i ztAUE0Yl4cM>wt=#>w}7&8{PI451xyrY(5a--d}p~_#YjOR{SK4F6vP)e&#-hFBlz) zuBS`+S>fj)HoU$Xel|aMI0U{$?b07UJN1Mk_J=Eu9*AAbyYUas&T;%xFTL&AsSCGO zJk~wd|M{1x-`-mBy7pM#@RzCF)_T`{)`$O9>bDPeOZWWi)O`=uOE3K^-q&_Z&p!Q7 z{Oja%g6-571l!-(ujOgMcJ(=_W81Udd*50A@c)J*b)F)>w)@_F-@ae6eN}@q|9baI zPusWer~Z2POt^%5uJpve*|pwxpY^Y>Zm;c%zu7J4QTz6N+H-c#^q_s#OR;jMTb~o! zWzMftlb+Mn;lhTVyC8nMfWtR0-T2(p|1K5&U+Q5eCi@QY2KQXR7yjRFv3SF=)lXGA z{Czm_ zDYo+?pTB$JU)@)w%=1&HP$ixCTK0{9og0cd_<~^5eeviQq%PYQdi(xDzyE^WV*cB{ zV$OQuZoB;2KI=ceaQE1InKilg>-QY1mPsylwdYt}UUKZ?{vljK+{JfEx_DXYo|`(m z^re4DJ$8FRtNj=Bh=1Iz)EQPOCM@fam;GZn@umM5TI&6K_SFzcD)9^3_Y`Z@N1nTT zUJa3C-^{tzAGYtc=ceAN0dv=+`nd;|q8F#`v#t6^_gDSO7lm%T{Y9a2>lf{|{r;Q$ zA^)^n9knj6!t65t<)3zs^;ny9Q%_!$L_yx9`?_v%ek~K{&Tn&e(=w` zwfJp2Q}S4N{CS~K{^GoFJ^ysx?!KD-k_PPBzEj)xM|<{FV<(*${YyCSv;QTW_q=}z zjeW|CLyaEw;?ybICjR37CVu{lcPpXMkzD$99L&XObS(Gmt42&J{Fr~;ZQ}dvYs44+ z>uxz3-goxy`5?!}_bYe$c6?+`FI{~@>YUQqFG)Q%uEa~i^<49k-4i{~iaAavy7;Bx zJV##|8sbqe-Q897^<7KHY~Ral-!}U`C7B%c)TN#GJQbR!*_?XU|71?xe-r%9%Tkwb z+x|b)_DQ$>>}8?0C#S=O{rB{4ZFwad57DG`)9JA9ThrmnuGzD%h9s2^wY@lFjgYZM z$b@_7J1-Bvj+yN;v$Zp+=C*#HQ~h`Z+D&upSUAyT$3p$CI~Gn9*I?U6)l*9sWmEUr zPWZoJ^-j+5n3t!1`?RE8^$>KcKdW-5mLBq!-Lsr%XW5Pq&cYCgFJfEv@@T2K=O{hP zlcUah1)r+ArEk9?b$EN!_~^b_=c~Hx8;_{hs^dpvmN)! z-66k!R(bp@cRN(GO49kS-gB(FkSnmJ@4hlr{e|a;rhoPMyZ5lG18>FBjpy$c^k8ed zyZEW@`l{VZKE$la#s1!_c8}e!!SZ{KJ#5EvC05Cg>^XM-6Z!7B)G6DZ*X7?+$9m7# zPbnR|jC=gOxzz7%N8)<_NWA;2Lnr*!t3z}A{;PNEEH(5iUaJdj->Y67I_zV6_SN-y zElS5<5YGG13&OsCaKY|*_g~LNw(r%pZ~ubbTjzWGZ|#d-6Ha{fYeI!@dd==lpeL7) z1aFG!1NPlYzh%wsw{__c^Sfu!1nZaLXURQa->tO&x$+6l!cFn>{GMCsi^$I=%HyLHgj zc*m5^xMWh}KPWZ0vdym)ewr2CB(v9b){-Si@>r;P3 zzaAa#_E2?y-IuC+GDrUA8$u5~>kXm&7um00eM|Ut!y7`~zHGK1V%yI1nrlz$o zx{BhL#W3KHd*kke^^^U#^Ap|}3jNbdLNOPx^Y+9KwNcLiw2Qvc_B~b(``-29-F-C} zl6`;g;@v80FeGC*&#~JHNsa5rdT(d$Z=&O2rO=!&E$uev@_zej^BS*U0mS! z6&0+~6fXt!XK&t}M;>DBz5l57iTiF+^-FS-{u^iEoEj<*d`qaHy{A`B~UoJ{G#aV5JY-GJZZpkEpzr|vswek9D693@xixtH!J%5w)KE4{x`xn*F=>JsRJ+B78E7(%k_MO_k zKdPp#-!{5WX#PYhee$w!;%{FTDtxE6?VeZ_PWFAu+rqxje_N=;`Fr-2+)F0Pq3yf0 zeeeAC-Seu#$=H9+rVV|m#S?pQ0u=C4mp~4r}c2BGd^Srbco`!ud zen&X(;dg|QDgp59cZAa%Gh5kg@dJN*GxzVi?@6g!^nQN&6W_U8Q`h{-^Xj|r3`N}I zU7@DG_O9KU>Q+p~^9$b<_Pyv`p{jNEWyr-(#cg#m_ucon*ObUVcD27=-yP6uWCqfn zyI_8wJHDvoEbpnOuBYrTHAAg4?+*2+ z-Lq)m@F?9=&+2{d_-Ye1`++@Y`A@DkXIIPh=x+Gk%fr?E@s;6v?%CMw6J1X-AN_e_ zcQVseczc#!zvoz8MRM$9&#~&M)4c`meMRVB>C0zcaR(18-`88UenR~0e^zO8Me3Vy($dC=UlaW`MQK;z`m7z zw==z(Ke?m7x#w8jH?*$})T7O0h;3`vzW2TduHX5|8;S>Com>>JBG0>ew|e_~=PLHy zR!_Zy8n+7kc+auAv}A^P=zDjMRpo!zkA3lbcgsck#lCwoDzAQT>SNp4_Q!g}B~x?Z zec^U$zAp^F{`+=s1YLsf>mA>{*S=oU(>a-i{%33VEV|TRQ+53;^?Tj%?ewdDSvPYQ z#!vhl-}Xu2UUxiM{JJ0YNAJI*%T0RhH?FxOZJ3n#m)Gnzw5~rnxWU2OF4R>gBJ`_! zj@4BsBkZ@X-91(voZOt}TpO-6e#6Q@x{`gl@>{Omy`$>)G;R2_cIs){{`ALvBKU7? zhhz1)|8aY_C#Xz3G<@3gp2*yDUw`VllU8~0b-QQLl|5`m z?|YBVZl~+==v_P0|LN==tBy;Wrm*MOdsqYih9CQdJ;&<4P0GFJ^{E@TJ?T1#7dck& zx31qEs=p-mPyf(vt#wUj`oVwqq1{?*s3!ACZO^f~VqRrf!QbInnp|@Ffj8`yqbp20 z_4zl1eJ{KrOds#MA@!l{6?v7D8Tw`2u=Azeu=6$D-4p8qyaO-3G3;_bi+q?%i$rkr<`B;*sgVd9sk!J>;76?^0Cy5wdMt6F{%){a&|EF!wYvC|sfTad z&HK}>r6*&i&Y4e!YLxl4z4ds^#8vi!{MM`ArS!U+Qh!qV-CIJ#J?oZm=s(@ETh1?i zDEctw?FBw!@0m+?|5T_&^r_HtPybZvU$<4hNG+FCd0{)puc~;|K6PyBT1U#Um;)1l7e zPwy6V)Bb|a_{?rWx}>C_=kKweYS)ky^nuUpUSgbdvZp=%WVBoIXZDx;X3SLcmQkqY z*ZH-*;G=e`L`yyFv*D7i_-xqsqo3WLI2BF8iBtCdDHYXA_q=U;s#Ns2_*AJl72`Pm zsh6ICm0}CGh31hjLbH%BGz%(NehKac!f+R$FEk4(RzCaXBv!tVhJB$~&=;BoeW6)U3(Z0b zmLGt=&@AW+&4TK#4d@HaPLo*qBIxVPf^n>TeE&6J9oGSUp;^!ungxBKS@`a-i`r`K$PErPz#Ea(f(g1*o!s8QAfeW6)U3(Z36j5(;9ufVvz@%YbtV;hzZ zYN1(3q24u6Vdc&3t{qUTzd~C56|(U0DWuh3A)ROq`s%N93t*4SFTlR~E9gamzR)bF zq97FosVGQAL0%N-MSU}gl`nu^5=coQ;I|I@LbISRGz%(#eGK~Iub>v1g{%g-fA<;` zAzx?~RAri=FEk5Yrgdh)V`=+KIU`tQO+haU^o3?YUugDQ3=S&$*9 zodnA_*z60%+d#Ea(f(g1*o!=nKt)zR>LV zlUVrz=n1c&5?&!scm+M-74(ExFiCiYJ>eDfgjdiLUO{^{=KdoQ@kP)RUO`WI1wG*v z^n_Q?6JEh2;T86TSI`q)K~H#HB_ci#O2n5zPk04A;T80RSI`q)K~H!EJ>eBZ!-xBC z0eiwL=n1bsNJM-A^n_Q?6J9}2cm<{5yPzk$f}ZdSdcrH{39mok{*#E`u-Ow{f0&5) zBIpUPpeMY7p707P;T7_PSI`q)K|Np>pq`X#FiCj*Q6l0CpeMY7p708K!Yk+rub?Nq zf}ZdSdcrH{39q0hyn>$ay2k(Tgjd)TUO`WI1tsF!pfp_%^n_Q?6J9|{pE>9Wub?Nq z{y5R_c`!+Mg+1XFls;&J(lZ^<6J9}2cm+M-74(Ex&=X!kPk8-_Yxn}>39n$1@Ctjv zE2#b&fS&LQdcrH{39q0hy#6#fEDw6ZE9eQYpeMY7Ny01a39q0hyn>$a3Tn_SKu>rD zJ>hk;O?U-8;T2TEE942UpeMY7Ny01a39q0hyv92#;T80RSI`q)f94`SDuPOQg>0T` zK%VdlD&ZCKgjdiLUgNEgkLCOv@`P8=6JCFwi1<9{39q0hyn>$a3VOmT=n1c&C%l55 z@cMI}Kc4W)W>0tpHIlQxNJM-A^n_Q?6J9}2cm+M-74(Ex&=X!kPk05xNRJafhuYZdcte=h|BE?C|z9#JqZ=` zgjdimb_`h!W{@Ymf~rjBmC0H2phSEb^n_PXWi>%B3-p9n&=X$4B;ghIgjdiLUe9L_ zCA@;3@Cr)AH$hK$1wG*v^n_Q?6J9|jyh5Jv3ML7!ui`RH#1}zNcm+M-74(Ex&=X!k zPk04A;T80RSI`q)bDY;Sd;v@nUSUso1wG*v^n_Q?6JFyTl<*3A!Yk+rub?NqzM7^~ z!Yk+rub?Nqf=R+F>$a3VOmT=n1cR<{$mVw<(*yc{Iu#J^tILMjL*- z`nV`_T>PW_TJ9TC0uRJLTKu>-c`e`&yd)K6Qt^)kKd$f}x!3LdsPQ8?e0cfJG0RV! zc*6Fe?(2?N)@;A@weO@JcyC2qr=rD$d_ai*iUg^v-%UN_gkLty3#E&esb9YXOZ}q% z%rgH^E%n#`r^lG(4y#sJrhelNDlmUT>6T^cr1YFtAiFaBpW(i^h zhE21uS6skx(QRqlmQ8lMQ}hL^MK#&Ug{s{>dYc_MjH^#CL?ed*z}9%% z#J5cy#sFI}o^F5UFgBmGslXr#_aEedC>eonQBO)FGmw zjvhSz%G0>~A2mz&|2_>j;Vsz}r$u*)KJwlG|22BG!JVV=)nUtVQO)32qHl)+sQS$Y zca1JHU@c^p7T`R0XFb;d_lSOB=Q%!lgTXyngFBe+6@4-Q6`iF+P2&$(2ct=-XI#q@ zLM_>}+%eA+^L^aB*)gvY^L^c%yEtwJJ9*~fxDn!$v)U9*z{!i4OV@orb+3a*N`vpG z9&qr)(zp00eZR0nbbtP0R;cfLsG8A9(O10YU7h=QPSobyhd6h95lu1CMPANery9Ma z8V_*u(Rfj-89jRNF$WGrnTwb+!7^-7ASAO3(DIcfO7W7pq%{~C})2O z>Wke5l(V0E1JkH|yeopu^sV8YbrqJk-vH(9w?TRPJy72M5X9S$A5Rld&i)*fv%doM z#V%810>35fn+N6Wmq9uE=^89=zX{6Q?|}05`=Gr25h!ne3d-4EfO7WNpuX5;-^erj zr=jEmC}+O{%Gs}j-+yd)XVC)X?RP8e!_B$6d{^afV*(`5=1j^f=g7WqkpuGJxC}%%g;^M3m3!t3+3Mgm44$Ajy zfpYe{VC?M2?+gd9e55fbZ+`~L+h2nEVz&YH#V%LIqtJ&1P<})elpoOmaGqbXTJ~1*&l&&_NSmZ z`{`&2>$nXlZ$I~Diu+m^K1ER8eif9r-vH(8w?R4kJy6d65Y(8NfO5m;pq%{`cx$>B z%E-KhOES!Z=IxgudHXd`-hLC*7rPE9XTJ~1*&oIGnzKIzlGlIs49@W{W@sgehZSf-v#Z9-5}l=oc%E*XMYCDzg&X)Vz&Y1?B^~?hHNnn%iFJl z^7b2`y!|#PZ@&l1+aH2*_9vj6{W++CyaM&bE_3M-clPt3oc%J0vmfsN8Z2+W3Ci2= zfb#bHpuGJNsG&Xu&Dmc-8uV*WU+l7PO~!u#l(Sy}OS`{Nm+y*9~Yc zc zy!|GqFLvE{2XpoZpq%|NC})2L%GqCnw_ANS;I|FaIh^QgjfKf@e|OVjdSQybQ7{^ z1?r1k=88na=Rs-sGAIpS1Et}cpfr5v3g&-__&%E@;zyuF{1lXkUw{(vYfvISdnFw% z`3FkFS3qg_Iw%d_0;S=*V9@Z~e*;(|ehf;)&p?UzB`6WU0VU#dS0y682uj0OL238~ zC=K5RrQv&^H2e@uOTC9 zsx8vGf+gZJ?@dH}9+ZeLgVJ<0P$Iqw>Wf_ml=SI?((oft8h#2&!!JN-_;nhVh|j(+ z(FX-kdZq$O#MeQI_!cM;-vy=N2cR_k7?g&efu`Y?kTm=Tj5U1hf8<(;h_8a`uLdX) z-v%Y(d!R)85Y!jDDX7C1pfvm%l!ni~Khf|7P#V7Se(pbs_&S><;#;6Zd>7Q98GsV; zV^AV~1}f@q2};9nK-2KKYZ47#1f}7tplSGY)PN=8+n_{zFW%Wi{1B9gpMVnab5J6F z1)7G>Te<$7=M0_8Th#!H{jZ;t}egR6vuR#sjY&+5L z1yCBk0!qWzL239FC=K5Qzn&fj|7QS8#E(IZpfr3H zl!kAB((r9i8omcg3G>GkT*OZx4f;7K5x)X8{xcs)M0_5Uh_8Y^WI<{8HYg3>1Et}I zpfvmhM8k*Y&m7h$TY(y7nGbrun-I0!*8- zUW4`>E!&}A9~ZZ10Ww`%fpn%iC}rIOrL4Q4l=T4gqCnMZ0jeZOC0$QRX)6j;QIHn} zdQqSk1$t4SiW-B`@JrC;HYi=4`%t2*tDtH4#)r87?PA+(v>NmviTEL?%1l9>bpcAm zuR(pW%ifTbRRE>otDrP|1C)mEg3|Em0W1+e1|{NW@g64Pm!Q7bZ9s|mLYKS5zJOIg zeX*;9((o-%8ompfh95#Vo4T2RXm}fcutfX{)EB$VjfsdafD-W)P$Iq#>Wf_$l!hOG z((q$Y8h!>!!!JR7vD@63PDFg}!-5VeNZBP1nP_36qJTvfYR`5P+#n_y+p$o zKxz0&kMSoFUuUyKd<&F_?}C?DhYdi9_%SFEKLZtYw*>XYZUaig=RTTf_#!9`Uj>7P zXZ~--dzgstfD-Y2P$GT=O2kjW+pRteP$GT}UTa&kALHh*fm;Bj;VYmtd>xdAZ-Hrv z_%7_JGoVsuAWxkE&$l9$pr_7&o;vgKM8g+BY4|GWsWYHy_%?K@Y4~0mmWUsMo;m}1 z>I^6mzXCmVrk{xTJm{%2pr_7&o;m}1>I~?qGawp1+xGoVC#_NGL{ z7r-FmNu2>bbq4g*8PHQ_Ku?_kJ$2?L?mxYWpRw6fXFyM#0X=o*=0wC7K~J3lJ#_~3 z)EUrIXFyM#0X=mFj5U0G|IJ~g&On|z^NB>n7eGB>E1;f~bxX{08>anL#4ri=ae&74*~@&{JnXPn`iJh=!o2&VZge14`1ZK-2K)DD%lg z#OFatpEBsFGoYu=fSx)7dg=@)4L<@U52m2x!2*c5eNFIX3$UlofSx)7 zO2oH7rOrT}Isu#2 z&lpzN-3;{98PHQ_Ku?_+B_h5EYN%I1rOrSa^li{nXF!erA?T?y;0@_d2mfOU`_45n!a#>o;m|c#5X`sodGqI^6ipZQXv;q#z0d>QoAnKUdB-vm8%2K3Y!P$GT=>P7q%^wb&9Q)fVF`0SSx4PO8+ zvHq%no;m}f;qCbYd+H46sWYHN{227q8PHQ_Ku?{SCK^5uO2d~yPn`ihbq17%?@a%9 zBI5gOzSgQa0zGvG^wb&9Q)fU=ow+@E5ns4nL2u>Ky$>IXwpsWr#&9>*WFW6UUh1V+ zdfwqff4;R65VyzrWvttEFj)C-*ZSrVK1UQ#DLV1cLrNDMIduBLZt2P+hwgiqp4;kX z`Y)3$L?L4q*uBK>$bjomo-W1G%o$= z$<+6(`-l3TegED1_RV$`w(SZMw}sURb{g$l_doRKTeB}3nOwnNoOI~Vx2s_I8VYXq zrYT!dcRl&g88q8NPd;>*rg_rIyJ!Bo3f9sUy;A4oL(klvIsTiUafi6s&pa<({QxfT zxeqw>K+arvKsa;#0f(N+udpOA&3MZ0iM)zhBO+<3ww-8j%Ax(N8c z+?wM*H5yk+>pb*I$BrI)76ng_hH9+$?EH4^tTiQjrN2M*&@;Dd;>LeXH9nV{lM6hs zZ}q3QXh&~}(n+TsI(yqt`-ZijW_X}gCB4#}Pe1g3sBc(Cr&l_U zU)%d*|5*Lz9_!J)_ebf^&e$HCidZfyUbKRm#*0?;N}o96(1VXF-hPBgy{J$+_`pLa zq${@{Im#s*h^pMla={y*x!`R`E_e@=3qAzpf=@uX;B!!)(Nup5*IuVnzAiJ zmj)L+9o1mD;7w32cn6dV-UsD^k3hNLQ&8X07NA`4H7FN6`_;q+FMx8vE1+EPI{2lu z1;e#qx!_$;F8BbH3qA(rg3myGM_Yn&!8f2>@Z2nM!Hb|=@G2-5yaCDuPq$&Y;5|?- z_z;u}J^|%|&p~}hTY+-HGha(w@H{9NybQ_(uYq#Go1k3q4mkUPeSqr2=7NtPx!_Y! z-_e$!>tj$tH~00#1uuef!K z;F)hEE_fc43tk50g4aN~Gfhw~cn7@PR+7i^5*?@A6a^FHAr#}}uzX;0(uYw(mg=>K3g0~^L;5|?-_z;u}J^|%| z&q2B1t9W1Y#xn~_qr>U%JSZ2uoQCCs*FbZ@n~+UZ9Y`*CA2b(y1jz-Tf))$6h&Mhy zKK&Y!3!eRU;`J3kx!@I0E_gi+Ys|Jlx!_$;F8BbH3qA(rg3myGM_Yn&!8f2>@Z5Kj zfm{UTf>%Mg;0+KLJP6P>EEl{7$^{>Sa=|B{T<|%l?`SJfLp}3dcfs?J27MWn3tj^? z{+pm&@XmJ`|N4$LWV4T1P%ii!lncHB<$`CHi3^?w<${+%jj|f3QPu>lUpkOn@IGiY zXVDN?6`q3r#R@bRd=1Hi%ziI%RtunZt$^ki*CF$ZTabCBUC8|60i+X+LGz2#(G1qd zttBYOcmv8WE_{Dm6sV#g6$Pm%NJT+j6et&b26{!lCmJ8kjRaO`DvOu}u6HqSr5|j(R z0p)_{en4}X-(3Xdf>%Mg;0;hNc=rc9f8>G>*en-(49W$cf%=ZN1kDA{{4jCB^PpVt zGAI|k2Fe9*f^xyTpj_|)7+mo91sE(Bd47MT<{hs7rYC~1s{NN!N;In@ENGjXv=s9lcO6@ zE_m)IbX}S>B3i6T<{(!7kmiH1)s({*k`l_C>MMU$_3B09f+A z1$wFr=&3HCr@DZi>H>PI3+SmXpr^Y0oOV;H3n+D81*PsA;Kk|lL;ts7$@?BCc|Qat z?;FX%C)x`3YQ0!rQ2K+kjmrS8)m*i&6VPjvx3)dloa7tm8(Ku>ka zoapkt0D7tm=&3HCsrwe>nJyseKFq&E*q^QuUEb$GPjvx3)dloa z7f|ZH1A3+l=$S6Z(kHsSpR(CgT|iHD0X@~_V5!9 z-H*Xo-N*WW279Ut=&3HCr@Fl2M3?tPP@1O-N;ot?$(uIlsV<3+SmXxn#%|LCBUz@F*?da4Vkp*{tb>H=xduR%|BxgZ(;1<+GnKu>i6eaM2I z>2d+>@2M_q_EZ;8U)UC)r@DX|W!cvxqpSd0zf>S~MjcemTcGOO1tr-BpsD-x7?f0= zffB;Y?YH>PIOT2?A{Y-(| z?^8Bsf|B=D&{JJNsrxqQnJxvMKa%%DHY?Qyy4mE-0+hU8gOc~zi#VD6dG`Y7sV<H>PIOT2^i*97!b7tm8(z;7wj<&6jq0{`NND|mj|{uX>0 z_EZF75xM>5kH5d;a8wEe5Q1wYxq1U4POSO;cFlo-tIqGBEAFK!?6!Z#E(F|qMw2i z@e5F|=+~e$e6~!@?U`HvrQs`}G<+SDhHsUb|0UwPY?g>0fD-XzP$GT?O2jWgiTDku zSM<3z@vLASY`V4xO2bz{Y4`>x4c`WXhUfn4!4mO9P$GT;O2p4WiTD*L5ubT851C)s zlmkk`mqBUx8Ym6l1f}6Spfr3ROiRR%V7;TCf)eoyP$GT}nuyQ7B@yujP_O8#pq{V| zP*2J>C=K5OrQwI5UeTu~utfYEl!#w}67iWzBI5I)M0^>Ph_8WqMc)La;X9x-d>@pC zAA!>FQ}B&nvF{HHSR#H6O4DU8Nkn`Bl!&i@l0J1%ujpH#G<+A7h97{^@MBP~=x3nh z!7>d?A8bI0_}rz5h%bT?@l{YFz5ziH0v$x&I{Mt8CVwX@C;( zZBQb<2TH^bL5cVYXs_t!kTm=Xl!nh-mT34qC=Fi*O~a$VVRd*Dl!)(u67hXdB7Ov# zh@V0>Pc0y6_%&!6KKnM>=EvdYEP$rrEAhsl;p>oT_;l2Qr5n4TMEn4hh#!L*vola4 zehEs%Z$N4I+}jfkUj(J$tDrP|1C)kugIA|-3zh7_67fS&@8~C>MEo3-h+lyc@tIl> z@!@F(O2d~yY4{qbq22^d!*?K!`Fx4c`W(;nTf%4-@f2P$GT;O2jWgiTDjD5udv} z5%EP(8ommehHpaB@EuSZz7I;nk3clMjXzi-ehEs%Z$OFoTq6{)$AzmqCg68YmIp1SR4-phSEhl!hOH((qGI8h!yv z!>>VU`0SOY;p68|0hWlbfD-X_P$IqsO2l_TiTDAiSM+00ujpr>H2e~jhTnkF@VToJ z4PU&9=Z{2umCX|I4NxM!4NAoKz;Bs|AA%C`6Hu?{=b$wF3Y3P=G!qS90Hxt8V9@aB zzd9@t-vTA#yP!n;0F;OygL*|j10~{@pfvmjl!nh;ooM(XC=Fi)JQ& z9%lo4oXxd~h|hx_X9Iei4Jbj>1U=3M^f(((l5Pa*Mf?=>FdNV`d^%dg9%s`|M0^4C zI2+L8Y(S5*0VNN*p!CcDl!h6D9%lo3m<{M*HsJMo{^hPqM0^ocoDJl0HlWAZfF5T9 zs=Fqj$Jv0=@GDRnKJ$S@!xumuR!PGW@paJSY(S5*0X@zJ^f(*P<7_~WvjH_`HlQ?o z?t?sG6=nl^m<@=A5BFaKR-6swaWXz=wUY3^ZfBR z8#a5K4d`(;pvT#O9%lo3oXv-PBu7Qi<7_~WvjL^y+n|TpfI-7^{|{l0vjIKM2J|=^ zP(wX)gNyh)q(NT>JI|Zed7im~=HjpG}_Qpi+7C_hgpegG*q~I6GbZr+hT|0nu zqA}>fFQA0=5|pssq+u!R!iTp-fhr18QILv)R21YzfnF5oMS)%vsFHFYNi=-A3QKM` zKnd$MC}BMW6=wrk4d#&5U=HrQoFM<;BRZt?n0eYMb=y5in$Ju}$XA|$BI2+Kz zZ2F0Y&x4xX8Z-LVAT~Hc+07}D;!Jy%}|7Ng6{1ViQ_zh^!#@r_p5nlu);;W!U zd;^q*Z-dhCJy05c2uj0GKxz0ncv1SpVg6si67iW^5)q#VCF0AVM0^dDh;M>=5#Ir& z;rpO8{0NkWpMuix3s4$9y@nM{ll@d8;tQZedJTC8!ti8&DcP_vu8#7r|H% z#r}U4mWXeF67g+Nnyv>*#1BD<_z9>N@pDibeg*19eC9KWhR=i2@MTaMzV;dPm-IoC z&C&-QP$H%eO2m&qiTEif5x)TSB7P0(MSOPT8omHY!&g9Q_&R7Bo&_*r_16HDh#!Lz z@iR~&ehKPDeCD&sVR=v*z6?sk*Fb6bCMXTx0j1&l;5X7Hl}E5d{1nunS%8vPYfvIS zds`yn3!q-aS3uM7bx0b%1xmwrL238_C=EYO!xHhccxMywOHd+y14_i_K9`92B4{GM z3fVl>fTZEuplSFXBn>|VO~X&(jX}fD)1XBB3Y2clj1v)`2PNXmphSEPl!$MF((oNn z8om!o!;e5|_$eq2zW~wj;rX+MHIlQRPegnHl!&i@67h9VBEALcMSK^Oh97{^@MBOK zegVyg{0x+aUxIoOzX7G; zbN{A6#`C8LYm`+%>zD?l&S-Ph_8Vv zs|k8ppfvmdl!l*z((nsV8h-udH0@;~K09R(!vZJ~UjZfJo1jE|2b75KgVOLLP#S&; znucFOdJ(??rQvh8OT)+G50;3pf)epfP$IqqO2qd;iTEif5x)SX;n$#E#Am;fX!rss z4PODJ;p<>pBEAbt#1BA;_%SFEKLaJ=m!Mw6Z$Q0>&wZ7qG{Ij4rQxffG<*Y;hHrzW z;rXMvutfY2l!%{z67h3TB7OzxMSNzKi1<7x4POSO;cK8Yd=r$0?|{B2g z;0Tt8pT>JA`U#YXUxRuPpZ!`Q;tQZ*IR_&O*J-vXuKyP!1uFy6s5e0l;)#Lq#A z_!X!Z@tLnDB0djF#Fs&d_!_7e@l8+~z5`0b_d#j+5hx8m1*@+x|7!u8h+jhz@!4-A zBEA4h#8*Ix_&TT;@hwmqz6(mj4?uf1jv>8>pMlcw%Wp9MOT=&3ED@iZCnCNGO2k(| ziTDO65#I*&BEAPo!w*5dh@XJc@N-Zaegy^%&;6JAW+LMAphSEbl!&i^67fw?BEADk z#P>mI_z|cV@l#M5egR6uuR&?}?7wsWNyHamiTDaA5nl%-;#;6Zd>536AAouhKL+(8 zeg;azFF|Se4JZwt`<83?bP<$@uYwZsO;AtR4k$g=2PNW1pkBmJL238}C=I^`rQx#+ z&hSP1LIO&|SHREy$o!8wED_%VCE~lFMEn4hh#!M`5kCVZh?bx<{05YU&wV?QbVX1a zz6wgiH`1`APaBko?|~BWLr^c`C!j?99F&M(fszNA?&>L5-OXD0S5brQt_lcoEP2H-#nQ7odswH6#(A z{azyC3!p@N1(b-dgVOM=cwf`-T~Hc+07}D;LA{8dfw!hZNc6BEASo z#8*KR@r`(65b42J#5hi})!h4Zi@T;n$!vd^)>IM0^31h_8SW@pVulz6ENicR>^J14x>9 z4C+Pv4Al5vg3|CCP#V7QgD_;n_^-ec@pVulz6DCecR`8x0Voka1~tlNphnpew0_w@ z>WthElbRPn)wlXX#=k^-gUu%5+mIw^50u;;g0A;LQ`U3Hl=TWSU7PulDQn`|Af2cT zN?6xG3G3#MC|}CD!)7lE^rAo&1*s@VMXi&fATJ8^qChVS^pZf8)L)~2CE}-S);seB zC}F(@C9DfSb`f8JtOj++9F`U&4c`S-nIWi?PC#k+IVcUEUco9W^OJ2^phSEHl!$MF z67d~SBEAnw!;j(}Ov6t>Y4`;w4WIcbcZsbVn+Grdl0ARQutamo_z`%yRd@xdAZ-LVAT`<=0vHv-MCE~}RMEneth+l#d@f%PgKKFAM@lg?! zhOdIs@C{HJz70yl_dsd*;m;ZWdJ{ikvqbzHl!#w}67iW|BqBZ!O2n5zy@;=Y((uiA z2h;E!P#V4uO2d!9Z^bX-;@6-=d^U4G7x4v9BEAYr#5X``_%Pe5t-Irx7i;#aUleCF8wB8m7sC=p)sq?poel1=7z$r-x4yXtm$Rlt-kH7&v0tfU69MB_hK##!r;3+Qr z^PoLX%aBLlfU)q8hg=i(5FF4Wa6rAiAAuf$19}7w=n*)eN8ofQSP?j&N8o@SfdhI3 zPUjRtt}KhP%Vxd3AAlZ#14{VMKnedPDB-^WJp$)?uC5=HZ4vYc9MB_hK##xygYaj_ z^TAF8uSLN8o@SfdhI34(Jg$phw_Z019}7w=n**GQ(XAxL65)z zJpu=mifV!$fdhI34k#Ts0zCo;>}Tcj!qQ7?&?9heWJug@t_tW8IG{)1fF6MZx*7td zDF&c~&lvOw9MB_h(y)i%fD-<>51-<~zX&P<2l5CU&?9g_kH7(4z=Ixv14{U>K##!r z2#0Z-#P?qT)^Qb3!oLoB1P16Yr}CoR3nPB5**DzyVG86LJqL1P8K-ssnih z4yXtm$Rlt-Mc~96gYaKN9)a^QF2M473!q2ffF6MZ+K?sW9`+C%&?9g_kH7&v0tfU6 z9MB_hK##!rcruWSphw_<9)SaT1P=I_^eBw)9;~DjK##z=iTmaop}u+0BXB^CvKpvS) z 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

)VmQ6e z)FZtg2Br4}PMBCqU_a1(e>;fYSRqD7~KtrT2@V^nMwX z-e>0`yB`5%_XSW>^yzU}dS3>m_tT*CzGfmgy`KZ6_f1fGzXVF}GxtY&KMZP$J`c+7 z$3WSA3HHRV&z0W=n>HP>Oy)S^8q8|rk_hnFa zKb?l9_cc&+^mCw-_$DNYUjilZnIA?HKMcy@^Pn7l43xu{Kso#r=-!Q0$T~d!GYe~u zz5z<&7eGmT3zWnUH6n@6fs*)9P!3-Nu?{j(#4N#4mzhaPGPc z-smv#E*lL_%bMop9Y=8*C0v!9H=S!CMbu`{5-l{!=M~K56a=k zKGEd19BbJ z0wjrVfllIweo5WvmnT6tML%i|T8A$}a`*{Q+E@YQ@H3zsK3#{^X6Hdk{30lcUj`-d z*pJA-&F3Mf zwTqC`+GR)yWq%{FCjSvwW?cYf*5jbh3iLw@P+39B3Q|^(vVwe8i;=^RfIcVC&$Px#1BKR1bN7nU<{JOmp~P!0xHoN@YYW`|Ea^8qn`(r z*COci`duXP!=NO-0BVYU9F)VCK{@=iiQpW*25O3a4wS<$reR6^GAN19{yviU5l|9e z0G-5_AW8fbD2K0ta`;(LQ}hi`4!;P>;g><<@TUH=OOeDEKuP>KD2XqFlK5#*5?=!~ zML!41;hUfwKJ$mj;fFyvd>)j;kNtu9FG+lf!;<(ZP!eASCGoSMrsx}>Bz^(Z6nzVn z!w>y2a`+r5haUyy@I}x%Jner1mc&;;N&E~biLZm2qMrvP@r$4&ei@X*Xa75L_z_SJ zUjXIsfewiEQzm!nxmfwCGm@(Bz_r`#Ap8$N&E;XhaUsG%=CN#h#467M~Xm?IWpmolz?>H z9Gdcn%0RC^EdD!m(2mKy!P~+O{L(#Z)1k|{;0Qx=P zpwq=Nr0=GtLB9ta)Ub9A)UdV*{viEFJH}gr{T}d#qjBvpsBvu`)VOvG)VQ_;YFs-7 z`aR&F-vbV6Sla-<;6`%`;EfL1e;JKyhaQQ>wK-7Z+EGyB+9IfN?F8uefP;PyIH>QY z>Y#?T^Pt}Y4r*At41Vb+&Ofu6y?$If0%}}a05z^12Q{uOgBe%&X;9IHShldta0r)sBvu>^n1WTjS*^~#x-vbV6n6m`>J>YNN>xZ?& zphg3EP{Z1>H}6gRaczmi8rM#N8rN1qjcaE?$$kTr;xB;m`WEQ-fDi5U-%aH}4Qoe1 z4Qq>_9oCxnKkUY}6-eXS8PM+m2Q{u;1pSvxpvJY?x9s)f+7VFSO%*^5YfGU2egM?4 zwhG>!c3)1-!W!2$K#gk`K#gl#puU?Lx^}N0*XBUAnNd(9jv}aG?F6V{Z3Xmuz(MT+ zPlFoQ&VzmrIOz9)gBsUn-@4b2Yezuc@B*lD?Kr4$Z5h#lR8rC*IzXu#-SZn8BTCm>( z{x;g)cWj@S1N|OwP~+MnsFpkdYFt|Z{T^`8?*Rujtepq_9&pg_0e>6Mzs9xMx9|1i z+7VDqy#Ts#?Kq@HUk3dia8T{P25MY82WnWm2>K=qYFL|n2RF@p=S%&Mz#7*UK#gn1 zL5*w6pjz29s8&`3-F=yZbTgWuO1=cDyqRJ8N&Qtc&<$(z&_{mi`rk2FBf!#1+$qov zHmi^uY|cV%sMmnpP;UX!_^t)&3!|ay_WHqQ4%D!A6!bZPccfjhreI|SDJw`>LCOm9 zS%E&Q|60ik^jU$*st9UWTLJwD6ijQZS%)>&Tm-cT9C9VdzSEar1k$*+0ID!0P^nIV zx4MN|RnYGN2bEO=^jW==_NOnWmN~3(Z7xUaa9^{Gf*RKrL5*uCOawQst$=MpoX<&&<$(TscBf_+8U^F?HuU$fP;PyIOz9)kMKgc-F|sB3~F4P2ld_57^q=w z3G{owK@DrG;P2D!?-|d+8rL>JzXu%DxV8oQJ>WMWOK$&24)lA#L5*vRpoX;*px*-y z`aR&FhPCNBta0r;sB!Hg==Xr%NCfQx2Q{wEgBsV4fg0DAK)(kZ)UdV+`aR&FhP4gw z0j+;qfHkgdfqoBoh^W2aR&fsWd%!^_@kL1AO-+D)4>;)efP-@QI_UR+gL3%AkmpYl zzszCxa?IxGErx8qBcR^{4oc$3K}mcW)OS+`@bv$g_s|D? z)qT|iO5*dN-vbUx;!B_;ehQStS3xZ>n+5gVR0EX5FMx9R7AS`wdN0qPBt8fGJ>Z}u zz6eU@d^D2X2j{T^^od%z*T z2OPZ3jRG2=-mnXx-jpp+4nH&+IeZTEd%(fJRNVWo2utE8KuLTBl*G?~lK494_ke@? zZfX&f!!Lt!`0P!Q!;gRxq5>#~A5X)Q_%bM`n+E+JaM14o2c z%Hi{%9DWRx9+W`z!1~t|EQzUteh)b4_ke?v_ytfB-vagB)X**7;d782eiZb3z(F~D z1=Q`DxrOnEB)-mJeK|D`O5zvIc?;udsc}f(O_f3I0f*%9HBfuN%|ZL!R1=cJFMa0<0}jgJ>!9BQ4yvgyg3jTWAvtmOgVy0~`yYYT{tKWaejJp==Xqw%BuwWyga`>T-5@F1J|CNLN9&k_+UjilZQ=lZi z3i>_ZpuU@GfX?9;AvydqD2LCEM-D#%`aR&|)W0OY#9>MN6ex+Wf_@J;D2ZPHCGjm# z4nOp<$l-IK9DWp(!xuq0d<8TPZ^j=puq3{2VmOJP2PN@~pd@}7l*DI0PF+g)LB9ta zl*5mMeh)b4_ke?b5BSG<|48EJI4p^8f|B?pP!gZ{L?rRUpd>yI>bt2iP!3-L{T^^o z4qpZR9&pe)ym|ka7;b^t0w{@Zfs**4QY7&?(C+~UCGka24nG0P;VYou18yQ{4>%}? zZ-Qw_{1PmQ&)gnK{4gkq&x3vsI4FrPfqoA-D2K0teh)Y(hi`y>4>;%?KHUN(@k4h+ z5}yP89&k_+Uj+Rga8MFo0p;*BpnEsgAvyd!==Xqwa`Z}mJ~I(HJo_&riO+Lb5fPN1+D2H!>a`>T7MGl_>jl-MgZxr@>z(KzU9F)XYKuP=zD2cCwnuwnVK9exDzd%(f8B)$ae4Lb$O$Eu(teiqb3d;|1*z(KzU9F)TkO-2r%1Lg3e zpd7vkI)~@)AHb6M3Mh%60VVNu(C+~UB}9v$Bz_r`!)MEp!;gS|4>;)efP+$>GWdG-vbUx;+vo(ehHKwWIhw=!7wO?$%B3mIOz9)gL3#OP!6B2!jkw|P3_?h6m%Ly zcf(kv=jgPP=_ZGqOfNxBWiwy$Dmx76+&n0k9s}jlB~UIs1z$G zSIskDj6Vu?}COZQr2Z_6!7rK9`w7uL23IkXtdp^N%m`zw~v5++czj}9|xuFWl-8a4NBW7gOj(JepJ_btLOQ5uU z3Y4~2L23IesHyh`n3lIM!1DGMsJZu{Z${dl1EuYwptQXRO4}zuIZy?Zw$Fgl_Btqw zn+Kh?r&EitynPvz?PR}&syJ;Q0j2E)P})8YO54kzw0#nov6(WgA%Gdh_>73Zw!{Vmq2;@6zH_Q z3Q5~%LCw84Kxz8|C~a?n()OY6MmIbMO4~<4X?yXz^#Ahq2@X4NuRyM&nt`P4bqAJzI~oeFTC>qHI4Er|*Ny+U-y@jju)MtnYVLgwl(siPY5Ni= zZO?o!()M9c+MWm1kjFr2dkK`bPk~n3dH+;ldHXD=x%UPrZC?PT?JZE+KJ@*lspmka z?W2$yeG!zlPk?Iw6;Rqf1Kyebrv2Wh0sA%!%G+C@w0-CYk+$bRY5OQBZ7+iAnI=HB zvI^+#%M7HOQ3v&q&Zl7&coCE?FN1FGJv$dE=m;p?Er4F}L1)%w$eHytkN zbpa*TRZtS&0NvdC0^~~2f?NrPei%7?4pdMVNepE2PN@ipd`KoO5&$L&AnGaIeY`u z`k4h#4&O2nT%`^D#5laZnt&zoqo5?d2uk87KuLTBl*G?~ntQK)>3~B? zvzKDy#<#>`-RV^Q7k&J1GXBe+Hy)K9f3R<$tNUQGE7f;J{}qE>sm3q*F5X1kon5J+ z-?fF69*n|f+QV|ci^8(4w)1K$VTC`f2|Kwfm1{*O*474^-7-;FHQe-2&(0@R|FY(M zF8I$b%KEMpVf|O^uq9t^i`Do`l+a9g1quDl@I!4;YRgfSVtZKbp(w1;9#&cjYdsXs zJ=C+~xl<3frJZ>=I)Ax6tg;d|_DK7Ak3{D+!lysnv-6Un%%-;cwGw6Y&23@1%qD*? zOG9m8g>dHKo;Sso!)HCx^Ws<~9Dk(e#FI*2iXWo+Jf-JgGM4K8x739De8fgR#tsd} zQeW*d38rqFTz;hIJ+a`AKaBM+@&p7gS)X3cw&g&UKKI$-wy@0GqOj5H+QJ&cQCR(5 zZDED$qOiqxuLBeA3nh>9H{)RP?Xi+08VK=si-QdD#O8FZ%sVU92$12?z zr7#+{rO+^8Y4`NZwFef$=)_igSYsuuly6HklaJ1;wucefU+VCCbl$7{qg-1FobiD^ zEcc%1#HIGI+DcgIz3qj0Z*<;l_`|+nXMEwNaJetoac1V0wy29Yxu{g<&@Hw)pG^>2U}y+PahFHK7M5Vfz5Pe$#wmo z?oH)>xH*-ZeEN~WvwJQl@6G=z7t>)Tds5k7cJ<#Lqa6pSgLG>;a!0KHlQC18 zWLN)0YzP0Pzla}9asFvtU7Kw2>=~)+!o{t@mh}5DM zt)%{kpLg}U)Vaddsgv^!Z;RQoq++QbFLb54`eUh4BDnxg`jqM9DF#Poe&LFpy2(a3 z+I+S#2D^x3^1dm&@t9zLtPp=`?h`r{A7Q;!YKf36A6etA`JPwIC+i&8NdrQ$xg%xsB2%HP7U72T6E7)AVO z`1xalT^E_8-En&k|KVoa6EolMYr8|{$Q?22cyL|+WNaX2i=7Eyvn|*ap1UnLX>*gR zSQ~KMQRdj?gYlHP7Zt9lc}IBDw&1kDWLydF-4>i1D~Id02fH`Bo4nJcK#hcFZx4>Q zvECKFczbZdi_8hFd)8FK^}Z4Hqzp#a=02##gH(-d$G%4~29BowKb%*EL@n>b;r-i# z!PxkXJA$o!cj*oj^R94UNAMVmcW_5=Oq`qX{2jrC$Cz?_fM4L!y|Oh%amNWec6D>4 zovAtI!r0E>0fq&eQ;nazkq5-Ili8o|B{&tol1Cy{b05}UdL>W9X1B9)eQN4~SaNg! zC)RCD1S4x`$ZHloj-T7zmHOKKo8#$J7dMg#^4AW;jz^2`-xb`_9s6VWhGg&) zTN%H;-IU2x24zonr(*rHb~`1P#HYAEaXEbI)+ersPd)m?h4CrSCoYap34P)U`Ltf2 zxJ*8+)2D^B{n)FITrq(g^oh&n(?)&b+WFL{PgDS(Ht7?!z^BdnL{;#qU!St}(~oCKmrhk=RU zre-bUs442)az9KRTiyawrTpqNtn8|ya%RcE$@S=SIeiu)T-tE zFm-DAY?vCgd_J5Fe|~&$OPuZ_yC=9KzHm=?{@!5Mg;WYr2F;s<%i$-naG@?bPJ5q2npy$+xT+-XX86IhG#yw?bz-8pI?{kF;>yu0f(=i9*8GX>r*#R{_7KiTWo!7Nd>R4 z@Shh2|FX{1(1TA4z8NRWFFqr9^V&qe(>bjnrtT@d_izT?68+?8!q?YqrcXTN%pv#^3m{=7X?{! zeV=+!aAfD>MWG+Fw~ImzUq_>~xAdF$b(wcY$Bp69dE(^rUJ~RE`&2zKJm+P>m0MhQ z$3t{s(r$Z?rT%imG|L9lYh5r(q9-kNrEB_cA6At}L@cP(WKmD)4K9l=N z{}w#w_`)ZR5%%95JJ7X-Ywb@JZ;1|Uvj@IES@^f$iE&Ca`J=0XC&VbsasLqTKbMe7Auj2fU zLn#+NFnPrrgMW#|v-i5#e@X{uw8t)QKa_Ie1CuYw1pgWfzjZS%{OfCiGmdOaxV|mC z@8)3dx12~nMv;H z^WyO(r7-gD&iwME;KB#O<#z{-cs|Dn|UH^MKD22YRkuWf&s+k&3SQ*Xi+;&ZBnf4w<)W_zic zM;uDI@PY7;HwW*dPYvIF3&W=T}|Z(hmhsYmZ;)JCw4)d&Am?g5Src z!Yhk3{>F#tC58<~0Jo2_+clh{^(B%yq9t_{{k>E_CTK=Ko zlHtpVYE!-Dw&27a`TI7fZu&^9|NA}M_*U1U!JcG1HFn?T{$}{4+k!W`*{<-(9}ONd zb@W%`!Bytpsqr8c|KqR1N5+E}$8zC|KgK`f;b%S;d~HMJog1A6S0{%*9-M04%i(7~ zLBr&Lxxc7lXT@IF`m9bL zi1QAsKF*v@-_;j4lYiyM9ZIfCwLZ5xN->JUyaU4RqO3`!X`_Uf{em0!?9T>AZ<(h% zTq$GL1^>1c92@378{F4khI7}J;oQTNA&TP4;G(Q8gN@?K@ZHaKmca$vGHjg+KG0r< z18d80;4o!~qPQ}+C~M1Lql7nok$O1&^T8+DGHIT(CX@O(otadlC^nP)VKT|OOl)Oe z{)LVUE!q@9d!g5VA$aYUuUA*!&DPnb4B^&0gXEUAO`+~Wo^~fTu=bpy3mLvM7;HNy z>q5SCXYjbTbLx+^`5aN{IH&AFo?HnYw|#9sSsP*+V^4Vfoivt@R~WghEoJj8n{Krd zT+$X&bs;BwF*tbc+H;CF#H8yg^{mc%&$^Sja|>G@TvK87Gi`=9eJOZcYHdi?hL~hG zF(GGsvA1u7eMI)#4AwS{{Wh6nzZ{&`mQ2}(m}L5tOkdx6lT7h2$>d!!xi1G7w3V}Y zhRxtdUkm{I>r|WJ^X>|s*q*Grr}h!L z>#mMRsP0a*k5JE7gM8b?7hQ1atHIfA={8TXIkpICD{j?>M8z$i(plW1JNf0+j^bur zhPJrhtacPP>rS-A?f+UZ(N^60$+l4SuLV!N z@JS{i7yX>@hhO6Xz2@t|$!*z{ZLILluLnEZYA5eP9{f5NxV9k8eYS|HyF1RQx{%l2 z9X#<#YtPBs5LcSBqX*|K+ZgtB7QS_&&Ej`=GZLzOKD=-ycwJi|sxHReGaZE}x{yE5 z1eb*8&jim5ufHcay{$N{6ILpRLi8jVy6@`SZ;I1Ap|d!38$FDFBX~kvF^VqaufNez zjI0aEbe>b+YcKBJ&U4BxaB$E@}%YA8#+82+p7=wtjW-3-QU-3Yi^)3>v9yi z$3!W*C~FieZ=-}C`ew(Y-*lI6AN{T0>Ui{9Nn3CB(ZBp#!H3(bwd#U5&juH7S$p@Z zyX}epI2-JIT-(dip5vaY0aM`e?#>%sbf?>VXJX~nM^pIs2QYECVhs@g$ z^6j(Llzoh?$u-r~I?g8h*za^yQ{5$NtLgpU>8Pftt#(=c@reVs|aqp*w#*yZgjEDot+n3w^70`);lgX z>xyeHcK`P}F1GAWv={rD?*&sUm&DXWER|zw0s%AwhTYrE{mtxH(`Id?#qCj~@U7nu zp4FB{WmWJa-w(E~T)aKIuqyb19|SKn!Xo?D}{kc)q#B-X8_mwO?Y3xejXEU*Zwr%#VYc+lpI_ z;_L|XKVb;Bww8*kf*<@z$Hit{@Wu1NhuRdpxy9xk`zejL?YdmZ=|2t5X$vX3kpJ`3 zV1HXk)`fiTr@?<6{k^Hxx6!?#ZB<PML znigr3$=k?bsWX`-U(33C+8ezG0@JYTvCd?wHgbq+o*KTS+40yGT`<0RYIq01ZI5j> z%F6ap%pG)$mYZGnavy4TJhn}D1w6KAw2hCe?i~BX-u8>&wsY6MZL$e}f%dXmLFZ*P z`Lc&*_Ksf$=eM0)wjohZQ#{Pcd3W-|ohLVYe9rdmR`2P|xoV??SN_go(A8KvKp5Fd?(6`6j+NzD&CLb;)wYW8W;X-il$`flF zP;s5Dq6>ZkmbtcNMd}ronQe66f_;ql`wx}X(ci8eL z4~7r_n(5l-Js7;d?I9^{u!Y<7n~qUaeZ38N$!|K}KrZARo#$j-$Xw?+&0d?@`o)eH zbJd0XH6d+{zGy?D7L@Ppte&hpnMQwN_>;w8TU*s<-PLgq_w2Sx(X#co_VzVh{n>}$ zAAcK^+G?n^(U$zQ-*t#=%cf5G7{&M=pvQG2&5gFKYX;(Vn~;lcb+Ng@L|R*zx+}3Q zOzig^RiAf-IsNyHe%9Jk*@gVm?}LACd&rA@_5$pCm-zy^r@l26X`4!QB~p0aQgGHv zCD`EXrYMc@-Af(s-R7#Z?^_BkZ9BWZ>g=cT`d=x!O}rch|5aN^mZ@N;4BNvW{~>sM zTW~Q7-Wopnk8axYz@LNng-`tN;PkeaS?dU!)HVMd+}RdVjY77BfBsAG&pTS1P5rEW z7dBm1+?P|@PA{&Uo^*4Wb$fnvdtCjlD(dV06l`31$GQ4lNhG}RpVl#Cc4@iHYYmj!iCz4brWQK+tP7sSCTO0+;YR`634eSH1ov@x!5aR7fY;~ z=du;ibY--`Pm3k4SvlKw&`mdHc_5Z(e`vFAn6xXNcx~G`EjMB<#5>N(+ky4u1M$RQ z$DI0krkJL~baU$G*?YETBvXu{*!M}xMe(=Q71u^_^VwJRBs%8QU9jz;CVCS4%x!(3 zC-KOZ#c2MYFLF~gcWJ*35>Hz7&439hL?OvU&hcv!iHBAyV6dB54OeNI^@-i#&Fd29 zwFOsJ1+VW-Y+M;-+OrE$@SYtxhLJt1x>-|(j0?a0F^OZtH}tN)V=i+y(6O1HxjylP z_ROPTZm6$bmv0oZJG_5A#aijzZMH7hW_$F8#4Fm;ZMd=9{*8$p;RiP)E^G^~tOW07 z;v}9b?J`%^R)Q$fTiQ;~xDb0$&5f(umAhs)dNaW;^%`Tt_S7q@BAslDU?Z))%7Tkz zuktf}iI=vQ!v()~GgtYPO&wR+aKl6!d`D++WmWKFHg}v|h=Tv7J=-W`N4T^(aeiBH z!wns6wl6uNqd{rlX@kQf65nn+JLk^M^e3Lv7P7d_b{&N54%Z!-IHxVR=7KLfvg5?k zsuRE4d1B55Cy(lAor`V|YIFRrqdIe375vAeI_jacD){e@?g-AU1iMy}IkvNvEV?nO zEx}P+5(nCzf|?7q?c-m!B;M6lB_$W!KR}J0w>7c9EjYI-_~1UKqI)UXGTcnG@RIF`V^k$a z+bZ$B{-DXU7DZp(f^Bi4klkUpqocGr7u?v9cum`V&bhZHb+|SBKRXkjSXDrKr<`Q) zNNo>KKQ567U$85&>iZJgDb?EJ+`WtDw4zofozmJk?GJWtZEzyI>9{rTcUu&vDl0|# z{c(xY+p?*xigW2>5=XZ6{H0aF=4y8DHI1);HnqQdaxNy-GTD~JqO(BT^53^Rk!q{Y zMdy&VO|DCJJU2BLY|oxac04zwDEI|!+2*2<-Qnm!N7uLL^xUTVeG|O)NvXMDTdMxS z#CzKkFS%e|E60X~;}gB%{ex?okg5J$dz>d9-%pF}n3pz*)%tv+>vI}4dYje{_c}qntyv534A?VuQ@&OrnUmR`G!?@?D#V}nyMxoR?>OL866LdCKOiUe9gpJ+qSB1(t)2u0-2Yf!KfBKAxCYJH+2Enh;HsOI zv%w2zbv%enSr>BXK;ryW6IdoSH}Pu5V+^+9sXDXEtAyHR=;mhcKY)*~tql8G&eWxn!pRsTO%m;*>uy*_Fmk5UdP#*jkdv$e_Thfn~ipf zf8=qUH@eHWklo?WAJ?IOnsnwypSo&3->z=vQ)hXFZa8FV437t=f3$c%1_6dnS?RD>-&dL)Km$rpe z-F)QAqn|oIv9~Qwvpvpx&hL20N-O0Lm(TAgKy6j<ccnfv zdDoK?FORJ+&YN96tXmJydUE248_dTpvx>hMzW&LH7p?x>cygk~mgL)?!f6xX){7JS zH)NV-2g^V=i9CU zJ?DOgmE)HW1j&u5{ie;ENn!e|l${OX1861DVBBn+%WX*ZrG7aXzU{Ka!T9%n9^QRf zVjwmh{`#`S^N;^hfoSvzz2=;cncvLkIWdc^&Ec;8k#(s;_^Q87?0!Lk?f<_e{QK+> z`1xKoxtblS>)1l!?m*jkdUju<_T4 z?WS0N`D>Vp!Gnl%`{#C*;=w?d==oU+(P{C3j zy4BJM^nOb@=mVC9p)pHY=!2GqpbuHfKp(cWoEc0Ndk&aCbl3tvVh=7sw^>?*K5A(J z8n@JhK4xhi`naVA^a)FIP{~pqy4}(&bcdxH^hrxI(1fKb^sG-=oCZH_sRB(}nu5xf z%Ft&lO+cTuRDwQdiQPx3DNCkOFL+L3Tldi1QMPtB0jgbdh_GYBcRwfbQooa#O}pC3 z9Ckl9@%A*^eu>UTWYatj4w?-s?_9M7IUDWybVoNnr6+B+Gn?qNfj`88RBR)A^4d-# z2G5XrEFpHS5q$Waq(`!;bmKr5yD1MI8jSB@AAES+-z2vG{i4|mdLBRfvYA}iERdRJ z^R+3W;c<>yBH76wZl?Thzcj~{D@3lT^gtqhuq{$4iZmI%?{5;%yxgRgNTvHf%erQp zo!_VZ=qK7dH@1bZ$~}C-^AZ=PIY1A95+CYJyZz)4Ey?U_c z$(!gAxu}EP2jd4*qu~c$mN@Aw7lV9iUH?SB$yDrOI);v;@ryU1OlEW3X!!8U690LE zX%Dx)&$a?nm-nt}1_Y@YOouoBZQ{J0hbc@qZMNGK;8|x zJT^8OX8tbmpJ{(^eW9GkOvBAU@sqTLt+)VxK zNb-e5*FaDALEcfD!pmNn*mB$^^UETelAF!%SR`3KL8{v>@hOETy)tpaD>m_4B&HGu z*;~o~ue)R?+wF8-;LqFmi~*KG1RKq+ICIJUU+ATx3>}E?gLp;ni|^}y*LtePT#O4# z^-zth#&mVHOLaw2HYV5aqgr|FsI4t*1vxVO?JE<>Gfdr4bE(<*Aqvr#+IDF0sKM@w zy3XY-+--JKvnw;%)4!b9VNUE1@0;6vY~9G_`mKelRX#jWT$)Jij@owbWs&Nn_UCF)MlT_nQbeG zMch`^zy?B&;D4J^{3POQ2NTH++~osZU1@3_>@nwC>OIia>!|NQSD&N(2fFqC`z~Y+$Z42|jiQYdurv ztsFYf9HRf(zjA25IYcLPesst_ecTuKJaI=U7LP#hpt&#_)TOFW_IA4C+&R<4h!Zxh zNNm{v^trRbTmCt*^>Q1ne~@VXE*iao%QYF8d)H@veuI;?_^i0GYqQ$ovf5_S*k;lQ zU-?gof%Hami`OOjXXD9TyUy#{#iI!AIj?Jvqf^i8IyDs=IKmWrfX;+xi2bbxx{|Ib z?HTMp(6xum`)xZi_jsReN95jbntH!)>iwpv6UvdUXP7qw4|_cQZ-Ymhs@`XMf`K5# zkGsE?4k1umwq)C~CEJ!Qk!ina1g`lz+F}~0J+|vW*Di`g=pNU;*O@v>nsTi(?R$@D zb~ZSC%c~P74A_(QQ8stdE}dj9W}7`JoOyNPtk}Bnkyj@^&OaZ2P2zFqtg{V;)J~-~ z$?8D)9Hz-en#YHGh}D(g(`?oXv%{l4zCiL=u7HkiK2-No|`be(6S zpTF@y*ZI6-XgYj{Vn;@LP4wHJNutwFn10fB?WQ(tcWGV>M&J2FN7LKh4;#VQNPkTy z&0E91)YH5jQe`G-y87Q4;~m}AKNa)u3*$>x*(o`FySY{IeoX1dHxPw)G(VuxKNlO= zmb7p9KC(Oz?<0gsoxwhC3gxi9d9Ml)a^O*i}dlg1bkmgFY>*UdqfZ_jDil#%FU_=F3B z4fY3TVyQ3G$--2CDK5q9|7DDJw2fbhp;sa`b5nUMr`WlU@>0Z9pSfy&@a|CmuW&UJ zXA7m{k=`?ycnVR>1D{Mh!$$63;Fr%#!|N zWJL*ZAX9=Ue}0j`W}S*%vUB6WR$T*i*PUAII)p#kN<=l*r!usVZk`323oqQq+t)z& zva1q7Y(rT1_r#VxRCka0d7~a?2<~69`}TXxzWpAvZ=b+kLc+_gN^Bk6kjmMu`P3ZY z-6q_=Qu_SqcZEk>mDp)i&NOY#-KI8Zm=}Z@?3hA@ProX$<7Jyj;%iEWA*i|8<`jgG zCuc+Ii#1!8P2^=>rd$e_=AIqKWMn`uM11-j-r=T>y7?`vl{`|7@R?U7w$U+l1ZAN6z%Ye>))zz5SjHJobG7p74gZW>KpvM-M z2c$c-Wo^y#ivZkETk($}Vy~$=nvJjcz~mp8itPzc%OrND6NjsEPVDz5-sSGd%8A@- z)4gDERFSPXqN5|WFEEAMraC%`V(;&48}>INcpKYW^I}sJ-5ZmPyElo{o87%R!W8!i zTU@%)m5V;yHK*Qjf%!>@m8R1ZzU-RB&SMj)kMP%7*M`s)hx;>$Z95XFcOs(gfu;@F z7D@H|g`aX-6ONXeq9;tLc*qV7x?AU4)dyy5{9aS?UgAW(qj?_h;&C&b0{42?Ko3JF ze%!K~PS3W8K?IYUcbF?`E1}Eo{U-eAUArDFiGUxz zyO$KWlt)S7?d|;r#ohDh$$f|);8=50iN5dAqkllr)8?kyZi)D(K6?CX50m`t_D3Gy3_5iyj`lIx%p$xxpX)%i2avH%uOXW%>jY z{NDCp0-t)g6kP$X4JWQnoc@}Q$I!f*X#5*emAh$JlH}G-2 za~ECUBk!!l%r8mtR3!(|EcXhyHO;rA<~?*mkjk}H0o|5y1>2FiE|@+u_lCqVn`|0f zP8S{R`p~42#?8!A*Pe!{kse~Tw@5{=+}&C0y^kKf{Eg1&eKvY}?IYupZ+6D#o2N%B zjrle1_6EP@(W5V}O8vRM!Ebx?_}_Cs$Fr*MH67femZtPbS9l*!{L>#b#+N%1JdNks z-ZLi}aVHv9kb~4$!dRHOCUH#o&U7O9f9xKbLWj@3DsglVKLyzg)7K=9J-X5rwb%cr z+S-c`+t$8vn5O(cw6)4%n(`L^MvVpG)z>5j{$IUE=^*v3AFh2=m@DaKmW78s*<<~( zpVzfjueFucZ@LLyP?2)>7&%}%3k!2{5TxGkw8p$RZ5Lz`a=j393Px$u#0H&9!3=V3 zo<|(srH(LpGNE#qJo|l~cep(JSMp@^v`XPj0V9omH6Iuh+dPfGCI1(HvuYMyr_?$~ zy=|4g1*va8Y-*IBw&Vg6OwxRAV3$ie{Oy|)TX#hfy87=~?QcX)hWm#S+fR&Q#MZ_L zQa@jvba>iOVi(Ej;Qx@EVss?;=ffqZgO8RRO-3==lC$30Z)(VRpcw>Q_f^}pR$Q8) zFEznvpkoBJ)!f+)skgSNo>fOTD{0T;)~9(XGpm{U@sHQGTV{`w8)z5|Xx;aBj9^mZ z`X-N;r^$OOV^6c}-;Cx#GyS|iHNtmM_rse_(ap~wlMMgaVs7&m8`U-~?6tv|J^pfD z;d~!q2GiaBKV)S2d_H#fo1ye&=0^efxG#R088@4+9tHwC-+$1IF8c@9jSp_OaZc(^ zUY*?b0!rv-DHvaylaXTc1;UvZ@UzGCAqgT5?DVG$>>w)!vFGs*a|!zyPwqUodmsPsl1O6T-@TT(23oWcaFeu2m{InAN=9M&2G_ZxrylD6srk9zE6ma4 zQ%$*vyf1$6ICEgn(>5`8+E&P@h?nxt>q+fW3Y6EDYnv;>7XIPwZ3gDyjixAe)&;d< zkq;9DKa2JM+}w;P@nqcoc%vp1Zp(6tDf-&@=34COKaMdEbhwJQqusb^WPEe#3r-oz zKklL%VAhwhFZZ$#=U(pVGLt~tQ`K8Goz&emxb3nhC%1*?T$?y5&5`7GTdS!|+%(tE z{~*@i&CiXRAIPQ%IhHAP_y2}T4kK}PXy46TOKPORV4b#{%6S;}ko7R+A>(10FOTh6 zEkQc9AI(S6`7&|Tlj=%s z=i5(S+;8PC%PqzR5={1(nIkii#G{j-otiB8A1U)(m* zNjcbU{cc+iv)1+-2Hs;M8_lSmb*qGn$ zxFVjF&X|wmacjRv%>RDQO{hd;i>MECO^N4tU08ZYV*j&N{Y3dX^WHPxDQ`~|=KJW% zE-E~{;iBA~L8@e5fP>vTuO8g_T%HSpUBAYc{X88LOuwYM%yUu-&lpaeoL-mu^!;n! ztET(l5imOwDB9?`*n>t%Rkj;RC~oZO>z3D7A;L0-loGc2U<0{>6L= z5u{Gz7x*vgN^W}tbNA-iG+#IO*lTB`e#PL?siU7kyrWYU;#?FPdfkVwNZq&opHh8S z4IYy`#{4ynO8Cs{SfCw*uemObIZGmlBJ&r~iqWK0cU<=pelFy2NR?(BY%}U!}v(5;7P!soCEn>P=n1 zkv{4J+YZoNGi}~q<3U zi~zW0fUU0N_T({YFRLLQ>Us@wLSnh zL~r0=f6~|=c8&yIBmP*}9}oK@&o_8M$p;1~d*`FwD;H4f(3@gT#lYO?WZ*qR&U0L$!^XrTa>};nRmQ=XE~`}ha=eZlWZOO!FHL5>&rwx3+TBGU9;?iXI2?Zt;=M8FPmP# zbF=KD9N4HI&KPDK!>$7xGopSGve+>b_yaRF+4U>*l4Sv7r!H=m0N=U5W-LBHivT-k zAdDB(9o8`-;vvabz8{7vu6-5MKFOFP+T^%UrWv83^qMKgVf=Jm0&+2uzl7M zR`#c0?L=n3D0Lw37aB`aLnlyCVMY4#7{Qbkl50OlNP3$ujPHokL{jjD@iJ>?c2{P^ zoe;=t4aO{zHPh%5^F=bDgR={nG!rpK`DFE<#@6KUOyh820_ompO(QSPGOiFlBJG35 zJn@`BhMr7qMXG|B%=MGmCsX^o{gUe}o`6l#zMgp_JJd#Z8 z<7_L8B3qAm zGm4BKknz;G!q_MzS^Fjtcfn;X7=NaCQXrMfjcdtoH<{Cg)1>=c<6VfoJvLlwDV!y< z<{EDj&j@7FGv-Ih*s$&BeyHq&F~y%OA%?g9#`prm$A4o?GqPGA{MI<=Lbc!J&th?AT;<0bDz7kJ zomlCGapa@*##SO%x$`A8I?qa$l%;s->l=)p3&L9Bsx&qi%IM{l#%641{DGVBb(WC- zZZft77-ThW*mXsj@zc>*1i>=ViG>Z4cmFjGHYDMAkPT?2Q1cVZXyREbgg9OoKDBp$Fit?!x#33yc?v6N&uZf%B9u@1$#^Zx>()JJh(?pEYmATM z>eCwI!}yuCRmvo;y;#ll54mkG;-yBC;d_l8@zZ~s)Pj7u*VtYdMYr!Y-kXB^cKFS> z8M`qb`wcgm#D3D~r2WPev28(6K4K{+NkoiykOdg~5pvX+jdcYpjv_|Cfb2SIoZcMS&sJN|=GcrI zJ^MisO|FdIO?SnNj~MXuSJfLQT#g!MWe0QIAqctPgo&ZlIk;^g*AGE$0(=HYB)``i zbKHjz!Mus>n4Dp4&)#7LY5uoyqFDDcS@5^9hj<)2C;V+JOs$sDd!M)WNs$^}eC(f2J53SbC=97W$Z^p2Bw zqtHQLZZJM5SfUO1#QP!_RV4C{vBQ9-El3sPU~P)bDz^p=tl>yz4aXD~W^o<|>2=C@ zmetx`r;T@D$NSNz(WIeHWu7q(5k95E&lnv-io8mLynoi%Q&>yCK5OhPATIUbIpdqc z?rD#intQ+7%d(#>z+ONHl+4QXr)d*Romy6?4=Fdk23G-Y?)n^mFp5~eEMh7Yga~tI2CWGlZmYs11Q+NE*l?GEMgH_!j8|~VDym`|zB7W~PnGT%~(Ay-_ z7$G6$C$ninN2hL@ z-Ix4kHVdi6k3&Z9ZEl(_;^>6K8K%pjAuZGNkU2Lz(afyAWJhw6AS7YjQa#a(Axx>9 zEUPu3(u)IGI;-UVm;o_Iz8d8!>SPyD<)Y2tY=_mipUGplIoZ_omC1TAXkmt@FCt$d zGNw`?%p#(HR?}ncOszz1TXDE7NT;{buAnz`G`(mSPLWVg(;|EckM%OG5$osBHoZ;P zrltoE$N}W6n>6`S-b8?c_~z>l=f+I3ag^yn?}U@Amim)j z?O`O3eBw?lQt;EBqfs4i(4QfJKKobi9@)Kkh*cEE1E5uWA~kt z&$3!HTch>|NtZm+Gq*#E`P-EVEjGpzUT4=#o01NL8JvuhE1fdrrtKETx&6qAYlL;|&ZXjB3*Vot|7p z_5XWC|Cf4lS^Vn%Cr|dj%TTU*`~M$``hpqif&2fTzWeEiO?~_PU)CG)>S0q4wen@s zHHS^D#SWi*DQ2howk{O2Jw5?-o^@kBad37z)+jlBfe=F@Us1!KrcI(Jwn0A>Rb+0Q z`VC}X%p@P!cOqu`S4-BUjTK>WV9c8(M;XZ`J8LFmkI08gV7m#{Q`XWG z$4tY8-17PM>?E{a`r*5=Ir{0EQ@`Y}@O&Ms;j!SCI##fRlZ(c&(ANnV4&Mzf(FLQ4 zAX?wAb*!2kId00lzPdC)9{t%;g~goY1BOn(ierPPF5|djrMjXTa$CJAb6DYWjwQNG zXDQ>c;Bp;{@mM&H<&jlPbrt1Q2dFNdU&djPI9AGIfihh#Mmqm(%Di>z3Qjy0XDKP? zu;2<^Jp2uZg-FTYrZ(|@yprzv+w`Kmymrt@(@kt>^U+BYjt3!|PMX$>V?;73Pf8;T zdOB?q918G>A?Y>vX~^yd)9=kV=fDzyeP5Mi=Rc;Sxy7S8xaPAH2&^$Ds;D^7w|{g8 zeFOkn837=@`n+_|>d2rl&_S6WDgY7N%LcVRMpiD=$-Mb884PrgJ#D^XO{92I2Sm5R zYw9{J_*&h85drf-_`v83;s4gI?LBgsOUPFg=%5@`4N({l*gln|wsvjn;R{Xb;9IDi z2oEkMi{^u&`#)AQ76qYZjFD=_7+Jc+CQs=xnw7)at6Y&DzB*jV8frnPf{auJ8M$+b z{6vfl>2meBlI3C`R5?bfa*QlgN}>T|c$};vw-Gce0w2TcQLIWP#(bhG^Mg>8F;Z2= zNdK3z21eHDa{0KDGm!^Em1CqT$H=KAvK%8DN9SrcoQg|XFaSaoWTYy{$cU2rf=@cQ zHebbxm?e%GqiHC@m8>BMLe;=XRRbf77sYuMu&C5MqJ5)4IorOMyi60EMF#lkdf*Q85yXM%<;rm-%awspMC5xsw+XLsu`)Oj(`kDWI09_u8>K_P*5ll*uk~4hmWO1%Vlv!){fE}uSQ(T z@(mzVc}A-8{(vmcQX0RJWeOZmP55UL;} zRY6A9SIUBn4C{iC(Wotf4y+B`2@;o#WSwdhW40P3AsPJ`{*yaE<|Rb*gdET83S!n8ys-w9wfCPxi-lJdYnyqTuEw8Q|!_WhX0LnRw{z8VuzwU z;F8*QQXd4i9V-%q5Gf@tYDEvaUiTr7)ZJK{9(mi*&la zpLD$-v4pH7>uuz7avCD%#alnT_27zap?h$xBk z(^d?Sz7=EJ$p-_ax5V0N^7laLWrRujgg2}k1i`?jn~=}febP+0WKc6BlJ>$cULd{( zvc09$o%Fg*%88f5#cG}}vR!#M3vQEIX_e&S%C(AGLSnZ`bs~h%f1Dn7NUJfk8M;pD zu0A!rd5H9zq-6t>$`@@DwzBUflMcUMdfWGnKJR&`)-2y>q>=tNdm2WIr z`w)=w9U+fMyFJnG$s63hK};WRbczqb68-Vj+JcSu-JMXtKGt3p$!acZe=(0f5(BbEz@6-GIEiw-M4rv z#}YaZ+s0#C6*)KrinnPFf&DyJc$==hB*JNkF)SDB29diu9t=fv!MyFfU>pncSYW#@ zSIuK!)*iL+dsXN2KHG~}Fos??4%TR(h6TUZ1;^~*G82tsVIB+Y(B<|M|Ep4_*!Tna z{8cHVPoSDp|tlo8V4 z+?pCrA?~0(Y-yCkqBT0!$YbHCj+Onv$@zcLvB-f0EE!q-gA9BP6$*%URpHIIekSfGxRi^j2H9s{%X zsC62qSEx`NEIGm{jm5E@JQg~lD-Ha~$wlK>DG9%h3RQKC?0sFzNR9r*u||%O4sS?p z;uB^2f1-E2A>AE623o}IC|&%Pv`uzL<-Q{gv4sxX<J;EhL z{nC|*Nuh2!#5|hgpo>OJh)+`Hj@e3VJnx>d(nBIjtIvnhMzijc zOAAPzv@y)`k$uRn@kY#nve2#udTl`3Zxv!ByHI-dI(ae|L3~O$$V=#cN>9s^xhcL% zMzEBfrxA|FLZt*21#&(I-C8KEGazPZQc&uNpAA8&FMiGir91F*$84!LVwlFvmS!M) zDQgZ)iwWfGIZ`>UUj0HUWpAr}ku(>nTZ*KGNPT;*GzC|ddD1LgEu1ICgo9+pd=%Y5 zvT45bjg8F<<9|dh{4LPQ#nN;^I7lyFD7l3p>a?^N4{Y(DlAi>|sY1Z3e2V$g*)}&y zJPXfZa4nP%*G2$J-j~u-7FqCGi1=y!m(uOY7PU;0V4L0=l1_H6KhU0q_toHMAq-IE zs!aL8UU>||?s?4re2T=5!ByJ-nB<@nmq<&6{-w3;T{+gDl7(dEppRz1n3LR&MM7Xx zJ$WVqODx!qPRu7NA`Y8veuk#s*ba-keY;8SQWVuvl3FTVlPf>^^T?(g)5C~Jqx|Sd zVFXKwHL5f6f-)n|a|o`brYyt>`KWSBc~3Ar06ZSZ$E zHfl^91T=v>mnvgHNnr;ZLl3!n)TxMY2CEkg<;}W^uCBDeCVeBfSC^&>Hu?sap z-t7r<@?aL^5I(k7r8v;HUuIXCXib1gt+CdmYRvN1B9%W+U1Uf{j4|^6fMlqkne`sU`z+G=$d3$AFff1 zQW3Vegy}|JvXv*mVi~pU*pJEw3<7K+4J>I^uE4Ovxh4l9OUy-duMSG;13?fuWrDI> zKo-P46D~wBvdBZ$yj|cSk;&2Q@IWP#mnv_>RmrEGAfDKQ@sSbD10IKbyGFXg7{d!f z+5Ejm>YlBBifl;)YM-2MP+4sAJys8vnTXGa<;IVMrB)*3-wR7m=a!u0x;gZFS{FR# zG>3&w>R1(z1y1W&-bhE{+*~A%1xF=dm`4kYl=m-VMr$MyL~A%o$12H-Yo*NVE5{_r zLuRzX0xJiYI*&GHEXNfcqbsT+o1o~v{0}*n$XK1Fn8yMi>R6P=LUF9&L(*@ZlrgM) z9H-kqPM2@wv2YwK%H!qobh#*5uujU%9W$O|iN;w9^EoUqUKbC2%wfTN9c!G#VPMwk zz|Lt2*aPTjChK6~^aK#!&omvYp21kfq#sxDup5W(kY!;8r zR4`P6f>~N6*vWH+X6YIVNt+5Ob68D~R}|D)8h9)k$3n9?Isa^3u98e-s`KY?ERi@% z6^{kx=;HM}7Kvjaat^8ysF=B4%IsPtO|z(`PqGUnVmv&AG~&LwaqIu2H+CEVfG_`g`)h7O8)h(rh7ISM5zi zG~=(ZF#c?WzN6J7d$vd&J8@iUtAwCC#x3vCr}5J(s-#=gaL!De1})u%n9g6nlb%4w zig?L@KM6eXcVq-@wFeaeOePyQg~v)`jXNQ)7lIrB%<#XV&8j~Hg{ zA+4(MiS8j+S4(#>o{w;eUs_x(rHH7Mi+@5jt{_K$lG1t~49aUYeCM2O`4gJfJyQ1;a}Fl4bsmV87YEzzGLg)rmXR@g zFvKC`n?2H%;y_FTEzY~ z$SH@GFnZk__IK%Q_IHMiE*j0~#ys|S-#GU7LzW-kb~$CSpQZdI^MsbkJd8#r@hGCz z?%VoHQZ}=Sm^9g21E>Bza<)c#>4raKnaQ~ye=++}ZI`7Ta{f0usi zMji{tv4S6XxgT`72#*EhSgnFFAG_)e1hyxu{c)8W1$~)xvAB>TpWw=Sg;y$ zSnk8j%6c9Ix0adw8gle!IN5@GIpu*Gg$IRPyjL#dH(*@sW83THB(bj*%gordJQ%@x zcn-m}isb#w_KP&&mF{K27zTlGg(UW)vQ+Htr$QA9gdYX6;`Z1=8k6MoDfUG45~QLSAHHNXq7QMt-~M$bFhC616Xbu z#HL&UbT%a2kfi>b?So2Jsf00)LSTFEGN5$$@6sNpkVgjpEe#i{=#syss|-Sj?r(r= zL|u_3{v!}qzF+2^EJ1iS9H zt%To}e3ER=T2^k}$>t9xiROi1yVhVnC!)8%)@YuDpRGpot=$(QcyI|@6^LQh0-eS> zQXEQvHFsGi4ANGJJ{)l1+QQZ-oFKQD%xxk4vdR1iYrMCZ%$?ZpNs~FpvAF-kbjxY@7OBk_mE?TO;tb+n9V(e ze41%7mkM2i`y5ye{QjWX)_VY={-E0E-WBvmc!~L1qA!n}v6|Cc7qe~Vkr8Z)?+SN! zeJ>#l6L(;X5iyJ+SJ}*+9Gm1jq5>vmic9#GPtldj}Gud&y7-68Ec#%UELFUh)e|tW^_lbRsdf zm%QdQKPcAkC2p6w1^FF`s4^~>`3A8;O?%a4?jknsC9_=SFPvOqlA&&MhVVUo$!+c` zh_QX-bC3Dg-rt_LV>-SI6c%#_fx@1Um)KB!S*rPy^ago(r@Vkv_ETUXCT6bwArE=Y zqftZmdCf!GHQhHo$HM$VLbfT(f?F8|VkPBWY394r)y>{9DAl%r$8uSKE7Hup1bK({ zR3bJrXSYaT#Hu%hC9Y;mZm}Y>nfWGt`*!+KGjk3e^e6IFx_P-6+e4mfZhoFU`1a=J z0Tv}=cxi1+)XH?&$TeWBc2D-+D!A!LR@X%R_0^uqwLhiJTdh&YBiiQ za)2QmX98Ag%2ROU*EZ&k%yPm0sAI%j?o}{niqAX*J49jQ_DMgprA64^UG`02D`|x7 zu?cgvQkqaH#epK)%qx=$jjZUDI?Yz=np{+3uj^9kPwx|a?PdKJV`B~vv+wtPq(@ux z$HHQ=wyn8^_JJAY5A2V&<^gc{c4%krg70itJM-vd@!WLs(`Dv6Ow72u$2W>}x!l}Y z{B1pb_;T}d0VqxFY|dkB^z*LftmKw5U$zCyPOv;%xiH~EUMfX)_b|W4Sa0uX{(?asku-J7g!l)QBE_2wKVx$H*s z6l@7keEqW1$&-W4Q7{j>35|`1&64&+D5@)DR^J(Y^k%b9l!0ChSfvA@Tg|^2;u4#5 zVD1p}HDac&YNrOsQ}1~FyU5}p=5*>AYA#0eN>|-&PF8Lp-}!*XPPgA{wr2=o^7AWr z@W?t6eZ}0GjCj?2ZHi(nFL~8m%-YU}N0|S^s?m=l%$FzU7VhWz*~rg&UtE8H!-D&D zth|=P{IxpPaD>CcaV&5&0qYEl>`z@VoCu=rJE~)4G4jb<=8WshjwL8SHy%@XSTB4` zx4w9;$T3}0IXV26IrF~8zj#G|=`01uIm~}t$09ryjAOOO$s=!@GlrGabMmn`PaThi z>UG^y|K{c5ScGhO+njl8J6VpdvsEai zyVje7f>;}+?`$+r5yYKQYTIP?rHGMz^vnKh)|{%~^=txgTFq0Ufd5{3bql z`uiW|^5iCcUFfj+8k|8`ci8-|CfMxDQreNrOqNVKv(79SEYSisnT?6B5M6N8{EXzS zuag&EAQ+tO3vR-;*s(gA(_ntpCVWIECtIEtFRJsFCWzl;=_G6=Uz#i(Y`Ps5oMj+G z-#|p$b)(xkP1ZK7;DgjDS<=ok;zG2G#nNDnhwFz(w`P`pV*L^FQZq|)udXfBsK$)| zDQIR{e_`acbW7Wo7m`thCE~uxnoc*STk^#VYM{?$SRPHWl>I4}4*DIkc8?{U{@%ti z%WAJ`6o+@h6ahOcCQK)Fwj9dP3KoHUbnIZuU7}SjY38e@(VH#Bf*36z6K=JzrPhmY zwLC0F8>#g+%e9hNc}A@;_gGR4kx>TX9%gAqKDfv7ou<`{=$K*mT2>&Q$2rWh(x&Rh z=4K-ePmS=r?O*x!$sL6@v2zzGacKGU#m! zo8NrzZHvEk_!LGFcrC)<95FN7_`HcPtC+Ygb}nO*)LkESQ9J+dGyS z0#=m2_-~5=RiC{2UrQTdEuHvZOIey&c~*WPifjzC09;;(0*M@=(&v_;%`-m1u5_!g z^*k&{uJRMPwvuI**PGO=C3kt+l9}IF+~oG<7N_tDd1Sfe&n8^5Jh(Dx0k!N%xgbt~ z*CcBtYr>lHG3zX6Oc|eID)tiDqH8u=o)I)L171j%D$A^NNL~C%Ad*SjerNf}c&WNr zMmF!T+=E)tdZ%S~hf7r2vgztXXmt|tZ)@SD-FI1b8m>_#B%k_eNWS_bay2)=`oP*y zHaP`HtICEwgOo2Q1#EQSZp)o1;%`5ZN&77A;vZi*S+mcQrF|IKO+gV6AVQAsv-CkL z+xcfpN5lCNkNg^!5H$&rNd$hieD%NP%p#xvW|@0F`|bPViVd1#tPejz{rfF_k~LP` zldi3`jCULV5inzRirjU|@`*a0WNzS7mMq~EZFbty+JvUMmuR(`#Ml@*$ZY*Q8BJ@{ zZvD!RhB}aG9f4+FXlaFyc?`L&l{K>!Y=1$XCuTE|_#&9$&-TB^45Mo-v5a;1p(|Ti zhY7+N>S|-{CJKj%FWdUOP)8PKTifAhTedY5iHEbTIrwqpSWC5Bvmsqoj`bR`VKz0l zwdM(on9|Nl(=JnAn821^uwd5k7`f?|*Vt#_8m4nw{FKty`&n1GnMHZ!?bbBCJh0-2 ze0R6?COYLVW(pRO%AwZN@!J+rfT_tIt-dKSg=nolB!As!eL%$T?e|+>(VB75*Eq#W z+}NLx?7QFkiP$)WVCi!v8UKKl_0ZEEz&*mG&F`7%^p^*$>xK5=Ll)N2B(drjWmBy3 zjcP!#=h@Fv8V=Ge4_QB9J?BG@S)D@e7%cJs4Q0(XM*76y+l_&^a%p3iqjc1jh&BFL=;11>GVYoBx^-E+M8o8s zH>@;%9U|U0t+zSD$K^?4?C8KsBTQa-)0!S<8bc<&Y3*YilPAZReH>_=Me5$PdbMIt z@&O@F+FPd4?6<7r1abeTWZ~P^V)lFQJJ#OtpM3O=b!m$@f8K2QHT9$)OtL<%_iaY) zyD_rw=GYYLYCA+jv#sqq4pBQ3Y-}WNPo+eZc=%O@zc9G})GD?8aI3y0kJTj* zM#(G3t@jC~Wc_h#+a_?W4BtU+s<*as^RlJn<>S^Nn$Od zpR~R&Hq_GMlUD3~Qcia_Snm{tDsuU0>vf1Ydj7Pv646N5gJ}w)k=8e&E=?eJoUu-X zmAChd)!s}vLJp_eZpyrHTZi4ZTqEfnUR$6Yds9F6wRJ>?WxCpSmzHy@@`wmpIZR); z+O|Z@$R8Cc(s9p=cE|Mj>ufiO+L&{ot^4`XbpvfZGL~VR?n{^e*;=PV>qYa#RA$okgKT+X#u=RJaH+eW8|rLH=ig{+A!w0>qAwbt zTL#;@m@)$a16%T*m4U7Nutg>|>`NW;Izl=uFtxoyY%|4lsK0nNpgWUDLv1Uh8)JLYl3TOG zl^81$*ruE}1iyXhj~o`=p<|6a7XDGk%Jy<{{%ReI>`TB{nC)J2=R_OAZ1?F*4L>I^ zCHee6$FV4nMHLMGfQG0`otQ2Ch2skRqHAd6u`t85Fxy`_LI1D1U^S10<5=J~PA(e9 zig^so+WbeIhQ-5d<6y~tPH8NT?c}l0eqCwccTO%E$4bezfDK``wWKa!%NQCx$gxIh z6*W(xUZYOR{grBFu%0$DS?);CcVIsw*A8a}(y&FPYndfmbnSG)75c^`+x79fSxmx{ zY+kYYOY*}cTZb$CD^>CR*yWPB{EO2u@Tn_RQ`tU#dTIf=e6sB`cvUMV+b$Cd$dSpm z7P$pyQk6hIU-V3>Z#ir4eKnw{OjUy_lc}AcR>)KY)JmDE0<}t}DnXUYR0XJSWGW15 zwM>C7`~QsbWwSGF1d>y-Wo`ZIG!#P#a|m*;h`| z-8aQ%6eE+#A5(0tg<_gA)%LZ3ex+=hZQ=A8HWPVax~)pAK12HuTYC`m9+l?BNL1Du7QH+UgI`!BLTQ>w-PMl$T0JeDT z4BO9a!<@=FwthkjRkO%mICj&_YQco?W)_mnBHJJsp^p{Wnu)l4yU5lTmtU!u8-eP= zY?&1kZl(+8%(eB^GNkLyP~Zyk`dr)fI;sil=y!8%SL>*juXIhe^}Gwn>gd1cT|gEy zH0+rw$Y#jm865L%%@7LEe!i`zejhCtEfwB8^4fe``z9zh!eN^7$m0379vUhrvY63e zD3->Mf9Bh|HbGk}XdW3@9M`PNwo%YB`hKy^Ai|wBa-l5;Ub>=%wsvkYdWLRZWgB8c zdW%ZDhjLO=Y3oV0RN7p4o;Y2>=s{Rl)n=1zFdL;jyV=%PjGQ6C&9*T|t+UV!T1?t1qg{OQgnYZjHbTU2uPWP^OS94+s%$2DH9VSDzx!WTg0h&!cI(ZQVt-ALh+_Y%jr_TDHfQ3*)L+jcwY+ zMA`I1if(g)#h`?TcQeDf6O+;+{Ak^{j{yKFqN!3ZR;sUrp|9T zZ8Mu9A-UftzueubIZel5ArgwWjosd?dHGbOsbZ_WF3ZAV*4|=EG=U}L4!gY$UsFGa zeO?pa9zE)^pLF8+4`kUFHOasi+4f=ByX>EAd!XZm%0`~$!4ANfS$jz_fr2!YW1rd7 z5%cI}_8jrgNp$38_NN5R&yYB{KY6*m!qg-So4eb4ihu5&ewBSv6D)X@y%WrpEmzrZ zz3d{{V>7($3^sONZ5B+la@xO#oh=`u6METyw#0`~v1xFniCI1Af`RtxWG#mYehoV9 zM*G7O{LaVju;=0DKSS)}Fr_BmX@Arz#->qNNO{Vw3}#EPf!y_oJtG&0)|XeGN??LPcOG_{$4)77Fk7lmYi7&TMvg0X zTGw8~W5GsXs@YO_h7*i3Pzk>%9P#j^}{L7`K+``g{%x zj@PmBk2%c$v5qxN=CE)a3rtPGP%->d$eMqlVgS)@TsAF%3Fg#!*mNG7rpU4Rt?6#n zo~`G(BGYy4<%HAVhZ|n27>zs_W}s3r3JQ3^0v(I+STK&&@)(#koh6^DI$zKtk79AK zP6IV8^rWQc;IsA&F@Gj`1izl(EKUz1ES|OhON>mXmgns2 zQgR!=;21))bY(l|bC|zK#|n!%EIMDusuyusuvo`pixV)+fJPVTVDPI15Mic^b*vyn z9(oxSsbC4m6AURls3E}A8nTn;3N6t!6@JZWh{mxR9t(c0%QY}8Arv(l2SZCarT(S5 zU?q=%S*s!WrJP(Oj#cqkpwz90qSo_Zq*PZLTE;2$FVnG|JO*YhGj(Mo@`^np)xVOH zkCo9Dui7VwxizafB(PGKE?viA(bYQE$YbGkI#yQ6$@#z4vB;(bj17=0iRE>Bh7E|8 z?FQ2Ab$jOZ4OH9!cREWokA>q{U@IpV zjbp{+EK^;_vxK(ls!O(U;;}fklgC2abh!X|rV|Rv=ib3&wcC za2(4!$SDQ0R)ec}EO1cA@(*!xk%RG8pp*v#hjhUhkA>sd)We)oFl(79`IB^epIH@0 zIi3)C_kDXy)%Jf-xBW4qcERYcoUXbpFlJ`EAIpQNp2}1VTN2uE5R)~^b<*{?2HRa4 z+wBV5y)qj~{=hy!vxXDr1@HgB-tEH3j1TNxE{yE`z)@u(#KzMG~HX zewuIZh^cWx*L`gNGZ~ZHOD5ZUU3hdtPEE15(r#eW#-cVhxzc&6{X>1v__Ool75_WgjJA7*i9p`;C!F*ducieQLJ- z2?4C%&atn;5F_^sdlv-45c<`8`(#8))pM00a#XJ{^(Q$jSg&K{4IJig(6NRy92Sma zfpZDi6===R>Vn}!5Rp>nbgazpA(0Y$i|flqdJ>J|u-_wBaWoOYG*go2ii}ja;PEXd zS1ht4RB9BjXq3)UFq*^sqjfC8W5GC9JDPmH$c|8{F`RrX&Qr%@p)tDdsbhJ$I2Iwc z#dd^B@hp+Cx_JJ0PTc>Yjs+)hSb%=K*q*A_(S-U;O24wV)jpQ@q1{D>_lUM{A+L4D(0&bhWv9IxFRz4{ zAh(&MZl`^O@1VM|e@wN#fXzX+`pJHoU6V-&;2;kku)n7vi49Ec0s8?%lkDs}Z1)LY(X2ZA z?53|M@|WE!OsBv9Wqa~tgUHFarebtjYFB03f{t&~EFBfz{flTD6w^5pk@X2&&{xt?rx{3d4c zGuLu|pwC>_7tm=oM?b+)PuM{wtgkTn>Im6uca*bOtQihROTkae9FG4QHQy(KoBF~r zjIO1x+_jXD+tVBa(DLS|Ihv!9o}1?A7kAW^(1U4?D_Op1^K?fTtv21=+%e1mFKE}6 zjvf+zpKj-vU=QMyLN_9&qti1q20#I`?|Lqk%0vCrrgeH=J1qlB!! z+A&&tNZHYjW#{bpMtScz@?bwldpu-rKSwiEMakTthBI;OCrv+8K`TOCe8 z=b&A0bCejZ5NMIroQ3WjCVvcd9E8Hi-Lk?ncRQ{Y8M_MyUmYgb4RcIq3KtB6!e&`6 zC=~B=+%GGXIp~x3JGOe_uEK)F26Dw)X`SdZ!yWfn@y=Jg<(OlHg0p`V3b}h`qT^Xj zMo-6%3xJ{%9sM;C_L#C_q<0NCuF*vFbVVdL;Fxg{sOu!h=NiP_=$A>3o3tD05N_0O zvZIeC!rkb@$&Oy^6|hHT(EJUP9s0BDI+RT9nQ~Dz9j7|_T7(9Q{(yFLA6wM0Gk$il#Y^;B`%&?sz3#YmwV&Jyko_Q+XFV{xs{M zX0%0_WAb^&WE6f(Tw+!)viKdFNyNpm5m_yX>l?>Ix#bhN?mRX@@9L*c;jr*T9joE7 z;1nGz_>_~2#<9?62^jMYe@eE0Ko><;7lEh@mM&H<;~)Bf?3m9rD1X3@GKq74|0N$I9AGI zfuJrI>niW0M@=l*+jt1e)&I=2(Fw zIz8g}MacN5;G$t7lfHKh=R00v+2P2-8AzRXIQCi7A$-9g5J(Q7kN@mAEO;*z07M@9 z#qmfJ&2r~`P+##~0(4Zt~nQhg1CdANuYw$KA|E z+wzxVu30k+^)YAdOggF&y`@+?lYDl@@xXZt7hmb*%%ttlI@X!8wIE0q(ip|GdSW0X zvjiohv+wy~wDeZ9^Xrxf$~x2D`G`?0SggztzI}yL67hJsU7WXMj%FL`pdrP<^m*vQ zna$a{;RL^(H0q_a46FyqM0Zn zj#gdR7FA{u4Qy_{8|?TBvhN;ej!m`rahOTu0I}WcyfQK6#(SL;5>xiv>zvrMmJD|S(Gf~TP5 z=_j27FSyzx=~lKjPVj9c;U}HmyEgvGLfwv=E~rl9Jt{M?b#$q0d7a=>5{{e1fxH}% zt2T<;O&)m4>BQz2&p+jyrQ4AD!0;mB#jtI=J>xV8SfShVS!Z`W_RPp??}+D|8O*x; z=mqCSzKrOT!=1g7o2@*=K65@(wB!|MD)VTBUv)Oa!pM?oe;^@1 z-#fy&U*h!>)4!b$V+G&S|90M)_{LWM+u84`^Xp4Il+d->Wc7Wr^}+#p$nXIA!hf7^ zq+9FCV52h6S#=pbFv)pV(uQvq_Smt{oKr-$7!ZL+MzUm$t2v$Xx%0T7jSLX0O=it< zt`-YUk?;wrIejPSoGc)_*mu@bvS?nB~8?LqZu66au!0Gk{2Q63{+{aMNj=B%17eRKBr(P7W z3%`01U>9WvE%HDqk6naR#Lq5@)r)sQ2UU7RmUqxdtO9rSF+88;LdDS@-uz5xBU)VZkX2s(GUvmF|pqUFxlwdeQvqEVVnoe$tNq@U?~E1ah# zapzz3-F42Zk`aynPUQcqv`#ra)pvHsYy{w{3$S?{L<1=sfut>;J#m+s(lO=gFjt#G>x zCd8q9)7<4lSkk%Xu92;AIkJzdIW9lz<7#CWBO}R*8(eL*nqb2s=|668eW_hre11CP zM%PuMxN{`gc9W|M6F7I1>kRund$a4T{Cf+IK8%c{8*X(?%)t%rd)ajlZm{rWmqj!* zoU>5+s_U7i9)QkoxY~(_rqZErxSmK(2{pn-CClG&U86meOS4&B%w|n_*VSEjytL4u z77V)e->&6mO$rr3@c?-N5$|Z%t^w-kGhIW{fv}jdtX3>Y+@nO|d9(#59*xbTvJv}# zTwUmWV_eru+D#JfKYvlaOLvMSW_s`y=Hh<>Q{mpLe9&VO@#|+nEL|}YI zR?l-iq;j{K@A7GPOUO8VeZI?RRJiE-i(D>Ir6+&onrG0$T;y&?Zbpnl$}WFD?R-XG?O%i}b#>R%ymA`-VX3RNzC;5qF?yD|9@YE7_-&LM6(T8Sb z2{9SEDJ9M9_OUHsd<~zG&sVrE&;4=+7MI&BR-CNo7Y5r?*spk#-Q=4UWPsV~+dYR7 zlGQi*b4H;3TPQ3C;VhcF%GFW%-m;X0A6L1iHEF@$D|dCVYlY@T zVAK+_yxet_o|G&n{ax<*wu$J*Z(Lo@D_i(FjuFFZR}Vdn$s+BB)vhO%j9iw5t!fUE z&}!GOO|;Ek!)4?gv=AiLI4qiTyUZ2B#w{7c}N&LwnUm*QzGZ$x2Nx zT~^>zNVt-F&MD+vr7O@xbmk^kSDbjdb(5<>d9pH5DbVjXyRJ}Df@+Foi)&G0kNoWx z*RZ}*QQOQovC|hB#|TurpAIL1K(+g7FCz?AUwIuPu$jnrA2J@)Ijjr6tIE|M9p)!h zuFHf3y>#7ouG40vSl`WZv2w2b(G^q@ZdMZBsCHe=7MCxsc1=6bq#Re{4fE~8&L+5+Rl5R=&{p4!n)f$+DMvJ(Qy1dt_ZDy+0P^D^ZCcM4~ zC6+gF!O`zpqv_E29N;5QLW8E;t|4~T)QvytvU$YlY)S-oqn!;Br#an)%?!s+CXw!c zHcuzFb#P}ZkNrFb38;7Pba3Bf(n9V{%;C%2q5-a- zzFQP)X3@_5+?_=YqrkA-8f#YDSTo4vf$nueEgj}_*BJGHOXil8ov6NZZC+zHU^9$# z$j$Bt4JjD&`ogs2Hunvp*f@*+b%)!kcSAT`S?O!6?AhFRx*zd+quZ@)tu1^p#;oMY zQ{hyMZKorjc7K4e+45)HKJQ?)Xc3LgZYAPmId!tLv{*jCTDd}8v9igluS`y6{S}T; zE0$55p-ad8+kK^!Tey%Ll1Jw1Bm4SA92Q)tW95rE%)eO28kTZcIF1FDC15NntCVDp za%T(&qWLMxmM1V_{`NeK^4M}kj!mUe%_URMb494Gy`0P%<;GN68Ly~JXDL|0Vg405 z7U8jA9IIVHT%+BXN?Xav$KpJ7JQiB1>z=xbmy2T&k~`X+Db}wdg}6nR{52e_zg$-n z40Bju`WW|-OE2rBSk`%evZW}fR;Fs=YiCU*AB=bZgec_)C%E^tVBQ&gKdc_1>d8wQ zYelx-2fgDX_Y($~?u$Qhzb^c7auDI>~xbnR64JM6UZtEam^O=x$?zUl6^!dxm6_uU4~yPv|Q z6WD@4xbd+d5FzI;edeyju(8(+_t$2zb`m{U0Zo9DT^UNSEe^t|9e?B*EVPM{s< zyN_JdOiK4f9dLiBX40gxlxAee0{2xG7dr}h)oitpiA`4P{>QjxdrZFS_5s;8Zi@V z#GYU1uF%5`5}|>M+;)S!rA$mnCcXu3FL^%Xem>))0~fV0Sar$D9>R~NGv#tU?3qkFqK z9Yu1%{ukvjkTe=S*EH$K{DL2E6ZmcpGE`dnl-nDXBrNm3Uirm)XNOE?bm*zLmy0nT9lD$g3SaoiyVpVW=rr5eu`wa$HK4b7@sB!MvioI(q)n;}udgxVHAno}TrIOlNy~u4wA6xVpEeEqpkS_V#oeB!47q*)!G=xzO0j zHV13<3aM;!pbf<25ezHU<_OBkav~_|W)j$~q!IU+!lw@qe zW@(FfTk*vlD{RsFi#t~3+VNT+yp2Y>rjJJu)4_c44=25!C$&lKySkqzORUSM5BKvt znpjY@;u_C`iAm)0{+_p*s94nB^Q4w&c+Hn|6LZkqH}?9PYp)NJ zyS|39`0KOBUtgn~%wC@z9zpdr)s@i=KF?a|f}f(&oVc^FlFNnG;rK_Sp|g00Q~+Wj6+*nrTwzwX0#sCmVV@RzzD z@O+NIj;|i@1elF5@F7pX_7Q&$ZkA(4!)(LWL|E9IWpCjHdv?a`OWOwIw#Pjk#hrfo=Hs3vf>`Y*9iQ~v1sm+$Cp|rJ7Mhr9&{JiIW;bW5X zf~P>N^ON!yJgc!6!F$6!ZsF<+=}x+!H%&226)4F!pRRw=GcH+-`RR}mo-eS=p`RRo z&9k^kn-O~5^8jvce#7$`9+mv}4Nu3!ck$I5p7Q<|%7(V6uN;QwZ?UAT>?@O!GS&WF zez(}zLWXGZo1Vvwn01ie^Smr9rfy* z&~r~ZZh7(N+4`YpFdLdQ8|TUK?L3zaci=&JI`q*>;vy5)avEb{KAu#S> zdv0PKA`ET_rubS8C+>lsbP^cn@fsja=8yAyllU+r@;t2)Q$Ee}^hrpeHF=&J-Fz97 zZl8HFvR8g2WTneh6{E0=J{0}(Gf$>ln-IiT-7o10=ClaX>MuQ%%>oA&d1l$P_DaNx z*{fH2Ucu_o;+38-+p=f)D$iz-8QQ&9d&;n%(DY~AEvfZeR1yQWZ6cxh2soTx;TeJ{ zuiq;?ZNn$QCx_R2GIGnlPf!4d#CC;;IUT;&oen%#n>I z73_puLWsYAr!E*_pkW~1oVu5EFpkyo7??HxO35xxE*8h?cr3Kbqc8NC`U5YxOII4< zvEUCnR?lN#)-sd-6M1r@C!=j}52riulfq+z!yyX?$hyYUl^Z=vu1srSI}5uI{`uk} zwjVRQY^WvvzdbFCaoTH5P6WMH`8e+LIgA_!ah>p_oUem)0qEP0YpI4VI9lE?qnxD88_tp z$?*h^C_Jdpz|?^B3Z5(Yr>-ggDESkbhE*NqH67J?YI!UY$AU3VE*8hi$fFIO%wdf@ zOE{*hE1L@f8MOp>0_bb4Qn6vtM>NnnwWU#8OY?QR)KOAy$#gE$(MkHVkNJ$l zLeq7uipK(<=~!NnlZ(W$;Oqnpl{OG0GpGF*{ z7LH>@^Le@Xx?Gf;L$(pwk=Zphvwz{29A}_d=M0r_Snx{)`pfB*x4?+|zJF>+P}9Z@NEOZLQ|Bw&X1RywBoFtQUK*Z-5OO$Rf;XrBVYF5hDJa|U zbkd!vS9o&smvHwDm*{!gU&>*DB|28JjKgB3I##=q!$Qk+%wL{>p<|1!)WJ|92rI5! z$BMrpw>_1bkz2evK>^yzZxkNXC17e@+Rt-^SL>Qe)^HkPajcHVLThxnyfEYvEVWo1 z3^VY2ODz!A1*>@s%-R=HxR#TP#<3b63$9JoEwwT0c)_*0(lCz&*6G-O9s{$Mna1^G z?bE3lIf0FwZvO^_=L_}p@Iu<+U#SiRLv2h&JkS--rQWHvXbB6p=)~tzdz%z4y7`sV zT}G8IdMnkEc3#6q$|j`#pm|M`HJ4{H{He0n)Zi7KrFr^oInDnQXgsFz{mn2$Ssx z9m}gGYv!lIWZTX01gaGtX0q+pYIX(B72K_Bf~DQ67)@E#PrRm|be>usi^Q?u9!@S6 z$I3{4aVktUo+Z3TS6yDiiTi7GY(I~M<5-Y1LiIxxdpYsoUR}H<%3+Z>7W;+6qEST- zLsiyYV+rcV3sTz|JA+XkttTPQqh6)4N4QUVJqJ@k2_UKYDpikp!^{yehf?p*DlD$) z6QNYMV1y6^={rkOf3av6kCmrBsUz#ZNgZ#tHqOP;q{~E?uMw+ZH>O@^z=T!7=G4>p zCHU=5*KbX2COZA|z{YlWlX?C0P$YG>pb0l;!qdM`?T*D* z8I)z4%d*XVLAr8xYDbfN#KI$F_JS7a^h`AM&(z$iKe)2;|Eia9(IF0t{GnrYJQg~n zW5qE}E*8ha#}Y7{3Kfd!g0VypgYIKGR{K|iAi9b3u;V=TmmsE*{ptu?zfykIbn6`tgjM&noo zj|ETaI{gitT!dljsZd2c2yQJi<)_Kf6R8=VNF%2pO!}NmeE~HV@%4A$M-8p-)R4+T z@y`pb7sioO4XLfg(U?uIFt#!nTz=Z`pVSjVe1%y>zL{iwp7xf*D-ZqIR)lC07tl4Q zQ+K8q7}{-4+7%?+-P?lh5xkP9o+FY?jmcijA*nsUg?b9Pk1%L`MB<8xzf9iiQZCq2 zksIt@eTFbWEp6%W7TLAGM%ltyhUm0ut#9m zIcZl?l-o%?i~(mOurP)sC5!=G3E9>wes>+UGyM!T_r3rs?}^ON>wCxZhE0=|00}wg z2#}y7dwVCE;SqEX^ftrH;$;K9y>RuIa`o0g?qCu=q;_pjOL?Wkqhz;@1-m({W?t7~hKAgYAt1cp!7~A=BU8T2e6I3oSp!7^7-bu4yi83tlV9{j}VRN<0v5!rlXOnSTmYD`_2-n*baWFo)EA@6C@3t2vav zV+hm04(}AnRNa{Bia0Vzc27%lI;h5rt@}>ViTk{*EuCt$u)hj~42X*Hi-DVB{3dMN zM}DmJcGB9lL?rE?_Xn|l2|04m+oE&rQa00T%}^TMKy!SCm>4Mc;J5B;8Nz{evdI*p z-4A)Ewh=;fgE_64zFlBKYz&Rr)Bcif*6O$RrLsT;X0>BRmK|8$uuO4(G~jdb#ng)! zyQoz!YS~3}8R?XsHur)LL4Qk6`$W$}!t>FwEz`ctKyTE&Pug$TU^%UC+NLJ+CUW@j z9Rt%c$rV?pO}@mGbuw$e*)EDdPolqFop!m1y_)UUrj?18*q#9=QLq_tvu_U-Dz3EDzf+Pw97LVe0}Mh z#2!k^q>tZ|cAqI7tQVY$VmYSZo3BU2CX5gNAI8oFK8CA({Mp^yBtl$r-TP*fP20Cr zTP-cE?M2_Wx3~A(+g9%vz0vBuwWHEX36_Qv1Vd9&qE_G31W{8`A{K)nSS*4?T8osF zsQ+_jcFtrTeSe?-$4BVvy(1mrx2H31ynMu6z5_px$mk}# zHYCHHaoPQpuL1ZAYE_+18NKrT3`38rW5b8qf&^tkLtJ{WhZDTy%Ui~K*|6^u#TicH z!Exl%;*4c)ASe&!s?(+_*ibwj9E6DxN(7xY1sffu2eVbve|utsO4*5Lf32K&_178o ze>+yMo>*Wfj#o}BKqETi`pa&K{0Qvh=#xJ$92%cd)#YzRi0m+ZZ+XUz%H(P&BD_t@ z1^dj5E(t~mK)vGNt;Wzwp~u0Di3!m4^zG4%M-3@~RZwg=Ko;DD9?S6b$Q4HaUzui* zFuFZsgyCAb%z!PpX>E%7aFu5p!LgUG1z!$Oj+@dC($a~mrKJ)CO34*}Wej*x)&oHG z=viewDpqqZPCMl`;D@G(Zhi2=#wu% zGIQDAK45j|euaKaJHfj`*nCxHX#(uG@=~A7zTh}wdY{bA2IC0>30#+%NqStLX(8fu znTf);*Ja)rp9N3if4!5pl3V&^-m1ML#bivs%-&EN5c*~I=&oLZesbr&yEBinYMH(a z-gRH*_HKqcVeyd6OeUg#(RV$cc}%qnZ9vTh583fTW*KBBa9UiF1~%GdKa}(@PtN=|$dRR!Ge3bAai4E8vyG88!ad())~Dpj z`GoFPD$n3GDNiq+E(rWdeq1J)>3YMg%(vAf<*7-^qfe`5R^||P7j)A`g{zii+PXk8 z?_QNThb{KfU8-LU+ot?_5Fd-i>!%N`W0g07d_SHR|qryE5^!7kX~40f$=&9 z-SK=0>3Sj)JRyu{2AU@5grLdQflb70f}#hF>ZXZ3WBsb7ek2v0$gGDjdqQ*+e#Fk9( zgg{7DOD1?iC_|?R2(2xd>BiJRb7yBJ)Q!Le66ty}GcPqvBOJ*PAqoReX4;HuriVIY z19|0CW+T+XZa$sK!E6m>=N-D<jeeh&A|vO^6y;fAc2d?ho{Wx{o7dB!615DUy< zjH}c!$mY>`M7kj>*9SyBapm_qA-MVuYyoE9D|(R4D;KEQyctW03z+q)g~&pbvRF26 z!7#9pDHc~@MU9D=`Ky>-6J{W+UTXQGm`#?=!x{{!Q0;T#7cs@6A5db#8WS<||G@N` z$pihe%*OU5Lx!wK$MP@kiQ@^Z-VZ^Ib|Ey=VFHDgzynoj3=AMBDD1RS;4?J|{ z!)iVHKOnsKXjUS$$AwQG%X%ft*s_5fd@Jh(^(}x!2Mxl%-_8od%9t{t&)BTC?kb`$ zh;aSPtbMt@kbu$w2~+P;^$Nto0%Pr%i7ObZ`3325wTwxtbqrjJioY<(tC7K4d zZR|Lo`5#=nI>WG%B<=n#74tB&vzjV-`5T)VYI5 zPtsT!xn^CK`LPfd;SVzP@LBz%F1)L_Q9GZw{6)L1dObw8L6UPPw-7nyp=Ux-N>tH#X# z7t@Q9#b6q?6xjejy{f**(AUBFOH5K6jaWdqCY*J<@usHH(C-r~U8Go;W{dh*m}U!5 zj+HL8(DsX!Eo+2D2eUStjNxC&$Rk;G@GIPLG^^q&+&(yzumX)2NV8Z%TjwFhf6G|ye8jl;)ih2l{_6Npl7V8wD zvekhFFk7tXL2j)HsJXQjOG$wYHW*yH1exHLuv52VCTgtgN38cF(~~gcH5O4=hrwWw zR&z+zf05Cs##%57{FmvKR%1PlNtp4~pcfkqZp9F!)x?z4kgn$;yYkDBali2R`K&1k zkJl{IGGrhYrWvv_7N!{zl$8wGH5HDUI%r58H0nEOh*NIQ?&Yic8J#q|j3umSHDZCE z84F_OU(Hx?J<^jj#;?~gT5i@eMM)2#++5FC{gl75VUptpojMeo4T=OUHaDmlu_%b7 z!W)>KAbHx54U-%Q9T3~ z*Kk-Vj5TGu4f*wrT0RtGVYy(8h2?@#*cPAdPVtrRLMN0OSz=m4i1E7^tKEwjx0kWD zgNTV5^Ec}lRNS~j=Y2X+Lr!-^g);*O{}s})O0N0{~6qsRhx z6j-d!q8&q#!q`4V5v&+tOu~%USOhZ=R&7=ti`mrnDbiqz3e`S~z%iy+dK@Jtsxb*O z{y5WXJx=zgXTv^4zmp5_+nqm&?D)y;-Lh{nMt>)xyJh$8#+{6(UIgfX0NrQ4?RT=K zTlR2@Z|I&~m=payo_3YN7%;TeV`1u9k0T#;hc;;qDeInnMNUmrlM-WLdFKjYclYc} zLw?OkEyo68VY%dth2@e{$mp59Af@f#;V#7i=JaFauKmW8)Muh z9fSQ4q8Awq=pkJ9CB`bbOky!-=lCi|W$J5r0WMR1{*YyXsk3yklsHO}g8dMxzCaeD z8f(EU@CDN=9u0cBI%HIXB845R;{MT0u?aH}RN~0&6t6(nwa)tGRXqj*gqE8=7e3A?2l5^?lEZUof4k*WOq)|`r$%ETm771s@W&ev#cpo@5J10j?jC_I5FV4R2R$pXXCaiGv8is?{QV6H-H&XwlaEH80 z1BUd6bG_vd+@%C7A-EC7wjs6}fFk-* zgZr^I_*(Kpmp`+Qc7?;U$vO1U+$m?HHLduJTwZ|pmWJJfYJX~6enCNFLgc)DT zSlM)>7uHx{hK|t=lIc?)%YhNF8BD*aTqgq^BOTaG%*qu#D6^Vos%2K`EF=}3$*hMk z<7WX=N5Ezy#W01j5ird7*^EUo6E#-MBby+s+6=0U4Gs8t22183MM-1TnEB^0y(ng) z#!3nIcn*w!eMe?Ko&zIb^Ux^*!r{kryz!5>&C8T4baMY~EKI+Akyx01`NFYqoYH3K zpdoe8sPCX53ZFlnvn3IVqkq4c!;|}8%;_N*U&?vRxj1~Wm?gLflRqrMvz%a9bej9G6X-QLfEj^^b^B&vzj zV-{G>)VUQ%PtsT!83m?&AuPhLVCv!wQWXB)R=#Zj={1VPGX9p9zu;_3u84~ z$?n^8!8O1(odIZ>ZB=Aw>uZ~u^;@x&w2fJ+ZA2EhM#kDP6E#-09rScnS#CR1lql?2 zmE|=S!3>1edt9{x=|wfxf>~gPR+TN?i4}J+qY`HPPR3d>17S5WC40yNcjiKiEQD

&2c{-wZpQI}dG*mM}U!q(@C+T{B|QFk>Z$5tEu3t3QsI z|1e|W6O>&)2pWyC)gaPw2K_Ba5v0|`!0P^+)u{vFBqe^X>2PXdcIuj;TA|2wl( zauQjPG#13nf0F4%DAVOhNrQY88I5YJ1~U*=FRL9hQDe2IkWKECmM5Dr6i+du{Ar{Z z)mR;7Agm@P^alyl=jQf^o<;iMKZHN)bMMSk3uf|sOKx_L*z{+4N+RtMXt@+mN?O2S zeGKR)hlwq@{X3gLMrd!#?UiC`2kEO#=HFFm{lvQ7@#Z-uZPg4_3niK36QFoL(AoTT zs;Z@*Y&bI8yaGyka#OC^1qJ>yx#pq9E@fPTJin(c0Y()3!ghK(i_OES{0%IY}_)CnH zeVL^%@WL7ke5GTw>i;EKHNXsY|F5#t6E}^~2|?Yz11rXCjG{;D{>53b7pnAYBo!@Y z)z#;T?x7M;deWHw@f>5Or6bc`-OpUq%E522nghq21Jr2JuX?(LP|>I^_Ndafb^ z*#wx{t%aq;Z<(bk^5?^5m|IhU4OK9a;_ncPYD~n;{~gn7BCkIJrpxCc^{^%q!i=BC z)Qje0J&lQE7nr`g8HkzY>^$Hnas`gvYnV*9lKFOx%%~u$kN0C3D zH@^il6JLG7Y=uMNs~60DlGOD%upZ^6xY(3)T22F(UN`??qG?$7me~$zAd$Ds|L)ot zOG4sM=!yb3_-*q-Ur0n(;ICy@UR{S+SY)gnGqH}bng*oD{mPiMLC5I)vIYjZpbo-F z(+0-c$jEohFu!ag65%!~B9Kvm#WHI3CM4zG#0<5Q5Ey#2b~6&;HZzeX%tVd(C8QVD zSS7i47<~t@NI+tytF|EZsKy#G3v6L}eo_mj@2TF3)csqTNN_u1qQ=5I5RG@yQnm1{yRJ}gBL@mx66kcjD-(WDb2{SgB{TX(+zVvoSDrACI7AoGU#+8%1 z518%B-jfv*?$w4Wch$5iYFf)G_OwJ$0R`TmP6(v8G)TyaPweq zk!m^Mg5r87xaND+V(SJmbY%y$;AG?tkk^{cqt$20DswfYy%{P|BC#JfXXZ)cV)p|! zg^_oe0y(-YFFE}J+?@O32c@?QPaHPiVkl5f7&HE__(6Gb-t;$I1~*lJG|;;WD>F&$ z5%VL-G1&mgK5BM?C09IH($e*>qvpGBY&XQE!YUqwkS9!wxoEj~c^qnB{RS7vQ=0Vi? z>Qld&TYM!U^m25S}+S}tZEFh8T~4ojg~fI7#PEh`iqfbSYy?gfv}pG;5Z_7w&WIsOOU=a zPLa70zHm@jZgE115dbIkmi}5VrbvdQS#E=|&ADk7Qx{kuH_vQ&!Pp6kd!tg^ce7ct zjZhP~(qVZ@Eq~bdi&erDhb1YU?tC`u8p{MjR-3^A{$gQQ9QZ8J;v2Tdfem~A6mGxP z@*mb!nn>N;e?P#I-IXe?xyMoxPXiA=U}@~~G+ae`QxEz9Z)c&h@oHQ(3rQ^0!a~Ip zRJjTkk`}6Q(G6tO5X(Q*Yd1k{Ll|OtMZGBaHYin!8ll&7mPd`onu&ya$C4pTf5CDf zzK1v=Tlv)1$pQG(ie$p87DqQYRz9@#GJxn+uUaxYDPrFG2}Hcz+B0Hr+}2Q&!7?u zpEC&H&!8d-3<8vO{0u4y0R{o`cEnsDYg2N5j(*cm|a&`Xv2+HB`kywG-92dKTBj;+k1p5sTwlsC6QlFx+x?S4qCo z^rf!U&T-z*1afq^0g@rpBxO6lnaj?^%9KQ*60t zWlEYrtRpP18R7SV4=g>&j1d;A2{$zBU-J1mkeT@umhH2 z3+(_|WC90b!~q3#6rt@IKj_+5^pMh$nS$>R?O zM`C&j>GFYPkP$8q64QtNj{d+hy-yQMfdP^XM{*`qQULDOl{3Kr2BaViDF{yx?*Guz z1sbFi$g>|=-iJ}{#*Zx5sJ8=Z6iViA`+{VCY#9p6Pe*-hxjnV*3z(t{#Rp^!GR%|I zpCo@`v1t8uC1nX@(umX^E^uw@H|D~HfEl{nSzX3Vj~#FfW?%lqvd6H5ct5px;OF&E zElzMrEtGs}@pb6Ijx>vA-Dt4GTTlWV82gjsbOq10C4xNS6< z{ki4F%yWj^)cX~e4{eHyb}jiMEd_;Y?%tfNnIf@9pw!mT^=8A8T z6!$GN)Iz#&78v%dKq661q#m)17P`JBWt0Wh*DOG00`r+Dd_nZ}B2jo}l*LYc%1kV>Jg)gafzp$DXp#NU7-53R zUqzPl+Lpz1UkU0|1i63glMo@GpI8*_$D?2JhmN z(=1lC)dL<=%7jtVEJ35O*)RON+_Ic~R1Dq{p~o!CDcCSzgOJEujwjNZh(W1|{5j9^ zjFEyTzPD5veYFAfSfUHrBP*>&Objpf!mnnM;#$N4x_BKm5_{5DO zqZ%!8#Oy|kL`RB-?Xb{kU{iKjMzI}(^{#%dJZvet3M3b&Tj`k6)^uw^LifNAN@s1t zPsyANszQ&U&~ecf=FTL5%Hk}mH^aY3QISa}nUpRf zfh=oJAt&4VozW;Q6vSNX2tz^yCe1}je~Wc!LfuRnth88POIQh$_@X4k3c<-d1i?$1 z^&aLr8M*?<&OGZ#t#VsMhPbWFp`!^n9A}UXZfm0|1g!z#`+VzH?DdQD){_1n>)q-b zY`o1!d;Flx3X&-v%{q04VlA|WV*7Z~4xhTdaMdujJEPtT*^dHlREJnL>S$nl~Zl-@sVaX2hbK7>hI_7TC-f zw?oJ1;7B8b0X>AlksXXx?j*O~YK6g(CY=Gee>)W!c&&lOUh8HoB{nfjRiyk@D|A=v z!iIJ+k>cHmMKva3=HJcqnn>qCV7hz{QV(k)AwQ{C5%^Ii2`X@UNrJE@@ zXj|(+eUR+thCttklLR+u6R z3<9_nrX(F$8M*mR>-FlJ$r`JT)5)kit!5+q&brg;pjR&5X}#KaSt4D~On`0xL;9Dr z;}9h>eMMTTJWb>Ar?K%Sjln3Zjz2MSbq{h|8d5`QN*N^Wb9yTZW;i! zC@4NnmO#`U#b=PL|Fj|lZy&JO+gFFB_%qB>Nh|4kmleDRw_;1JOeTVvq%r;vq!-m# z4H)R;FCZ2^udtgs zz9Wi%Js2S=C*%KVy&|!-TpqW1XP!A*X#A)3L)h$#+yMO|J*X9>aK)(@GZO8qzX@vp3guJC1ea*B0NvicP= zKri+!v#jF`z95&QuV{1a?8+*N5R0N-g&Cz&k*G*A z=2{DkO*4gobFI_jl^k=811d8@c%C&Uu}gH8od29@jx29Lc8DOi|QBD6;1Tn_b-no6Ak_+HLeWFY?mi{-yo zEG1PkOSRrolj7gaB8jCC-Z>)gAwrU~Lk7_b4m<1Lx+oe@l zPh%3?98ot?Z1&IIpTIRf^! z&wz+{hzQCN(8HG*i`cr3Y^$}-F)SC}UuoSIZ){p8+`Za*0T!YQgX^pT!@Z?*k$MO#<>0WDkI~NZVY7M&L)$d%!uNumQz9H*ulc{KZ z5*hUlbgG`%ZyoGw`3XG;crxl6SGNqY=ueE5EJsXQ##sF-#Qe({3yV4iZ=AG>LH{p0 z2#t1;vEtQaRhZU6)*u=GYDI?DLDr~mTpgC;*Dy;Zb;Npr)dL1I}1)A&;K2UTuuZ2Tsy(#%dGRoU+0OM}Bhi8S9%J$pCWG8Ec+!MXU9% z1OqtrJ`au4kc3j~53(z*ZbU3BG1iWm*vMGTZluR;XH43oV{|^$ZU(uK4nnrw!&n!7YAk#NG3hW_*lzV0LmNnA zyR{j9h2QIRw{L0TA`Y1X=)EwGIYuE5`ve`jmrOTE{ zd#~UyCn*u;)+Bm)p*7F8kVf+PvW%E-OHMOJrwa|&+HOj`IaaLatFxN(VOF#3A2ywi zF~N*O+OSSi8`k<6R=4)I8E*v3w+*w=&azjB*(BJ)b%W6VecKHQuqW)WPi)JeXLh=9 z)n_(myx});A7|@ph9O^rJZdG6_sWAH&=xj9`+Srzle1NVd!Q5O9>YynOZlRchy_kC z7R1bdlCk1Hke;M5{;ZBcz25%^sTym`9STG}as4@+5WG?ySQ}>N6g_yC>f6+JspwB6 z6>ekJgXEfVHuGa8=aGo?Cljf}%zvJ-FlMlpNlkd$c`|354IEuuK(@IHOr{+(QDYVD zSg)Pwg-Lpejqc|45BTX-&gJUcWB!XwGB64;o=hsSWvb;l?OI$?VuN*80rHXG_9E-I zpgoGzNkGeH@|)i_Sd$mYz)7~=>M=~%Cm&3*)xh9G@5#0ah6>?lnE#RnZO1*cZEGPD z&L`i_u{~*o6=i?TvAvxL0rGaG%>_W1Txpw2H$UjRzy_r}2rjUVbc&;LV>9?9B}C`$ z)w9T^QNnEtZ7^g~L}pakUh=j4Y}a2pzuc}qfV$O)MSo_jWDR1{YR2m85%aHMEWBRF zXvL(SL4Sh|Ld9e~W5pZD_(e9Tm;{lGe}f`JD<(m^+Bt%y_#m@XvJraiAzuYIVoMvD zOawDYWBewh7u8q|dFlrnR7|jlxQUsr-Hg<^&5Si;CTff)4Pg47Iti)s5>pRtLrl_G zv=OoJHsRjIw(DsI8WpfvP2o$)WKO{LktqrR%My4yc%k1CTQCzgDNLxhfy=3JB%e?0 zCA_=d*10G2ocQ+IZib$d6?<)?I;q(i#)^c&M{SehLAdFJ?R{VEE_7N*hnl}i_aY|l zVl0Fizn8JHLr5>Iu|TtqLG6M+#1zAN2=8t)V@+gti_Pq7I-=8uEO=NEf$Rk=mc2@k zBB|&RW+;Rif0VKE2+|8{tcEh({4GAh6r)&C)L8K`WE6zeTO7p9e~ht`<48|BW@q!a zsxkB*XNpnGM2(f6Kt@4WO-$AAPO3oth<9p+WY3uL{s zelmFHEHM!0#>A|yP{)7~X74qF&9VqNkYpcaiGYHED$x2mR6?ll`$?T(QLqtKrH@Ru zKb5SSB;jOx|Ky!Zl@kcgPWDL#!&%ZN)ovl1Q|!+x;m4r{|8=VUip(?Bh6LE$tnQY( z(hS~NKSHaVrc0<#wGXFT0o>HZo@MC4o$7E`=N8a;Tf$3S?GGE_%T&|NKEx<}L2|m= zKc>H>-R);!FuS;i{Upp|63E9H_UquBi!$uJv^Nfx=31?{wx zH9)3k+Gnd{-OvwMB;1i@f5d2n!1NsZJzZ3k;BEd=hkde#WGFnpNR2i8LK^y7ODh(I9$Ozn=sQqpKI5E_BUU3BJUjNnoa7wTDF5#lce2i@26(NRG58t%Wd|_>Tv?JpLgG8 z2j3(-dG0Q|6+Tke-eJF*?xYtx9C??0xkh2I!fqEn_?Nv$5B1D2;qpWZ>1K3XPu4$e z@2X}~$aO8kp{MQX2DJs0;Dx+T+dv7hM_A&s_CM7`7`^pEry=$o2IDycIq;nQ5dB^I zynR*11}G$;7;vOH3?G0C8?#&6dtWLCgsRR=5XH|>ulDpm;hCOihvpZTVJ1skrQlS*EA+a8~4D*HON?b?)& z?FFXFV)^JQa_nRK6~@3Aa%z~vOnQG}Pcw>N$p^k>^;K-~qsIo%QO*5zrHDoSjFn75 zOe$rpemY|QDU5|@P}cEPl%_N2FGq?XttO^;CW(Gxhx*_wB;%i{$k6)WEcIQi!&3Y# zW~pR0x&KpmVS=-Y;o`cbTvBOq@}@U2@X2FWp;w&94!rEhs%>3yRTH=c$l&}UYLEYc6gG(rz-4=IFJ-QM(~e`^ z;q0aFI9@eLEh%&_L_4t#b6jVlWsu{Bq+IgWFh?(ABQNg(NNR>T(qML3beO}^260#w#N``9tk2)`FTb=Y96aUpv6 z+@1I>iJVRBDUh;$X_Ra0}<~q!`;Gr#}CK4(8@3RaAD#3v`V zMe@A>xj(x16jo1mJn7U5o+=@~+R-V|7`Z^MS?(AI72ewA4o@$>-R(4WPJpd^FVH}I zs<%xJz=#zmBN(YFmIF{1E)%+~aJ&}}T_<0za#T~dQ8%r1jJYm+-tA2Ba%HK`E?#+# zc_;6siJ}1p@V)$>6!~S83blJL2i8+yl4t8$$8&UVipSPDj-}A@ZmZ)T@y6C>;q4uc zJDH0;m~?%N{Jh&S2a2*S-$j=c9z-m>fw877i19(jqFZ$g zI#I$~805F zmvk-YnjkFP4<9yP`$3fcz&>`}jYkmU4l!1K6tVCT#+q6X;J*-7$Tgyz#IlHpG(GBlq?Sw6*5fhe<7PF6-}K0SpEonj(wn1wYKIF0nU(@d|P zTz!n@(=$j!(nNxo`Oh%*R?H-g1;|V=ZD=IR;HP)XIdq0_E3?A=iCFZUU_b5{VKj!r z!ju-rg6_t~(}MSsKBQi^cAzq8-vn=|$q;C#s$`UZy5 zp&uiCagrmB773T_aJY1U(`MKqY#-pfHD0NzRnkFmC>?MBs%07Av?b#vv(g95d8HQYSfK6-x;ciE1MCm<39hIyWBaNg697pMvSfLRf?! z&(zB&AoZ}u>M-LcFgDdb0DO1gNs_AWmpMkUxoYHvCL0qent*nKM1Z*mi(yTI9@AYcZW*=>EbYXNY?0 zYue$Y?WBu4ocDou@-lQ%NQIh7T4x}}moZjbju=^G-e=E6!(3 z!i?8g1Tzp;ZB|vrZ2Hu0zNiLURH(8*B~vW@9wjEKF$pvNd#2Zl83@zFB+@CzC5y=Y zhn%@r@joEr{zZxbc`e<7D`=ySRusIUUGyGMJ)OwV!UX1(OsIGj=>t)B6pK1x zs1L1DWFQ{_i>yQ#0l{K&-3x6O@_L#qKOxPv4vrq{;-UrE z$6Z{j;(fIn(a9k-YUU~3f|$6Gu@Gkb7RJhUBE7K20!=ywnTOv=X7_M`Pq!v!plO#* z2<(4!Q9oniH2fXkH>AhpP&Hs$6nD+v0K+kVdC#Fp7G`<+_ta z2_ThhR6m^H)QB8%yF8}g;S|EXVae>$PyQOGpSS{wzxKnVPrmCKWBXy@#eCOWFkemB za;0m$(cl+`ThCLo~nL>H4`de2c3da=ooI zabRLt5^Z@DJnV`k>+&_O%Ehp);xRa zSJzePm&I-x<}w=^$njyWSB#Zx*Das~A+2k!D@4oNq3qqA}VpS+n5lU2q62ZsG-uGRfWWgo; zpXoOXi#~8Y4}}Qn`mrk?R>k-I*mX4we7yLv3-%rt_I>OMnV_Uu@wuyeeAlMfRu;uD zpy!p2387K0T}E&nv$V+7!(=EC8pgPGuwBw~)R~Am)W2%=SeL~DN!~KgB|9*T&U0-~ zur?mer%UFH!@Y5Lc_rnb)BVGtKc|y-v~aM>^)oZ4pRriI*fk>wGT#G&>qFCJP2(NQ zT~EMd`Q9sBW0T;V%U8RqFO&Ivjq7e$ZCt;`b(cY(r_8^)JlQ3`K|cDMOe8=iN;F(% z?VYu*`wZU+E7!V~#&=P7{GbD+;bX$64Xz~#SVQn`ak;xP(QHRD6@4%48gu#OfatBl zKbu|87&4_TsdQecGY%H9DE&lUXyxu*}szhaz+1>MMV4UZP9(m8fVuocs^6DNm6bU0=&YM9u zz{q_y?+4@cfA`>0=!0`)c*Ai+y=P&n_QSAJBF>ovF=gOy;Ou_V{(9aG(1&x~(7YSr z=Z&Fx1MpoTONZtSH2mP zl}-pAdIz=$vnoXo9(H7r`mig0KvLWf%z6uE0m{_z&c#SEswviE7Ff)Tasi|#X{-!0 z5LWMTNM)=#$ZN2C2{IbiSRH2k5@wY95$Q=9t02zJc`)Gl6S-w`Uamu0ibTbq6f>E$ zPX)frrJM6UM_)kemb{!^e^#_g zZIv(ElJ^Wd7+{)`yE zg0b3Fh;geJYpX*{)R=#*j=`(R{YnP@m6tmdhv=lX!CCoVpy6M~M)0~$Mo z*+GTD!!JIhKKwc?#UEl8N}7=ciLzL^9K_Jy%oHP-NgCr1BcoA`)nEp~>ZP`;jFrox z25XNXquddu*o>K|G5#phi)yTnc)PpJw2Ap_cXzHmdIE`tk1MB;%jJ6V-|p_QzS<}f z0xk6dN?Q>Vql|?x<69XkJCF3j8Vg*|F}hmdJW~woA-pFS7;7R8J>0Nb;G#|+DthgT z2;>o9v5H#hUq~u?kr@hM#{b1w`6Z+m)>sW?`qcuLm|_$wiW)2C^7NHq5LRz-5HmlQ zr?Qe!NKfMOwABI_`bROvC}yI@O20rxL0COu)tAJZ;fBu2uaHbY_&USAntd(l%GpP= z+*=IE{CU~)TrTh2m>S)5;C`ojEFJ6HRp6!* ziO&_d4Q!u8Sd>0WF!gq?W@}rh#^!$R8&iBG<4}?yjcT%+Cm`k@$5_=w#G(@zi!9!OhX>qO z!W@QO54desNbOK3-2nhL(l9xVCh$MwO&9@9<;0<0Kk50PdoaDAp{~x3&U6zxsQ%IT zHy?EOPxjBvgDB`4TLed7{pf@4fjt8tOa;^CfLD+>uW1B`3;iB)cQg9R=c5}V&1JW_ zbpc}he8y@QBE~IbtSx|;s4@SKIz}sKOGw}m_(lU!U#Ob@>V%+z)`3-H_FqMhR?w=| zeBFwrq-tip_9tY4`w3X=8{LkfNMUTidMQ?1%9w;1udxVbAgtP~5@I&B?X)%6qC&MR zJs>c}(i)VQsKzAB_!_3yT0{Cg=7zdlEx8YVyYnlN9ltQ;G55VjTKhlrggaMmkzD$Z zdp=O)=CWYrdaIa%M zxyfE>BDwZs_giXHIT1z|zW><$kaipp5=OQ7xe+pPJs%qFQdwtnDZzx*^~^BJLY|NOI8X_rw& zI=`I1!dDwY&jKEf`qGt#5fejHHDW>y>;M>Oaa1G(~hm z@bYzF$1sa1dhpUU9aCSr(&I=fdW=~QVa6W^7Aw-rPawrGg|VT2%=iHCKMK-*e54Gph=oA5=$7}f~ zy2I+vOP}QbI{|+G&E>Ct-&b-D34*425zXfj^Pgj^>H=cX^Nd9}x4x|rxWE|qg^oe# z9Oc~V2?Kfv^@1-Ls|1JVXY;{FX_3wV)OSZKGLTV#sdZW`B^EJDRiyoFKGbQy#D>0P zBE?@J7S))Dng1)M*F@et2d2x%AoZ{&62goh!_e)!jKbsk9 z$4t~%Esyj#p6NAFrfcqt8uZUWieZgaVg|zMEpEXqps}jC$Yykon>F_vF$~OQM*ZI+ z#jwVzF#};WF~NCcl(QhWM|eKcm*xo#&VnC1Yc)z~DjCzO;9+Rl@99;L3$3TKy$Tj4 z8oBYx8oHnR7NkLL4)!f5%QS-Q#TR?pgra*3-i%kaej~8;+e^Ze4;BpU?5nCmXM@wL zDJlve7N}w@h?zgYSn*P%CuxiqbPPU^{-xyNGX>zWM_>l(Yji@86FabFnAIqHkOk|P zsaddSIg$!5W7dOY)U%M6OI9EeX*m>U2HW)z z-b;;Dtkfxj-b$tyCeIHkpl*CVhaY44FJ$_Vg52(b)kuRE4h|{!C{3+2>U_15x8Evo z|1A;by;U%-n-Qvc*ZB%^x~f$xsI-yCCKNE|;;{RhaQ(yrixFngJUFS~3R9poRUV^; zEd~n?(B)_&%L=YDN~_6#%L=YAHmxT6$_lIy-ChPshrQya6%3|H9_mVSq|t_Xf&;dJ z3y@*c3i>Ap*0^a4zLG3~BM?3@tzckJ352O&mpS0oQ)$5mgaOkFp6sN$LWGZDyX*{$ zj(E`k8U9UD4iRrnh!+~ZEtvT~cK-devS5(i7?`BgTc`J?_10MTZ1cK;Jd-q0xiWG^ zeL-(uupZrJu8uvJiXdWAJ!37H1%ixKZbf=gjfvZI4Bnl|+OP^ONw?nH`FO|c%cz)ohAYeIUG#>y}QVfBp) zsf<-Ec@38DLPof1>n*niuA>kiVWlp zV6jhoE0&U?%u+3xwxIxAdYr72c z%f^C_`^yt8L7d~nxWQ@E_dUmPhP%=dy_ZkQRHkG4l}VYxtW5gb6>?#W~{0&5sMZv78#3J;7i815*?%MqOlAH^bqb{31gMx$$w76 zYgsu#X8=mc@rn%OWMFE$2uq0*n5C+T$U;N1L-DK=pS z!s>l2pM>1wctm! ziVzRG^=@x17;98L$(X3?Bsvoo0_5Fu1;Y(Nq4``v*Le7(w_Ye{8cdzOZh(EoI>}C7 zmm70o@jLYMQ>U-`=y)1^`m$&fjowSTUo5yM;}4jNNG*WlZ=;vaGKMLW9C`O*!NvS< zml))Yk-EV2OYmjYJ1*{KLuUwY5tMkCf9KsyO8+YOj(W7Y`4YTv;AG~RO9fdb8u5YA zv)C7!fvz2HhI)UhXCoG#!B{(H;%vrhzC(H(&zLk%$KbOsen(17p4_28)DySO*9pOk zF<)bqm{lqaUWm3z^@XVZ9!dGXXBOH?db|f5#x6i2+yW-jgqf%@|3ah})>tLssOc6g z5?IJgS5+bPsKy#G3sf;ZKZ$~AsFik3@R)lC1IUWFh)IT*ASMNbcN0AOOlpQs1TU9Q zb@B}A?yFjgL_t@52t~^g3oKp{%?b--ekzLH;&qC}z6pIC{R|5wJsm<2S}h8YN} zHfz_$&c`Z!+*$_PRj3XTi5ja|hZ4%IV|roC0vanKqpTiiTWuh-tR84v1(6wEIAZm5 z>+EZn5CBOv(T$CWaa$NG-;P+gk+G)Ti1FJQi|)}e$Qa?>4BV*pW4T((yy1f9_# zjqSs1ufiZ>l|++n_ah5o%3>KKgdxA5DYju2)>t5njB;V7SC1J8tCw1G zAg0GMhNQuu3e}9^Kfn}QF_SbFIEWK-km)s&eOE!oXgN$ST;<8_!5u}S(Zj+W|M2*) zg|+tEpYu=x@$) z&k*|iN$ht|?03KlC4Oe?_b=sF7*gvI3_k8aXYYnFhV*W*!BA)K7ZDgUhktSD-M!^- zToIkHE@cLBmA7|pydw6RaQoX0=8zAK0 zkP4@XKx|KM3xti{QLQvwAEfbqIot~2vyr&;3~%{Hm^kWP1e)32IywAJr6Jvy?QMYr zgLi`rN;gq6D=Vl_ErdzI>pZphQlDa)RS>e36vuP4uplm8&3} zN%yySv(EF4(NH&aou_|(>!bqeUfE@WJy4x-#zAx++GOzbY4ElHamnt5>d3R}JcD6> z-tX3VzOpb4DhLk56~Q>_hp3L+RquJpK{cHT-ljpia;;zSwaEK_#m*iNmjwG8z2P!=)Bg=8rzeArh2f2z zM0#!XT%7`PbaawVYJPd6r%!>T*hq#=$Gi}xyJ~_m6$pVO{Fl!_`fT)MkS!ZM_It{w z&?u0ukOS2HQstBaI#n8qX9#dSeLdpoA&A0cX6OwYHr(5^VEclE_o&^#lvoNla`PsS z!`ogepTh(uTa{qE!w8SU5q}?eb}-%ZZdwYg@0(IU9k#{~PlGEo4pI{q4@yO(e3NGY zod&kab7Pv$8nJHnybO!PMsN1KX#*3~3?$wg|1KniR;4zx# z5*&t9C)7c~@6|Ol#XhHjUS^OCk)T2rB%ey2t8Rw0#?tFZ8tRg7X`7sUM;yJE5SAVM zq|)SS2~Lm`d_eLP`Wlsc8|Q_gXNTcFGtDayCqFKDp&M3|k#`0~1Gt=9mT!+JOPsjAblS>-v zgo0&CfzxOl1POzO3b*zydi@XwTN=qPUYY^gIjQgrtG0UH?gH73?n(<4Kzc&*%r;LJ zxpkW-FAvZ(T^*OPubJV%Xxe@EZk>FL+EWD4{l$5GevFz+!IPWD19948N@mwx#}_mf>a zJ+J(KByy>eKIILGrH?it;ZoG}UAN2gV`1!_hiw|}OOx+4+?N0S*1L9lGNDlIzuRLo zvwP`~cT($kH_5xZJ@x+|iM*M7v&Zu(Ez;6MV7Q)mLY{hhcq-({hQpM-p4FEZsj&y* zNQym@mc5?7v@DAispP7Co?Bpk%FunD>kR4PNPcP}yd%m_OGH?--xE%RFTsQ(o+N`| z5}A6`a|itFIqJCrViO`tY}zr;JrMikG0)rZQ-93UJ8ja*RJw_}_uLEQ z!Q-Bx@Kbx-lLJ3Hjzg(4>95cb=PXJLNHgp#6;Jp9a71+8Ix+34Zg>c@`Vw^~-IZoHXP9qr$0#!b31e z>x8f)sqi)ftQF1aRCpXTh4{{eBTSiNj>7kUCiT?h8170i!!q)!sUjX z5ZnRC=gzK>L8Vx@i)oP2M*_}58+p2aVJG2wXJHqkVT^ElUg3xFpt-_R_#b*%SyvWb z1&6m^S?Dyu;mcPSE`pyPy$aug*ipR-pMlZplO)``aJr$Ge0ojcTsRc$eG2cCS5IGC z_zK)aA$ViqWO}7TZYq?FkjQHW7KY$3?Uusz;ObM@Ik<4F5xQY2mnHTQzWG<7kscJU zOw1=M?t#mw5$?UWFwnr~EN>Un@>p7!R@9{%73KfC_RPSk>;3=kd|0ft*IsMwwb$OW_ntj-X6Vh? zj#*u64tJb7PeRHzgY2Z zN9&+)-V8$b`tk)!$kW~0^7k|)2jB0;HgAHfG$m-^-!fcpXZ>B)bu*84FL6X#flHP+ zqI=!UvxFSC4#n>~eO&Y$)4^%_5LHGohPiMvA>Vgk~WA?(&@Rc^WwMPAyIwH{` zNlP8!%};FLAv4k%?gFJxMOG}`u=vWLV@n-j%~C%L8omrpW*IntLr0m$hmx-^b&PAI zPctz?5UG`-TVm@M23}TVY_5L_PfA%*bbp zJYGqQa_+jPMS60%qi1bp@N>1GwqBL_Y`J3~FaMgaaIDuSw*OiwOl&PFZl~%?msdFM zx1(&-i(f!rLj98*{r-oMx*6pqIi7DT=RAL78RIpp*lK5$#g8~n`tjQ2#!hmqbZo|H z_sUAg2L3ih#A?Seob;a6j*CdWy2kM_PTI|nI=Wjee^UNh$7sAl&i8T0DGR>5c5a>H zf{$PMrjD-iP43K%j!X+4dT#lYV-Zb%+0o4XPKu+NId47TXaVFo=1|G9#nCDdLoDis zC3rH0r#l+afGrMxl-WNWZ|Z(%3xt#1k8N?RvjmrHlB-Ayex!^r_-%DW`5no&@Nd0i zwmLekNB2WF<}U-eK;naPySck_Z#3B;YuMbs%Qvt=oB~+j;9~$uF7()ip!oOX$GXd2 z#?O6QTz-6=&*CmiUju+7o8LGdPY&fC;6 z1TT2OOP(ifbClLZDm~4y_`e0D{SHSAVzFR{<26J6S5wqaj~znAVe16+3=oVcLz7K>E} z9j%1UMyp_0)%hE-Hb;}MAJ&}P65VG#Mi?tzW&Q3!#}-RKc1p*PLst90sC1oUyZdsE z!_U_!=f=y9FE~tke|DokcMdY@-k`v-iR-@SZO6lYhWH<+98RCMCl3V4ZGU`U!*%>X zkV8Qa;*V_L=c9fYl3Z1nDeH=(hx_rfn9}c2iHeUMP2IugV9K(Up7S_*(&7?F-v45D z;04D|(0S=gUFSve{m9XVf7<+&!XHY>X47Me6Rc2PcelDzh!tn1KzsbQI{RV ztp7u?Zq#O@&HAT>!tdG|Q(uoG%9p=x9gffPIoj%V`0;#(biC=? zu^h&AVSks$phIA|%%B56mmZ*ja!~E4w zO-m2*6)wNr1s>OUfe)=wx=n3PFZruuI@EgY@8z|>m)CHR<=eY^2dE?N)%NLj^+ikF zSMw~~L6t2W&!f~oSp5Wd&g$1y`_`+QjPVQSg z)T1>9@JR+X5ZYG#6caTJba%IGr$*p8F&Z18j8VbK_QYQ5Ny`}u z8LT#Uw~thVeesad%;9QRn$=Iei3^3{(Q2`;<%}BwW0B`ZUPFFe$cho_5nq^THCENa zxu4nXNfxWu3$rb*tn`lhz@AMD$EwL~veS7SXEsnDBKqEJHAZEpLI91@X@ky>aY&%5cUO3!_p$# zXoHJuUU2Zww((%nIQ7Idy#PZLY}>++Kcw$)5+;z%SKz!4#Xlp$O2!b?&C9Fvn!EtR z4dmrez<70419%{xU9u+eH7hRQ;ox}nK5W8V9j_)Leq$!6@$2(bYNuP!A=h|1MPTw% zz4)mH-<7@v+X9$J@k9L{*feUZu$-JWf#p;O30Kj%ppY9qT$vy}I++8qS|?9{%sejz z3b%B`<-AUpfL*SWWgt^NkP=D8Q#R-eA{1!qXgu2oh$=+^^Wey4bW-0 zBg7G_0PQhqT@CuJUv+-!){d?%1Ek1qki|ybvOuSJjQW87;M#gUk&ndh*L1oF^pl2A zDd;!8(fL=2pp8zMwL><7 z3mn-9oWmxwFeaSBwhD(h7j&UPm!NdyaUWpgED9D65QS6J@aCtV#p}hIxpIs%F%xGZ z?otDVETZZuYMWN+s3`=B4S@n(0Ei#=>P9b5P@A@MT}2@`(54V9Hwpnue*XhWDcE(g z+H}3E8iHRwFN;hyEP};?K*j@Ps8Q`n%-?K-`&?Ci)iJuHcb=Ik zN2`~sBRlAqd1%1qZFq-8ezV~}uL!?huHN51n=b&HhaBtH#*Za^b!R~~3pZ$7JI-FA zzK8vf4oNESuue@<2LnB)qtBDnu1EzxqB?>409gy4qPmZ$0?D0^sL$d3hT2MX5K@a* zsu4hYSE^lDX30va`R7VRCDpxSmHGg0xsXpzu%w^!ERpnjp{>AzFV(^ywMXoYJNkpCFke5aV;q1t)4@%$Bo-UxDy&~;oU+D zmZWcOR69fO)<)F@cM8a0@mTlWFT#wH>^9d8;}eclYjYRp&LU-M7>4ZtyKcY)Os@#up!Vs9}_` zO$}~`Ed7Q7@9oJ=Kx|avHkrOT##?kHRJ=`1mUk9>`D`ws3ES0?=7t>ZN&am^?zQcz z+>oo>t{NM1*s_zmjQDIM41{BoRKL^YPES)uSghEu{A`C>vtNn(QbG6zwQYE?m2W=b zo>jvq(YDy)8}g)S5qGtuMSQCIFBa+AlPd39PI*cl`nP>cEa?BTZ^?U5tjn#T?^|N_ zH+BU7w|z@#(QDuGZx*Rpy88EhOTI;9RBCRz9;QR-|7WGleanabvSoR0r)q3j;{LjM zo6hR8c;9AkyGuQ(-vN`mmF68fA4p-Z(kky96}x}grOxxUZO#cQbU&N{pDh>Nl&6ks z==LvC&jr?5K4--v2}u)^X3>QY)wS-)AE_ssyPMp`qR8H-OZP6_BD!?z9@)bkeMfzx zant;6K8ih2Q3e73vQ&|W1^+dw?;~0VXM#N%*?jb*{yw7ldS)eo#Zoo{#S&#Efd2h_}tS=8mSJsG_iZRSmye_lZes66VC$WGk#2vRqLD0DJ_H)mL=I*PXii z3g>#xU5lJ)7jaIU_}YRy@&Tw16D|-Z%0Ucf4iiH_R5B3*qUe^zUUz7Kq6`BJ2aEu- z0!-^j5Xs+yxDUi75Oqf(do*ASU@VJq?l=%llW&8H1(nXkco1bE2;%Lu?ILAO4b}EP|5>fNtG~Jdm*9;i=1KB__^6h}d4p zONhz)R{N{A*Jde7McLiEVy2?}06Z#AQN9PhhV*y9KhIT^JHQ2t6y-K>n>mW|EpWy{ zMY#o>4_prXCivd~R{(##9z;DT-UNOM_y%x!yrO&sY=wXaxDmSbHQ*ET6y*!xXvlpI z{3rNVfs=r*0C$GoXTZZBR+P)YD<@ev_#zxS1MGzUY2fPF zI2(b-qu^7(y^($&xbb|Pf$xDBK3`D^fe%9QUEqZ%;2q$*DEMvQH=$SnTnY!@0^SDv zCU9Hu-vGW0oDVz<4!VKA27VoQ1Mo@UM`8a2a189f27ChPSAoBpj}hS7@w<056!-;j z2-@^>;QeURtH9p@Ujd#7k1qoUphjiD?H@v@fzJc~6ZkP;5AZ+Wa2W98(EAiPd^WoN z8T`zn0e9Si=s{NCAYdQh!*NPo#Rg(UoTB&wKTdmlh$i*<6wTPLpQ7L@HagQo3~a{T z@fO&eT?$+c;G=p!weBezW9p0SDP9cZ?3ir$>7Z*p#RGU^x^FMBNM-ip2Xrl_XM)ZI zNO9mC03SK@VK337DQ7JXP?WWR<$y#09~%AHOZ1j51{|!_N}^$r20PY^T|!Sris5>N zyx8INb)*;~*%e;w1nS#c^potEL$$Vx>51NAlw_xSvD?#^Ci{*TJDvtaiLO$5L{6=d z0$LYkc#`VH4x>+_4BH+r_9W`wM>wUC=)<)}@@PpPLwdCrTcPuP#6T&1$%{Rjn)NlR z)BcFJk-2@v@LnAEO$M9kM9|p)J{V^q;MoB0;0Mu{eMJvh&>e_y8}TukI`%WF9C5VP z%5Iw5PxNjeje~7UUph+1`iU+hnV%0nH+;9=Lnh3bw_xd#m^pJ7ELo5QN_Gqn@_C}@ z7CB_(;#u?N#LikiYw;XRLo4)-qvRr=I!23U@Rg8)XwjOtJflU^&iODN{<7{~PvBQj zlVgB9z;VEJ!!cQcl0~-%h>0?AabU%q)!Bn++(5CZ8%N?# zu(>Rz3qkkH(?uAU!2U;oQlp$K@);!h$-pKdo7MQZlSi?GL|<7-p%*`to*yLc-p`hg zA6FFip6S`3s{u@h00+FPn_>JTgE z(bjtPB=s07I?B)%!Il~F7PN4v(estpb#J+#8FU2fy6j0b*fAv-h40WeLq$rXunShD z3QqqD_zmzouSDF*!$f_5Y5gO}bC2hv1??LnI!9lxM#sc%K_#%2iR3>(SV3ff2=u8V zg%ukZ`JCemq6oyP29@uSeXQsr4PSakIwECz(tTqMw?p5pWv`}fV~x{$k{9~~eK^(_ zj555~$rLzFyrtXrVn@@blFIHH~-=|;3i%4mu@O@@S zP7tl-QZvshp3$cir7fb>4luUYqpKGznHM=hUSJHB-Bd%q8T$m#?IG8pRyJzzf+W}S z<+Ijs@$B$4FZoQ+9UnN72h% z1Pz-gx=N{_B34>A(VP#EY>%+;kwb4z6g^~6Q@}<)lSg?G-JNJOd$AYaK?5ck%^rX; z!xZ05>n4eba(ch?itgwLWSf1w>NMS+Bqm4~Pk8YYY3yV%Q>y)7sI|b*!ov$6o-=fI zvUo_U?e^l2rpPH`qP$iM#yH1ev0*qghr~SEhwN6&PBhpS-Jo2uFj;+;8cr2mq)ZuP zJuyuXcYc{7}%8ARba7su7_SWrZ8IlfLJ6gV6$9ivuHeMw#G-^p6R$!8%+_@ z#c(-?Mi?y{gsx@w7smDA-u(b`O3bHhsB~j{$%d$LhIQ+vpJK5~7c5D_c_5E4glz`Y zAEZCWi}o~VhOoL(5WQt%jeftj7Hc75YLLVzWN{^H@%D_*h^o0(y&1U_GE*JDdL2H$n#MQSip46?-2#F?VEY>Y~j5`uG| z<)UHIG@DI_W{R$QOqp$%tvsqID^a^u06uc}E6QrnYmD?H@{hwpXc~0_YQu&%AZH_B z6CedJa4cdoUQs5FQ(T2KFHVG`(y4LA`g#7v+Ooo^G!Bz;5tYY@X?hDGxB3&kaUa*pUHX^`XBi8VJTLxyvOg>~N%0t%G|g6jLRk-s zjSDy)rQmbLL-Z1r^h=8J0;;eVP=T|Zfq5??odpO5JsJ=PZ~#ob+^dT667u(X=`n9V z(%Ix$D4Ni|*&H>G8(5zTdTgnwYl z%Rcs&d>&h9)_&0tYX&*M<TBRYGZVMQ?c`WPu$;B}iJ!KPTULqIcsmgwd14@Tk9W-zL($pF z=81W-B_l2)^D`DvluMUs{Cu%cx{>3>pGGC~#UeQe6qo58zdck;wJeHVAbLk~Y?8p{ z0NZqfO3!PGauE&jF`yc4&%nG-kiLZB^2?L-_5$(5dJXOO5AZ$(urA9n@1IDQ0jiK@ zVBTeB|tf#8jucH3y@KV9qt!qKQe7FPxd3&F#K$MZ%3(Yq3E%m_mgbU z;VFef%KD7C9#$AI`|KU?ufXP2fZ5lX_c_vE0H%RX2V?^h0Hz+>GkrAmm}mIdQ0|YG zp`H2Qj)jK4zC<*ph!w&{?nTCFPy`iL<0FQyE)xCZpqq;>&wZO)Cjc#DcKA5$l#w91KFm5{XmHjK)h#Qlzrb!2^lkv|phXy%cN6Ka0Sf3Sz-T}y zgP~V}XnlkHaxcA#Yosm~UF5=V5@cB>%#cq6eVb(g+)7*y^S(p+dq6qT49xoh=?XwP z+W^?u4nPCsBb^PX2OI2*X`jn7{25ncjG4D!=v#o%HSXOrAZK)8**a0^a(vXbPBR*~ zM1;t`GaABX-{Ask`VQO)mum3TqbNV3(4PPv)QW+5|3bPFkO{p@fO0?{z|`}qMU9?U zCG@^ifEMMW);l3j@c@q=a?VSl7E6tV*9fr9(J%}x{|m~msza@d(B(EQ6)mh)9(rl1 zh?F);Ak0F1#8CNCW3&prUdv9So{7f3LYx=-(sg<~(Xf)^#cxkViDF=9?t2wrvnLi9 z*THqE2Tj3iF(!ie=c1OQCDaMJK|fm})`g|EQm zoOctwClK8cz=!81J+wk}v2%RVkcaq?CsJ!fxhq77Y?1<vL3Dxeo>SMRy7v*=r7*C>^4RykU zf@_7-Uii75Rr0wH{Yavvwc>M%UXQwc$hoCoAQ!?{zmSS8{gSWw*gGIF`$W6CFqnrV z=NDX)+RXy^XY1g#q;9)JD+JXe#W!pd4e9$wMFW3Vz8B|<$3;VHxrbV>LxmEa6%DB3 zanX!2nQE~PROvPhho#Sodj3_{ee7>rtRyWxwN4zxjof~4)34$yMAyp2wRfkl$Ko-# z@N3d($ZbP}M;Nx}hm8P}*9hsxfF_7Pc=cI^ z`w{mRHtUZ^4cu2YirhMWrFXfjxL^9vx!Xc{`_aN3o)pJ?e6qG73~Pl-mv)N!w055e zvmwyQ)OnY1TJyHkpnXEnv|Y%1Xsu|D$E1(%66F@(>Zfe>4tfN_lM%@`cMH33ZaOp9 zJ%+Hnz8n7zynsO<>yW!F+1tYw?}PubdsPALZg5UBGi58 z8S$c}PT?~)*#$~y9EsL}6-E+omZ>1ooE8zf{UH)f0!#Nm5N==HL$SySLbpjKos~vE zK(}t5kt_gy&!?v8LaEtfB7z=$OpGSfBa~ax=DwOCd@Q)h?|D{SvIcsxP%AlRQJV~O zw#+Reh>mAM_*ZlQKNMT|l8j+v>bzHkaQG_dI_D?vLuA5}@bAIB(CLL9LDMooz4NrF zOS3sTuk00}e99!#+b`hED0l&ZhS}y+&eXVl=v*+`kV5zBEf7#+uO7PT;=O33ifnpr zuej~wIcTH)>xCMaen<~n<{^$otH44dU2;f|+ovzW4;ib0Uwr~S$1`=c=7pIc!V1~Zok0Go>A)~6!(&Nz^C-642ST|<-o}kn!b7oW%l1C zT3B*rmqJHcv`>t*SVqvv{bGfj)LVpE^s~d0XS4fq_lQORJ#Mqt;ppR%Mwx*jz)Vj- z`a$HsYREo>JkauV;_16RARhUz+3ZbuaAV*_R0lw3z)%3*i{_E}J(2JS)CY6~bO8(l zjDUd?=(Buc@%h;mFcNSd6i?8VY$32G?RP-r3D4_>pL38s7iw-pjnC0&z(l|UP;-;# zfN0zyE8oa(06rH#84!nj@MYa``Ibe^4~phZJ#QGIEg;edFcmP1v&S72O=f%EG)nFV zHnuyn-m=;KIC^azFo#4Shp)W@D;hAe3Jk_zFkCDFh7^zC+_!D^x_nZ$-B<%I&)anF zpxk}Gbx?#i^SooTH{gK8K!#xiAY~)_)9#Sate$si{2`I2WxZ#V)HW8j(oqr^4Oy|R z)dIltI~K+m4zs9pj%X@8?;8SxnF$yS0T)BoDVyD&>lDK&&nZgGL08J69Z>7;DKgb; z$OH@y0A|QKZL{00tOjljb3EWsa|%ByT2Nvx`sAP^*rF)RMZXU}f`1_|i*PD@8ADL= zVUZYQNuVE3iWLoc{u~rxbkF4LHoM!8rNSv|3(nB+%{ZsCUV+Kj!>}>vFnEQBImyN7 z#&d;(N)O{7N)4d6qZl45Ue=umV>t(99RbhOXuk(O=&}*7z-C1bv?{iMiamnD;$FeO zL-`^Vr&Gim#_W>Z!*H;Wj=v#F@Vx%IH^o+F)P;G}$JIhvfmjjB5!HGd4p)3{v%l(Np^HaEJIZ?nMMdPIl)S?t=r3`QtQLCE zWiax%%_>%*kizxChOLZ&?}!z0U6T=IR24<$(y4dEIN!XVZ1&-l87*2-Rv*nqFGP!$ zlHxPp%46`XcZG{zrIP)wnB$*UX|o@&`B1mjqP0=Y_r+TBpqhKQ=FwbiVha9MY((`7 zH}O9n>?^i`7rR{-fqMw6yWV@Elf~atWwW2OdYN=1N)0W+S-%@6y$_xTpyX4clhyM( z9X=%@Fmrx(O01AuNijF|1ulnf5>^qslHenm78Z$74HE}ilm%G#EySbA$$#4H8?9Ko zV3kROw!oE~3`8n67e30~YCkPB8K=?E;#D&r*)-y`XeTf9)4;AgrnAci(&MK^Te-+C z^b(&m$f7Jofr-XqGZpD&pqImebSgP5M#@bG4eV*u>Wpy8TEuY@1@b7v{_AC6aH6?q zL_bRi?K>m7%01mXh9tX|=&~rQV0(2Sy?5T(j_RH@Hb69FnEn^g;Iqc9vrMqlhUxLC zcF|L3MVBy+TbUuwrSo8qfM?M^&I--4nykg5Yq$*VVBMxGeY3Cq&H72VeU&&sCLq;4 zzE}*mT0-gB^P+28mad4Y^&lEW^5*VlBP5kW>D%*SkEI1|_`ukVEE@`OI{txZ-Ho*s zXt4k0EsJH#XD^MP(_`q6!TN0rhmp@g$RJCJ7$~>Ki?ElRizg@p01Y|JA=`~ElPN)*%8zWqO0r($zYrDEgMb?FNn6X-xPZBL+OPJ z#x_-z7kd(2h7~E@bA&|+1@N((nto^)Px4}48bJ?yXnO9&N2DPxtyFrkVccZ*9QhaH zADPCz*q27q10R{jz4$N=aoxBV8^%p`#C^5(Pot)#qLW;!BpU4b{(eeGfS;lP3P6tl zP61|q86Y0%EF;Z4hDyNX2NdN1fR9sS@Sq8Rk6F{PN&xUN7x^;{neXn$h6w=22<7B7 z-17$T(Fg0ISWK{d%mZ(d!QToazd_+3wu3Xr>G>@{HyVqFsP_2UzryV4e^CtSm5&~@ zVU$JgOvC~6!Mz{@v=wU}ZhZ3`tpe{AbnRobv&h+$GA@b+GIpilo1H|Xw=Uuejyq=P zXq}CH=sOohAH4ja@DLQ3qra8^xH-{3h8%1zl&k0@;Pe#iO7`W&>glx6`x?${n;lXSn|RkD|z}&x)@HP zzI+r>_$4t>p5f%h4vV!Y@5A~jKoLs7*F2xOBp$U^?4|nu5Lt4FTMKzUmDuz0aTX;A zI(($jhyM_dVq10Or(z!BfBaLCV=diJ)Bh=cv6dciPbw2rEtWiY?qz{r0w=p4xgthb zt$4xUyPu1H;#~_^I*Qdkz#%t;!)EoIcK0n8-`K3BAGzCoC)~bRRA2c?WZ*s8?xbHu zD!y-i@(*WffVDK$y`_$m>R2nDcZWB0x&t9l*3wyS$L0Kcs?!l{E&a-UJJPwTuC+AT z9Y56h&w7xEp6nb^A6{&p>+Ek`UwGEv{)?rN&EHo~Sh#}TDE&ZVsjoK86vq}|XP+f{hZ-+u9Rix61P{df_}!HNaWwb)`= zywIt4i^Q9?-2!j1S?JWClF9O7x1j3_o&DsdcLAm?Zutsin_YPl^;+cYBzt%idbiof za%k})r~ar?q8B@W-dp4xC#8$L*fXe2f^&$x1K9qXS|gdDdCvKax-E7#r1S)5s2sUh zd&!i2L$4<|^^LrIFMbI9m|*x->BWx4PODSDL9LaeB=@Yv&Q4SDu-DciXAilOOdDvG zwFsb>j$nC|jMW$2DRS~>ep{S&HpQ|u^0aeNcaFoVLAof@F`%;md@#O=v*>HUHvm4W z2GJ*{ogF){>{Ub0mA`b=8a+04{Dg^M|c9%gc@Zz_i@-s$_mBF>*lPLVG*+5?GbeeY7>69T)^kSESu7t}!>mfgO z))^{ga=m15QdY5Zo@D2Hu~R7Q zoO7nEX+%t|baf1EJ?ES&N1m)2e)79m7#e^JObR;hY%VRfA6l!LKvCz7TE~KIF8EI1 z)9TLNvPP+1(p8}S?6^>-ZUeO@^h&(&r!USsgQeM0FTn_^hFPf}I;^&|RM3IYx7X;` zqlZ6mHkJCLy#xy>?E^zU+lxI2H;L;)zg~@geX9JxIZ!SZuX+h)KrjS?_3bonqG;S_ z%+mNr66TCvIxAj2;w-1S8;@`=(U+j%D>3Ea!j$jb%rNdm^Kg+&nI+Cn)~ipsPnS49 zn-`FOEztgAK=m;?)KlxL=0o~3ERngd76F^lV{Ap~p#VNcQ(!MmUt>7(YNL@(_w~~B zfn>fHJC~m9rESMOw`P%={>VYpaVXJPBxRuDk<2a8PoXf{7O6cZ*_F(GRcGf@oO6w=5Ne?uq(Xc2@zv(yw zTCo5=O6bujtw(dVuNiEnvq7_Qm*<;9#Zj82$&Fiq_J0R(R9TOg-+X9vt&i4QURfw7 zYh#0-$|*5$V<=!4U^rj|fR8j9(pQ^UrySy=!5X7?hS&RQEo6tw_c9axI@Z;Y8OJhB z$<|M6D`jlpo99{@=vc^%*X>N{r-jRSPVindz12@^ZD~(e`e{AnP^Gx7 z%IbVQAUxUg0%0nQP6P0fL_MO7=9>gjv+NVJG+NV_*}J_gRN+Sw(V9MVUGm~b(Z3)r zy$eHOW`QZxqrcWw4z-sIr?~~Dd5N%S9DJDzFdyphPO zFX#>QjzX?hmJ5L&3=B8{z+)-MTMBcDcExq$r$Bo!?m^w<=H=J?q1{tx`T%XbbT$j3 zGtROZe!}MM0h)fp{0`V=p*f@u)TTF)e!r=+U4=gf+AY`|F8!IFAE@=h;^yK&?UoHs zV7?Wj4V1mxW5}{z2prX&<>9W$P_1=?>eE)`arn3nKBjE2+dJS+!+C6`CJfL5g6hIq zURarn3oj;XX|taKp~jI*W&&28_}kmc2IBi=T@+ZbES>06y5v zX3$Td_}z42lr~1*hlv0i^`>QGH9_M>Yt7rR`}1|KROG1ejK0M%)RVT4*5=8sTjnK} zS!`9dL1a5E9jj@SJ4S2UK#oSS$S@-tN{hy5#$4jXoAazf8@mrj?Do;aqx72O45KrZB#cW`k&frPev6{X=6XnHj zPfN#XD^!*)@M4F)uPD#L;B$cI0eG5H9+_m1)%4}jv=3^H=hLEC?XG;dG`)|$JYtK< z7%R>3GQJ28lfY6Iz<54WT5L}*j@Nq2r-CZq#-o|0WG&9-pL5@5Z)%HrPyG0&QMuGfu~FaRe@zr)Cn>nQRWV z$Tp*wL;X#5x)(c@mQB{0V>sF|SsNlxi*!%z=0GJR!_c4jh@~)C7mAIEn?2%6|LtPC3@BhGpkaj>4!y{uT*V87g<$4O~$G*SZ*6u6ZEVE zQ*}2jGqVcxthr{^4Vk8E37T&pTL~)1U|2}sCunmm$J~<_YhCTuufCxtR%@HAKbDhy zjn=Ww(OY)AB?xc9p}uRh=7Bdk8KSs;yhStDXwB-p_$|^6_?;{p*J$mBe2HY;W@vzB z&G_=)8%k7~1U1B}ui(*|1RQz?+O;y0?lRvTamamTLJu34ILBR%k&zK_SvQ-o2U z@q8MwP8%gRNpg{$3icqd`RG|~RlY_){{|3+G(Tg*ymF*(0Sb|3VBWV#-v$KyZdDQh zIe-E{Dc}ZRHy{}h0cZgj#0B6;Lz#E%`03AgP&Nx;=J!bd05A(-UIo%W0tQJ{y$(Mi z{Vy*$u2&_}KLgkvAM-6f%D<8R1yBr!8JJgv^sj)i6KUsqZP=_T#OMy3AHZ%D!N5El(!PKbkiP>^ zz$*q$F!a2OG4+ZlYlGHL)+PYrEHd8^zl5|O%=rT{Py_?>0+6l)hy|Sr$OOa#Og- z8Q5pDv+xPB7rK1#czFkTK9%}2%uLsV-ys0*B;{3XS6>w~t`B~LApC%f9cTezJ`yQ^ zli|~1!>3rt&Ig!2WrGfbZd0~v_{6+sNH+(tPZzv=DnXv<6Vojq(~@-|*8p;+Pd(AI z-at=k6{OI%6m84|76=2A1H!lT`0x(4`S>35%(H?Eul6e3J0Mprq;A%x3}w58(BVp% zc0=%dwgXP70Mjn>1kz3b+jZg$t{qfti42#uskZz}Gjz%|{;KBxlbOv+* z@DW3f9a<0Uam?7Eb+xRev>jR}Y^9ypp*6Pn7aa+*Qyt70Pip#8!;>1}DbOx@+umtJ zflq03<Do9soX4Q9|6!JbcWO?VoqEsg@jEsB#~3BZX8*@dOzJUnX7}E+ zmnJ04N}4lrHl{{y){6gp=l z`v-WsI`L_ZqFFM&*}W}<8+>mIYr%8npA52JLk}9VTiY*v8Qfg=MFTc{nPJdeLis%` z#Umfj8wALkqpkAe@chvN zZ;aGB${Ph?Ep_+u4dYyd*=IwL$3~-p%>gNbe%%9W5u}o~C6cZAw$d#WvJ{ScS#Utc zv~Z~veNEaDdB&VHbQ3urhj$f9ymThfh74_bM~+ue>;J!Kd26yhYn+h9kY%0Rd+2z; z44`-D?+>CKJxD8wN+AMVOw3JJun~MrKEu8$~(;(5!5?VTO|Wux1Fw0 zd=Cu=@?4kBu*Ri!bS2Yp>s3P~0r>BQl(0(G*&zEH0i)^h7qn5b5VgHtNGR~%HDbUs z!=Ft*zko|uu5;SGMBT2v+Dae)g3=)S;ecrF$F1dq2M+Fp9VuX+*3^ohFSpyLMam~` z^BsD5eA=7ibU!>@|P`0rQhXJ%FbGJAwJ}AQgBTa2ZPD+lC8(dAFln^TDG-cqqCJKk(EO`#7i` zKk*bg5I=7Nz6hQG{uY7{19y+)$FA@za>(&2c4HF9NPYIste-EzHJ@ zH6Cib=C#17nZUmxdol1k;4cCG6`8m!S1N(~0QUhOE+{4NYbkIA_}ze?Lpl+-G4kPo z@(SvWDk$xcb^=Eue;M#+s5e5almoX#M^XABV>uXip)~_|1~oeXzpCNK3M9M0I6|X5 z0z18dtq2;LLW#t`uE73iG{&n?UO4cd&`Sb7j&{M;k#YfrK~)Ju{yN}H6xSU%4R(0z z`$726^;SCjC@X;i5r?%L>KqubgYhT?R{>iguo~C~yau>OE93zmhQSEj|11l#KVvz? zMWOjVg)*<(>l&vu^-D+UL= zA@!j45vJC-Lz=*c3br58UXZUcNj6SaPZx^J(Ynj`5maMwRo;!3=ipMh3ZsJ76+iBx zmvS`y*IzSa@}ikcLo%5xhm8&00-4+Eu(1_i!MOlF5^2q0ZJ@l89f9|+goDkI>Ir%+ zAO_up=~Mt?K4Tc)F)(*fPV*_pm@CVeTZ%DvRL0y<8FL3^%sr7Y2OhYgj65^=lwth6 zM)w`j^qYA$)Hl}fH~03RClKdQB>n{^|| zK8srmN5u(Ra#VX@efrHHyCoTW0bc`S6E+jr+6sFGCqUR+pb47;Qj@UtP{JbEvt3)YKW^3jy!!|A zOx4WpPy5rHfI%Y$J^GCpHENWoX^9#kHbEjBFlxYv0Rlt~5F|>}AW&`=v{l&#t=a^5x4{@t;e7 zboshJe*0DVwzGWO<+r{4ZD&`#?QMT}>GGvZm)^#I?!M<8wg2XF_4d2pb>lz(r?N|O|<-ff&ymDLRf8c+=R{4`;xV^D* z_LrB>-ti}wD(8RuXJ?oHm&*F4KmTWEXO&C;&oyVc&!4;ezg=_o-=9^^|NWm{{4DLkH|FfX?e^-N>{i*n@s6BBc=m73&i>?b<&XaMPcKz! zZ{GM9m(Tt*U-rts{hMq5kX>25dgcH4n}3(AU%jz1s1~=7vw6YYo5hVS*}4p_V16T& ze9!!_?!0_)m>FL`{x5E*>{+}x%q=*^VXpIIi^F8M$}|=^z-!)moRcg6;&1-=57~pG z%Zj5Ly;dGw&cjW`f##eA2XGV|!s6)if6kBQ&dZf*_0KEI7q8|g{PXkM-&v`@&T+$! zzOypYzij!k_0GzQe__-4$KF}l^Do&?udZ}%`tv0JrorjPd|Uoa%inW2r~H>$x%%Jd z|H~JD`xlr0IRCfaP4R6@?m=#_#;$D2Z?ONyjro@s-^CZjckyrhb}zQ`#oy+~_?MUe z_X7_rp^cR=^pi<4w{@=gk|No1%{_zg~#gE`c|M7Pw z<)Zm{xxW04O8WDwD-XW=()s^+L!}L$|9821X!Db^oJ079j~D-*!O_PG&frI4>k@uG zwr=2;V(T8>A6rlG_P@$+tNx4R>dFJP;ue~}xVrM;-xW)A;7?vD*oWT>j^HUcf$#rW zvBMmGdNdp1sm{Qm~a#={A_IQ!og$39s~H?dx}FF z!+U~LIF5r@z{l6czH9ikX~7+Q-?rcpek!)sUb?#Sl{m^2e&*3)hxSWXCzWSrg?nuN z$r}ZS@CU&R-uY&+bp~IEn^?lfUM;q6;Op^g-NS}{!|vpzpl^5f#$`tZ)Uu@QVS?xSRae|b}J6La{pI2l*)t4|f*w}mfn3LfD7aS+vC zU0wNdumN9qq}ZVav$)5*@YeYK4B+DKIFsP+iDKU=yz)j;c!587PqD`uK0GYAgWrf> z$`QUCr)cfhS66=f*ZF;vqQ~RN+Hf4V+k?H>HG{glX7Iz`Di&M9&CSIMn_u(zdnJAo zdp19;$H{NX?`y#9oAJZJ$KyGm3!nOQaT5dhYW)7j@B^{$6xL&n1^j({+ZyVe*}*s2 zH-G#c@qJGhYt#;$*^`1P90%L*^Tm(cL$kPRhw#Z*B7=+X7T-04uf(Hk32%xgiA}z* zeoVNE<2}LTcX4*qf6KA!VFDj3p7lB?o~ZihTk%~Z__gAnC+PWj7|!8K#l{uNieufP zd*fGrfS-?_rTWU%l~2T@tpSr4j`7RII%m7E^LVj!0AF7e9K#RAFKG&Iij#8zUkI+@ zPv^zHJNW4*3m&0Pj{qIiL(A`d6qR{ewJ~Pbzs~teWW{M^eX4S4t>IA9q=69^=$ENEBL{B$BH1I=TD;8+M&&G3K7iz5m^jh$xcx{-$O>hlY?cx@8 z@U>3CBYdJ;u=WN!1XK9h_lsX`8}^cT_zm#4gJXDS+$B@^LOic5;BVq|U&BW61Mkr< zBHowY6n-g=eGLzBHt*n9FA^d3E&l&th{EFxK4#5??BW`yK z-yb}{TjM9H)~-n^H-Dly;zsS7$_IiixQxT>!iVB#9>6zahP$7N@72-3f5I=+Q+PFl@@EfQMzlX~3C#Vcx ze-CF*y!tia`+pYsr-K#Z`%oc%1Qp^ZP$7N}72;Pg5AmGBTc`|wfXeXI_g>=+-+;>S zEvO9NO|U}z04l_fp+fu=D#S0KLi`#k#P6Uo{1Ga{*Xq|e!>3Rgz73V(dyouYJpP7Q zAwGi&@iV9pzk~|$8>kS!hee3Lp>l%C@b&jyqYU3f%J3bi3_pN+fgQh(^G|_n%4UW5 z1yqP%LxuPqRER%9h4|X7+~bkqQ>YBzhRX0gs0=@Z%J3O1GCcLi3@gMhp+fuyDiH0V zLi`CT#Mj@?^Gv+>H=#0o2P(t&p`yvW5!rJE#zUgbMNLZRP#dh6?dLs1QGd%J3Of zhMz;-%`2!3zlF;12l&*dBY#ytaE(KJ11iL~phA2XD#Q<<&Y3Y(yqZE~_ytskUqfa1 z9gGZrM9T2B5Ayu45TAaKUvRwGwxL3N4=ThDq3-YuD#XvAGW-%M!*5_@_&ti}sS{F$ zuctiJi@2UNp+bBIMu_jD2#X`65I=#+jdQ3FzkypI#}?y*5;a??GkwA&d;4&<5mj6OZE= zRES?fon;%SvuqFJemNoC8TDp)hm=*j{<^Vh}tTd1Xwmb$%M3VA8$rJ$FB zUJ7cdDO84ELuL3KRIWb4Hsh9AHp!*l*Yh4>j%h+jg5_zhHu-$RA?>c@EiNAPMuW%w3Uh95v>_%T$5pF(B$ z1)&Lwpk|#CM=Vd><;rkDxOA1S-SNp)&jmD#LG~GW-Fq@6hYdC(97ufC}*~s1Vk{`{rNfd8IVGX9shH-30Ej{p7ni)WQ@vh{yFe>>01mnup7J7<;4l_{I% z{P$m0{-^UlEdJp;KRK&hsw~)+-^gE9{*|_WY<^a`s&|EjX&mp9zCn@VE!k?vd=wxR+&71b>(>FKmA|-b&?<9{oKGI-@=}M zRr%}lZ(b_CJn?0AR(bG@4d?GDzW4RXTlb{<{||Si4^-~@;y>7x&fGuTm9AaB>whS2 z_Uq4_RsN`w{+M4X|K-Q$Ee3W!JI}jQ9R0g0e^ANtf8oE6omHqu-twy??e}0L7zN)h3pEpKAIlIqzO|L*?+J>(6ifgUV=i{r`IQ zuXt;VuPf`_rTp!_EVl7()Nplu@y=ppnj`~F*$}RCZ|xvZI2V9-xZJ>ffoDyrI&7swG=cwPY76m=B<8$uU$dIfZ#?k*DzmRx!DTDkgVO z5&Q^MOxC{0sT7Ui6sneNL)DT!s9JIe9k8Kd>I^DNFTY3{QZcz<*R55viDkkf9 zmc?WfMlsnzswMkSwd4q@mYhQug;2HR7Dg?ZR1R3hWVK%wlPT2qwV{g19#k_8QheHg{$2&tHyK-H3Ss9JIb zRZDK6YRN;sZxkKXFPF7sBf%;rTTsPh7e+BTK*bYPWsFozPGJ<23#3|d4WpLap{QAo zNVR0`D`okTLe-M(1gn_rL7lThsA4jMDkf)8#pDv|4WSKGExCuPB~MVbWPMPc$W5qP zvID6li!{>5Dkeuz#pDF)4WT(yF}Z>&Cbv+v;E@>SQ84WyI41yxISq0axoS2_Px zOpe*CVsZ|B&O#NFTc~340QH7Y^{%p(Y(UkLEvU1s3sp-FVB9Zb6t!ehnPMIK0_uR* zP-WW=MlpFrDurrymt|K9wQCzjE!jg+;0;lfR~d@(YKG#5lFAaR!rMSqczdV{?*vuh zrNfJ*pq4^f3TY{%rI3z!3B3|5R-zlX$6g9*sruK-VzL8O_Vu9(yb)A^H-}M6u23Ao z7R3=9kZQ^5-Os=46$vsppd4jLS+ZFYD%387s zRZDiDYRUdRy#A<|%-F0qgl161J6b4R4uuMiHgYs zRxw%qdRa_1po+;BR596wDkcX|wd5G8mYhPpA+&(1CD%~3&I3CZxqk`egqZbCr}}N4i(~8FkTzC zNE!YBmEo%olo`GOmEl`Z8NT~K-i?fbjRBh#;>S=SehL-h7f>O74He>dP;Uqwp)!0e zD>HlwmEqe^8NLUL4A0|lh!x^9s1QGc3h_&*H-t7&A$|`P;!jW+zW!jD;hRtyz5|uv z`%oEv1QUh$308=oL%kuif(r3ls1SdE3h~v4c)pGIe;ZI4z6B%0cabvu04l?0P%p5_ z4C|$G3H6511}enwp+fu#D#X{nS%&x~REFW>vxh~Gkm z_ybfRs!qxf-+&77EvQV_h05>)s0=@b%J5UD48MTN@aqIC#P6U&{1Ga|*S=N8gA^(r zw4p*w4=TeCp)!01mEmVl8GZ@%hR_C*;q&@q4;A81P$9nl?J~r7pzg0eREQrzy&*J# z%J6fjH-y$u-?oFw@JFZ&U;7S^KZW@8J7tJ(LxuPrREQr!h4>8WoS8wzt0mMMLK~D8eW(yWf(r4IeBTK1bEr3jR!|v!3zgvyFfx4gVLwkb zkTQG=lHrSYW1vF(07i%(qX>&rq!7P=dJkd^72@*V_fT&LouD#&{kvs`Z$f4G4pfHkLuL46gcaf^P)T?W z;|-w|(n-IC3h@W1^S?SP-w(3nP4WSiOh~Gk;We2FU ztol9QFAbzSqXl*3U8v(7Kn3$Lj0`_T%EJqoDDJK=_T9lq)<+b{y7nmdYw>PLiXzvx zk#4C6m8^$Q89svw)-&jppeu_QqW65F9o&K66y`1JyeE2 zLFMZDJSl^9XYLT+NAbgsP#nPoDa6mA4rUE?t2?L+e}u~Lwa3b}Qm72yfy(enA1lOX zP$7N>72=mrZwPJj9U`#p^Bv+1p%YYwPaiKcd>bmm_nhRX0gs0^P$W%wCXhF?OxA+&jd-@iiqp3MsJC#Vo#Uz8!f z0~O-?P$7NrX4glmD7nA-)3@;s^O25#q;CA$|%K;ulbF2(6(q{0=I^AE7dQ zZOMZpPTUkK!?$6g5Z}WJ@k6K(pFxHA8H^CWL~6uupc?Ues0@FC%JB6clo`GWmEk*3 z89wRb2=ODN5I=zm@pGs~{0b_>Z=pi`0V=~+e^_St22_S`L1p+ZRE8fwGJNs)8)Jp| zDO8AGKsDmmP$7N?72=OjjriJ+$_$@EW%xE!hVMaT_#sq=&wj+?Pa%HBW`+1AR3m-^ z72@|$A^rpv;_E9;%b2llLS^_4REF$50u53YFm( zQ1M_56%TfBm&BC%5i7*k)@6uKp+bBcD#Z7oLi`X$BR)gQ@H40kzl3VU@1gFl6I6z; zC(oB5z6llLJ5V8h0QG%is1QGe3h@i548MkI#P6Uo{1Ga{*M3}P_!M%^6pz0)R=ny# zh4>*< zKS%LAwL%KsZk*v8C^CEtDZ_W6V&h=L`U>%5HY>zWq0ZR_R3m;372Jw*|$7bs%w8bz$# zB~Z6?gi6-6pOwivg-X_K=%t`b3#g@#mO@$zX({BDpjJw1KfhQCdMT)-dQc%ggNoZT zs1Uz|3f6lVjrbFaBdGtvN6sH55A$|%K;ulbBt)bU~3h^hX44>}G z4Bv*z@I9yuKg@TCD3rlOA%2Dx;@41(_#IS;KSG80+Dm1KPhm9TJ4hM650&9ZP#Jy# zmEq@5jre4Z72b}hIjRY&ix1d6N7b?UL zphEl@D#TBrLi_?M!>^$l@jIvte}u~LwO^GPK80lXc>Tc&@ja*zKZFYL8B~a$L527w zR3m-^mEreL8NT}KGQ&5ZGJFdv!*_q3lp%h=W`+1MREVEKh4=+jh+jj6_#IS+KSE{r z+HcAXKY#JY7`|D)cw>y$th{CO;*HE{7ek`HNj}27$v4_4e9IE`N|E?@Qnow^cbfBt_ zK1@`8jIb^YM=C$&@VmM&94Z^^pkCyU&=-au%km?IDnHs#eSBgwGJj~P_? zv4p-b9IE`-LthvUResc8Ez6H4RFvyLUllq6%3Cj9)G?t{P$(~kwTRpZ5ZW85Bb7ysPZF&DnDjW<;N2G!ti|Gcne_< zePK9^>LaPt-zdwECXDiRMzJAlSEIhYDq_Q zF@@9{MLu0%UkVO&DLC?_;7|oez0QxJOTnQEjt=yt;869(7^>cwLe(2<=qthN{QgyN z9NFwk!QaREt4qP53XV2Z!O?@h6dd|eaOg|Hq24suK-C+2=qtftQEw1O>bLT{)TQ81 z1xE+^QgEn(V+2)jOrQ#mIrOFAQ1!+Zs@^z2UkUzx&Zs+zYakjhQNhu|Dmc1O1;+sT zQgEn(V+vJpETAt1&v%G74R%oV#u2LCs5Q82btO2AdV^2Pz$!R;(3gTkUkVOYaLn@^ zbSXGg!LfxZI1bR4g5Snnrz^ps>Wvmuz0rjaX+CLyRd9@<3XUmM!LfjP(_jsi+IKKg z`w{t4@DK0<#V;a-O6_f^)ZT->5TpTT%FTq0iz4wc&XP^tX{mD=kcWP%mj=g^meLthFGmD&%`mx8C)I<+^TQhN(3wRfRX`v5An zkD*fgH0ANiroj>VQt%I5>(rh?rS>*dYVSd%_90Yi&!Ddahec}V z@wddj6dWqH@1ZXRhf3}B4_~X)-b7069jMekfO<(CLnW{&^p)UHZyKy&nsB)dcfk%T zwjZG{1;4^g=u&W~)ZT_l?LFvA!J$%n29?@pP^o z=u5$&F9nARJ0qynK7mT@bLcC=R3z8ovnCK&AFE zjMUD2I@X!IfW8zQDz@*SF9nCb6#NrqYEPk3dmAdX_n@x?hf3`k)Ro|9ad(u%OYBR* zq0aw3RBS&%rS`O4o_lSm)ZT->6dWqGXV6!IL#6g5)Je8Uu+FkQj63FpbZ68*Ssr>5 zs?6v>wdeaVGW-ZBf=-~~?)+lc6^vlLMG>r%1B_f-{giWU1L>ApP|3Orm8=I)$$AXE z6x30zpq4_h)B$OwPnRnt&`Uut1-%sXQcz1xp+fu`dPWB-SRbKsb=q-;Z=*PZ9x5_? zQW-*p_zdb`=1{k~f(r3ls1SdETC4h*i?yIKd>bmm51_9Ehsy9%_=NJ$BHtrI{5s!5 zmx4ou`08iN5Z{0b@hzw~4Z6^mg2Tx08S<6jP#Jy+mEkuDR*2t2UkZLl8R8pIA-)9_ z;s?-|fA%4VWh4=~drQlE@egzfcw@@Me0QIIpwa3Fimx4oO_!d-#??Pqx0W2~+`EQIP z#7~hz`~oV(uc1Qx4l2YSp+bD^@5&6HLS^_ijMv59C??Hw5AygpBpfdanD#I_KBHacm!|$Oo z{0SzCKJ~AZA-)L};yX|wz7G}RM^GVt0+np$Q1M^|m0`9}8U6s3;j05@cs{KVE5x^; zLVOoSh#w$@_%T$7pF)NBHB=biL1p+OREDp8mETlk+Y~Cpci^+H$K$V$72-!wA$|fC z;^$DU_Z3u#-$J$C4^SDtdRKYQG@#N|3o65Rp)&j+!3yzX7$JU&6yg_9A$|=N;&)IX z{s@)fYj>A-cnX!_+fW(42bJN6FwgLue;JG?su@yA4whY{jWD6(RG$Wu&| zO--oS*n!IMeW(mSf;wd(3l3#IK-2{1z(2AD}{f^=oB_Z$P!)TTmx*7b?RK zpfdazD#K5qGW_CeJpR>sU$a>ueg_rek5D1L_V?wfp27(6ZKRXF2bJN6Q0IRJmEmVl z8Ga4pluar-tPp>M3h}jj$`GGIh4?m9i0?r?GYz56vJA%kGDEsEmQWAU4b<`O;a$(h z`G3L@;_IU_f;OSzZU;K=!${U66v=vmBG=AQ^rlxxS#}E*tPfDZx_WOOtYiHK_EOMG zK`n)}6w*>iOCc`>y%h9PUoSI!18Sufd?1O>WF277=s*SQDO8AG!)V0sP#nP##Szr* zD>Hlwbub;M8|_17_z_fwpWMg!r?uv6_F7OOeg_retK%}nH=sg%3#t*{&3A|lKgf58 z3_pg-@N=j}{0bHsp2ze~d=o0ecc3zSA1cF-AQ`^Me-o?_KZgqOE2t2^g$nTps1RTMX4!~u zz{v0|qzvDM%J2iI3_pg-@Y8Sd_)~~quvv}xHB^Y-!FX*vB8B+cgs0y4pyU*)5#NT& z@I9yuKZMHg8B~U!!N~A@J^|MJ%mymN@1a8c2`a?bzs2iDe4a+~; z4X6;`f(r3ns1QGZ3h`s8M*I{i!!Mv3@oT6Izk|x~N2m;6dpO}H;?wujhszM(h6?dL zs1QGd3h^0Kh@U}4pCwcyegl=^_fQ%B1eM|IkMPtwjr`Tb$_E{&e9(sqF(arDKY;4);h4?8{h+ja3_%&3B-$Q-d2`a<;qkDxOA1S-SNp&Ie4 z1S`aEq0Zz3REV$6%Mjmy3h^zd5Z{H$@B^p}KZeTiQ>YBTfI8FHkPM&KA3La%{sCWgu z9r_UJcr&Q9JcE(pmq-zG0~L4o7rUNd1nYY8gp+j>MXv3j$hCc>TN*(n>j_k{oN)7%Ie1p+fuusu912 z3h_Ir41a{m@UuKvREXb0HR4ZD8NU9b zGQ&5aGJFRr!}noicwT?7Li_|O#Lx3RBE+wtLi`pg#2=tSe05c3_y$ylZ$V}FE>wme zKxOzW-yw+*Kf?;~OQ=Tt1}enwp+fu#D#X{HDI4)ks0`nM%J6-t3_pU(@Dr#E|7Qza zlaJD7(SPmhgYt;>s<-|+6oD>9pi2?xN(8zRfvQB3 z9gdgyBXTM7JTXP32y`g|U5Y@LBG9D>bSVP$cES?65`nHnpf4moVV5F5=G9N72y`g| zU5Y@LBG9D>bSVN|ia@=cu!XKfpevCVl8aL0g^N-Ix)gyfMW9O&=u!l_6oD>9ph}S) zbR_~^iEN@0$%8_QU5Y@LB2c9Waw!5`ia?hl(4`1;DFXF&LiHyXl?Zet0(~KI7rPXJ zE=8bA5$I9`x)gyfMW9O&=u+gT+=40*sJ9c^Fe;Ix(!(xApi2?xQUtmbfi6X$OA+W& z1iBP?kyi*x5q`l<=t=~-5`n&ua)e!qK$jxWr3iE>0$qwgl_J}VQUtmbfv!ZLV;yuQ zl3nIb5xuuBo>QUtmb`8hw5 zN)f111i2J}E=8bA5vaElrqGp0zOO2gpA!^Zim=(G2y`j(i?S3!@jTT=E=8b95#&+? zsuV$yc$dhP2y`X#3)Xij!e*BuyYifELYE@Yr3iE>0$qwgmm<)m2y`U^U5P+nNL+pC zq7;EHMW9O&=u!l_6oD>9pi2?xQUu1^2|MIU1iBLW<;D4*VwWP&r3myn3tfspmm<)m z2y`g|U5Y?gA}^OGSqfE&B+#V@bSVN|ia?hlP^AcRDFR&|TL6;)Xr3iE>0`+#n7P=D2cTgpA z$X|cr{e%W~DFR)JK$jxWr3iE>0#%A2mm<)m2y`X#+lxvBsuD>$*rf<`DFR)JK$jxW zr3iE>0$qx{a#4yvy`9j4u0)_K5%{1Q^;7Ip1iBP~E=8bA5$ICncNe7ybSVN|ia=K) z(3J>uC6Zv5BG9D>bSVN|ia?hl$BR+~x)gyfMWEhJ7(rJe(3MEOgBtZK>{0}}6oD>9 zUcD$qpi2?xQUtmbfi6Yz9aM=xS0d1r$gAW(mm+L-DFR)JymnEFK$jxWr3iE>0$qwg zl_L8`&d&$eR`|at4i2;8>*J&6mES#bp8T`3;!56E`SSHg&h^!6eDy~8)#=gm{LcaK zf0b%_Rq+J}s zE|@^o1#_snUtYoK1E{ws#!z*^6sj&* zK-C3nsJdVWRTmtg>Vn$i=dKGhLhER1uwn)xBXEbB83WFuoTNE3px?m4g7o4E#g8Gx^t_zw_bwLNJF6cwm z1tX}sU;^{HpcvG^DhyUoZ&7Taa^eB1E~q|r?z*4>6{lKIbwL-ZE*L=71!JhXUVgdU1BRgLf+dW)AgS!J z13pw?P+xL?#gu&$sxIh2)dd6SYz9>qOrbwu2&yhvL)8U4sJh??>q)Fp`vG@d%q*l( zCrulwF6cqk1w*L1AcLw4W-#i4B~o3mfvOAkP<6oxsxGJ}KRkC~(1g0fJ5Y5&AF3`G zLDdBls1F!I@jSIcstdL->VgAOT~Phex$1%jiu~D1pbCR7R1_UR)dgdyx?l=b%Pyem zf;CiKu!E`#j!<<$ZN)9<1BRgLf;OZsDC(~s)|otndW#~1{(vEd){L{O;mXjV5#n45KdSKg0R2lYYcj6$TTi^M4Li7p$P_f<5#p3so1?pXC%$ z!3|XxbfD^jK2%*Wg2hS3>(2!1EStl)V^&Ca#un<(4^YQjeeT=|yaA&wXdz|nE>waZ zT9nviwq0)M7eeSTHLWT7<^ioiD!5C^O6k|pUq?J&< z5VgxBBdGs4KZ4@?YeE$U9jJpD zK;7yXsxFv9%^5AA)>=ca1yvWEpz4D31s>6Hm1Y~NF6h0Ga5hIZFwFM|X89gb7tEmQ zf;CiKu!E`#j!<<$ZFBCrAcavEbdc(TK2%*Wf<;}BpMTh&Fa%W?tfA_H9aLR#gsKbD zpPaicXhYQnJ*c{12vrwk&>t`aRTnH_qQYR0RT!M0-lC}g^xSnp6RIxgK-C3(_Vg4OT`-2K3#QN? zFa%W>tfA_H9aLR#g!d)!hns6#p3h^*K81RVq779S^q}g3Ayi$EL4UvyR9&!ystYzy zb-^C0E~x&D9ilEs8d!xv3#u^aLe&KWsJdVbRToU5KVS%|E?7g=1v{v^;0RS0)P7D* z`)oWT!)i6rTNG*WmA>fk#e?y@-G>qHM@aF00u}G)Q1N~R74NrDZT|yQy089%->m+S z7c5>i`P>Sqc;AJJ_XDVSKZc6;Q>b{qfQt8PsJ8zOD&8NV+Wxg23+oSgL8bdPEdP)f zR=giV#rq5@-p`=o{SqqPZ=l-#d#HGSf{OR`m&$bCgi7}vsC1w7vEuy*D&9|^;{6;d z-mjqI{T8b2e}Ibj)nAtJz5&(tZ$YK|E>yZ7!151yVa59?jCj95iuY@%w*MabwHGR> z)n6{-eG@9)cc88!=tHIZ5mdULyv*~j;{BY>iuWt1c)x{e`yZgu(+K&AUJRJxzSJnR*(zgY2p4b}GFL4~3tRJ^bKic?8{$O|gox1r*F4=Uadp@KsO z6&z+z>1O#W@{i*EhRtgG@1f%T2`b*#e_h7=CX9IBL5lZ%sCYkuYWvTj?yeP7y5GV` z_dNe%#rx`S%6OkbeP0_Y-uIy5{SYeNXHfBe1{Lp@P;LJWRJz|ooiis`{voeJ8Sk4= z@xB8U@B1*~{Rk=EPoU!c94g+gpyK@&s_lQs_l>rH^|xiZZzNdpz6BNUyD;MY02NPE zl`&GhpTdau3#53zhSB!lp-7QOq;y|{CUoGQ(11jFPpw6-`RJtF) zxL?L7(mfYSV;%Ye>VVf!L3#%x-XD>|Y3;Q#2&YiHwqa!M9*WF8M3Hzi6zP73;)WQM z#md|ps9yXYDs!KpGI#p=#Zpj9AuWZp6w*>i$Gn7I2^K4nKlj*6K`m83mGQm<6~y~c zk$VIcx#uwA{R+hqY*8G+0V&;Ae_tL<3c1nZ{A**y`yN!hA408_L9YcB?^jUqeh(Gz zPf+o`{zjSZn^5V#1C{RkZ}9q~c%QLZ@qPvs@0U>VegoC^-@}Oa)i=v{-++quEvUAC z7b@KkpwfK?i*(QLe})zBmr(J357qWRLB;!e^*YD<9!3Z9)Y|C74N%H@qPdm@5fN_ehSt0UqGe%HT+22*bYXz=MQ;d z#rxXL*E!y&Q1QME74Lgc@qP#u?=z@)KZA<*OQ^R01}fd}^BrOU=>*F^A8K{s7AXr2SjJsNTXE5b3^gOLCp3df4iz9_Xna=&2s)sUGO59_Xna z=<5sM?Zw|cIU*1ByyrTn`xHjH=Yx{4r+T2`{SbPp2YRXpda4I{ss}3G@1d_RfFA03 z?{!Z1P3WN>_*@bnOWDVs>Vb;)6R3DUho0(zp6Y>~>Vb;))%tag_YLUl3!sO3pwfLZ zz@F-Xp6Y>~>Vcl>fu8DtiuXt8sh;=oAmz^k8sLp@OGz6UkbgGl$q^KXVd)dT(7 z3-uzpg`Vnxiucu9uXDU_Ku`5RUta({)B~07$IwGPw{re@s)x;<>Vcl>fu8Dtp6Yo& zH=(H>=&2s4c;ACcdqe1<9_XPSn5X+Z|1YtpdZ4Fzpr?AEr+OMZ>#E5J6&yNH!J!Wo zZ$?n*egZwz13lE!xGr(L-?G_LJy26Uw{Ze)iu~>Vb;)Bj~9f=&2s4b7loS)B`=#13lF9L4Kk{Q$0B1 zeG7T22YRXpda4I{st0X{Th0x2YRRndZ;Jm7>ZBwNmI_hc%o{v(NjH8Q$0xW zK7*R-K@lUD$WuK~{o+0JP!IG_&xguWwh2AdlVDHvKu`5RPxU~>`#JPf5A;+IRGoT& zzP{kY*SUG$fFA0B9_oRl`{MCGz@F-Xp6Y>~>VZ1d*HBYEXmNMZOFBYN^;{{>{}g(t z2YRRn`joxG`R}P7HhZcEda4I{st0k>Mk?xEh)R7ONjyHo5*^|l) zYpMq+DsP~I@V?x)a)Ob$>mT9Cp?HC7qDZ_Q6p6QwbVDPk%sqjgw1E-1nLoo`3aXMg zK`nKAxfIe;NJ}9v1-%sXQc&rB1+~%^7R`I|XZ52*v{7+CHlQMR3o3FCpr(3I9KjUD z5iF3WdY}$w4|Ss_sB~X%UFUS)ge+B@e;w?#pr?AEr+T2LdZ4Fzpr?BB9W>SRF?P^U z5A;wE^iU7Vcl>fr|IFkMneOPw~r3p|3B19_oQg_ao?` z9$2J%e*Y`%sUGO59_Xo_Pn7Y#0Tu6C&{I9oQ$5hv7eEj7Ko9jm5B0!A@&1TC)zdEH zeF|@nhj<%$st0o1{hl=+n zsCZxRI^H)C@jkBvI#B6;0R7qvc?~U|f2UaSegPHl*HGR29aOwOLdE;q=eP-djwe*S zZ$riV9#py?LZ$l*D&5aMmz42-$!5j-4OG0}L&f_ORJ^Z$zD#>fsCeIjiuZk}P&9%{ z_Yfe>|z5x~Q zTTt=73l;ANP{C^q74N4|@qPgn@7GYx`yGsQe?&_6wJ+xBK0YWi#ftZBsCeIliuc2O z=ZNipkB#rqRfyidPeo_lSmbl-zY z_d}?3pM9CvAI19_n-%YuP-oc&>MYyCxL;04cSijy<&ig`j<*Aqqx&$@{RkH(tS4M{8PN2u~qSY2^H@*Q1N~b74NHGE8~3wD&DuC;{5=sc|V3q_fx2J zzko%$=l8$H{vc1Ncz=Y7_vzo4@xBce?|V@3eh3xsGpKk!gG%>HsC2)9{v1!3+#d1% zgca}W_muIz2^H@`xR8W-$H+mCyaE@>(8i+_YJ6c--3$w zU8s0J$ajc%KZc6;Q>b{qfQt8P=+E(lO7};obYHudbf3f@T}ZLweFrMu_o3qb2rAxB zpyK@;D&DW4;{6u-b3CEaef8@+4D>mkQ0YEtVa59{RJ^WUTQZ1(6qjF-(3^5{ME=si@tUqO%FLpARY(4+U`GTk?z zNAF>z`=rvviuVKP(R=98d+5=7=+S%V(R-+Pe}sznwQmr2BHgFZqxVqhz6U>*L@#%U z74I|X(R=98d+5=7=+S%V(R=98`}@my--I5$haSC$O83bKd-NW9^d5Tj9xC2%p+@hK z;(hgjGTx_9xvvfN8rp*%y@yKo86@2o&%ZP5(R=98d+5=7sCa*Z9=*@Xc;AE`y@wvX zhaSC$9=(T(O7ko!?`sd0@jitfy@wvXhaSC$8ofszy@wvXhf4Q*nCSjGVUON_vyAsm z=+S%V(R=7B4tn$+dh{N8^d5Tj9xB}*VWj({Qk#_VK7~4I+EBr(2R(WZJ$es4dJiMs zFOf&@p-1nbNAICW@4uC&`}m-sCe|I^fgZhw9=(Siy@wjTNAWzhLLR+`8oftK_tkGZ z-8WFA$QHWyTd{r@D^U)hNAICW@1f4w1@!1W^yoeG=soo4{dc$pjow3#-b1DPUV?Qd z51~izp-1nbNAICW@1aNUp-1nbNAIUaywCH06Dr+zphoXee$MCT{|I~Z9_sv`Lyz7= zkKRL{ve2XV50~-22|aobJ$es4dJlDyO&;d;M`zib&2h)9knW5v)S(}s9;DSr${^i< z5${__;j{}Cga;S9j$vf(DT>Iwc!cMlNW5z{M&jKe-O>>%bJxCGX6_U!bGMn6t+j?;3wrb(di4I$GTpbKNADr&KI+eW4~^dEdua3?dh{N8 z^d5Tj9(wft`(?aOp+@hKNAICW@1fHDoJ$lb(kKRL%-b2OvBlPI~yo~p4=+S%V z(R=98d+5=7sC2)CMY<>d@3BYkp-1l@E8~3=dh{N8^d2hSkDy2Ip-1nb()|j0^d72t ze}IYNef9A&-Z!8}@1aNUp-1nbNAICW@1aNUp_=z==+S$qbbo}A?s@%rqKx+`^yoeG z=soo4Jyg8Uphxea;{6hO^d5Tj9(weCQKtI_yd#NW_!d^Y??R8>Lyz7=kKRL%-b0Vx zLyz7=kKRL%-alEU`zBPn=ks^ci?7Zq9llV!??a8=BahxgkKRL%-b0VxLyz7=kKRAU zZ&suCFkUrVDDmh$_UJuSydOi4-b2Ov1@!1W^yoeG=soo4{nIS0(R=98dl>1S&tJhF zy@wvXhaSC$iuX&Xc)x*)_j~Bkd+5>oW!b!MLZ$l-RJ!lOXOdabBOhUp-b0VxLyz7= zkKRL%-b0Vx|DcTb4XAkEf*!qx9=(T3_sJM5-cO-M?~&sD8hZ2|`n4D8MYR6IGTt|# z;(Z5t^d5Tj9(wd1lJ1M=-#J#iUqO%FLyz7=kKX^NjQ0)b(R=98d#I>1fF8Yv9=(SO zdy60O`s>kqHhc6QDij@|NAFjhN*cX~9=(Siy@wvXhwf;?MWp)~RJvKhJl*H{XM;U@ z4?TJhJ$nC48Sk4=qxZ<8_t2yF(4+TIch?Gf^d72te}IWc@1HH>eG2t`ZRpW^=+S%V z(R=98d#HH7gdV+z9=(S;XHGD37k{_*xia22p-1nbNAF?8`w{Z!J@n{3^yoeG=soo4 zeZFrr@2l%F-8bOxejNF`g*|!?HF}TYiE4~IdJi>vj}-6MP^0%KQsfbN^#1uWP^QqM z_wa>dtlz^rXNSM(>f*eU@O4-b26kLcNG?p-1nb;(hhEWxQ`dkKRL%-b0VxL#6vM z^yob#-51Zl3+&N*=+S%V(R=98`&YOLjow3#-b0VxL#4eT^yoeG=si@rU%rx*@qWW* zkKRL%-b0Vx|Bh$fc)O+v6&yNn5l@4CsCYAidA#S*HGv+zhaSC$dAiRZe_QO)d#KU- zV;S!o(4+UzqxVpE*BE;A9(wd1dh{N8^d9QlPB8K4{i|iXZ$gjWLyz7=#rqNT=soo4 zJ=8g~f(l++=+S%V(filP$XBkKX^jjQ0)b(R=98d#H3jNU%rmp-1nbNAICd z^)=M!J<>^kgdV+rqdfmp=+S%V(R=7q7UtMX0hS)OGn zjQgdHbZ7LSj(iApyctwvpTR_<_fS!J0~Lh#7yF)IWbS(PdS&h=ip1MNk$C$^H#CCE z+!LtGJ%@_iE0}mGtiw7%Ep=156w*>iOCc`>y%h9P&`UwBw1sNkS8u*PaT0Ibe7z%g z3o3FCphoXe9KjUD5iF2L@1YK64;AlEQ0cz@?(3cIn^5V#lVGm}J$es4dJjE%4?TJh zJ$j$-pwaspJ81MCdh{N8^d5Tj9+K{h*PjXY=sncvJ@V*1^yocQyszDIz2kifJ$es4 zdJmQEN6@49Q0abk3%`Gl-m}@G_t2yF@44Rbz5x~QThOET(4+UzqxaCG_t2yF(4+UT zNcZIbBlhV1d%3kvTulIPkJq&}^yoeG=si@t&!9)|p-1nbNAICW@1fHD2__!BuV3$Y z--L?y9q7?}sCYku9=(Siz0Y^h=soo4J@n{3RJyOekMp4TWb{Z~bC< z>-G5uW%7Sq)KPp;X6OB!6Z#|_sCGVbJ3qnh=R^1Nq5JvJ{e0+teuH1O`uUI-Ql7_K z$nAXSc0P1FAG)0n^Sqxw|1Yrn`Oy7*=zczQKmRrsRzDxQpAQxId(iEC=ypDIJ0B|V zFK^@V=YBq$-Oq>a=R^1NKXAPRe-pZ&58cm)3j8DJc0P1FAG)0ni@eX{Z;Rc}hwkTp zkh4|4Vd#E7bUz=upAQxI$I$J3sCGV5;9oa=R^1Nq5JvJ{e0+lK6E=D zx}6W*&i^oH(({qOQtW;{bUz=upAVHKGN>#ugYM@;1^x|mJ0H5858ckc!a=AeO|bg; z$o+iiem-58cm)?&m}I^P&6s zQ0L4ED)84o!jtpUar!{F^P$`MQ0;t_xSx;R&xh{kL-+Hc`}z64>gV6iQ{7E*?I2X( zZ$Y>7q1yQ)Sp;OAuWZp6w*@2OF=IMy%h9PP)pT6SqA#iq1*XTc|X}>_47Mr;BP?p^P&6s(EWVqem-#i zKU3uW;`iUg?&m}I^P&6s(EWVqem-Z5_w%9q`Oy7*=zczQJO7R{@Tbu2eCT#Q%-i|J>koE6AG)6p-Oq>a=R^1N z^BvUBhYI}lE_a>U`Oxir=ypDIJHJc*b3dQW?&m}I^P&6s(EWVqe*Wjmz@I_|{x)#iq1*Y;?R@BVKFrg7e*Z7A`}xrQeCU2YbU(kx zD~hrcbUz;|-uI!~`Oxir=ypDIJHN;M?|wd;-Oq>a=l@+9?;FtleCU2YbUz;|-jAW% z`Oxir=ypCV(mnV84!fTZ-OvAG8Shi*em-?|C?CJp#zm1`q2G+sCYkt?&m}I^P%GX7P_4e z)z1HNneH3V?fftE{Of)`n{|JUq5JvJ{e0+tK6F1H>f27x?fkDqyywx?gl^|UxAS41 z?(@gr2)myT-Oq@jTT=Zs$X_^O4*6Q0@G$^7vOjpN;P4L-+Hc`}xrQ{JY9iwh7(O zhyElT=ypDIJ0H584ArR2G!0-O3EAP9{a_vCs;&o-v9r5XYMA7#M?oUc>74VG=grjLpRx> zGWQC4DX615LACSmDOWOX zxAURf`QtL(Hz4W0$p0bzW_w%9R{SmsI|BW);r_k+u_;TDr z?;E`SDBcg*?0!CUKOefE58cm)?&m}I^P$`M_g}R0q1*Y;?R=Q0`{MNnyPpr;&(HTz zKOefE58cm)?&m*H#`^|zJ0H5858cj(Zs$Lc=YRF{+3bEkbUz=upAX&7hwkTRWxQ`f z#rqC)J0H5858cj(MY`wlx4>n*pTG5sb#{IHVcxy5HCF6*mj5ZN>Vp?008|NpTmnFs z0MI1>EJ}d<@sC{sK$if}B>;?<)+2HW@DNYjDgmHN0O%3`x&(kO0ia6&SWBn@@)7{M z1b{99pi2Pg65yM>>Zk;OE&-rR0O%3`x&(kO0ia5NWQAPbO``e0w9+F&?NwL2>@LJK$igD zO31Y;0ls}v0zj7l&?NwL2>@LJK$if}B>;2@09^t=mjEy?0rJOx?K|9rN&x5*0J;Q# zE&-rR0O%3`x&(kO0ia6&=n??B1eoUeZyL?&X_+oM&?NwL2>@LJK$if}B>;2@09^t= zl>iT4lmIYF0RH|2b_oETr=Uv!=n??B1b{99pi2Pg65x@G5&*gcfGz>x2NG(4yad25 z0ia6&=n??B1b{99pi6-7@*}APfGPoyO91E+0J;Q7uuA~w5+L7MB>;2@09^t=mjJV} z1VHgT)kZD>ph^Jb5&%XCkj$V;0OS$?x&(kO0ia8O@0F))6S@R|E&-rR0O%3`x&(lf z0LAP73cCb=E&-rRfJZM%0O%3`x&(kO0ia6&=n??B1b{999_8_`ksh|X1b{99zF(gI zDRc<{T>?O#vd|>}bO``m0zj7luqXj|{W)Tn0Q3K!t2_EucCF9-ZtH4y+kKKT)>~6YLAoqCA0#dQ~;O?08;^AD!}Gh1%RmlFl)h70GJ8@ zQvo(ye;MiF=2U?DJ*)s=srvkuK0GJ8@Qvu*ttpG3;0Hy-KRDkWX z3IJ09;7=Z3fq(yqQvqNq089mdsQ@q)0Hy-KQ~;O?@Nds5089mdsQ~cf{`=P{P6dFe z0QY-X0bnWsOa*|c0RR510>D%Nm0iYG2HoxD)3IJ09U@8Di1%RmlFcsiy&nf^+ z1%RmlFcko%0>IC`tK`28epUf~_dj-DvjUugL$Kw3j|#BfRTW?dO9eP0E5HR>0qQSR z6`%#*_V%)V7h3@a&>vY1=v60hZ7Tuz?Qw z?4cFl1g!v9SSmo{n^gs9Ln}ZZ`u;qEzRyl!sQ|U71-1gLp+i19XazVzE5HR>0qWnX zDnJWb0lLr%Fo0HoF|-2ApcP;Ve^x7>5xT)vfIYMVoS+rp3QdHKZ&wwd4Xpq@XmA=r zE5HO=0p`#Ou!2^A+7?>@4$yRQhNg=fv;s5_RR!okD?lGw0Y=aYFojlt1uPX{jhyk> zK`Ou_e;lzDp#Gie`D#HcKo?p82G9yHhE{+%^l4r}E5H`|Z*~vR3UG#2fZKO!yo{9! z(EM&y0XonM(1%_$BWMMfLMy-mS^?J33b2Ev0vwSQ-~z1x_3v2$c>ir-D?k@o0S3?~ zd!9cTsU!OZI|Knq#{y3h(RfaOZBJ&kdx05jx8zl2tR4fOioLo2`uS^?@mtggKlv;uUY6<`3Z z0Apwcn8Dd^%lX?9dzEdVSJ@tx=jDWaGOo}c(#ENJylrUM?!i(4hR6UrfrjPzv%9WN zy#AJ8zU9_3d2>Le0-RAv#W&2xcjmVgg+Wxe}_m6m%(+rGETu zDVU{TmVz!dg;szyG_3ESvHS>)<@KMW07u zA)fduRpd!%_jp$O3UGv0fD5z&)PGSb!2R{VjjaGZXayKTE5HO= z0p`#Ou!2^AEp*7|0IdLLXa%@ID?sy?RR!q$lGmTdF~I-&G~ni{0`!0PKgRsWC(8`~ z43>DmM8^9KG~Vx_JNzf;kk1vG?i<%C-M8V#-GA=k^0qld#`_60-p`@&eg%#9TWGvL zKzI1h(0G4?ru*j0Rl4s$(|!MCo`2*0h?|Y~Q)s+jK;!)y8t-?|cz=Y(`wKMQ*MC** z@VB7pz6(wF19(sO_ve3%jrTKXykA1&{RSHE_s|{w6Exmmq4B=)>nh&2q3ON{P4`1+ zx}W@-=ihig=Vs&m3L5XXu*CZV`g{q?XK1{y-=4kqLf=EX&>j8(G~JJ(>3#-Fy65*# zV&nY=8t?be9sUzE-d~~dzVVwX-nXIgz6Xu>L+Fst1R9m*&~(3o?{ofWi%ok6=nnrG z8t-q=P}Ka-D&BXX@xBj@_akV$pF-390va6F(4bS>VdKpazP0?L-3v6{*MD2Z`xZ3b zccJlq086|dBjf!HI^?s2ru#iKrk^0`{*nK$*m&QlKc9HthQ|9oOpAlY`zbWuFQD;$ z4UP9ZXu3Z_H~25mbYFjU?fG0Ztye#v;MIl3`vElGkD>8?21~qOBIErA8t?be9sUzE z-Cv>UzVRCFd*9$E|F^O6z6Xu>LukC8z!LB0sJu?Cknw&COT0fIclgh+?C{@ENs-Oh zKA&{ofsa7R`h9G?A3@{&6nf1rpz(eUjrTifygx#B_%G0SUvE6`kk3;Kn(n*M3wZ!* z#``fg-p`=%ehH2D8)&@WLwER3(0G4^#{0(aKc7pz4NJQ3AuswNG~L%G*z11|jrS{P zyx+rIv(R{dg~t2FA3UFU--gEf9(2fO2z_OmK-2vk&ddJ$3L5XX(4W!+^Z}n?_R?XA z_s!QmpK#iN2H`&Rt|M47_Y{@Py+9@KuF?MgDd#WHn0th7yI-K0yWZp}DKEY)n5AHr zf-Z$z3b_<2*?Nbv68zNHOaHmxEcN$xkEW0Psv~H;pF-pP0=m{3W-aIr{|OrJ>u=;Ix>x>H4m90&q3M2b zzr!Ql(?9R`DDi#eru%xE_aEbZtIex(X?$I1ydOa0{TRNl zd?#kmc)x_k`wcYS@1Z;V=ldPX2LBD3?wfDs)zbN+4mRHRq49nMjrUV%yk9`${TdqY zchGo$gzoTPpy|Hx7QVy$pa1tUvhzFtQG06hU&i|$Eb)GbjQ100yq`nk{R$fIx6pWh zfNtKOp_}(NSl%_8Z{>PylxG)`?jO&89~BN9gAL1sd<` z9e&!%q)rQ(?z_-*Kj`rM8}G;5Y`mXAEqRzlRR+oS^ak3XS)TxA6{FUa;HH zbl-!f`ysri`+NSMVB`H98t+%oc)x|l`vY|M{tS)xH)yLpy_4_P4^pUy07iAyZ0w(yuU)@edF!V8}Hl5 zc;AD@`yn*m&!JD(3c7i}g{J!hbo2fUN%xPRzxq3>Ki7iB`z|!z51{dW42}0QXuMxS zAnjemn`cKut1&#MxXuLl_FZDAl@&1Oq=$rj2-gltae;=CeN6>U%o8w%w(0IRv#`^s z-Vd;AjbYY;#`_gC-tVFD{sfKpS7^L%yeIMgsSQo{J!rZg!;R`I?AjrV=%=KUC&?q|?+zl87am;L`ecK7}SjrUh*yl)J-ny=+& z85-|<(0D(D#``%m-mjqPehW?a2k7SgxrSd?LhTJ2@0)*B#rqC4-uI#Leguv8Q)s+j zK;!)yx_Q5Yru!o_-CrQ-zP$hZbrtVh(0Jd4#`^&@-jAX2eg=*AOZd_9*VsVg{r-N3 zGQV?zru!>2-8bG>tKxn8eO0{gLF4@p8t*62ct3~6`}O?}CEo9#@%{+iyuU!xeSK7= z`xd;X`+NTDV&nY)8t=!@ct3;2`z18qZ=mu10IPVv|K0yM^B<=B8!YL*`Ti>1*E-mE z--pKg5j5UUq49nJjrVJ4yx+m{u6abp`wMjQzW#wK-M66Wz6(kBkLQ1YjrU_{yq`hi z{Sq4QH_&*$hsOI8G~QpK@xJjlRl09O(|r$`?uUQF^KZPLaI^7#4vqIKXuRJ-K-S?sCegyC7{{H+=vGINZjrVJ4yx&3N{Sg}PFVJ{j{~)i# z<&*qd(0Jd4W%GW3O!s4Gx}U@R{-qT*s%@e1{s7&*KSSgF4I1y8AFASg2O97D(9Qc1 zG~G|3>3#uAy01O0vGINfjrT|B?)?QC@9TeC#rqaC-glvCZvc(=W9a7n3>u1-&~(3n zAFq{6zsJV=6Exmmq4B;ksggq*nsj>5cr%2?`w2AO&!Opl1x@!`Xu7W*aM`^-Bjf!I z8t*5mc2grCoh9%z5P>GRCWW3)%6XhPdd4Gb&`z!R4 zZTx+e?%U9G--C~IPyQcbJ7T9>d zhQ|9HG~OSfSJ?%6mDOi?URuZ}qYHiH1L)%&L(}~XmUO>F_i%cD{oPHZAeX1~GLPD}o5exi!peOTiC2$jF=6qQG?K*swu^ug?*U-bly_g84T zZ_KN7--f39KCBt4iT7({yx&3N{Smr*e}TsP`lqUR--gEf9yHz$p_}(}Xu4lP)BP6qzE{p) z4%m2qhQ|9FG~PG=v5NP7XuKamj`Fl*D z@qT{4Ly7k*XuRJ-Hhxu)5FI5AvE4kpz(eIt9U>E-TzqgAIAF~bo3r& z^d4sPep#ja7Bt=0x;UfvFr)V{qxZ1H`z12oZ(v66p_}(7n9+Oa=6&NcRl0A(jNU`i z{p0x`;*8!y9F_kC!(AAOeRKcn~DoY8w| zykEnN-ouRE!;Id;jNX5)iuWy;(R-NDdzjICcu)8D=YNKc_e+@3dzjICn9+M^yuU(6 z?^jj4Z^Mk8%;-JL=snEnJtW;fe*T(YsN#JGX7nC<(Tt$MYYH=Z4>NiXGkOmly+;|n zhZ(*9VwLV&UnKu$^q!kDdJlcV$1tP!Fr)V{qxaC!dsJShPAH@I(9!!ZRq4JBOSwgb3dJi*t|CQ?6 zYr%}(!;Id;jNZeH-b2%UZHc|gHqfhV56km%LOvN+=tFOOwR*g5XuR)1NAHp0bOH^+ z^JjNm!F%N9`@e-Hb01Jiyk}Gr?+y8tn%gRKcc7WO56#>on5CePY6VNW-y&B+kCkdq zXXsKWOa0rkrC^qVSqi$;6lU}u8pLAr<{1o!u!E-a5=fHHayeK2$A zS6xBl{T3SU574#FFl&9S+PrVUjNU`j{Rq}FdXF=Df4@gbNo$zVdzjICn9+Nf(fb`g zU5?(vjNU^>?@>nYq3OQ1#K!v#%;-JL=snEnJv81oU#jALA7=C(X7nCr^d4sP9%l3& zeqvSf{}E^O{_9n|Z^4Y-!;Id;jNU`z{S0RG9%l3&X7nCr^d6e-uQhDEZ+xSQ_idQb zdzjICn9+Nf(R-NDdzjICNW8z#{~Vy3_h*>Vdq}!3??3x0-gjU|?_oyoVMgy^M(?5V zehuGe(SgSMBh2VM%;^0$t90M~X03|%J#NnEJv81=U`Fp@M(<%p?_oyoVMgy^M(<%p z@4r>0`wqOP`}@z|09Wz8|GWP&=0A-0GwA3&%IH1J=snEnJzf;Bg7R=~9%;-Hd-H*S+^PkasZqDdE%;-JL=snEnJ_z9(~@?dzjJt?>&3(g}#S&VMgzv>3$3| zdJj$aOIXY3Jz z?_oyop`-UGqxUeQ_b{XPFuU;3bbqbkjNbo{Z&lgVZo`b;!?ZY<(R-NDdzjICn9+Oa z=KT?7^d4sP{`9zJ9zTCAZ1C#BjNZeH-ouRELr3pXM(<%p?_oyoVMgy^M(=-AJ>Tsg zk^eJ#&&?UVhZ((xj^3m4I<-O>y@!t8BRB8Q(9wHTQe^YTRl4s$17-imte??)ZqDdE z^qO73jNZeH-ouRE!;IcT<9+=n)#iN*X7nC_AMhC(q;JsC`=3?ev;z&oedt|Buw?EjDw%tM9+~@TjY{C< z-#=Dg=?L9Yzd$p0{XeSA-GW&PW+~`W$fb}=A(ui1>LYZe+68B+%d@4ROLbvJ@1a3_ z294ZHXyo2QNAFR21XolZLF4CDx^KhBgW>w?W54PM8tX7nCr^!^uB zyl=sb-ouRE-|tX@;TYC3dXF=D4>NiXGkOm*dJi*t|I5VtHp=Kd%;-Hd-A`af@1g0w zw#FH~hsOIO%;^2KiuWy;(R-NDdzjICn9+Oa=KT_8^d4sP9)9xO<^1J}GkX7W74O^d zbtTmHU`Fp@M(<%p?_oyoVMgy^M(?4U_h)FjztwO??|)Ur`wq zeho8v4>NiXKU)487nsreUvr1Im;B$t8NG)Yy@$s8F??V75;JJLU&4&u!;Id;jNaex z;OITf=>4rq_njO0FQfO|oY8xj(R-NDdzjICn9+M^yg$N>-a|L<8^8ITbYK77|7iZ^ z`QNL(;khUN|4+9MJbqu+629X9dc`ZAR(CutU-5hYCqJP7S+#%>EG=M)Yyk^s3s^&2 zzz*61j?flxf$s6wf6Fsa^H)6K^6uJ2wtxY&1&pCBUIEnos|0dr^zSV3FB7TN+1&=zopZt~xtEui`87t#VckQVUB zKYeTq7(rXW6xsq7&=#^7I22XMc<(BwawSQkQUH^wtzmg1&rXM1@QVm#kPP2v<0l8Eno+2 z0Y_*HxIj1g>x~!E0$R`((1o^u0W?vKp)FtrYi{x{u`OT&Z2@~|3phc;(-peO-}rql zr82_PhPHqnv;_>IEnou87jszh1@kA^P0lT}1stF);0)d5zd>6-^AC6sehMrsEufEV z0V8M&m_l2?8v1nY;9LI5{U2-#xIkM#{dFwtFVTYjxgN9y452Mx0&M|vXbV_DTfi3D z0uIm?aIRr5nj18rHJdM_1$3Y-pbu>UBUoC%6xjk6&=##u(yEuaN$0bOVd7{Jm3#;Ckb&5$i%2}=vuAX~s5mKJbAC2d}jd;ELoMcn{6nCsj3nwJy@do5S3^?K_wW^(Y}2Ct z5nPaa{Pj0;{rPCxZ?3*-5848T&=xR(t~G~Q3)%v9&=zopZt~xtEui@pF6I*bJMhs0 z?)?MX0!GjlFo(8)6|@Cxp)KG5Z2@OkHu>vseIYHN1#JOcXbTuXTfi8;RQt$dk9v-6 z0V`+=*g{*t8M?`TgSLQX=Y_O@4zvaIp)FtpZ2?ng3s^&2Ky8QJ;o5FoU*$CA0->peKTg;daD{I2H~yGs zOrb4c0c`N}kGlvf|hY#J#-^0w|!_47BGkoJ6RfccF%;Ce2 z)XG0q9b!ZL1RCP!Fmw1YbNDcG_|UEVGt3-5%p88N%J3bSIech_uZ^%FehM>(4>N}k zGlvfi@kf|Be3&`>KjZb*Iech_??UJBkr{pr$?%WsZ;pM3T|wU}w=i?~&=7xynZt*f z!+&R$;X5#M_|ObLf|n{Fmw1YbNDcG`28v#w4w2!2hA`;XojD_%;Ce#;ls?~_xbrV z#2>iXIee5ke3&`>zo52{UjdxWcz6~>n z4-N4{m^plyIeh3fvx3H}EzBG~%p5+<96o$c$zRQPS0TOw4e@=LIeeHoe3&`>`+ZB= zTf@xZ!_47BGyDZQhd;>cRBOQZ-w@yBR_E}MA$|;96mG&uc34J$cz36Glvho{_F3pGJFeW4j<-{g_*;DFW-Md{DPY^hYvG{4>N}k zy~-}otE@iE^U^{-8C~cjA3z`P7#hrHuw?k!5*k4_(73yQcHa{$$@+>)vTpnp&uf{( zMSa|H*BzOzOM?_edruMDu3B2Dvw}+GKUX+Fnee-I6*V~6`J82qiU%(B*Qtc7Hq0D8G{X;J=I~+W@ZlrF^ZnmqxAG4#bNDcG_|OpF{F^Go_hIJn zVdn5*=I~+W@Sz!g2Q!BcYZ=7HnZqAfA-)AOhYvG{4-N5Sm^plyIeeHoe3&_Wm^pk{ zGCc1;*bv|NU=`xqFmw1YbNJ8@KY^LUzu&<*e3&_Wm^plChCf3y{0+Xh#tb|Wp!uOH z#CM<}z7I2pf4@Ts@iUk?d`O7De}xUq96rn(KFl0G%pCsT^21Rs+*%tO;(O2#KZKdX zhlcn$G{mo93GrKGhCe_v{27|zZ_o_ioKzXU1Ih5^=MNj=N3ewWDKf+_pdo$@4e>kZ zM*I<);V;k(U;l8G;akuQ--TxQ!H0SMH^h&**$_X2hWI5k#BZP*@q1{9KS4L*uh0zN z_`52@x1kxn2hH$9_{i}5{7tYSehv-sD`<${LO0?M&=7xyhWHya!#6)tW%v#>!}p;X zegw_%Q&=;^FR&qg4Gr--Xox?;65=n&5MQ5G8}V)EJ8Td7PC0~T_z5(_&!HK_6|YA^r%>bQfrd zum3|8;#<(@(}ixt51<)-49)N}Xog=xGyDb`5B4=|J~%-`%oQ5q8y~Ggd>b0#d(aR+ zgl6~&EE#@|%(>#N2#4n*4egoZz z-$OI}37X-r&3#SS3_uspFl(W92(+Rux!L{ksI*`Xof#SGyDyj z;hP^%hOa$!uupg&8sbOL5I=>6_ysH>evQiO)DD^9kFaF;3o^skKamXILM6j@QOWS^ zKVx&_7#iYd&=9|bUb7qMM*JQc;!n^Fe}!iF#+AFP#oOt2w- z4h``uXo%lJH{uV_5Pybl#NVJ9zWK>2!*`&UdLNbyKSEyf(;7C!FQC`|8oCj`gNFDs z^xC^YLwxg7Tp}D4b0K%28NLtA@FQr3pF&@m7LbeV@&2>M<%!uLpNu2)pPX*7FDutLz8t6W+|9z z0bL5Y6eL@LTBS_!*WAe?#RFG(Vk3 z&_T^w`6$dj_U}E0e$^Q?#4n*Cegj==53?3D!{4A8zWvWthVMZ${1BSqYm@suN*0>m z?@>bh3L4_~(2e*LG{j$_A-=J!GJG4B4Btm)_z^V2PoWup0m<;?`oo6!Jv79hpdtPW z4e{;IR3W|x-H0DTGyDXa;pfl{zk+7?Ep#LP{Fz!6;&0q+h;M$j3h^Cii0?x~{0JK2 zr_c<)fM)nLbR&KT&G1KPhQGjjhJT!Yey$4fEog}ELPPuj8sf*$5I=)%#4n*4egoZz z-$OI}37X-r&^jY@c0{QXxxt-tchr&s*mFPYoq zf3^+Gpu_nn!}&17`7p!zFvIzr&^FM6|loTp>5y--O;aqp=tvy`1)hX zpIw~kd}tdO!wl!c4CliP=fe!=!wl!c4CliP=YO$k18tb${2I0n3}L48p>1FeGn@}? z16$~DKC%s*VTSX+RJ~QVpzpa|nBjbQZv*$A|1r*VKFoAJ%y2%;a6YsRoM49YVTSWJ zRU2r-4CliP=fe!=Z}|B)TFtpR)A`Ugu!V-h1I%zf%y2%m4K%-8wSf-Ia6Zg%KFn}F ze6#_6{ukJwv4#eX9W)Icp>5y-Go1gGstvSYhVx;D^P$7}D8uD~!wly`|JVp-I3H#>A7(foW;h?(25Lu~>3o>!{B3p7w4iOE3p1P# zGn@}IoDUt&M;XqC8P10p&WE&tl7Dcf^Z%`S!rL&z`7p!z&^9oE4(FrtI<-O>&W8@? zBiq0kI-HOE{PpI)rw%-IpaHZGGn@}IoDaQZ7cj&5FvIyU!}&17`Or2{|60`sT3_S+ zKhyc#?3Fx#wt+Fsa6Zg%KFn}F%y2%;a6Zg%KFo0buDa6O@ZJWv{(I1ieh4$2554~9 zFvIyU!}&0mEX;5|%y9loRU2r-4CliP=fj#WO%v=@HixARtdLK}7WzYafIi+cG~<+Y$@ncU1%E^!{l~oLSI4?`W`x*kIEys)?j%Ajc-<4 z`fccg=|jKj2-*gw&^EAuuC<0)3uZVUW;p*_RU2r*dmFgF|8%i+U~s=jX#?Z?J^WmJ znBjbw;e43ke3;>UnBn|yrwz1GhVx;D^I^?8Fu|G5hqi$=%y2%m4IE*H^AA-UXu%BU z!wl!c4CliP=flzl`290D)A=yd`Or3Sg&EHOPSpn5FvIyU!}&17`7p!zFvIyU!};*b zwernAV7K(oFw^-k!};H>+CT?pI3H#>A7(foW;h?(2G%gc`Or2{J7Vj=1!g+`d)%XJ z>9=5p^I?Ybp>1FcGn@}?1523Ue3;>UnBn~U9saD$AKh@K^N&><=)er;!wl!c4CliP z=fe!=L)*X(W;h>aI3K#BKdPk;3?Fsi(FX3c4cyrrKZ-&9`!78G_fPB7E1$mi3hF?; z{@hdhgU>yUU;o_G`lHX?3qhZISO`YYIenBleV93Y_$UOt{_k)G^Gp7$Trw=oy z4=n^Mm^poDAviz_LG6q)s1Gx!f2s;W2U-aFFmw7abNVoI`Y?0)Fmw7abNVoI`taBO z{;~Rxsz%U)7J@F!pgyz^jA7>Vp@m=xozq7af<4TfKFr=7^j)|4<66}SIzKLrfEVOG z%%DEB5KLj_^kL@op@m=vGp7$Trw=oy|C6c^wBWrEJYN5C2KAxoY78@|4>P9^Ed(2w zIenNpeQ1oj!p!NPxssgEg_+Yo^ZuJbeQwU6J~V60p;==E4MbaLAvnOy>BG$F!_4Xb zv?>H0=$t+(g@E7xh%=}UGpG-JzIM<;aD6nyP#=2H+@Mjd`5#pw=)lbB!_4VJ=k!tL^kL@oYdC}YFoXIqgZlS7 zm*P{uRE3}gGp7$Trw^UeN9A>DhBBuQozq995RkvHgZiih&nwEH{?Drn+J>3ahndrd zUa}LIIenNpeV93Ym^pn&A$atkGtQts%%J`+sw=qzGp7$Trw=oy4>P9^Gp7$Trw=oy z4>PC#3x58+)a$=2jeuWBjJ)W(&_XbPUjJj5IenNpeV9uYW=&Kh?t}rVmkx=@V2! z@*I_nyh47ZEi|Pcpeg+f-Lt zT@`{pOmv5a^eHr?uVKwWeOMmB5tT=9K^fG)RS%{O{i;1^As9jn!34V29A+(;IenNp z{TtU`2KBi)gZjUz3PA^22>LK{`Y?0)Fmw7abNVoI`Y?0)&^i78v=H2{Kb%2*XdxKD z4C+G*!5n5zA6f{uFmw7abNVoI`oFCTK?i0|AJ#Ick3Aol!VKy|3&9R%P9J7YA7)O! z{$dJ23uaCqW=75KLj_^r3~Iw#FIM zzu&__eV9Rg=H0t09h7(<)D4B7;i&?c~{VXMF%+5}F}CUAuw4K!Z& zVwyl3+5~#gCNP9HfeEw;%%M$S1#JRbNE3Lx{~xfELTBjNzzy02noXATmuf+qKp)x! zM$jfOg{28BkWF9>Z327f+w`gVVlD5tS8n!fpz-<_Gbz-DHh~_r2@Ii4U;=Fdb7&J- zL7Tu9+5`^JCUAz2qXAxjZ`iYe<{NnI<&%aw&{)-nHh~ee2~45EZ~<)sYiJYLL7Tu4 z+5|4pCQyIli%&JHKnvRhy3i&tfQF1QG-S-6NoWae0vq_IG6}keHh~kg30$E^1C7>; zHi23jdN$C5Hi03u3Cy9-*9zJMw$LVUfHr|M^k|^|ht(fzL7PAq+5`shE581Wv1bD_ zXcJgMo4^Lz1oqI3c7kTKEA(if@kdnGiVc7!g~|A_umcnY+w&<0w-t_xI(Yw#+&($ z`b)K-O`r#D0z+sMm_VDr9NGj{&?c~bGe7@Ufde;tsh?q)6uKcV`sQ1B@hcxz)q!6B zeP|OHL7TuF=8}arfi1KN9AIezeEuZ%Y~TiM0?oHpS6K&omGxnHUPj0#V+wub3+Urr zLz}=3mL_mShUyC>Ge2H`>z(SpEm-n-7nLS3KqVZHQ3=O0}&-c)HeuBpH z`rDqZ1Yi1ZkM+CIrI1S@mqJ+zW+|AZV3vX|b%h=cwEvheH+}q+^`Pl|2!C7i-=E^r z1Xid#f-NeK;DBrbXXt~e|4H>#ThJ!Zg*Jf!bgeP83Cy8QVD%?le^!A#H`@eG&?az& z9t||Q+@b7Nx1mj-2WhG+YKnvOgy3i&tfHr|KvymY@khGmL@QL)&%af3EX-5?xP9p`9uHH)A*auJ-zVsU+4h)?^I2o{^wN_Xu;A1 zy2vI_8(0Br(2XcHJhn!w}l zKfxXf%%M$S1#JRbXcIUCNTYr8t*ve-y|=% z*(R`tHh~?q2^^tK-~v4psK2Xf0xf70=t7&o0NMn`&?Yd0_a<UEGc#!o$)dX75 zCeVd8fdRA$jG;|n25kaMXcO4L(gfIl#ZC#GpiSTkZ32zI^TuRU;(1SLCAv73H zpiN*7Z2~K3e%eBtzyap>Z=JDC;0A31&G+yM?PxPJWb~mSV+2h?Q)m-dK%2lC+5~pc zCUAr{f!YO^LxK8xt0vHbHi0g*35=n!Y6firOK20=K%2lG+62zfKX!vQf#&eh1Rg(s z9qge%AKC;)&?Yd2Hh~4S39O;l%nq8-j?gA>fi{8qU-368rJw~%6X^aG@BdbT0k_%& z#?U4(gEoOBv&QHYyxvwn!pN` z#JNQ_fde#ro}p&~H)s=RzOTAuJJ2T3hc% zU<`A~LYu%6+5~DF?4iIO+5}F}CUAvbWsMJ1S6LgD=cR{yGKSDcK7l^oIkX9^U}*wd zbkDK(*WUv+G@qZ{_XbN7X#P#&c?Xqn+(#uGkC2IY3XSIrXgps-R{#SPj7njfl~KnL0c`Y=nu{Qj*Owh64EO<)IY0!L^QxZLkhnn3+;t0vHbHi160 z35=jkUBEE7;v*qU<_>nb7&J-L7Tu9+5`^J zCUAzH3EZGfp!xSz6X-yjKp)+5{G90`q50;7*&soy#9Qn!uVr z^m|X|?>+bQzdZd9G=cf|t0r*fe`03n|M$PuJTUl&swVWH2L>ny2GEu;hdD2RIWK@Y zFMv5OfH^OK<=waW(W)hMKFaq$2L{}n0|S@?1DFE?XiHeboEN~H7r>ksz?>J%s+Q1# zIWK_smT>?64{#0)U=9pm4h&!p3}DU+V9pC*&I@493qDr0gf`510nB;9$H+f9FyQ7K z7{DADz#JGrTfzb6ya49B0Oq{l<5f%Oz?>JroEN}HOStC`?12HYCahr&4507fC+K_e z73RF)6IDxS!<-kuoEN~H7r>ksz;F5Q&sI1G1~3N(Fb4+EmT-ePFPK*?p#yVX0CQdd zb6x;*UI1+gwKdLx0nC8`%z**Sfx#!Mme7JZFMv5OfCi8;G=R)t&I_O|VFTavk+T1> z$2l;7IWT}ZF!)qjLL2400Oq^^=DYy&CM0nB*;%y|LynmNIo7r=WaH#5c>!`0AC=%d zMkP4UkY8vCvx)y%*3T|JH=Es0FiU;z*;3G@kV_$#LN0}}6wFdEE5WQ(!!C7&IWSmN zfxZWGU;uwxTEZN9UVzFY*rM_X4k+gZ&<9iheDy_Ju(Sj|{}1QD0Or5|W-XWl1DNvy znDYXd^8%Rjf`6%6LL2710Oq^^e%k%_8P0(L%z**SfdMQn;f!)#06$c|AU;uMq@P(=-bf5ksY^s*f+K~TpV8G2eFn~EQfH^RLwuB|jc>%N~tkM#e&sxHrwuC#o zKQ8A5{GsQb)<2{r)Hpa`Xz2cb@Bf6L{^hC%w4lcY$R03&IW2%WEr2;KfH^IIIW2%W zEr8|i^@=`GYdp@_8eie%+v5V5;{urD0%#AIz?>GqoEE^G7Qmbqz?>GqoEAWPK&|;z z-g-PPfH^LJIWB-XE`T{LfH^IIIW2%WEr2;KfH^JLRz08vU-I|wb#aahV2%r5jtihY zUx@It^1u&-t@E0|=(Q%FopnvWLb6oKCst0sn zP77d83t&zQU``8QP79#d%nq8+YDb*o0+{21Z}3<0xBz-wfO1*@b6Nm%S^#re0CQS! zzpsByn9~AC4|u%)U2%>J_UQp_R9>ih$R03+o)(~-7C=u6kf#MGrv)&l1u&-tkRI?@ zzxmDTn(e?G7r-1BKzqOx=ClCjv;gL`0Oqs+=ClCjwBTD+4`_X>mLkBv!mN700Oq&= z=C}ab1C}tS1<*@<4?QhFUi4R((}HhT*MA#6dH~md59hc5=9+~$E`auc4a{i)%xMA4 zX#w;qYaFVptPMRaKshadZ>Vh_2a6Nz1D->BzzTX?fQ+#RXktD;yXy_Qh5wy|^A0M} zxQ|LS9wEQb6z22y7dU(P&~(0oSql27ZqTK^TP=lL3b_=@QZT0lFe|}YmclM|ggGww z-m}OK&E{SBTT?Ccv;dVyuten%Y*0=MpbzE@b6W5{uD=`?9IGDCfjKUKSqs_&W-zA( zFsB7Drv)&l1@}96TJZg<2ejb52i)I(`Z&i0FvkTj#|6+Hu!f!%pqv)K50!7o73Q?y z2UQPf!0nBLu%xM8E zJ)riq!8tB~IWB-XE`T{MI8{BM4Rcxmb6Nm%S^#re0CQRZb6NmDP%9sMf515|fH^LJ zIWG87)dM;(rv)&l1u&-tFsB7Drv>*rcv=AM0ktE}aRJP6!H=sR(1JNGfH^IIIW2%W zEx6yI^nex2X#vb>0nBLue9b%j_s2NL1wW~JKnLcy0NMjaFsB7Drv=a+ut^VCKkET^ z+5_%v{Ir}F{Dl1T+*AK2&prLu$8kZ`1I~Q8PrmkXW!_-v0nKyO13J(i(1-Sb5wr(P zp*>&$?E!0O57k>=_JA?82h5;7Ua^HXS*9BmEKo^!C zFhKTzF|-HFp>NVF=)3I}+5-;I9&m=92i%}Np!xHv2h=*)1A#uY2aKRSU<&O43uq5m zLwmpu+5?Wz9&my7fch`09?*jJfG+&9pZ_$#_JA?82h5=HX$kEC8)y&MLwmpp+5@i8 z9?UTC0cU6rxWUo`n!l=gKnL0b`p_OQg7$zZvpac_JAF< z2OObS*#&x$)qk7krG@TK#{K&5Vjubd`hdsK#65$h2P}~>b^}e!`)7AO!4l4|sBF?V z>aQ{yw^514J#_y<_w|R^bUuNm^Eot}uV9vfKB^ORDdbYGu9iYBg?!9In3W(aJ^JSy zXDR4XTWAkB!$fvyHgCS>RmtXkSbD$+l^!rf&(?E!OW4_HBaz!usA4);5h9&oB zJ)i~c0bOVh7(jc#7}^77@ZJON*Z&fGAh3b7~k(u zdcX|Y1D4Ppuz`;rK>pif$A(VO9&m-82Q=Qm4@Y^FZDf@b(3G{aAzd--!{hF?K5{1%eoA3uKw zY=}QYL;MXI;+t=JRYH6R8shsf9|r`@@Kfks{sNle*U${VgJ$^SoA~)N#9z4C5MOU| z0s0+=hWIWt#1CLT4hWjzXV474geAjokQsgt&G2XVc!Rz75A0iI^UYixW!}F74e@=L zj{|~+_$hQVe*w+#YiNewK{Najn&B_d3}1iCtJwc2PiPAp;=9lgKY#|JF?2J31`Y8` zXr|jhGyEQ!;ZM-$bA@L3##_0P9v=r(dun4td=DDphtLo|fyRS5G#;#=A!ZBB@CRsy zKf}*VN`;1I_-2O(;c*lEdHMZUeQ1auK|}l$x|zR*2BIA_#2=xX`4?!0ufL6j{V{?5 zu^u$T4`DtIsD|@-K+q7sf`<4lG{hgEA^r@#W^T}U)%;^#a2e|1^`HaI@O@~8AHkC0 zr|7iX5Pyb-_!~6DH~+M{k~`24--r1)AZUi4!h9SMG{di<8GZ*J8J?g2BR0fepqG06 z?PQYjdwY==eHR+y2hi((3?1s3K{Nas=8}bG_#-sKU*Mp&EdRRb9sJysr?mwQ@m=Uu zHh^AbV_2S-8S=?kLLd1C`gr#+X&IIbe?>;nMvvED<8HfG-M0rzvL2$6tS6}C+Bqt@ zc7^;(TWGRAKr{Rq8mw!grO|z6o@#Im}YR=icGwVq zhKBeXG{iUiRfz9ELwq0Rjxo!_T1^e)XPO z72>ztY=}QVLwqlr`Q2xm`FFaRf9L%6*vvokhxV`JwRcJ%2 zLJyX=;32XqOosgZ?Fw^lwkxclU11CD3I}LaI76$#4O$hNe^ph54zw!tp;ci7tqN0^ z`TqsBE3BbiVF&FBN9cb41zHvAe_d6D7PKmKq5J&+cqqu5dthg)_7()JN4D zc?{KL94U10#re*YL*6=u+?u!L5HJv4WnpjF`ttqP4X->H(d+GBqH z>IrW{t3nT26^1bL{}Wug!W@+ssui*;Y+>2&KOn2Z z8J4PWLnV?n|F)_M9cVi3L#x6FS{0@+^ZyHMS6D;4!VcOMj?k)bfmVh3q^b%nXjSM! zFXREVDvY63VFok*zr=Qh4YVulp##d0tk?Cu0l!AwB#Z*S`<= z%*}R%8!TO+`H?E=cA%-c554OMmi#_NCBH9FNzZFk((?|P-;dDze)$ON8{q5HD!{j3 zmV#Ldx)gFLs62wk zKU7tr4Sg_um;wSzRj55p@w-Y_SU}fW!>k3}?>|ASLj9vvRcJx0LKnKjZ267P$o>8vv?>gtRbc|H3Ug>xSVODA4q6qC zHEdU?f2`^XEofKhLihUz(5f(oR)ra~DlDN@VGpeeCumi;LaRdKiX~(ELPI6*`~b`ggy-&&_s)5wt5zp#W)t3vaWRaNLf=YIOosxbN_`OmH}?z>UXdZb@sGUpI=c_e@I9E>eQ1WCz|8K$ zkA1uR`>z$w@IK7&J~YIiVTSjiA-=ibZNtq}nAv@p*?pMVeQ1VXKr{ThhBLemGrSKo zyblfW^?#~Ddc!`!KWnknR4*&)*(rcpn<#uQ0>=pRPiD8)kSP zy5B#9&h8^K{2ZF$*D#xL(09t?r@8(zywA;s`1(IrA-)AOybm+H4-N5S=zjkUW_BND zb{}STA7*wRJ~BN0Pr#hVQ`4?!%W~UG{%Q*bqO38QzB(-iKZ^J7~N* z!p!bNGkkr;-^kg0=^{uw{;F1m_!&26cpqkX|9P+DGrJEnyZ^8J{ClbIx!K`; z^{uwJ}eoY`6ry=edtxz_(FA+wPAT)ddMeZ z2z}%e=;NJ3)A9;ByN`^Z2WZ+om%Bb*e{Z-X>*g1etUIXW+CD0|c7*&&Q)seYK$GplkJE)`FSchnd~~GS^>*_qjR4`!K`% zFvI&_sX}}U8shsfv->c!`!KWnFthv6*?m+pJl7vK#9yHyzVX#6#J8a#z7I3J4-N5C znAv@p*?pMVeVEyOnA!a;L9q6pkMpkP;} zZ&ikGLohcmnnGrSKC@pG8reVE~Wn2-8_ncat(-G`ao|Mx1xcc2-*58wQ5-+!P=fze5S}J7|bM!p!bNGkpDPRfcatGkh0jb{}STzlJlsf4_&r`!K`%(Ea`c z%5MG2ha>ZhGzH~Ebom=R5QeHupxdA4e=*vh`&NZeB+C>7d>@+ON6-vEg=Y8#G{di<8}U2% zQmu@?AF(0+0uAx?eHG$c&=B8+hWG(=W@ik|@H1$JUqUnd2D%Zyhi3TN2^-?Cu!Q)= zH>(iehKBe)^c{8teW#p4GyDRY;n&cO_#HIEAE6ok0?F`?>#zQ;D#W*-A-)R@@dIdx zA45a@47w4&gl6~+G{f(q8U6&#@K zUg~35GW-mA(J!GHegnP!_wb(K@7Mnc8{+FftggKlG{kqIA$|Z2@nh&l{0y4mm(Z(h z18s_XSe};?^2xZunh(8ksvd9~8kc*pg!mycf=-}ucmC|ID_D~C7M0!c11hohj7qG% zA-_=bN33tM?qHL3ADXO3FiXKy3+PhFrI1S@mqJ!z^wFR@^6;nW|x{mL;M;V zw|CHBeS`+<`cHV>cx3n%DvzLx$|D#cGyE9(VCK*-x~gGA{1(2ey!IWSYn@@%I#(gS z1r70iXoep_GyD{q;TQKil#TfH{SIX#eh10$kN2N5HpJhcA-?%je!4zarU{`Tz7I=? zA0s#7XV474gl6~+bR&Kb&G2VvhQIxk@4q3w`Lim-_n{$v1P$?1Xoz1xL;M=L5x;|G z_#-sK*Z-r+@GWSD@4`ohXa8$}4e?`Wh@U}2{1O`CH_(mvJv79hpc(!O&G3y&mEqga z4Bvxh_#vzr;wRV;KZl0+6*RUH{x&54Bz~DmEk+k4Bv-l_z^4_p7$SY zh+jZM{2ICuzk`POBQ(Tcpdr5giz>snp&7mh&G18LhMzz){2acf_KwH6&pp4>NcVGkAaH8|YX# zEbon7l)-zL!Fy@RYXJ-$$*7TBjF1^|ZFy_xN6y zr&WtBZ|hN8wZ+z2H36drj1V-EC{Y7Oi5ehags4#hMhzM;YSh$53^mqRqehJwYpm~Q z=KkI*c^)bJu|Ju6&8#)E)~xy7GxxooHRyr&|G`K~0`H>&c+H)rzbdc?-h&=^4@w?% zLFt(RC=oLT-()XPW}pY&gSXmqYy*1W{m+7iFM_7wt3Sj4@W6Yvdf+|if%l;LYXVBd z&p{8o2R-mUbJ#U}0n~04&;##554;Cs4IkfsUDyNfL5cV==z;g32i}8{R~u0BDtG>2 z*YHKq1Mfi(yayF{4@txKz_bV6!yb4Kdf+|if%l*~JafTe7x8(}1Mfi(yayF{57|7` zfjsaYGz~wxAbr^1#826(z#K@YqKJ@6ishM$A4Pg{c43f551 zyymb6-a{JnWzYlfL5=?==z;g32i}7|WI+$S2R-l}l!niwUwha^d>)jDFM}FoHBh6h z30l8&AazC`RLe)8+B*fMmKUG`?;%Oh?CTi*@jSr%TYz2fgQl$OkSXgHWV*HsnXVl` zI?@=FhM$2_)=N;rdIL&W7joO0z_=#ruY;-zQdN+ug1jows{*|$(5nJfRqjIigZy4@ z?<(kVFQ9aF8$?$p`gaH`@E)=j%pq&R3i81Fi$Y@xppIGrZ?V5sRR^WvTcGOdg3|Cq zP%q*q;4Ez)?w7C!-h&=^|9VEVDfc4if%l*X-h&=^4|?D|=z;g32i}7ocn>P>KAk`8 zB0dj#;5~Syoly<+zv|2*)X%^r9Udf+{%7x7cj z1Mfi(yazq-{t|ja39+CD-h&=^4|?D|7;E_C`2&04J?Me=pa{z70yl_X>y8F5-u5_Q3nNgaYqD54;B@;jNR2mP$IqxO2aomY4|oM4c`N$ z;fJ6!`~xdCZ-LVAT~Hc+07}D;L0 zxi@ppCh3ZxM0^#Lh;M)r@oi8q;(MSp{1DWO_z5TtKL@4ZSD-X}<}&U-iTM0whh4;% zK@;&cNFu%oO2l_TJz)o+o|I!yFXCsQH2e~jhTnkF@VOFm=)|6XMOY%f3QEK`K#BM^ zC=uTSCE|ymUc^s8Y4|xP4Zi{LzXd1}zXm1ZvzMEQ=OJGJ zrQs`}G<+SDhHrt=@Lf=2W{`#@ug0KW#Lqy9_$4S2zX46e=PE(O7eQ(GD(EZVfYR`7 zP#V4$m$hJ;AsD}ikLUjhED=8kCE{10iTKRhT*T)giTE;TBEAMGnx+YwhVMY875k7h z{0Nk6oPx22kLzE+67g$LV>bKtAmR(4M0^F5h_8c+rfGrF@Lf2)!-&5 zVcr2v#P=cT;SnggJKYvtfTrQskO}MTm2|5`PeUeaE6}IDZuQq;DeD#}W!(j(tOuZ1 z1-feiswzlTy)#q=sVYcqu7h3^_|CLF&AYHy1*)nsC=tH|CAT-AgmtbKgmo1(4c~z5 zWZRInpa)6A4?#6%T4Vg_s0%hr#IHe#`0TqvT?J4gz6wgjH$c6J?}F0s15g@%3`)b# z;sPe;mvMpkMLhav153mg-W^1I1(b-dgA(yAP$Iqynus4lz5)&?4L=8^;a8wEeCDd4 z;S1pTY2JY_1yo>(_&O*N-vuS&2cSg!81xlzK)r}xg3|CCP#Qj04;sD-O2aomY4~&- zmWc0x67fS&B7Oo&#Lq#A_!a0Y;Jhbj_&g{LUk0V&YoIiI6O@MUfSH;-fBLXQ{0NkY zpMnzc3s53{4NAmk-)ka1e*S>c@D)%Rz79&mw?Jw5Zd|}L{2&cW#E(IV_!%e>zXT=X zH=sm(?tMYT7r~PGYE@7gz8M!V4c`H!;rpO8{0KzDC;D#+OT;fgiTE`r5ua^vbJ)l& zfD-W)P%q-^pfr37G!1|Hf#`%6oObYx1IG?V2OgI?KI&phKQ473>NO4@J9uX5_{XKv zv5{@ZMSYBvIuH%acpPjyvQ$2{gRyO7wm9JyTe4~F`%TQ29Anxzd}`{@laHl-`@rKV znu?Bl{%NTwbM@ihz4w88vF8cTKjQ$+JNAO~wtXkXc57eu>ZE-qSv558NR)G1-fTyL z?Zl{nEvdF>wiAQxgs6-yX=lZ3Czvg{9@VQ4|A`rEX5@nCypD_NzGK5|x*i;h^kJ{C zWwzbx(Z-fs$%y#H;sk5V@+eT(P+iXPmDwH}Y>$lA*l5Us zXk)fV2HV4;%r%Fj_?)BcHE~C!Qx6NqGou{Fd&I_kVoaTBHrjATRKWIMV_VT|XPAvP z9E-|stC;PW*=WN_QPpiVvuR||h9gn^nzRnuFr$VBZ8$M%`i?ELX=u=f6QVY@+OSidgWj1viRncv3+n7z=MzwU?wW=?B?VfI<4RjmE zTDmQ{QVlci={9yu zY%Q~?+t`tA!6e8+uS%ZV_Z4imeezL+oW{v zlTv4#IpsIE)`4hdW%D#k(?;%KG^oyf1#<-HGVmrP#?D)c{ z>b9EMUKsX!UR1}HjE{!do@X{Tof|dX)-v0W+*pfjvGTSrEMq{2HjomhhZRs;pPd6jwpBhcwII|s}YBn14 zlxXg@h1oP4)0nfPrQ23!J3BPy$syz@57=hwq)Seu%+q#hgoab@yw|1 z#)j>v*_j>Bh?>|abRcS(?F`$G(Q+(myRBokW8n->in?y=nN7DjCwL@!PT!3KGwL?y z3{Q-PZX20Rw>gbJAsV}FVm968wD0(6>b6t3T`VVwscB23dZL}WsFIM728oa3bu2j zDz>DdHM5;-SCQi9M0K|{%yy31UK!sfO>6)?V>aCeS+=GsEjQ+$%@%@pI|#9s$xqnPR(p--6$B3MRknH zRc)B@m|XyDCq+$cN%yzRwtJ(ru~{#gP4@}=ofvhoadi>yX48E_`%Z}Z@5hNwi~}?3 zMxlYn^T(aFHrmI^Ic}Sojk`7O;iP?Yw=K+e;Blo7{!Z%T zdoJ0YocO9V{T&{BYkns?Y^+>AzGQZg-oYr-(xu3@l0NHgt=)rB4r_9(yjit?h$R87o)j**xLQ+?JU$YaNWLWY4|mx?3A&ZOY0&je}9s zt*z4Ve{za#|J||Db(N<2+QF!cHQo^Q%v#%8s|TY#*5niiX02|mm4nd`Ycf(sX02?k z<%7`}E0>m2oS3;RGyfD1MpH8*P|RACmFfxz6t^zST9B3M@&}`(TUVv-@5a5z?|3?m zHdZ>P(rnApiyzSV%6=f}MHe?%GxQ?XWCY~R>f#3LE209%b^ssERReL{u}ICT(mlj_TNwyS8CAP1@LA7&WnRH!+8rO>;K3=S6L7@feRf zX49Pg%EzUdw7YKXnekj}DQ9+0)OXv!Z0DGb6MI%Pblb>m&oUb)_RMJPwu#v^XLDZ9 zh^B6veZb_KCT&ja>CxPc3)@kXHYfJfXz8|<*)(Z$Vo!BX~y?aApVhcUUN`PjHSX|wNHQ2}$(8%5jqtg!DBqB1t?Mzd+sX1~WqRcuN3*UY9l z8`~qJI<{ooG;T;I4br5I@nKODV=~>fY)4Jn*v^dF*yvBX(QLbucGqn^vz=iL<CjZd;g5b2jI7 ze6)1i3R~$9em`|uI&o1!{9h4TDxsywsXwJ zHF;K)Y3rETcG9EIG80S7Yo}_vjMg7c7`>St8gq@yKQ5(V`k$b@QU(-ekXn~>9>>2 z#zo*2fDBV^un`Q$p$njCtZ8ftUZxwPuctz>9 zhS~g$23Lf4lx}R9G45anQF1}rZtIjj^R(1M(_MbQ9DCHWvM#9DhM?+u>48~YPhmw* z4Y4K%9huej6jt=q7;Dl&6SKOW!it`nV&zQGF*7qa;=w~JG1pNln3GYlFssWetjMb+ z)?_@b%sDGi^_$jp35LpA%MJyR&9<0%wtGRX60^(hohFN_I<%-5rs9RfR^(mAqnqdlc zYsaiUg>priLfzO)jA07pdNPH&abSCD3gv1tg}QBIHcg>i%NIvuw@u8ZDU{LA6zaB_ z*))Z6RhdFR#GR46Sy-4+Qz#deDb#mdneAK~0$ft2P`7Q&c8=LN6jSJjb*zM-^r}yE7;kj~TSXI7wQQH=|}yE*>+e?^raOW>793GpO4tX44GHg=7YG zTg_~mLAj93pl)lJ?YOurY?fpObz{qn@tDDuT*0!NSc+e+@td&y7JPz|26!&MiU3&TT-&&gE_iv2#UGv2#^W zv2zVjv2$%Ot>C#HtU#n8sNlH?sNlIds935MsMxv8$3pB}9=z_0N!!byV&`h0V&|Hm zV&^)b#m=RpKCIxm5vZ`7DX6fV1*imoHTWirmdy4->|6m<>|6y@>|7mG>|6`9*tssG z*tr4N`MmO>VFk}ELG{-LRPbEx<8knut+Wj)cCHF4cCHC(w+^V-xjv}axe=%&_9>{? zxkVaQ@Z1_y@Lcv2A$YC;YS2_bg*DYd#m==r#m;p>#m)^ti=7)oN`RSxik(}6aqL_i zkG6poJeT`q2%al~>hLP4EcOPd*ts^S*ts5Pv2#Pn=BWv!*tt1qv2!a(v2&Sz96OiX z|9Q}Y=gN?R=W3vW=bGT1ehtP*trF$*ts>R*tzVj9KptE;Z|Oy zDtNBKW(CjHL5<`VsNlISsMxsysMxtNs05f9sMxtBsMxs;sMxvOr$X#p5llup_kR_( z;JF5*LEi=yJl6v?{)eCvU?!kq=a!%kSx~Waxlf1Kxgx08xhkmGxdzxt|17y<+ptDi z57a0dg4Qn+NS!eUb(5|@wKp>eQEGY6V&}?`LceODqRg7xqMZTruSK-=*=iAOBgo>( zrjW&xEg&6f4Jx87ds~Q|D}V}UtAJh=sMxsDas&3y_1$tGW zs;YyEo$G>%avOk(og0ISXIp|6JGV)L)`Hw;yah!_!E;qmjcI~9Y6rZY9RH7pT~|4XD_;!cehujK2!3;JG@e;JH>@!a|U`aRJL>AApLTn}SM!S%8Y2TZ4+7 z%YHV*&J{q5ovT8Mooj&Cr|qx9wc#u6jC!Dg=Z2sXV5XoFU>2Za=hmQN=L(+-v2ztr zv2%4$v2!g@v2$Hev2*DGtl+sZs05fLsNlH`c(Y}h@X@ZKK>wt=#>w}7&8-a?Qn}Uj+TY!q4 zTZ4+7%YNx;9y}KnzQpT==wNgq5t=_b7S;Gk7+v&rg8KN`=4UE86y3p}FX!igpNH7+ z{%Z1b`lZ83;9E2={oZp^Pd>7|d^<6rThIw>VXHxrC0tr?`xN(=bnBj{&n)XiS5)E zC$_(|U(3@H+jZxr&fgyO{`-#ld;edur;bzP*S74v_m#cF%Blrt{>AQ@p0=;-XZ~XM zNGI*H9{tN*>jU>${~YV~+^+u1-FhCsuk16Pw|k_A?X$ieD@Xe5^OEZ_=hvyB=X7?s zuu0Ed6u(`-;hUFketzozEfxN6>QP5S*&*KGp3eC4|J|(?Z#cI4p-N{wf7go3yT|(1 zSZUN1&rcfFetznbZAFXy6`k{f-9!D_zC*niD~Ec{-=rS+gt4E&`j?-7?7#_sbJ{ON zC!Fx&(+0c##*7>#FQv;1LZa2pFt!(v0N!hdhI#t@9_3b+AZ~+&8ogDZSEBv?@?H>3( z`1IYyYDZVHJtlL_Ux-G6Ha!uXJ4IO*!M|)lbk}_#rF(dyexIkOPy1?<8M;GxjmuP z{u6ra-|jZ*3~Lk68X}==<~-{U zD|_R4sdsC@+$%Ic_s~-G^3(&iP5=1*reE{Yq#N&iY0|j$OLwpR{+s*}f4AElU0q&< z*=hd6-|ghDwUr zFH0`UpS~!I%(}?8M_D>y9k-&9{SD& z$*=Rxc7@s6nN)MzzAveLJOb^eIsg3RKv$ffwC{uGCkKjKu5tr{C<)|HHJ3crHLm)nhZQaXbrRJW!^ehj1o%L!y zRV_>3es${bcCYcVeY4KjblTxA{mpDr*^9Hu6?Bl-1FvwhEO$Gv8E$nT$3 ze(N>69jaL+bpC~V_Ei^h26pMYuSuHzlGi4e{=(Pp-ovgA{3@1ie(i2W54US~Pe0VX zUboxGN0>F7>~Ftrci;UQEWc;p!?rJHVvYRRo_+T}k?);LowDtDo&No_ulIcYl+wW~ zxW}*0rG9%m64(1j;=M0SI^owZOfJXoT)5k2si9x=R$XFcue~touutqMtMl_#luo!P zIqoAbO3ME3MZ3q{e?FI5+3T!q|DxSn=X?8a?Mq*u9QeA|Ck?*!^}9ELo?Jc>{8CgO zvhP;zk3u-uzo6jl-xu1-AenPE1%{l+!X(j-*YRSyzf@h$ulgitDpLY zWIX=#4SQ~-llR?9KQ}V};NqmR%*DHvbx+=RqM9?p;J@AWI(SLaD@QKb9lx3x!q|V> zCA)p5Q5Ht%TlVa$n=ITJ!%I>hJUz@!E}VSI^((qQY2R7?P@U}sOJ6SRwn1m(9aB2v z(p~HR5%|}aCIjW-OOtbb*PgO!FIvVr;k#D$zHi*Un$43+H=mdK)6ykxO#MFndThAc zL)HClU#jh4j{LPZB|Y?u3RoW4$}T;9FPpTV}h7;5B0{9+t^OHx*z?9<<}JAVI7ZE=C)XH>98 zQ@s?_AHQ{X9(jaa@BMqNkM6rk)i2>D{b!ECF*Q^kdU?{Y``nbA;Il4IY?s(DdN;P8 zJEd@(uUww`;CAN!zD^?Cqt{lF1AnHHjH_={cCXIEt?A+Zc+}gHvKm&;d)uy`ultTy z5XrFei<2omJZ|K&q#N*??DTVE^aK=W+4f7HrKZv1dhSv`Nlaeu3t9QRMF$wmLW>h5th_+7!4x>j~-Wq(vn zePnyleM0jmQt7rUk^_JHilo8!xN`TvYH%p~v@4UcFS;^m#B2AImD~#x<NYDf%~46xqJ z{pG86TdG?zjOUkJm6W~os-&rP$};5Qr{cCbnFsEB+-pkYA3NJ$sqYSGU1SE*p1WZF zfV)4baFqAfQy-!3JDN$WGw(^-ReewLtNotc8gx(kYYo58+7H+_o#Y#Ki-#|-5*?&oX`ClyM3bb3G>mPGGKl`6k+FYG_I;Rt# zz;GLO`qU@3v+a-dhznD5;r+?& z)O>$3{QB?Ty%BT@Ue-Il`%C+JO;6`A3;nOw?oo8AzpUo^QR=^R_qWr1{IovBQ5Zk* zb9~z;gLXhuiyW`-JNdev0uI6?zCa3^UrSBz0f-Uuycc*w_T{S4kGkxd-l~? zhY|McH}3AM4h}cxxi==~8oyy>AYDUQ&iwWpckihB{Y)D^qn&!jwmp-D}Z4Vc(tk6Af$LdfWYU@rRSjZvJp`LB}87z4$u4V_x>Y zo!w5?>CwA(r2o^|-B%qKE=^(2zW22Y{Hwn2m-p{jzmKGD-u9&HAYSBH#ozkK z?ojxsT0=F=C$&BM>Wq1nVHJOeeYxb4(+|CAw;r8g=+qb8 zl$5>XreylK>Za63w`b%{4m0$tx=G=;cay?5baxM|6Yvha?B=BCv73|rd;HD2Mb+ML z*L@d#iH>d*;-y-ja+ieX;zNkL|V& z-(pYMzs1Vc)ECQ-d@S|y?Qzf8SN3VW-6P?6?K#q0_E>cl!aV;qtkk16{rbmu>-mj+ zN4n|byY=u8+EdRjeqz_Uzm5NUk9B`5-u8*q%eN!o=e}7!@{_xVCJcE`#V_Au-T(cf z_sP^_wwI3H-?Q(1`@0qUyP$A&uI#5Cy=~X$G+hMqxBIEbaPdyPH5r+|ack-^+mEzz zeD;gVdFkM%Q%@^RZcUxWo$=uEk1)_y&5Y=y7N=XkY9gl z_k7+pz_ozUk9RgTKVD?WK9#z5|~&*tM$1f(!LmgWZbex-#CX%Wg|OW_#Vd zKiyh-DrVZ8xh-i%nP1ymkH<{hWUt6?z4|>%7vGxt!_xn_J-KktxjotS?{43%=jT2Y z-GX_0f{)#MZvWjTmtKvP z)6+NL+lRXcj`K$L^xvO-cJ~yzx{$&Byaw~nokFnwc#l<=F8FO{e=hZpw4?jEq|M{c z?N)T_{)*1{{BA`$rBKm}_E=A~a|jiE=<~a$7$=?VxgLKw+O7HX`)htHW}12XC~4-u z@@sp-$Lvr+OFilf$thj^g{17qzpy=UDw-q*PTBXTR5UK#?~B_*rJ^Urhf2k%7{~F? zxb!TnR9pCB(*0L`G4;pkC80CE&@8BhX2&5|z6dHaZ zg1*k|mkBsjuzcamAy~cw`a-jyg5_JFFEk7KLbISRGzKq@p;=JD z@=eeengtcfIsg@sItG2ASEj#jW1n*EwjRC&l3ngzAcETmxhCa8sGAuTiu`9iaxFEk4(R(=8cIsehg<$yt=nKt)zR)b_3(bPQ&@AW+&4RwrEU1Az1AU=c(ASv-eVy5_Ge4w9$t_ZZ zeW6*<7n%iqp;^!ungtbcJ_NPUETlm{2YsPgP~$)IuOU`G5BfT@Y1qds=nKt)zR)b_ z3(bPQ&@AW+&4L-wv_z1yHf_70}n21&NhUu74Ny zg=RrtXcqK^W<3(bOxmG6VT&MX+m$|uhsSi$lO&=;BoeWBT9 z2$nB^3YM>czR)b_3(bPQ&}>{l3(bPQ&MfHb%r1HU_(HR6_JwA_tL!{--wVO=MNq-= zRnQljjSFa@S$ax(XUTpN2i*74(Ex&=X!kPk04A;T80RSI`q)K~H!EJ>eDfgx4Pi4PO95!Yk|v zub?Nqf}ZdSdcrH{39q0hyn>$a3VOmT=n1cP1r1*WJ>m5(?mvn62Ae(M74(Ex&=X!k zPk04A;T2TED$a3WkJN*b`nsPk03-;^&|zyn>$a`r~cFD=6tx20h^w^n_Q?6JEiP z@CtjvD=2+11*K;epeMY767ku840UhK%VdlD&ZCK zgxCMrCcJ`5c!fOS74(Ex&=X!kPk04A;T80RSI`q)K~H!EJ>m6d96<@MKjZo139oGS zgjY}_xdnQ{E9eQYpeMY7p708K!Yk+rub?NqW{$XqFM`QPj}u;DCA>l!^li`+UO`WI z1wG*v^n_Q?hb-s`uje0e4POL3;T80RS1=^J!Wv~g&=X!kCA>nO@CxcCU4d$E=7J-x zmh+$zULi@)8Yp4i+!pOzkUrvRsBBdlDrCBL3Yo55KswSI^eog@A8}<}0Hv%epjQRD zX8|hV6;e&FJ`xgM*{G@@uL|_4vfHXauL@LEbeDfBvjB7UO_wA+-tlA zMaUCgK{cicdcrFx5#I+r;T80RSJ3MMJ>eDfgxA*|F%2IlyuzOF3VOn8TtW%2aRDW~ zf}ZdSdcrH{39q0hyuR*;Yxn}FgjdKDUcr#?3QNTIKu>rDJ>eDfgjdiLUO`WI%^h(K zUjaSg74(Ex&=X$4knjq7!Yk+rub?Nqf}Zet;Sm?{MbHyoK~H!EJ>eDfgjdiLUO`WI z1w+Cs>@p;e_UO`WI1wG*v^n_Q? z6J9}2cm+M-74(Ex&=X!kPk4O;^N&P);SEQkZyt*>$4>b6sZoO;7akX7j*EZv`SCH9 zwK)*~nDOKOC7s)|5IfI)VTHOLQfEBAaq-vV;FZ^jeaT*;KqVE)`dB zT=b*(@652R6%KZf=qJ{SVc7JG(It#QO4X9%$9vv8`k3vQiA&K5QPyEYud+4XmiKK1 zhaA9GjHkzc<>R!2k6~G)1JS$qyO39(M%rxdvU{*d`f16RK30*v>>j_uulqj!(1GaS zv4baEa~h}ruIow<{yrD(r@SP)`n2dC(f6)T;J-#U8gQZp$3>q@j?0z1+~A(9$(|Ix zS9FWP@zKq!EWmN@9bL!$2i%usoD(=9y4j9%zv$ftzZCt%8(J(q`Uj~896Yh~lpmxX za_|AAzvQ3v1Cus#8tvpX;*VRb)s~z@dcg+1@KI-Plj(HT! z4?4yx8!pg;qo2|~ zKsovq&;)cHlB3@O<>+_c$dn~df52vW`eRU@{tT3-zXbKQZUf5E&%KHH{}y}i49d~3 zf^zg5pd9@+C`Z2s#*Tjc%4i77)1QFy^yi>F{S~OMb(!K3|5}#^<>;3|Ir=qFj(!uA zqu&AL==VW6`lBL}O`iUg&GPgYpgjFGsIPU|H}g1tOY%aj0Lsy?fO7Qfpd9@cC`Z2w z%F!Qya`eYw;^^}?qd|H4OHg0yGM5Dzo(CnT%b>p2)j&D=O;C=02b81V2j%FGKsowT zP>%iryi0$xcMa=nUAA;2lBZt)<>^;IdHQuwU+Y?+yrwQFM}Gjy(I12I`(~gV{UxZs z3Yp%(@{e+5M9j>F5-3l<3d+-Ofcje32Ic7YK=}|uP(H*2l%q2T<>;?KeXYy91(DOT zPlkC|o_-mWr(Xlj({DoZ^gE!w*7ZR-`cqI|(*l&EzXtWSF8fxllzqi2fO7P!Z{_~e zehoIu({F?F^n0K@{UIn%e*((UpM!GrSD?PuWiAh6CJ)L5D}!?MYhdi?C!b7UdHNmD zJpDc-Pk#i;)1QL+TDJh@=&wP2t;<$IhZjIO`V~-)ejSvf-vZO->32b!s0NTc{V`~s z{tS|*zXa`T-3Bs;GWRy7n2+1Q0p(j(K{@&jP>y~Z)R66gX?glXSf2g_l&3!j<>{|L zdHR{RA8|)N56aOmgBr*+P>y~Rl%wAP<>>c8bM({E2$rWm1?A~4KzaIWP+#k^?+8P^ z0Ggv;fi&prpd9@csPW$g<>(JUIr>xZj-S{XZ3|eQ{uI3( z2$}aif#mScL3!URP@m8;S5m*+@BEe9sz9#_R8^3wf>afxsvxfl^r}Fw>Ydw~K%G=M z4a?JSg6@-p^1l0^yzeP!p8f)|7OWv_LADkg{Q{`QR6!lI0m{*DgXZX`qaLifhM?C4 z%F|zf^7J$BlBfTmC=bffFN1RQYjFW{^qX-3bM!l)9Q`3EM}GpoFMUUH+soV_lPrm?t%j8W3)YrN?C`Z2q%F*wFa`cCw9Q_F>M}H2=(a)r>3Z8x*l&4}Wz zdHPLIo_+_Equ&SR=ubg8`U_Bw{uf#vDfL3#QuP@aAll&3!c z^|fvc%F&;Ja`cy=zSeC(Ir_Qx1V_IJ%F(aBhw*=_EmzfGvpoGaC{Mo!%F`c$^7JR5 z9Q`>cM}GzCYhC8O6tMovgL3rCpd9@g7(4pO^9Pov-vQ<6_d$93BT%0H6x7$cWn91< z{S7EbKli@i=odjb`c+Vlegl-F-+mwZZ*0x%v00w}5R|7s0p;n>L3#QsP>y~T7hGTK z8lY+THY5$-1Fy0ghM+Y31T+nwj^?mL{0h9<3TLk70-D;)gZ6AJLlW^dP$IqwO2c&+9CJjr(=dKMRz6eUhS3!yR1}G8V1|{Nqpfvmtl!l*x((rRo8h!;z z!)Ka_hEMLlJS-7k1|{NaphSEVl!)(u67hY|zSfN(Y4|B94Zj5aRXV6AW$wD5;fvQX z{v_h7Y?g>`fD-X-P$IquO2iLAiTDYquXS@!8h!;z!)LA!8a@w7!;=<;vWNr*1J`YO7mqCg68fY563E4c= zfu!O4plSFKBn>|WO~WtJpozsbBoUu&2i;fzCE_cfM0_38kZpm|@LfO&1&@}uSk_63mg4`{DDp~;%*75bPgQl!okm=ek zWV&_$=}2Qx%6bM$Sua6p_zfs!UHHhhD$q219a2qDTodzO7gSY{R|R@ipjQQYRiLWM zeKctJD(G?>l&)@r($z!IH2eg*>q*J;XAW8mR*=5dWo`&Boo{0x+aUxN0v zE^~9x@OjWQJmU|Rh_8VX@l8-7z6(mk4?v0dF(?tg1Ql_&0j1${w*(De1f}7tpfr2~ zyeVyg^lexoeh5m$Pe6(IIVcgo0`;{n^RYz4$6_fDO2d~yY4{o_4c`Q%;X9x-e7X-y z#E(FU_$eq6zW^oT*Py=EWqU!y7eHzF3MdU<2c_X#pfr3Jl!hOGAHCAve~n>@_!%e> zzl=+m9NmBt@wt!FcYHhHoQt5o)>T1i_y#Bq-v*`Od!RJ@5R`_WrsEPO;uoMq{2J8P zy6h){h%bN=@fA=az7CG9l`T*jz6(mj4?t=7F(?f`1JUrw{kMcA;y0kuW8bz8PL;aKu?o<&3vo08BiKN zU51r514+a;K~I|j^@JUO(qm)L(`G-_)8Bmh02721eZRsH5J8YJS?}MH;1A5vF=xH;c zr_F%U@Y&mgJSc#Y2Nh5nrVdKOx4>A#$It&R>}fNgr_F$#HUlbc29k*1fSxwGal zS7Xp##Pj_J_OuyLB7OrZZRWE<#1}zNn*lv-2K2NU(9>q(vPzo)J#7Z`v>EW?*V_EQ zf|WM&IiINVkf+UnN}GWs;+vq-W+2mweaO>hK*`1_=xH;cr_F$Oeb)S+?B|1sFMysl z1A5vF=xH;cM0^+Yv>DLTWDLTWDLTWPx8PL;aKu?_z-CE}*m-(9>rAInnUR^QQuP+6?GvGoYu1>|J#7Z`v>DLTWqXwBE!| zVTt$!=xH;cr_Fpdi1-5NX)~aw&4AMIEzr|u;sVxR1JKiEK-2I%e_)CDCFp50phSFb z8bo{%l!&i_o;DK~Fb&@UJ#7Y*h97~RHUoOv40!SXb9v%Ptl_aWGkYg@hmG68w@;=6Y$;H_V}|KUT?HUpo97>+-7z!!#Em0o!G(4TCr1jFsIeiiF>4GdQO z+qJ$m37sQUsT3VO^oY_$M-H7%0{%5e4n6RmE4S6n_EWQ+dXzr|u_`^`=x&`_7Lip3 z;)Q2crT6Wz?p^+5ReH#ScK6-8EXk^LDb{U!_bzD?+B7cx(aE&;tOqCUJ?Fu@?d_ZG zT5Q|ZBfgldM6h$wzV+Zkf3h|Ef|212{`90nf3jTx!`Dx6vtOFBRduhE51qkfd*sQ7 z4s&Uqa`Ntx|5X)h*@{)EbMm2QZ;u@Rz0bHq-0Vl5m#%vVC;0q_9C~QHBEmzGBiA2t z=-K>AmILN8p0ax&Z=%+R2v@3Y2O6Am=)Y}G_Zrpeg-iE3cIeq#bNpvU<3?$XhgIqP zV~3tY#nWR+GuC?wzf*;^p5&_Z*QXwO_I5qo_>WP?$8vKx!2|nNe!5%*{YsQhI_=Oo z+Y7aCSo>jy2TJEZ_|U^kgVU0cko=jFRp}Q_KlFcSZ?c5Ws`N5`ZSRl$WA&SRtjG4= zAEiG&W4muEVyUcn!3tU$FIcfEefo?;4?nJV=Mkb6qi*ToLl2#p9^8547^iR`8geJg z1)qTCg3lp+M_Yk%!8897T<|>jW}7z3pj_}8c(rY9f^xw-pt<0E$XsxuFJQUgQ&8X0 z7NA`4H7FN6`?cVL7eKk-6;LjC9h3{+0_B2tLAl@qP%iiwyd(X|MMK z$_3BOkb3q<+KQlD@G2-5yaCDuZ-a8dd!StKAt)Do0?GwX&tZK>TY+-HGhYubcpj7s zUIyiY*Fd@8O;9d)2b2rm2jzl~K)K*kP%iiae9c|@`Usl~p8eP0f)_x!;8oD|F({$i z2IYeHK)K*UP%iiclnXuw^%-pi$_3ASBOSh@<-bAGSi%H3UIyiY*Fd@8O;9d)2b2rm z2jzl~K)K*kP@mBj;QMUliZv*YEIT(BJXZe&Sl`hqpgfm4C>Oj1$_4L&a={0nT<|d{ z7kmav-7i6j`wb`;B=^nWf)~Gu`qFo_Dx2kkH$b`IZBQT8i2+0MXfO5g-pkm=N z{}#F{56T5EgEL#Xq6V4^&VntlT<|WaZXSSg!N;In@ENG@XiHEo_y&{K)K+VMR39Mpj_}WC>Oj2s>7S0 zT<{Jk7rdW_^&M>lnhQRKY@%8~a>3W2x!~Dv2N%2mnhRcm%muGQa=}}myuL0d7kmK9 z1s|tjjoBHf?`TU2`>T<{vGq22_|1@Ax_^nFk+_z2YapMv^~w)igNU*FL(%P{ux zpj_}WC>Oj2$^~zNa=|;GT<|`qQ8ofK%BG<8%K}notU+rzZ(qL`8e9PV;}~czcpZ`l z*#hOPcDF?bp!vmP$o%3NWM1hKGOu(4=|H*fyI-7+im)8xDk#Ue0eV%SS~UPw6{M;l zRRyUk$gBE+R}~dOuL(?Q!ux8#s;Ujj1s{U)mM5TG@Hr^AIJ0sWJP%n5%8<372FV3) zf@(|`)IkRzE_gEj#;{!Q8K}CJpx5=o;DYBtx!_e$E_ef!3*H9hg7@MA=Ew}=0_K8G zK)K+{AM*UsceD+g<$~w#;_l+l$MS3_f^xyDpt;~p=vyXlI-p$eJ}4J_1j+@Ug8GcM z1m%Knz{CaT`saQWzN1w^x!?^@E_fT13*H0ef)7Et;1f_T_#D({w9GoV;CWCkco~!n zUIWwmj@E?bf_Ff<;C)ao_z08>J_Yq1Z2`&!UxRYNvp)_lcmb3PUIFET*Fkf^(@_hS z3*H6gf)7Bs;A2oO_zcu{v?VAPd;`h_&;5IF!Hb|=@G2-5yaCDuZ-dvT?K@fzmJ2=v z<$_N@x!`k9-_cf}T=2|Kf(u>%<$_m0x!`qBE_e%+3*H6gf~NcZBmY)nr?Gtg6AKu>i6J=Ntug1j$+lJ`~6 zQ(Zt$bpaJ6*8`>QhoEP=fH$UJo4oy)!;<$aQ1U+Wvmo#Dpr^Wkp6UWh-Zw!{bpbuq z1@u%G&@){?ePBy3U{7@cJ=G<1)a88v^i&s6^1cpwstf3;E}*BnfcnBV22I`1pxeHd zOl(UKb)U??ne&gj?#qLEh?YT5bpa*so1mwHV5-C6y;uhG*S1l{x8Cw z>H>PI3+SmXpr^Wk(mX>@N@oH}-ps)_*(cQ%=&3H*qpt4rpl7;dkEUJT*VwF77syjx zKu>i6J=F#DFJ+*ox`2}R+1GHTlH>PI%SB#Ox8-8Sy0mwP%@WytP$GK@D!B!+7OWv_LG}`EeVfY*pc+#JbM~ zJ-G$+LXP&!?jfEJ5D~J-G$+Mcvb_Q7rF5W% zeE}w_o%?SMOSWe(53;=gO14)($@V&Evb_aKws%3jlplh6rcOXT8|R=@`wEn5&s0$D z>6`65VafI~DA`^ECEJ^zWP1mcZ101T?ITbx<)@%t$}d2v_BANgo_!lfV3`5>K3#w% z+bf`CdmWT)Z-J8ST~M-p07~qPLA{ipfl}>DP^x_cO10s=fIRd>!>yhs~1heNeJ} z1WL9~LCN+dsNFW8UdrdHLA4h_srD);)!qQ5+S_2P+T;7L2TQgOK@FM-C_yy`CEHh^ zWP9ccPKjjo_{j{~OZhS+)m{Uo+MA$Mdk2(i?}KT{_EB8e+>+svb_dMwl_h=#dScb_C6@p zJ_4nEr=Y3!1vGlUMH;SQ$@c8K!uT(MlI;~xvb_oVkOd{%`=DORk3hYYpMp~D3s9caR3LRm9aPg>pl;GGD78EQO~a2NNzfT6xx3sJ-GC;nb62^rP8UJb zwN=P;Z3EJg+Mtwm50tVVf)eo)(5nK~stu^B>Rwe5QcaL*N`qb%=v9GU73fugs%j2O z#An_UPM0^|6OZgrs4L<};!%rb; z_ys5pzXqk@v*|_<@dZ#Kz6wgjH$aK_HYgE41ocvW0!qWr!HQ}46(|j#xjJb0JSYuc z2GQ_||Ivgc;ya*3d>@pEAAx!)KLsV?7oc9suR&?}>@`8d7eHzF3MdU<2c_X#*QA4p z@3L7UegI0uk3os}87L9I1SR4(pfr5$+MwZ!pfr3Hl!kAB((r9C*6_*m2bPE*#wARS zPC$wHIVcgo0wv-zO&9S|9+ZYJgVOLdP#V4oO2c>K0;b^yP4u5c{Fu!W@iR~&ehFS+ z%6$V~Y?!+)i1;F?m-1Cm8omKa!?!_c_#P+?KLisEkN%s$imZV=vIdlh&s-lwd>)jD zFM}Rg14_d;L658f?b+Ceq~S-P2iAaJSFFbZ_Q)DgB0l^6AmR(4N7jHISp#}x4JZxY z1wFC`^vD`e8h!?PU`-m9h~I!7S<~WSp~xCgBEAZGWDV$%HK0e})6pdxEN z5=49fRAdcgTCom!WDO|U*abbZ2K2}pP(yYG#u`3;{w!gStN}f;=A%Kx7eR^mD(I0l zphwn#8pu7+BWpm9tO2Fr=b#7He3bj&BWrF7B0dj#WDV$%HK2xi6I5gkq(R>YJ+cPW z_@9CvSp#}tP1lDkf1CmK$QsZiYe0{z0X?z?^vD`eqih6flubeFmj$HGSc7VL_U6#u z0(ku$=6_dUMbA8r{L)L;aWG$#c9$5pbFRPhd>-u;Q@p;fAYe0{z0X?z? z^vIgHfL>?D1r%8WdSnggfi+;F;ko~FpWyCNWDV$%HJ~DEAdjp8J+cOrh#!F-Sp#}x z4d{_Ipfr5$lR?8*!BzTa$@Oo*9$5ocOvLvsM7eJ4!0X?z?l!kAC9$5okV8VR>UTio9c@dxJzZvY2HK0ePcA#rQus38a^3+ zU05Q107}GP39+b3wxwL239ZC=K5LrQzG4G<@%KX%1m;;)iUO zh@XHG@pDj`ZUyQ^eCG2(#OFatpE4*7UjwD#o1ip&2b6~IgRzE>_16fNKA3{iGYe26 zW)12^e0CH>d;!#p_zEZuUk9b(TcBz9E+h><0Hxu_U|J%63Huv$P$E9}g&^XKphSEX zl!$MF{xTGlhVO&Y@FP$fehNy%FF@1q>1YirekS|HAmR(422BN&ysCo|@hwmyz6(mj z4?xrKV@Mi)21>&(LA{9IfOp+)`X~3LAmWRlI=l)>#5X{R_%zzCZh;cEUYpo#biq|TUwYWfOPdoz=umh+%#_%b93S_36_o7S-v=e)N1*DOf?gM>7x5cV z8on?M8omOe;gjc29hQi1#U)I{cjFQ!;s>Ba{1lXkUx0cMzXqk@vv&p!UjR+RS0QQm z1}F{RzLW7M5#M98MEnqxh@XNI@e5EQehunHeBochi}(sC4POTpL5cV(C=uTPrQzG4G<*+~h982`@DorPeh#K3;#aVu zX)?1Q;`5+Hd>NF8uYnTrO;9i5JD@atAC!h4fzt3(P#S&#nuh2311p*)`}H8=3!p@N z1(b-dgA(yAP$IqyO2ZF8Y4|ZH4L<{=;g_IZ#Ap7M0%>~_pNA#l%b-Mj4U~v)f)|)_ z?|>5VeNfRfBTyQC3QEH-Kxz0js2B0sZv+jWF2EA;70^U{9g>J|ffDguP$GT+O2m&r zY4{na7x7C_8h!)XvoSXh8omg|8a|%?tFT0T1C)qwgA(yQP$GT^>P7qn)Qk8zC=I^? zrQtK*3>rQUO2d~yY53YVx&I{Mn{1Yd?|>5VeNZBP1nNcn6qJZxfO-+X2BqP%{}wcS z0hETXfYR`FFwyYbe=S%dz6(mk4?v0dF{l^uGf*Oa2};CoKxz2gw}OT*g3|C+P#V4g zO2fB7{c-jlC=ovd6-_e*^@Lr3dQz@IiTLay5%KXGoB}8fUje1z>!37z3zUZMg3|Em z0W1+e2K6F-21>*)L5cVcC=s9gb`bGJP=crmO2aomY4|oMN!J6V;fJ9AarOx;=`#l< z;#Z(VeC9hr#OFbY_%f&$@ikELpb1JIbU8J)v#5X~S_zox$-v=e)N1#Of6qJZxfYR`5Py;!;;)4D- zdAnBtrQs`}G<+TOKhEBQCE~lFMEn4hh#!M`5kCVp)R&;Wh~GdO^tm4f4POK`{;Qxg zd;^q*@1|iNv!F!$7}SgS87L9I1SR4(phSG`t}x1qphj60w0>zo>Wnt1miNH8z47=T z!jj7q&_w(kk_26WlDnB7g`#=Tlyw<0WnF_z*ES&&)*VO(>Vp#2BQSnD9@jsGrK}gA zSGC?&1*$4YRY9r>QdN*w1$tGWUc^s9uL-24ME|Z~iTJ{ggWRrw64rH4!nzBZh#x@K zf-z(*m_gF;OHhr;{ChZP9+ZYJgZ{_aYq08Sf?gLW5kCMW;-{cq#4kX-h+l)!@Y$aP z4POAI;VYmtd=r$0Pj_I6_&z8RKLYh4ehQk1UqTY`8&D!Xw+S!ei=Z@o6_kc=g3|CE zP#V4uqT!S4KZO-dvj8RH*I>m&eD_4H2etEi}-0=z=CNOpfvm%l!nh{9u)pKdm-~6 z7x5KPBEAkv#J50+_%0|BKa2~QhM$1a@N-Zaeg#UyXU>0+Yxq2PaV+OwK>PtL5nlr( z;+vpEd?}HNYBTz5mXJANio$mfPaO#0WPd>)dMCV1-dg-rTaOe+G`3p*&7aaQK z^zcKcxbUBViok(90tfU6oDZMk!aoms1P1(>Wyw|0SCx{5POS;C$p1 z7yd=iBXB^EzyUo12lNOWP%rO?phw_<9)Sb8@L$0a{+W-S;=(@1 z14{V!L65)zJpu>x2pmwte+^3bXK&)VTRK(&^tEk3J(U}vL|hy62prHOa6pg10X+f- z^avc#BXGK>1mT~DCH%{vN8o@SfdhI34(Jg$phw_<68=-rBXB^EzyYNLvp1jO!oL8z z@UOtqOLfpAa6pg10X+f-^avc#BXB@hL!dO!29)s0-9p>7o-pVUIB8hIzX5s#4(Jg$ zpdxS}kH7&v0tfU6oR5X>%7Y$(19}7w=n*)e3;!Rm}!8LWNpwRaC+Q-9)iPWkH7&HfdhF24(Jg$ALjzwm-0O55jdbn;DGAz zCg>43phw_<_VS*x2%Pk-VeI8WkH7&v0tfU69MB_h zK##xyHOfYyM%fg!epx{3j5Vm1XFp}_jfF=6mhi8Diok)STU(&icz0WL0Gb*fL#D=O zkZIv1WLkIw=|H(pGf&&!6f1%*{Hw6!cmwpRK(%TBswzlTL8=N;RghOT*j5F41Ppu!R2*^avbKVtfutjAw3R;z%+>^N_Wm3|R|mkVoKvYD^dOPXeHX{}^=PKZ8}* z67;%m=QgucyFBO-IG{)1fF6MZdIU~fKoK}`0Y%_|9)Sb8@ZZ1^{<+U^cPRn~{QsG{ zzh-C7GEwg^d#aMuPO3Oa#W&vp08(fmf}U9ESi*V1*jZtIN= z9OwoPiVYkX8#vI5_iGp%I50MFU~J$(!@ph8N``-l}q1`do3oEI~m8TQZlDVT9{Y~aAyz=5%W17iaR#s&_I4V-WC#nOKY z+kvrx17iaR#s&_I@So%OY#SIGI50MFpy7Xlv4I0)1Ls@(zDR$KE{qKv7#lb+HgI5U z;CzeMAFtk5+#DM?(C|ON*ua6YfwSgBNZ;ZPj13$Z8#vJLpTO9_fseR>18?D9zwv?% z|2>Qi92groFg9>r;tPN9_I!1r;a@^8-j85v_$jjC7tn^Upcn7A@ZDJ&j1Jg{KSLuv z|2E%1|D89OUK@MJh#x>VaK_MvpFtab32pc_^y2*v+VIB=8}S!t#J9e~f&F*hpb_7P zM*I*O@e}C9`#H4XSI~yvKri0!p$&h6H2iJwzG5T3y=fx83yt^^8u24̦cI16aQ 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�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

3`BYq7ZP5;{J4%+ZX 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ಚ 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

%APYm;Rzen_&!K;1#56c+!2wQGQ5 z@Q#6b+}F?%l~~a80V@G<08`Ie1EyXr9Wb-WfGCS38`;eN3yltQ0f1~|!N5ER;(>rl z$VVa`3%CqA+0e6QW9rq?{8icjS(<(jXOa1axC3+$%ryYyAPWZO1tZR5C>`=efKos< zz|^zWnW>jUj@8B%`Yc3qD1NopQ*Ii=V3E7)_{pg~XU*!-Z^4pfv+kL_Y@WW|M9-nT z)!JnFW547p`o%|{p<*m+f9pWp@ff%uW(VRy^AU78@Jt$sU3WmO{;W0AO;DIH08jhj zkn3mc${9BWzgei#Sk8N6VU$B2rLQr3+GhBa4%r-l>C;)z;m~aZFnwZP1mbN0?9-nX zpX!ii`owf3WZD7Pr=b>~=Ayg3jqcSxRG~>3+PFz95DzBTA>T6OU~K{O`9kKIBZV{9 zFgiHgSRtWy`ZYtFHk|F&K!*!u+8u)D$X#$s1(b{!~E?FdqNAc1=T(k>bw#_9S)0LzJztyCIr9A!b?T>xDH98#$!OY4anh0z;v6}OM3Y}9VW ziQUSLS}R+F+P$GpYM4vUZqoF}pEK~hQCK(qLM*ZseX>crS3V#97x-MFYG4jrU%8+e zw`iqf<`>eur?mUzvGFFbStS{mgH@%#q7vPj{&-3oe+$bht^aS?99rzvCdipT^=6{< znOAemS3>v5WTSkW}(fYdOv<| z{^0#{Qb);+f! zQrhaiBm$ehWEnK)5N^;`OWELg{Jv1U`dr zN^d`dPMb@3j(Y;%>nBH7f@$Gc?sthBXh1n;EAdQVC1Do?u5*^+OYf1F$ zR&8A$w$Qu1ZlQ*y5N>8+I%G@>jt=xHY4^(!alz2d<8%aT5$Y^D88j+Kn-RnHHL%0~ zEgBw0r*ez|cNwy*Q+^Yju&DY0mqjz5)h0;uOToU;6RW7wkv@6W7-*IMMK+a&KWCVo z-tqr78{UcDc}`odafSX4S@yc{W;&hFt_P2yU2$lW_`LRz)OZeD)|di(qw@z?qvAMg zB+)f!$ci7-S=YFH6OHLe^JJW44M#NX$~D~jhoO=Sd}AhctWr=C>U=wRB@N%Ejggt$ z8Lej$2YjPODtO%59L~~v+q9l?#yNO1QD4LD+VX$~)&5ZDp5SEe#~lJ$Z#s9v81nDb z+Su{q=1V)ZKJw|{Dwm!g4|{VSPQ(*Q9>gaD4+S0rJPcR>#{tjAO+MZsti_GK5x|cC zj|A=s91k1}%ugd7#*Mzwz=wdx0Ivrg3w!}L{&0gaO*sz&f6Dj#58+{8$S6yJVMDna zSUxQUjJ%Z);K{(-q0J90O#_|^JO!AaNE!=#2k>a%>A+Wz+nvBq0`uL<@Gb$$Y~Y_e z@@;`$*a@R}F<|r_tSGkv{|24_j)34jz?1v%qgvSLL5?>UkzHu=E-fbQR}@D>+%MN-p!5&|90T;-im^}l_<#H3tWl^qrg(0Mzw|l@9l~Q z$AJgMVm$>u)L&8V1MbpUQIddH!OkGAxlS-JAB>$~bOHVijxde}e*tg|@Iv4-u)YY` zg?KXXdN}qd@Mmz0F`?8h;6D+^Em|c7_IP953Es{E7SLM^d>;J!fg`{VLHc0;yg?F8D2nDxee)$1Lwk#9>7_!^B`~vs$~{%EcDWrgK(pyD}g_N z0VnVy5PS%@2Lx6C_X2(xxMzE$0q=pqSlo~OGSvBut&+1si~k$Syu;H_d>hDis17?Y zcPQ?0FL2!g&p|2p3Zp$2!A`X=YRwvQ$+;*w)Z`^?kQ1+18zmxy=*Ehy0RXSTCs^jR}{ z5Ya;Vpg_}quUIWp|12=h<)ZMemO`*N)9h@2K+bu5C@l&tSVtw$619Feo( zke>J%AOIFB5x4trN?Qk_F{let e=!1;if(h)try{(await o.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===s.browser&&s.version>66||"Safari"===s.browser&&s.version>13||"OPR"===s.browser&&s.version>43||"Edge"===s.browser&&s.version;const u=(()=>{if(!t&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})(),d=" is not allowed to change after `createInstance` or `loadWasm` is called.",f=!t&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",g=!t&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",_=e=>{if(null==e)e=[];else{e=e instanceof Array?[...e]:[e];for(let i=0;ie&&"object"==typeof e&&"function"==typeof e.then;var b=function(){this.init()};b.prototype={init:function(){var e=this||C;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var t=this||C;if(e=parseFloat(e),t.ctx||R(),void 0!==e&&e>=0&&e<=1){if(t._volume=e,t._muted)return t;t.usingWebAudio&&t.masterGain.gain.setValueAtTime(e,C.ctx.currentTime);for(var i=0;i=0;t--)e._howls[t].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,R()),e},codecs:function(e){return(this||C)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||C;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||C,t=null;try{t="undefined"!=typeof Audio?new Audio:null}catch(t){return e}if(!t||"function"!=typeof t.canPlayType)return e;var i=t.canPlayType("audio/mpeg;").replace(/^no$/,""),r=e._navigator?e._navigator.userAgent:"",n=r.match(/OPR\/([0-6].)/g),o=n&&parseInt(n[0].split("/")[1],10)<33,s=-1!==r.indexOf("Safari")&&-1===r.indexOf("Chrome"),a=r.match(/Version\/(.*?) /),l=s&&a&&parseInt(a[1],10)<15;return e._codecs={mp3:!(o||!i&&!t.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!i,opus:!!t.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(t.canPlayType('audio/wav; codecs="1"')||t.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!t.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!t.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(t.canPlayType("audio/x-m4a;")||t.canPlayType("audio/m4a;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(t.canPlayType("audio/x-m4b;")||t.canPlayType("audio/m4b;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(t.canPlayType("audio/x-mp4;")||t.canPlayType("audio/mp4;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!t.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(t.canPlayType("audio/x-flac;")||t.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||C;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var t=function(i){for(;e._html5AudioPool.length0?s._seek:i._sprite[e][0]/1e3),h=Math.max(0,(i._sprite[e][0]+i._sprite[e][1])/1e3-l),c=1e3*h/Math.abs(s._rate),u=i._sprite[e][0]/1e3,d=(i._sprite[e][0]+i._sprite[e][1])/1e3;s._sprite=e,s._ended=!1;var f=function(){s._paused=!1,s._seek=l,s._start=u,s._stop=d,s._loop=!(!s._loop&&!i._sprite[e][2])};if(!(l>=d)){var g=s._node;if(i._webAudio){var _=function(){i._playLock=!1,f(),i._refreshBuffer(s);var e=s._muted||i._muted?0:s._volume;g.gain.setValueAtTime(e,C.ctx.currentTime),s._playStart=C.ctx.currentTime,void 0===g.bufferSource.start?s._loop?g.bufferSource.noteGrainOn(0,l,86400):g.bufferSource.noteGrainOn(0,l,h):s._loop?g.bufferSource.start(0,l,86400):g.bufferSource.start(0,l,h),c!==1/0&&(i._endTimers[s._id]=setTimeout(i._ended.bind(i,s),c)),t||setTimeout((function(){i._emit("play",s._id),i._loadQueue()}),0)};"running"===C.state&&"interrupted"!==C.ctx.state?_():(i._playLock=!0,i.once("resume",_),i._clearTimer(s._id))}else{var p=function(){g.currentTime=l,g.muted=s._muted||i._muted||C._muted||g.muted,g.volume=s._volume*C.volume(),g.playbackRate=s._rate;try{var r=g.play();if(r&&"undefined"!=typeof Promise&&(r instanceof Promise||"function"==typeof r.then)?(i._playLock=!0,f(),r.then((function(){i._playLock=!1,g._unlocked=!0,t?i._loadQueue():i._emit("play",s._id)})).catch((function(){i._playLock=!1,i._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),s._ended=!0,s._paused=!0}))):t||(i._playLock=!1,f(),i._emit("play",s._id)),g.playbackRate=s._rate,g.paused)return void i._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||s._loop?i._endTimers[s._id]=setTimeout(i._ended.bind(i,s),c):(i._endTimers[s._id]=function(){i._ended(s),g.removeEventListener("ended",i._endTimers[s._id],!1)},g.addEventListener("ended",i._endTimers[s._id],!1))}catch(e){i._emit("playerror",s._id,e)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===g.src&&(g.src=i._src,g.load());var m=window&&window.ejecta||!g.readyState&&C._navigator.isCocoonJS;if(g.readyState>=3||m)p();else{i._playLock=!0,i._state="loading";var v=function(){i._state="loaded",p(),g.removeEventListener(C._canPlayEvent,v,!1)};g.addEventListener(C._canPlayEvent,v,!1),i._clearTimer(s._id)}}return s._id}i._ended(s)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var i=t._getSoundIds(e),r=0;r=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else n.length>=2&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(i=t?r._soundById(t):r._sounds[0])?i._volume:0;if("loaded"!==r._state||r._playLock)return r._queue.push({event:"volume",action:function(){r.volume.apply(r,n)}}),r;void 0===t&&(r._volume=e),t=r._getSoundIds(t);for(var a=0;a0?r/h:r),u=Date.now();e._fadeTo=i,e._interval=setInterval((function(){var n=(Date.now()-u)/r;u=Date.now(),a+=l*n,a=Math.round(100*a)/100,a=l<0?Math.max(i,a):Math.min(i,a),s._webAudio?e._volume=a:s.volume(a,e._id,!0),o&&(s._volume=a),(it&&a>=i)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,s.volume(i,e._id),s._emit("fade",e._id))}),c)},_stopFade:function(e){var t=this,i=t._soundById(e);return i&&i._interval&&(t._webAudio&&i._node.gain.cancelScheduledValues(C.ctx.currentTime),clearInterval(i._interval),i._interval=null,t.volume(i._fadeTo,e),i._fadeTo=null,t._emit("fade",e)),t},loop:function(){var e,t,i,r=this,n=arguments;if(0===n.length)return r._loop;if(1===n.length){if("boolean"!=typeof n[0])return!!(i=r._soundById(parseInt(n[0],10)))&&i._loop;e=n[0],r._loop=e}else 2===n.length&&(e=n[0],t=parseInt(n[1],10));for(var o=r._getSoundIds(t),s=0;s=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else 2===n.length&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if("number"!=typeof e)return(i=r._soundById(t))?i._rate:r._rate;if("loaded"!==r._state||r._playLock)return r._queue.push({event:"rate",action:function(){r.rate.apply(r,n)}}),r;void 0===t&&(r._rate=e),t=r._getSoundIds(t);for(var a=0;a=0?t=parseInt(r[0],10):i._sounds.length&&(t=i._sounds[0]._id,e=parseFloat(r[0]))}else 2===r.length&&(e=parseFloat(r[0]),t=parseInt(r[1],10));if(void 0===t)return 0;if("number"==typeof e&&("loaded"!==i._state||i._playLock))return i._queue.push({event:"seek",action:function(){i.seek.apply(i,r)}}),i;var s=i._soundById(t);if(s){if(!("number"==typeof e&&e>=0)){if(i._webAudio){var a=i.playing(t)?C.ctx.currentTime-s._playStart:0,l=s._rateSeek?s._rateSeek-s._seek:0;return s._seek+(l+a*Math.abs(s._rate))}return s._node.currentTime}var h=i.playing(t);h&&i.pause(t,!0),s._seek=e,s._ended=!1,i._clearTimer(t),i._webAudio||!s._node||isNaN(s._node.duration)||(s._node.currentTime=e);var c=function(){h&&i.play(t,!0),i._emit("seek",t)};if(h&&!i._webAudio){var u=function(){i._playLock?setTimeout(u,0):c()};setTimeout(u,0)}else c()}return i},playing:function(e){var t=this;if("number"==typeof e){var i=t._soundById(e);return!!i&&!i._paused}for(var r=0;r=0&&C._howls.splice(r,1);var n=!0;for(i=0;i=0){n=!1;break}return x&&n&&delete x[e._src],C.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,i,r){var n=this["_on"+e];return"function"==typeof t&&n.push(r?{id:i,fn:t,once:r}:{id:i,fn:t}),this},off:function(e,t,i){var r=this,n=r["_on"+e],o=0;if("number"==typeof t&&(i=t,t=null),t||i)for(o=0;o=0;o--)n[o].id&&n[o].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,i)}.bind(r,n[o].fn),0),n[o].once&&r.off(e,n[o].fn,n[o].id));return r._loadQueue(e),r},_loadQueue:function(e){var t=this;if(t._queue.length>0){var i=t._queue[0];i.event===e&&(t._queue.shift(),t._loadQueue()),e||i.action()}return t},_ended:function(e){var t=this,i=e._sprite;if(!t._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;r--){if(i<=t)return;e._sounds[r]._ended&&(e._webAudio&&e._sounds[r]._node&&e._sounds[r]._node.disconnect(0),e._sounds.splice(r,1),i--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],i=0;i=0;if(!e.bufferSource)return this;if(C._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),t))try{e.bufferSource.buffer=C._scratchBuffer}catch(e){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(C._navigator&&C._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var T=function(e){this._parent=e,this.init()};T.prototype={init:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++C._counter,t._sounds.push(e),e.create(),e},create:function(){var e=this,t=e._parent,i=C._muted||e._muted||e._parent._muted?0:e._volume;return t._webAudio?(e._node=void 0===C.ctx.createGain?C.ctx.createGainNode():C.ctx.createGain(),e._node.gain.setValueAtTime(i,C.ctx.currentTime),e._node.paused=!0,e._node.connect(C.masterGain)):C.noAudio||(e._node=C._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(C._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=t._src,e._node.preload=!0===t._preload?"auto":t._preload,e._node.volume=i*C.volume(),e._node.load()),e},reset:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++C._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,t=e._parent;t._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(t._sprite).length&&(t._sprite={__default:[0,1e3*t._duration]}),"loaded"!==t._state&&(t._state="loaded",t._emit("load"),t._loadQueue()),e._node.removeEventListener(C._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var x={},E=function(e){var t=e._src;if(x[t])return e._duration=x[t].duration,void O(e);if(/^data:[^;]+;base64,/.test(t)){for(var i=atob(t.split(",")[1]),r=new Uint8Array(i.length),n=0;n0?(x[t._src]=e,O(t,e)):i()};"undefined"!=typeof Promise&&1===C.ctx.decodeAudioData.length?C.ctx.decodeAudioData(e).then(r).catch(i):C.ctx.decodeAudioData(e,r,i)},O=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},R=function(){if(C.usingWebAudio){try{"undefined"!=typeof AudioContext?C.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?C.ctx=new webkitAudioContext:C.usingWebAudio=!1}catch(e){C.usingWebAudio=!1}C.ctx||(C.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(C._navigator&&C._navigator.platform),t=C._navigator&&C._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),i=t?parseInt(t[1],10):null;if(e&&i&&i<9){var r=/safari/.test(C._navigator&&C._navigator.userAgent.toLowerCase());C._navigator&&!r&&(C.usingWebAudio=!1)}C.usingWebAudio&&(C.masterGain=void 0===C.ctx.createGain?C.ctx.createGainNode():C.ctx.createGain(),C.masterGain.gain.setValueAtTime(C._muted?0:C._volume,C.ctx.currentTime),C.masterGain.connect(C.ctx.destination)),C._setup()}};!function(e,t,i,r){var n;e.prototype._pos=[0,0,0],e.prototype._orientation=[0,0,-1,0,1,0],e.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var i=t._howls.length-1;i>=0;i--)t._howls[i].stereo(e);return t},e.prototype.pos=function(e,i,r){var n=this;return n.ctx&&n.ctx.listener?(i="number"!=typeof i?n._pos[1]:i,r="number"!=typeof r?n._pos[2]:r,"number"!=typeof e?n._pos:(n._pos=[e,i,r],void 0!==n.ctx.listener.positionX?(n.ctx.listener.positionX.setTargetAtTime(n._pos[0],t.ctx.currentTime,.1),n.ctx.listener.positionY.setTargetAtTime(n._pos[1],t.ctx.currentTime,.1),n.ctx.listener.positionZ.setTargetAtTime(n._pos[2],t.ctx.currentTime,.1)):n.ctx.listener.setPosition(n._pos[0],n._pos[1],n._pos[2]),n)):n},e.prototype.orientation=function(e,i,r,n,o,s){var a=this;if(!a.ctx||!a.ctx.listener)return a;var l=a._orientation;return i="number"!=typeof i?l[1]:i,r="number"!=typeof r?l[2]:r,n="number"!=typeof n?l[3]:n,o="number"!=typeof o?l[4]:o,s="number"!=typeof s?l[5]:s,"number"!=typeof e?l:(a._orientation=[e,i,r,n,o,s],void 0!==a.ctx.listener.forwardX?(a.ctx.listener.forwardX.setTargetAtTime(e,t.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(i,t.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,t.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(n,t.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(o,t.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,t.ctx.currentTime,.1)):a.ctx.listener.setOrientation(e,i,r,n,o,s),a)},i.prototype.init=(n=i.prototype.init,function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],n.call(this,e)}),i.prototype.stereo=function(e,i){var r=this;if(!r._webAudio)return r;if("loaded"!==r._state)return r._queue.push({event:"stereo",action:function(){r.stereo(e,i)}}),r;var n=void 0===t.ctx.createStereoPanner?"spatial":"stereo";if(void 0===i){if("number"!=typeof e)return r._stereo;r._stereo=e,r._pos=[e,0,0]}for(var s=r._getSoundIds(i),a=0;a{console.warn(`Sound '${e}' playback failure: ${t}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=D,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`license`"+d);i._license=t})(M,e)}static get productKeys(){return this._license}static set productKeys(e){M.license=e}static get handshakeCode(){return this._license}static set handshakeCode(e){M.license=e}static get organizationID(){return this._license}static set organizationID(e){M.license=e}static set sessionPassword(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`sessionPassword`"+d);i._sessionPassword=t})(M,e)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:a,worker:l,getUserMedia:h,camera:await c(),browser:s.browser,version:s.version,OS:s.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(e){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");M._engineResourcePath=(e=>{if(null==e&&(e="./"),!t){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+d);i._licenseServer=_(t)})(M,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+d);i._deviceFriendlyName=t||""})(M,e)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(e){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");M.__bUseFullFeature=e}static isImageSource(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"getImage"in e}static isDSImage(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("width"in e&&("height"in e&&"pixelFormat"in e)))}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("region"in e&&("sx"in e&&("sy"in e&&("width"in e&&("height"in e&&("colorMode"in e&&("timeSpent"in e&&("timeStamp"in e&&("isCropped"in e&&("toCanvas"in e&&("_sWidth"in e&&("_sHeight"in e&&"_bUseWebGL"in e)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(e){this._region=e,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var e;return null===(e=M._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",M.engineResourcePath)}static set defaultUIElementURL(e){M._defaultUIElementURL=e}static _fireHTTPSWarnning(){M.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{M.onWarning&&M.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new w({src:[this._soundSource],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(e){this.bPlaySoundOnSuccessfulRead="never"!==e&&e}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(e){this.bVibrateOnSuccessfulRead="never"!==e&&e}set dce(e){this._dce=e}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(e){this._maxCvsSideLength=e,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",e)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;M._onLog&&M._onLog("_registerDCEControler()");const e=this.dce;this._dceControler=e._createControler();const t=this._dceControler;t.register(this),t.setDisiredValue(this,"refreshInterval",200),t.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}const i=e.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{i?i===t._innerSetUI&&(await e.setUIElement(`${r.engineResourcePath}dce.ui.html`),t._innerSetUI=e.getUIElement()):(await e.setUIElement(`${r.engineResourcePath}dbr.ui.html`),t._innerSetUI=e.getUIElement())}catch(t){await e.setUIElement(r.defaultUIElementURL)}else i||await e.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async e=>{let t=await this._decode_DCEFrame(e,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onImageRead(e)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));const{sx:i,sy:r,width:n,height:o,_sWidth:s,_sHeight:a}=e;M.recalculateResultLocation(t,i,r,s,a,n,o),this._drawResults(t)},e.on("cameraChange",this.callbackCameraChange),e.on("resolutionChange",this.callbackResolutionChange),e.on("cameraClose",this.callbackCameraClose),e.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(M._onLog&&M._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(e,t){if(null==e)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(e&&e.isCameraEnhancer)this.dce=e,await this._registerDCEControler(),this._imgSource=null;else{if(!M.isImageSource(e))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=e}t&&t.resultsHighlightBaseShapes&&(this._drawingItemNamespace=t.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:e,l:t,ls:i,sp:r,rmk:n}=(e=>{const t=e;if(t._pLoad.isEmpty){let e,i,r=t._license||"",n=JSON.parse(JSON.stringify(t._licenseServer)),o=t._sessionPassword,s=0;if(r.startsWith("t")||r.startsWith("f"))s=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))s=1;else{s=2;const t=r.indexOf(":");if(-1!=t&&(r=r.substring(t+1)),r.startsWith("DLS2")){let t=r.substring(4);try{t=atob(t)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const i=JSON.parse(t);if(r=i.handshakeCode?i.handshakeCode:i.organizationID?i.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===n.length){let e=[];i.mainServerURL&&(e[0]=i.mainServerURL),i.standbyServerURL&&(e[1]=i.standbyServerURL),n=_(e)}!o&&i.sessionPassword&&(o=i.sessionPassword),e=i.remark}("200001"===r||r.startsWith("200001-"))&&(n&&n.length||(r="")),r||(s=1)}if(s&&(globalThis.crypto||(i="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(i="Require https to use online key in this browser.")),i){if(1!==s)throw new Error(i);s=0,console.warn(i),t._lastErrorCode=-1,t._lastErrorString=i}return 1===s&&(r="",console.warn("Applying for a public trial license ...")),{lt:s,l:r,ls:n,sp:o,rmk:e}}throw new Error("Can't preprocess license again"+d)})(M);this._pLoad.task=async(o,a)=>{let l=M.engineResourcePath+M._workerName;M.engineResourcePath.startsWith(location.origin)||(l=await fetch(l).then((e=>e.blob())).then((e=>URL.createObjectURL(e)))),M._dbrWorker=new Worker(l),M._dbrWorker.onerror=e=>{let t=new Error(e.message);a(t)},M._dbrWorker.onmessage=async t=>{let i=t.data?t.data:t;switch(i.type){case"log":M._onLog&&M._onLog(i.message);break;case"load":{i.message&&(i.message=i.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let t,r=!1;1===e&&(r=!0),i.success?(M._dbrWorker.onerror=null,M._version=i.version+"(JS "+M._jsVersion+"."+M._jsEditVersion+")",M._onLog&&M._onLog("load dbr worker success"),i.message&&console.warn(i.message)):(t=new Error(i.message),t.stack=i.stack+"\n"+t.stack,r||111==i.ltsErrorCode&&-1!=i.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&M.showDialog(i.success?"warn":"error",i.message),i.success?o():a(t);break}case"task":{let e=i.id,t=i.body;try{M._taskCallbackMap.get(e)(t),M._taskCallbackMap.delete(e)}catch(t){throw M._taskCallbackMap.delete(e),t}break}default:M._onLog&&M._onLog(t)}},M._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:M.engineResourcePath,bUseFullFeature:M._bUseFullFeature,bd:M._bWasmDebug,v:M._jsVersion,brtk:!!e,bptk:1===e,l:t,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:s,fn:M.deviceFriendlyName,ls:i,sp:r,rmk:n})}}await this._pLoad}static async showDialog(e,t){await(async(e,t,i)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let o=document.createElement("div");o.innerHTML=n;let s=[];for(let e=0;e{if(e==t.target){a.remove();for(let e of s)e.remove()}}));else if(!h&&e.classList.contains("dls-license-icon-close"))h=e,e.addEventListener("click",(()=>{a.remove();for(let e of s)e.remove()}));else if(!c&&e.classList.contains("dls-license-icon-error"))c=e,"error"!=t&&e.remove();else if(!u&&e.classList.contains("dls-license-icon-warn"))u=e,"warn"!=t&&e.remove();else if(!d&&e.classList.contains("dls-license-msg-content")){d=e;let t=i;for(;t;){let i=t.indexOf("["),r=t.indexOf("]",i),n=t.indexOf("(",r),o=t.indexOf(")",n);if(-1==i||-1==r||-1==n||-1==o){e.appendChild(new Text(t));break}i>0&&e.appendChild(new Text(t.substring(0,i)));let s=document.createElement("a"),a=t.substring(i+1,r);s.innerText=a;let l=t.substring(n+1,o);s.setAttribute("href",l),s.setAttribute("target","_blank"),e.appendChild(s),t=t.substring(o+1)}}document.body.appendChild(a)}catch(t){e._onLog&&e._onLog(t.message||t)}})(this,e,t)}static async createInstanceInWorker(e=!1){return await M.loadWasm(),await new Promise(((t,i)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(e=>{if(e.success)return t(e.instanceID);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),M._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:e})}))}static async createInstance(){let e=new M;return e._instanceID=await M.createInstanceInWorker(),M._fireHTTPSWarnning(),e}async clearMapDecodeRecord(){return await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success)return e();{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:i,instanceID:this._instanceID})}))}async decode(e){M._onLog&&M._onLog("decode(source: any)"),M._onLog&&(this._timeStartDecode=Date.now());{let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),e instanceof Blob?await this._decode_Blob(e,t):e instanceof ArrayBuffer?await this._decode_ArrayBuffer(e,t):e instanceof Uint8Array||e instanceof Uint8ClampedArray?await this._decode_Uint8Array(e,t):e instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?await this._decode_Image(e,t):e instanceof HTMLCanvasElement?await this._decode_Canvas(e,t):e instanceof HTMLVideoElement?await this._decode_Video(e,t):"string"==typeof e?"data:image/"==e.substring(0,11)?await this._decode_Base64(e,t):await this._decode_Url(e,t):M.isDCEFrame(e)?(t.bCopyData=!0,await this._decode_DCEFrame(e,t)):M.isDSImage(e)?(t.bCopyData=!0,await this._decode_DSImage(e,t)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(e,t)}async decodeUrl(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(e,t)}async _decodeBuffer_Uint8Array(e,t,i,r,n,o){return await new Promise(((s,a)=>{let l=M._nextTaskID++;M._taskCallbackMap.set(l,(e=>{if(e.success){let t,i=M._onLog?Date.now():0;M._onLog&&M._onLog("worker return result: "+i),this._lastInnerDecodeDuration=e.duration;try{t=this._handleRetJsonString(e.decodeReturn)}catch(e){return a(e)}if(M._onLog){let e=Date.now();M._onLog("DBR time get result: "+i),M._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),M._onLog("DBR worker decode image cost: "+(i-this._timeEnterInnerDBR)),M._onLog("DBR worker handle results: "+(e-i)),M._onLog("Total decode image cost: "+(e-this._timeStartDecode))}return s(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}})),this._timeEnterInnerDBR=Date.now(),M._onLog&&M._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),M._dbrWorker.postMessage({type:"decodeBuffer",id:l,instanceID:this._instanceID,body:{buffer:e,width:t,height:i,stride:r,format:n,config:o}},[e.buffer]),M._onLog&&o&&o.timeStamp&&M._onLog("decode image delay: "+(this._timeEnterInnerDBR-o.timeStamp))}))}async _decodeBuffer_Blob(e,t,i,r,n,o){M._onLog&&M._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const s=e.arrayBuffer?await e.arrayBuffer():await new Promise(((t,i)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onload=()=>{t(r.result)},r.onerror=()=>{i(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(s),t,i,r,n,o)}async decodeBuffer(e,t,i,r,n,o){let s;return M._onLog&&M._onLog("decodeBuffer(buffer,width,height,stride,format)"),M._onLog&&(this._timeStartDecode=Date.now()),e instanceof Uint8Array||e instanceof Uint8ClampedArray?s=await this._decodeBuffer_Uint8Array(e,t,i,r,n,o):e instanceof ArrayBuffer?s=await this._decodeBuffer_Uint8Array(new Uint8Array(e),t,i,r,n,o):e instanceof Blob&&(s=await this._decodeBuffer_Blob(e,t,i,r,n,o)),s}async _decodeFileInMemory_Uint8Array(e){return await new Promise(((t,i)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(e=>{if(e.success){let r;this._lastInnerDecodeDuration=e.duration;try{r=this._handleRetJsonString(e.decodeReturn)}catch(e){return i(e)}return t(r)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),M._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:e}})}))}async getRuntimeSettings(){return await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success){let t=JSON.parse(i.results);return null!=this.userDefinedRegion&&(t.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),e(t)}{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"getRuntimeSettings",id:i,instanceID:this._instanceID})}))}async updateRuntimeSettings(t){let i;if("string"==typeof t)if("speed"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region,i.deblurLevel=3,i.expectedBarcodesCount=0,i.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region,i.deblurLevel=5,i.expectedBarcodesCount=512,i.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region}else if("dense"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region,i.deblurLevel=9,i.expectedBarcodesCount=0,i.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region,i.deblurLevel=3,i.expectedBarcodesCount=0,i.localizationModes=[2,8,0,0,0,0,0,0]}else i=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(i=JSON.parse(JSON.stringify(t)),i.region instanceof Array){let e=i.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(i.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!M._bUseFullFeature){if(0!=(i.barcodeFormatIds&~(e.EnumBarcodeFormat.BF_ONED|e.EnumBarcodeFormat.BF_QR_CODE|e.EnumBarcodeFormat.BF_PDF417|e.EnumBarcodeFormat.BF_DATAMATRIX))||0!=i.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=i.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let e=i.region;if(e instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(e)),(e.regionLeft||e.regionTop||e.regionRight||e.regionBottom||e.regionMeasuredByPercentage)&&(e.regionLeft||e.regionTop||100!=e.regionRight||100!=e.regionBottom||!e.regionMeasuredByPercentage)?this.region=e:this.region=null,i.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((e,t)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(i=>{if(i.success){try{this._handleRetJsonString(i.updateReturn)}catch(e){t(e)}return e()}{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(i)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=D,await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success)return e();{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"resetRuntimeSettings",id:i,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!M._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success)return e(i.results);{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:i,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(e){if(!M._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof e)e=e;else{if("object"!=typeof e)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");e=JSON.stringify(e)}return await new Promise(((t,i)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.initReturn)}catch(e){i(e)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),M._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:e}})}))}async _decode_Blob(e,t){M._onLog&&M._onLog("_decode_Blob(blob: Blob)");let i=null,r=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(e)}catch(e){}i||(r=await function(e){return new Promise(((t,i)=>{let r=URL.createObjectURL(e),n=new Image;n.dbrObjUrl=r,n.src=r,n.onload=()=>{t(n)},n.onerror=e=>{i(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}}))}(e));let n=await this._decode_Image(i||r,t);return i&&i.close(),n}async _decode_ArrayBuffer(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Uint8Array(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Image(e,t){M._onLog&&M._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),t=t||{};let i,r,n=e instanceof HTMLImageElement?e.naturalWidth:e.width,o=e instanceof HTMLImageElement?e.naturalHeight:e.height,s=Math.max(n,o);if(s>this._maxCvsSideLength){let e=this._maxCvsSideLength/s;i=Math.round(n*e),r=Math.round(o*e)}else i=n,r=o;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(e,0,0,n,o,0,0,i,r),e.dbrObjUrl&&URL.revokeObjectURL(e.dbrObjUrl),await this._decode_Canvas(a,t)}async _decode_Canvas(t,i){if(M._onLog&&M._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if(0===t.width||0===t.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=t,this.oriCanvasData=null);let r=(t.ctx2d||t.getContext("2d")).getImageData(0,0,t.width,t.height).data;return await this._decodeBuffer_Uint8Array(r,t.width,t.height,4*t.width,e.EnumImagePixelFormat.IPF_ABGR_8888,i)}async _decode_Video(e,t){if(M._onLog&&M._onLog("_decode_Video(video)"),!(e instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";t=t||{};let i,r,n=e.videoWidth,o=e.videoHeight,s=Math.max(n,o);if(s>this._maxCvsSideLength){let e=this._maxCvsSideLength/s;i=Math.round(n*e),r=Math.round(o*e)}else i=n,r=o;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(e,0,0,n,o,0,0,i,r),await this._decode_Canvas(a,t)}async _decode_DCEFrame(t,i){if(M._onLog&&M._onLog("_decode_DCEFrame(dceFrame)"),!M.isDCEFrame(t))return[];let r=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{width:n,height:o,colorMode:s,timeStamp:a}=t;let l;l=i&&i.bCopyData?new Uint8Array(t.data):t.data;let h=null;if(i?(h=JSON.parse(JSON.stringify(i)),h.timeStamp=a):h={timeStamp:a},"grey"===s)r=await this._decodeBuffer_Uint8Array(l,n,o,n,e.EnumImagePixelFormat.IPF_GrayScaled,h);else if("rgba"===s)r=await this._decodeBuffer_Uint8Array(l,n,o,4*n,e.EnumImagePixelFormat.IPF_ABGR_8888,h);else{if("bgra"!==s)throw new Error(`Color mode '${s}' is not supported to decode.`);r=await this._decodeBuffer_Uint8Array(l,n,o,4*n,e.EnumImagePixelFormat.IPF_ARGB_8888,h)}return r}async _decode_DSImage(t,i){if(M._onLog&&M._onLog("_decode_DSImage(dsImage)"),!M.isDSImage(t))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,pixelFormat:t.pixelFormat.toLowerCase(),data:new Uint8Array(t.data),toCanvas:function(){const e=document.createElement("canvas");let t;switch(e.width=this.width,e.height=this.height,this.pixelFormat){case"grey":t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;e{let r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{t(r.response)},r.onerror=()=>{i(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(i,t)}}async _decode_FilePath(e,t){throw M._onLog&&M._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(e,t,i,r,n,o,s){if(e.length>0)for(let a of e){let e=a.localizationResult;2==e.resultCoordinateType&&(e.x1*=.01*o,e.x2*=.01*o,e.x3*=.01*o,e.x4*=.01*o,e.y1*=.01*s,e.y2*=.01*s,e.y3*=.01*s,e.y4*=.01*s);let l=o/r,h=s/n;e.x1=e.x1/l+t,e.x2=e.x2/l+t,e.x3=e.x3/l+t,e.x4=e.x4/l+t,e.y1=e.y1/h+i,e.y2=e.y2/h+i,e.y3=e.y3/h+i,e.y4=e.y4/h+i,2==e.resultCoordinateType&&(e.x1*=100/r,e.x2*=100/r,e.x3*=100/r,e.x4*=100/r,e.y1*=100/n,e.y2*=100/n,e.y3*=100/n,e.y4*=100/n)}}static BarcodeReaderException(t,i){let r,n=e.EnumErrorCode.DBR_UNKNOWN;return"number"==typeof t?(n=t,r=new Error(i)):r=new Error(t),r.code=n,r}_handleRetJsonString(t){let i=e.EnumErrorCode;if(t.textResults){for(let e=0;e{let i=t.indexOf(":");e[t.substring(0,i)]=t.substring(i+1)})),i.exception=e}}return t.decodeRecords?this.decodeRecords=t.decodeRecords:this.decodeRecords={},this._lastErrorCode=t.exception,this._lastErrorString=t.description,t.exception&&!M._setWarnnedEx.has(t.description)&&(M._setWarnnedEx.add(t.description),console.warn(t.description)),t.textResults}if(t.exception==i.DBR_SUCCESS)return t.data;throw M.BarcodeReaderException(t.exception,t.description)}async setModeArgument(e,t,i,r){return await new Promise(((n,o)=>{let s=M._nextTaskID++;M._taskCallbackMap.set(s,(e=>{if(e.success){try{this._handleRetJsonString(e.setReturn)}catch(e){return o(e)}return n()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,o(t)}})),M._dbrWorker.postMessage({type:"setModeArgument",id:s,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:i,argumentValue:r}})}))}async getModeArgument(e,t,i){return await new Promise(((r,n)=>{let o=M._nextTaskID++;M._taskCallbackMap.set(o,(e=>{if(e.success){let t;try{t=this._handleRetJsonString(e.getReturn)}catch(e){return n(e)}return r(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),M._dbrWorker.postMessage({type:"getModeArgument",id:o,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:i}})}))}async getIntermediateResults(){return await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success)return e(i.results);{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"getIntermediateResults",id:i,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let t=await this.getIntermediateResults(),i=[];for(let r of t)if(r.dataType==e.EnumIMResultDataType.IMRDT_IMAGE)for(let t of r.results){const r=t.bytes;let n;switch(M._onLog&&M._onLog(" "+r.length+" "+r.byteLength+" "+t.width+" "+t.height+" "+t.stride+" "+t.format),t.format){case e.EnumImagePixelFormat.IPF_ABGR_8888:n=new Uint8ClampedArray(r);break;case e.EnumImagePixelFormat.IPF_RGB_888:{const e=r.length/3;n=new Uint8ClampedArray(4*e);for(let t=0;t{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success){let t=i.results;return t.intervalTime=this.intervalTime,t.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,t.soundOnSuccessfullRead=this.soundSource,t.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,t.vibrateDuration=this.vibrateDuration,t.captureAndDecodeInParallel=this.captureAndDecodeInParallel,e(t)}{let e=new Error(i.message);return e.stack+="\n"+i.stack,t(e)}})),M._dbrWorker.postMessage({type:"getScanSettings",id:i,instanceID:this._instanceID})}))}async updateScanSettings(e){if(!e)return;const t=JSON.parse(JSON.stringify(e));return t.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(t.intervalTime,0),delete t.intervalTime),t.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=t.whenToPlaySoundforSuccessfulRead,delete t.whenToPlaySoundforSuccessfulRead),t.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=t.soundOnSuccessfullRead,delete t.soundOnSuccessfullRead),t.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=t.whenToVibrateforSuccessfulRead,delete t.whenToVibrateforSuccessfulRead),t.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=t.vibrateDuration,delete t.vibrateDuration),t.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=t.captureAndDecodeInParallel,delete t.captureAndDecodeInParallel),await new Promise(((e,i)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack+="\n"+t.stack,i(e)}})),M._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:t}})}))}_cloneDecodeResults(e){if(e instanceof Array){let t=[];for(let i of e)t.push(this._cloneDecodeResults(i));return t}{let t=e,i=JSON.parse(JSON.stringify(t,((e,t)=>"oriVideoCanvas"==e||"searchRegionCanvas"==e?void 0:t)));return i}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return M._onLog&&M._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));M._onLog&&M._onLog("======= once read ======="),M._onLog&&(this._timeStartDecode=Date.now());let e=null,t=null;if(this.dce)e=this._getVideoFrame();else if(this._imgSource&&(t=await this._imgSource.getImage(),!M.isDSImage(t)))throw new Error("Invalid DSImage.");if(!e&&!t)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let i=[];if(e){i=await this._decode_DCEFrame(e,{bScanner:!0,bCopyData:!1});let t=null;if(i&&i.length){const{sx:r,sy:n,width:o,height:s,_sWidth:a,_sHeight:l}=e;t=i.map((e=>({localizationResult:JSON.parse(JSON.stringify(e.localizationResult))}))),M.recalculateResultLocation(t,r,n,a,l,o,s)}this._drawResults(t)}else t&&(i=await this._decode_DSImage(t,{bScanner:!0,bCopyData:!1}));return i})().then((e=>{if(M._onLog&&M._onLog(e),this.dce&&this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost;const i=()=>{let i=0;if(t&&t.length){let r=Math.min(...e),n=Math.max(...t);r&&n&&(i=r-n)}else i=0;return i>0?i:0};(()=>{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=i()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of e)if(0==i.resultsType){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of e)if(0==i.resultsType){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onImageRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultsType&&1!=e.resultsType||this.onImageRead(t);this.onImageRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultsType&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),M._onLog&&M._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;e=this.dce.getFrameFromBuffer();const t=e=>{if(!e)return;let t=e.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(t)};t(e)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),e=this.dce.getFrame();return e}_drawResults(e){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const t=this._dbrDrawingLayer;if(t.clearDrawingItems(),e&&e.length)for(let i of e){const e=i.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:e.x1,y:e.y1},{x:e.x2,y:e.y2},{x:e.x3,y:e.y3},{x:e.x4,y:e.y4}]);t.addDrawingItem(r)}}async startScanning(e){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let t=null;return this.dce&&(this.dce.isOpen()?(e&&this.dce.appendAndShowUI(),t=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):t=await this.dce.open(e),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),t):void 0}stopScanning(e){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",e))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(e){if(e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(M._onLog&&M._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let e=M._nextTaskID++;M._taskCallbackMap.set(e,(e=>{if(!e.success){let t=new Error(e.message);throw t.stack=e.stack+"\n"+t.stack,t}})),M._dbrWorker.postMessage({type:"destroyContext",id:e,instanceID:this._instanceID})}}M._jsVersion="9.2.11",M._jsEditVersion="20220727",M._version=`loading...(JS ${M._jsVersion}.${M._jsEditVersion})`,M._license=f,M._sessionPassword=g,M.browserInfo=s,M._workerName=`dbr-${M._jsVersion}.browser.worker.js`,M._engineResourcePath=u,M._licenseServer=[],M._deviceFriendlyName="",M._isShowRelDecodeTimeInResults=!1,M._bWasmDebug=!1,M._bNeverShowDialog=!1,M.__bUseFullFeature=!0,M._nextTaskID=0,M._taskCallbackMap=new Map,M._pLoad=new class extends Promise{constructor(e){let t,i;super(((e,r)=>{t=e,i=r})),this._s="pending",this.resolve=e=>{this.isPending&&(S(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",i(e))},this.task=e}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,S(e)?t=e:"function"==typeof e&&(t=new Promise(e)),t&&(async()=>{try{const i=await t;e===this._task&&this.resolve(i)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}},M._lastErrorCode=0,M._lastErrorString="",M._setWarnnedEx=new Set,M._defaultUIElementURL="@engineResourcePath/dbr.ui.html";var L={653:(e,t,i)=>{var r,n,o,s,a,l,h,c,u,d,f,g,_,p,m,v,y,S,b,C,w,T=T||{version:"5.2.1"};if(t.fabric=T,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?T.document=document:T.document=document.implementation.createHTMLDocument(""),T.window=window;else{var x=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;T.document=x.document,T.jsdomImplForWrapper=i(898).implForWrapper,T.nodeCanvas=i(245).Canvas,T.window=x,DOMParser=T.window.DOMParser}function E(e,t){var i=e.canvas,r=t.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var o=i.height-r.height;n.drawImage(i,0,o,r.width,r.height,0,0,r.width,r.height)}function A(e,t){var i=t.targetCanvas.getContext("2d"),r=t.destinationWidth,n=t.destinationHeight,o=r*n*4,s=new Uint8Array(this.imageBuffer,0,o),a=new Uint8ClampedArray(this.imageBuffer,0,o);e.readPixels(0,0,r,n,e.RGBA,e.UNSIGNED_BYTE,s);var l=new ImageData(a,r,n);i.putImageData(l,0,0)}T.isTouchSupported="ontouchstart"in T.window||"ontouchstart"in T.document||T.window&&T.window.navigator&&T.window.navigator.maxTouchPoints>0,T.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,T.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],T.DPI=96,T.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",T.commaWsp="(?:\\s+,?\\s*|,\\s*)",T.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,T.reNonWord=/[ \n\.,;!\?\-]/,T.fontPaths={},T.iMatrix=[1,0,0,1,0,0],T.svgNS="http://www.w3.org/2000/svg",T.perfLimitSizeTotal=2097152,T.maxCacheSideLimit=4096,T.minCacheSideLimit=256,T.charWidthsCache={},T.textureSize=2048,T.disableStyleCopyPaste=!1,T.enableGLFiltering=!0,T.devicePixelRatio=T.window.devicePixelRatio||T.window.webkitDevicePixelRatio||T.window.mozDevicePixelRatio||1,T.browserShadowBlurConstant=1,T.arcToSegmentsCache={},T.boundsOfCurveCache={},T.cachesBoundsOfCurve=!0,T.forceGLPutImageData=!1,T.initFilterBackend=function(){return T.enableGLFiltering&&T.isWebglSupported&&T.isWebglSupported(T.textureSize)?(console.log("max texture size: "+T.maxTextureSize),new T.WebglFilterBackend({tileSize:T.textureSize})):T.Canvas2dFilterBackend?new T.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=T),function(){function e(e,t){if(this.__eventListeners[e]){var i=this.__eventListeners[e];t?i[i.indexOf(t)]=!1:T.util.array.fill(i,!1)}}function t(e,t){var i=function(){t.apply(this,arguments),this.off(e,i)}.bind(this);this.on(e,i)}T.Observable={fire:function(e,t){if(!this.__eventListeners)return this;var i=this.__eventListeners[e];if(!i)return this;for(var r=0,n=i.length;r-1||!!t&&this._objects.some((function(t){return"function"==typeof t.contains&&t.contains(e,!0)}))},complexity:function(){return this._objects.reduce((function(e,t){return e+(t.complexity?t.complexity():0)}),0)}},T.CommonMethods={_setOptions:function(e){for(var t in e)this.set(t,e[t])},_initGradient:function(e,t){!e||!e.colorStops||e instanceof T.Gradient||this.set(t,new T.Gradient(e))},_initPattern:function(e,t,i){!e||!e.source||e instanceof T.Pattern?i&&i():this.set(t,new T.Pattern(e,i))},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return"object"==typeof e?this._setObject(e):this._set(e,t),this},_set:function(e,t){this[e]=t},toggle:function(e){var t=this.get(e);return"boolean"==typeof t&&this.set(e,!t),this},get:function(e){return this[e]}},r=t,n=Math.sqrt,o=Math.atan2,s=Math.pow,a=Math.PI/180,l=Math.PI/2,T.util={cos:function(e){if(0===e)return 1;switch(e<0&&(e=-e),e/l){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},sin:function(e){if(0===e)return 0;var t=1;switch(e<0&&(t=-1),e/l){case 1:return t;case 2:return 0;case 3:return-t}return Math.sin(e)},removeFromArray:function(e,t){var i=e.indexOf(t);return-1!==i&&e.splice(i,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*a},radiansToDegrees:function(e){return e/a},rotatePoint:function(e,t,i){var r=new T.Point(e.x-t.x,e.y-t.y),n=T.util.rotateVector(r,i);return new T.Point(n.x,n.y).addEquals(t)},rotateVector:function(e,t){var i=T.util.sin(t),r=T.util.cos(t);return{x:e.x*r-e.y*i,y:e.x*i+e.y*r}},createVector:function(e,t){return new T.Point(t.x-e.x,t.y-e.y)},calcAngleBetweenVectors:function(e,t){return Math.acos((e.x*t.x+e.y*t.y)/(Math.hypot(e.x,e.y)*Math.hypot(t.x,t.y)))},getHatVector:function(e){return new T.Point(e.x,e.y).multiply(1/Math.hypot(e.x,e.y))},getBisector:function(e,t,i){var r=T.util.createVector(e,t),n=T.util.createVector(e,i),o=T.util.calcAngleBetweenVectors(r,n),s=o*(0===T.util.calcAngleBetweenVectors(T.util.rotateVector(r,o),n)?1:-1)/2;return{vector:T.util.getHatVector(T.util.rotateVector(r,s)),angle:o}},projectStrokeOnPoints:function(e,t,i){var r=[],n=t.strokeWidth/2,o=t.strokeUniform?new T.Point(1/t.scaleX,1/t.scaleY):new T.Point(1,1),s=function(e){var t=n/Math.hypot(e.x,e.y);return new T.Point(e.x*t*o.x,e.y*t*o.y)};return e.length<=1||e.forEach((function(a,l){var h,c,u=new T.Point(a.x,a.y);0===l?(c=e[l+1],h=i?s(T.util.createVector(c,u)).addEquals(u):e[e.length-1]):l===e.length-1?(h=e[l-1],c=i?s(T.util.createVector(h,u)).addEquals(u):e[0]):(h=e[l-1],c=e[l+1]);var d,f,g=T.util.getBisector(u,h,c),_=g.vector,p=g.angle;if("miter"===t.strokeLineJoin&&(d=-n/Math.sin(p/2),f=new T.Point(_.x*d*o.x,_.y*d*o.y),Math.hypot(f.x,f.y)/n<=t.strokeMiterLimit))return r.push(u.add(f)),void r.push(u.subtract(f));d=-n*Math.SQRT2,f=new T.Point(_.x*d*o.x,_.y*d*o.y),r.push(u.add(f)),r.push(u.subtract(f))})),r},transformPoint:function(e,t,i){return i?new T.Point(t[0]*e.x+t[2]*e.y,t[1]*e.x+t[3]*e.y):new T.Point(t[0]*e.x+t[2]*e.y+t[4],t[1]*e.x+t[3]*e.y+t[5])},makeBoundingBoxFromPoints:function(e,t){if(t)for(var i=0;i0&&(t>r?t-=r:t=0,i>r?i-=r:i=0);var n,o=!0,s=e.getImageData(t,i,2*r||1,2*r||1),a=s.data.length;for(n=3;n=n?o-n:2*Math.PI-(n-o)}function o(e,t,i){for(var o=i[1],s=i[2],a=i[3],l=i[4],h=i[5],c=function(e,t,i,o,s,a,l){var h=Math.PI,c=l*h/180,u=T.util.sin(c),d=T.util.cos(c),f=0,g=0,_=-d*e*.5-u*t*.5,p=-d*t*.5+u*e*.5,m=(i=Math.abs(i))*i,v=(o=Math.abs(o))*o,y=p*p,S=_*_,b=m*v-m*y-v*S,C=0;if(b<0){var w=Math.sqrt(1-b/(m*v));i*=w,o*=w}else C=(s===a?-1:1)*Math.sqrt(b/(m*y+v*S));var x=C*i*p/o,E=-C*o*_/i,A=d*x-u*E+.5*e,I=u*x+d*E+.5*t,O=n(1,0,(_-x)/i,(p-E)/o),R=n((_-x)/i,(p-E)/o,(-_-x)/i,(-p-E)/o);0===a&&R>0?R-=2*h:1===a&&R<0&&(R+=2*h);for(var D=Math.ceil(Math.abs(R/h*2)),M=[],L=R/D,P=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),F=O+L,k=0;kC)for(var x=1,E=_.length;x2;for(t=t||0,h&&(a=e[2].xe[i-2].x?1:n.x===e[i-2].x?0:-1,l=n.y>e[i-2].y?1:n.y===e[i-2].y?0:-1),r.push(["L",n.x+a*t,n.y+l*t]),r},T.util.getPathSegmentsInfo=d,T.util.getBoundsOfCurve=function(t,i,r,n,o,s,a,l){var h;if(T.cachesBoundsOfCurve&&(h=e.call(arguments),T.boundsOfCurveCache[h]))return T.boundsOfCurveCache[h];var c,u,d,f,g,_,p,m,v=Math.sqrt,y=Math.min,S=Math.max,b=Math.abs,C=[],w=[[],[]];u=6*t-12*r+6*o,c=-3*t+9*r-9*o+3*a,d=3*r-3*t;for(var x=0;x<2;++x)if(x>0&&(u=6*i-12*n+6*s,c=-3*i+9*n-9*s+3*l,d=3*n-3*i),b(c)<1e-12){if(b(u)<1e-12)continue;0<(f=-d/u)&&f<1&&C.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(m=v(p)))/(2*c))&&g<1&&C.push(g),0<(_=(-u-m)/(2*c))&&_<1&&C.push(_));for(var E,A,I,O=C.length,R=O;O--;)E=(I=1-(f=C[O]))*I*I*t+3*I*I*f*r+3*I*f*f*o+f*f*f*a,w[0][O]=E,A=I*I*I*i+3*I*I*f*n+3*I*f*f*s+f*f*f*l,w[1][O]=A;w[0][R]=t,w[1][R]=i,w[0][R+1]=a,w[1][R+1]=l;var D=[{x:y.apply(null,w[0]),y:y.apply(null,w[1])},{x:S.apply(null,w[0]),y:S.apply(null,w[1])}];return T.cachesBoundsOfCurve&&(T.boundsOfCurveCache[h]=D),D},T.util.getPointOnPath=function(e,t,i){i||(i=d(e));for(var r=0;t-i[r].length>0&&r1e-4;)i=l(o),n=o,(r=s(h.x,h.y,i.x,i.y))+a>t?(o-=c,c/=2):(h=i,o+=c,a+=r);return i.angle=u(n),i}(o,t)}},T.util.transformPath=function(e,t,i){return i&&(t=T.util.multiplyTransformMatrices(t,[1,0,0,1,-i.x,-i.y])),e.map((function(e){for(var i=e.slice(0),r={},n=1;n=t}))}}}(),function(){function e(t,i,r){if(r)if(!T.isLikelyNode&&i instanceof Element)t=i;else if(i instanceof Array){t=[];for(var n=0,o=i.length;n57343)return e.charAt(t);if(55296<=i&&i<=56319){if(e.length<=t+1)throw"High surrogate without following low surrogate";var r=e.charCodeAt(t+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return e.charAt(t)+e.charAt(t+1)}if(0===t)throw"Low surrogate without preceding high surrogate";var n=e.charCodeAt(t-1);if(55296>n||n>56319)throw"Low surrogate without preceding high surrogate";return!1}T.util.string={camelize:function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},capitalize:function(e,t){return e.charAt(0).toUpperCase()+(t?e.slice(1):e.slice(1).toLowerCase())},escapeXml:function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(t){var i,r=0,n=[];for(r=0;r-1?e.prototype[n]=function(e){return function(){var i=this.constructor.superclass;this.constructor.superclass=r;var n=t[e].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==e)return n}}(n):e.prototype[n]=t[n],i&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};function n(){}function o(t){for(var i=null,r=this;r.constructor.superclass;){var n=r.constructor.superclass.prototype[t];if(r[t]!==n){i=n;break}r=r.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,e.call(arguments,1)):i.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",this)}T.util.createClass=function(){var i=null,s=e.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof s[0]&&(i=s.shift()),a.superclass=i,a.subclasses=[],i&&(n.prototype=i.prototype,a.prototype=new n,i.subclasses.push(a));for(var l=0,h=s.length;l-1||"touch"===e.pointerType},d="string"==typeof(u=T.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,_=function(e){return e},d?_=function(e,t){return e.style.opacity=t,e}:f&&(_=function(e,t){var i=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(t=t>=.9999?"":"alpha(opacity="+100*t+")",i.filter=i.filter.replace(g,t)):i.filter+=" alpha(opacity="+100*t+")",e}),T.util.setStyle=function(e,t){var i=e.style;if(!i)return e;if("string"==typeof t)return e.style.cssText+=";"+t,t.indexOf("opacity")>-1?_(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)"opacity"===r?_(e,t[r]):i["float"===r||"cssFloat"===r?void 0===i.styleFloat?"cssFloat":"styleFloat":r]=t[r];return e},function(){var e,t,i,r,n=Array.prototype.slice,o=function(e){return n.call(e,0)};try{e=o(T.document.childNodes)instanceof Array}catch(e){}function s(e,t){var i=T.document.createElement(e);for(var r in t)"class"===r?i.className=t[r]:"for"===r?i.htmlFor=t[r]:i.setAttribute(r,t[r]);return i}function a(e){for(var t=0,i=0,r=T.document.documentElement,n=T.document.body||{scrollLeft:0,scrollTop:0};e&&(e.parentNode||e.host)&&((e=e.parentNode||e.host)===T.document?(t=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(t+=e.scrollLeft||0,i+=e.scrollTop||0),1!==e.nodeType||"fixed"!==e.style.position););return{left:t,top:i}}e||(o=function(e){for(var t=new Array(e.length),i=e.length;i--;)t[i]=e[i];return t}),t=T.document.defaultView&&T.document.defaultView.getComputedStyle?function(e,t){var i=T.document.defaultView.getComputedStyle(e,null);return i?i[t]:void 0}:function(e,t){var i=e.style[t];return!i&&e.currentStyle&&(i=e.currentStyle[t]),i},i=T.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",T.util.makeElementUnselectable=function(e){return void 0!==e.onselectstart&&(e.onselectstart=T.util.falseFunction),r?e.style[r]="none":"string"==typeof e.unselectable&&(e.unselectable="on"),e},T.util.makeElementSelectable=function(e){return void 0!==e.onselectstart&&(e.onselectstart=null),r?e.style[r]="":"string"==typeof e.unselectable&&(e.unselectable=""),e},T.util.setImageSmoothing=function(e,t){e.imageSmoothingEnabled=e.imageSmoothingEnabled||e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled||e.oImageSmoothingEnabled,e.imageSmoothingEnabled=t},T.util.getById=function(e){return"string"==typeof e?T.document.getElementById(e):e},T.util.toArray=o,T.util.addClass=function(e,t){e&&-1===(" "+e.className+" ").indexOf(" "+t+" ")&&(e.className+=(e.className?" ":"")+t)},T.util.makeElement=s,T.util.wrapElement=function(e,t,i){return"string"==typeof t&&(t=s(t,i)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t},T.util.getScrollLeftTop=a,T.util.getElementOffset=function(e){var i,r,n=e&&e.ownerDocument,o={left:0,top:0},s={left:0,top:0},l={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return s;for(var h in l)s[l[h]]+=parseInt(t(e,h),10)||0;return i=n.documentElement,void 0!==e.getBoundingClientRect&&(o=e.getBoundingClientRect()),r=a(e),{left:o.left+r.left-(i.clientLeft||0)+s.left,top:o.top+r.top-(i.clientTop||0)+s.top}},T.util.getNodeCanvas=function(e){var t=T.jsdomImplForWrapper(e);return t._canvas||t._image},T.util.cleanUpJsdomNode=function(e){if(T.isLikelyNode){var t=T.jsdomImplForWrapper(e);t&&(t._image=null,t._canvas=null,t._currentSrc=null,t._attributes=null,t._classList=null)}}}(),function(){function e(){}T.util.request=function(t,i){i||(i={});var r=i.method?i.method.toUpperCase():"GET",n=i.onComplete||function(){},o=new T.window.XMLHttpRequest,s=i.body||i.parameters;return o.onreadystatechange=function(){4===o.readyState&&(n(o),o.onreadystatechange=e)},"GET"===r&&(s=null,"string"==typeof i.parameters&&(t=function(e,t){return e+(/\?/.test(e)?"&":"?")+t}(t,i.parameters))),o.open(r,t,!0),"POST"!==r&&"PUT"!==r||o.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),o.send(s),o}}(),T.log=console.log,T.warn=console.warn,function(){var e=T.util.object.extend,t=T.util.object.clone,i=[];function r(){return!1}function n(e,t,i,r){return-i*Math.cos(e/r*(Math.PI/2))+i+t}T.util.object.extend(i,{cancelAll:function(){var e=this.splice(0);return e.forEach((function(e){e.cancel()})),e},cancelByCanvas:function(e){if(!e)return[];var t=this.filter((function(t){return"object"==typeof t.target&&t.target.canvas===e}));return t.forEach((function(e){e.cancel()})),t},cancelByTarget:function(e){var t=this.findAnimationsByTarget(e);return t.forEach((function(e){e.cancel()})),t},findAnimationIndex:function(e){return this.indexOf(this.findAnimation(e))},findAnimation:function(e){return this.find((function(t){return t.cancel===e}))},findAnimationsByTarget:function(e){return e?this.filter((function(t){return t.target===e})):[]}});var o=T.window.requestAnimationFrame||T.window.webkitRequestAnimationFrame||T.window.mozRequestAnimationFrame||T.window.oRequestAnimationFrame||T.window.msRequestAnimationFrame||function(e){return T.window.setTimeout(e,1e3/60)},s=T.window.cancelAnimationFrame||T.window.clearTimeout;function a(){return o.apply(T.window,arguments)}T.util.animate=function(i){i||(i={});var o,s=!1,l=function(){var e=T.runningAnimations.indexOf(o);return e>-1&&T.runningAnimations.splice(e,1)[0]};return o=e(t(i),{cancel:function(){return s=!0,l()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),T.runningAnimations.push(o),a((function(e){var t,h=e||+new Date,c=i.duration||500,u=h+c,d=i.onChange||r,f=i.abort||r,g=i.onComplete||r,_=i.easing||n,p="startValue"in i&&i.startValue.length>0,m="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?m.map((function(e,t){return v[t]-m[t]})):v-m);i.onStart&&i.onStart(),function e(i){var r=(t=i||+new Date)>u?c:t-h,n=r/c,S=p?m.map((function(e,t){return _(r,m[t],y[t],c)})):_(r,m,y,c),b=p?Math.abs((S[0]-m[0])/y[0]):Math.abs((S-m)/y);if(o.currentValue=p?S.slice():S,o.completionRate=b,o.durationRate=n,!s){if(!f(S,b,n))return t>u?(o.currentValue=p?v.slice():v,o.completionRate=1,o.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void l()):(d(S,b,n),void a(e));l()}}(h)})),o.cancel},T.util.requestAnimFrame=a,T.util.cancelAnimFrame=function(){return s.apply(T.window,arguments)},T.runningAnimations=i}(),function(){function e(e,t,i){var r="rgba("+parseInt(e[0]+i*(t[0]-e[0]),10)+","+parseInt(e[1]+i*(t[1]-e[1]),10)+","+parseInt(e[2]+i*(t[2]-e[2]),10);return(r+=","+(e&&t?parseFloat(e[3]+i*(t[3]-e[3])):1))+")"}T.util.animateColor=function(t,i,r,n){var o=new T.Color(t).getSource(),s=new T.Color(i).getSource(),a=n.onComplete,l=n.onChange;return n=n||{},T.util.animate(T.util.object.extend(n,{duration:r||500,startValue:o,endValue:s,byValue:s,easing:function(t,i,r,o){return e(i,r,n.colorEasing?n.colorEasing(t,o):1-Math.cos(t/o*(Math.PI/2)))},onComplete:function(t,i,r){if(a)return a(e(s,s,0),i,r)},onChange:function(t,i,r){if(l){if(Array.isArray(t))return l(e(t,t,0),i,r);l(t,i,r)}}}))}}(),function(){function e(e,t,i,r){return e-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===e||"xlink:href"===e||"font"===e)return i;if("imageSmoothing"===e)return"optimizeQuality"===i;a=l?i.map(o):o(i,n)}}else i="";return!l&&isNaN(a)?i:a}function f(e){return new RegExp("^("+e.join("|")+")\\b","i")}function g(e,t){var i,r,n,o,s=[];for(n=0,o=t.length;n1;)l.shift(),h=t.util.multiplyTransformMatrices(h,l[0]);return h}}();var v=new RegExp("^\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*$");function y(e){if(!t.svgViewBoxElementsRegEx.test(e.nodeName))return{};var i,r,n,s,a,l,h=e.getAttribute("viewBox"),c=1,u=1,d=e.getAttribute("width"),f=e.getAttribute("height"),g=e.getAttribute("x")||0,_=e.getAttribute("y")||0,p=e.getAttribute("preserveAspectRatio")||"",m=!h||!(h=h.match(v)),y=!d||!f||"100%"===d||"100%"===f,S=m&&y,b={},C="",w=0,T=0;if(b.width=0,b.height=0,b.toBeParsed=S,m&&(g||_)&&e.parentNode&&"#document"!==e.parentNode.nodeName&&(C=" translate("+o(g)+" "+o(_)+") ",a=(e.getAttribute("transform")||"")+C,e.setAttribute("transform",a),e.removeAttribute("x"),e.removeAttribute("y")),S)return b;if(m)return b.width=o(d),b.height=o(f),b;if(i=-parseFloat(h[1]),r=-parseFloat(h[2]),n=parseFloat(h[3]),s=parseFloat(h[4]),b.minX=i,b.minY=r,b.viewBoxWidth=n,b.viewBoxHeight=s,y?(b.width=n,b.height=s):(b.width=o(d),b.height=o(f),c=b.width/n,u=b.height/s),"none"!==(p=t.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),w=b.width-n*c,T=b.height-s*c,"Mid"===p.alignX&&(w/=2),"Mid"===p.alignY&&(T/=2),"Min"===p.alignX&&(w=0),"Min"===p.alignY&&(T=0)),1===c&&1===u&&0===i&&0===r&&0===g&&0===_)return b;if((g||_)&&"#document"!==e.parentNode.nodeName&&(C=" translate("+o(g)+" "+o(_)+") "),a=C+" matrix("+c+" 0 0 "+u+" "+(i*c+w)+" "+(r*u+T)+") ","svg"===e.nodeName){for(l=e.ownerDocument.createElementNS(t.svgNS,"g");e.firstChild;)l.appendChild(e.firstChild);e.appendChild(l)}else(l=e).removeAttribute("x"),l.removeAttribute("y"),a=l.getAttribute("transform")+a;return l.setAttribute("transform",a),b}function S(e,t){var i="xlink:href",r=m(e,t.getAttribute(i).slice(1));if(r&&r.getAttribute(i)&&S(e,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(e){r&&!t.hasAttribute(e)&&r.hasAttribute(e)&&t.setAttribute(e,r.getAttribute(e))})),!t.children.length)for(var n=r.cloneNode(!0);n.firstChild;)t.appendChild(n.firstChild);t.removeAttribute(i)}t.parseSVGDocument=function(e,i,n,o){if(e){!function(e){for(var i=g(e,["use","svg:use"]),r=0;i.length&&re.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return void 0===t&&(t=.5),t=Math.max(Math.min(1,t),0),new i(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,i=this.y-e.y;return Math.sqrt(t*t+i*i)},midPointFrom:function(e){return this.lerp(e)},min:function(e){return new i(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new i(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setFromPoint:function(e){return this.x=e.x,this.y=e.y,this},swap:function(e){var t=this.x,i=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=i},clone:function(){return new i(this.x,this.y)}})}(t),function(e){var t=e.fabric||(e.fabric={});function i(e){this.status=e,this.points=[]}t.Intersection?t.warn("fabric.Intersection is already defined"):(t.Intersection=i,t.Intersection.prototype={constructor:i,appendPoint:function(e){return this.points.push(e),this},appendPoints:function(e){return this.points=this.points.concat(e),this}},t.Intersection.intersectLineLine=function(e,r,n,o){var s,a=(o.x-n.x)*(e.y-n.y)-(o.y-n.y)*(e.x-n.x),l=(r.x-e.x)*(e.y-n.y)-(r.y-e.y)*(e.x-n.x),h=(o.y-n.y)*(r.x-e.x)-(o.x-n.x)*(r.y-e.y);if(0!==h){var c=a/h,u=l/h;0<=c&&c<=1&&0<=u&&u<=1?(s=new i("Intersection")).appendPoint(new t.Point(e.x+c*(r.x-e.x),e.y+c*(r.y-e.y))):s=new i}else s=new i(0===a||0===l?"Coincident":"Parallel");return s},t.Intersection.intersectLinePolygon=function(e,t,r){var n,o,s,a,l=new i,h=r.length;for(a=0;a0&&(l.status="Intersection"),l},t.Intersection.intersectPolygonPolygon=function(e,t){var r,n=new i,o=e.length;for(r=0;r0&&(n.status="Intersection"),n},t.Intersection.intersectPolygonRectangle=function(e,r,n){var o=r.min(n),s=r.max(n),a=new t.Point(s.x,o.y),l=new t.Point(o.x,s.y),h=i.intersectLinePolygon(o,a,e),c=i.intersectLinePolygon(a,s,e),u=i.intersectLinePolygon(s,l,e),d=i.intersectLinePolygon(l,o,e),f=new i;return f.appendPoints(h.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(t),function(e){var t=e.fabric||(e.fabric={});function i(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e}t.Color?t.warn("fabric.Color is already defined."):(t.Color=i,t.Color.prototype={_tryParsingColor:function(e){var t;e in i.colorNameMap&&(e=i.colorNameMap[e]),"transparent"===e&&(t=[255,255,255,0]),t||(t=i.sourceFromHex(e)),t||(t=i.sourceFromRgb(e)),t||(t=i.sourceFromHsl(e)),t||(t=[0,0,0,1]),t&&this.setSource(t)},_rgbToHsl:function(e,i,r){e/=255,i/=255,r/=255;var n,o,s,a=t.util.array.max([e,i,r]),l=t.util.array.min([e,i,r]);if(s=(a+l)/2,a===l)n=o=0;else{var h=a-l;switch(o=s>.5?h/(2-a-l):h/(a+l),a){case e:n=(i-r)/h+(i0)-(e<0)||+e};function f(e,t){var i=e.angle+u(Math.atan2(t.y,t.x))+360;return Math.round(i%360/45)}function g(e,i){var r=i.transform.target,n=r.canvas,o=t.util.object.clone(i);o.target=r,n&&n.fire("object:"+e,o),r.fire(e,i)}function _(e,t){var i=t.canvas,r=e[i.uniScaleKey];return i.uniformScaling&&!r||!i.uniformScaling&&r}function p(e){return e.originX===h&&e.originY===h}function m(e,t,i){var r=e.lockScalingX,n=e.lockScalingY;return!((!r||!n)&&(t||!r&&!n||!i)&&(!r||"x"!==t)&&(!n||"y"!==t))}function v(e,t,i,r){return{e,transform:t,pointer:{x:i,y:r}}}function y(e){return function(t,i,r,n){var o=i.target,s=o.getCenterPoint(),a=o.translateToOriginPoint(s,i.originX,i.originY),l=e(t,i,r,n);return o.setPositionByOrigin(a,i.originX,i.originY),l}}function S(e,t){return function(i,r,n,o){var s=t(i,r,n,o);return s&&g(e,v(i,r,n,o)),s}}function b(e,i,r,n,o){var s=e.target,a=s.controls[e.corner],l=s.canvas.getZoom(),h=s.padding/l,c=s.toLocalPoint(new t.Point(n,o),i,r);return c.x>=h&&(c.x-=h),c.x<=-h&&(c.x+=h),c.y>=h&&(c.y-=h),c.y<=h&&(c.y+=h),c.x-=a.offsetX,c.y-=a.offsetY,c}function C(e){return e.flipX!==e.flipY}function w(e,t,i,r,n){if(0!==e[t]){var o=n/e._getTransformedDimensions()[r]*e[i];e.set(i,o)}}function T(e,t,i,r){var n,h=t.target,c=h._getTransformedDimensions(0,h.skewY),d=b(t,t.originX,t.originY,i,r),f=Math.abs(2*d.x)-c.x,g=h.skewX;f<2?n=0:(n=u(Math.atan2(f/h.scaleX,c.y/h.scaleY)),t.originX===o&&t.originY===l&&(n=-n),t.originX===a&&t.originY===s&&(n=-n),C(h)&&(n=-n));var _=g!==n;if(_){var p=h._getTransformedDimensions().y;h.set("skewX",n),w(h,"skewY","scaleY","y",p)}return _}function x(e,t,i,r){var n,h=t.target,c=h._getTransformedDimensions(h.skewX,0),d=b(t,t.originX,t.originY,i,r),f=Math.abs(2*d.y)-c.y,g=h.skewY;f<2?n=0:(n=u(Math.atan2(f/h.scaleY,c.x/h.scaleX)),t.originX===o&&t.originY===l&&(n=-n),t.originX===a&&t.originY===s&&(n=-n),C(h)&&(n=-n));var _=g!==n;if(_){var p=h._getTransformedDimensions().x;h.set("skewY",n),w(h,"skewX","scaleX","x",p)}return _}function E(e,t,i,r,n){n=n||{};var o,s,a,l,h,u,f=t.target,g=f.lockScalingX,v=f.lockScalingY,y=n.by,S=_(e,f),C=m(f,y,S),w=t.gestureScale;if(C)return!1;if(w)s=t.scaleX*w,a=t.scaleY*w;else{if(o=b(t,t.originX,t.originY,i,r),h="y"!==y?d(o.x):1,u="x"!==y?d(o.y):1,t.signX||(t.signX=h),t.signY||(t.signY=u),f.lockScalingFlip&&(t.signX!==h||t.signY!==u))return!1;if(l=f._getTransformedDimensions(),S&&!y){var T=Math.abs(o.x)+Math.abs(o.y),x=t.original,E=T/(Math.abs(l.x*x.scaleX/f.scaleX)+Math.abs(l.y*x.scaleY/f.scaleY));s=x.scaleX*E,a=x.scaleY*E}else s=Math.abs(o.x*f.scaleX/l.x),a=Math.abs(o.y*f.scaleY/l.y);p(t)&&(s*=2,a*=2),t.signX!==h&&"y"!==y&&(t.originX=c[t.originX],s*=-1,t.signX=h),t.signY!==u&&"x"!==y&&(t.originY=c[t.originY],a*=-1,t.signY=u)}var A=f.scaleX,I=f.scaleY;return y?("x"===y&&f.set("scaleX",s),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",s),!v&&f.set("scaleY",a)),A!==f.scaleX||I!==f.scaleY}n.scaleCursorStyleHandler=function(e,t,r){var n=_(e,r),o="";if(0!==t.x&&0===t.y?o="x":0===t.x&&0!==t.y&&(o="y"),m(r,o,n))return"not-allowed";var s=f(r,t);return i[s]+"-resize"},n.skewCursorStyleHandler=function(e,t,i){var n="not-allowed";if(0!==t.x&&i.lockSkewingY)return n;if(0!==t.y&&i.lockSkewingX)return n;var o=f(i,t)%4;return r[o]+"-resize"},n.scaleSkewCursorStyleHandler=function(e,t,i){return e[i.canvas.altActionKey]?n.skewCursorStyleHandler(e,t,i):n.scaleCursorStyleHandler(e,t,i)},n.rotationWithSnapping=S("rotating",y((function(e,t,i,r){var n=t,o=n.target,s=o.translateToOriginPoint(o.getCenterPoint(),n.originX,n.originY);if(o.lockRotation)return!1;var a,l=Math.atan2(n.ey-s.y,n.ex-s.x),h=Math.atan2(r-s.y,i-s.x),c=u(h-l+n.theta);if(o.snapAngle>0){var d=o.snapAngle,f=o.snapThreshold||d,g=Math.ceil(c/d)*d,_=Math.floor(c/d)*d;Math.abs(c-_)0?o:a:(c>0&&(n=u===s?o:a),c<0&&(n=u===s?a:o),C(l)&&(n=n===o?a:o)),t.originX=n,S("skewing",y(T))(e,t,i,r))},n.skewHandlerY=function(e,t,i,r){var n,a=t.target,c=a.skewY,u=t.originX;return!a.lockSkewingY&&(0===c?n=b(t,h,h,i,r).y>0?s:l:(c>0&&(n=u===o?s:l),c<0&&(n=u===o?l:s),C(a)&&(n=n===s?l:s)),t.originY=n,S("skewing",y(x))(e,t,i,r))},n.dragHandler=function(e,t,i,r){var n=t.target,o=i-t.offsetX,s=r-t.offsetY,a=!n.get("lockMovementX")&&n.left!==o,l=!n.get("lockMovementY")&&n.top!==s;return a&&n.set("left",o),l&&n.set("top",s),(a||l)&&g("moving",v(e,t,i,r)),a||l},n.scaleOrSkewActionName=function(e,t,i){var r=e[i.canvas.altActionKey];return 0===t.x?r?"skewX":"scaleY":0===t.y?r?"skewY":"scaleX":void 0},n.rotationStyleHandler=function(e,t,i){return i.lockRotation?"not-allowed":t.cursorStyle},n.fireEvent=g,n.wrapWithFixedAnchor=y,n.wrapWithFireEvent=S,n.getLocalPoint=b,t.controlsUtils=n}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.degreesToRadians,r=t.controlsUtils;r.renderCircleControl=function(e,t,i,r,n){r=r||{};var o,s=this.sizeX||r.cornerSize||n.cornerSize,a=this.sizeY||r.cornerSize||n.cornerSize,l=void 0!==r.transparentCorners?r.transparentCorners:n.transparentCorners,h=l?"stroke":"fill",c=!l&&(r.cornerStrokeColor||n.cornerStrokeColor),u=t,d=i;e.save(),e.fillStyle=r.cornerColor||n.cornerColor,e.strokeStyle=r.cornerStrokeColor||n.cornerStrokeColor,s>a?(o=s,e.scale(1,a/s),d=i*s/a):a>s?(o=a,e.scale(s/a,1),u=t*a/s):o=s,e.lineWidth=1,e.beginPath(),e.arc(u,d,o/2,0,2*Math.PI,!1),e[h](),c&&e.stroke(),e.restore()},r.renderSquareControl=function(e,t,r,n,o){n=n||{};var s=this.sizeX||n.cornerSize||o.cornerSize,a=this.sizeY||n.cornerSize||o.cornerSize,l=void 0!==n.transparentCorners?n.transparentCorners:o.transparentCorners,h=l?"stroke":"fill",c=!l&&(n.cornerStrokeColor||o.cornerStrokeColor),u=s/2,d=a/2;e.save(),e.fillStyle=n.cornerColor||o.cornerColor,e.strokeStyle=n.cornerStrokeColor||o.cornerStrokeColor,e.lineWidth=1,e.translate(t,r),e.rotate(i(o.angle)),e[h+"Rect"](-u,-d,s,a),c&&e.strokeRect(-u,-d,s,a),e.restore()}}(t),function(e){var t=e.fabric||(e.fabric={});t.Control=function(e){for(var t in e)this[t]=e[t]},t.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(e,t){return t.cursorStyle},getActionName:function(e,t){return t.actionName},getVisibility:function(e,t){var i=e._controlsVisibility;return i&&void 0!==i[t]?i[t]:this.visible},setVisibility:function(e){this.visible=e},positionHandler:function(e,i){return t.util.transformPoint({x:this.x*e.x+this.offsetX,y:this.y*e.y+this.offsetY},i)},calcCornerCoords:function(e,i,r,n,o){var s,a,l,h,c=o?this.touchSizeX:this.sizeX,u=o?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-t.util.degreesToRadians(e),_=Math.PI/2-d-t.util.degreesToRadians(e);s=f*t.util.cos(g),a=f*t.util.sin(g),l=f*t.util.cos(_),h=f*t.util.sin(_)}else f=.7071067812*(c&&u?c:i),g=t.util.degreesToRadians(45-e),s=l=f*t.util.cos(g),a=h=f*t.util.sin(g);return{tl:{x:r-h,y:n-l},tr:{x:r+s,y:n-a},bl:{x:r-s,y:n+a},br:{x:r+h,y:n+l}}},render:function(e,i,r,n,o){"circle"===((n=n||{}).cornerStyle||o.cornerStyle)?t.controlsUtils.renderCircleControl.call(this,e,i,r,n,o):t.controlsUtils.renderSquareControl.call(this,e,i,r,n,o)}}}(t),function(){function e(e,t){var i,r,n,o,s=e.getAttribute("style"),a=e.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,s){var l=s.split(/\s*;\s*/);for(""===l[l.length-1]&&l.pop(),o=l.length;o--;){var h=l[o].split(/\s*:\s*/),c=h[0].trim(),u=h[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(n=u)}}return i||(i=e.getAttribute("stop-color")||"rgb(0,0,0)"),n||(n=e.getAttribute("stop-opacity")),r=(i=new T.Color(i)).getAlpha(),n=isNaN(parseFloat(n))?1:parseFloat(n),n*=r*t,{offset:a,color:i.toRgb(),opacity:n}}var t=T.util.object.clone;T.Gradient=T.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(e){e||(e={}),e.coords||(e.coords={});var t,i=this;Object.keys(e).forEach((function(t){i[t]=e[t]})),this.id?this.id+="_"+T.Object.__uid++:this.id=T.Object.__uid++,t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},"radial"===this.type&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.colorStops=e.colorStops.slice()},addColorStop:function(e){for(var t in e){var i=new T.Color(e[t]);this.colorStops.push({offset:parseFloat(t),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(e){var t={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return T.util.populateWithProperties(this,t,e),t},toSVG:function(e,i){var r,n,o,s,a=t(this.coords,!0),l=(i=i||{},t(this.colorStops,!0)),h=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():T.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(l.sort((function(e,t){return e.offset-t.offset})),"objectBoundingBox"===g?(u/=e.width,d/=e.height):(u+=e.width/2,d+=e.height/2),"path"===e.type&&"percentage"!==this.gradientUnits&&(u-=e.pathOffset.x,d-=e.pathOffset.y),c[4]-=u,c[5]-=d,s='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',s+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+T.util.matrixToSVG(c)+'" ',"linear"===this.type?o=["\n']:"radial"===this.type&&(o=["\n']),"radial"===this.type){if(h)for((l=l.concat()).reverse(),r=0,n=l.length;r0){var p=_/Math.max(a.r1,a.r2);for(r=0,n=l.length;r\n')}return o.push("linear"===this.type?"\n":"\n"),o.join("")},toLive:function(e){var t,i,r,n=T.util.object.clone(this.coords);if(this.type){for("linear"===this.type?t=e.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(t=e.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2)),i=0,r=this.colorStops.length;i1?1:o,isNaN(o)&&(o=1);var s,a,l,h,c=t.getElementsByTagName("stop"),u="userSpaceOnUse"===t.getAttribute("gradientUnits")?"pixels":"percentage",d=t.getAttribute("gradientTransform")||"",f=[],g=0,_=0;for("linearGradient"===t.nodeName||"LINEARGRADIENT"===t.nodeName?(s="linear",a=function(e){return{x1:e.getAttribute("x1")||0,y1:e.getAttribute("y1")||0,x2:e.getAttribute("x2")||"100%",y2:e.getAttribute("y2")||0}}(t)):(s="radial",a=function(e){return{x1:e.getAttribute("fx")||e.getAttribute("cx")||"50%",y1:e.getAttribute("fy")||e.getAttribute("cy")||"50%",r1:0,x2:e.getAttribute("cx")||"50%",y2:e.getAttribute("cy")||"50%",r2:e.getAttribute("r")||"50%"}}(t)),l=c.length;l--;)f.push(e(c[l],o));return h=T.parseTransformAttribute(d),function(e,t,i,r){var n,o;Object.keys(t).forEach((function(e){"Infinity"===(n=t[e])?o=1:"-Infinity"===n?o=0:(o=parseFloat(t[e],10),"string"==typeof n&&/^(\d+\.\d+)%|(\d+)%$/.test(n)&&(o*=.01,"pixels"===r&&("x1"!==e&&"x2"!==e&&"r2"!==e||(o*=i.viewBoxWidth||i.width),"y1"!==e&&"y2"!==e||(o*=i.viewBoxHeight||i.height)))),t[e]=o}))}(0,a,n,u),"pixels"===u&&(g=-i.left,_=-i.top),new T.Gradient({id:t.getAttribute("id"),type:s,coords:a,colorStops:f,gradientUnits:u,gradientTransform:h,offsetX:g,offsetY:_})}})}(),m=T.util.toFixed,T.Pattern=T.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(e,t){if(e||(e={}),this.id=T.Object.__uid++,this.setOptions(e),!e.source||e.source&&"string"!=typeof e.source)t&&t(this);else{var i=this;this.source=T.util.createImage(),T.util.loadImage(e.source,(function(e,r){i.source=e,t&&t(i,r)}),null,this.crossOrigin)}},toObject:function(e){var t,i,r=T.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?t=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(t=this.source.toDataURL()),i={type:"pattern",source:t,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:m(this.offsetX,r),offsetY:m(this.offsetY,r),patternTransform:this.patternTransform?this.patternTransform.concat():null},T.util.populateWithProperties(this,i,e),i},toSVG:function(e){var t="function"==typeof this.source?this.source():this.source,i=t.width/e.width,r=t.height/e.height,n=this.offsetX/e.width,o=this.offsetY/e.height,s="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,o&&(r+=Math.abs(o))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,n&&(i+=Math.abs(n))),t.src?s=t.src:t.toDataURL&&(s=t.toDataURL()),'\n\n\n'},setOptions:function(e){for(var t in e)this[t]=e[t]},toLive:function(e){var t=this.source;if(!t)return"";if(void 0!==t.src){if(!t.complete)return"";if(0===t.naturalWidth||0===t.naturalHeight)return""}return e.createPattern(t,this.repeat)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.toFixed;t.Shadow?t.warn("fabric.Shadow is already defined."):(t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(e){for(var i in"string"==typeof e&&(e=this._parseShadow(e)),e)this[i]=e[i];this.id=t.Object.__uid++},_parseShadow:function(e){var i=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var r=40,n=40,o=t.Object.NUM_FRACTION_DIGITS,s=t.util.rotateVector({x:this.offsetX,y:this.offsetY},t.util.degreesToRadians(-e.angle)),a=new t.Color(this.color);return e.width&&e.height&&(r=100*i((Math.abs(s.x)+this.blur)/e.width,o)+20,n=100*i((Math.abs(s.y)+this.blur)/e.height,o)+20),e.flipX&&(s.x*=-1),e.flipY&&(s.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var e={},i=t.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(t){this[t]!==i[t]&&(e[t]=this[t])}),this),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(t),function(){if(T.StaticCanvas)T.warn("fabric.StaticCanvas is already defined.");else{var e=T.util.object.extend,t=T.util.getElementOffset,i=T.util.removeFromArray,r=T.util.toFixed,n=T.util.transformPoint,o=T.util.invertTransform,s=T.util.getNodeCanvas,a=T.util.createCanvasElement,l=new Error("Could not initialize `canvas` element");T.StaticCanvas=T.util.createClass(T.CommonMethods,{initialize:function(e,t){t||(t={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(e,t)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:T.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(e,t){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(e),this._initOptions(t),this.interactive||this._initRetinaScaling(),t.overlayImage&&this.setOverlayImage(t.overlayImage,i),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,i),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,i),t.overlayColor&&this.setOverlayColor(t.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return T.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,T.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var e=T.devicePixelRatio;this.__initRetinaScaling(e,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(e,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(e,t,i){t.setAttribute("width",this.width*e),t.setAttribute("height",this.height*e),i.scale(e,e)},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,i){return this.__setBgOverlayImage("overlayImage",e,t,i)},setBackgroundImage:function(e,t,i){return this.__setBgOverlayImage("backgroundImage",e,t,i)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,i,r){return"string"==typeof t?T.util.loadImage(t,(function(t,n){if(t){var o=new T.Image(t,r);this[e]=o,o.canvas=this}i&&i(t,n)}),this,r&&r.crossOrigin):(r&&t.setOptions(r),this[e]=t,t&&(t.canvas=this),i&&i(t,!1)),this},__setBgOverlayColor:function(e,t,i){return this[e]=t,this._initGradient(t,e),this._initPattern(t,e,i),this},_createCanvasElement:function(){var e=a();if(!e)throw l;if(e.style||(e.style={}),void 0===e.getContext)throw l;return e},_initOptions:function(e){var t=this.lowerCanvasEl;this._setOptions(e),this.width=this.width||parseInt(t.width,10)||0,this.height=this.height||parseInt(t.height,10)||0,this.lowerCanvasEl.style&&(t.width=this.width,t.height=this.height,t.style.width=this.width+"px",t.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(e){e&&e.getContext?this.lowerCanvasEl=e:this.lowerCanvasEl=T.util.getById(e)||this._createCanvasElement(),T.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e,t){return this.setDimensions({width:e},t)},setHeight:function(e,t){return this.setDimensions({height:e},t)},setDimensions:function(e,t){var i;for(var r in t=t||{},e)i=e[r],t.cssOnly||(this._setBackstoreDimension(r,e[r]),i+="px",this.hasLostContext=!0),t.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),t.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.upperCanvasEl&&(this.upperCanvasEl[e]=t),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this[e]=t,this},_setCssDimension:function(e,t){return this.lowerCanvasEl.style[e]=t,this.upperCanvasEl&&(this.upperCanvasEl.style[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(e){var t,i,r,n=this._activeObject,o=this.backgroundImage,s=this.overlayImage;for(this.viewportTransform=e,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",t),this._setSVGObjects(i,t),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",t),i.push(""),i.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('\n','\n')},_setSVGHeader:function(e,t){var i,n=t.width||this.width,o=t.height||this.height,s='viewBox="0 0 '+this.width+" "+this.height+'" ',a=T.Object.NUM_FRACTION_DIGITS;t.viewBox?s='viewBox="'+t.viewBox.x+" "+t.viewBox.y+" "+t.viewBox.width+" "+t.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,s='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),e.push("\n',"Created with Fabric.js ",T.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(t),"\n")},createSVGClipPathMarkup:function(e){var t=this.clipPath;return t?(t.clipPathId="CLIPPATH_"+T.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(e.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var e=this;return["background","overlay"].map((function(t){var i=e[t+"Color"];if(i&&i.toLive){var r=e[t+"Vpt"],n=e.viewportTransform,o={width:e.width/(r?n[0]:1),height:e.height/(r?n[3]:1)};return i.toSVG(o,{additionalTransform:r?T.util.matrixToSVG(n):""})}})).join("")},createSVGFontFacesMarkup:function(){var e,t,i,r,n,o,s,a,l="",h={},c=T.fontPaths,u=[];for(this._objects.forEach((function e(t){u.push(t),t._objects&&t._objects.forEach(e)})),s=0,a=u.length;s',"\n",l,"","\n"].join("")),l},_setSVGObjects:function(e,t){var i,r,n,o=this._objects;for(r=0,n=o.length;r\n")}else e.push('\n")},sendToBack:function(e){if(!e)return this;var t,r,n,o=this._activeObject;if(e===o&&"activeSelection"===e.type)for(t=(n=o._objects).length;t--;)r=n[t],i(this._objects,r),this._objects.unshift(r);else i(this._objects,e),this._objects.unshift(e);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(e){if(!e)return this;var t,r,n,o=this._activeObject;if(e===o&&"activeSelection"===e.type)for(n=o._objects,t=0;t0+h&&(s=o-1,i(this._objects,n),this._objects.splice(s,0,n)),h++;else 0!==(o=this._objects.indexOf(e))&&(s=this._findNewLowerIndex(e,o,t),i(this._objects,e),this._objects.splice(s,0,e));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(e,t,i){var r,n;if(i){for(r=t,n=t-1;n>=0;--n)if(e.intersectsWithObject(this._objects[n])||e.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(e)){r=n;break}}else r=t-1;return r},bringForward:function(e,t){if(!e)return this;var r,n,o,s,a,l=this._activeObject,h=0;if(e===l&&"activeSelection"===e.type)for(r=(a=l._objects).length;r--;)n=a[r],(o=this._objects.indexOf(n))"}}),e(T.StaticCanvas.prototype,T.Observable),e(T.StaticCanvas.prototype,T.Collection),e(T.StaticCanvas.prototype,T.DataURLExporter),e(T.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=a();if(!t||!t.getContext)return null;var i=t.getContext("2d");return i&&"setLineDash"===e?void 0!==i.setLineDash:null}}),T.StaticCanvas.prototype.toJSON=T.StaticCanvas.prototype.toObject,T.isLikelyNode&&(T.StaticCanvas.prototype.createPNGStream=function(){var e=s(this.lowerCanvasEl);return e&&e.createPNGStream()},T.StaticCanvas.prototype.createJPEGStream=function(e){var t=s(this.lowerCanvasEl);return t&&t.createJPEGStream(e)})}}(),T.BaseBrush=T.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(e){e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.miterLimit=this.strokeMiterLimit,e.lineJoin=this.strokeLineJoin,e.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(e){var t=this.canvas.viewportTransform;e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5])},_setShadow:function(){if(this.shadow){var e=this.canvas,t=this.shadow,i=e.contextTop,r=e.getZoom();e&&e._isRetinaScaling()&&(r*=T.devicePixelRatio),i.shadowColor=t.color,i.shadowBlur=t.blur*r,i.shadowOffsetX=t.offsetX*r,i.shadowOffsetY=t.offsetY*r}},needsFullRender:function(){return new T.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_isOutSideCanvas:function(e){return e.x<0||e.x>this.canvas.getWidth()||e.y<0||e.y>this.canvas.getHeight()}}),T.PencilBrush=T.util.createClass(T.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(e){this.canvas=e,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(e,t,i){var r=t.midPointFrom(i);return e.quadraticCurveTo(t.x,t.y,r.x,r.y),r},onMouseDown:function(e,t){this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],this._prepareForDrawing(e),this._captureDrawingPath(e),this._render())},onMouseMove:function(e,t){if(this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(e))&&this._captureDrawingPath(e)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,r=i.length,n=this.canvas.contextTop;this._saveAndTransform(n),this.oldEnd&&(n.beginPath(),n.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(n,i[r-2],i[r-1],!0),n.stroke(),n.restore()}},onMouseUp:function(e){return!this.canvas._isMainEvent(e.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(e){var t=new T.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){return!(this._points.length>1&&e.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(e),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(e){var t=new T.Point(e.x,e.y);return this._addPoint(t)},_render:function(e){var t,i,r=this._points[0],n=this._points[1];if(e=e||this.canvas.contextTop,this._saveAndTransform(e),e.beginPath(),2===this._points.length&&r.x===n.x&&r.y===n.y){var o=this.width/1e3;r=new T.Point(r.x,r.y),n=new T.Point(n.x,n.y),r.x-=o,n.x+=o}for(e.moveTo(r.x,r.y),t=1,i=this._points.length;t=n&&(s=e[i],a.push(s));return a.push(e[o]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var e=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(e))this.canvas.requestRenderAll();else{var t=this.createPath(e);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:t}),this.canvas.add(t),this.canvas.requestRenderAll(),t.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:t})}}}),T.CircleBrush=T.util.createClass(T.BaseBrush,{width:10,initialize:function(e){this.canvas=e,this.points=[]},drawDot:function(e){var t=this.addPoint(e),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,t),i.restore()},dot:function(e,t){e.fillStyle=t.fill,e.beginPath(),e.arc(t.x,t.y,t.radius,0,2*Math.PI,!1),e.closePath(),e.fill()},onMouseDown:function(e){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(e)},_render:function(){var e,t,i=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(i),e=0,t=r.length;e0&&!this.preserveObjectStacking){t=[],i=[];for(var n=0,o=this._objects.length;n1&&(this._activeObject._objects=i),t.push.apply(t,i)}else t=this._objects;return t},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var e=this.contextContainer;return this.renderCanvas(e,this._chooseObjectsToRender()),this},renderTopLayer:function(e){e.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(e),this.contextTopDirty=!0),e.restore()},renderTop:function(){var e=this.contextTop;return this.clearContext(e),this.renderTopLayer(e),this.fire("after:render"),this},_normalizePointer:function(e,t){var i=e.calcTransformMatrix(),r=T.util.invertTransform(i),n=this.restorePointerVpt(t);return T.util.transformPoint(n,r)},isTargetTransparent:function(e,t,i){if(e.shouldCache()&&e._cacheCanvas&&e!==this._activeObject){var r=this._normalizePointer(e,{x:t,y:i}),n=Math.max(e.cacheTranslationX+r.x*e.zoomX,0),o=Math.max(e.cacheTranslationY+r.y*e.zoomY,0);return T.util.isTransparent(e._cacheContext,Math.round(n),Math.round(o),this.targetFindTolerance)}var s=this.contextCache,a=e.selectionBackgroundColor,l=this.viewportTransform;return e.selectionBackgroundColor="",this.clearContext(s),s.save(),s.transform(l[0],l[1],l[2],l[3],l[4],l[5]),e.render(s),s.restore(),e.selectionBackgroundColor=a,T.util.isTransparent(s,t,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(e){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(t){return!0===e[t]})):e[this.selectionKey]},_shouldClearSelection:function(e,t){var i=this.getActiveObjects(),r=this._activeObject;return!t||t&&r&&i.length>1&&-1===i.indexOf(t)&&r!==t&&!this._isSelectionKeyPressed(e)||t&&!t.evented||t&&!t.selectable&&r&&r!==t},_shouldCenterTransform:function(e,t,i){var r;if(e)return"scale"===t||"scaleX"===t||"scaleY"===t||"resizing"===t?r=this.centeredScaling||e.centeredScaling:"rotate"===t&&(r=this.centeredRotation||e.centeredRotation),r?!i:i},_getOriginFromCorner:function(e,t){var i={x:e.originX,y:e.originY};return"ml"===t||"tl"===t||"bl"===t?i.x="right":"mr"!==t&&"tr"!==t&&"br"!==t||(i.x="left"),"tl"===t||"mt"===t||"tr"===t?i.y="bottom":"bl"!==t&&"mb"!==t&&"br"!==t||(i.y="top"),i},_getActionFromCorner:function(e,t,i,r){if(!t||!e)return"drag";var n=r.controls[t];return n.getActionName(i,n,r)},_setupCurrentTransform:function(e,i,r){if(i){var n=this.getPointer(e),o=i.__corner,s=i.controls[o],a=r&&o?s.getActionHandler(e,i,s):T.controlsUtils.dragHandler,l=this._getActionFromCorner(r,o,e,i),h=this._getOriginFromCorner(i,o),c=e[this.centeredKey],u={target:i,action:l,actionHandler:a,corner:o,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:n.x-i.left,offsetY:n.y-i.top,originX:h.x,originY:h.y,ex:n.x,ey:n.y,lastX:n.x,lastY:n.y,theta:t(i.angle),width:i.width*i.scaleX,shiftKey:e.shiftKey,altKey:c,original:T.util.saveObjectTransform(i)};this._shouldCenterTransform(i,l,c)&&(u.originX="center",u.originY="center"),u.original.originX=h.x,u.original.originY=h.y,this._currentTransform=u,this._beforeTransform(e)}},setCursor:function(e){this.upperCanvasEl.style.cursor=e},_drawSelection:function(e){var t=this._groupSelector,i=new T.Point(t.ex,t.ey),r=T.util.transformPoint(i,this.viewportTransform),n=new T.Point(t.ex+t.left,t.ey+t.top),o=T.util.transformPoint(n,this.viewportTransform),s=Math.min(r.x,o.x),a=Math.min(r.y,o.y),l=Math.max(r.x,o.x),h=Math.max(r.y,o.y),c=this.selectionLineWidth/2;this.selectionColor&&(e.fillStyle=this.selectionColor,e.fillRect(s,a,l-s,h-a)),this.selectionLineWidth&&this.selectionBorderColor&&(e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor,s+=c,a+=c,l-=c,h-=c,T.Object.prototype._setLineDash.call(this,e,this.selectionDashArray),e.strokeRect(s,a,l-s,h-a))},findTarget:function(e,t){if(!this.skipTargetFind){var r,n,o=this.getPointer(e,!0),s=this._activeObject,a=this.getActiveObjects(),l=i(e),h=a.length>1&&!t||1===a.length;if(this.targets=[],h&&s._findTargetCorner(o,l))return s;if(a.length>1&&!t&&s===this._searchPossibleTargets([s],o))return s;if(1===a.length&&s===this._searchPossibleTargets([s],o)){if(!this.preserveObjectStacking)return s;r=s,n=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,o);return e[this.altSelectionKey]&&c&&r&&c!==r&&(c=r,this.targets=n),c}},_checkTarget:function(e,t,i){if(t&&t.visible&&t.evented&&t.containsPoint(e)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing)return!0;if(!this.isTargetTransparent(t,i.x,i.y))return!0}},_searchPossibleTargets:function(e,t){for(var i,r,n=e.length;n--;){var o=e[n],s=o.group?this._normalizePointer(o.group,t):t;if(this._checkTarget(s,o,t)){(i=e[n]).subTargetCheck&&i instanceof T.Group&&(r=this._searchPossibleTargets(i._objects,t))&&this.targets.push(r);break}}return i},restorePointerVpt:function(e){return T.util.transformPoint(e,T.util.invertTransform(this.viewportTransform))},getPointer:function(t,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var r,n=e(t),o=this.upperCanvasEl,s=o.getBoundingClientRect(),a=s.width||0,l=s.height||0;a&&l||("top"in s&&"bottom"in s&&(l=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(a=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,i||(n=this.restorePointerVpt(n));var h=this.getRetinaScaling();return 1!==h&&(n.x/=h,n.y/=h),r=0===a||0===l?{width:1,height:1}:{width:o.width/a,height:o.height/l},{x:n.x*r.width,y:n.y*r.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),t=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),T.util.addClass(i,"upper-canvas "+e),this.wrapperEl.appendChild(i),this._copyCanvasStyle(t,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=T.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),T.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),T.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(e){var t=this.width||e.width,i=this.height||e.height;T.util.setStyle(e,{position:"absolute",width:t+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),e.width=t,e.height=i,T.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var e=this._activeObject;return e?"activeSelection"===e.type&&e._objects?e._objects.slice(0):[e]:[]},_onObjectRemoved:function(e){e===this._activeObject&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared",{target:e}),e.fire("deselected")),e===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",e)},_fireSelectionEvents:function(e,t){var i=!1,r=this.getActiveObjects(),n=[],o=[];e.forEach((function(e){-1===r.indexOf(e)&&(i=!0,e.fire("deselected",{e:t,target:e}),o.push(e))})),r.forEach((function(r){-1===e.indexOf(r)&&(i=!0,r.fire("selected",{e:t,target:r}),n.push(r))})),e.length>0&&r.length>0?i&&this.fire("selection:updated",{e:t,selected:n,deselected:o}):r.length>0?this.fire("selection:created",{e:t,selected:n}):e.length>0&&this.fire("selection:cleared",{e:t,deselected:o})},setActiveObject:function(e,t){var i=this.getActiveObjects();return this._setActiveObject(e,t),this._fireSelectionEvents(i,t),this},_setActiveObject:function(e,t){return this._activeObject!==e&&!!this._discardActiveObject(t,e)&&!e.onSelect({e:t})&&(this._activeObject=e,!0)},_discardActiveObject:function(e,t){var i=this._activeObject;if(i){if(i.onDeselect({e,object:t}))return!1;this._activeObject=null}return!0},discardActiveObject:function(e){var t=this.getActiveObjects(),i=this.getActiveObject();return t.length&&this.fire("before:selection:cleared",{target:i,e}),this._discardActiveObject(e),this._fireSelectionEvents(t,e),this},dispose:function(){var e=this.wrapperEl;return this.removeListeners(),e.removeChild(this.upperCanvasEl),e.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(e){T.util.cleanUpJsdomNode(this[e]),this[e]=void 0}.bind(this)),e.parentNode&&e.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,T.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(e){var t=this._activeObject;t&&t._renderControls(e)},_toObject:function(e,t,i){var r=this._realizeGroupTransformOnObject(e),n=this.callSuper("_toObject",e,t,i);return this._unwindGroupTransformOnObject(e,r),n},_realizeGroupTransformOnObject:function(e){if(e.group&&"activeSelection"===e.group.type&&this._activeObject===e.group){var t={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){t[i]=e[i]})),T.util.addTransformToObject(e,this._activeObject.calcOwnMatrix()),t}return null},_unwindGroupTransformOnObject:function(e,t){t&&e.set(t)},_setSVGObject:function(e,t,i){var r=this._realizeGroupTransformOnObject(t);this.callSuper("_setSVGObject",e,t,i),this._unwindGroupTransformOnObject(t,r)},setViewportTransform:function(e){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),T.StaticCanvas.prototype.setViewportTransform.call(this,e)}}),T.StaticCanvas)"prototype"!==r&&(T.Canvas[r]=T.StaticCanvas[r])}(),function(){var e=T.util.addListener,t=T.util.removeListener,i={passive:!1};function r(e,t){return e.button&&e.button===t-1}T.util.object.extend(T.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(e,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(e,t){var r=this.upperCanvasEl,n=this._getEventPrefix();e(T.window,"resize",this._onResize),e(r,n+"down",this._onMouseDown),e(r,n+"move",this._onMouseMove,i),e(r,n+"out",this._onMouseOut),e(r,n+"enter",this._onMouseEnter),e(r,"wheel",this._onMouseWheel),e(r,"contextmenu",this._onContextMenu),e(r,"dblclick",this._onDoubleClick),e(r,"dragover",this._onDragOver),e(r,"dragenter",this._onDragEnter),e(r,"dragleave",this._onDragLeave),e(r,"drop",this._onDrop),this.enablePointerEvents||e(r,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&t in eventjs&&(eventjs[t](r,"gesture",this._onGesture),eventjs[t](r,"drag",this._onDrag),eventjs[t](r,"orientation",this._onOrientationChange),eventjs[t](r,"shake",this._onShake),eventjs[t](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(t,"remove");var e=this._getEventPrefix();t(T.document,e+"up",this._onMouseUp),t(T.document,"touchend",this._onTouchEnd,i),t(T.document,e+"move",this._onMouseMove,i),t(T.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(e,t){this.__onTransformGesture&&this.__onTransformGesture(e,t)},_onDrag:function(e,t){this.__onDrag&&this.__onDrag(e,t)},_onMouseWheel:function(e){this.__onMouseWheel(e)},_onMouseOut:function(e){var t=this._hoveredTarget;this.fire("mouse:out",{target:t,e}),this._hoveredTarget=null,t&&t.fire("mouseout",{e});var i=this;this._hoveredTargets.forEach((function(r){i.fire("mouse:out",{target:t,e}),r&&t.fire("mouseout",{e})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(e){e.isEditing&&e.hiddenTextarea.focus()}))},_onMouseEnter:function(e){this._currentTransform||this.findTarget(e)||(this.fire("mouse:over",{target:null,e}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(e,t){this.__onOrientationChange&&this.__onOrientationChange(e,t)},_onShake:function(e,t){this.__onShake&&this.__onShake(e,t)},_onLongPress:function(e,t){this.__onLongPress&&this.__onLongPress(e,t)},_onDragOver:function(e){e.preventDefault();var t=this._simpleEventHandler("dragover",e);this._fireEnterLeaveEvents(t,e)},_onDrop:function(e){return this._simpleEventHandler("drop:before",e),this._simpleEventHandler("drop",e)},_onContextMenu:function(e){return this.stopContextMenu&&(e.stopPropagation(),e.preventDefault()),!1},_onDoubleClick:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"dblclick"),this._resetTransformEventData(e)},getPointerId:function(e){var t=e.changedTouches;return t?t[0]&&t[0].identifier:this.enablePointerEvents?e.pointerId:-1},_isMainEvent:function(e){return!0===e.isPrimary||!1!==e.isPrimary&&("touchend"===e.type&&0===e.touches.length||!e.changedTouches||e.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,o=this._getEventPrefix();e(T.document,"touchend",this._onTouchEnd,i),e(T.document,"touchmove",this._onMouseMove,i),t(n,o+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,o=this._getEventPrefix();t(n,o+"move",this._onMouseMove,i),e(T.document,o+"up",this._onMouseUp),e(T.document,o+"move",this._onMouseMove,i)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var n=this._getEventPrefix();t(T.document,"touchend",this._onTouchEnd,i),t(T.document,"touchmove",this._onMouseMove,i);var o=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){e(o.upperCanvasEl,n+"down",o._onMouseDown),o._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var n=this.upperCanvasEl,o=this._getEventPrefix();this._isMainEvent(r)&&(t(T.document,o+"up",this._onMouseUp),t(T.document,o+"move",this._onMouseMove,i),e(n,o+"move",this._onMouseMove,i))},_onMouseMove:function(e){!this.allowTouchScrolling&&e.preventDefault&&e.preventDefault(),this.__onMouseMove(e)},_onResize:function(){this.calcOffset()},_shouldRender:function(e){var t=this._activeObject;return!!(!!t!=!!e||t&&e&&t!==e)||(t&&t.isEditing,!1)},__onMouseUp:function(e){var t,i=this._currentTransform,n=this._groupSelector,o=!1,s=!n||0===n.left&&0===n.top;if(this._cacheTransformEventData(e),t=this._target,this._handleEvent(e,"up:before"),r(e,3))this.fireRightClick&&this._handleEvent(e,"up",3,s);else{if(r(e,2))return this.fireMiddleClick&&this._handleEvent(e,"up",2,s),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(e);else if(this._isMainEvent(e)){if(i&&(this._finalizeCurrentTransform(e),o=i.actionPerformed),!s){var a=t===this._activeObject;this._maybeGroupObjects(e),o||(o=this._shouldRender(t)||!a&&t===this._activeObject)}var l,h;if(t){if(l=t._findTargetCorner(this.getPointer(e,!0),T.util.isTouchEvent(e)),t.selectable&&t!==this._activeObject&&"up"===t.activeOn)this.setActiveObject(t,e),o=!0;else{var c=t.controls[l],u=c&&c.getMouseUpHandler(e,t,c);u&&u(e,i,(h=this.getPointer(e)).x,h.y)}t.isMoving=!1}if(i&&(i.target!==t||i.corner!==l)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(e,t,c);h=h||this.getPointer(e),f&&f(e,i,h.x,h.y)}this._setCursorFromEvent(e,t),this._handleEvent(e,"up",1,s),this._groupSelector=null,this._currentTransform=null,t&&(t.__corner=0),o?this.requestRenderAll():s||this.renderTop()}}},_simpleEventHandler:function(e,t){var i=this.findTarget(t),r=this.targets,n={e:t,target:i,subTargets:r};if(this.fire(e,n),i&&i.fire(e,n),!r)return i;for(var o=0;o1&&(t=new T.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(t,e))},_collectObjects:function(e){for(var t,i=[],r=this._groupSelector.ex,n=this._groupSelector.ey,o=r+this._groupSelector.left,s=n+this._groupSelector.top,a=new T.Point(v(r,o),v(n,s)),l=new T.Point(y(r,o),y(n,s)),h=!this.selectionFullyContained,c=r===o&&n===s,u=this._objects.length;u--&&!((t=this._objects[u])&&t.selectable&&t.visible&&(h&&t.intersectsWithRect(a,l,!0)||t.isContainedWithinRect(a,l,!0)||h&&t.containsPoint(a,null,!0)||h&&t.containsPoint(l,null,!0))&&(i.push(t),c)););return i.length>1&&(i=i.filter((function(t){return!t.onSelect({e})}))),i},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e),this.setCursor(this.defaultCursor),this._groupSelector=null}}),T.util.object.extend(T.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",i=e.quality||1,r=(e.multiplier||1)*(e.enableRetinaScaling?this.getRetinaScaling():1),n=this.toCanvasElement(r,e);return T.util.toDataURL(n,t,i)},toCanvasElement:function(e,t){e=e||1;var i=((t=t||{}).width||this.width)*e,r=(t.height||this.height)*e,n=this.getZoom(),o=this.width,s=this.height,a=n*e,l=this.viewportTransform,h=(l[4]-(t.left||0))*e,c=(l[5]-(t.top||0))*e,u=this.interactive,d=[a,0,0,a,h,c],f=this.enableRetinaScaling,g=T.util.createCanvasElement(),_=this.contextTop;return g.width=i,g.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=l,this.width=o,this.height=s,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=_,g}}),T.util.object.extend(T.StaticCanvas.prototype,{loadFromJSON:function(e,t,i){if(e){var r="string"==typeof e?JSON.parse(e):T.util.object.clone(e),n=this,o=r.clipPath,s=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(e){n.clear(),n._setBgOverlay(r,(function(){o?n._enlivenObjects([o],(function(i){n.clipPath=i[0],n.__setupCanvas.call(n,r,e,s,t)})):n.__setupCanvas.call(n,r,e,s,t)}))}),i),this}},__setupCanvas:function(e,t,i,r){var n=this;t.forEach((function(e,t){n.insertAt(e,t)})),this.renderOnAddRemove=i,delete e.objects,delete e.backgroundImage,delete e.overlayImage,delete e.background,delete e.overlay,this._setOptions(e),this.renderAll(),r&&r()},_setBgOverlay:function(e,t){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(e.backgroundImage||e.overlayImage||e.background||e.overlay){var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&t&&t()};this.__setBgOverlay("backgroundImage",e.backgroundImage,i,r),this.__setBgOverlay("overlayImage",e.overlayImage,i,r),this.__setBgOverlay("backgroundColor",e.background,i,r),this.__setBgOverlay("overlayColor",e.overlay,i,r)}else t&&t()},__setBgOverlay:function(e,t,i,r){var n=this;if(!t)return i[e]=!0,void(r&&r());"backgroundImage"===e||"overlayImage"===e?T.util.enlivenObjects([t],(function(t){n[e]=t[0],i[e]=!0,r&&r()})):this["set"+T.util.string.capitalize(e,!0)](t,(function(){i[e]=!0,r&&r()}))},_enlivenObjects:function(e,t,i){e&&0!==e.length?T.util.enlivenObjects(e,(function(e){t&&t(e)}),null,i):t&&t([])},_toDataURL:function(e,t){this.clone((function(i){t(i.toDataURL(e))}))},_toDataURLWithMultiplier:function(e,t,i){this.clone((function(r){i(r.toDataURLWithMultiplier(e,t))}))},clone:function(e,t){var i=JSON.stringify(this.toJSON(t));this.cloneWithoutData((function(t){t.loadFromJSON(i,(function(){e&&e(t)}))}))},cloneWithoutData:function(e){var t=T.util.createCanvasElement();t.width=this.width,t.height=this.height;var i=new T.Canvas(t);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),e&&e(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):e&&e(i)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.object.clone,n=t.util.toFixed,o=t.util.string.capitalize,s=t.util.degreesToRadians,a=!t.isLikelyNode;t.Object||(t.Object=t.util.createClass(t.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(e){e&&this.setOptions(e)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=t.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(e){var i=t.perfLimitSizeTotal,r=e.width,n=e.height,o=t.maxCacheSideLimit,s=t.minCacheSideLimit;if(r<=o&&n<=o&&r*n<=i)return rc&&(e.zoomX/=r/c,e.width=c,e.capped=!0),n>u&&(e.zoomY/=n/u,e.height=u,e.capped=!0),e},_getCacheCanvasDimensions:function(){var e=this.getTotalObjectScaling(),t=this._getTransformedDimensions(0,0),i=t.x*e.scaleX/this.scaleX,r=t.y*e.scaleY/this.scaleY;return{width:i+2,height:r+2,zoomX:e.scaleX,zoomY:e.scaleY,x:i,y:r}},_updateCacheCanvas:function(){var e=this.canvas;if(this.noScaleCache&&e&&e._currentTransform){var i=e._currentTransform.target,r=e._currentTransform.action;if(this===i&&r.slice&&"scale"===r.slice(0,5))return!1}var n,o,s=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),l=t.minCacheSideLimit,h=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=h!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,_=f||g,p=0,m=0,v=!1;if(f){var y=this._cacheCanvas.width,S=this._cacheCanvas.height,b=h>y||c>S;v=b||(h<.9*y||c<.9*S)&&y>l&&S>l,b&&!a.capped&&(h>l||c>l)&&(p=.1*h,m=.1*c)}return this instanceof t.Text&&this.path&&(_=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,m+=this.getHeightOfLine(0)*this.zoomY),!!_&&(v?(s.width=Math.ceil(h+p),s.height=Math.ceil(c+m)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,s.width,s.height)),n=a.x/2,o=a.y/2,this.cacheTranslationX=Math.round(s.width/2-n)+n,this.cacheTranslationY=Math.round(s.height/2-o)+o,this.cacheWidth=h,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(e){this._setOptions(e),this._initGradient(e.fill,"fill"),this._initGradient(e.stroke,"stroke"),this._initPattern(e.fill,"fill"),this._initPattern(e.stroke,"stroke")},transform:function(e){var t=this.group&&!this.group._transformDone||this.group&&this.canvas&&e===this.canvas.contextTop,i=this.calcTransformMatrix(!t);e.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(e){var i=t.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:t.version,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(e),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),t.util.populateWithProperties(this,r,e),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var i=t.util.getKlass(e.type).prototype;return i.stateProperties.forEach((function(t){"left"!==t&&"top"!==t&&(e[t]===i[t]&&delete e[t],Array.isArray(e[t])&&Array.isArray(i[t])&&0===e[t].length&&0===i[t].length&&delete e[t])})),e},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var e=t.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(e.scaleX),scaleY:Math.abs(e.scaleY)}},getTotalObjectScaling:function(){var e=this.getObjectScaling(),t=e.scaleX,i=e.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();t*=r*n,i*=r*n}return{scaleX:t,scaleY:i}},getObjectOpacity:function(){var e=this.opacity;return this.group&&(e*=this.group.getObjectOpacity()),e},_set:function(e,i){var r="scaleX"===e||"scaleY"===e,n=this[e]!==i,o=!1;return r&&(i=this._constrainScale(i)),"scaleX"===e&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===e&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==e||!i||i instanceof t.Shadow?"dirty"===e&&this.group&&this.group.set("dirty",i):i=new t.Shadow(i),this[e]=i,n&&(o=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(e)>-1?(this.dirty=!0,o&&this.group.set("dirty",!0)):o&&this.stateProperties.indexOf(e)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:t.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(e){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(e.save(),this._setupCompositeOperation(e),this.drawSelectionBackground(e),this.transform(e),this._setOpacity(e),this._setShadow(e,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(e)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(e),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),e.restore())},renderCache:function(e){e=e||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,e.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(e,i){if(e.save(),i.inverted?e.globalCompositeOperation="destination-out":e.globalCompositeOperation="destination-in",i.absolutePositioned){var r=t.util.invertTransform(this.calcTransformMatrix());e.transform(r[0],r[1],r[2],r[3],r[4],r[5])}i.transform(e),e.scale(1/i.zoomX,1/i.zoomY),e.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),e.restore()},drawObject:function(e,t){var i=this.fill,r=this.stroke;t?(this.fill="black",this.stroke="",this._setClippingProperties(e)):this._renderBackground(e),this._render(e),this._drawClipPath(e,this.clipPath),this.fill=i,this.stroke=r},_drawClipPath:function(e,t){t&&(t.canvas=this.canvas,t.shouldCache(),t._transformDone=!0,t.renderCache({forClipping:!0}),this.drawClipPathOnCache(e,t))},drawCacheOnCanvas:function(e){e.scale(1/this.zoomX,1/this.zoomY),e.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(e){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!e&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!e){var t=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-t/2,-i/2,t,i)}return!0}return!1},_renderBackground:function(e){if(this.backgroundColor){var t=this._getNonTransformedDimensions();e.fillStyle=this.backgroundColor,e.fillRect(-t.x/2,-t.y/2,t.x,t.y),this._removeShadow(e)}},_setOpacity:function(e){this.group&&!this.group._transformDone?e.globalAlpha=this.getObjectOpacity():e.globalAlpha*=this.opacity},_setStrokeStyles:function(e,t){var i=t.stroke;i&&(e.lineWidth=t.strokeWidth,e.lineCap=t.strokeLineCap,e.lineDashOffset=t.strokeDashOffset,e.lineJoin=t.strokeLineJoin,e.miterLimit=t.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(e,i):(e.strokeStyle=i.toLive(e,this),this._applyPatternGradientTransform(e,i)):e.strokeStyle=t.stroke)},_setFillStyles:function(e,t){var i=t.fill;i&&(i.toLive?(e.fillStyle=i.toLive(e,this),this._applyPatternGradientTransform(e,t.fill)):e.fillStyle=i)},_setClippingProperties:function(e){e.globalAlpha=1,e.strokeStyle="transparent",e.fillStyle="#000000"},_setLineDash:function(e,t){t&&0!==t.length&&(1&t.length&&t.push.apply(t,t),e.setLineDash(t))},_renderControls:function(e,i){var r,n,o,a=this.getViewportTransform(),l=this.calcTransformMatrix();n=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,o=void 0!==i.hasControls?i.hasControls:this.hasControls,l=t.util.multiplyTransformMatrices(a,l),r=t.util.qrDecompose(l),e.save(),e.translate(r.translateX,r.translateY),e.lineWidth=1*this.borderScaleFactor,this.group||(e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),e.rotate(s(this.group?r.angle:this.angle)),i.forActiveSelection||this.group?n&&this.drawBordersInGroup(e,r,i):n&&this.drawBorders(e,i),o&&this.drawControls(e,i),e.restore()},_setShadow:function(e){if(this.shadow){var i,r=this.shadow,n=this.canvas,o=n&&n.viewportTransform[0]||1,s=n&&n.viewportTransform[3]||1;i=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),n&&n._isRetinaScaling()&&(o*=t.devicePixelRatio,s*=t.devicePixelRatio),e.shadowColor=r.color,e.shadowBlur=r.blur*t.browserShadowBlurConstant*(o+s)*(i.scaleX+i.scaleY)/4,e.shadowOffsetX=r.offsetX*o*i.scaleX,e.shadowOffsetY=r.offsetY*s*i.scaleY}},_removeShadow:function(e){this.shadow&&(e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0)},_applyPatternGradientTransform:function(e,t){if(!t||!t.toLive)return{offsetX:0,offsetY:0};var i=t.gradientTransform||t.patternTransform,r=-this.width/2+t.offsetX||0,n=-this.height/2+t.offsetY||0;return"percentage"===t.gradientUnits?e.transform(this.width,0,0,this.height,r,n):e.transform(1,0,0,1,r,n),i&&e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:r,offsetY:n}},_renderPaintInOrder:function(e){"stroke"===this.paintFirst?(this._renderStroke(e),this._renderFill(e)):(this._renderFill(e),this._renderStroke(e))},_render:function(){},_renderFill:function(e){this.fill&&(e.save(),this._setFillStyles(e,this),"evenodd"===this.fillRule?e.fill("evenodd"):e.fill(),e.restore())},_renderStroke:function(e){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this.strokeUniform&&this.group){var t=this.getObjectScaling();e.scale(1/t.scaleX,1/t.scaleY)}else this.strokeUniform&&e.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(e,this.strokeDashArray),this._setStrokeStyles(e,this),e.stroke(),e.restore()}},_applyPatternForTransformedGradient:function(e,i){var r,n=this._limitCacheSize(this._getCacheCanvasDimensions()),o=t.util.createCanvasElement(),s=this.canvas.getRetinaScaling(),a=n.x/this.scaleX/s,l=n.y/this.scaleY/s;o.width=a,o.height=l,(r=o.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(a,0),r.lineTo(a,l),r.lineTo(0,l),r.closePath(),r.translate(a/2,l/2),r.scale(n.zoomX/this.scaleX/s,n.zoomY/this.scaleY/s),this._applyPatternGradientTransform(r,i),r.fillStyle=i.toLive(e),r.fill(),e.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),e.scale(s*this.scaleX/n.zoomX,s*this.scaleY/n.zoomY),e.strokeStyle=r.createPattern(o,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var e=t.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",e.scaleX),this.set("scaleY",e.scaleY),this.angle=e.angle,this.skewX=e.skewX,this.skewY=0}},_removeTransformMatrix:function(e){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=t.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,e&&(this.scaleX*=e.scaleX,this.scaleY*=e.scaleY,this.cropX=e.cropX,this.cropY=e.cropY,i.x+=e.offsetLeft,i.y+=e.offsetTop,this.width=e.width,this.height=e.height),this.setPositionByOrigin(i,"center","center")},clone:function(e,i){var r=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(r,e):t.Object._fromObject("Object",r,e)},cloneAsImage:function(e,i){var r=this.toCanvasElement(i);return e&&e(new t.Image(r)),this},toCanvasElement:function(e){e||(e={});var i=t.util,r=i.saveObjectTransform(this),n=this.group,o=this.shadow,s=Math.abs,a=(e.multiplier||1)*(e.enableRetinaScaling?t.devicePixelRatio:1);delete this.group,e.withoutTransform&&i.resetObjectTransform(this),e.withoutShadow&&(this.shadow=null);var l,h,c,u,d=t.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,_={x:0,y:0};g&&(h=g.blur,l=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),_.x=2*Math.round(s(g.offsetX)+h)*s(l.scaleX),_.y=2*Math.round(s(g.offsetY)+h)*s(l.scaleY)),c=f.width+_.x,u=f.height+_.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new t.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===e.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new t.Point(p.width/2,p.height/2),"center","center");var m=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,e);return this.shadow=o,this.set("canvas",m),n&&(this.group=n),this.set(r).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(e){return e||(e={}),t.util.toDataURL(this.toCanvasElement(e),e.format||"png",e.quality||1)},isType:function(e){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===e},complexity:function(){return 1},toJSON:function(e){return this.toObject(e)},rotate:function(e){var t=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return t&&this._setOriginToCenter(),this.set("angle",e),t&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(e,i){i=i||this.canvas.getPointer(e);var r=new t.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=t.util.rotatePoint(r,n,s(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(e){this.globalCompositeOperation&&(e.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){t.runningAnimations&&t.runningAnimations.cancelByTarget(this)}}),t.util.createAccessors&&t.util.createAccessors(t.Object),i(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.ENLIVEN_PROPS=["clipPath"],t.Object._fromObject=function(e,i,n,o){var s=t[e];i=r(i,!0),t.util.enlivenPatterns([i.fill,i.stroke],(function(e){void 0!==e[0]&&(i.fill=e[0]),void 0!==e[1]&&(i.stroke=e[1]),t.util.enlivenObjectEnlivables(i,i,(function(){var e=o?new s(i[o],i):new s(i);n&&n(e)}))}))},t.Object.__uid=0)}(t),S=T.util.degreesToRadians,b={left:-.5,center:0,right:.5},C={top:-.5,center:0,bottom:.5},T.util.object.extend(T.Object.prototype,{translateToGivenOrigin:function(e,t,i,r,n){var o,s,a,l=e.x,h=e.y;return"string"==typeof t?t=b[t]:t-=.5,"string"==typeof r?r=b[r]:r-=.5,"string"==typeof i?i=C[i]:i-=.5,"string"==typeof n?n=C[n]:n-=.5,s=n-i,((o=r-t)||s)&&(a=this._getTransformedDimensions(),l=e.x+o*a.x,h=e.y+s*a.y),new T.Point(l,h)},translateToCenterPoint:function(e,t,i){var r=this.translateToGivenOrigin(e,t,i,"center","center");return this.angle?T.util.rotatePoint(r,e,S(this.angle)):r},translateToOriginPoint:function(e,t,i){var r=this.translateToGivenOrigin(e,"center","center",t,i);return this.angle?T.util.rotatePoint(r,e,S(this.angle)):r},getCenterPoint:function(){var e=new T.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var i=this.getCenterPoint();return this.translateToOriginPoint(i,e,t)},toLocalPoint:function(e,t,i){var r,n,o=this.getCenterPoint();return r=void 0!==t&&void 0!==i?this.translateToGivenOrigin(o,"center","center",t,i):new T.Point(this.left,this.top),n=new T.Point(e.x,e.y),this.angle&&(n=T.util.rotatePoint(n,o,-S(this.angle))),n.subtractEquals(r)},setPositionByOrigin:function(e,t,i){var r=this.translateToCenterPoint(e,t,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(e){var t,i,r=S(this.angle),n=this.getScaledWidth(),o=T.util.cos(r)*n,s=T.util.sin(r)*n;t="string"==typeof this.originX?b[this.originX]:this.originX-.5,i="string"==typeof e?b[e]:e-.5,this.left+=o*(i-t),this.top+=s*(i-t),this.setCoords(),this.originX=e},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var e=this.getCenterPoint();this.originX="center",this.originY="center",this.left=e.x,this.top=e.y},_resetOrigin:function(){var e=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=e.x,this.top=e.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var e=T.util,t=e.degreesToRadians,i=e.multiplyTransformMatrices,r=e.transformPoint;e.object.extend(T.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(e,t){return t?e?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),e?this.aCoords:this.lineCoords)},getCoords:function(e,t){return i=this._getCoords(e,t),[new T.Point(i.tl.x,i.tl.y),new T.Point(i.tr.x,i.tr.y),new T.Point(i.br.x,i.br.y),new T.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(e,t,i,r){var n=this.getCoords(i,r);return"Intersection"===T.Intersection.intersectPolygonRectangle(n,e,t).status},intersectsWithObject:function(e,t,i){return"Intersection"===T.Intersection.intersectPolygonPolygon(this.getCoords(t,i),e.getCoords(t,i)).status||e.isContainedWithinObject(this,t,i)||this.isContainedWithinObject(e,t,i)},isContainedWithinObject:function(e,t,i){for(var r=this.getCoords(t,i),n=t?e.aCoords:e.lineCoords,o=0,s=e._getImageLines(n);o<4;o++)if(!e.containsPoint(r[o],s))return!1;return!0},isContainedWithinRect:function(e,t,i,r){var n=this.getBoundingRect(i,r);return n.left>=e.x&&n.left+n.width<=t.x&&n.top>=e.y&&n.top+n.height<=t.y},containsPoint:function(e,t,i,r){var n=this._getCoords(i,r),o=(t=t||this._getImageLines(n),this._findCrossPoints(e,t));return 0!==o&&o%2==1},isOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,e).some((function(e){return e.x<=i.x&&e.x>=t.x&&e.y<=i.y&&e.y>=t.y}))||!!this.intersectsWithRect(t,i,!0,e)||this._containsCenterOfCanvas(t,i,e)},_containsCenterOfCanvas:function(e,t,i){var r={x:(e.x+t.x)/2,y:(e.y+t.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(t,i,!0,e)||this.getCoords(!0,e).every((function(e){return(e.x>=i.x||e.x<=t.x)&&(e.y>=i.y||e.y<=t.y)}))&&this._containsCenterOfCanvas(t,i,e)},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var i,r,n,o=0;for(var s in t)if(!((n=t[s]).o.y=e.y&&n.d.y>=e.y||(n.o.x===n.d.x&&n.o.x>=e.x?r=n.o.x:(i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(e.y-0*e.x-(n.o.y-i*n.o.x))/(0-i)),r>=e.x&&(o+=1),2!==o)))break;return o},getBoundingRect:function(t,i){var r=this.getCoords(t,i);return e.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(e){return Math.abs(e)\n')}},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})},toClipPathSVG:function(e){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})},_createBaseClipPathSVGMarkup:function(e,t){var i=(t=t||{}).reviver,r=t.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),o=e.indexOf("COMMON_PARTS");return e[o]=n,i?i(e.join("")):e.join("")},_createBaseSVGMarkup:function(e,t){var i,r,n=(t=t||{}).noStyle,o=t.reviver,s=n?"":'style="'+this.getSvgStyles()+'" ',a=t.withShadow?'style="'+this.getSvgFilter()+'" ':"",l=this.clipPath,h=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=l&&l.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],_=e.indexOf("COMMON_PARTS"),p=t.additionalTransform;return l&&(l.clipPathId="CLIPPATH_"+T.Object.__uid++,r='\n'+l.toClipPathSVG(o)+"\n"),c&&g.push("\n"),g.push("\n"),i=[s,h,n?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),e[_]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),l&&g.push(r),g.push(e.join("")),g.push("\n"),c&&g.push("\n"),o?o(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var e=T.util.object.extend,t="stateProperties";function i(t,i,r){var n={};r.forEach((function(e){n[e]=t[e]})),e(t[i],n,!0)}function r(e,t,i){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(var n=0,o=e.length;n=0;l--)if(n=a[l],this.isControlVisible(n)&&(r=this._getImageLines(t?this.oCoords[n].touchCorner:this.oCoords[n].corner),0!==(i=this._findCrossPoints({x:o,y:s},r))&&i%2==1))return this.__corner=n,n;return!1},forEachControl:function(e){for(var t in this.controls)e(this.controls[t],t,this)},_setCornerCoords:function(){var e=this.oCoords;for(var t in e){var i=this.controls[t];e[t].corner=i.calcCornerCoords(this.angle,this.cornerSize,e[t].x,e[t].y,!1),e[t].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,e[t].x,e[t].y,!0)}},drawSelectionBackground:function(t){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;t.save();var i=this.getCenterPoint(),r=this._calculateCurrentDimensions(),n=this.canvas.viewportTransform;return t.translate(i.x,i.y),t.scale(1/n[0],1/n[3]),t.rotate(e(this.angle)),t.fillStyle=this.selectionBackgroundColor,t.fillRect(-r.x/2,-r.y/2,r.x,r.y),t.restore(),this},drawBorders:function(e,t){t=t||{};var i=this._calculateCurrentDimensions(),r=this.borderScaleFactor,n=i.x+r,o=i.y+r,s=void 0!==t.hasControls?t.hasControls:this.hasControls,a=!1;return e.save(),e.strokeStyle=t.borderColor||this.borderColor,this._setLineDash(e,t.borderDashArray||this.borderDashArray),e.strokeRect(-n/2,-o/2,n,o),s&&(e.beginPath(),this.forEachControl((function(t,i,r){t.withConnection&&t.getVisibility(r,i)&&(a=!0,e.moveTo(t.x*n,t.y*o),e.lineTo(t.x*n+t.offsetX,t.y*o+t.offsetY))})),a&&e.stroke()),e.restore(),this},drawBordersInGroup:function(e,t,i){i=i||{};var r=T.util.sizeAfterTransform(this.width,this.height,t),n=this.strokeWidth,o=this.strokeUniform,s=this.borderScaleFactor,a=r.x+n*(o?this.canvas.getZoom():t.scaleX)+s,l=r.y+n*(o?this.canvas.getZoom():t.scaleY)+s;return e.save(),this._setLineDash(e,i.borderDashArray||this.borderDashArray),e.strokeStyle=i.borderColor||this.borderColor,e.strokeRect(-a/2,-l/2,a,l),e.restore(),this},drawControls:function(e,t){t=t||{},e.save();var i,r,n=this.canvas.getRetinaScaling();return e.setTransform(n,0,0,n,0,0),e.strokeStyle=e.fillStyle=t.cornerColor||this.cornerColor,this.transparentCorners||(e.strokeStyle=t.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(e,t.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(n,o,s){r=s.oCoords[o],n.getVisibility(s,o)&&(i&&(r=T.util.transformPoint(r,i)),n.render(e,r.x,r.y,t,s))})),e.restore(),this},isControlVisible:function(e){return this.controls[e]&&this.controls[e].getVisibility(this,e)},setControlVisible:function(e,t){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[e]=t,this},setControlsVisibility:function(e){for(var t in e||(e={}),e)this.setControlVisible(t,e[t]);return this},onDeselect:function(){},onSelect:function(){}})}(),T.util.object.extend(T.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,o=this;return T.util.animate({target:this,startValue:e.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),o.requestRenderAll(),n()},onComplete:function(){e.setCoords(),r()}})},fxCenterObjectV:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,o=this;return T.util.animate({target:this,startValue:e.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),o.requestRenderAll(),n()},onComplete:function(){e.setCoords(),r()}})},fxRemove:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,o=this;return T.util.animate({target:this,startValue:e.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(t){e.set("opacity",t),o.requestRenderAll(),n()},onComplete:function(){o.remove(e),r()}})}}),T.util.object.extend(T.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var e,t,i=[],r=[];for(e in arguments[0])i.push(e);for(var n=0,o=i.length;n-1||n&&o.colorProperties.indexOf(n[1])>-1,a=n?this.get(n[0])[n[1]]:this.get(e);"from"in i||(i.from=a),s||(t=~t.indexOf("=")?a+parseFloat(t.replace("=","")):parseFloat(t));var l={target:this,startValue:i.from,endValue:t,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(e,t,r){return i.abort.call(o,e,t,r)},onChange:function(t,s,a){n?o[n[0]][n[1]]=t:o.set(e,t),r||i.onChange&&i.onChange(t,s,a)},onComplete:function(e,t,n){r||(o.setCoords(),i.onComplete&&i.onComplete(e,t,n))}};return s?T.util.animateColor(l.startValue,l.endValue,l.duration,l):T.util.animate(l)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.object.clone,n={x1:1,x2:1,y1:1,y2:1};function o(e,t){var i=e.origin,r=e.axis1,n=e.axis2,o=e.dimension,s=t.nearest,a=t.center,l=t.farthest;return function(){switch(this.get(i)){case s:return Math.min(this.get(r),this.get(n));case a:return Math.min(this.get(r),this.get(n))+.5*this.get(o);case l:return Math.max(this.get(r),this.get(n))}}}t.Line?t.warn("fabric.Line is already defined"):(t.Line=t.util.createClass(t.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:t.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(e,t){e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in e?e.left:this._getLeftToOriginX(),this.top="top"in e?e.top:this._getTopToOriginY()},_set:function(e,t){return this.callSuper("_set",e,t),void 0!==n[e]&&this._setWidthHeight(),this},_getLeftToOriginX:o({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:o({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(e){e.beginPath();var t=this.calcLinePoints();e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2),e.lineWidth=this.strokeWidth;var i=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this.stroke&&this._renderStroke(e),e.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(e){return i(this.callSuper("toObject",e),this.calcLinePoints())},_getNonTransformedDimensions:function(){var e=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(e.y-=this.strokeWidth),0===this.height&&(e.x-=this.strokeWidth)),e},calcLinePoints:function(){var e=this.x1<=this.x2?-1:1,t=this.y1<=this.y2?-1:1,i=e*this.width*.5,r=t*this.height*.5;return{x1:i,x2:e*this.width*-.5,y1:r,y2:t*this.height*-.5}},_toSVG:function(){var e=this.calcLinePoints();return["\n']}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r,n){n=n||{};var o=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[o.x1||0,o.y1||0,o.x2||0,o.y2||0];r(new t.Line(s,i(o,n)))},t.Line.fromObject=function(e,i){var n=r(e,!0);n.points=[e.x1,e.y1,e.x2,e.y2],t.Object._fromObject("Line",n,(function(e){delete e.points,i&&i(e)}),"points")})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.degreesToRadians;t.Circle?t.warn("fabric.Circle is already defined."):(t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:t.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(e,t){return this.callSuper("_set",e,t),"radius"===e&&this.setRadius(t),this},toObject:function(e){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(e))},_toSVG:function(){var e,r=(this.endAngle-this.startAngle)%360;if(0===r)e=["\n'];else{var n=i(this.startAngle),o=i(this.endAngle),s=this.radius;e=['180?"1":"0")+" 1"," "+t.util.cos(o)*s+" "+t.util.sin(o)*s,'" ',"COMMON_PARTS"," />\n"]}return e},_render:function(e){e.beginPath(),e.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){return this.radius=e,this.set("width",2*e).set("height",2*e)}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,i){var r,n=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=n)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");n.left=(n.left||0)-n.radius,n.top=(n.top||0)-n.radius,i(new t.Circle(n))},t.Circle.fromObject=function(e,i){t.Object._fromObject("Circle",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={});t.Triangle?t.warn("fabric.Triangle is already defined"):(t.Triangle=t.util.createClass(t.Object,{type:"triangle",width:100,height:100,_render:function(e){var t=this.width/2,i=this.height/2;e.beginPath(),e.moveTo(-t,i),e.lineTo(0,-i),e.lineTo(t,i),e.closePath(),this._renderPaintInOrder(e)},_toSVG:function(){var e=this.width/2,t=this.height/2;return["']}}),t.Triangle.fromObject=function(e,i){return t.Object._fromObject("Triangle",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=2*Math.PI;t.Ellipse?t.warn("fabric.Ellipse is already defined."):(t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this.set("rx",e&&e.rx||0),this.set("ry",e&&e.ry||0)},_set:function(e,t){switch(this.callSuper("_set",e,t),e){case"rx":this.rx=t,this.set("width",2*t);break;case"ry":this.ry=t,this.set("height",2*t)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["\n']},_render:function(e){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(0,0,this.rx,0,i,!1),e.restore(),this._renderPaintInOrder(e)}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,i){var r=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,i(new t.Ellipse(r))},t.Ellipse.fromObject=function(e,i){t.Object._fromObject("Ellipse",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend;t.Rect?t.warn("fabric.Rect is already defined"):(t.Rect=t.util.createClass(t.Object,{stateProperties:t.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,o=-this.width/2,s=-this.height/2,a=0!==t||0!==i,l=.4477152502;e.beginPath(),e.moveTo(o+t,s),e.lineTo(o+r-t,s),a&&e.bezierCurveTo(o+r-l*t,s,o+r,s+l*i,o+r,s+i),e.lineTo(o+r,s+n-i),a&&e.bezierCurveTo(o+r,s+n-l*i,o+r-l*t,s+n,o+r-t,s+n),e.lineTo(o+t,s+n),a&&e.bezierCurveTo(o+l*t,s+n,o,s+n-l*i,o,s+n-i),e.lineTo(o,s+i),a&&e.bezierCurveTo(o,s+l*i,o+l*t,s,o+t,s),e.closePath(),this._renderPaintInOrder(e)},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["\n']}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r,n){if(!e)return r(null);n=n||{};var o=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);o.left=o.left||0,o.top=o.top||0,o.height=o.height||0,o.width=o.width||0;var s=new t.Rect(i(n?t.util.object.clone(n):{},o));s.visible=s.visible&&s.width>0&&s.height>0,r(s)},t.Rect.fromObject=function(e,i){return t.Object._fromObject("Rect",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.array.min,n=t.util.array.max,o=t.util.toFixed,s=t.util.projectStrokeOnPoints;t.Polyline?t.warn("fabric.Polyline is already defined"):(t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:t.Object.prototype.cacheProperties.concat("points"),initialize:function(e,t){t=t||{},this.points=e||[],this.callSuper("initialize",t),this._setPositionDimensions(t)},_projectStrokeOnPoints:function(){return s(this.points,this,!0)},_setPositionDimensions:function(e){var t,i=this._calcDimensions(e),r=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-r,this.height=i.height-r,e.fromSVG||(t=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+r/2,y:i.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),void 0===e.left&&(this.left=e.fromSVG?i.left:t.x),void 0===e.top&&(this.top=e.fromSVG?i.top:t.y),this.pathOffset={x:i.left+this.width/2+r/2,y:i.top+this.height/2+r/2}},_calcDimensions:function(){var e=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,t=r(e,"x")||0,i=r(e,"y")||0;return{left:t,top:i,width:(n(e,"x")||0)-t,height:(n(e,"y")||0)-i}},toObject:function(e){return i(this.callSuper("toObject",e),{points:this.points.concat()})},_toSVG:function(){for(var e=[],i=this.pathOffset.x,r=this.pathOffset.y,n=t.Object.NUM_FRACTION_DIGITS,s=0,a=this.points.length;s\n']},commonRender:function(e){var t,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;e.beginPath(),e.moveTo(this.points[0].x-r,this.points[0].y-n);for(var o=0;o"},toObject:function(e){return n(this.callSuper("toObject",e),{path:this.path.map((function(e){return e.slice()}))})},toDatalessObject:function(e){var t=this.toObject(["sourcePath"].concat(e));return t.sourcePath&&delete t.path,t},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var e=t.Object.NUM_FRACTION_DIGITS;return" translate("+s(-this.pathOffset.x,e)+", "+s(-this.pathOffset.y,e)+")"},toClipPathSVG:function(e){var t=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},toSVG:function(e){var t=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var e,n,o=[],s=[],a=0,l=0,h=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(e){var i=!!this.group;return this._restoreObjectsState(),t.util.resetObjectTransform(this),e&&(i&&t.util.removeTransformFromObject(e,this.group.calcTransformMatrix()),this._objects.push(e),e.group=this,e._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),t.util.resetObjectTransform(this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(e){this.dirty=!0,e.group=this,e._set("canvas",this.canvas)},_onObjectRemoved:function(e){this.dirty=!0,delete e.group},_set:function(e,i){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(e,i);if("canvas"===e)for(;r--;)this._objects[r]._set(e,i);t.Object.prototype._set.call(this,e,i)},toObject:function(e){var i=this.includeDefaultValues,r=this._objects.filter((function(e){return!e.excludeFromExport})).map((function(t){var r=t.includeDefaultValues;t.includeDefaultValues=i;var n=t.toObject(e);return t.includeDefaultValues=r,n})),n=t.Object.prototype.toObject.call(this,e);return n.objects=r,n},toDatalessObject:function(e){var i,r=this.sourcePath;if(r)i=r;else{var n=this.includeDefaultValues;i=this._objects.map((function(t){var i=t.includeDefaultValues;t.includeDefaultValues=n;var r=t.toDatalessObject(e);return t.includeDefaultValues=i,r}))}var o=t.Object.prototype.toDatalessObject.call(this,e);return o.objects=i,o},render:function(e){this._transformDone=!0,this.callSuper("render",e),this._transformDone=!1},shouldCache:function(){var e=t.Object.prototype.shouldCache.call(this);if(e)for(var i=0,r=this._objects.length;i\n"],i=0,r=this._objects.length;i\n"),t},getSvgStyles:function(){var e=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",t=this.visible?"":" visibility: hidden;";return[e,this.getSvgFilter(),t].join("")},toClipPathSVG:function(e){for(var t=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(e,t,i){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",e,t),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),s=' clip-path="url(#imageCrop_'+l+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var h=this.fill;this.fill=null,e=["\t\n'],this.fill=h}return"fill"!==this.paintFirst?t.concat(e,i):t.concat(i,e)},getSrc:function(e){var t=e?this._element:this._originalElement;return t?t.toDataURL?t.toDataURL():this.srcFromAttribute?t.getAttribute("src"):t.src:this.src||""},setSrc:function(e,t,i){return T.util.loadImage(e,(function(e,r){this.setElement(e,i),this._setWidthHeight(),t&&t(this,r)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var e=this.resizeFilter,t=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,o=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!e||r>t&&n>t)return this._element=o,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=n);T.filterBackend||(T.filterBackend=T.initFilterBackend());var s=T.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,l=o.width,h=o.height;s.width=l,s.height=h,this._element=s,this._lastScaleX=e.scaleX=r,this._lastScaleY=e.scaleY=n,T.filterBackend.applyFilters([e],o,l,h,this._element,a),this._filterScalingX=s.width/this._originalElement.width,this._filterScalingY=s.height/this._originalElement.height},applyFilters:function(e){if(e=(e=e||this.filters||[]).filter((function(e){return e&&!e.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===e.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var t=this._originalElement,i=t.naturalWidth||t.width,r=t.naturalHeight||t.height;if(this._element===this._originalElement){var n=T.util.createCanvasElement();n.width=i,n.height=r,this._element=n,this._filteredEl=n}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,r),this._lastScaleX=1,this._lastScaleY=1;return T.filterBackend||(T.filterBackend=T.initFilterBackend()),T.filterBackend.applyFilters(e,this._originalElement,i,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(e){T.util.setImageSmoothing(e,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(e),this._renderPaintInOrder(e)},drawCacheOnCanvas:function(e){T.util.setImageSmoothing(e,this.imageSmoothing),T.Object.prototype.drawCacheOnCanvas.call(this,e)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(e){var t=this._element;if(t){var i=this._filterScalingX,r=this._filterScalingY,n=this.width,o=this.height,s=Math.min,a=Math.max,l=a(this.cropX,0),h=a(this.cropY,0),c=t.naturalWidth||t.width,u=t.naturalHeight||t.height,d=l*i,f=h*r,g=s(n*i,c-d),_=s(o*r,u-f),p=-n/2,m=-o/2,v=s(n,c/i-l),y=s(o,u/r-h);t&&e.drawImage(t,d,f,g,_,p,m,v,y)}},_needsResize:function(){var e=this.getTotalObjectScaling();return e.scaleX!==this._lastScaleX||e.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(e,t){this.setElement(T.util.getById(e),t),T.util.addClass(this.getElement(),T.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e&&e.length?T.util.enlivenObjects(e,(function(e){t&&t(e)}),"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){e||(e={});var t=this.getElement();this.width=e.width||t.naturalWidth||t.width||0,this.height=e.height||t.naturalHeight||t.height||0},parsePreserveAspectRatioAttribute:function(){var e,t=T.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,r=this._element.height,n=1,o=1,s=0,a=0,l=0,h=0,c=this.width,u=this.height,d={width:c,height:u};return!t||"none"===t.alignX&&"none"===t.alignY?(n=c/i,o=u/r):("meet"===t.meetOrSlice&&(e=(c-i*(n=o=T.util.findScaleToFit(this._element,d)))/2,"Min"===t.alignX&&(s=-e),"Max"===t.alignX&&(s=e),e=(u-r*o)/2,"Min"===t.alignY&&(a=-e),"Max"===t.alignY&&(a=e)),"slice"===t.meetOrSlice&&(e=i-c/(n=o=T.util.findScaleToCover(this._element,d)),"Mid"===t.alignX&&(l=e/2),"Max"===t.alignX&&(l=e),e=r-u/o,"Mid"===t.alignY&&(h=e/2),"Max"===t.alignY&&(h=e),i=c/n,r=u/o)),{width:i,height:r,scaleX:n,scaleY:o,offsetLeft:s,offsetTop:a,cropX:l,cropY:h}}}),T.Image.CSS_CANVAS="canvas-img",T.Image.prototype.getSvgSrc=T.Image.prototype.getSrc,T.Image.fromObject=function(e,t){var i=T.util.object.clone(e);T.util.loadImage(i.src,(function(e,r){r?t&&t(null,!0):T.Image.prototype._initFilters.call(i,i.filters,(function(r){i.filters=r||[],T.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(r){i.resizeFilter=r[0],T.util.enlivenObjectEnlivables(i,i,(function(){var r=new T.Image(e,i);t(r,!1)}))}))}))}),null,i.crossOrigin)},T.Image.fromURL=function(e,t,i){T.util.loadImage(e,(function(e,r){t&&t(new T.Image(e,i),r)}),null,i&&i.crossOrigin)},T.Image.ATTRIBUTE_NAMES=T.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),T.Image.fromElement=function(e,i,r){var n=T.parseAttributes(e,T.Image.ATTRIBUTE_NAMES);T.Image.fromURL(n["xlink:href"],i,t(r?T.util.object.clone(r):{},n))})}(t),T.util.object.extend(T.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.angle%360;return e>0?90*Math.round((e-1)/90):90*Math.round(e/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(e){var t=function(){},i=(e=e||{}).onComplete||t,r=e.onChange||t,n=this;return T.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){n.rotate(e),r()},onComplete:function(){n.setCoords(),i()}})}}),T.util.object.extend(T.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function e(e,t){var i="precision "+t+" float;\nvoid main(){}",r=e.createShader(e.FRAGMENT_SHADER);return e.shaderSource(r,i),e.compileShader(r),!!e.getShaderParameter(r,e.COMPILE_STATUS)}function t(e){e&&e.tileSize&&(this.tileSize=e.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}T.isWebglSupported=function(t){if(T.isLikelyNode)return!1;t=t||T.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),r=i.getContext("webgl")||i.getContext("experimental-webgl"),n=!1;if(r){T.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),n=T.maxTextureSize>=t;for(var o=["highp","mediump","lowp"],s=0;s<3;s++)if(e(r,o[s])){T.webGlPrecision=o[s];break}}return this.isSupported=n,n},T.WebglFilterBackend=t,t.prototype={tileSize:2048,resources:{},setupGLContext:function(e,t){this.dispose(),this.createWebGLCanvas(e,t),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(e,t)},chooseFastestCopyGLTo2DMethod:function(e,t){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(e){i=!1}var n="undefined"!=typeof ArrayBuffer,o="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&o){var s=T.util.createCanvasElement(),a=new ArrayBuffer(e*t*4);if(T.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=A);var l,h,c={imageBuffer:a,destinationWidth:e,destinationHeight:t,targetCanvas:s};s.width=e,s.height=t,l=window.performance.now(),E.call(c,this.gl,c),h=window.performance.now()-l,l=window.performance.now(),A.call(c,this.gl,c),h>window.performance.now()-l?(this.imageBuffer=a,this.copyGLTo2D=A):this.copyGLTo2D=E}},createWebGLCanvas:function(e,t){var i=T.util.createCanvasElement();i.width=e,i.height=t;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},n=i.getContext("webgl",r);n||(n=i.getContext("experimental-webgl",r)),n&&(n.clearColor(0,0,0,0),this.canvas=i,this.gl=n)},applyFilters:function(e,t,i,r,n,o){var s,a=this.gl;o&&(s=this.getCachedTexture(o,t));var l={originalWidth:t.width||t.originalWidth,originalHeight:t.height||t.originalHeight,sourceWidth:i,sourceHeight:r,destinationWidth:i,destinationHeight:r,context:a,sourceTexture:this.createTexture(a,i,r,!s&&t),targetTexture:this.createTexture(a,i,r),originalTexture:s||this.createTexture(a,i,r,!s&&t),passes:e.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:n},h=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,h),e.forEach((function(e){e&&e.applyTo(l)})),function(e){var t=e.targetCanvas,i=t.width,r=t.height,n=e.destinationWidth,o=e.destinationHeight;i===n&&r===o||(t.width=n,t.height=o)}(l),this.copyGLTo2D(a,l),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(l.sourceTexture),a.deleteTexture(l.targetTexture),a.deleteFramebuffer(h),n.getContext("2d").setTransform(1,0,0,1,0,0),l},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(e,t,i,r){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),r?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t,i,0,e.RGBA,e.UNSIGNED_BYTE,null),n},getCachedTexture:function(e,t){if(this.textureCache[e])return this.textureCache[e];var i=this.createTexture(this.gl,t.width,t.height,t);return this.textureCache[e]=i,i},evictCachesForKey:function(e){this.textureCache[e]&&(this.gl.deleteTexture(this.textureCache[e]),delete this.textureCache[e])},copyGLTo2D:E,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var e=this.gl,t={renderer:"",vendor:""};if(!e)return t;var i=e.getExtension("WEBGL_debug_renderer_info");if(i){var r=e.getParameter(i.UNMASKED_RENDERER_WEBGL),n=e.getParameter(i.UNMASKED_VENDOR_WEBGL);r&&(t.renderer=r.toLowerCase()),n&&(t.vendor=n.toLowerCase())}return this.gpuInfo=t,t}}}(),function(){var e=function(){};function t(){}T.Canvas2dFilterBackend=t,t.prototype={evictCachesForKey:e,dispose:e,clearWebGLCaches:e,resources:{},applyFilters:function(e,t,i,r,n){var o=n.getContext("2d");o.drawImage(t,0,0,i,r);var s={sourceWidth:i,sourceHeight:r,imageData:o.getImageData(0,0,i,r),originalEl:t,originalImageData:o.getImageData(0,0,i,r),canvasEl:n,ctx:o,filterBackend:this};return e.forEach((function(e){e.applyTo(s)})),s.imageData.width===i&&s.imageData.height===r||(n.width=s.imageData.width,n.height=s.imageData.height),o.putImageData(s.imageData,0,0),s}}}(),T.Image=T.Image||{},T.Image.filters=T.Image.filters||{},T.Image.filters.BaseFilter=T.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(e){e&&this.setOptions(e)},setOptions:function(e){for(var t in e)this[t]=e[t]},createProgram:function(e,t,i){t=t||this.fragmentSource,i=i||this.vertexSource,"highp"!==T.webGlPrecision&&(t=t.replace(/precision highp float/g,"precision "+T.webGlPrecision+" float"));var r=e.createShader(e.VERTEX_SHADER);if(e.shaderSource(r,i),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+e.getShaderInfoLog(r));var n=e.createShader(e.FRAGMENT_SHADER);if(e.shaderSource(n,t),e.compileShader(n),!e.getShaderParameter(n,e.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+e.getShaderInfoLog(n));var o=e.createProgram();if(e.attachShader(o,r),e.attachShader(o,n),e.linkProgram(o),!e.getProgramParameter(o,e.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+e.getProgramInfoLog(o));var s=this.getAttributeLocations(e,o),a=this.getUniformLocations(e,o)||{};return a.uStepW=e.getUniformLocation(o,"uStepW"),a.uStepH=e.getUniformLocation(o,"uStepH"),{program:o,attributeLocations:s,uniformLocations:a}},getAttributeLocations:function(e,t){return{aPosition:e.getAttribLocation(t,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(e,t,i){var r=t.aPosition,n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.enableVertexAttribArray(r),e.vertexAttribPointer(r,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,i,e.STATIC_DRAW)},_setupFrameBuffer:function(e){var t,i,r=e.context;e.passes>1?(t=e.destinationWidth,i=e.destinationHeight,e.sourceWidth===t&&e.sourceHeight===i||(r.deleteTexture(e.targetTexture),e.targetTexture=e.filterBackend.createTexture(r,t,i)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(e){e.passes--,e.pass++;var t=e.targetTexture;e.targetTexture=e.sourceTexture,e.sourceTexture=t},isNeutralState:function(){var e=this.mainParameter,t=T.Image.filters[this.type].prototype;if(e){if(Array.isArray(t[e])){for(var i=t[e].length;i--;)if(this[e][i]!==t[e][i])return!1;return!0}return t[e]===this[e]}return!1},applyTo:function(e){e.webgl?(this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)},retrieveShader:function(e){return e.programCache.hasOwnProperty(this.type)||(e.programCache[this.type]=this.createProgram(e.context)),e.programCache[this.type]},applyToWebGL:function(e){var t=e.context,i=this.retrieveShader(e);0===e.pass&&e.originalTexture?t.bindTexture(t.TEXTURE_2D,e.originalTexture):t.bindTexture(t.TEXTURE_2D,e.sourceTexture),t.useProgram(i.program),this.sendAttributeData(t,i.attributeLocations,e.aPosition),t.uniform1f(i.uniformLocations.uStepW,1/e.sourceWidth),t.uniform1f(i.uniformLocations.uStepH,1/e.sourceHeight),this.sendUniformData(t,i.uniformLocations),t.viewport(0,0,e.destinationWidth,e.destinationHeight),t.drawArrays(t.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(e,t,i){e.activeTexture(i),e.bindTexture(e.TEXTURE_2D,t),e.activeTexture(e.TEXTURE0)},unbindAdditionalTexture:function(e,t){e.activeTexture(t),e.bindTexture(e.TEXTURE_2D,null),e.activeTexture(e.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(e){this[this.mainParameter]=e},sendUniformData:function(){},createHelpLayer:function(e){if(!e.helpLayer){var t=document.createElement("canvas");t.width=e.sourceWidth,t.height=e.sourceHeight,e.helpLayer=t}},toObject:function(){var e={type:this.type},t=this.mainParameter;return t&&(e[t]=this[t]),e},toJSON:function(){return this.toObject()}}),T.Image.filters.BaseFilter.fromObject=function(e,t){var i=new T.Image.filters[e.type](e);return t&&t(i),i},function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.ColorMatrix=r(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(e){this.callSuper("initialize",e),this.matrix=this.matrix.slice(0)},applyTo2d:function(e){var t,i,r,n,o,s=e.imageData.data,a=s.length,l=this.matrix,h=this.colorsOnly;for(o=0;o=S||s<0||s>=y||(l=4*(a*y+s),h=p[f*m+d],t+=_[l]*h,i+=_[l+1]*h,r+=_[l+2]*h,w||(n+=_[l+3]*h));C[o]=t,C[o+1]=i,C[o+2]=r,C[o+3]=w?_[o+3]:n}e.imageData=b},getUniformLocations:function(e,t){return{uMatrix:e.getUniformLocation(t,"uMatrix"),uOpaque:e.getUniformLocation(t,"uOpaque"),uHalfSize:e.getUniformLocation(t,"uHalfSize"),uSize:e.getUniformLocation(t,"uSize")}},sendUniformData:function(e,t){e.uniform1fv(t.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Grayscale=r(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(e){var t,i,r=e.imageData.data,n=r.length,o=this.mode;for(t=0;th[0]&&n>h[1]&&o>h[2]&&r 0.0) {\n"+this.fragmentSource[e]+"}\n}"},retrieveShader:function(e){var t,i=this.type+"_"+this.mode;return e.programCache.hasOwnProperty(i)||(t=this.buildSource(this.mode),e.programCache[i]=this.createProgram(e.context,t)),e.programCache[i]},applyTo2d:function(e){var i,r,n,o,s,a,l,h=e.imageData.data,c=h.length,u=1-this.alpha;i=(l=new t.Color(this.color).getSource())[0]*this.alpha,r=l[1]*this.alpha,n=l[2]*this.alpha;for(var d=0;d=e||t<=-e)return 0;if(t<1.1920929e-7&&t>-1.1920929e-7)return 1;var i=(t*=Math.PI)/e;return a(t)/t*a(i)/i}},applyTo2d:function(e){var t=e.imageData,i=this.scaleX,r=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/r;var n,o=t.width,a=t.height,l=s(o*i),h=s(a*r);"sliceHack"===this.resizeType?n=this.sliceByTwo(e,o,a,l,h):"hermite"===this.resizeType?n=this.hermiteFastResize(e,o,a,l,h):"bilinear"===this.resizeType?n=this.bilinearFiltering(e,o,a,l,h):"lanczos"===this.resizeType&&(n=this.lanczosResize(e,o,a,l,h)),e.imageData=n},sliceByTwo:function(e,i,n,o,s){var a,l,h=e.imageData,c=.5,u=!1,d=!1,f=i*c,g=n*c,_=t.filterBackend.resources,p=0,m=0,v=i,y=0;for(_.sliceByTwo||(_.sliceByTwo=document.createElement("canvas")),((a=_.sliceByTwo).width<1.5*i||a.height=t)){M=r(1e3*o(T-b.x)),S[M]||(S[M]={});for(var P=C.y-y;P<=C.y+y;P++)P<0||P>=s||(L=r(1e3*o(P-b.y)),S[M][L]||(S[M][L]=f(n(i(M*p,2)+i(L*m,2))/1e3)),(x=S[M][L])>0&&(A+=x,I+=x*c[E=4*(P*t+T)],O+=x*c[E+1],R+=x*c[E+2],D+=x*c[E+3]))}d[E=4*(w*a+l)]=I/A,d[E+1]=O/A,d[E+2]=R/A,d[E+3]=D/A}return++l1&&L<-1||(y=2*L*L*L-3*L*L+1)>0&&(x+=y*f[3+(M=4*(D+A*t))],b+=y,f[M+3]<255&&(y=y*f[M+3]/250),C+=y*f[M],w+=y*f[M+1],T+=y*f[M+2],S+=y)}_[v]=C/S,_[v+1]=w/S,_[v+2]=T/S,_[v+3]=x/b}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),t.Image.filters.Resize.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Contrast=r(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(e){if(0!==this.contrast){var t,i=e.imageData.data,r=i.length,n=Math.floor(255*this.contrast),o=259*(n+255)/(255*(259-n));for(t=0;t1&&(t=1/this.aspectRatio):this.aspectRatio<1&&(t=this.aspectRatio),e=t*this.blur*.12,this.horizontal?i[0]=e:i[1]=e,i}}),i.Blur.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Gamma=r(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(e){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,e)},applyTo2d:function(e){var t,i=e.imageData.data,r=this.gamma,n=i.length,o=1/r[0],s=1/r[1],a=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),t=0,n=256;t'},_getCacheCanvasDimensions:function(){var e=this.callSuper("_getCacheCanvasDimensions"),t=this.fontSize;return e.width+=t*e.zoomX,e.height+=t*e.zoomY,e},_render:function(e){var t=this.path;t&&!t.isNotVisible()&&t._render(e),this._setTextStyles(e),this._renderTextLinesBackground(e),this._renderTextDecoration(e,"underline"),this._renderText(e),this._renderTextDecoration(e,"overline"),this._renderTextDecoration(e,"linethrough")},_renderText:function(e){"stroke"===this.paintFirst?(this._renderTextStroke(e),this._renderTextFill(e)):(this._renderTextFill(e),this._renderTextStroke(e))},_setTextStyles:function(e,t,i){if(e.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":e.textBaseline="middle";break;case"ascender":e.textBaseline="top";break;case"descender":e.textBaseline="bottom"}e.font=this._getFontDeclaration(t,i)},calcTextWidth:function(){for(var e=this.getLineWidth(0),t=1,i=this._textLines.length;te&&(e=r)}return e},_renderTextLine:function(e,t,i,r,n,o){this._renderChars(e,t,i,r,n,o)},_renderTextLinesBackground:function(e){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var t,i,r,n,o,s,a,l=e.fillStyle,h=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,_=this._textLines.length;g<_;g++)if(t=this.getHeightOfLine(g),this.textBackgroundColor||this.styleHas("textBackgroundColor",g)){r=this._textLines[g],i=this._getLineLeftOffset(g),d=0,u=0,n=this.getValueOfPropertyAt(g,0,"textBackgroundColor");for(var p=0,m=r.length;p=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,o,s),u+=o.kernedWidth}return{width:l,numOfSpaces:0}},_setGraphemeOnPath:function(e,i,r){var n=e+i.kernedWidth/2,o=this.path,s=t.util.getPointOnPath(o.path,n,o.segmentsInfo);i.renderLeft=s.x-r.x,i.renderTop=s.y-r.y,i.angle=s.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(e,t,i,r,n){var o,s=this.getCompleteStyleDeclaration(t,i),a=r?this.getCompleteStyleDeclaration(t,i-1):{},l=this._measureChar(e,s,r,a),h=l.kernedWidth,c=l.width;0!==this.charSpacing&&(c+=o=this._getWidthOfCharSpacing(),h+=o);var u={width:c,left:0,height:s.fontSize,kernedWidth:h,deltaY:s.deltaY};if(i>0&&!n){var d=this.__charBounds[t][i-1];u.left=d.left+d.width+l.kernedWidth-l.width}return u},getHeightOfLine:function(e){if(this.__lineHeights[e])return this.__lineHeights[e];for(var t=this._textLines[e],i=this.getHeightOfChar(e,0),r=1,n=t.length;r0){var A=v+o+u;"rtl"===this.direction&&(A=this.width-A-d),h&&m&&(e.fillStyle=m,e.fillRect(A,c+C*r+s,d,this.fontSize/15)),u=f.left,d=f.width,h=g,m=p,r=n,s=a}else d+=f.kernedWidth;A=v+o+u,"rtl"===this.direction&&(A=this.width-A-d),e.fillStyle=p,g&&p&&e.fillRect(A,c+C*r+s,d-b,this.fontSize/15),y+=i}else y+=i;this._removeShadow(e)}},_getFontDeclaration:function(e,i){var r=e||this,n=this.fontFamily,o=t.Text.genericFonts.indexOf(n.toLowerCase())>-1,s=void 0===n||n.indexOf("'")>-1||n.indexOf(",")>-1||n.indexOf('"')>-1||o?r.fontFamily:'"'+r.fontFamily+'"';return[t.isLikelyNode?r.fontWeight:r.fontStyle,t.isLikelyNode?r.fontStyle:r.fontWeight,i?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",s].join(" ")},render:function(e){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",e)))},_splitTextIntoLines:function(e){for(var i=e.split(this._reNewline),r=new Array(i.length),n=["\n"],o=[],s=0;s-1&&(e.underline=!0),e.textDecoration.indexOf("line-through")>-1&&(e.linethrough=!0),e.textDecoration.indexOf("overline")>-1&&(e.overline=!0),delete e.textDecoration)}T.IText=T.util.createClass(T.Text,T.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(e,t){this.callSuper("initialize",e,t),this.initBehavior()},setSelectionStart:function(e){e=Math.max(e,0),this._updateAndFire("selectionStart",e)},setSelectionEnd:function(e){e=Math.min(e,this.text.length),this._updateAndFire("selectionEnd",e)},_updateAndFire:function(e,t){this[e]!==t&&(this._fireSelectionChanged(),this[e]=t),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(e){this.clearContextTop(),this.callSuper("render",e),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(e){this.callSuper("_render",e)},clearContextTop:function(e){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this.canvas.contextTop,i=this.canvas.viewportTransform;t.save(),t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(t),this._clearTextArea(t),e||t.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this._getCursorBoundaries(),t=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(e,t):this.renderSelection(e,t),t.restore()}},_clearTextArea:function(e){var t=this.width+4,i=this.height+4;e.clearRect(-t/2,-i/2,t,i)},_getCursorBoundaries:function(e){void 0===e&&(e=this.selectionStart);var t=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(e);return{left:t,top:i,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(e){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var t,i,r,n,o=0,s=0,a=this.get2DCursorLocation(e);r=a.charIndex,i=a.lineIndex;for(var l=0;l0?s:0)},"rtl"===this.direction&&(n.left*=-1),this.cursorOffsetCache=n,this.cursorOffsetCache},renderCursor:function(e,t){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex>0?i.charIndex-1:0,o=this.getValueOfPropertyAt(r,n,"fontSize"),s=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/s,l=e.topOffset,h=this.getValueOfPropertyAt(r,n,"deltaY");l+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-o*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(e,t),t.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,n,"fill"),t.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,t.fillRect(e.left+e.leftOffset-a/2,l+e.top+h,a,o)},renderSelection:function(e,t){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,n=-1!==this.textAlign.indexOf("justify"),o=this.get2DCursorLocation(i),s=this.get2DCursorLocation(r),a=o.lineIndex,l=s.lineIndex,h=o.charIndex<0?0:o.charIndex,c=s.charIndex<0?0:s.charIndex,u=a;u<=l;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),_=0,p=0;if(u===a&&(_=this.__charBounds[a][h].left),u>=a&&u1)&&(g/=this.lineHeight);var v=e.left+f+_,y=p-_,S=g,b=0;this.inCompositionMode?(t.fillStyle=this.compositionColor||"black",S=1,b=g):t.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),t.fillRect(v,e.top+e.topOffset+b,y,S),e.topOffset+=d}},getCurrentCharFontSize:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fontSize")},getCurrentCharColor:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fill")},_getCurrentCharIndex:function(){var e=this.get2DCursorLocation(this.selectionStart,!0),t=e.charIndex>0?e.charIndex-1:0;return{l:e.lineIndex,c:t}}}),T.IText.fromObject=function(t,i){if(e(t),t.styles)for(var r in t.styles)for(var n in t.styles[r])e(t.styles[r][n]);T.Object._fromObject("IText",t,i,"text")}}(),w=T.util.object.clone,T.util.object.extend(T.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var e=this;this.on("added",(function(){var t=e.canvas;t&&(t._hasITextHandlers||(t._hasITextHandlers=!0,e._initCanvasHandlers(t)),t._iTextInstances=t._iTextInstances||[],t._iTextInstances.push(e))}))},initRemovedHandler:function(){var e=this;this.on("removed",(function(){var t=e.canvas;t&&(t._iTextInstances=t._iTextInstances||[],T.util.removeFromArray(t._iTextInstances,e),0===t._iTextInstances.length&&(t._hasITextHandlers=!1,e._removeCanvasHandlers(t)))}))},_initCanvasHandlers:function(e){e._mouseUpITextHandler=function(){e._iTextInstances&&e._iTextInstances.forEach((function(e){e.__isMousedown=!1}))},e.on("mouse:up",e._mouseUpITextHandler)},_removeCanvasHandlers:function(e){e.off("mouse:up",e._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(e,t,i,r){var n;return n={isAborted:!1,abort:function(){this.isAborted=!0}},e.animate("_currentCursorOpacity",t,{duration:i,onComplete:function(){n.isAborted||e[r]()},onChange:function(){e.canvas&&e.selectionStart===e.selectionEnd&&e.renderCursorOrSelection()},abort:function(){return n.isAborted}}),n},_onTickComplete:function(){var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){e._currentTickCompleteState=e._animateCursor(e,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(e){var t=this,i=e?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){t._tick()}),i)},abortCursorAnimation:function(){var e=this._currentTickState||this._currentTickCompleteState,t=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,e&&t&&t.clearContext(t.contextTop||t.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(e){var t=0,i=e-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)t++,i--;for(;/\S/.test(this._text[i])&&i>-1;)t++,i--;return e-t},findWordBoundaryRight:function(e){var t=0,i=e;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)t++,i++;for(;/\S/.test(this._text[i])&&i-1;)t++,i--;return e-t},findLineBoundaryRight:function(e){for(var t=0,i=e;!/\n/.test(this._text[i])&&i0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=t):(this.selectionStart=t,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(e,t,i){var r=i.slice(0,e),n=T.util.string.graphemeSplit(r).length;if(e===t)return{selectionStart:n,selectionEnd:n};var o=i.slice(e,t);return{selectionStart:n,selectionEnd:n+T.util.string.graphemeSplit(o).length}},fromGraphemeToStringSelection:function(e,t,i){var r=i.slice(0,e).join("").length;return e===t?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(e,t).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var e=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=e.selectionStart,this.hiddenTextarea.selectionEnd=e.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var e=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=e.selectionEnd,this.inCompositionMode||(this.selectionStart=e.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var e=this._calcTextareaPosition();this.hiddenTextarea.style.left=e.left,this.hiddenTextarea.style.top=e.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var e=this.inCompositionMode?this.compositionStart:this.selectionStart,t=this._getCursorBoundaries(e),i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex,o=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,s=t.leftOffset,a=this.calcTransformMatrix(),l={x:t.left+s,y:t.top+t.topOffset+o},h=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/h,d=c.height/h,f=u-o,g=d-o,_=c.clientWidth/u,p=c.clientHeight/d;return l=T.util.transformPoint(l,a),(l=T.util.transformPoint(l,this.canvas.viewportTransform)).x*=_,l.y*=p,l.x<0&&(l.x=0),l.x>f&&(l.x=f),l.y<0&&(l.y=0),l.y>g&&(l.y=g),l.x+=this.canvas._offset.left,l.y+=this.canvas._offset.top,{left:l.x+"px",top:l.y+"px",fontSize:o+"px",charHeight:o}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var e=this._textBeforeEdit!==this.text,t=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,t&&(t.blur&&t.blur(),t.parentNode&&t.parentNode.removeChild(t)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),e&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),e&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var e in this.styles)this._textLines[e]||delete this.styles[e]},removeStyleFromTo:function(e,t){var i,r,n=this.get2DCursorLocation(e,!0),o=this.get2DCursorLocation(t,!0),s=n.lineIndex,a=n.charIndex,l=o.lineIndex,h=o.charIndex;if(s!==l){if(this.styles[s])for(i=a;i=h&&(r[c-d]=r[u],delete r[u])}},shiftLineStyles:function(e,t){var i=w(this.styles);for(var r in this.styles){var n=parseInt(r,10);n>e&&(this.styles[n+t]=i[n],i[n-t]||delete this.styles[n])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(e,t,i,r){var n,o={},s=!1,a=this._unwrappedTextLines[e].length===t;for(var l in i||(i=1),this.shiftLineStyles(e,i),this.styles[e]&&(n=this.styles[e][0===t?t:t-1]),this.styles[e]){var h=parseInt(l,10);h>=t&&(s=!0,o[h-t]=this.styles[e][l],a&&0===t||delete this.styles[e][l])}var c=!1;for(s&&!a&&(this.styles[e+i]=o,c=!0),c&&i--;i>0;)r&&r[i-1]?this.styles[e+i]={0:w(r[i-1])}:n?this.styles[e+i]={0:w(n)}:delete this.styles[e+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(e,t,i,r){this.styles||(this.styles={});var n=this.styles[e],o=n?w(n):{};for(var s in i||(i=1),o){var a=parseInt(s,10);a>=t&&(n[a+i]=o[a],o[a-i]||delete n[a])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[e]||(this.styles[e]={}),this.styles[e][t+i]=w(r[i]));else if(n)for(var l=n[t?t-1:1];l&&i--;)this.styles[e][t+i]=w(l)},insertNewStyleBlock:function(e,t,i){for(var r=this.get2DCursorLocation(t,!0),n=[0],o=0,s=0;s0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,n[0],i),i=i&&i.slice(n[0]+1)),o&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+n[0],o),s=1;s0?this.insertCharStyleObject(r.lineIndex+s,0,n[s],i):i&&this.styles[r.lineIndex+s]&&i[0]&&(this.styles[r.lineIndex+s][0]=i[0]),i=i&&i.slice(n[s]+1);n[s]>0&&this.insertCharStyleObject(r.lineIndex+s,0,n[s],i)},setSelectionStartEndWithShift:function(e,t,i){i<=e?(t===e?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=e),this.selectionStart=i):i>e&&ie?this.selectionStart=e:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>e?this.selectionEnd=e:this.selectionEnd<0&&(this.selectionEnd=0)}}),T.util.object.extend(T.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(e){if(this.canvas){this.__newClickTime=+new Date;var t=e.pointer;this.isTripleClick(t)&&(this.fire("tripleclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(e){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(e.e))},tripleClickHandler:function(e){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(e.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(e.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(e){if(this.__isMousedown=!1,!(!this.editable||this.group||e.transform&&e.transform.actionPerformed||e.e.button&&1!==e.e.button)){if(this.canvas){var t=this.canvas._activeObject;if(t&&t!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(e.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e),i=this.selectionStart,r=this.selectionEnd;e.shiftKey?this.setSelectionStartEndWithShift(i,r,t):(this.selectionStart=t,this.selectionEnd=t),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(e){for(var t,i=this.getLocalPointer(e),r=0,n=0,o=0,s=0,a=0,l=0,h=this._textLines.length;l0&&(s+=this._textLines[l-1].length+this.missingNewlineOffset(l-1));n=this._getLineLeftOffset(a)*this.scaleX,t=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+n);for(var c=0,u=t.length;co||s<0?0:1);return this.flipX&&(a=n-a),a>this._text.length&&(a=this._text.length),a}}),T.util.object.extend(T.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=T.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var e=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+e.top+"; left: "+e.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+e.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):T.document.body.appendChild(this.hiddenTextarea),T.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),T.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),T.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),T.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(T.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(e){if(this.isEditing){var t="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(e.keyCode in t)this[t[e.keyCode]](e);else{if(!(e.keyCode in this.ctrlKeysMapDown)||!e.ctrlKey&&!e.metaKey)return;this[this.ctrlKeysMapDown[e.keyCode]](e)}e.stopImmediatePropagation(),e.preventDefault(),e.keyCode>=33&&e.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(e){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:e.keyCode in this.ctrlKeysMapUp&&(e.ctrlKey||e.metaKey)&&(this[this.ctrlKeysMapUp[e.keyCode]](e),e.stopImmediatePropagation(),e.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(e){var t=this.fromPaste;if(this.fromPaste=!1,e&&e.stopPropagation(),this.isEditing){var i,r,n,o,s,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,l=this._text.length,h=a.length,c=h-l,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),_=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):h0&&(r+=(i=this.__charBounds[e][t-1]).left+i.width),r},getDownCursorOffset:function(e,t){var i=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(i),n=r.lineIndex;if(n===this._textLines.length-1||e.metaKey||34===e.keyCode)return this._text.length-i;var o=r.charIndex,s=this._getWidthBeforeCursor(n,o),a=this._getIndexOnLine(n+1,s);return this._textLines[n].slice(o).length+a+1+this.missingNewlineOffset(n)},_getSelectionForOffset:function(e,t){return e.shiftKey&&this.selectionStart!==this.selectionEnd&&t?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(e,t){var i=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||e.metaKey||33===e.keyCode)return-i;var o=r.charIndex,s=this._getWidthBeforeCursor(n,o),a=this._getIndexOnLine(n-1,s),l=this._textLines[n].slice(0,o),h=this.missingNewlineOffset(n-1);return-this._textLines[n-1].length+a-l.length+(1-h)},_getIndexOnLine:function(e,t){for(var i,r,n=this._textLines[e],o=this._getLineLeftOffset(e),s=0,a=0,l=n.length;at){r=!0;var h=o-i,c=o,u=Math.abs(h-t);s=Math.abs(c-t)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",e)},moveCursorUp:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",e)},_moveCursorUpOrDown:function(e,t){var i=this["get"+e+"CursorOffset"](t,"right"===this._selectionDirection);t.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(e){var t="left"===this._selectionDirection?this.selectionStart+e:this.selectionEnd+e;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,t),0!==e},moveCursorWithoutShift:function(e){return e<0?(this.selectionStart+=e,this.selectionEnd=this.selectionStart):(this.selectionEnd+=e,this.selectionStart=this.selectionEnd),0!==e},moveCursorLeft:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",e)},_move:function(e,t,i){var r;if(e.altKey)r=this["findWordBoundary"+i](this[t]);else{if(!e.metaKey&&35!==e.keyCode&&36!==e.keyCode)return this[t]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[t])}if(void 0!==typeof r&&this[t]!==r)return this[t]=r,!0},_moveLeft:function(e,t){return this._move(e,t,"Left")},_moveRight:function(e,t){return this._move(e,t,"Right")},moveCursorLeftWithoutShift:function(e){var t=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(t=this._moveLeft(e,"selectionStart")),this.selectionEnd=this.selectionStart,t},moveCursorLeftWithShift:function(e){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(e,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(e,"selectionStart")):void 0},moveCursorRight:function(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",e)},_moveCursorLeftOrRight:function(e,t){var i="moveCursor"+e+"With";this._currentCursorOpacity=1,t.shiftKey?i+="Shift":i+="outShift",this[i](t)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(e){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(e,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(e){var t=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(t=this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,t},removeChars:function(e,t){void 0===t&&(t=e+1),this.removeStyleFromTo(e,t),this._text.splice(e,t-e),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(e,t,i,r){void 0===r&&(r=i),r>i&&this.removeStyleFromTo(i,r);var n=T.util.string.graphemeSplit(e);this.insertNewStyleBlock(n,i,t),this._text=[].concat(this._text.slice(0,i),n,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var e=T.util.toFixed,t=/ +/g;T.util.object.extend(T.Text.prototype,{_toSVG:function(){var e=this._getSVGLeftTopOffsets(),t=this._getSVGTextAndBg(e.textTop,e.textLeft);return this._wrapSVGTextAndBg(t)},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(e){var t=this.getSvgTextDecoration(this);return[e.textBgRects.join(""),'\t\t",e.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(e,t){var i,r=[],n=[],o=e;this._setSVGBg(n);for(var s=0,a=this._textLines.length;s",T.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(e,t,i,r){var n,o,s,a,l,h=this.getHeightOfLine(t),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[t];r+=h*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,_=f.length-1;g<=_;g++)l=g===_||this.charSpacing,u+=f[g],s=this.__charBounds[t][g],0===d?(i+=s.kernedWidth-s.width,d+=s.width):d+=s.kernedWidth,c&&!l&&this._reSpaceAndTab.test(f[g])&&(l=!0),l||(n=n||this.getCompleteStyleDeclaration(t,g),o=this.getCompleteStyleDeclaration(t,g+1),l=this._hasStyleChangedForSvg(n,o)),l&&(a=this._getStyleDeclaration(t,g)||{},e.push(this._createTextCharSpan(u,a,i,r)),u="",n=o,i+=d,d=0)},_pushTextBgRect:function(t,i,r,n,o,s){var a=T.Object.NUM_FRACTION_DIGITS;t.push("\t\t\n')},_setSVGTextLineBg:function(e,t,i,r){for(var n,o,s=this._textLines[t],a=this.getHeightOfLine(t)/this.lineHeight,l=0,h=0,c=this.getValueOfPropertyAt(t,0,"textBackgroundColor"),u=0,d=s.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(e){for(var t=0,i=0,r=0,n={},o=0;o0?(i=0,r++,t++):!this.splitByGrapheme&&this._reSpaceAndTab.test(e.graphemeText[r])&&o>0&&(i++,r++),n[o]={line:t,offset:i},r+=e.graphemeLines[o].length,i+=e.graphemeLines[o].length;return n},styleHas:function(e,i){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[i];r&&(i=r.line)}return t.Text.prototype.styleHas.call(this,e,i)},isEmptyStyles:function(e){if(!this.styles)return!0;var t,i,r=0,n=!1,o=this._styleMap[e],s=this._styleMap[e+1];for(var a in o&&(e=o.line,r=o.offset),s&&(n=s.line===e,t=s.offset),i=void 0===e?this.styles:{line:this.styles[e]})for(var l in i[a])if(l>=r&&(!n||lr&&!p?(a.push(l),l=[],o=f,p=!0):o+=m,p||s||l.push(d),l=l.concat(c),g=s?0:this._measureWord([d],i,u),u++,p=!1,f>_&&(_=f);return v&&a.push(l),_+n>this.dynamicMinWidth&&(this.dynamicMinWidth=_-m+n),a},isEndOfWrapping:function(e){return!this._styleMap[e+1]||this._styleMap[e+1].line!==this._styleMap[e].line},missingNewlineOffset:function(e){return this.splitByGrapheme?this.isEndOfWrapping(e)?1:0:1},_splitTextIntoLines:function(e){for(var i=t.Text.prototype._splitTextIntoLines.call(this,e),r=this._wrapText(i.lines,this.width),n=new Array(r.length),o=0;o{},898:()=>{},245:()=>{}},P={};function F(e){var t=P[e];if(void 0!==t)return t.exports;var i=P[e]={exports:{}};return L[e](i,i.exports,F),i.exports}F.d=(e,t)=>{for(var i in t)F.o(t,i)&&!F.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},F.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var k={};(()=>{let e;F.d(k,{R:()=>e}),e="undefined"!=typeof document&&"undefined"!=typeof window?F(653).fabric:{version:"5.2.1"}})();var B=k.R; +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Dynamsoft=e.Dynamsoft||{},e.Dynamsoft.DBR={}))}(this,(function(e){"use strict";const t="undefined"==typeof self;let i,r,n,o,s;if("undefined"!=typeof navigator&&(i=navigator,r=i.userAgent,n=i.platform,o=i.mediaDevices),!t){const e={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(r)||this.searchVersion(i.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=r.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(e){for(let t=0;t{let e=!1;if(h)try{(await o.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===s.browser&&s.version>66||"Safari"===s.browser&&s.version>13||"OPR"===s.browser&&s.version>43||"Edge"===s.browser&&s.version;const u=(()=>{if(!t&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})(),d=" is not allowed to change after `createInstance` or `loadWasm` is called.",f=!t&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",g=!t&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",_=e=>{if(null==e)e=[];else{e=e instanceof Array?[...e]:[e];for(let i=0;ie&&"object"==typeof e&&"function"==typeof e.then;var b=function(){this.init()};b.prototype={init:function(){var e=this||C;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var t=this||C;if(e=parseFloat(e),t.ctx||R(),void 0!==e&&e>=0&&e<=1){if(t._volume=e,t._muted)return t;t.usingWebAudio&&t.masterGain.gain.setValueAtTime(e,C.ctx.currentTime);for(var i=0;i=0;t--)e._howls[t].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,R()),e},codecs:function(e){return(this||C)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||C;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||C,t=null;try{t="undefined"!=typeof Audio?new Audio:null}catch(t){return e}if(!t||"function"!=typeof t.canPlayType)return e;var i=t.canPlayType("audio/mpeg;").replace(/^no$/,""),r=e._navigator?e._navigator.userAgent:"",n=r.match(/OPR\/([0-6].)/g),o=n&&parseInt(n[0].split("/")[1],10)<33,s=-1!==r.indexOf("Safari")&&-1===r.indexOf("Chrome"),a=r.match(/Version\/(.*?) /),l=s&&a&&parseInt(a[1],10)<15;return e._codecs={mp3:!(o||!i&&!t.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!i,opus:!!t.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(t.canPlayType('audio/wav; codecs="1"')||t.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!t.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!t.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(t.canPlayType("audio/x-m4a;")||t.canPlayType("audio/m4a;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(t.canPlayType("audio/x-m4b;")||t.canPlayType("audio/m4b;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(t.canPlayType("audio/x-mp4;")||t.canPlayType("audio/mp4;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!t.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(t.canPlayType("audio/x-flac;")||t.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||C;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var t=function(i){for(;e._html5AudioPool.length0?s._seek:i._sprite[e][0]/1e3),h=Math.max(0,(i._sprite[e][0]+i._sprite[e][1])/1e3-l),c=1e3*h/Math.abs(s._rate),u=i._sprite[e][0]/1e3,d=(i._sprite[e][0]+i._sprite[e][1])/1e3;s._sprite=e,s._ended=!1;var f=function(){s._paused=!1,s._seek=l,s._start=u,s._stop=d,s._loop=!(!s._loop&&!i._sprite[e][2])};if(!(l>=d)){var g=s._node;if(i._webAudio){var _=function(){i._playLock=!1,f(),i._refreshBuffer(s);var e=s._muted||i._muted?0:s._volume;g.gain.setValueAtTime(e,C.ctx.currentTime),s._playStart=C.ctx.currentTime,void 0===g.bufferSource.start?s._loop?g.bufferSource.noteGrainOn(0,l,86400):g.bufferSource.noteGrainOn(0,l,h):s._loop?g.bufferSource.start(0,l,86400):g.bufferSource.start(0,l,h),c!==1/0&&(i._endTimers[s._id]=setTimeout(i._ended.bind(i,s),c)),t||setTimeout((function(){i._emit("play",s._id),i._loadQueue()}),0)};"running"===C.state&&"interrupted"!==C.ctx.state?_():(i._playLock=!0,i.once("resume",_),i._clearTimer(s._id))}else{var p=function(){g.currentTime=l,g.muted=s._muted||i._muted||C._muted||g.muted,g.volume=s._volume*C.volume(),g.playbackRate=s._rate;try{var r=g.play();if(r&&"undefined"!=typeof Promise&&(r instanceof Promise||"function"==typeof r.then)?(i._playLock=!0,f(),r.then((function(){i._playLock=!1,g._unlocked=!0,t?i._loadQueue():i._emit("play",s._id)})).catch((function(){i._playLock=!1,i._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),s._ended=!0,s._paused=!0}))):t||(i._playLock=!1,f(),i._emit("play",s._id)),g.playbackRate=s._rate,g.paused)return void i._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||s._loop?i._endTimers[s._id]=setTimeout(i._ended.bind(i,s),c):(i._endTimers[s._id]=function(){i._ended(s),g.removeEventListener("ended",i._endTimers[s._id],!1)},g.addEventListener("ended",i._endTimers[s._id],!1))}catch(e){i._emit("playerror",s._id,e)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===g.src&&(g.src=i._src,g.load());var m=window&&window.ejecta||!g.readyState&&C._navigator.isCocoonJS;if(g.readyState>=3||m)p();else{i._playLock=!0,i._state="loading";var v=function(){i._state="loaded",p(),g.removeEventListener(C._canPlayEvent,v,!1)};g.addEventListener(C._canPlayEvent,v,!1),i._clearTimer(s._id)}}return s._id}i._ended(s)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var i=t._getSoundIds(e),r=0;r=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else n.length>=2&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(i=t?r._soundById(t):r._sounds[0])?i._volume:0;if("loaded"!==r._state||r._playLock)return r._queue.push({event:"volume",action:function(){r.volume.apply(r,n)}}),r;void 0===t&&(r._volume=e),t=r._getSoundIds(t);for(var a=0;a0?r/h:r),u=Date.now();e._fadeTo=i,e._interval=setInterval((function(){var n=(Date.now()-u)/r;u=Date.now(),a+=l*n,a=Math.round(100*a)/100,a=l<0?Math.max(i,a):Math.min(i,a),s._webAudio?e._volume=a:s.volume(a,e._id,!0),o&&(s._volume=a),(it&&a>=i)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,s.volume(i,e._id),s._emit("fade",e._id))}),c)},_stopFade:function(e){var t=this,i=t._soundById(e);return i&&i._interval&&(t._webAudio&&i._node.gain.cancelScheduledValues(C.ctx.currentTime),clearInterval(i._interval),i._interval=null,t.volume(i._fadeTo,e),i._fadeTo=null,t._emit("fade",e)),t},loop:function(){var e,t,i,r=this,n=arguments;if(0===n.length)return r._loop;if(1===n.length){if("boolean"!=typeof n[0])return!!(i=r._soundById(parseInt(n[0],10)))&&i._loop;e=n[0],r._loop=e}else 2===n.length&&(e=n[0],t=parseInt(n[1],10));for(var o=r._getSoundIds(t),s=0;s=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else 2===n.length&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if("number"!=typeof e)return(i=r._soundById(t))?i._rate:r._rate;if("loaded"!==r._state||r._playLock)return r._queue.push({event:"rate",action:function(){r.rate.apply(r,n)}}),r;void 0===t&&(r._rate=e),t=r._getSoundIds(t);for(var a=0;a=0?t=parseInt(r[0],10):i._sounds.length&&(t=i._sounds[0]._id,e=parseFloat(r[0]))}else 2===r.length&&(e=parseFloat(r[0]),t=parseInt(r[1],10));if(void 0===t)return 0;if("number"==typeof e&&("loaded"!==i._state||i._playLock))return i._queue.push({event:"seek",action:function(){i.seek.apply(i,r)}}),i;var s=i._soundById(t);if(s){if(!("number"==typeof e&&e>=0)){if(i._webAudio){var a=i.playing(t)?C.ctx.currentTime-s._playStart:0,l=s._rateSeek?s._rateSeek-s._seek:0;return s._seek+(l+a*Math.abs(s._rate))}return s._node.currentTime}var h=i.playing(t);h&&i.pause(t,!0),s._seek=e,s._ended=!1,i._clearTimer(t),i._webAudio||!s._node||isNaN(s._node.duration)||(s._node.currentTime=e);var c=function(){h&&i.play(t,!0),i._emit("seek",t)};if(h&&!i._webAudio){var u=function(){i._playLock?setTimeout(u,0):c()};setTimeout(u,0)}else c()}return i},playing:function(e){var t=this;if("number"==typeof e){var i=t._soundById(e);return!!i&&!i._paused}for(var r=0;r=0&&C._howls.splice(r,1);var n=!0;for(i=0;i=0){n=!1;break}return x&&n&&delete x[e._src],C.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,i,r){var n=this["_on"+e];return"function"==typeof t&&n.push(r?{id:i,fn:t,once:r}:{id:i,fn:t}),this},off:function(e,t,i){var r=this,n=r["_on"+e],o=0;if("number"==typeof t&&(i=t,t=null),t||i)for(o=0;o=0;o--)n[o].id&&n[o].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,i)}.bind(r,n[o].fn),0),n[o].once&&r.off(e,n[o].fn,n[o].id));return r._loadQueue(e),r},_loadQueue:function(e){var t=this;if(t._queue.length>0){var i=t._queue[0];i.event===e&&(t._queue.shift(),t._loadQueue()),e||i.action()}return t},_ended:function(e){var t=this,i=e._sprite;if(!t._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;r--){if(i<=t)return;e._sounds[r]._ended&&(e._webAudio&&e._sounds[r]._node&&e._sounds[r]._node.disconnect(0),e._sounds.splice(r,1),i--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],i=0;i=0;if(!e.bufferSource)return this;if(C._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),t))try{e.bufferSource.buffer=C._scratchBuffer}catch(e){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(C._navigator&&C._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var T=function(e){this._parent=e,this.init()};T.prototype={init:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++C._counter,t._sounds.push(e),e.create(),e},create:function(){var e=this,t=e._parent,i=C._muted||e._muted||e._parent._muted?0:e._volume;return t._webAudio?(e._node=void 0===C.ctx.createGain?C.ctx.createGainNode():C.ctx.createGain(),e._node.gain.setValueAtTime(i,C.ctx.currentTime),e._node.paused=!0,e._node.connect(C.masterGain)):C.noAudio||(e._node=C._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(C._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=t._src,e._node.preload=!0===t._preload?"auto":t._preload,e._node.volume=i*C.volume(),e._node.load()),e},reset:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++C._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,t=e._parent;t._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(t._sprite).length&&(t._sprite={__default:[0,1e3*t._duration]}),"loaded"!==t._state&&(t._state="loaded",t._emit("load"),t._loadQueue()),e._node.removeEventListener(C._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var x={},E=function(e){var t=e._src;if(x[t])return e._duration=x[t].duration,void O(e);if(/^data:[^;]+;base64,/.test(t)){for(var i=atob(t.split(",")[1]),r=new Uint8Array(i.length),n=0;n0?(x[t._src]=e,O(t,e)):i()};"undefined"!=typeof Promise&&1===C.ctx.decodeAudioData.length?C.ctx.decodeAudioData(e).then(r).catch(i):C.ctx.decodeAudioData(e,r,i)},O=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},R=function(){if(C.usingWebAudio){try{"undefined"!=typeof AudioContext?C.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?C.ctx=new webkitAudioContext:C.usingWebAudio=!1}catch(e){C.usingWebAudio=!1}C.ctx||(C.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(C._navigator&&C._navigator.platform),t=C._navigator&&C._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),i=t?parseInt(t[1],10):null;if(e&&i&&i<9){var r=/safari/.test(C._navigator&&C._navigator.userAgent.toLowerCase());C._navigator&&!r&&(C.usingWebAudio=!1)}C.usingWebAudio&&(C.masterGain=void 0===C.ctx.createGain?C.ctx.createGainNode():C.ctx.createGain(),C.masterGain.gain.setValueAtTime(C._muted?0:C._volume,C.ctx.currentTime),C.masterGain.connect(C.ctx.destination)),C._setup()}};!function(e,t,i,r){var n;e.prototype._pos=[0,0,0],e.prototype._orientation=[0,0,-1,0,1,0],e.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var i=t._howls.length-1;i>=0;i--)t._howls[i].stereo(e);return t},e.prototype.pos=function(e,i,r){var n=this;return n.ctx&&n.ctx.listener?(i="number"!=typeof i?n._pos[1]:i,r="number"!=typeof r?n._pos[2]:r,"number"!=typeof e?n._pos:(n._pos=[e,i,r],void 0!==n.ctx.listener.positionX?(n.ctx.listener.positionX.setTargetAtTime(n._pos[0],t.ctx.currentTime,.1),n.ctx.listener.positionY.setTargetAtTime(n._pos[1],t.ctx.currentTime,.1),n.ctx.listener.positionZ.setTargetAtTime(n._pos[2],t.ctx.currentTime,.1)):n.ctx.listener.setPosition(n._pos[0],n._pos[1],n._pos[2]),n)):n},e.prototype.orientation=function(e,i,r,n,o,s){var a=this;if(!a.ctx||!a.ctx.listener)return a;var l=a._orientation;return i="number"!=typeof i?l[1]:i,r="number"!=typeof r?l[2]:r,n="number"!=typeof n?l[3]:n,o="number"!=typeof o?l[4]:o,s="number"!=typeof s?l[5]:s,"number"!=typeof e?l:(a._orientation=[e,i,r,n,o,s],void 0!==a.ctx.listener.forwardX?(a.ctx.listener.forwardX.setTargetAtTime(e,t.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(i,t.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,t.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(n,t.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(o,t.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,t.ctx.currentTime,.1)):a.ctx.listener.setOrientation(e,i,r,n,o,s),a)},i.prototype.init=(n=i.prototype.init,function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],n.call(this,e)}),i.prototype.stereo=function(e,i){var r=this;if(!r._webAudio)return r;if("loaded"!==r._state)return r._queue.push({event:"stereo",action:function(){r.stereo(e,i)}}),r;var n=void 0===t.ctx.createStereoPanner?"spatial":"stereo";if(void 0===i){if("number"!=typeof e)return r._stereo;r._stereo=e,r._pos=[e,0,0]}for(var s=r._getSoundIds(i),a=0;a{console.warn(`Sound '${e}' playback failure: ${t}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=D,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`license`"+d);i._license=t})(M,e)}static get productKeys(){return this._license}static set productKeys(e){M.license=e}static get handshakeCode(){return this._license}static set handshakeCode(e){M.license=e}static get organizationID(){return this._license}static set organizationID(e){M.license=e}static set sessionPassword(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`sessionPassword`"+d);i._sessionPassword=t})(M,e)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:a,worker:l,getUserMedia:h,camera:await c(),browser:s.browser,version:s.version,OS:s.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(e){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");M._engineResourcePath=(e=>{if(null==e&&(e="./"),!t){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+d);i._licenseServer=_(t)})(M,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+d);i._deviceFriendlyName=t||""})(M,e)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(e){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");M.__bUseFullFeature=e}static isImageSource(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"getImage"in e}static isDSImage(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("width"in e&&("height"in e&&"pixelFormat"in e)))}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("region"in e&&("sx"in e&&("sy"in e&&("width"in e&&("height"in e&&("colorMode"in e&&("timeSpent"in e&&("timeStamp"in e&&("isCropped"in e&&("toCanvas"in e&&("_sWidth"in e&&("_sHeight"in e&&"_bUseWebGL"in e)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(e){this._region=e,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var e;return null===(e=M._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",M.engineResourcePath)}static set defaultUIElementURL(e){M._defaultUIElementURL=e}static _fireHTTPSWarnning(){M.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{M.onWarning&&M.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new w({src:[this._soundSource],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(e){this.bPlaySoundOnSuccessfulRead="never"!==e&&e}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(e){this.bVibrateOnSuccessfulRead="never"!==e&&e}set dce(e){this._dce=e}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(e){this._maxCvsSideLength=e,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",e)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;M._onLog&&M._onLog("_registerDCEControler()");const e=this.dce;this._dceControler=e._createControler();const t=this._dceControler;t.register(this),t.setDisiredValue(this,"refreshInterval",200),t.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}const i=e.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{i?i===t._innerSetUI&&(await e.setUIElement(`${r.engineResourcePath}dce.ui.html`),t._innerSetUI=e.getUIElement()):(await e.setUIElement(`${r.engineResourcePath}dbr.ui.html`),t._innerSetUI=e.getUIElement())}catch(t){await e.setUIElement(r.defaultUIElementURL)}else i||await e.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async e=>{let t=await this._decode_DCEFrame(e,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onImageRead(e)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));const{sx:i,sy:r,width:n,height:o,_sWidth:s,_sHeight:a}=e;M.recalculateResultLocation(t,i,r,s,a,n,o),this._drawResults(t)},e.on("cameraChange",this.callbackCameraChange),e.on("resolutionChange",this.callbackResolutionChange),e.on("cameraClose",this.callbackCameraClose),e.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(M._onLog&&M._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(e,t){if(null==e)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(e&&e.isCameraEnhancer)this.dce=e,await this._registerDCEControler(),this._imgSource=null;else{if(!M.isImageSource(e))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=e}t&&t.resultsHighlightBaseShapes&&(this._drawingItemNamespace=t.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:e,l:t,ls:i,sp:r,rmk:n}=(e=>{const t=e;if(t._pLoad.isEmpty){let e,i,r=t._license||"",n=JSON.parse(JSON.stringify(t._licenseServer)),o=t._sessionPassword,s=0;if(r.startsWith("t")||r.startsWith("f"))s=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))s=1;else{s=2;const t=r.indexOf(":");if(-1!=t&&(r=r.substring(t+1)),r.startsWith("DLS2")){let t=r.substring(4);try{t=atob(t)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const i=JSON.parse(t);if(r=i.handshakeCode?i.handshakeCode:i.organizationID?i.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===n.length){let e=[];i.mainServerURL&&(e[0]=i.mainServerURL),i.standbyServerURL&&(e[1]=i.standbyServerURL),n=_(e)}!o&&i.sessionPassword&&(o=i.sessionPassword),e=i.remark}("200001"===r||r.startsWith("200001-"))&&(n&&n.length||(r="")),r||(s=1)}if(s&&(globalThis.crypto||(i="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(i="Require https to use online key in this browser.")),i){if(1!==s)throw new Error(i);s=0,console.warn(i),t._lastErrorCode=-1,t._lastErrorString=i}return 1===s&&(r="",console.warn("Applying for a public trial license ...")),{lt:s,l:r,ls:n,sp:o,rmk:e}}throw new Error("Can't preprocess license again"+d)})(M);this._pLoad.task=async(o,a)=>{let l=M.engineResourcePath+M._workerName;M.engineResourcePath.startsWith(location.origin)||(l=await fetch(l).then((e=>e.blob())).then((e=>URL.createObjectURL(e)))),M._dbrWorker=new Worker(l),M._dbrWorker.onerror=e=>{let t=new Error(e.message);a(t)},M._dbrWorker.onmessage=async t=>{let i=t.data?t.data:t;switch(i.type){case"log":M._onLog&&M._onLog(i.message);break;case"load":{i.message&&(i.message=i.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let t,r=!1;1===e&&(r=!0),i.success?(M._dbrWorker.onerror=null,M._version=i.version+"(JS "+M._jsVersion+"."+M._jsEditVersion+")",M._onLog&&M._onLog("load dbr worker success"),i.message&&console.warn(i.message)):(t=new Error(i.message),t.stack=i.stack+"\n"+t.stack,r||111==i.ltsErrorCode&&-1!=i.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&M.showDialog(i.success?"warn":"error",i.message),i.success?o():a(t);break}case"task":{let e=i.id,t=i.body;try{M._taskCallbackMap.get(e)(t),M._taskCallbackMap.delete(e)}catch(t){throw M._taskCallbackMap.delete(e),t}break}default:M._onLog&&M._onLog(t)}},M._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:M.engineResourcePath,bUseFullFeature:M._bUseFullFeature,bd:M._bWasmDebug,v:M._jsVersion,brtk:!!e,bptk:1===e,l:t,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:s,fn:M.deviceFriendlyName,ls:i,sp:r,rmk:n})}}await this._pLoad}static async showDialog(e,t){await(async(e,t,i)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let o=document.createElement("div");o.innerHTML=n;let s=[];for(let e=0;e{if(e==t.target){a.remove();for(let e of s)e.remove()}}));else if(!h&&e.classList.contains("dls-license-icon-close"))h=e,e.addEventListener("click",(()=>{a.remove();for(let e of s)e.remove()}));else if(!c&&e.classList.contains("dls-license-icon-error"))c=e,"error"!=t&&e.remove();else if(!u&&e.classList.contains("dls-license-icon-warn"))u=e,"warn"!=t&&e.remove();else if(!d&&e.classList.contains("dls-license-msg-content")){d=e;let t=i;for(;t;){let i=t.indexOf("["),r=t.indexOf("]",i),n=t.indexOf("(",r),o=t.indexOf(")",n);if(-1==i||-1==r||-1==n||-1==o){e.appendChild(new Text(t));break}i>0&&e.appendChild(new Text(t.substring(0,i)));let s=document.createElement("a"),a=t.substring(i+1,r);s.innerText=a;let l=t.substring(n+1,o);s.setAttribute("href",l),s.setAttribute("target","_blank"),e.appendChild(s),t=t.substring(o+1)}}document.body.appendChild(a)}catch(t){e._onLog&&e._onLog(t.message||t)}})(this,e,t)}static async createInstanceInWorker(e=!1){return await M.loadWasm(),await new Promise(((t,i)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(e=>{if(e.success)return t(e.instanceID);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),M._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:e})}))}static async createInstance(){let e=new M;return e._instanceID=await M.createInstanceInWorker(),M._fireHTTPSWarnning(),e}async clearMapDecodeRecord(){return await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success)return e();{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:i,instanceID:this._instanceID})}))}async decode(e){M._onLog&&M._onLog("decode(source: any)"),M._onLog&&(this._timeStartDecode=Date.now());{let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),e instanceof Blob?await this._decode_Blob(e,t):e instanceof ArrayBuffer?await this._decode_ArrayBuffer(e,t):e instanceof Uint8Array||e instanceof Uint8ClampedArray?await this._decode_Uint8Array(e,t):e instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?await this._decode_Image(e,t):e instanceof HTMLCanvasElement?await this._decode_Canvas(e,t):e instanceof HTMLVideoElement?await this._decode_Video(e,t):"string"==typeof e?"data:image/"==e.substring(0,11)?await this._decode_Base64(e,t):await this._decode_Url(e,t):M.isDCEFrame(e)?(t.bCopyData=!0,await this._decode_DCEFrame(e,t)):M.isDSImage(e)?(t.bCopyData=!0,await this._decode_DSImage(e,t)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(e,t)}async decodeUrl(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(e,t)}async _decodeBuffer_Uint8Array(e,t,i,r,n,o){return await new Promise(((s,a)=>{let l=M._nextTaskID++;M._taskCallbackMap.set(l,(e=>{if(e.success){let t,i=M._onLog?Date.now():0;M._onLog&&M._onLog("worker return result: "+i),this._lastInnerDecodeDuration=e.duration;try{t=this._handleRetJsonString(e.decodeReturn)}catch(e){return a(e)}if(M._onLog){let e=Date.now();M._onLog("DBR time get result: "+i),M._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),M._onLog("DBR worker decode image cost: "+(i-this._timeEnterInnerDBR)),M._onLog("DBR worker handle results: "+(e-i)),M._onLog("Total decode image cost: "+(e-this._timeStartDecode))}return s(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}})),this._timeEnterInnerDBR=Date.now(),M._onLog&&M._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),M._dbrWorker.postMessage({type:"decodeBuffer",id:l,instanceID:this._instanceID,body:{buffer:e,width:t,height:i,stride:r,format:n,config:o}},[e.buffer]),M._onLog&&o&&o.timeStamp&&M._onLog("decode image delay: "+(this._timeEnterInnerDBR-o.timeStamp))}))}async _decodeBuffer_Blob(e,t,i,r,n,o){M._onLog&&M._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const s=e.arrayBuffer?await e.arrayBuffer():await new Promise(((t,i)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onload=()=>{t(r.result)},r.onerror=()=>{i(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(s),t,i,r,n,o)}async decodeBuffer(e,t,i,r,n,o){let s;return M._onLog&&M._onLog("decodeBuffer(buffer,width,height,stride,format)"),M._onLog&&(this._timeStartDecode=Date.now()),e instanceof Uint8Array||e instanceof Uint8ClampedArray?s=await this._decodeBuffer_Uint8Array(e,t,i,r,n,o):e instanceof ArrayBuffer?s=await this._decodeBuffer_Uint8Array(new Uint8Array(e),t,i,r,n,o):e instanceof Blob&&(s=await this._decodeBuffer_Blob(e,t,i,r,n,o)),s}async _decodeFileInMemory_Uint8Array(e){return await new Promise(((t,i)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(e=>{if(e.success){let r;this._lastInnerDecodeDuration=e.duration;try{r=this._handleRetJsonString(e.decodeReturn)}catch(e){return i(e)}return t(r)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),M._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:e}})}))}async getRuntimeSettings(){return await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success){let t=JSON.parse(i.results);return null!=this.userDefinedRegion&&(t.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),e(t)}{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"getRuntimeSettings",id:i,instanceID:this._instanceID})}))}async updateRuntimeSettings(t){let i;if("string"==typeof t)if("speed"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region,i.deblurLevel=3,i.expectedBarcodesCount=0,i.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region,i.deblurLevel=5,i.expectedBarcodesCount=512,i.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region}else if("dense"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region,i.deblurLevel=9,i.expectedBarcodesCount=0,i.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,i.region=e.region,i.deblurLevel=3,i.expectedBarcodesCount=0,i.localizationModes=[2,8,0,0,0,0,0,0]}else i=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(i=JSON.parse(JSON.stringify(t)),i.region instanceof Array){let e=i.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(i.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!M._bUseFullFeature){if(0!=(i.barcodeFormatIds&~(e.EnumBarcodeFormat.BF_ONED|e.EnumBarcodeFormat.BF_QR_CODE|e.EnumBarcodeFormat.BF_PDF417|e.EnumBarcodeFormat.BF_DATAMATRIX))||0!=i.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=i.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let e=i.region;if(e instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(e)),(e.regionLeft||e.regionTop||e.regionRight||e.regionBottom||e.regionMeasuredByPercentage)&&(e.regionLeft||e.regionTop||100!=e.regionRight||100!=e.regionBottom||!e.regionMeasuredByPercentage)?this.region=e:this.region=null,i.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((e,t)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(i=>{if(i.success){try{this._handleRetJsonString(i.updateReturn)}catch(e){t(e)}return e()}{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(i)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=D,await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success)return e();{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"resetRuntimeSettings",id:i,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!M._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success)return e(i.results);{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:i,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(e){if(!M._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof e)e=e;else{if("object"!=typeof e)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");e=JSON.stringify(e)}return await new Promise(((t,i)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.initReturn)}catch(e){i(e)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),M._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:e}})}))}async _decode_Blob(e,t){M._onLog&&M._onLog("_decode_Blob(blob: Blob)");let i=null,r=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(e)}catch(e){}i||(r=await function(e){return new Promise(((t,i)=>{let r=URL.createObjectURL(e),n=new Image;n.dbrObjUrl=r,n.src=r,n.onload=()=>{t(n)},n.onerror=e=>{i(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}}))}(e));let n=await this._decode_Image(i||r,t);return i&&i.close(),n}async _decode_ArrayBuffer(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Uint8Array(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Image(e,t){M._onLog&&M._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),t=t||{};let i,r,n=e instanceof HTMLImageElement?e.naturalWidth:e.width,o=e instanceof HTMLImageElement?e.naturalHeight:e.height,s=Math.max(n,o);if(s>this._maxCvsSideLength){let e=this._maxCvsSideLength/s;i=Math.round(n*e),r=Math.round(o*e)}else i=n,r=o;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(e,0,0,n,o,0,0,i,r),e.dbrObjUrl&&URL.revokeObjectURL(e.dbrObjUrl),await this._decode_Canvas(a,t)}async _decode_Canvas(t,i){if(M._onLog&&M._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if(0===t.width||0===t.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=t,this.oriCanvasData=null);let r=(t.ctx2d||t.getContext("2d")).getImageData(0,0,t.width,t.height).data;return await this._decodeBuffer_Uint8Array(r,t.width,t.height,4*t.width,e.EnumImagePixelFormat.IPF_ABGR_8888,i)}async _decode_Video(e,t){if(M._onLog&&M._onLog("_decode_Video(video)"),!(e instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";t=t||{};let i,r,n=e.videoWidth,o=e.videoHeight,s=Math.max(n,o);if(s>this._maxCvsSideLength){let e=this._maxCvsSideLength/s;i=Math.round(n*e),r=Math.round(o*e)}else i=n,r=o;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(e,0,0,n,o,0,0,i,r),await this._decode_Canvas(a,t)}async _decode_DCEFrame(t,i){if(M._onLog&&M._onLog("_decode_DCEFrame(dceFrame)"),!M.isDCEFrame(t))return[];let r=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{width:n,height:o,colorMode:s,timeStamp:a}=t;let l;l=i&&i.bCopyData?new Uint8Array(t.data):t.data;let h=null;if(i?(h=JSON.parse(JSON.stringify(i)),h.timeStamp=a):h={timeStamp:a},"grey"===s)r=await this._decodeBuffer_Uint8Array(l,n,o,n,e.EnumImagePixelFormat.IPF_GrayScaled,h);else if("rgba"===s)r=await this._decodeBuffer_Uint8Array(l,n,o,4*n,e.EnumImagePixelFormat.IPF_ABGR_8888,h);else{if("bgra"!==s)throw new Error(`Color mode '${s}' is not supported to decode.`);r=await this._decodeBuffer_Uint8Array(l,n,o,4*n,e.EnumImagePixelFormat.IPF_ARGB_8888,h)}return r}async _decode_DSImage(t,i){if(M._onLog&&M._onLog("_decode_DSImage(dsImage)"),!M.isDSImage(t))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,pixelFormat:t.pixelFormat.toLowerCase(),data:new Uint8Array(t.data),toCanvas:function(){const e=document.createElement("canvas");let t;switch(e.width=this.width,e.height=this.height,this.pixelFormat){case"grey":t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;e{let r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{t(r.response)},r.onerror=()=>{i(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(i,t)}}async _decode_FilePath(e,t){throw M._onLog&&M._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(e,t,i,r,n,o,s){if(e.length>0)for(let a of e){let e=a.localizationResult;2==e.resultCoordinateType&&(e.x1*=.01*o,e.x2*=.01*o,e.x3*=.01*o,e.x4*=.01*o,e.y1*=.01*s,e.y2*=.01*s,e.y3*=.01*s,e.y4*=.01*s);let l=o/r,h=s/n;e.x1=e.x1/l+t,e.x2=e.x2/l+t,e.x3=e.x3/l+t,e.x4=e.x4/l+t,e.y1=e.y1/h+i,e.y2=e.y2/h+i,e.y3=e.y3/h+i,e.y4=e.y4/h+i,2==e.resultCoordinateType&&(e.x1*=100/r,e.x2*=100/r,e.x3*=100/r,e.x4*=100/r,e.y1*=100/n,e.y2*=100/n,e.y3*=100/n,e.y4*=100/n)}}static BarcodeReaderException(t,i){let r,n=e.EnumErrorCode.DBR_UNKNOWN;return"number"==typeof t?(n=t,r=new Error(i)):r=new Error(t),r.code=n,r}_handleRetJsonString(t){let i=e.EnumErrorCode;if(t.textResults){for(let e=0;e{let i=t.indexOf(":");e[t.substring(0,i)]=t.substring(i+1)})),i.exception=e}}return t.decodeRecords?this.decodeRecords=t.decodeRecords:this.decodeRecords={},this._lastErrorCode=t.exception,this._lastErrorString=t.description,t.exception&&!M._setWarnnedEx.has(t.description)&&(M._setWarnnedEx.add(t.description),console.warn(t.description)),t.textResults}if(t.exception==i.DBR_SUCCESS)return t.data;throw M.BarcodeReaderException(t.exception,t.description)}async setModeArgument(e,t,i,r){return await new Promise(((n,o)=>{let s=M._nextTaskID++;M._taskCallbackMap.set(s,(e=>{if(e.success){try{this._handleRetJsonString(e.setReturn)}catch(e){return o(e)}return n()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,o(t)}})),M._dbrWorker.postMessage({type:"setModeArgument",id:s,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:i,argumentValue:r}})}))}async getModeArgument(e,t,i){return await new Promise(((r,n)=>{let o=M._nextTaskID++;M._taskCallbackMap.set(o,(e=>{if(e.success){let t;try{t=this._handleRetJsonString(e.getReturn)}catch(e){return n(e)}return r(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),M._dbrWorker.postMessage({type:"getModeArgument",id:o,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:i}})}))}async getIntermediateResults(){return await new Promise(((e,t)=>{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success)return e(i.results);{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"getIntermediateResults",id:i,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let t=await this.getIntermediateResults(),i=[];for(let r of t)if(r.dataType==e.EnumIMResultDataType.IMRDT_IMAGE)for(let t of r.results){const r=t.bytes;let n;switch(M._onLog&&M._onLog(" "+r.length+" "+r.byteLength+" "+t.width+" "+t.height+" "+t.stride+" "+t.format),t.format){case e.EnumImagePixelFormat.IPF_ABGR_8888:n=new Uint8ClampedArray(r);break;case e.EnumImagePixelFormat.IPF_RGB_888:{const e=r.length/3;n=new Uint8ClampedArray(4*e);for(let t=0;t{let i=M._nextTaskID++;M._taskCallbackMap.set(i,(i=>{if(i.success){let t=i.results;return t.intervalTime=this.intervalTime,t.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,t.soundOnSuccessfullRead=this.soundSource,t.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,t.vibrateDuration=this.vibrateDuration,t.captureAndDecodeInParallel=this.captureAndDecodeInParallel,e(t)}{let e=new Error(i.message);return e.stack+="\n"+i.stack,t(e)}})),M._dbrWorker.postMessage({type:"getScanSettings",id:i,instanceID:this._instanceID})}))}async updateScanSettings(e){if(!e)return;const t=JSON.parse(JSON.stringify(e));return t.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(t.intervalTime,0),delete t.intervalTime),t.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=t.whenToPlaySoundforSuccessfulRead,delete t.whenToPlaySoundforSuccessfulRead),t.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=t.soundOnSuccessfullRead,delete t.soundOnSuccessfullRead),t.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=t.whenToVibrateforSuccessfulRead,delete t.whenToVibrateforSuccessfulRead),t.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=t.vibrateDuration,delete t.vibrateDuration),t.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=t.captureAndDecodeInParallel,delete t.captureAndDecodeInParallel),await new Promise(((e,i)=>{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack+="\n"+t.stack,i(e)}})),M._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:t}})}))}_cloneDecodeResults(e){if(e instanceof Array){let t=[];for(let i of e)t.push(this._cloneDecodeResults(i));return t}{let t=e,i=JSON.parse(JSON.stringify(t,((e,t)=>"oriVideoCanvas"==e||"searchRegionCanvas"==e?void 0:t)));return i}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return M._onLog&&M._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));M._onLog&&M._onLog("======= once read ======="),M._onLog&&(this._timeStartDecode=Date.now());let e=null,t=null;if(this.dce)e=this._getVideoFrame();else if(this._imgSource&&(t=await this._imgSource.getImage(),!M.isDSImage(t)))throw new Error("Invalid DSImage.");if(!e&&!t)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let i=[];if(e){i=await this._decode_DCEFrame(e,{bScanner:!0,bCopyData:!1});let t=null;if(i&&i.length){const{sx:r,sy:n,width:o,height:s,_sWidth:a,_sHeight:l}=e;t=i.map((e=>({localizationResult:JSON.parse(JSON.stringify(e.localizationResult))}))),M.recalculateResultLocation(t,r,n,a,l,o,s)}this._drawResults(t)}else t&&(i=await this._decode_DSImage(t,{bScanner:!0,bCopyData:!1}));return i})().then((e=>{if(M._onLog&&M._onLog(e),this.dce&&this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost;const i=()=>{let i=0;if(t&&t.length){let r=Math.min(...e),n=Math.max(...t);r&&n&&(i=r-n)}else i=0;return i>0?i:0};(()=>{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=i()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of e)if(0==i.resultState){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of e)if(0==i.resultState){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onImageRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultState&&1!=e.resultState||this.onImageRead(t);this.onImageRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultState&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),M._onLog&&M._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;e=this.dce.getFrameFromBuffer();const t=e=>{if(!e)return;let t=e.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(t)};t(e)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),e=this.dce.getFrame();return e}_drawResults(e){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const t=this._dbrDrawingLayer;if(t.clearDrawingItems(),e&&e.length)for(let i of e){const e=i.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:e.x1,y:e.y1},{x:e.x2,y:e.y2},{x:e.x3,y:e.y3},{x:e.x4,y:e.y4}]);t.addDrawingItem(r)}}async startScanning(e){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let t=null;return this.dce&&(this.dce.isOpen()?(e&&this.dce.appendAndShowUI(),t=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):t=await this.dce.open(e),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),t):void 0}stopScanning(e){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",e))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(e){if(e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(M._onLog&&M._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let e=M._nextTaskID++;M._taskCallbackMap.set(e,(e=>{if(!e.success){let t=new Error(e.message);throw t.stack=e.stack+"\n"+t.stack,t}})),M._dbrWorker.postMessage({type:"destroyContext",id:e,instanceID:this._instanceID})}}M._jsVersion="9.2.12",M._jsEditVersion="20220727",M._version=`loading...(JS ${M._jsVersion}.${M._jsEditVersion})`,M._license=f,M._sessionPassword=g,M.browserInfo=s,M._workerName=`dbr-${M._jsVersion}.browser.worker.js`,M._engineResourcePath=u,M._licenseServer=[],M._deviceFriendlyName="",M._isShowRelDecodeTimeInResults=!1,M._bWasmDebug=!1,M._bNeverShowDialog=!1,M.__bUseFullFeature=!0,M._nextTaskID=0,M._taskCallbackMap=new Map,M._pLoad=new class extends Promise{constructor(e){let t,i;super(((e,r)=>{t=e,i=r})),this._s="pending",this.resolve=e=>{this.isPending&&(S(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",i(e))},this.task=e}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,S(e)?t=e:"function"==typeof e&&(t=new Promise(e)),t&&(async()=>{try{const i=await t;e===this._task&&this.resolve(i)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}},M._lastErrorCode=0,M._lastErrorString="",M._setWarnnedEx=new Set,M._defaultUIElementURL="@engineResourcePath/dbr.ui.html";var L={653:(e,t,i)=>{var r,n,o,s,a,l,h,c,u,d,f,g,_,p,m,v,y,S,b,C,w,T=T||{version:"5.2.1"};if(t.fabric=T,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?T.document=document:T.document=document.implementation.createHTMLDocument(""),T.window=window;else{var x=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;T.document=x.document,T.jsdomImplForWrapper=i(898).implForWrapper,T.nodeCanvas=i(245).Canvas,T.window=x,DOMParser=T.window.DOMParser}function E(e,t){var i=e.canvas,r=t.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var o=i.height-r.height;n.drawImage(i,0,o,r.width,r.height,0,0,r.width,r.height)}function A(e,t){var i=t.targetCanvas.getContext("2d"),r=t.destinationWidth,n=t.destinationHeight,o=r*n*4,s=new Uint8Array(this.imageBuffer,0,o),a=new Uint8ClampedArray(this.imageBuffer,0,o);e.readPixels(0,0,r,n,e.RGBA,e.UNSIGNED_BYTE,s);var l=new ImageData(a,r,n);i.putImageData(l,0,0)}T.isTouchSupported="ontouchstart"in T.window||"ontouchstart"in T.document||T.window&&T.window.navigator&&T.window.navigator.maxTouchPoints>0,T.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,T.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],T.DPI=96,T.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",T.commaWsp="(?:\\s+,?\\s*|,\\s*)",T.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,T.reNonWord=/[ \n\.,;!\?\-]/,T.fontPaths={},T.iMatrix=[1,0,0,1,0,0],T.svgNS="http://www.w3.org/2000/svg",T.perfLimitSizeTotal=2097152,T.maxCacheSideLimit=4096,T.minCacheSideLimit=256,T.charWidthsCache={},T.textureSize=2048,T.disableStyleCopyPaste=!1,T.enableGLFiltering=!0,T.devicePixelRatio=T.window.devicePixelRatio||T.window.webkitDevicePixelRatio||T.window.mozDevicePixelRatio||1,T.browserShadowBlurConstant=1,T.arcToSegmentsCache={},T.boundsOfCurveCache={},T.cachesBoundsOfCurve=!0,T.forceGLPutImageData=!1,T.initFilterBackend=function(){return T.enableGLFiltering&&T.isWebglSupported&&T.isWebglSupported(T.textureSize)?(console.log("max texture size: "+T.maxTextureSize),new T.WebglFilterBackend({tileSize:T.textureSize})):T.Canvas2dFilterBackend?new T.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=T),function(){function e(e,t){if(this.__eventListeners[e]){var i=this.__eventListeners[e];t?i[i.indexOf(t)]=!1:T.util.array.fill(i,!1)}}function t(e,t){var i=function(){t.apply(this,arguments),this.off(e,i)}.bind(this);this.on(e,i)}T.Observable={fire:function(e,t){if(!this.__eventListeners)return this;var i=this.__eventListeners[e];if(!i)return this;for(var r=0,n=i.length;r-1||!!t&&this._objects.some((function(t){return"function"==typeof t.contains&&t.contains(e,!0)}))},complexity:function(){return this._objects.reduce((function(e,t){return e+(t.complexity?t.complexity():0)}),0)}},T.CommonMethods={_setOptions:function(e){for(var t in e)this.set(t,e[t])},_initGradient:function(e,t){!e||!e.colorStops||e instanceof T.Gradient||this.set(t,new T.Gradient(e))},_initPattern:function(e,t,i){!e||!e.source||e instanceof T.Pattern?i&&i():this.set(t,new T.Pattern(e,i))},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return"object"==typeof e?this._setObject(e):this._set(e,t),this},_set:function(e,t){this[e]=t},toggle:function(e){var t=this.get(e);return"boolean"==typeof t&&this.set(e,!t),this},get:function(e){return this[e]}},r=t,n=Math.sqrt,o=Math.atan2,s=Math.pow,a=Math.PI/180,l=Math.PI/2,T.util={cos:function(e){if(0===e)return 1;switch(e<0&&(e=-e),e/l){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},sin:function(e){if(0===e)return 0;var t=1;switch(e<0&&(t=-1),e/l){case 1:return t;case 2:return 0;case 3:return-t}return Math.sin(e)},removeFromArray:function(e,t){var i=e.indexOf(t);return-1!==i&&e.splice(i,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*a},radiansToDegrees:function(e){return e/a},rotatePoint:function(e,t,i){var r=new T.Point(e.x-t.x,e.y-t.y),n=T.util.rotateVector(r,i);return new T.Point(n.x,n.y).addEquals(t)},rotateVector:function(e,t){var i=T.util.sin(t),r=T.util.cos(t);return{x:e.x*r-e.y*i,y:e.x*i+e.y*r}},createVector:function(e,t){return new T.Point(t.x-e.x,t.y-e.y)},calcAngleBetweenVectors:function(e,t){return Math.acos((e.x*t.x+e.y*t.y)/(Math.hypot(e.x,e.y)*Math.hypot(t.x,t.y)))},getHatVector:function(e){return new T.Point(e.x,e.y).multiply(1/Math.hypot(e.x,e.y))},getBisector:function(e,t,i){var r=T.util.createVector(e,t),n=T.util.createVector(e,i),o=T.util.calcAngleBetweenVectors(r,n),s=o*(0===T.util.calcAngleBetweenVectors(T.util.rotateVector(r,o),n)?1:-1)/2;return{vector:T.util.getHatVector(T.util.rotateVector(r,s)),angle:o}},projectStrokeOnPoints:function(e,t,i){var r=[],n=t.strokeWidth/2,o=t.strokeUniform?new T.Point(1/t.scaleX,1/t.scaleY):new T.Point(1,1),s=function(e){var t=n/Math.hypot(e.x,e.y);return new T.Point(e.x*t*o.x,e.y*t*o.y)};return e.length<=1||e.forEach((function(a,l){var h,c,u=new T.Point(a.x,a.y);0===l?(c=e[l+1],h=i?s(T.util.createVector(c,u)).addEquals(u):e[e.length-1]):l===e.length-1?(h=e[l-1],c=i?s(T.util.createVector(h,u)).addEquals(u):e[0]):(h=e[l-1],c=e[l+1]);var d,f,g=T.util.getBisector(u,h,c),_=g.vector,p=g.angle;if("miter"===t.strokeLineJoin&&(d=-n/Math.sin(p/2),f=new T.Point(_.x*d*o.x,_.y*d*o.y),Math.hypot(f.x,f.y)/n<=t.strokeMiterLimit))return r.push(u.add(f)),void r.push(u.subtract(f));d=-n*Math.SQRT2,f=new T.Point(_.x*d*o.x,_.y*d*o.y),r.push(u.add(f)),r.push(u.subtract(f))})),r},transformPoint:function(e,t,i){return i?new T.Point(t[0]*e.x+t[2]*e.y,t[1]*e.x+t[3]*e.y):new T.Point(t[0]*e.x+t[2]*e.y+t[4],t[1]*e.x+t[3]*e.y+t[5])},makeBoundingBoxFromPoints:function(e,t){if(t)for(var i=0;i0&&(t>r?t-=r:t=0,i>r?i-=r:i=0);var n,o=!0,s=e.getImageData(t,i,2*r||1,2*r||1),a=s.data.length;for(n=3;n=n?o-n:2*Math.PI-(n-o)}function o(e,t,i){for(var o=i[1],s=i[2],a=i[3],l=i[4],h=i[5],c=function(e,t,i,o,s,a,l){var h=Math.PI,c=l*h/180,u=T.util.sin(c),d=T.util.cos(c),f=0,g=0,_=-d*e*.5-u*t*.5,p=-d*t*.5+u*e*.5,m=(i=Math.abs(i))*i,v=(o=Math.abs(o))*o,y=p*p,S=_*_,b=m*v-m*y-v*S,C=0;if(b<0){var w=Math.sqrt(1-b/(m*v));i*=w,o*=w}else C=(s===a?-1:1)*Math.sqrt(b/(m*y+v*S));var x=C*i*p/o,E=-C*o*_/i,A=d*x-u*E+.5*e,I=u*x+d*E+.5*t,O=n(1,0,(_-x)/i,(p-E)/o),R=n((_-x)/i,(p-E)/o,(-_-x)/i,(-p-E)/o);0===a&&R>0?R-=2*h:1===a&&R<0&&(R+=2*h);for(var D=Math.ceil(Math.abs(R/h*2)),M=[],L=R/D,P=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),F=O+L,k=0;kC)for(var x=1,E=_.length;x2;for(t=t||0,h&&(a=e[2].xe[i-2].x?1:n.x===e[i-2].x?0:-1,l=n.y>e[i-2].y?1:n.y===e[i-2].y?0:-1),r.push(["L",n.x+a*t,n.y+l*t]),r},T.util.getPathSegmentsInfo=d,T.util.getBoundsOfCurve=function(t,i,r,n,o,s,a,l){var h;if(T.cachesBoundsOfCurve&&(h=e.call(arguments),T.boundsOfCurveCache[h]))return T.boundsOfCurveCache[h];var c,u,d,f,g,_,p,m,v=Math.sqrt,y=Math.min,S=Math.max,b=Math.abs,C=[],w=[[],[]];u=6*t-12*r+6*o,c=-3*t+9*r-9*o+3*a,d=3*r-3*t;for(var x=0;x<2;++x)if(x>0&&(u=6*i-12*n+6*s,c=-3*i+9*n-9*s+3*l,d=3*n-3*i),b(c)<1e-12){if(b(u)<1e-12)continue;0<(f=-d/u)&&f<1&&C.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(m=v(p)))/(2*c))&&g<1&&C.push(g),0<(_=(-u-m)/(2*c))&&_<1&&C.push(_));for(var E,A,I,O=C.length,R=O;O--;)E=(I=1-(f=C[O]))*I*I*t+3*I*I*f*r+3*I*f*f*o+f*f*f*a,w[0][O]=E,A=I*I*I*i+3*I*I*f*n+3*I*f*f*s+f*f*f*l,w[1][O]=A;w[0][R]=t,w[1][R]=i,w[0][R+1]=a,w[1][R+1]=l;var D=[{x:y.apply(null,w[0]),y:y.apply(null,w[1])},{x:S.apply(null,w[0]),y:S.apply(null,w[1])}];return T.cachesBoundsOfCurve&&(T.boundsOfCurveCache[h]=D),D},T.util.getPointOnPath=function(e,t,i){i||(i=d(e));for(var r=0;t-i[r].length>0&&r1e-4;)i=l(o),n=o,(r=s(h.x,h.y,i.x,i.y))+a>t?(o-=c,c/=2):(h=i,o+=c,a+=r);return i.angle=u(n),i}(o,t)}},T.util.transformPath=function(e,t,i){return i&&(t=T.util.multiplyTransformMatrices(t,[1,0,0,1,-i.x,-i.y])),e.map((function(e){for(var i=e.slice(0),r={},n=1;n=t}))}}}(),function(){function e(t,i,r){if(r)if(!T.isLikelyNode&&i instanceof Element)t=i;else if(i instanceof Array){t=[];for(var n=0,o=i.length;n57343)return e.charAt(t);if(55296<=i&&i<=56319){if(e.length<=t+1)throw"High surrogate without following low surrogate";var r=e.charCodeAt(t+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return e.charAt(t)+e.charAt(t+1)}if(0===t)throw"Low surrogate without preceding high surrogate";var n=e.charCodeAt(t-1);if(55296>n||n>56319)throw"Low surrogate without preceding high surrogate";return!1}T.util.string={camelize:function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},capitalize:function(e,t){return e.charAt(0).toUpperCase()+(t?e.slice(1):e.slice(1).toLowerCase())},escapeXml:function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(t){var i,r=0,n=[];for(r=0;r-1?e.prototype[n]=function(e){return function(){var i=this.constructor.superclass;this.constructor.superclass=r;var n=t[e].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==e)return n}}(n):e.prototype[n]=t[n],i&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};function n(){}function o(t){for(var i=null,r=this;r.constructor.superclass;){var n=r.constructor.superclass.prototype[t];if(r[t]!==n){i=n;break}r=r.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,e.call(arguments,1)):i.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",this)}T.util.createClass=function(){var i=null,s=e.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof s[0]&&(i=s.shift()),a.superclass=i,a.subclasses=[],i&&(n.prototype=i.prototype,a.prototype=new n,i.subclasses.push(a));for(var l=0,h=s.length;l-1||"touch"===e.pointerType},d="string"==typeof(u=T.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,_=function(e){return e},d?_=function(e,t){return e.style.opacity=t,e}:f&&(_=function(e,t){var i=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(t=t>=.9999?"":"alpha(opacity="+100*t+")",i.filter=i.filter.replace(g,t)):i.filter+=" alpha(opacity="+100*t+")",e}),T.util.setStyle=function(e,t){var i=e.style;if(!i)return e;if("string"==typeof t)return e.style.cssText+=";"+t,t.indexOf("opacity")>-1?_(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)"opacity"===r?_(e,t[r]):i["float"===r||"cssFloat"===r?void 0===i.styleFloat?"cssFloat":"styleFloat":r]=t[r];return e},function(){var e,t,i,r,n=Array.prototype.slice,o=function(e){return n.call(e,0)};try{e=o(T.document.childNodes)instanceof Array}catch(e){}function s(e,t){var i=T.document.createElement(e);for(var r in t)"class"===r?i.className=t[r]:"for"===r?i.htmlFor=t[r]:i.setAttribute(r,t[r]);return i}function a(e){for(var t=0,i=0,r=T.document.documentElement,n=T.document.body||{scrollLeft:0,scrollTop:0};e&&(e.parentNode||e.host)&&((e=e.parentNode||e.host)===T.document?(t=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(t+=e.scrollLeft||0,i+=e.scrollTop||0),1!==e.nodeType||"fixed"!==e.style.position););return{left:t,top:i}}e||(o=function(e){for(var t=new Array(e.length),i=e.length;i--;)t[i]=e[i];return t}),t=T.document.defaultView&&T.document.defaultView.getComputedStyle?function(e,t){var i=T.document.defaultView.getComputedStyle(e,null);return i?i[t]:void 0}:function(e,t){var i=e.style[t];return!i&&e.currentStyle&&(i=e.currentStyle[t]),i},i=T.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",T.util.makeElementUnselectable=function(e){return void 0!==e.onselectstart&&(e.onselectstart=T.util.falseFunction),r?e.style[r]="none":"string"==typeof e.unselectable&&(e.unselectable="on"),e},T.util.makeElementSelectable=function(e){return void 0!==e.onselectstart&&(e.onselectstart=null),r?e.style[r]="":"string"==typeof e.unselectable&&(e.unselectable=""),e},T.util.setImageSmoothing=function(e,t){e.imageSmoothingEnabled=e.imageSmoothingEnabled||e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled||e.oImageSmoothingEnabled,e.imageSmoothingEnabled=t},T.util.getById=function(e){return"string"==typeof e?T.document.getElementById(e):e},T.util.toArray=o,T.util.addClass=function(e,t){e&&-1===(" "+e.className+" ").indexOf(" "+t+" ")&&(e.className+=(e.className?" ":"")+t)},T.util.makeElement=s,T.util.wrapElement=function(e,t,i){return"string"==typeof t&&(t=s(t,i)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t},T.util.getScrollLeftTop=a,T.util.getElementOffset=function(e){var i,r,n=e&&e.ownerDocument,o={left:0,top:0},s={left:0,top:0},l={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return s;for(var h in l)s[l[h]]+=parseInt(t(e,h),10)||0;return i=n.documentElement,void 0!==e.getBoundingClientRect&&(o=e.getBoundingClientRect()),r=a(e),{left:o.left+r.left-(i.clientLeft||0)+s.left,top:o.top+r.top-(i.clientTop||0)+s.top}},T.util.getNodeCanvas=function(e){var t=T.jsdomImplForWrapper(e);return t._canvas||t._image},T.util.cleanUpJsdomNode=function(e){if(T.isLikelyNode){var t=T.jsdomImplForWrapper(e);t&&(t._image=null,t._canvas=null,t._currentSrc=null,t._attributes=null,t._classList=null)}}}(),function(){function e(){}T.util.request=function(t,i){i||(i={});var r=i.method?i.method.toUpperCase():"GET",n=i.onComplete||function(){},o=new T.window.XMLHttpRequest,s=i.body||i.parameters;return o.onreadystatechange=function(){4===o.readyState&&(n(o),o.onreadystatechange=e)},"GET"===r&&(s=null,"string"==typeof i.parameters&&(t=function(e,t){return e+(/\?/.test(e)?"&":"?")+t}(t,i.parameters))),o.open(r,t,!0),"POST"!==r&&"PUT"!==r||o.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),o.send(s),o}}(),T.log=console.log,T.warn=console.warn,function(){var e=T.util.object.extend,t=T.util.object.clone,i=[];function r(){return!1}function n(e,t,i,r){return-i*Math.cos(e/r*(Math.PI/2))+i+t}T.util.object.extend(i,{cancelAll:function(){var e=this.splice(0);return e.forEach((function(e){e.cancel()})),e},cancelByCanvas:function(e){if(!e)return[];var t=this.filter((function(t){return"object"==typeof t.target&&t.target.canvas===e}));return t.forEach((function(e){e.cancel()})),t},cancelByTarget:function(e){var t=this.findAnimationsByTarget(e);return t.forEach((function(e){e.cancel()})),t},findAnimationIndex:function(e){return this.indexOf(this.findAnimation(e))},findAnimation:function(e){return this.find((function(t){return t.cancel===e}))},findAnimationsByTarget:function(e){return e?this.filter((function(t){return t.target===e})):[]}});var o=T.window.requestAnimationFrame||T.window.webkitRequestAnimationFrame||T.window.mozRequestAnimationFrame||T.window.oRequestAnimationFrame||T.window.msRequestAnimationFrame||function(e){return T.window.setTimeout(e,1e3/60)},s=T.window.cancelAnimationFrame||T.window.clearTimeout;function a(){return o.apply(T.window,arguments)}T.util.animate=function(i){i||(i={});var o,s=!1,l=function(){var e=T.runningAnimations.indexOf(o);return e>-1&&T.runningAnimations.splice(e,1)[0]};return o=e(t(i),{cancel:function(){return s=!0,l()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),T.runningAnimations.push(o),a((function(e){var t,h=e||+new Date,c=i.duration||500,u=h+c,d=i.onChange||r,f=i.abort||r,g=i.onComplete||r,_=i.easing||n,p="startValue"in i&&i.startValue.length>0,m="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?m.map((function(e,t){return v[t]-m[t]})):v-m);i.onStart&&i.onStart(),function e(i){var r=(t=i||+new Date)>u?c:t-h,n=r/c,S=p?m.map((function(e,t){return _(r,m[t],y[t],c)})):_(r,m,y,c),b=p?Math.abs((S[0]-m[0])/y[0]):Math.abs((S-m)/y);if(o.currentValue=p?S.slice():S,o.completionRate=b,o.durationRate=n,!s){if(!f(S,b,n))return t>u?(o.currentValue=p?v.slice():v,o.completionRate=1,o.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void l()):(d(S,b,n),void a(e));l()}}(h)})),o.cancel},T.util.requestAnimFrame=a,T.util.cancelAnimFrame=function(){return s.apply(T.window,arguments)},T.runningAnimations=i}(),function(){function e(e,t,i){var r="rgba("+parseInt(e[0]+i*(t[0]-e[0]),10)+","+parseInt(e[1]+i*(t[1]-e[1]),10)+","+parseInt(e[2]+i*(t[2]-e[2]),10);return(r+=","+(e&&t?parseFloat(e[3]+i*(t[3]-e[3])):1))+")"}T.util.animateColor=function(t,i,r,n){var o=new T.Color(t).getSource(),s=new T.Color(i).getSource(),a=n.onComplete,l=n.onChange;return n=n||{},T.util.animate(T.util.object.extend(n,{duration:r||500,startValue:o,endValue:s,byValue:s,easing:function(t,i,r,o){return e(i,r,n.colorEasing?n.colorEasing(t,o):1-Math.cos(t/o*(Math.PI/2)))},onComplete:function(t,i,r){if(a)return a(e(s,s,0),i,r)},onChange:function(t,i,r){if(l){if(Array.isArray(t))return l(e(t,t,0),i,r);l(t,i,r)}}}))}}(),function(){function e(e,t,i,r){return e-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===e||"xlink:href"===e||"font"===e)return i;if("imageSmoothing"===e)return"optimizeQuality"===i;a=l?i.map(o):o(i,n)}}else i="";return!l&&isNaN(a)?i:a}function f(e){return new RegExp("^("+e.join("|")+")\\b","i")}function g(e,t){var i,r,n,o,s=[];for(n=0,o=t.length;n1;)l.shift(),h=t.util.multiplyTransformMatrices(h,l[0]);return h}}();var v=new RegExp("^\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*$");function y(e){if(!t.svgViewBoxElementsRegEx.test(e.nodeName))return{};var i,r,n,s,a,l,h=e.getAttribute("viewBox"),c=1,u=1,d=e.getAttribute("width"),f=e.getAttribute("height"),g=e.getAttribute("x")||0,_=e.getAttribute("y")||0,p=e.getAttribute("preserveAspectRatio")||"",m=!h||!(h=h.match(v)),y=!d||!f||"100%"===d||"100%"===f,S=m&&y,b={},C="",w=0,T=0;if(b.width=0,b.height=0,b.toBeParsed=S,m&&(g||_)&&e.parentNode&&"#document"!==e.parentNode.nodeName&&(C=" translate("+o(g)+" "+o(_)+") ",a=(e.getAttribute("transform")||"")+C,e.setAttribute("transform",a),e.removeAttribute("x"),e.removeAttribute("y")),S)return b;if(m)return b.width=o(d),b.height=o(f),b;if(i=-parseFloat(h[1]),r=-parseFloat(h[2]),n=parseFloat(h[3]),s=parseFloat(h[4]),b.minX=i,b.minY=r,b.viewBoxWidth=n,b.viewBoxHeight=s,y?(b.width=n,b.height=s):(b.width=o(d),b.height=o(f),c=b.width/n,u=b.height/s),"none"!==(p=t.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),w=b.width-n*c,T=b.height-s*c,"Mid"===p.alignX&&(w/=2),"Mid"===p.alignY&&(T/=2),"Min"===p.alignX&&(w=0),"Min"===p.alignY&&(T=0)),1===c&&1===u&&0===i&&0===r&&0===g&&0===_)return b;if((g||_)&&"#document"!==e.parentNode.nodeName&&(C=" translate("+o(g)+" "+o(_)+") "),a=C+" matrix("+c+" 0 0 "+u+" "+(i*c+w)+" "+(r*u+T)+") ","svg"===e.nodeName){for(l=e.ownerDocument.createElementNS(t.svgNS,"g");e.firstChild;)l.appendChild(e.firstChild);e.appendChild(l)}else(l=e).removeAttribute("x"),l.removeAttribute("y"),a=l.getAttribute("transform")+a;return l.setAttribute("transform",a),b}function S(e,t){var i="xlink:href",r=m(e,t.getAttribute(i).slice(1));if(r&&r.getAttribute(i)&&S(e,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(e){r&&!t.hasAttribute(e)&&r.hasAttribute(e)&&t.setAttribute(e,r.getAttribute(e))})),!t.children.length)for(var n=r.cloneNode(!0);n.firstChild;)t.appendChild(n.firstChild);t.removeAttribute(i)}t.parseSVGDocument=function(e,i,n,o){if(e){!function(e){for(var i=g(e,["use","svg:use"]),r=0;i.length&&re.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return void 0===t&&(t=.5),t=Math.max(Math.min(1,t),0),new i(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,i=this.y-e.y;return Math.sqrt(t*t+i*i)},midPointFrom:function(e){return this.lerp(e)},min:function(e){return new i(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new i(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setFromPoint:function(e){return this.x=e.x,this.y=e.y,this},swap:function(e){var t=this.x,i=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=i},clone:function(){return new i(this.x,this.y)}})}(t),function(e){var t=e.fabric||(e.fabric={});function i(e){this.status=e,this.points=[]}t.Intersection?t.warn("fabric.Intersection is already defined"):(t.Intersection=i,t.Intersection.prototype={constructor:i,appendPoint:function(e){return this.points.push(e),this},appendPoints:function(e){return this.points=this.points.concat(e),this}},t.Intersection.intersectLineLine=function(e,r,n,o){var s,a=(o.x-n.x)*(e.y-n.y)-(o.y-n.y)*(e.x-n.x),l=(r.x-e.x)*(e.y-n.y)-(r.y-e.y)*(e.x-n.x),h=(o.y-n.y)*(r.x-e.x)-(o.x-n.x)*(r.y-e.y);if(0!==h){var c=a/h,u=l/h;0<=c&&c<=1&&0<=u&&u<=1?(s=new i("Intersection")).appendPoint(new t.Point(e.x+c*(r.x-e.x),e.y+c*(r.y-e.y))):s=new i}else s=new i(0===a||0===l?"Coincident":"Parallel");return s},t.Intersection.intersectLinePolygon=function(e,t,r){var n,o,s,a,l=new i,h=r.length;for(a=0;a0&&(l.status="Intersection"),l},t.Intersection.intersectPolygonPolygon=function(e,t){var r,n=new i,o=e.length;for(r=0;r0&&(n.status="Intersection"),n},t.Intersection.intersectPolygonRectangle=function(e,r,n){var o=r.min(n),s=r.max(n),a=new t.Point(s.x,o.y),l=new t.Point(o.x,s.y),h=i.intersectLinePolygon(o,a,e),c=i.intersectLinePolygon(a,s,e),u=i.intersectLinePolygon(s,l,e),d=i.intersectLinePolygon(l,o,e),f=new i;return f.appendPoints(h.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(t),function(e){var t=e.fabric||(e.fabric={});function i(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e}t.Color?t.warn("fabric.Color is already defined."):(t.Color=i,t.Color.prototype={_tryParsingColor:function(e){var t;e in i.colorNameMap&&(e=i.colorNameMap[e]),"transparent"===e&&(t=[255,255,255,0]),t||(t=i.sourceFromHex(e)),t||(t=i.sourceFromRgb(e)),t||(t=i.sourceFromHsl(e)),t||(t=[0,0,0,1]),t&&this.setSource(t)},_rgbToHsl:function(e,i,r){e/=255,i/=255,r/=255;var n,o,s,a=t.util.array.max([e,i,r]),l=t.util.array.min([e,i,r]);if(s=(a+l)/2,a===l)n=o=0;else{var h=a-l;switch(o=s>.5?h/(2-a-l):h/(a+l),a){case e:n=(i-r)/h+(i0)-(e<0)||+e};function f(e,t){var i=e.angle+u(Math.atan2(t.y,t.x))+360;return Math.round(i%360/45)}function g(e,i){var r=i.transform.target,n=r.canvas,o=t.util.object.clone(i);o.target=r,n&&n.fire("object:"+e,o),r.fire(e,i)}function _(e,t){var i=t.canvas,r=e[i.uniScaleKey];return i.uniformScaling&&!r||!i.uniformScaling&&r}function p(e){return e.originX===h&&e.originY===h}function m(e,t,i){var r=e.lockScalingX,n=e.lockScalingY;return!((!r||!n)&&(t||!r&&!n||!i)&&(!r||"x"!==t)&&(!n||"y"!==t))}function v(e,t,i,r){return{e,transform:t,pointer:{x:i,y:r}}}function y(e){return function(t,i,r,n){var o=i.target,s=o.getCenterPoint(),a=o.translateToOriginPoint(s,i.originX,i.originY),l=e(t,i,r,n);return o.setPositionByOrigin(a,i.originX,i.originY),l}}function S(e,t){return function(i,r,n,o){var s=t(i,r,n,o);return s&&g(e,v(i,r,n,o)),s}}function b(e,i,r,n,o){var s=e.target,a=s.controls[e.corner],l=s.canvas.getZoom(),h=s.padding/l,c=s.toLocalPoint(new t.Point(n,o),i,r);return c.x>=h&&(c.x-=h),c.x<=-h&&(c.x+=h),c.y>=h&&(c.y-=h),c.y<=h&&(c.y+=h),c.x-=a.offsetX,c.y-=a.offsetY,c}function C(e){return e.flipX!==e.flipY}function w(e,t,i,r,n){if(0!==e[t]){var o=n/e._getTransformedDimensions()[r]*e[i];e.set(i,o)}}function T(e,t,i,r){var n,h=t.target,c=h._getTransformedDimensions(0,h.skewY),d=b(t,t.originX,t.originY,i,r),f=Math.abs(2*d.x)-c.x,g=h.skewX;f<2?n=0:(n=u(Math.atan2(f/h.scaleX,c.y/h.scaleY)),t.originX===o&&t.originY===l&&(n=-n),t.originX===a&&t.originY===s&&(n=-n),C(h)&&(n=-n));var _=g!==n;if(_){var p=h._getTransformedDimensions().y;h.set("skewX",n),w(h,"skewY","scaleY","y",p)}return _}function x(e,t,i,r){var n,h=t.target,c=h._getTransformedDimensions(h.skewX,0),d=b(t,t.originX,t.originY,i,r),f=Math.abs(2*d.y)-c.y,g=h.skewY;f<2?n=0:(n=u(Math.atan2(f/h.scaleY,c.x/h.scaleX)),t.originX===o&&t.originY===l&&(n=-n),t.originX===a&&t.originY===s&&(n=-n),C(h)&&(n=-n));var _=g!==n;if(_){var p=h._getTransformedDimensions().x;h.set("skewY",n),w(h,"skewX","scaleX","x",p)}return _}function E(e,t,i,r,n){n=n||{};var o,s,a,l,h,u,f=t.target,g=f.lockScalingX,v=f.lockScalingY,y=n.by,S=_(e,f),C=m(f,y,S),w=t.gestureScale;if(C)return!1;if(w)s=t.scaleX*w,a=t.scaleY*w;else{if(o=b(t,t.originX,t.originY,i,r),h="y"!==y?d(o.x):1,u="x"!==y?d(o.y):1,t.signX||(t.signX=h),t.signY||(t.signY=u),f.lockScalingFlip&&(t.signX!==h||t.signY!==u))return!1;if(l=f._getTransformedDimensions(),S&&!y){var T=Math.abs(o.x)+Math.abs(o.y),x=t.original,E=T/(Math.abs(l.x*x.scaleX/f.scaleX)+Math.abs(l.y*x.scaleY/f.scaleY));s=x.scaleX*E,a=x.scaleY*E}else s=Math.abs(o.x*f.scaleX/l.x),a=Math.abs(o.y*f.scaleY/l.y);p(t)&&(s*=2,a*=2),t.signX!==h&&"y"!==y&&(t.originX=c[t.originX],s*=-1,t.signX=h),t.signY!==u&&"x"!==y&&(t.originY=c[t.originY],a*=-1,t.signY=u)}var A=f.scaleX,I=f.scaleY;return y?("x"===y&&f.set("scaleX",s),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",s),!v&&f.set("scaleY",a)),A!==f.scaleX||I!==f.scaleY}n.scaleCursorStyleHandler=function(e,t,r){var n=_(e,r),o="";if(0!==t.x&&0===t.y?o="x":0===t.x&&0!==t.y&&(o="y"),m(r,o,n))return"not-allowed";var s=f(r,t);return i[s]+"-resize"},n.skewCursorStyleHandler=function(e,t,i){var n="not-allowed";if(0!==t.x&&i.lockSkewingY)return n;if(0!==t.y&&i.lockSkewingX)return n;var o=f(i,t)%4;return r[o]+"-resize"},n.scaleSkewCursorStyleHandler=function(e,t,i){return e[i.canvas.altActionKey]?n.skewCursorStyleHandler(e,t,i):n.scaleCursorStyleHandler(e,t,i)},n.rotationWithSnapping=S("rotating",y((function(e,t,i,r){var n=t,o=n.target,s=o.translateToOriginPoint(o.getCenterPoint(),n.originX,n.originY);if(o.lockRotation)return!1;var a,l=Math.atan2(n.ey-s.y,n.ex-s.x),h=Math.atan2(r-s.y,i-s.x),c=u(h-l+n.theta);if(o.snapAngle>0){var d=o.snapAngle,f=o.snapThreshold||d,g=Math.ceil(c/d)*d,_=Math.floor(c/d)*d;Math.abs(c-_)0?o:a:(c>0&&(n=u===s?o:a),c<0&&(n=u===s?a:o),C(l)&&(n=n===o?a:o)),t.originX=n,S("skewing",y(T))(e,t,i,r))},n.skewHandlerY=function(e,t,i,r){var n,a=t.target,c=a.skewY,u=t.originX;return!a.lockSkewingY&&(0===c?n=b(t,h,h,i,r).y>0?s:l:(c>0&&(n=u===o?s:l),c<0&&(n=u===o?l:s),C(a)&&(n=n===s?l:s)),t.originY=n,S("skewing",y(x))(e,t,i,r))},n.dragHandler=function(e,t,i,r){var n=t.target,o=i-t.offsetX,s=r-t.offsetY,a=!n.get("lockMovementX")&&n.left!==o,l=!n.get("lockMovementY")&&n.top!==s;return a&&n.set("left",o),l&&n.set("top",s),(a||l)&&g("moving",v(e,t,i,r)),a||l},n.scaleOrSkewActionName=function(e,t,i){var r=e[i.canvas.altActionKey];return 0===t.x?r?"skewX":"scaleY":0===t.y?r?"skewY":"scaleX":void 0},n.rotationStyleHandler=function(e,t,i){return i.lockRotation?"not-allowed":t.cursorStyle},n.fireEvent=g,n.wrapWithFixedAnchor=y,n.wrapWithFireEvent=S,n.getLocalPoint=b,t.controlsUtils=n}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.degreesToRadians,r=t.controlsUtils;r.renderCircleControl=function(e,t,i,r,n){r=r||{};var o,s=this.sizeX||r.cornerSize||n.cornerSize,a=this.sizeY||r.cornerSize||n.cornerSize,l=void 0!==r.transparentCorners?r.transparentCorners:n.transparentCorners,h=l?"stroke":"fill",c=!l&&(r.cornerStrokeColor||n.cornerStrokeColor),u=t,d=i;e.save(),e.fillStyle=r.cornerColor||n.cornerColor,e.strokeStyle=r.cornerStrokeColor||n.cornerStrokeColor,s>a?(o=s,e.scale(1,a/s),d=i*s/a):a>s?(o=a,e.scale(s/a,1),u=t*a/s):o=s,e.lineWidth=1,e.beginPath(),e.arc(u,d,o/2,0,2*Math.PI,!1),e[h](),c&&e.stroke(),e.restore()},r.renderSquareControl=function(e,t,r,n,o){n=n||{};var s=this.sizeX||n.cornerSize||o.cornerSize,a=this.sizeY||n.cornerSize||o.cornerSize,l=void 0!==n.transparentCorners?n.transparentCorners:o.transparentCorners,h=l?"stroke":"fill",c=!l&&(n.cornerStrokeColor||o.cornerStrokeColor),u=s/2,d=a/2;e.save(),e.fillStyle=n.cornerColor||o.cornerColor,e.strokeStyle=n.cornerStrokeColor||o.cornerStrokeColor,e.lineWidth=1,e.translate(t,r),e.rotate(i(o.angle)),e[h+"Rect"](-u,-d,s,a),c&&e.strokeRect(-u,-d,s,a),e.restore()}}(t),function(e){var t=e.fabric||(e.fabric={});t.Control=function(e){for(var t in e)this[t]=e[t]},t.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(e,t){return t.cursorStyle},getActionName:function(e,t){return t.actionName},getVisibility:function(e,t){var i=e._controlsVisibility;return i&&void 0!==i[t]?i[t]:this.visible},setVisibility:function(e){this.visible=e},positionHandler:function(e,i){return t.util.transformPoint({x:this.x*e.x+this.offsetX,y:this.y*e.y+this.offsetY},i)},calcCornerCoords:function(e,i,r,n,o){var s,a,l,h,c=o?this.touchSizeX:this.sizeX,u=o?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-t.util.degreesToRadians(e),_=Math.PI/2-d-t.util.degreesToRadians(e);s=f*t.util.cos(g),a=f*t.util.sin(g),l=f*t.util.cos(_),h=f*t.util.sin(_)}else f=.7071067812*(c&&u?c:i),g=t.util.degreesToRadians(45-e),s=l=f*t.util.cos(g),a=h=f*t.util.sin(g);return{tl:{x:r-h,y:n-l},tr:{x:r+s,y:n-a},bl:{x:r-s,y:n+a},br:{x:r+h,y:n+l}}},render:function(e,i,r,n,o){"circle"===((n=n||{}).cornerStyle||o.cornerStyle)?t.controlsUtils.renderCircleControl.call(this,e,i,r,n,o):t.controlsUtils.renderSquareControl.call(this,e,i,r,n,o)}}}(t),function(){function e(e,t){var i,r,n,o,s=e.getAttribute("style"),a=e.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,s){var l=s.split(/\s*;\s*/);for(""===l[l.length-1]&&l.pop(),o=l.length;o--;){var h=l[o].split(/\s*:\s*/),c=h[0].trim(),u=h[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(n=u)}}return i||(i=e.getAttribute("stop-color")||"rgb(0,0,0)"),n||(n=e.getAttribute("stop-opacity")),r=(i=new T.Color(i)).getAlpha(),n=isNaN(parseFloat(n))?1:parseFloat(n),n*=r*t,{offset:a,color:i.toRgb(),opacity:n}}var t=T.util.object.clone;T.Gradient=T.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(e){e||(e={}),e.coords||(e.coords={});var t,i=this;Object.keys(e).forEach((function(t){i[t]=e[t]})),this.id?this.id+="_"+T.Object.__uid++:this.id=T.Object.__uid++,t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},"radial"===this.type&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.colorStops=e.colorStops.slice()},addColorStop:function(e){for(var t in e){var i=new T.Color(e[t]);this.colorStops.push({offset:parseFloat(t),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(e){var t={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return T.util.populateWithProperties(this,t,e),t},toSVG:function(e,i){var r,n,o,s,a=t(this.coords,!0),l=(i=i||{},t(this.colorStops,!0)),h=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():T.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(l.sort((function(e,t){return e.offset-t.offset})),"objectBoundingBox"===g?(u/=e.width,d/=e.height):(u+=e.width/2,d+=e.height/2),"path"===e.type&&"percentage"!==this.gradientUnits&&(u-=e.pathOffset.x,d-=e.pathOffset.y),c[4]-=u,c[5]-=d,s='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',s+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+T.util.matrixToSVG(c)+'" ',"linear"===this.type?o=["\n']:"radial"===this.type&&(o=["\n']),"radial"===this.type){if(h)for((l=l.concat()).reverse(),r=0,n=l.length;r0){var p=_/Math.max(a.r1,a.r2);for(r=0,n=l.length;r\n')}return o.push("linear"===this.type?"\n":"\n"),o.join("")},toLive:function(e){var t,i,r,n=T.util.object.clone(this.coords);if(this.type){for("linear"===this.type?t=e.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(t=e.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2)),i=0,r=this.colorStops.length;i1?1:o,isNaN(o)&&(o=1);var s,a,l,h,c=t.getElementsByTagName("stop"),u="userSpaceOnUse"===t.getAttribute("gradientUnits")?"pixels":"percentage",d=t.getAttribute("gradientTransform")||"",f=[],g=0,_=0;for("linearGradient"===t.nodeName||"LINEARGRADIENT"===t.nodeName?(s="linear",a=function(e){return{x1:e.getAttribute("x1")||0,y1:e.getAttribute("y1")||0,x2:e.getAttribute("x2")||"100%",y2:e.getAttribute("y2")||0}}(t)):(s="radial",a=function(e){return{x1:e.getAttribute("fx")||e.getAttribute("cx")||"50%",y1:e.getAttribute("fy")||e.getAttribute("cy")||"50%",r1:0,x2:e.getAttribute("cx")||"50%",y2:e.getAttribute("cy")||"50%",r2:e.getAttribute("r")||"50%"}}(t)),l=c.length;l--;)f.push(e(c[l],o));return h=T.parseTransformAttribute(d),function(e,t,i,r){var n,o;Object.keys(t).forEach((function(e){"Infinity"===(n=t[e])?o=1:"-Infinity"===n?o=0:(o=parseFloat(t[e],10),"string"==typeof n&&/^(\d+\.\d+)%|(\d+)%$/.test(n)&&(o*=.01,"pixels"===r&&("x1"!==e&&"x2"!==e&&"r2"!==e||(o*=i.viewBoxWidth||i.width),"y1"!==e&&"y2"!==e||(o*=i.viewBoxHeight||i.height)))),t[e]=o}))}(0,a,n,u),"pixels"===u&&(g=-i.left,_=-i.top),new T.Gradient({id:t.getAttribute("id"),type:s,coords:a,colorStops:f,gradientUnits:u,gradientTransform:h,offsetX:g,offsetY:_})}})}(),m=T.util.toFixed,T.Pattern=T.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(e,t){if(e||(e={}),this.id=T.Object.__uid++,this.setOptions(e),!e.source||e.source&&"string"!=typeof e.source)t&&t(this);else{var i=this;this.source=T.util.createImage(),T.util.loadImage(e.source,(function(e,r){i.source=e,t&&t(i,r)}),null,this.crossOrigin)}},toObject:function(e){var t,i,r=T.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?t=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(t=this.source.toDataURL()),i={type:"pattern",source:t,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:m(this.offsetX,r),offsetY:m(this.offsetY,r),patternTransform:this.patternTransform?this.patternTransform.concat():null},T.util.populateWithProperties(this,i,e),i},toSVG:function(e){var t="function"==typeof this.source?this.source():this.source,i=t.width/e.width,r=t.height/e.height,n=this.offsetX/e.width,o=this.offsetY/e.height,s="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,o&&(r+=Math.abs(o))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,n&&(i+=Math.abs(n))),t.src?s=t.src:t.toDataURL&&(s=t.toDataURL()),'\n\n\n'},setOptions:function(e){for(var t in e)this[t]=e[t]},toLive:function(e){var t=this.source;if(!t)return"";if(void 0!==t.src){if(!t.complete)return"";if(0===t.naturalWidth||0===t.naturalHeight)return""}return e.createPattern(t,this.repeat)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.toFixed;t.Shadow?t.warn("fabric.Shadow is already defined."):(t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(e){for(var i in"string"==typeof e&&(e=this._parseShadow(e)),e)this[i]=e[i];this.id=t.Object.__uid++},_parseShadow:function(e){var i=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var r=40,n=40,o=t.Object.NUM_FRACTION_DIGITS,s=t.util.rotateVector({x:this.offsetX,y:this.offsetY},t.util.degreesToRadians(-e.angle)),a=new t.Color(this.color);return e.width&&e.height&&(r=100*i((Math.abs(s.x)+this.blur)/e.width,o)+20,n=100*i((Math.abs(s.y)+this.blur)/e.height,o)+20),e.flipX&&(s.x*=-1),e.flipY&&(s.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var e={},i=t.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(t){this[t]!==i[t]&&(e[t]=this[t])}),this),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(t),function(){if(T.StaticCanvas)T.warn("fabric.StaticCanvas is already defined.");else{var e=T.util.object.extend,t=T.util.getElementOffset,i=T.util.removeFromArray,r=T.util.toFixed,n=T.util.transformPoint,o=T.util.invertTransform,s=T.util.getNodeCanvas,a=T.util.createCanvasElement,l=new Error("Could not initialize `canvas` element");T.StaticCanvas=T.util.createClass(T.CommonMethods,{initialize:function(e,t){t||(t={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(e,t)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:T.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(e,t){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(e),this._initOptions(t),this.interactive||this._initRetinaScaling(),t.overlayImage&&this.setOverlayImage(t.overlayImage,i),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,i),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,i),t.overlayColor&&this.setOverlayColor(t.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return T.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,T.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var e=T.devicePixelRatio;this.__initRetinaScaling(e,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(e,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(e,t,i){t.setAttribute("width",this.width*e),t.setAttribute("height",this.height*e),i.scale(e,e)},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,i){return this.__setBgOverlayImage("overlayImage",e,t,i)},setBackgroundImage:function(e,t,i){return this.__setBgOverlayImage("backgroundImage",e,t,i)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,i,r){return"string"==typeof t?T.util.loadImage(t,(function(t,n){if(t){var o=new T.Image(t,r);this[e]=o,o.canvas=this}i&&i(t,n)}),this,r&&r.crossOrigin):(r&&t.setOptions(r),this[e]=t,t&&(t.canvas=this),i&&i(t,!1)),this},__setBgOverlayColor:function(e,t,i){return this[e]=t,this._initGradient(t,e),this._initPattern(t,e,i),this},_createCanvasElement:function(){var e=a();if(!e)throw l;if(e.style||(e.style={}),void 0===e.getContext)throw l;return e},_initOptions:function(e){var t=this.lowerCanvasEl;this._setOptions(e),this.width=this.width||parseInt(t.width,10)||0,this.height=this.height||parseInt(t.height,10)||0,this.lowerCanvasEl.style&&(t.width=this.width,t.height=this.height,t.style.width=this.width+"px",t.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(e){e&&e.getContext?this.lowerCanvasEl=e:this.lowerCanvasEl=T.util.getById(e)||this._createCanvasElement(),T.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e,t){return this.setDimensions({width:e},t)},setHeight:function(e,t){return this.setDimensions({height:e},t)},setDimensions:function(e,t){var i;for(var r in t=t||{},e)i=e[r],t.cssOnly||(this._setBackstoreDimension(r,e[r]),i+="px",this.hasLostContext=!0),t.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),t.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.upperCanvasEl&&(this.upperCanvasEl[e]=t),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this[e]=t,this},_setCssDimension:function(e,t){return this.lowerCanvasEl.style[e]=t,this.upperCanvasEl&&(this.upperCanvasEl.style[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(e){var t,i,r,n=this._activeObject,o=this.backgroundImage,s=this.overlayImage;for(this.viewportTransform=e,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",t),this._setSVGObjects(i,t),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",t),i.push(""),i.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('\n','\n')},_setSVGHeader:function(e,t){var i,n=t.width||this.width,o=t.height||this.height,s='viewBox="0 0 '+this.width+" "+this.height+'" ',a=T.Object.NUM_FRACTION_DIGITS;t.viewBox?s='viewBox="'+t.viewBox.x+" "+t.viewBox.y+" "+t.viewBox.width+" "+t.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,s='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),e.push("\n',"Created with Fabric.js ",T.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(t),"\n")},createSVGClipPathMarkup:function(e){var t=this.clipPath;return t?(t.clipPathId="CLIPPATH_"+T.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(e.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var e=this;return["background","overlay"].map((function(t){var i=e[t+"Color"];if(i&&i.toLive){var r=e[t+"Vpt"],n=e.viewportTransform,o={width:e.width/(r?n[0]:1),height:e.height/(r?n[3]:1)};return i.toSVG(o,{additionalTransform:r?T.util.matrixToSVG(n):""})}})).join("")},createSVGFontFacesMarkup:function(){var e,t,i,r,n,o,s,a,l="",h={},c=T.fontPaths,u=[];for(this._objects.forEach((function e(t){u.push(t),t._objects&&t._objects.forEach(e)})),s=0,a=u.length;s',"\n",l,"","\n"].join("")),l},_setSVGObjects:function(e,t){var i,r,n,o=this._objects;for(r=0,n=o.length;r\n")}else e.push('\n")},sendToBack:function(e){if(!e)return this;var t,r,n,o=this._activeObject;if(e===o&&"activeSelection"===e.type)for(t=(n=o._objects).length;t--;)r=n[t],i(this._objects,r),this._objects.unshift(r);else i(this._objects,e),this._objects.unshift(e);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(e){if(!e)return this;var t,r,n,o=this._activeObject;if(e===o&&"activeSelection"===e.type)for(n=o._objects,t=0;t0+h&&(s=o-1,i(this._objects,n),this._objects.splice(s,0,n)),h++;else 0!==(o=this._objects.indexOf(e))&&(s=this._findNewLowerIndex(e,o,t),i(this._objects,e),this._objects.splice(s,0,e));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(e,t,i){var r,n;if(i){for(r=t,n=t-1;n>=0;--n)if(e.intersectsWithObject(this._objects[n])||e.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(e)){r=n;break}}else r=t-1;return r},bringForward:function(e,t){if(!e)return this;var r,n,o,s,a,l=this._activeObject,h=0;if(e===l&&"activeSelection"===e.type)for(r=(a=l._objects).length;r--;)n=a[r],(o=this._objects.indexOf(n))"}}),e(T.StaticCanvas.prototype,T.Observable),e(T.StaticCanvas.prototype,T.Collection),e(T.StaticCanvas.prototype,T.DataURLExporter),e(T.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=a();if(!t||!t.getContext)return null;var i=t.getContext("2d");return i&&"setLineDash"===e?void 0!==i.setLineDash:null}}),T.StaticCanvas.prototype.toJSON=T.StaticCanvas.prototype.toObject,T.isLikelyNode&&(T.StaticCanvas.prototype.createPNGStream=function(){var e=s(this.lowerCanvasEl);return e&&e.createPNGStream()},T.StaticCanvas.prototype.createJPEGStream=function(e){var t=s(this.lowerCanvasEl);return t&&t.createJPEGStream(e)})}}(),T.BaseBrush=T.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(e){e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.miterLimit=this.strokeMiterLimit,e.lineJoin=this.strokeLineJoin,e.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(e){var t=this.canvas.viewportTransform;e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5])},_setShadow:function(){if(this.shadow){var e=this.canvas,t=this.shadow,i=e.contextTop,r=e.getZoom();e&&e._isRetinaScaling()&&(r*=T.devicePixelRatio),i.shadowColor=t.color,i.shadowBlur=t.blur*r,i.shadowOffsetX=t.offsetX*r,i.shadowOffsetY=t.offsetY*r}},needsFullRender:function(){return new T.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_isOutSideCanvas:function(e){return e.x<0||e.x>this.canvas.getWidth()||e.y<0||e.y>this.canvas.getHeight()}}),T.PencilBrush=T.util.createClass(T.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(e){this.canvas=e,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(e,t,i){var r=t.midPointFrom(i);return e.quadraticCurveTo(t.x,t.y,r.x,r.y),r},onMouseDown:function(e,t){this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],this._prepareForDrawing(e),this._captureDrawingPath(e),this._render())},onMouseMove:function(e,t){if(this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(e))&&this._captureDrawingPath(e)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,r=i.length,n=this.canvas.contextTop;this._saveAndTransform(n),this.oldEnd&&(n.beginPath(),n.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(n,i[r-2],i[r-1],!0),n.stroke(),n.restore()}},onMouseUp:function(e){return!this.canvas._isMainEvent(e.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(e){var t=new T.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){return!(this._points.length>1&&e.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(e),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(e){var t=new T.Point(e.x,e.y);return this._addPoint(t)},_render:function(e){var t,i,r=this._points[0],n=this._points[1];if(e=e||this.canvas.contextTop,this._saveAndTransform(e),e.beginPath(),2===this._points.length&&r.x===n.x&&r.y===n.y){var o=this.width/1e3;r=new T.Point(r.x,r.y),n=new T.Point(n.x,n.y),r.x-=o,n.x+=o}for(e.moveTo(r.x,r.y),t=1,i=this._points.length;t=n&&(s=e[i],a.push(s));return a.push(e[o]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var e=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(e))this.canvas.requestRenderAll();else{var t=this.createPath(e);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:t}),this.canvas.add(t),this.canvas.requestRenderAll(),t.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:t})}}}),T.CircleBrush=T.util.createClass(T.BaseBrush,{width:10,initialize:function(e){this.canvas=e,this.points=[]},drawDot:function(e){var t=this.addPoint(e),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,t),i.restore()},dot:function(e,t){e.fillStyle=t.fill,e.beginPath(),e.arc(t.x,t.y,t.radius,0,2*Math.PI,!1),e.closePath(),e.fill()},onMouseDown:function(e){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(e)},_render:function(){var e,t,i=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(i),e=0,t=r.length;e0&&!this.preserveObjectStacking){t=[],i=[];for(var n=0,o=this._objects.length;n1&&(this._activeObject._objects=i),t.push.apply(t,i)}else t=this._objects;return t},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var e=this.contextContainer;return this.renderCanvas(e,this._chooseObjectsToRender()),this},renderTopLayer:function(e){e.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(e),this.contextTopDirty=!0),e.restore()},renderTop:function(){var e=this.contextTop;return this.clearContext(e),this.renderTopLayer(e),this.fire("after:render"),this},_normalizePointer:function(e,t){var i=e.calcTransformMatrix(),r=T.util.invertTransform(i),n=this.restorePointerVpt(t);return T.util.transformPoint(n,r)},isTargetTransparent:function(e,t,i){if(e.shouldCache()&&e._cacheCanvas&&e!==this._activeObject){var r=this._normalizePointer(e,{x:t,y:i}),n=Math.max(e.cacheTranslationX+r.x*e.zoomX,0),o=Math.max(e.cacheTranslationY+r.y*e.zoomY,0);return T.util.isTransparent(e._cacheContext,Math.round(n),Math.round(o),this.targetFindTolerance)}var s=this.contextCache,a=e.selectionBackgroundColor,l=this.viewportTransform;return e.selectionBackgroundColor="",this.clearContext(s),s.save(),s.transform(l[0],l[1],l[2],l[3],l[4],l[5]),e.render(s),s.restore(),e.selectionBackgroundColor=a,T.util.isTransparent(s,t,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(e){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(t){return!0===e[t]})):e[this.selectionKey]},_shouldClearSelection:function(e,t){var i=this.getActiveObjects(),r=this._activeObject;return!t||t&&r&&i.length>1&&-1===i.indexOf(t)&&r!==t&&!this._isSelectionKeyPressed(e)||t&&!t.evented||t&&!t.selectable&&r&&r!==t},_shouldCenterTransform:function(e,t,i){var r;if(e)return"scale"===t||"scaleX"===t||"scaleY"===t||"resizing"===t?r=this.centeredScaling||e.centeredScaling:"rotate"===t&&(r=this.centeredRotation||e.centeredRotation),r?!i:i},_getOriginFromCorner:function(e,t){var i={x:e.originX,y:e.originY};return"ml"===t||"tl"===t||"bl"===t?i.x="right":"mr"!==t&&"tr"!==t&&"br"!==t||(i.x="left"),"tl"===t||"mt"===t||"tr"===t?i.y="bottom":"bl"!==t&&"mb"!==t&&"br"!==t||(i.y="top"),i},_getActionFromCorner:function(e,t,i,r){if(!t||!e)return"drag";var n=r.controls[t];return n.getActionName(i,n,r)},_setupCurrentTransform:function(e,i,r){if(i){var n=this.getPointer(e),o=i.__corner,s=i.controls[o],a=r&&o?s.getActionHandler(e,i,s):T.controlsUtils.dragHandler,l=this._getActionFromCorner(r,o,e,i),h=this._getOriginFromCorner(i,o),c=e[this.centeredKey],u={target:i,action:l,actionHandler:a,corner:o,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:n.x-i.left,offsetY:n.y-i.top,originX:h.x,originY:h.y,ex:n.x,ey:n.y,lastX:n.x,lastY:n.y,theta:t(i.angle),width:i.width*i.scaleX,shiftKey:e.shiftKey,altKey:c,original:T.util.saveObjectTransform(i)};this._shouldCenterTransform(i,l,c)&&(u.originX="center",u.originY="center"),u.original.originX=h.x,u.original.originY=h.y,this._currentTransform=u,this._beforeTransform(e)}},setCursor:function(e){this.upperCanvasEl.style.cursor=e},_drawSelection:function(e){var t=this._groupSelector,i=new T.Point(t.ex,t.ey),r=T.util.transformPoint(i,this.viewportTransform),n=new T.Point(t.ex+t.left,t.ey+t.top),o=T.util.transformPoint(n,this.viewportTransform),s=Math.min(r.x,o.x),a=Math.min(r.y,o.y),l=Math.max(r.x,o.x),h=Math.max(r.y,o.y),c=this.selectionLineWidth/2;this.selectionColor&&(e.fillStyle=this.selectionColor,e.fillRect(s,a,l-s,h-a)),this.selectionLineWidth&&this.selectionBorderColor&&(e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor,s+=c,a+=c,l-=c,h-=c,T.Object.prototype._setLineDash.call(this,e,this.selectionDashArray),e.strokeRect(s,a,l-s,h-a))},findTarget:function(e,t){if(!this.skipTargetFind){var r,n,o=this.getPointer(e,!0),s=this._activeObject,a=this.getActiveObjects(),l=i(e),h=a.length>1&&!t||1===a.length;if(this.targets=[],h&&s._findTargetCorner(o,l))return s;if(a.length>1&&!t&&s===this._searchPossibleTargets([s],o))return s;if(1===a.length&&s===this._searchPossibleTargets([s],o)){if(!this.preserveObjectStacking)return s;r=s,n=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,o);return e[this.altSelectionKey]&&c&&r&&c!==r&&(c=r,this.targets=n),c}},_checkTarget:function(e,t,i){if(t&&t.visible&&t.evented&&t.containsPoint(e)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing)return!0;if(!this.isTargetTransparent(t,i.x,i.y))return!0}},_searchPossibleTargets:function(e,t){for(var i,r,n=e.length;n--;){var o=e[n],s=o.group?this._normalizePointer(o.group,t):t;if(this._checkTarget(s,o,t)){(i=e[n]).subTargetCheck&&i instanceof T.Group&&(r=this._searchPossibleTargets(i._objects,t))&&this.targets.push(r);break}}return i},restorePointerVpt:function(e){return T.util.transformPoint(e,T.util.invertTransform(this.viewportTransform))},getPointer:function(t,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var r,n=e(t),o=this.upperCanvasEl,s=o.getBoundingClientRect(),a=s.width||0,l=s.height||0;a&&l||("top"in s&&"bottom"in s&&(l=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(a=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,i||(n=this.restorePointerVpt(n));var h=this.getRetinaScaling();return 1!==h&&(n.x/=h,n.y/=h),r=0===a||0===l?{width:1,height:1}:{width:o.width/a,height:o.height/l},{x:n.x*r.width,y:n.y*r.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),t=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),T.util.addClass(i,"upper-canvas "+e),this.wrapperEl.appendChild(i),this._copyCanvasStyle(t,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=T.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),T.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),T.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(e){var t=this.width||e.width,i=this.height||e.height;T.util.setStyle(e,{position:"absolute",width:t+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),e.width=t,e.height=i,T.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var e=this._activeObject;return e?"activeSelection"===e.type&&e._objects?e._objects.slice(0):[e]:[]},_onObjectRemoved:function(e){e===this._activeObject&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared",{target:e}),e.fire("deselected")),e===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",e)},_fireSelectionEvents:function(e,t){var i=!1,r=this.getActiveObjects(),n=[],o=[];e.forEach((function(e){-1===r.indexOf(e)&&(i=!0,e.fire("deselected",{e:t,target:e}),o.push(e))})),r.forEach((function(r){-1===e.indexOf(r)&&(i=!0,r.fire("selected",{e:t,target:r}),n.push(r))})),e.length>0&&r.length>0?i&&this.fire("selection:updated",{e:t,selected:n,deselected:o}):r.length>0?this.fire("selection:created",{e:t,selected:n}):e.length>0&&this.fire("selection:cleared",{e:t,deselected:o})},setActiveObject:function(e,t){var i=this.getActiveObjects();return this._setActiveObject(e,t),this._fireSelectionEvents(i,t),this},_setActiveObject:function(e,t){return this._activeObject!==e&&!!this._discardActiveObject(t,e)&&!e.onSelect({e:t})&&(this._activeObject=e,!0)},_discardActiveObject:function(e,t){var i=this._activeObject;if(i){if(i.onDeselect({e,object:t}))return!1;this._activeObject=null}return!0},discardActiveObject:function(e){var t=this.getActiveObjects(),i=this.getActiveObject();return t.length&&this.fire("before:selection:cleared",{target:i,e}),this._discardActiveObject(e),this._fireSelectionEvents(t,e),this},dispose:function(){var e=this.wrapperEl;return this.removeListeners(),e.removeChild(this.upperCanvasEl),e.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(e){T.util.cleanUpJsdomNode(this[e]),this[e]=void 0}.bind(this)),e.parentNode&&e.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,T.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(e){var t=this._activeObject;t&&t._renderControls(e)},_toObject:function(e,t,i){var r=this._realizeGroupTransformOnObject(e),n=this.callSuper("_toObject",e,t,i);return this._unwindGroupTransformOnObject(e,r),n},_realizeGroupTransformOnObject:function(e){if(e.group&&"activeSelection"===e.group.type&&this._activeObject===e.group){var t={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){t[i]=e[i]})),T.util.addTransformToObject(e,this._activeObject.calcOwnMatrix()),t}return null},_unwindGroupTransformOnObject:function(e,t){t&&e.set(t)},_setSVGObject:function(e,t,i){var r=this._realizeGroupTransformOnObject(t);this.callSuper("_setSVGObject",e,t,i),this._unwindGroupTransformOnObject(t,r)},setViewportTransform:function(e){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),T.StaticCanvas.prototype.setViewportTransform.call(this,e)}}),T.StaticCanvas)"prototype"!==r&&(T.Canvas[r]=T.StaticCanvas[r])}(),function(){var e=T.util.addListener,t=T.util.removeListener,i={passive:!1};function r(e,t){return e.button&&e.button===t-1}T.util.object.extend(T.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(e,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(e,t){var r=this.upperCanvasEl,n=this._getEventPrefix();e(T.window,"resize",this._onResize),e(r,n+"down",this._onMouseDown),e(r,n+"move",this._onMouseMove,i),e(r,n+"out",this._onMouseOut),e(r,n+"enter",this._onMouseEnter),e(r,"wheel",this._onMouseWheel),e(r,"contextmenu",this._onContextMenu),e(r,"dblclick",this._onDoubleClick),e(r,"dragover",this._onDragOver),e(r,"dragenter",this._onDragEnter),e(r,"dragleave",this._onDragLeave),e(r,"drop",this._onDrop),this.enablePointerEvents||e(r,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&t in eventjs&&(eventjs[t](r,"gesture",this._onGesture),eventjs[t](r,"drag",this._onDrag),eventjs[t](r,"orientation",this._onOrientationChange),eventjs[t](r,"shake",this._onShake),eventjs[t](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(t,"remove");var e=this._getEventPrefix();t(T.document,e+"up",this._onMouseUp),t(T.document,"touchend",this._onTouchEnd,i),t(T.document,e+"move",this._onMouseMove,i),t(T.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(e,t){this.__onTransformGesture&&this.__onTransformGesture(e,t)},_onDrag:function(e,t){this.__onDrag&&this.__onDrag(e,t)},_onMouseWheel:function(e){this.__onMouseWheel(e)},_onMouseOut:function(e){var t=this._hoveredTarget;this.fire("mouse:out",{target:t,e}),this._hoveredTarget=null,t&&t.fire("mouseout",{e});var i=this;this._hoveredTargets.forEach((function(r){i.fire("mouse:out",{target:t,e}),r&&t.fire("mouseout",{e})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(e){e.isEditing&&e.hiddenTextarea.focus()}))},_onMouseEnter:function(e){this._currentTransform||this.findTarget(e)||(this.fire("mouse:over",{target:null,e}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(e,t){this.__onOrientationChange&&this.__onOrientationChange(e,t)},_onShake:function(e,t){this.__onShake&&this.__onShake(e,t)},_onLongPress:function(e,t){this.__onLongPress&&this.__onLongPress(e,t)},_onDragOver:function(e){e.preventDefault();var t=this._simpleEventHandler("dragover",e);this._fireEnterLeaveEvents(t,e)},_onDrop:function(e){return this._simpleEventHandler("drop:before",e),this._simpleEventHandler("drop",e)},_onContextMenu:function(e){return this.stopContextMenu&&(e.stopPropagation(),e.preventDefault()),!1},_onDoubleClick:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"dblclick"),this._resetTransformEventData(e)},getPointerId:function(e){var t=e.changedTouches;return t?t[0]&&t[0].identifier:this.enablePointerEvents?e.pointerId:-1},_isMainEvent:function(e){return!0===e.isPrimary||!1!==e.isPrimary&&("touchend"===e.type&&0===e.touches.length||!e.changedTouches||e.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,o=this._getEventPrefix();e(T.document,"touchend",this._onTouchEnd,i),e(T.document,"touchmove",this._onMouseMove,i),t(n,o+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,o=this._getEventPrefix();t(n,o+"move",this._onMouseMove,i),e(T.document,o+"up",this._onMouseUp),e(T.document,o+"move",this._onMouseMove,i)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var n=this._getEventPrefix();t(T.document,"touchend",this._onTouchEnd,i),t(T.document,"touchmove",this._onMouseMove,i);var o=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){e(o.upperCanvasEl,n+"down",o._onMouseDown),o._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var n=this.upperCanvasEl,o=this._getEventPrefix();this._isMainEvent(r)&&(t(T.document,o+"up",this._onMouseUp),t(T.document,o+"move",this._onMouseMove,i),e(n,o+"move",this._onMouseMove,i))},_onMouseMove:function(e){!this.allowTouchScrolling&&e.preventDefault&&e.preventDefault(),this.__onMouseMove(e)},_onResize:function(){this.calcOffset()},_shouldRender:function(e){var t=this._activeObject;return!!(!!t!=!!e||t&&e&&t!==e)||(t&&t.isEditing,!1)},__onMouseUp:function(e){var t,i=this._currentTransform,n=this._groupSelector,o=!1,s=!n||0===n.left&&0===n.top;if(this._cacheTransformEventData(e),t=this._target,this._handleEvent(e,"up:before"),r(e,3))this.fireRightClick&&this._handleEvent(e,"up",3,s);else{if(r(e,2))return this.fireMiddleClick&&this._handleEvent(e,"up",2,s),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(e);else if(this._isMainEvent(e)){if(i&&(this._finalizeCurrentTransform(e),o=i.actionPerformed),!s){var a=t===this._activeObject;this._maybeGroupObjects(e),o||(o=this._shouldRender(t)||!a&&t===this._activeObject)}var l,h;if(t){if(l=t._findTargetCorner(this.getPointer(e,!0),T.util.isTouchEvent(e)),t.selectable&&t!==this._activeObject&&"up"===t.activeOn)this.setActiveObject(t,e),o=!0;else{var c=t.controls[l],u=c&&c.getMouseUpHandler(e,t,c);u&&u(e,i,(h=this.getPointer(e)).x,h.y)}t.isMoving=!1}if(i&&(i.target!==t||i.corner!==l)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(e,t,c);h=h||this.getPointer(e),f&&f(e,i,h.x,h.y)}this._setCursorFromEvent(e,t),this._handleEvent(e,"up",1,s),this._groupSelector=null,this._currentTransform=null,t&&(t.__corner=0),o?this.requestRenderAll():s||this.renderTop()}}},_simpleEventHandler:function(e,t){var i=this.findTarget(t),r=this.targets,n={e:t,target:i,subTargets:r};if(this.fire(e,n),i&&i.fire(e,n),!r)return i;for(var o=0;o1&&(t=new T.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(t,e))},_collectObjects:function(e){for(var t,i=[],r=this._groupSelector.ex,n=this._groupSelector.ey,o=r+this._groupSelector.left,s=n+this._groupSelector.top,a=new T.Point(v(r,o),v(n,s)),l=new T.Point(y(r,o),y(n,s)),h=!this.selectionFullyContained,c=r===o&&n===s,u=this._objects.length;u--&&!((t=this._objects[u])&&t.selectable&&t.visible&&(h&&t.intersectsWithRect(a,l,!0)||t.isContainedWithinRect(a,l,!0)||h&&t.containsPoint(a,null,!0)||h&&t.containsPoint(l,null,!0))&&(i.push(t),c)););return i.length>1&&(i=i.filter((function(t){return!t.onSelect({e})}))),i},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e),this.setCursor(this.defaultCursor),this._groupSelector=null}}),T.util.object.extend(T.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",i=e.quality||1,r=(e.multiplier||1)*(e.enableRetinaScaling?this.getRetinaScaling():1),n=this.toCanvasElement(r,e);return T.util.toDataURL(n,t,i)},toCanvasElement:function(e,t){e=e||1;var i=((t=t||{}).width||this.width)*e,r=(t.height||this.height)*e,n=this.getZoom(),o=this.width,s=this.height,a=n*e,l=this.viewportTransform,h=(l[4]-(t.left||0))*e,c=(l[5]-(t.top||0))*e,u=this.interactive,d=[a,0,0,a,h,c],f=this.enableRetinaScaling,g=T.util.createCanvasElement(),_=this.contextTop;return g.width=i,g.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=l,this.width=o,this.height=s,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=_,g}}),T.util.object.extend(T.StaticCanvas.prototype,{loadFromJSON:function(e,t,i){if(e){var r="string"==typeof e?JSON.parse(e):T.util.object.clone(e),n=this,o=r.clipPath,s=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(e){n.clear(),n._setBgOverlay(r,(function(){o?n._enlivenObjects([o],(function(i){n.clipPath=i[0],n.__setupCanvas.call(n,r,e,s,t)})):n.__setupCanvas.call(n,r,e,s,t)}))}),i),this}},__setupCanvas:function(e,t,i,r){var n=this;t.forEach((function(e,t){n.insertAt(e,t)})),this.renderOnAddRemove=i,delete e.objects,delete e.backgroundImage,delete e.overlayImage,delete e.background,delete e.overlay,this._setOptions(e),this.renderAll(),r&&r()},_setBgOverlay:function(e,t){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(e.backgroundImage||e.overlayImage||e.background||e.overlay){var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&t&&t()};this.__setBgOverlay("backgroundImage",e.backgroundImage,i,r),this.__setBgOverlay("overlayImage",e.overlayImage,i,r),this.__setBgOverlay("backgroundColor",e.background,i,r),this.__setBgOverlay("overlayColor",e.overlay,i,r)}else t&&t()},__setBgOverlay:function(e,t,i,r){var n=this;if(!t)return i[e]=!0,void(r&&r());"backgroundImage"===e||"overlayImage"===e?T.util.enlivenObjects([t],(function(t){n[e]=t[0],i[e]=!0,r&&r()})):this["set"+T.util.string.capitalize(e,!0)](t,(function(){i[e]=!0,r&&r()}))},_enlivenObjects:function(e,t,i){e&&0!==e.length?T.util.enlivenObjects(e,(function(e){t&&t(e)}),null,i):t&&t([])},_toDataURL:function(e,t){this.clone((function(i){t(i.toDataURL(e))}))},_toDataURLWithMultiplier:function(e,t,i){this.clone((function(r){i(r.toDataURLWithMultiplier(e,t))}))},clone:function(e,t){var i=JSON.stringify(this.toJSON(t));this.cloneWithoutData((function(t){t.loadFromJSON(i,(function(){e&&e(t)}))}))},cloneWithoutData:function(e){var t=T.util.createCanvasElement();t.width=this.width,t.height=this.height;var i=new T.Canvas(t);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),e&&e(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):e&&e(i)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.object.clone,n=t.util.toFixed,o=t.util.string.capitalize,s=t.util.degreesToRadians,a=!t.isLikelyNode;t.Object||(t.Object=t.util.createClass(t.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(e){e&&this.setOptions(e)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=t.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(e){var i=t.perfLimitSizeTotal,r=e.width,n=e.height,o=t.maxCacheSideLimit,s=t.minCacheSideLimit;if(r<=o&&n<=o&&r*n<=i)return rc&&(e.zoomX/=r/c,e.width=c,e.capped=!0),n>u&&(e.zoomY/=n/u,e.height=u,e.capped=!0),e},_getCacheCanvasDimensions:function(){var e=this.getTotalObjectScaling(),t=this._getTransformedDimensions(0,0),i=t.x*e.scaleX/this.scaleX,r=t.y*e.scaleY/this.scaleY;return{width:i+2,height:r+2,zoomX:e.scaleX,zoomY:e.scaleY,x:i,y:r}},_updateCacheCanvas:function(){var e=this.canvas;if(this.noScaleCache&&e&&e._currentTransform){var i=e._currentTransform.target,r=e._currentTransform.action;if(this===i&&r.slice&&"scale"===r.slice(0,5))return!1}var n,o,s=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),l=t.minCacheSideLimit,h=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=h!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,_=f||g,p=0,m=0,v=!1;if(f){var y=this._cacheCanvas.width,S=this._cacheCanvas.height,b=h>y||c>S;v=b||(h<.9*y||c<.9*S)&&y>l&&S>l,b&&!a.capped&&(h>l||c>l)&&(p=.1*h,m=.1*c)}return this instanceof t.Text&&this.path&&(_=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,m+=this.getHeightOfLine(0)*this.zoomY),!!_&&(v?(s.width=Math.ceil(h+p),s.height=Math.ceil(c+m)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,s.width,s.height)),n=a.x/2,o=a.y/2,this.cacheTranslationX=Math.round(s.width/2-n)+n,this.cacheTranslationY=Math.round(s.height/2-o)+o,this.cacheWidth=h,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(e){this._setOptions(e),this._initGradient(e.fill,"fill"),this._initGradient(e.stroke,"stroke"),this._initPattern(e.fill,"fill"),this._initPattern(e.stroke,"stroke")},transform:function(e){var t=this.group&&!this.group._transformDone||this.group&&this.canvas&&e===this.canvas.contextTop,i=this.calcTransformMatrix(!t);e.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(e){var i=t.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:t.version,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(e),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),t.util.populateWithProperties(this,r,e),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var i=t.util.getKlass(e.type).prototype;return i.stateProperties.forEach((function(t){"left"!==t&&"top"!==t&&(e[t]===i[t]&&delete e[t],Array.isArray(e[t])&&Array.isArray(i[t])&&0===e[t].length&&0===i[t].length&&delete e[t])})),e},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var e=t.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(e.scaleX),scaleY:Math.abs(e.scaleY)}},getTotalObjectScaling:function(){var e=this.getObjectScaling(),t=e.scaleX,i=e.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();t*=r*n,i*=r*n}return{scaleX:t,scaleY:i}},getObjectOpacity:function(){var e=this.opacity;return this.group&&(e*=this.group.getObjectOpacity()),e},_set:function(e,i){var r="scaleX"===e||"scaleY"===e,n=this[e]!==i,o=!1;return r&&(i=this._constrainScale(i)),"scaleX"===e&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===e&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==e||!i||i instanceof t.Shadow?"dirty"===e&&this.group&&this.group.set("dirty",i):i=new t.Shadow(i),this[e]=i,n&&(o=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(e)>-1?(this.dirty=!0,o&&this.group.set("dirty",!0)):o&&this.stateProperties.indexOf(e)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:t.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(e){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(e.save(),this._setupCompositeOperation(e),this.drawSelectionBackground(e),this.transform(e),this._setOpacity(e),this._setShadow(e,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(e)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(e),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),e.restore())},renderCache:function(e){e=e||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,e.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(e,i){if(e.save(),i.inverted?e.globalCompositeOperation="destination-out":e.globalCompositeOperation="destination-in",i.absolutePositioned){var r=t.util.invertTransform(this.calcTransformMatrix());e.transform(r[0],r[1],r[2],r[3],r[4],r[5])}i.transform(e),e.scale(1/i.zoomX,1/i.zoomY),e.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),e.restore()},drawObject:function(e,t){var i=this.fill,r=this.stroke;t?(this.fill="black",this.stroke="",this._setClippingProperties(e)):this._renderBackground(e),this._render(e),this._drawClipPath(e,this.clipPath),this.fill=i,this.stroke=r},_drawClipPath:function(e,t){t&&(t.canvas=this.canvas,t.shouldCache(),t._transformDone=!0,t.renderCache({forClipping:!0}),this.drawClipPathOnCache(e,t))},drawCacheOnCanvas:function(e){e.scale(1/this.zoomX,1/this.zoomY),e.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(e){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!e&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!e){var t=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-t/2,-i/2,t,i)}return!0}return!1},_renderBackground:function(e){if(this.backgroundColor){var t=this._getNonTransformedDimensions();e.fillStyle=this.backgroundColor,e.fillRect(-t.x/2,-t.y/2,t.x,t.y),this._removeShadow(e)}},_setOpacity:function(e){this.group&&!this.group._transformDone?e.globalAlpha=this.getObjectOpacity():e.globalAlpha*=this.opacity},_setStrokeStyles:function(e,t){var i=t.stroke;i&&(e.lineWidth=t.strokeWidth,e.lineCap=t.strokeLineCap,e.lineDashOffset=t.strokeDashOffset,e.lineJoin=t.strokeLineJoin,e.miterLimit=t.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(e,i):(e.strokeStyle=i.toLive(e,this),this._applyPatternGradientTransform(e,i)):e.strokeStyle=t.stroke)},_setFillStyles:function(e,t){var i=t.fill;i&&(i.toLive?(e.fillStyle=i.toLive(e,this),this._applyPatternGradientTransform(e,t.fill)):e.fillStyle=i)},_setClippingProperties:function(e){e.globalAlpha=1,e.strokeStyle="transparent",e.fillStyle="#000000"},_setLineDash:function(e,t){t&&0!==t.length&&(1&t.length&&t.push.apply(t,t),e.setLineDash(t))},_renderControls:function(e,i){var r,n,o,a=this.getViewportTransform(),l=this.calcTransformMatrix();n=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,o=void 0!==i.hasControls?i.hasControls:this.hasControls,l=t.util.multiplyTransformMatrices(a,l),r=t.util.qrDecompose(l),e.save(),e.translate(r.translateX,r.translateY),e.lineWidth=1*this.borderScaleFactor,this.group||(e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),e.rotate(s(this.group?r.angle:this.angle)),i.forActiveSelection||this.group?n&&this.drawBordersInGroup(e,r,i):n&&this.drawBorders(e,i),o&&this.drawControls(e,i),e.restore()},_setShadow:function(e){if(this.shadow){var i,r=this.shadow,n=this.canvas,o=n&&n.viewportTransform[0]||1,s=n&&n.viewportTransform[3]||1;i=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),n&&n._isRetinaScaling()&&(o*=t.devicePixelRatio,s*=t.devicePixelRatio),e.shadowColor=r.color,e.shadowBlur=r.blur*t.browserShadowBlurConstant*(o+s)*(i.scaleX+i.scaleY)/4,e.shadowOffsetX=r.offsetX*o*i.scaleX,e.shadowOffsetY=r.offsetY*s*i.scaleY}},_removeShadow:function(e){this.shadow&&(e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0)},_applyPatternGradientTransform:function(e,t){if(!t||!t.toLive)return{offsetX:0,offsetY:0};var i=t.gradientTransform||t.patternTransform,r=-this.width/2+t.offsetX||0,n=-this.height/2+t.offsetY||0;return"percentage"===t.gradientUnits?e.transform(this.width,0,0,this.height,r,n):e.transform(1,0,0,1,r,n),i&&e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:r,offsetY:n}},_renderPaintInOrder:function(e){"stroke"===this.paintFirst?(this._renderStroke(e),this._renderFill(e)):(this._renderFill(e),this._renderStroke(e))},_render:function(){},_renderFill:function(e){this.fill&&(e.save(),this._setFillStyles(e,this),"evenodd"===this.fillRule?e.fill("evenodd"):e.fill(),e.restore())},_renderStroke:function(e){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this.strokeUniform&&this.group){var t=this.getObjectScaling();e.scale(1/t.scaleX,1/t.scaleY)}else this.strokeUniform&&e.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(e,this.strokeDashArray),this._setStrokeStyles(e,this),e.stroke(),e.restore()}},_applyPatternForTransformedGradient:function(e,i){var r,n=this._limitCacheSize(this._getCacheCanvasDimensions()),o=t.util.createCanvasElement(),s=this.canvas.getRetinaScaling(),a=n.x/this.scaleX/s,l=n.y/this.scaleY/s;o.width=a,o.height=l,(r=o.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(a,0),r.lineTo(a,l),r.lineTo(0,l),r.closePath(),r.translate(a/2,l/2),r.scale(n.zoomX/this.scaleX/s,n.zoomY/this.scaleY/s),this._applyPatternGradientTransform(r,i),r.fillStyle=i.toLive(e),r.fill(),e.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),e.scale(s*this.scaleX/n.zoomX,s*this.scaleY/n.zoomY),e.strokeStyle=r.createPattern(o,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var e=t.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",e.scaleX),this.set("scaleY",e.scaleY),this.angle=e.angle,this.skewX=e.skewX,this.skewY=0}},_removeTransformMatrix:function(e){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=t.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,e&&(this.scaleX*=e.scaleX,this.scaleY*=e.scaleY,this.cropX=e.cropX,this.cropY=e.cropY,i.x+=e.offsetLeft,i.y+=e.offsetTop,this.width=e.width,this.height=e.height),this.setPositionByOrigin(i,"center","center")},clone:function(e,i){var r=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(r,e):t.Object._fromObject("Object",r,e)},cloneAsImage:function(e,i){var r=this.toCanvasElement(i);return e&&e(new t.Image(r)),this},toCanvasElement:function(e){e||(e={});var i=t.util,r=i.saveObjectTransform(this),n=this.group,o=this.shadow,s=Math.abs,a=(e.multiplier||1)*(e.enableRetinaScaling?t.devicePixelRatio:1);delete this.group,e.withoutTransform&&i.resetObjectTransform(this),e.withoutShadow&&(this.shadow=null);var l,h,c,u,d=t.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,_={x:0,y:0};g&&(h=g.blur,l=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),_.x=2*Math.round(s(g.offsetX)+h)*s(l.scaleX),_.y=2*Math.round(s(g.offsetY)+h)*s(l.scaleY)),c=f.width+_.x,u=f.height+_.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new t.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===e.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new t.Point(p.width/2,p.height/2),"center","center");var m=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,e);return this.shadow=o,this.set("canvas",m),n&&(this.group=n),this.set(r).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(e){return e||(e={}),t.util.toDataURL(this.toCanvasElement(e),e.format||"png",e.quality||1)},isType:function(e){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===e},complexity:function(){return 1},toJSON:function(e){return this.toObject(e)},rotate:function(e){var t=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return t&&this._setOriginToCenter(),this.set("angle",e),t&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(e,i){i=i||this.canvas.getPointer(e);var r=new t.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=t.util.rotatePoint(r,n,s(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(e){this.globalCompositeOperation&&(e.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){t.runningAnimations&&t.runningAnimations.cancelByTarget(this)}}),t.util.createAccessors&&t.util.createAccessors(t.Object),i(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.ENLIVEN_PROPS=["clipPath"],t.Object._fromObject=function(e,i,n,o){var s=t[e];i=r(i,!0),t.util.enlivenPatterns([i.fill,i.stroke],(function(e){void 0!==e[0]&&(i.fill=e[0]),void 0!==e[1]&&(i.stroke=e[1]),t.util.enlivenObjectEnlivables(i,i,(function(){var e=o?new s(i[o],i):new s(i);n&&n(e)}))}))},t.Object.__uid=0)}(t),S=T.util.degreesToRadians,b={left:-.5,center:0,right:.5},C={top:-.5,center:0,bottom:.5},T.util.object.extend(T.Object.prototype,{translateToGivenOrigin:function(e,t,i,r,n){var o,s,a,l=e.x,h=e.y;return"string"==typeof t?t=b[t]:t-=.5,"string"==typeof r?r=b[r]:r-=.5,"string"==typeof i?i=C[i]:i-=.5,"string"==typeof n?n=C[n]:n-=.5,s=n-i,((o=r-t)||s)&&(a=this._getTransformedDimensions(),l=e.x+o*a.x,h=e.y+s*a.y),new T.Point(l,h)},translateToCenterPoint:function(e,t,i){var r=this.translateToGivenOrigin(e,t,i,"center","center");return this.angle?T.util.rotatePoint(r,e,S(this.angle)):r},translateToOriginPoint:function(e,t,i){var r=this.translateToGivenOrigin(e,"center","center",t,i);return this.angle?T.util.rotatePoint(r,e,S(this.angle)):r},getCenterPoint:function(){var e=new T.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var i=this.getCenterPoint();return this.translateToOriginPoint(i,e,t)},toLocalPoint:function(e,t,i){var r,n,o=this.getCenterPoint();return r=void 0!==t&&void 0!==i?this.translateToGivenOrigin(o,"center","center",t,i):new T.Point(this.left,this.top),n=new T.Point(e.x,e.y),this.angle&&(n=T.util.rotatePoint(n,o,-S(this.angle))),n.subtractEquals(r)},setPositionByOrigin:function(e,t,i){var r=this.translateToCenterPoint(e,t,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(e){var t,i,r=S(this.angle),n=this.getScaledWidth(),o=T.util.cos(r)*n,s=T.util.sin(r)*n;t="string"==typeof this.originX?b[this.originX]:this.originX-.5,i="string"==typeof e?b[e]:e-.5,this.left+=o*(i-t),this.top+=s*(i-t),this.setCoords(),this.originX=e},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var e=this.getCenterPoint();this.originX="center",this.originY="center",this.left=e.x,this.top=e.y},_resetOrigin:function(){var e=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=e.x,this.top=e.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var e=T.util,t=e.degreesToRadians,i=e.multiplyTransformMatrices,r=e.transformPoint;e.object.extend(T.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(e,t){return t?e?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),e?this.aCoords:this.lineCoords)},getCoords:function(e,t){return i=this._getCoords(e,t),[new T.Point(i.tl.x,i.tl.y),new T.Point(i.tr.x,i.tr.y),new T.Point(i.br.x,i.br.y),new T.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(e,t,i,r){var n=this.getCoords(i,r);return"Intersection"===T.Intersection.intersectPolygonRectangle(n,e,t).status},intersectsWithObject:function(e,t,i){return"Intersection"===T.Intersection.intersectPolygonPolygon(this.getCoords(t,i),e.getCoords(t,i)).status||e.isContainedWithinObject(this,t,i)||this.isContainedWithinObject(e,t,i)},isContainedWithinObject:function(e,t,i){for(var r=this.getCoords(t,i),n=t?e.aCoords:e.lineCoords,o=0,s=e._getImageLines(n);o<4;o++)if(!e.containsPoint(r[o],s))return!1;return!0},isContainedWithinRect:function(e,t,i,r){var n=this.getBoundingRect(i,r);return n.left>=e.x&&n.left+n.width<=t.x&&n.top>=e.y&&n.top+n.height<=t.y},containsPoint:function(e,t,i,r){var n=this._getCoords(i,r),o=(t=t||this._getImageLines(n),this._findCrossPoints(e,t));return 0!==o&&o%2==1},isOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,e).some((function(e){return e.x<=i.x&&e.x>=t.x&&e.y<=i.y&&e.y>=t.y}))||!!this.intersectsWithRect(t,i,!0,e)||this._containsCenterOfCanvas(t,i,e)},_containsCenterOfCanvas:function(e,t,i){var r={x:(e.x+t.x)/2,y:(e.y+t.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(t,i,!0,e)||this.getCoords(!0,e).every((function(e){return(e.x>=i.x||e.x<=t.x)&&(e.y>=i.y||e.y<=t.y)}))&&this._containsCenterOfCanvas(t,i,e)},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var i,r,n,o=0;for(var s in t)if(!((n=t[s]).o.y=e.y&&n.d.y>=e.y||(n.o.x===n.d.x&&n.o.x>=e.x?r=n.o.x:(i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(e.y-0*e.x-(n.o.y-i*n.o.x))/(0-i)),r>=e.x&&(o+=1),2!==o)))break;return o},getBoundingRect:function(t,i){var r=this.getCoords(t,i);return e.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(e){return Math.abs(e)\n')}},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})},toClipPathSVG:function(e){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})},_createBaseClipPathSVGMarkup:function(e,t){var i=(t=t||{}).reviver,r=t.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),o=e.indexOf("COMMON_PARTS");return e[o]=n,i?i(e.join("")):e.join("")},_createBaseSVGMarkup:function(e,t){var i,r,n=(t=t||{}).noStyle,o=t.reviver,s=n?"":'style="'+this.getSvgStyles()+'" ',a=t.withShadow?'style="'+this.getSvgFilter()+'" ':"",l=this.clipPath,h=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=l&&l.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],_=e.indexOf("COMMON_PARTS"),p=t.additionalTransform;return l&&(l.clipPathId="CLIPPATH_"+T.Object.__uid++,r='\n'+l.toClipPathSVG(o)+"\n"),c&&g.push("\n"),g.push("\n"),i=[s,h,n?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),e[_]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),l&&g.push(r),g.push(e.join("")),g.push("\n"),c&&g.push("\n"),o?o(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var e=T.util.object.extend,t="stateProperties";function i(t,i,r){var n={};r.forEach((function(e){n[e]=t[e]})),e(t[i],n,!0)}function r(e,t,i){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(var n=0,o=e.length;n=0;l--)if(n=a[l],this.isControlVisible(n)&&(r=this._getImageLines(t?this.oCoords[n].touchCorner:this.oCoords[n].corner),0!==(i=this._findCrossPoints({x:o,y:s},r))&&i%2==1))return this.__corner=n,n;return!1},forEachControl:function(e){for(var t in this.controls)e(this.controls[t],t,this)},_setCornerCoords:function(){var e=this.oCoords;for(var t in e){var i=this.controls[t];e[t].corner=i.calcCornerCoords(this.angle,this.cornerSize,e[t].x,e[t].y,!1),e[t].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,e[t].x,e[t].y,!0)}},drawSelectionBackground:function(t){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;t.save();var i=this.getCenterPoint(),r=this._calculateCurrentDimensions(),n=this.canvas.viewportTransform;return t.translate(i.x,i.y),t.scale(1/n[0],1/n[3]),t.rotate(e(this.angle)),t.fillStyle=this.selectionBackgroundColor,t.fillRect(-r.x/2,-r.y/2,r.x,r.y),t.restore(),this},drawBorders:function(e,t){t=t||{};var i=this._calculateCurrentDimensions(),r=this.borderScaleFactor,n=i.x+r,o=i.y+r,s=void 0!==t.hasControls?t.hasControls:this.hasControls,a=!1;return e.save(),e.strokeStyle=t.borderColor||this.borderColor,this._setLineDash(e,t.borderDashArray||this.borderDashArray),e.strokeRect(-n/2,-o/2,n,o),s&&(e.beginPath(),this.forEachControl((function(t,i,r){t.withConnection&&t.getVisibility(r,i)&&(a=!0,e.moveTo(t.x*n,t.y*o),e.lineTo(t.x*n+t.offsetX,t.y*o+t.offsetY))})),a&&e.stroke()),e.restore(),this},drawBordersInGroup:function(e,t,i){i=i||{};var r=T.util.sizeAfterTransform(this.width,this.height,t),n=this.strokeWidth,o=this.strokeUniform,s=this.borderScaleFactor,a=r.x+n*(o?this.canvas.getZoom():t.scaleX)+s,l=r.y+n*(o?this.canvas.getZoom():t.scaleY)+s;return e.save(),this._setLineDash(e,i.borderDashArray||this.borderDashArray),e.strokeStyle=i.borderColor||this.borderColor,e.strokeRect(-a/2,-l/2,a,l),e.restore(),this},drawControls:function(e,t){t=t||{},e.save();var i,r,n=this.canvas.getRetinaScaling();return e.setTransform(n,0,0,n,0,0),e.strokeStyle=e.fillStyle=t.cornerColor||this.cornerColor,this.transparentCorners||(e.strokeStyle=t.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(e,t.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(n,o,s){r=s.oCoords[o],n.getVisibility(s,o)&&(i&&(r=T.util.transformPoint(r,i)),n.render(e,r.x,r.y,t,s))})),e.restore(),this},isControlVisible:function(e){return this.controls[e]&&this.controls[e].getVisibility(this,e)},setControlVisible:function(e,t){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[e]=t,this},setControlsVisibility:function(e){for(var t in e||(e={}),e)this.setControlVisible(t,e[t]);return this},onDeselect:function(){},onSelect:function(){}})}(),T.util.object.extend(T.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,o=this;return T.util.animate({target:this,startValue:e.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),o.requestRenderAll(),n()},onComplete:function(){e.setCoords(),r()}})},fxCenterObjectV:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,o=this;return T.util.animate({target:this,startValue:e.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),o.requestRenderAll(),n()},onComplete:function(){e.setCoords(),r()}})},fxRemove:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,o=this;return T.util.animate({target:this,startValue:e.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(t){e.set("opacity",t),o.requestRenderAll(),n()},onComplete:function(){o.remove(e),r()}})}}),T.util.object.extend(T.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var e,t,i=[],r=[];for(e in arguments[0])i.push(e);for(var n=0,o=i.length;n-1||n&&o.colorProperties.indexOf(n[1])>-1,a=n?this.get(n[0])[n[1]]:this.get(e);"from"in i||(i.from=a),s||(t=~t.indexOf("=")?a+parseFloat(t.replace("=","")):parseFloat(t));var l={target:this,startValue:i.from,endValue:t,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(e,t,r){return i.abort.call(o,e,t,r)},onChange:function(t,s,a){n?o[n[0]][n[1]]=t:o.set(e,t),r||i.onChange&&i.onChange(t,s,a)},onComplete:function(e,t,n){r||(o.setCoords(),i.onComplete&&i.onComplete(e,t,n))}};return s?T.util.animateColor(l.startValue,l.endValue,l.duration,l):T.util.animate(l)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.object.clone,n={x1:1,x2:1,y1:1,y2:1};function o(e,t){var i=e.origin,r=e.axis1,n=e.axis2,o=e.dimension,s=t.nearest,a=t.center,l=t.farthest;return function(){switch(this.get(i)){case s:return Math.min(this.get(r),this.get(n));case a:return Math.min(this.get(r),this.get(n))+.5*this.get(o);case l:return Math.max(this.get(r),this.get(n))}}}t.Line?t.warn("fabric.Line is already defined"):(t.Line=t.util.createClass(t.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:t.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(e,t){e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in e?e.left:this._getLeftToOriginX(),this.top="top"in e?e.top:this._getTopToOriginY()},_set:function(e,t){return this.callSuper("_set",e,t),void 0!==n[e]&&this._setWidthHeight(),this},_getLeftToOriginX:o({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:o({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(e){e.beginPath();var t=this.calcLinePoints();e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2),e.lineWidth=this.strokeWidth;var i=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this.stroke&&this._renderStroke(e),e.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(e){return i(this.callSuper("toObject",e),this.calcLinePoints())},_getNonTransformedDimensions:function(){var e=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(e.y-=this.strokeWidth),0===this.height&&(e.x-=this.strokeWidth)),e},calcLinePoints:function(){var e=this.x1<=this.x2?-1:1,t=this.y1<=this.y2?-1:1,i=e*this.width*.5,r=t*this.height*.5;return{x1:i,x2:e*this.width*-.5,y1:r,y2:t*this.height*-.5}},_toSVG:function(){var e=this.calcLinePoints();return["\n']}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r,n){n=n||{};var o=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[o.x1||0,o.y1||0,o.x2||0,o.y2||0];r(new t.Line(s,i(o,n)))},t.Line.fromObject=function(e,i){var n=r(e,!0);n.points=[e.x1,e.y1,e.x2,e.y2],t.Object._fromObject("Line",n,(function(e){delete e.points,i&&i(e)}),"points")})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.degreesToRadians;t.Circle?t.warn("fabric.Circle is already defined."):(t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:t.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(e,t){return this.callSuper("_set",e,t),"radius"===e&&this.setRadius(t),this},toObject:function(e){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(e))},_toSVG:function(){var e,r=(this.endAngle-this.startAngle)%360;if(0===r)e=["\n'];else{var n=i(this.startAngle),o=i(this.endAngle),s=this.radius;e=['180?"1":"0")+" 1"," "+t.util.cos(o)*s+" "+t.util.sin(o)*s,'" ',"COMMON_PARTS"," />\n"]}return e},_render:function(e){e.beginPath(),e.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){return this.radius=e,this.set("width",2*e).set("height",2*e)}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,i){var r,n=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=n)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");n.left=(n.left||0)-n.radius,n.top=(n.top||0)-n.radius,i(new t.Circle(n))},t.Circle.fromObject=function(e,i){t.Object._fromObject("Circle",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={});t.Triangle?t.warn("fabric.Triangle is already defined"):(t.Triangle=t.util.createClass(t.Object,{type:"triangle",width:100,height:100,_render:function(e){var t=this.width/2,i=this.height/2;e.beginPath(),e.moveTo(-t,i),e.lineTo(0,-i),e.lineTo(t,i),e.closePath(),this._renderPaintInOrder(e)},_toSVG:function(){var e=this.width/2,t=this.height/2;return["']}}),t.Triangle.fromObject=function(e,i){return t.Object._fromObject("Triangle",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=2*Math.PI;t.Ellipse?t.warn("fabric.Ellipse is already defined."):(t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this.set("rx",e&&e.rx||0),this.set("ry",e&&e.ry||0)},_set:function(e,t){switch(this.callSuper("_set",e,t),e){case"rx":this.rx=t,this.set("width",2*t);break;case"ry":this.ry=t,this.set("height",2*t)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["\n']},_render:function(e){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(0,0,this.rx,0,i,!1),e.restore(),this._renderPaintInOrder(e)}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,i){var r=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,i(new t.Ellipse(r))},t.Ellipse.fromObject=function(e,i){t.Object._fromObject("Ellipse",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend;t.Rect?t.warn("fabric.Rect is already defined"):(t.Rect=t.util.createClass(t.Object,{stateProperties:t.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,o=-this.width/2,s=-this.height/2,a=0!==t||0!==i,l=.4477152502;e.beginPath(),e.moveTo(o+t,s),e.lineTo(o+r-t,s),a&&e.bezierCurveTo(o+r-l*t,s,o+r,s+l*i,o+r,s+i),e.lineTo(o+r,s+n-i),a&&e.bezierCurveTo(o+r,s+n-l*i,o+r-l*t,s+n,o+r-t,s+n),e.lineTo(o+t,s+n),a&&e.bezierCurveTo(o+l*t,s+n,o,s+n-l*i,o,s+n-i),e.lineTo(o,s+i),a&&e.bezierCurveTo(o,s+l*i,o+l*t,s,o+t,s),e.closePath(),this._renderPaintInOrder(e)},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["\n']}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r,n){if(!e)return r(null);n=n||{};var o=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);o.left=o.left||0,o.top=o.top||0,o.height=o.height||0,o.width=o.width||0;var s=new t.Rect(i(n?t.util.object.clone(n):{},o));s.visible=s.visible&&s.width>0&&s.height>0,r(s)},t.Rect.fromObject=function(e,i){return t.Object._fromObject("Rect",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.array.min,n=t.util.array.max,o=t.util.toFixed,s=t.util.projectStrokeOnPoints;t.Polyline?t.warn("fabric.Polyline is already defined"):(t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:t.Object.prototype.cacheProperties.concat("points"),initialize:function(e,t){t=t||{},this.points=e||[],this.callSuper("initialize",t),this._setPositionDimensions(t)},_projectStrokeOnPoints:function(){return s(this.points,this,!0)},_setPositionDimensions:function(e){var t,i=this._calcDimensions(e),r=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-r,this.height=i.height-r,e.fromSVG||(t=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+r/2,y:i.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),void 0===e.left&&(this.left=e.fromSVG?i.left:t.x),void 0===e.top&&(this.top=e.fromSVG?i.top:t.y),this.pathOffset={x:i.left+this.width/2+r/2,y:i.top+this.height/2+r/2}},_calcDimensions:function(){var e=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,t=r(e,"x")||0,i=r(e,"y")||0;return{left:t,top:i,width:(n(e,"x")||0)-t,height:(n(e,"y")||0)-i}},toObject:function(e){return i(this.callSuper("toObject",e),{points:this.points.concat()})},_toSVG:function(){for(var e=[],i=this.pathOffset.x,r=this.pathOffset.y,n=t.Object.NUM_FRACTION_DIGITS,s=0,a=this.points.length;s\n']},commonRender:function(e){var t,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;e.beginPath(),e.moveTo(this.points[0].x-r,this.points[0].y-n);for(var o=0;o"},toObject:function(e){return n(this.callSuper("toObject",e),{path:this.path.map((function(e){return e.slice()}))})},toDatalessObject:function(e){var t=this.toObject(["sourcePath"].concat(e));return t.sourcePath&&delete t.path,t},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var e=t.Object.NUM_FRACTION_DIGITS;return" translate("+s(-this.pathOffset.x,e)+", "+s(-this.pathOffset.y,e)+")"},toClipPathSVG:function(e){var t=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},toSVG:function(e){var t=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var e,n,o=[],s=[],a=0,l=0,h=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(e){var i=!!this.group;return this._restoreObjectsState(),t.util.resetObjectTransform(this),e&&(i&&t.util.removeTransformFromObject(e,this.group.calcTransformMatrix()),this._objects.push(e),e.group=this,e._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),t.util.resetObjectTransform(this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(e){this.dirty=!0,e.group=this,e._set("canvas",this.canvas)},_onObjectRemoved:function(e){this.dirty=!0,delete e.group},_set:function(e,i){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(e,i);if("canvas"===e)for(;r--;)this._objects[r]._set(e,i);t.Object.prototype._set.call(this,e,i)},toObject:function(e){var i=this.includeDefaultValues,r=this._objects.filter((function(e){return!e.excludeFromExport})).map((function(t){var r=t.includeDefaultValues;t.includeDefaultValues=i;var n=t.toObject(e);return t.includeDefaultValues=r,n})),n=t.Object.prototype.toObject.call(this,e);return n.objects=r,n},toDatalessObject:function(e){var i,r=this.sourcePath;if(r)i=r;else{var n=this.includeDefaultValues;i=this._objects.map((function(t){var i=t.includeDefaultValues;t.includeDefaultValues=n;var r=t.toDatalessObject(e);return t.includeDefaultValues=i,r}))}var o=t.Object.prototype.toDatalessObject.call(this,e);return o.objects=i,o},render:function(e){this._transformDone=!0,this.callSuper("render",e),this._transformDone=!1},shouldCache:function(){var e=t.Object.prototype.shouldCache.call(this);if(e)for(var i=0,r=this._objects.length;i\n"],i=0,r=this._objects.length;i\n"),t},getSvgStyles:function(){var e=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",t=this.visible?"":" visibility: hidden;";return[e,this.getSvgFilter(),t].join("")},toClipPathSVG:function(e){for(var t=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(e,t,i){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",e,t),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),s=' clip-path="url(#imageCrop_'+l+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var h=this.fill;this.fill=null,e=["\t\n'],this.fill=h}return"fill"!==this.paintFirst?t.concat(e,i):t.concat(i,e)},getSrc:function(e){var t=e?this._element:this._originalElement;return t?t.toDataURL?t.toDataURL():this.srcFromAttribute?t.getAttribute("src"):t.src:this.src||""},setSrc:function(e,t,i){return T.util.loadImage(e,(function(e,r){this.setElement(e,i),this._setWidthHeight(),t&&t(this,r)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var e=this.resizeFilter,t=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,o=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!e||r>t&&n>t)return this._element=o,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=n);T.filterBackend||(T.filterBackend=T.initFilterBackend());var s=T.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,l=o.width,h=o.height;s.width=l,s.height=h,this._element=s,this._lastScaleX=e.scaleX=r,this._lastScaleY=e.scaleY=n,T.filterBackend.applyFilters([e],o,l,h,this._element,a),this._filterScalingX=s.width/this._originalElement.width,this._filterScalingY=s.height/this._originalElement.height},applyFilters:function(e){if(e=(e=e||this.filters||[]).filter((function(e){return e&&!e.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===e.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var t=this._originalElement,i=t.naturalWidth||t.width,r=t.naturalHeight||t.height;if(this._element===this._originalElement){var n=T.util.createCanvasElement();n.width=i,n.height=r,this._element=n,this._filteredEl=n}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,r),this._lastScaleX=1,this._lastScaleY=1;return T.filterBackend||(T.filterBackend=T.initFilterBackend()),T.filterBackend.applyFilters(e,this._originalElement,i,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(e){T.util.setImageSmoothing(e,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(e),this._renderPaintInOrder(e)},drawCacheOnCanvas:function(e){T.util.setImageSmoothing(e,this.imageSmoothing),T.Object.prototype.drawCacheOnCanvas.call(this,e)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(e){var t=this._element;if(t){var i=this._filterScalingX,r=this._filterScalingY,n=this.width,o=this.height,s=Math.min,a=Math.max,l=a(this.cropX,0),h=a(this.cropY,0),c=t.naturalWidth||t.width,u=t.naturalHeight||t.height,d=l*i,f=h*r,g=s(n*i,c-d),_=s(o*r,u-f),p=-n/2,m=-o/2,v=s(n,c/i-l),y=s(o,u/r-h);t&&e.drawImage(t,d,f,g,_,p,m,v,y)}},_needsResize:function(){var e=this.getTotalObjectScaling();return e.scaleX!==this._lastScaleX||e.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(e,t){this.setElement(T.util.getById(e),t),T.util.addClass(this.getElement(),T.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e&&e.length?T.util.enlivenObjects(e,(function(e){t&&t(e)}),"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){e||(e={});var t=this.getElement();this.width=e.width||t.naturalWidth||t.width||0,this.height=e.height||t.naturalHeight||t.height||0},parsePreserveAspectRatioAttribute:function(){var e,t=T.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,r=this._element.height,n=1,o=1,s=0,a=0,l=0,h=0,c=this.width,u=this.height,d={width:c,height:u};return!t||"none"===t.alignX&&"none"===t.alignY?(n=c/i,o=u/r):("meet"===t.meetOrSlice&&(e=(c-i*(n=o=T.util.findScaleToFit(this._element,d)))/2,"Min"===t.alignX&&(s=-e),"Max"===t.alignX&&(s=e),e=(u-r*o)/2,"Min"===t.alignY&&(a=-e),"Max"===t.alignY&&(a=e)),"slice"===t.meetOrSlice&&(e=i-c/(n=o=T.util.findScaleToCover(this._element,d)),"Mid"===t.alignX&&(l=e/2),"Max"===t.alignX&&(l=e),e=r-u/o,"Mid"===t.alignY&&(h=e/2),"Max"===t.alignY&&(h=e),i=c/n,r=u/o)),{width:i,height:r,scaleX:n,scaleY:o,offsetLeft:s,offsetTop:a,cropX:l,cropY:h}}}),T.Image.CSS_CANVAS="canvas-img",T.Image.prototype.getSvgSrc=T.Image.prototype.getSrc,T.Image.fromObject=function(e,t){var i=T.util.object.clone(e);T.util.loadImage(i.src,(function(e,r){r?t&&t(null,!0):T.Image.prototype._initFilters.call(i,i.filters,(function(r){i.filters=r||[],T.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(r){i.resizeFilter=r[0],T.util.enlivenObjectEnlivables(i,i,(function(){var r=new T.Image(e,i);t(r,!1)}))}))}))}),null,i.crossOrigin)},T.Image.fromURL=function(e,t,i){T.util.loadImage(e,(function(e,r){t&&t(new T.Image(e,i),r)}),null,i&&i.crossOrigin)},T.Image.ATTRIBUTE_NAMES=T.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),T.Image.fromElement=function(e,i,r){var n=T.parseAttributes(e,T.Image.ATTRIBUTE_NAMES);T.Image.fromURL(n["xlink:href"],i,t(r?T.util.object.clone(r):{},n))})}(t),T.util.object.extend(T.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.angle%360;return e>0?90*Math.round((e-1)/90):90*Math.round(e/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(e){var t=function(){},i=(e=e||{}).onComplete||t,r=e.onChange||t,n=this;return T.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){n.rotate(e),r()},onComplete:function(){n.setCoords(),i()}})}}),T.util.object.extend(T.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function e(e,t){var i="precision "+t+" float;\nvoid main(){}",r=e.createShader(e.FRAGMENT_SHADER);return e.shaderSource(r,i),e.compileShader(r),!!e.getShaderParameter(r,e.COMPILE_STATUS)}function t(e){e&&e.tileSize&&(this.tileSize=e.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}T.isWebglSupported=function(t){if(T.isLikelyNode)return!1;t=t||T.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),r=i.getContext("webgl")||i.getContext("experimental-webgl"),n=!1;if(r){T.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),n=T.maxTextureSize>=t;for(var o=["highp","mediump","lowp"],s=0;s<3;s++)if(e(r,o[s])){T.webGlPrecision=o[s];break}}return this.isSupported=n,n},T.WebglFilterBackend=t,t.prototype={tileSize:2048,resources:{},setupGLContext:function(e,t){this.dispose(),this.createWebGLCanvas(e,t),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(e,t)},chooseFastestCopyGLTo2DMethod:function(e,t){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(e){i=!1}var n="undefined"!=typeof ArrayBuffer,o="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&o){var s=T.util.createCanvasElement(),a=new ArrayBuffer(e*t*4);if(T.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=A);var l,h,c={imageBuffer:a,destinationWidth:e,destinationHeight:t,targetCanvas:s};s.width=e,s.height=t,l=window.performance.now(),E.call(c,this.gl,c),h=window.performance.now()-l,l=window.performance.now(),A.call(c,this.gl,c),h>window.performance.now()-l?(this.imageBuffer=a,this.copyGLTo2D=A):this.copyGLTo2D=E}},createWebGLCanvas:function(e,t){var i=T.util.createCanvasElement();i.width=e,i.height=t;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},n=i.getContext("webgl",r);n||(n=i.getContext("experimental-webgl",r)),n&&(n.clearColor(0,0,0,0),this.canvas=i,this.gl=n)},applyFilters:function(e,t,i,r,n,o){var s,a=this.gl;o&&(s=this.getCachedTexture(o,t));var l={originalWidth:t.width||t.originalWidth,originalHeight:t.height||t.originalHeight,sourceWidth:i,sourceHeight:r,destinationWidth:i,destinationHeight:r,context:a,sourceTexture:this.createTexture(a,i,r,!s&&t),targetTexture:this.createTexture(a,i,r),originalTexture:s||this.createTexture(a,i,r,!s&&t),passes:e.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:n},h=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,h),e.forEach((function(e){e&&e.applyTo(l)})),function(e){var t=e.targetCanvas,i=t.width,r=t.height,n=e.destinationWidth,o=e.destinationHeight;i===n&&r===o||(t.width=n,t.height=o)}(l),this.copyGLTo2D(a,l),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(l.sourceTexture),a.deleteTexture(l.targetTexture),a.deleteFramebuffer(h),n.getContext("2d").setTransform(1,0,0,1,0,0),l},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(e,t,i,r){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),r?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t,i,0,e.RGBA,e.UNSIGNED_BYTE,null),n},getCachedTexture:function(e,t){if(this.textureCache[e])return this.textureCache[e];var i=this.createTexture(this.gl,t.width,t.height,t);return this.textureCache[e]=i,i},evictCachesForKey:function(e){this.textureCache[e]&&(this.gl.deleteTexture(this.textureCache[e]),delete this.textureCache[e])},copyGLTo2D:E,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var e=this.gl,t={renderer:"",vendor:""};if(!e)return t;var i=e.getExtension("WEBGL_debug_renderer_info");if(i){var r=e.getParameter(i.UNMASKED_RENDERER_WEBGL),n=e.getParameter(i.UNMASKED_VENDOR_WEBGL);r&&(t.renderer=r.toLowerCase()),n&&(t.vendor=n.toLowerCase())}return this.gpuInfo=t,t}}}(),function(){var e=function(){};function t(){}T.Canvas2dFilterBackend=t,t.prototype={evictCachesForKey:e,dispose:e,clearWebGLCaches:e,resources:{},applyFilters:function(e,t,i,r,n){var o=n.getContext("2d");o.drawImage(t,0,0,i,r);var s={sourceWidth:i,sourceHeight:r,imageData:o.getImageData(0,0,i,r),originalEl:t,originalImageData:o.getImageData(0,0,i,r),canvasEl:n,ctx:o,filterBackend:this};return e.forEach((function(e){e.applyTo(s)})),s.imageData.width===i&&s.imageData.height===r||(n.width=s.imageData.width,n.height=s.imageData.height),o.putImageData(s.imageData,0,0),s}}}(),T.Image=T.Image||{},T.Image.filters=T.Image.filters||{},T.Image.filters.BaseFilter=T.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(e){e&&this.setOptions(e)},setOptions:function(e){for(var t in e)this[t]=e[t]},createProgram:function(e,t,i){t=t||this.fragmentSource,i=i||this.vertexSource,"highp"!==T.webGlPrecision&&(t=t.replace(/precision highp float/g,"precision "+T.webGlPrecision+" float"));var r=e.createShader(e.VERTEX_SHADER);if(e.shaderSource(r,i),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+e.getShaderInfoLog(r));var n=e.createShader(e.FRAGMENT_SHADER);if(e.shaderSource(n,t),e.compileShader(n),!e.getShaderParameter(n,e.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+e.getShaderInfoLog(n));var o=e.createProgram();if(e.attachShader(o,r),e.attachShader(o,n),e.linkProgram(o),!e.getProgramParameter(o,e.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+e.getProgramInfoLog(o));var s=this.getAttributeLocations(e,o),a=this.getUniformLocations(e,o)||{};return a.uStepW=e.getUniformLocation(o,"uStepW"),a.uStepH=e.getUniformLocation(o,"uStepH"),{program:o,attributeLocations:s,uniformLocations:a}},getAttributeLocations:function(e,t){return{aPosition:e.getAttribLocation(t,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(e,t,i){var r=t.aPosition,n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.enableVertexAttribArray(r),e.vertexAttribPointer(r,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,i,e.STATIC_DRAW)},_setupFrameBuffer:function(e){var t,i,r=e.context;e.passes>1?(t=e.destinationWidth,i=e.destinationHeight,e.sourceWidth===t&&e.sourceHeight===i||(r.deleteTexture(e.targetTexture),e.targetTexture=e.filterBackend.createTexture(r,t,i)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(e){e.passes--,e.pass++;var t=e.targetTexture;e.targetTexture=e.sourceTexture,e.sourceTexture=t},isNeutralState:function(){var e=this.mainParameter,t=T.Image.filters[this.type].prototype;if(e){if(Array.isArray(t[e])){for(var i=t[e].length;i--;)if(this[e][i]!==t[e][i])return!1;return!0}return t[e]===this[e]}return!1},applyTo:function(e){e.webgl?(this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)},retrieveShader:function(e){return e.programCache.hasOwnProperty(this.type)||(e.programCache[this.type]=this.createProgram(e.context)),e.programCache[this.type]},applyToWebGL:function(e){var t=e.context,i=this.retrieveShader(e);0===e.pass&&e.originalTexture?t.bindTexture(t.TEXTURE_2D,e.originalTexture):t.bindTexture(t.TEXTURE_2D,e.sourceTexture),t.useProgram(i.program),this.sendAttributeData(t,i.attributeLocations,e.aPosition),t.uniform1f(i.uniformLocations.uStepW,1/e.sourceWidth),t.uniform1f(i.uniformLocations.uStepH,1/e.sourceHeight),this.sendUniformData(t,i.uniformLocations),t.viewport(0,0,e.destinationWidth,e.destinationHeight),t.drawArrays(t.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(e,t,i){e.activeTexture(i),e.bindTexture(e.TEXTURE_2D,t),e.activeTexture(e.TEXTURE0)},unbindAdditionalTexture:function(e,t){e.activeTexture(t),e.bindTexture(e.TEXTURE_2D,null),e.activeTexture(e.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(e){this[this.mainParameter]=e},sendUniformData:function(){},createHelpLayer:function(e){if(!e.helpLayer){var t=document.createElement("canvas");t.width=e.sourceWidth,t.height=e.sourceHeight,e.helpLayer=t}},toObject:function(){var e={type:this.type},t=this.mainParameter;return t&&(e[t]=this[t]),e},toJSON:function(){return this.toObject()}}),T.Image.filters.BaseFilter.fromObject=function(e,t){var i=new T.Image.filters[e.type](e);return t&&t(i),i},function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.ColorMatrix=r(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(e){this.callSuper("initialize",e),this.matrix=this.matrix.slice(0)},applyTo2d:function(e){var t,i,r,n,o,s=e.imageData.data,a=s.length,l=this.matrix,h=this.colorsOnly;for(o=0;o=S||s<0||s>=y||(l=4*(a*y+s),h=p[f*m+d],t+=_[l]*h,i+=_[l+1]*h,r+=_[l+2]*h,w||(n+=_[l+3]*h));C[o]=t,C[o+1]=i,C[o+2]=r,C[o+3]=w?_[o+3]:n}e.imageData=b},getUniformLocations:function(e,t){return{uMatrix:e.getUniformLocation(t,"uMatrix"),uOpaque:e.getUniformLocation(t,"uOpaque"),uHalfSize:e.getUniformLocation(t,"uHalfSize"),uSize:e.getUniformLocation(t,"uSize")}},sendUniformData:function(e,t){e.uniform1fv(t.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Grayscale=r(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(e){var t,i,r=e.imageData.data,n=r.length,o=this.mode;for(t=0;th[0]&&n>h[1]&&o>h[2]&&r 0.0) {\n"+this.fragmentSource[e]+"}\n}"},retrieveShader:function(e){var t,i=this.type+"_"+this.mode;return e.programCache.hasOwnProperty(i)||(t=this.buildSource(this.mode),e.programCache[i]=this.createProgram(e.context,t)),e.programCache[i]},applyTo2d:function(e){var i,r,n,o,s,a,l,h=e.imageData.data,c=h.length,u=1-this.alpha;i=(l=new t.Color(this.color).getSource())[0]*this.alpha,r=l[1]*this.alpha,n=l[2]*this.alpha;for(var d=0;d=e||t<=-e)return 0;if(t<1.1920929e-7&&t>-1.1920929e-7)return 1;var i=(t*=Math.PI)/e;return a(t)/t*a(i)/i}},applyTo2d:function(e){var t=e.imageData,i=this.scaleX,r=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/r;var n,o=t.width,a=t.height,l=s(o*i),h=s(a*r);"sliceHack"===this.resizeType?n=this.sliceByTwo(e,o,a,l,h):"hermite"===this.resizeType?n=this.hermiteFastResize(e,o,a,l,h):"bilinear"===this.resizeType?n=this.bilinearFiltering(e,o,a,l,h):"lanczos"===this.resizeType&&(n=this.lanczosResize(e,o,a,l,h)),e.imageData=n},sliceByTwo:function(e,i,n,o,s){var a,l,h=e.imageData,c=.5,u=!1,d=!1,f=i*c,g=n*c,_=t.filterBackend.resources,p=0,m=0,v=i,y=0;for(_.sliceByTwo||(_.sliceByTwo=document.createElement("canvas")),((a=_.sliceByTwo).width<1.5*i||a.height=t)){M=r(1e3*o(T-b.x)),S[M]||(S[M]={});for(var P=C.y-y;P<=C.y+y;P++)P<0||P>=s||(L=r(1e3*o(P-b.y)),S[M][L]||(S[M][L]=f(n(i(M*p,2)+i(L*m,2))/1e3)),(x=S[M][L])>0&&(A+=x,I+=x*c[E=4*(P*t+T)],O+=x*c[E+1],R+=x*c[E+2],D+=x*c[E+3]))}d[E=4*(w*a+l)]=I/A,d[E+1]=O/A,d[E+2]=R/A,d[E+3]=D/A}return++l1&&L<-1||(y=2*L*L*L-3*L*L+1)>0&&(x+=y*f[3+(M=4*(D+A*t))],b+=y,f[M+3]<255&&(y=y*f[M+3]/250),C+=y*f[M],w+=y*f[M+1],T+=y*f[M+2],S+=y)}_[v]=C/S,_[v+1]=w/S,_[v+2]=T/S,_[v+3]=x/b}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),t.Image.filters.Resize.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Contrast=r(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(e){if(0!==this.contrast){var t,i=e.imageData.data,r=i.length,n=Math.floor(255*this.contrast),o=259*(n+255)/(255*(259-n));for(t=0;t1&&(t=1/this.aspectRatio):this.aspectRatio<1&&(t=this.aspectRatio),e=t*this.blur*.12,this.horizontal?i[0]=e:i[1]=e,i}}),i.Blur.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Gamma=r(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(e){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,e)},applyTo2d:function(e){var t,i=e.imageData.data,r=this.gamma,n=i.length,o=1/r[0],s=1/r[1],a=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),t=0,n=256;t'},_getCacheCanvasDimensions:function(){var e=this.callSuper("_getCacheCanvasDimensions"),t=this.fontSize;return e.width+=t*e.zoomX,e.height+=t*e.zoomY,e},_render:function(e){var t=this.path;t&&!t.isNotVisible()&&t._render(e),this._setTextStyles(e),this._renderTextLinesBackground(e),this._renderTextDecoration(e,"underline"),this._renderText(e),this._renderTextDecoration(e,"overline"),this._renderTextDecoration(e,"linethrough")},_renderText:function(e){"stroke"===this.paintFirst?(this._renderTextStroke(e),this._renderTextFill(e)):(this._renderTextFill(e),this._renderTextStroke(e))},_setTextStyles:function(e,t,i){if(e.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":e.textBaseline="middle";break;case"ascender":e.textBaseline="top";break;case"descender":e.textBaseline="bottom"}e.font=this._getFontDeclaration(t,i)},calcTextWidth:function(){for(var e=this.getLineWidth(0),t=1,i=this._textLines.length;te&&(e=r)}return e},_renderTextLine:function(e,t,i,r,n,o){this._renderChars(e,t,i,r,n,o)},_renderTextLinesBackground:function(e){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var t,i,r,n,o,s,a,l=e.fillStyle,h=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,_=this._textLines.length;g<_;g++)if(t=this.getHeightOfLine(g),this.textBackgroundColor||this.styleHas("textBackgroundColor",g)){r=this._textLines[g],i=this._getLineLeftOffset(g),d=0,u=0,n=this.getValueOfPropertyAt(g,0,"textBackgroundColor");for(var p=0,m=r.length;p=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,o,s),u+=o.kernedWidth}return{width:l,numOfSpaces:0}},_setGraphemeOnPath:function(e,i,r){var n=e+i.kernedWidth/2,o=this.path,s=t.util.getPointOnPath(o.path,n,o.segmentsInfo);i.renderLeft=s.x-r.x,i.renderTop=s.y-r.y,i.angle=s.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(e,t,i,r,n){var o,s=this.getCompleteStyleDeclaration(t,i),a=r?this.getCompleteStyleDeclaration(t,i-1):{},l=this._measureChar(e,s,r,a),h=l.kernedWidth,c=l.width;0!==this.charSpacing&&(c+=o=this._getWidthOfCharSpacing(),h+=o);var u={width:c,left:0,height:s.fontSize,kernedWidth:h,deltaY:s.deltaY};if(i>0&&!n){var d=this.__charBounds[t][i-1];u.left=d.left+d.width+l.kernedWidth-l.width}return u},getHeightOfLine:function(e){if(this.__lineHeights[e])return this.__lineHeights[e];for(var t=this._textLines[e],i=this.getHeightOfChar(e,0),r=1,n=t.length;r0){var A=v+o+u;"rtl"===this.direction&&(A=this.width-A-d),h&&m&&(e.fillStyle=m,e.fillRect(A,c+C*r+s,d,this.fontSize/15)),u=f.left,d=f.width,h=g,m=p,r=n,s=a}else d+=f.kernedWidth;A=v+o+u,"rtl"===this.direction&&(A=this.width-A-d),e.fillStyle=p,g&&p&&e.fillRect(A,c+C*r+s,d-b,this.fontSize/15),y+=i}else y+=i;this._removeShadow(e)}},_getFontDeclaration:function(e,i){var r=e||this,n=this.fontFamily,o=t.Text.genericFonts.indexOf(n.toLowerCase())>-1,s=void 0===n||n.indexOf("'")>-1||n.indexOf(",")>-1||n.indexOf('"')>-1||o?r.fontFamily:'"'+r.fontFamily+'"';return[t.isLikelyNode?r.fontWeight:r.fontStyle,t.isLikelyNode?r.fontStyle:r.fontWeight,i?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",s].join(" ")},render:function(e){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",e)))},_splitTextIntoLines:function(e){for(var i=e.split(this._reNewline),r=new Array(i.length),n=["\n"],o=[],s=0;s-1&&(e.underline=!0),e.textDecoration.indexOf("line-through")>-1&&(e.linethrough=!0),e.textDecoration.indexOf("overline")>-1&&(e.overline=!0),delete e.textDecoration)}T.IText=T.util.createClass(T.Text,T.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(e,t){this.callSuper("initialize",e,t),this.initBehavior()},setSelectionStart:function(e){e=Math.max(e,0),this._updateAndFire("selectionStart",e)},setSelectionEnd:function(e){e=Math.min(e,this.text.length),this._updateAndFire("selectionEnd",e)},_updateAndFire:function(e,t){this[e]!==t&&(this._fireSelectionChanged(),this[e]=t),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(e){this.clearContextTop(),this.callSuper("render",e),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(e){this.callSuper("_render",e)},clearContextTop:function(e){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this.canvas.contextTop,i=this.canvas.viewportTransform;t.save(),t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(t),this._clearTextArea(t),e||t.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this._getCursorBoundaries(),t=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(e,t):this.renderSelection(e,t),t.restore()}},_clearTextArea:function(e){var t=this.width+4,i=this.height+4;e.clearRect(-t/2,-i/2,t,i)},_getCursorBoundaries:function(e){void 0===e&&(e=this.selectionStart);var t=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(e);return{left:t,top:i,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(e){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var t,i,r,n,o=0,s=0,a=this.get2DCursorLocation(e);r=a.charIndex,i=a.lineIndex;for(var l=0;l0?s:0)},"rtl"===this.direction&&(n.left*=-1),this.cursorOffsetCache=n,this.cursorOffsetCache},renderCursor:function(e,t){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex>0?i.charIndex-1:0,o=this.getValueOfPropertyAt(r,n,"fontSize"),s=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/s,l=e.topOffset,h=this.getValueOfPropertyAt(r,n,"deltaY");l+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-o*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(e,t),t.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,n,"fill"),t.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,t.fillRect(e.left+e.leftOffset-a/2,l+e.top+h,a,o)},renderSelection:function(e,t){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,n=-1!==this.textAlign.indexOf("justify"),o=this.get2DCursorLocation(i),s=this.get2DCursorLocation(r),a=o.lineIndex,l=s.lineIndex,h=o.charIndex<0?0:o.charIndex,c=s.charIndex<0?0:s.charIndex,u=a;u<=l;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),_=0,p=0;if(u===a&&(_=this.__charBounds[a][h].left),u>=a&&u1)&&(g/=this.lineHeight);var v=e.left+f+_,y=p-_,S=g,b=0;this.inCompositionMode?(t.fillStyle=this.compositionColor||"black",S=1,b=g):t.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),t.fillRect(v,e.top+e.topOffset+b,y,S),e.topOffset+=d}},getCurrentCharFontSize:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fontSize")},getCurrentCharColor:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fill")},_getCurrentCharIndex:function(){var e=this.get2DCursorLocation(this.selectionStart,!0),t=e.charIndex>0?e.charIndex-1:0;return{l:e.lineIndex,c:t}}}),T.IText.fromObject=function(t,i){if(e(t),t.styles)for(var r in t.styles)for(var n in t.styles[r])e(t.styles[r][n]);T.Object._fromObject("IText",t,i,"text")}}(),w=T.util.object.clone,T.util.object.extend(T.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var e=this;this.on("added",(function(){var t=e.canvas;t&&(t._hasITextHandlers||(t._hasITextHandlers=!0,e._initCanvasHandlers(t)),t._iTextInstances=t._iTextInstances||[],t._iTextInstances.push(e))}))},initRemovedHandler:function(){var e=this;this.on("removed",(function(){var t=e.canvas;t&&(t._iTextInstances=t._iTextInstances||[],T.util.removeFromArray(t._iTextInstances,e),0===t._iTextInstances.length&&(t._hasITextHandlers=!1,e._removeCanvasHandlers(t)))}))},_initCanvasHandlers:function(e){e._mouseUpITextHandler=function(){e._iTextInstances&&e._iTextInstances.forEach((function(e){e.__isMousedown=!1}))},e.on("mouse:up",e._mouseUpITextHandler)},_removeCanvasHandlers:function(e){e.off("mouse:up",e._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(e,t,i,r){var n;return n={isAborted:!1,abort:function(){this.isAborted=!0}},e.animate("_currentCursorOpacity",t,{duration:i,onComplete:function(){n.isAborted||e[r]()},onChange:function(){e.canvas&&e.selectionStart===e.selectionEnd&&e.renderCursorOrSelection()},abort:function(){return n.isAborted}}),n},_onTickComplete:function(){var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){e._currentTickCompleteState=e._animateCursor(e,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(e){var t=this,i=e?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){t._tick()}),i)},abortCursorAnimation:function(){var e=this._currentTickState||this._currentTickCompleteState,t=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,e&&t&&t.clearContext(t.contextTop||t.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(e){var t=0,i=e-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)t++,i--;for(;/\S/.test(this._text[i])&&i>-1;)t++,i--;return e-t},findWordBoundaryRight:function(e){var t=0,i=e;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)t++,i++;for(;/\S/.test(this._text[i])&&i-1;)t++,i--;return e-t},findLineBoundaryRight:function(e){for(var t=0,i=e;!/\n/.test(this._text[i])&&i0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=t):(this.selectionStart=t,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(e,t,i){var r=i.slice(0,e),n=T.util.string.graphemeSplit(r).length;if(e===t)return{selectionStart:n,selectionEnd:n};var o=i.slice(e,t);return{selectionStart:n,selectionEnd:n+T.util.string.graphemeSplit(o).length}},fromGraphemeToStringSelection:function(e,t,i){var r=i.slice(0,e).join("").length;return e===t?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(e,t).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var e=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=e.selectionStart,this.hiddenTextarea.selectionEnd=e.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var e=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=e.selectionEnd,this.inCompositionMode||(this.selectionStart=e.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var e=this._calcTextareaPosition();this.hiddenTextarea.style.left=e.left,this.hiddenTextarea.style.top=e.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var e=this.inCompositionMode?this.compositionStart:this.selectionStart,t=this._getCursorBoundaries(e),i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex,o=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,s=t.leftOffset,a=this.calcTransformMatrix(),l={x:t.left+s,y:t.top+t.topOffset+o},h=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/h,d=c.height/h,f=u-o,g=d-o,_=c.clientWidth/u,p=c.clientHeight/d;return l=T.util.transformPoint(l,a),(l=T.util.transformPoint(l,this.canvas.viewportTransform)).x*=_,l.y*=p,l.x<0&&(l.x=0),l.x>f&&(l.x=f),l.y<0&&(l.y=0),l.y>g&&(l.y=g),l.x+=this.canvas._offset.left,l.y+=this.canvas._offset.top,{left:l.x+"px",top:l.y+"px",fontSize:o+"px",charHeight:o}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var e=this._textBeforeEdit!==this.text,t=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,t&&(t.blur&&t.blur(),t.parentNode&&t.parentNode.removeChild(t)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),e&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),e&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var e in this.styles)this._textLines[e]||delete this.styles[e]},removeStyleFromTo:function(e,t){var i,r,n=this.get2DCursorLocation(e,!0),o=this.get2DCursorLocation(t,!0),s=n.lineIndex,a=n.charIndex,l=o.lineIndex,h=o.charIndex;if(s!==l){if(this.styles[s])for(i=a;i=h&&(r[c-d]=r[u],delete r[u])}},shiftLineStyles:function(e,t){var i=w(this.styles);for(var r in this.styles){var n=parseInt(r,10);n>e&&(this.styles[n+t]=i[n],i[n-t]||delete this.styles[n])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(e,t,i,r){var n,o={},s=!1,a=this._unwrappedTextLines[e].length===t;for(var l in i||(i=1),this.shiftLineStyles(e,i),this.styles[e]&&(n=this.styles[e][0===t?t:t-1]),this.styles[e]){var h=parseInt(l,10);h>=t&&(s=!0,o[h-t]=this.styles[e][l],a&&0===t||delete this.styles[e][l])}var c=!1;for(s&&!a&&(this.styles[e+i]=o,c=!0),c&&i--;i>0;)r&&r[i-1]?this.styles[e+i]={0:w(r[i-1])}:n?this.styles[e+i]={0:w(n)}:delete this.styles[e+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(e,t,i,r){this.styles||(this.styles={});var n=this.styles[e],o=n?w(n):{};for(var s in i||(i=1),o){var a=parseInt(s,10);a>=t&&(n[a+i]=o[a],o[a-i]||delete n[a])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[e]||(this.styles[e]={}),this.styles[e][t+i]=w(r[i]));else if(n)for(var l=n[t?t-1:1];l&&i--;)this.styles[e][t+i]=w(l)},insertNewStyleBlock:function(e,t,i){for(var r=this.get2DCursorLocation(t,!0),n=[0],o=0,s=0;s0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,n[0],i),i=i&&i.slice(n[0]+1)),o&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+n[0],o),s=1;s0?this.insertCharStyleObject(r.lineIndex+s,0,n[s],i):i&&this.styles[r.lineIndex+s]&&i[0]&&(this.styles[r.lineIndex+s][0]=i[0]),i=i&&i.slice(n[s]+1);n[s]>0&&this.insertCharStyleObject(r.lineIndex+s,0,n[s],i)},setSelectionStartEndWithShift:function(e,t,i){i<=e?(t===e?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=e),this.selectionStart=i):i>e&&ie?this.selectionStart=e:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>e?this.selectionEnd=e:this.selectionEnd<0&&(this.selectionEnd=0)}}),T.util.object.extend(T.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(e){if(this.canvas){this.__newClickTime=+new Date;var t=e.pointer;this.isTripleClick(t)&&(this.fire("tripleclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(e){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(e.e))},tripleClickHandler:function(e){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(e.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(e.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(e){if(this.__isMousedown=!1,!(!this.editable||this.group||e.transform&&e.transform.actionPerformed||e.e.button&&1!==e.e.button)){if(this.canvas){var t=this.canvas._activeObject;if(t&&t!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(e.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e),i=this.selectionStart,r=this.selectionEnd;e.shiftKey?this.setSelectionStartEndWithShift(i,r,t):(this.selectionStart=t,this.selectionEnd=t),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(e){for(var t,i=this.getLocalPointer(e),r=0,n=0,o=0,s=0,a=0,l=0,h=this._textLines.length;l0&&(s+=this._textLines[l-1].length+this.missingNewlineOffset(l-1));n=this._getLineLeftOffset(a)*this.scaleX,t=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+n);for(var c=0,u=t.length;co||s<0?0:1);return this.flipX&&(a=n-a),a>this._text.length&&(a=this._text.length),a}}),T.util.object.extend(T.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=T.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var e=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+e.top+"; left: "+e.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+e.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):T.document.body.appendChild(this.hiddenTextarea),T.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),T.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),T.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),T.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(T.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(e){if(this.isEditing){var t="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(e.keyCode in t)this[t[e.keyCode]](e);else{if(!(e.keyCode in this.ctrlKeysMapDown)||!e.ctrlKey&&!e.metaKey)return;this[this.ctrlKeysMapDown[e.keyCode]](e)}e.stopImmediatePropagation(),e.preventDefault(),e.keyCode>=33&&e.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(e){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:e.keyCode in this.ctrlKeysMapUp&&(e.ctrlKey||e.metaKey)&&(this[this.ctrlKeysMapUp[e.keyCode]](e),e.stopImmediatePropagation(),e.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(e){var t=this.fromPaste;if(this.fromPaste=!1,e&&e.stopPropagation(),this.isEditing){var i,r,n,o,s,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,l=this._text.length,h=a.length,c=h-l,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),_=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):h0&&(r+=(i=this.__charBounds[e][t-1]).left+i.width),r},getDownCursorOffset:function(e,t){var i=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(i),n=r.lineIndex;if(n===this._textLines.length-1||e.metaKey||34===e.keyCode)return this._text.length-i;var o=r.charIndex,s=this._getWidthBeforeCursor(n,o),a=this._getIndexOnLine(n+1,s);return this._textLines[n].slice(o).length+a+1+this.missingNewlineOffset(n)},_getSelectionForOffset:function(e,t){return e.shiftKey&&this.selectionStart!==this.selectionEnd&&t?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(e,t){var i=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||e.metaKey||33===e.keyCode)return-i;var o=r.charIndex,s=this._getWidthBeforeCursor(n,o),a=this._getIndexOnLine(n-1,s),l=this._textLines[n].slice(0,o),h=this.missingNewlineOffset(n-1);return-this._textLines[n-1].length+a-l.length+(1-h)},_getIndexOnLine:function(e,t){for(var i,r,n=this._textLines[e],o=this._getLineLeftOffset(e),s=0,a=0,l=n.length;at){r=!0;var h=o-i,c=o,u=Math.abs(h-t);s=Math.abs(c-t)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",e)},moveCursorUp:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",e)},_moveCursorUpOrDown:function(e,t){var i=this["get"+e+"CursorOffset"](t,"right"===this._selectionDirection);t.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(e){var t="left"===this._selectionDirection?this.selectionStart+e:this.selectionEnd+e;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,t),0!==e},moveCursorWithoutShift:function(e){return e<0?(this.selectionStart+=e,this.selectionEnd=this.selectionStart):(this.selectionEnd+=e,this.selectionStart=this.selectionEnd),0!==e},moveCursorLeft:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",e)},_move:function(e,t,i){var r;if(e.altKey)r=this["findWordBoundary"+i](this[t]);else{if(!e.metaKey&&35!==e.keyCode&&36!==e.keyCode)return this[t]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[t])}if(void 0!==typeof r&&this[t]!==r)return this[t]=r,!0},_moveLeft:function(e,t){return this._move(e,t,"Left")},_moveRight:function(e,t){return this._move(e,t,"Right")},moveCursorLeftWithoutShift:function(e){var t=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(t=this._moveLeft(e,"selectionStart")),this.selectionEnd=this.selectionStart,t},moveCursorLeftWithShift:function(e){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(e,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(e,"selectionStart")):void 0},moveCursorRight:function(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",e)},_moveCursorLeftOrRight:function(e,t){var i="moveCursor"+e+"With";this._currentCursorOpacity=1,t.shiftKey?i+="Shift":i+="outShift",this[i](t)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(e){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(e,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(e){var t=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(t=this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,t},removeChars:function(e,t){void 0===t&&(t=e+1),this.removeStyleFromTo(e,t),this._text.splice(e,t-e),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(e,t,i,r){void 0===r&&(r=i),r>i&&this.removeStyleFromTo(i,r);var n=T.util.string.graphemeSplit(e);this.insertNewStyleBlock(n,i,t),this._text=[].concat(this._text.slice(0,i),n,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var e=T.util.toFixed,t=/ +/g;T.util.object.extend(T.Text.prototype,{_toSVG:function(){var e=this._getSVGLeftTopOffsets(),t=this._getSVGTextAndBg(e.textTop,e.textLeft);return this._wrapSVGTextAndBg(t)},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(e){var t=this.getSvgTextDecoration(this);return[e.textBgRects.join(""),'\t\t",e.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(e,t){var i,r=[],n=[],o=e;this._setSVGBg(n);for(var s=0,a=this._textLines.length;s",T.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(e,t,i,r){var n,o,s,a,l,h=this.getHeightOfLine(t),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[t];r+=h*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,_=f.length-1;g<=_;g++)l=g===_||this.charSpacing,u+=f[g],s=this.__charBounds[t][g],0===d?(i+=s.kernedWidth-s.width,d+=s.width):d+=s.kernedWidth,c&&!l&&this._reSpaceAndTab.test(f[g])&&(l=!0),l||(n=n||this.getCompleteStyleDeclaration(t,g),o=this.getCompleteStyleDeclaration(t,g+1),l=this._hasStyleChangedForSvg(n,o)),l&&(a=this._getStyleDeclaration(t,g)||{},e.push(this._createTextCharSpan(u,a,i,r)),u="",n=o,i+=d,d=0)},_pushTextBgRect:function(t,i,r,n,o,s){var a=T.Object.NUM_FRACTION_DIGITS;t.push("\t\t\n')},_setSVGTextLineBg:function(e,t,i,r){for(var n,o,s=this._textLines[t],a=this.getHeightOfLine(t)/this.lineHeight,l=0,h=0,c=this.getValueOfPropertyAt(t,0,"textBackgroundColor"),u=0,d=s.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(e){for(var t=0,i=0,r=0,n={},o=0;o0?(i=0,r++,t++):!this.splitByGrapheme&&this._reSpaceAndTab.test(e.graphemeText[r])&&o>0&&(i++,r++),n[o]={line:t,offset:i},r+=e.graphemeLines[o].length,i+=e.graphemeLines[o].length;return n},styleHas:function(e,i){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[i];r&&(i=r.line)}return t.Text.prototype.styleHas.call(this,e,i)},isEmptyStyles:function(e){if(!this.styles)return!0;var t,i,r=0,n=!1,o=this._styleMap[e],s=this._styleMap[e+1];for(var a in o&&(e=o.line,r=o.offset),s&&(n=s.line===e,t=s.offset),i=void 0===e?this.styles:{line:this.styles[e]})for(var l in i[a])if(l>=r&&(!n||lr&&!p?(a.push(l),l=[],o=f,p=!0):o+=m,p||s||l.push(d),l=l.concat(c),g=s?0:this._measureWord([d],i,u),u++,p=!1,f>_&&(_=f);return v&&a.push(l),_+n>this.dynamicMinWidth&&(this.dynamicMinWidth=_-m+n),a},isEndOfWrapping:function(e){return!this._styleMap[e+1]||this._styleMap[e+1].line!==this._styleMap[e].line},missingNewlineOffset:function(e){return this.splitByGrapheme?this.isEndOfWrapping(e)?1:0:1},_splitTextIntoLines:function(e){for(var i=t.Text.prototype._splitTextIntoLines.call(this,e),r=this._wrapText(i.lines,this.width),n=new Array(r.length),o=0;o{},898:()=>{},245:()=>{}},P={};function F(e){var t=P[e];if(void 0!==t)return t.exports;var i=P[e]={exports:{}};return L[e](i,i.exports,F),i.exports}F.d=(e,t)=>{for(var i in t)F.o(t,i)&&!F.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},F.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var k={};(()=>{let e;F.d(k,{R:()=>e}),e="undefined"!=typeof document&&"undefined"!=typeof window?F(653).fabric:{version:"5.2.1"}})();var B=k.R; /*! * Dynamsoft JavaScript Library * @product Dynamsoft Camera Enhancer JS Edition * @website https://www.dynamsoft.com * @copyright Copyright 2022, Dynamsoft Corporation * @author Dynamsoft - * @version 3.0.0 (js 20220726) + * @version 3.0.1 (js 20220803) * @fileoverview Dynamsoft JavaScript Library for Camera Enhancer * More info on DCE JS: https://www.dynamsoft.com/camera-enhancer/docs/programming/javascript/?ver=latest - */function j(e,t,i,r){return new(i||(i=Promise))((function(n,o){function s(e){try{l(r.next(e))}catch(e){o(e)}}function a(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))}const N="undefined"==typeof self;let V,U,G,W,H;if("undefined"!=typeof navigator&&(V=navigator,U=V.userAgent,G=V.platform,W=V.mediaDevices),!N){const e={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(U)||this.searchVersion(V.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=U.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(e){for(let t=0;t{let e=!1;if(z)try{(await W.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===H.browser&&H.version>66||"Safari"===H.browser&&H.version>13||"OPR"===H.browser&&H.version>43||"Edge"===H.browser&&H.version;const J=(()=>{if(!N&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})();class q{constructor(e,t){this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapStyle=new Map,this.mapEvents=new Map([["select",[]],["deselect",[]]]),this.isDrawingItem=!0,this._setFabricObject(e),this._mediaType=e.type,this.styleSelector="default",this.styleId=t;for(let e of q.arrStyleSelectors)this._mapStyle.set(e,null)}get mediaType(){return this._mediaType}get drawingLayerId(){return this._drawingLayerId}_setFabricObject(e){this._fabricObject=e;const t=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const e=this.mapEvents.get("select");for(let t of e)t&&t.apply(this)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const e=t.get("deselect");for(let t of e)t&&t.apply(this)},e.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}on(e,t,i){const r=this.mapEvents.get(e);r.includes(t)||r.push(t)}off(e,t){const i=this.mapEvents.get(e),r=i.indexOf(t);-1!==r&&i.splice(r,1)}_setEditable(e){const t=this._fabricObject;e?(t.selectable=!0,t.evented=!0,t.hasControls=!0):(t.selectable=!1,t.evented=!1,t.hasControls=!1)}_extendSet(e,t){return!1}_extendGet(e){}set(e,t){this._extendSet(e,t)||("x"===e?this._fabricObject.set("left",t):"y"===e?this._fabricObject.set("top",t):this._fabricObject.set(e,t)),["vertices","left","top","width","height","scaleX","scaleY","skewX","skewY","padding","angle","strokeWidth"].includes(e)&&this._fabricObject.setCoords()}get(e){let t=this._extendGet(e);return void 0===t&&(t="x"===e?this._fabricObject.get("left"):"y"===e?this._fabricObject.get("top"):this._fabricObject.get(e)),t}}function Q(e,t,i){let r=i.points[this.pointIndex].x-i.pathOffset.x,n=i.points[this.pointIndex].y-i.pathOffset.y;return B.util.transformPoint({x:r,y:n},B.util.multiplyTransformMatrices(i.canvas.viewportTransform,i.calcTransformMatrix()))}function Z(e){let t=new B.Point(e.strokeUniform?1/e.scaleX:1,e.strokeUniform?1/e.scaleY:1).multiply(e.strokeWidth);return new B.Point(e.width+t.x,e.height+t.y)}function $(e,t,i,r){let n=t.target,o=n.controls[n.__corner],s=n.toLocalPoint(new B.Point(i,r),"center","center"),a=Z(n),l=n._getTransformedDimensions(0,0),h={x:s.x*a.x/l.x+n.pathOffset.x,y:s.y*a.y/l.y+n.pathOffset.y};return n.points[o.pointIndex]=h,!0}function ee(e,t){return function(i,r,n,o){let s=r.target,a=B.util.transformPoint({x:s.points[e].x-s.pathOffset.x,y:s.points[e].y-s.pathOffset.y},s.calcTransformMatrix()),l=t(i,r,n,o);s._setPositionDimensions({});let h=Z(s),c=(s.points[e].x-s.pathOffset.x)/h.x,u=(s.points[e].y-s.pathOffset.y)/h.y;return s.setPositionByOrigin(a,c+.5,u+.5),l}}q.arrMediaTypes=["rect","arc","polygon","image","text","line","path"],q.arrStyleSelectors=["default","selected"],"undefined"!=typeof document&&"undefined"!=typeof window&&(B.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(B.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(e){e.dispose&&e.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),B.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},B.Object.prototype.transparentCorners=!1,B.Object.prototype.cornerSize=20,B.Object.prototype.touchCornerSize=100,B.Object.prototype.cornerColor="rgb(254,142,20)",B.Object.prototype.cornerStyle="circle",B.Object.prototype.strokeUniform=!0,B.Object.prototype.hasBorders=!1,B.ActiveSelection.prototype.onDeselect=function(){return this.getObjects().forEach((e=>{setTimeout(e.onDeselect,0)})),this.destroy(),!1},B.Canvas.prototype.containerClass="",B.Canvas.prototype.getPointer=function(e,t){if(this._absolutePointer&&!t)return this._absolutePointer;if(this._pointer&&t)return this._pointer;var i,r=this.upperCanvasEl,n=B.util.getPointer(e,r),o=r.getBoundingClientRect(),s=o.width||0,a=o.height||0;s&&a||("top"in o&&"bottom"in o&&(a=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(s=Math.abs(o.right-o.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,t||(n=this.restorePointerVpt(n));var l=this.getRetinaScaling();if(1!==l&&(n.x/=l,n.y/=l),0!==s&&0!==a){var h=window.getComputedStyle(r).objectFit,c=r.width,u=r.height,d=s,f=a;i={width:c/d,height:u/f};var g,_,p=c/u,m=d/f;return"contain"===h?p>m?(g=d,_=d/p,{x:n.x*i.width,y:(n.y-(f-_)/2)*i.width}):(g=f*p,_=f,{x:(n.x-(d-g)/2)*i.height,y:n.y*i.height}):"cover"===h?p>m?{x:(c-i.height*d)/2+n.x*i.height,y:n.y*i.height}:{x:n.x*i.width,y:(u-i.width*f)/2+n.y*i.width}:{x:n.x*i.width,y:n.y*i.height}}return i={width:1,height:1},{x:n.x*i.width,y:n.y*i.height}});class te{constructor(e,t,i,r){let n,o;switch(this.mapMediaType_Style=new Map,this.mode="viewer",this.onSelectionChange=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,e.hasOwnProperty("getFabricCanvas")?this.fabricCanvas=e.getFabricCanvas():(this.fabricCanvas=new B.Canvas(e,r),this.fabricCanvas.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),this.fabricCanvas.lowerCanvasEl.className="",this.fabricCanvas.upperCanvasEl.className="",this.fabricCanvas.on("selection:created",(function(e){const t=e.selected,i=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!i.includes(t)&&i.push(t)}for(let e of i){const i=[];for(let r of t){const t=r.getDrawingItem();t._drawingLayer===e&&i.push(t)}setTimeout((()=>{e.onSelectionChange&&e.onSelectionChange(i,[])}),0)}})),this.fabricCanvas.on("before:selection:cleared",(function(e){const t=this.getActiveObjects(),i=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!i.includes(t)&&i.push(t)}for(let e of i){const i=[];for(let r of t){const t=r.getDrawingItem();t._drawingLayer===e&&i.push(t)}setTimeout((()=>{const t=[];for(let r of i)e.hasDrawingItem(r)&&t.push(r);t.length>0&&e.onSelectionChange&&e.onSelectionChange([],t)}),0)}})),this.fabricCanvas.on("selection:updated",(function(e){const t=e.selected,i=e.deselected,r=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!r.includes(t)&&r.push(t)}for(let e of i){const t=e.getDrawingItem()._drawingLayer;t&&!r.includes(t)&&r.push(t)}for(let e of r){const r=[],n=[];for(let i of t){const t=i.getDrawingItem();t._drawingLayer===e&&r.push(t)}for(let t of i){const i=t.getDrawingItem();i._drawingLayer===e&&n.push(i)}setTimeout((()=>{e.onSelectionChange&&e.onSelectionChange(r,n)}),0)}})),this.fabricCanvas.wrapperEl.style.position="absolute",e.getFabricCanvas=()=>this.fabricCanvas),this.id=t,this._mapDrawingStyles=i,t){case 1:n=i.get(1),o=i.get(5);break;case 2:n=i.get(2),o=i.get(6);break;case 3:n=i.get(3),o=i.get(7);break;default:n=i.get(4),o=i.get(8)}for(let e of q.arrMediaTypes)this.mapMediaType_Style.set(e,{default:n,selected:o})}getId(){return this.id}_getDrawingStyle(e,t){if("number"!=typeof e)throw new Error("Invalid style id.");const i=this._mapDrawingStyles.get(e);return i?t?JSON.parse(JSON.stringify(i)):i:null}setVisible(e){if(e){for(let e of this._arrFabricObject)e.visible=!0;this._visible=!0}else{for(let e of this._arrFabricObject)e.visible=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyleId(e){return e.styleId?e.styleId:this.mapMediaType_Style.get(e._mediaType)[e.styleSelector].styleId}_getItemCurrentStyle(e){if(e.styleId)return this._getDrawingStyle(e.styleId);return e._mapStyle.get(e.styleSelector)||null}_changeMediaTypeCurStyleInStyleSelector(e,t,i,r){let n;switch(e){case"rect":n=this.fabricCanvas.getObjects("rect");break;case"arc":n=this.fabricCanvas.getObjects("circle");break;case"polygon":n=this.fabricCanvas.getObjects("polygon");break;case"image":n=this.fabricCanvas.getObjects("image");break;case"text":n=this.fabricCanvas.getObjects("text");break;case"line":n=this.fabricCanvas.getObjects("line");break;case"path":n=this.fabricCanvas.getObjects("path")}for(let e of n){if(!this._arrFabricObject.includes(e))continue;const r=e.getDrawingItem();r.styleSelector===t&&this._changeItemStyle(r,i,!0)}r||this.fabricCanvas.renderAll()}_changeItemStyle(e,t,i){if(!e||!t)return;const r=e._getFabricObject();"number"==typeof e.styleId&&(t=this._getDrawingStyle(e.styleId)),r.strokeWidth=t.lineWidth,"fill"===t.paintMode?(r.fill=t.fillStyle,r.stroke=t.fillStyle):"stroke"===t.paintMode?(r.fill="transparent",r.stroke=t.strokeStyle):"strokeAndFill"===t.paintMode&&(r.fill=t.fillStyle,r.stroke=t.strokeStyle),r.fontFamily&&(r.fontFamily=t.fontFamily),r.fontSize&&(r.fontSize=t.fontSize),r.group||(r.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(e,t,i){if(!e||!t)return;const r=e.getChildItems();if("add"===i){if(r.includes(t))return;const i=t._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");t._zIndex=null}else{let i;if(t.styleId)i=this._getDrawingStyle(t.styleId);else{i=this.mapMediaType_Style.get(t._mediaType)[e.styleSelector];const r=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).selected,!0)},n=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).default,!0)};t.on("select",r),t.on("deselect",n),t._funcChangeStyleToSelected=r,t._funcChangeStyleToDefault=n}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,i,!0)}e._fabricObject.addWithUpdate(t._getFabricObject())}else{if("remove"!==i)return;if(!r.includes(t))return;t._zIndex=null,t._drawingLayer=null,t._drawingLayerId=null,t.off("select",t._funcChangeStyleToSelected),t.off("deselect",t._funcChangeStyleToDefault),t._funcChangeStyleToSelected=null,t._funcChangeStyleToDefault=null,e._fabricObject.removeWithUpdate(t._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(e,t){let i=e._getFabricObject();const r=this.fabricCanvas.getObjects();let n,o;if(r.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===e._mediaType){n=e.getChildItems();for(let e of n)if(e._drawingLayer&&e._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(t&&"object"==typeof t&&!Array.isArray(t))for(let e in t)i.set(e,t[e]);if(n){for(let e of n){if(e.styleId)o=this._getDrawingStyle(e.styleId);else{const t=this.mapMediaType_Style.get(e._mediaType);for(let i of q.arrStyleSelectors)e._mapStyle.set(i,t[i]);o=t.default;const i=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected,!0)},r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default,!0)};e.on("select",i),e.on("deselect",r),e._funcChangeStyleToSelected=i,e._funcChangeStyleToDefault=r}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,o,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{if(e.styleId)o=this._getDrawingStyle(e.styleId);else{const t=this.mapMediaType_Style.get(e._mediaType);for(let i of q.arrStyleSelectors)e._mapStyle.set(i,t[i]);o=t.default;const i=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected)},r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default)};e.on("select",i),e.on("deselect",r),e._funcChangeStyleToSelected=i,e._funcChangeStyleToDefault=r}this._changeItemStyle(e,o)}e._zIndex=this.id,e._drawingLayer=this,e._drawingLayerId=this.id;const s=this._arrFabricObject.length;let a=r.length;if(s)a=r.indexOf(this._arrFabricObject[s-1])+1;else for(let t=0;t{for(let t of this._arrDrawingLayer)if(t.getId()===e)return!0;return!1};if(void 0===t){for(let e=100;;e++)if(!i(e)){t=e;break}}else if(i(t))throw new Error("Existed drawing layer id.");const r=new te(e,t,this._mapDrawingStyles,{enableRetinaScaling:!1});return r._manager=this,this._arrDrawingLayer.push(r),this._switchPointerEvent(),r}deleteDrwaingLayer(e){const t=this.getDrawingLayer(e);if(!t)return;const i=this._arrDrawingLayer;t.dispose(),i.splice(i.indexOf(t),1),this._switchPointerEvent()}clearDrawingLayers(){for(let e of this._arrDrawingLayer)e.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(e){for(let t of this._arrDrawingLayer)if(t.getId()===e)return t;return null}getDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const e=this._arrDrawingLayer[0].fabricCanvas.getActiveObjects(),t=[];for(let i of e)t.push(i.getDrawingItem());return t}setDimensions(e,t){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(e,t)}setObjectFit(e){for(let t of this._arrDrawingLayer)t&&t._setObjectFit(e)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(e){this._arrDrawingLayer.length&&(this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.display=e?"block":"none")}_switchPointerEvent(){if(!this._arrDrawingLayer.length)return;let e=!1;for(let t of this._arrDrawingLayer)"editor"===t.getMode()&&(e=!0);this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.pointerEvents=e?"":"none"}}class re{constructor(e){this._controlTarget=null,this._arrUsers=[],this._mapAction_UserArgs=new Map,this._mapProperty_UserValue=new Map,this._mapAction_Callbacks=new Map,this._controlTarget=e}setControlTarget(e){this._controlTarget=e}getControlTarget(){return this._controlTarget}register(e){this._arrUsers.includes(e)||this._arrUsers.push(e)}logout(e){const t=this._arrUsers.indexOf(e);-1!==t&&(this.clearUserDisiredAction({user:e}),this.clearUserDisiredValue({user:e}),this._arrUsers.splice(t,1))}getRegisteredUsers(){return this._arrUsers}ifUserExisted(e){return this._arrUsers.includes(e)}setDisiredValue(e,t,i,r){if(!this._arrUsers.includes(e))throw new Error("Unregistered user.");r&&(this._controlTarget[t]=i),this._mapProperty_UserValue.get(t)?this._mapProperty_UserValue.get(t).set(e,i):this._mapProperty_UserValue.set(t,new Map([[e,i]]))}clearUserDisiredValue(e){if(e&&(e.user||e.property)){if(e.property&&e.user){const t=this._mapProperty_UserValue.get(e.property);if(!t)return;t.delete(e.user)}else if(e.property)this._mapProperty_UserValue.delete(e.property);else if(e.user)for(let t of this._mapProperty_UserValue.values())t.delete(e.user)}else this._mapProperty_UserValue=new Map}getValue(e){if(!this._controlTarget)throw new Error("Control target is not set.");return this._controlTarget[e]}getPropertyDisiredValue(e){if(this._mapProperty_UserValue.get(e)){const t=[],i=this._mapProperty_UserValue.get(e);for(let e of i.values())t.push(e);return t}return null}setDisiredAction(e,t,i,r){if(!this._arrUsers.includes(e))throw new Error("Unregistered user.");return i||(i=[]),r?this._controlTarget[t](...i):(this._mapAction_UserArgs.get(t)?this._mapAction_UserArgs.get(t).set(e,i):this._mapAction_UserArgs.set(t,new Map([[e,i]])),this._render(t))}clearUserDisiredAction(e){if(e&&(e.user||e.actionName)){if(e.actionName&&e.user){const t=this._mapAction_UserArgs.get(e.actionName);if(!t)return;t.delete(e.user)}else if(e.actionName)this._mapAction_UserArgs.delete(e.actionName);else if(e.user)for(let t of this._mapAction_UserArgs.values())t.delete(e.user);this.render()}else this._mapAction_UserArgs=new Map}addCallback(e,t){const i=this._mapAction_Callbacks.get(e);i?i.push(t):this._mapAction_Callbacks.set(e,[t])}removeCallback(e,t){const i=this._mapAction_Callbacks.get(e);if(!i)return;const r=i.indexOf(t);-1!==r&&i.splice(r,1)}clearCallback(e){e?this._mapAction_Callbacks.delete(e):this._mapAction_Callbacks.clear()}_fireCallback(e){const t=this._mapAction_Callbacks.get(e);if(t)for(let e of t){if(!e)return;setTimeout(e.bind(this._controlTarget),0)}}_render(e){const t=this._mapAction_UserArgs.get(e);if(!t)throw new Error("Unrecorded action.");if(t.size===this._arrUsers.length){let i=[];for(let e of t.values())e.length>0&&(i=e);if(this._controlTarget[e]){const t=this._controlTarget[e](...i);return this._mapAction_UserArgs.delete(e),this._fireCallback(e),t}}}render(e){if(e)return this._render(e);for(let e of this._mapAction_UserArgs.keys())this._render(e)}}class ne{constructor(){this._maxCvsSideLength=void 0,this._defaultMaxCvsSideLength=null,this._predefinedResolutions=[{width:160,height:120},{width:320,height:240},{width:480,height:360},{width:640,height:480},{width:800,height:600},{width:960,height:720},{width:1280,height:720},{width:1920,height:1080},{width:2560,height:1440},{width:3840,height:2160}],this._mapCameraResolutions=new Map,this._bWebGLSupported=!0,this.extraBindings=[],this._singleFrameMode=!(navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia),this._cvsSingleFrameMode=null,this._cvsOriginalImage=null,this._imgWidth=0,this._imgHeight=0,this._singleFrameModeIpt=null,this._clickIptSingleFrameMode=()=>{if(this.singleFrameMode){if(!this._singleFrameModeIpt){const e=document.createElement("input");this._singleFrameModeIpt=e,e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.addEventListener("change",(()=>j(this,void 0,void 0,(function*(){const t=e.files[0];e.value="";const i=yield(e=>j(this,void 0,void 0,(function*(){let t=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(t=yield createImageBitmap(e),t)return t}catch(e){}var r;return t||(i=yield(r=e,new Promise(((e,t)=>{let i=URL.createObjectURL(r),n=new Image;n.dbrObjUrl=i,n.src=i,n.onload=()=>{e(n)},n.onerror=e=>{t(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}})))),i})))(t),r=i instanceof HTMLImageElement?i.naturalWidth:i.width,n=i instanceof HTMLImageElement?i.naturalHeight:i.height;this._imgWidth=r,this._imgHeight=n;const o=e=>{const t=Date.now();if(0===r||0===n)return null;const i=this._scanRegion,o=this.getFrameSize(r,n,i,this.maxCvsSideLength);if(!o)return null;let s,a;s=r!==o.sWidth||n!==o.sHeight,a=o.sWidth!==o.dWidth||o.sHeight!==o.dHeight;const l=(()=>!(!this._bWebGLSupported||a))(),h={data:null,region:i?JSON.parse(JSON.stringify(i)):null,sx:o.sx,sy:o.sy,width:o.dWidth,height:o.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:s,toCanvas:this._toCanvas,_sWidth:o.sWidth,_sHeight:o.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(e,r,n,o,null,{targetColorMode:this.frameColorMode,bUseWebGL:l})}catch(t){if("WebGLError"!==t.name)throw t;c=this._getImageData(e,r,n,o,null,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return ne._onLog&&ne._onLog("DCE: _getVideoFrame(region?) END: "+u),h.data=c.data,h.colorMode=c.colorMode,h._bUseWebGL=c._bUseWebGL,h.timeSpent=u-t,h.timeStamp=u,h};(e=>{let t=this._cvsSingleFrameMode;if(!t){if(t=document.createElement("canvas"),t.style.pointerEvents="none",!this._video)throw new Error("'video' is null.");this._video.after(t),t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.objectFit="contain",this._cvsSingleFrameMode=t}t.width==r&&t.height==n||(t.width=r,t.height=n);const i=t.getContext("2d");i.clearRect(0,0,t.width,t.height),i.drawImage(e,0,0)})(i),this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e);let s;this._updateDrawingLayersSize();try{s=o(i)}catch(e){throw e}const a=this.mapCameraEvents.get("singleFrameAcquired");for(let e of a)if(e)try{const t={data:new Uint8Array(s.data),region:JSON.parse(JSON.stringify(s.region)),sx:s.sx,sy:s.sy,width:s.width,height:s.height,colorMode:s.colorMode,timeSpent:s.timeSpent,timeStamp:s.timeStamp,isCropped:s.isCropped,toCanvas:s.toCanvas,_sWidth:s._sWidth,_sHeight:s._sHeight,_bUseWebGL:s._bUseWebGL};yield e.apply(this,[t])}catch(e){console.error(e)}})))),e.style.position="fixed",e.style.left="-1px",e.style.top="-1px",e.style.width="1px",e.style.height="1px",e.style.backgroundColor="transparent",e.style.color="transparent",document.body.appendChild(e)}this._singleFrameModeIpt.click()}},this.styleEls=[],this._frameColorMode=void 0,this._defaultFrameColorMode="RGBA",this.currentFSColorMode="rgba",this.ifReuseArrayBufferView=!1,this.maxVideoCvsLength=3,this._reusedCvs=null,this._reusedWebGLCvs=null,this._reusedWebGLCtx=null,this._reusedDataContainer=null,this._webGLTexture=null,this._webGLProgramInfo=null,this._webGLBuffers=null,this._recordedStates={},this._toCanvas=function(){const e=document.createElement("canvas");let t;if(e.width=this.width,e.height=this.height,"grey"===this.colorMode){t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;ej(this,void 0,void 0,(function*(){yield this.selectCamera(this._selCam.value),this._bOpen||this.stop()})),this._onResolutionSelChange=()=>j(this,void 0,void 0,(function*(){let e,t;if(this._selRsl&&-1!=this._selRsl.selectedIndex){let i=this._selRsl.options[this._selRsl.selectedIndex];e=i.getAttribute("data-width"),t=i.getAttribute("data-height")}yield this.setResolution(e,t),this._bOpen||this.stop()})),this._onCloseBtnClick=()=>{this.close(!0)},this._bOpen=!1,this.isCameraEnhancer=!0,this.isDisposed=!1,this.videoSrc=null,this.videoSettings={video:{width:{ideal:1280},height:{ideal:720},facingMode:{ideal:"environment"}}},this.iPlayRound=0,this.promisePlay=null,this._ifSaveLastUsedCamera=!1,this.ifSkipCameraInspection=!1,this._allCameras=[],this._currentCamera=null,this._videoTrack=null,this._lastDeviceId=void 0,this._vc_bPlayingVideoBeforeHide=!1,this._ev_documentHideEvent=()=>{"visible"===document.visibilityState?this._vc_bPlayingVideoBeforeHide&&("Firefox"==H.browser?this.play():this._video.play(),this._vc_bPlayingVideoBeforeHide=!1):this._video&&!this._video.paused&&(this._vc_bPlayingVideoBeforeHide=!0,this._video.pause())},this._divVideoContainer=null,this._video=null,this.videoFit="contain",this._cvsScanRegion=null,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=2,this._bShowScanRegionMask=!0,this._bShowScanRegionLaser=void 0,this._defaultBShowScanRegionLaser=!1,this._scanRegion=null,this._arrScanRegionOverlays=[],this._layerBaseCvs=null,this._cvsViewDecorator=null,this._decoratorType=[],this._decoratorArea=null,this._viewDecoratorInfo={rectangle:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},focus:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},crossline:{lineWidth:2,strokeStyle:"rgb(254,142,20)"},crosshair:{lineWidth:4,strokeStyle:"rgb(254,142,20)"}},this._croppingRegions=void 0,this._defaultCroppingRegions=[null],this.bIncreaseRegionIndexAuto=!0,this._croppingRegionIndex=0,this._loopInterval=void 0,this._defaultLoopInterval=0,this._maxNumberOfFramesInBuffer=void 0,this._defaultMaxNumberOfFramesInBuffer=1,this._frameQueue=[],this._bFetchingLoopStarted=!1,this._refreshInterval=void 0,this._defaultRefreshInterval=-1,this._updateLayersTimeout=0,this._updateLayers=()=>{this._resizeTimeoutId&&clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout((()=>{if(!this.isDisposed){this._updateScanAreaDiv(),this._updateViewDecorator();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e)}}),this._updateLayersTimeout)},this.mapCameraEvents=new Map([["cameraOpen",[]],["cameraClose",[]],["cameraChange",[]],["resolutionChange",[]],["played",[]],["singleFrameAcquired",[]],["frameAddedToBuffer",[]]]),this._controler=null}static getVersion(){return this._version}static detectEnvironment(){return j(this,void 0,void 0,(function*(){return yield(async()=>({wasm:X,worker:Y,getUserMedia:z,camera:await K(),browser:H.browser,version:H.version,OS:H.OS}))()}))}static set engineResourcePath(e){if(this._hasEngineResourceLoaded)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` is called.");ne._engineResourcePath=(e=>{if(null==e&&(e="./"),!N){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get engineResourcePath(){return this._engineResourcePath}static isStorageAvailable(e){let t;try{t=window[e];const i="__storage_test__";return t.setItem(i,i),t.removeItem(i),!0}catch(e){return e instanceof DOMException&&(22===e.code||1014===e.code||"QuotaExceededError"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name)&&t&&0!==t.length}}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"data"in e&&"region"in e&&"sx"in e&&"sy"in e&&"width"in e&&"height"in e&&"colorMode"in e&&"timeSpent"in e&&"timeStamp"in e&&"isCropped"in e&&"toCanvas"in e&&"_sWidth"in e&&"_sHeight"in e&&"_bUseWebGL"in e}set maxCvsSideLength(e){if(e<=0)throw new Error("Invalid value.");this._maxCvsSideLength=e}get maxCvsSideLength(){if(void 0!==this._maxCvsSideLength)return this._maxCvsSideLength;if(this._controler){const e=this._controler.getPropertyDisiredValue("maxCvsSideLength");if(e&&1===e.length)return e[0]}return this._defaultMaxCvsSideLength}static set defaultUIElementURL(e){ne._defaultUIElementURL=e}static get defaultUIElementURL(){var e;return null===(e=ne._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",ne.engineResourcePath)}getUIElement(){return this.UIElement}setUIElement(e){return j(this,void 0,void 0,(function*(){if(this._bOpen)throw new Error("It is not allowed to change the UIElement when the camera is open.");if("string"==typeof e||e instanceof String){if(!e.trim().startsWith("<")){let t=yield fetch(e);if(!t.ok)throw Error("setUIElement(elementOrUrl): Network Error: "+t.statusText);e=yield t.text()}if(!e.trim().startsWith("<"))throw Error("setUIElement(elementOrUrl): Can't get valid HTMLElement.");let t=document.createElement("div");t.innerHTML=e;for(let e=0;e100||e.regionTop>100||e.regionRight>100||e.regionBottom>100)))}set scanRegion(e){if(!this._checkValidRegion(e))throw new Error("Invalid region.");this._scanRegion=JSON.parse(JSON.stringify(e)),this._updateScanRegionCanvas(),this._updateScanAreaDiv();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e)}setScanRegion(e){this.scanRegion=e}getScanRegion(){return JSON.parse(JSON.stringify(this._scanRegion))}_calculateCvsSize(){if(!this._bOpen)return null;let e,t,i;if(this.singleFrameMode)e=this._imgWidth,t=this._imgHeight,i="contain";else{if(!this._video)return null;e=this._video.videoWidth,t=this._video.videoHeight,i=this.getVideoFit()}return{width:e,height:t,objectFit:i}}addScanRegionOverlayCanvas(){this._assertOpen();const e=document.createElement("canvas");if(this._updateScanRegionOverlay(e),!this._scanRegionOverlayContainer){const e=document.createElement("div");if(this._scanRegionOverlayContainer=e,e.style.position="absolute",e.style.left="0",e.style.top="0",e.style.width="100%",e.style.height="100%",e.style.overflow="hidden",e.style.pointerEvents="none",this._layerBaseCvs)this._layerBaseCvs.parentElement.after(e);else if(this._cvsScanRegion)this._cvsScanRegion.before(e);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(e);else{if(!this._video)throw new Error("'video' is null.");this._video.after(e)}this._recordedStates.overlayShow=!0}return this._scanRegionOverlayContainer.append(e),this._arrScanRegionOverlays.push(e),e}removeScanRegionOverlayCanvas(e){const t=this._arrScanRegionOverlays.indexOf(e);-1!==t&&(e.remove(),this._arrScanRegionOverlays.splice(t,1))}_updateScanRegionOverlay(e){if(!e)return;const t=this._calculateCvsSize();if(!t)return;const{width:i,height:r,objectFit:n}=t;if(i<=0||r<=0)return e.width=0,void(e.height=0);const o=this._getRegionInPixels(i,r,this._scanRegion),s=this.getFrameSize(i,r,this._scanRegion,this.maxCvsSideLength),a=s.dWidth,l=s.dHeight;e.width==a&&e.height==l||(e.width=a,e.height=l);const h=window.getComputedStyle(this._video),c=parseFloat(h.width),u=parseFloat(h.height),d=c/u,f=i/r;let g,_,p,m,v=1;"contain"===n?(dd?(v=u/r,g=o.regionLeft*v-(i*v-c)/2,_=o.regionTop*v):(v=c/i,g=o.regionLeft*v,_=o.regionTop*v-(r*v-u)/2),p=(o.regionRight-o.regionLeft)*v,m=(o.regionBottom-o.regionTop)*v):(g=0,_=0,p=0,m=0),e.style.position="absolute",e.style.left=g+"px",e.style.top=_+"px",e.style.width=p+"px",e.style.height=m+"px"}showScanRegionOverlays(){this._scanRegionOverlayContainer&&("none"==this._scanRegionOverlayContainer.style.display&&(this._scanRegionOverlayContainer.style.display=""),this._recordedStates.overlayShow=!0)}hideScanRegionOverlays(){this._scanRegionOverlayContainer&&(this._scanRegionOverlayContainer.style.display="none",this._recordedStates.overlayShow=!1)}setViewDecorator(e,t){if(!e)return void(this._cvsViewDecorator&&(this._cvsViewDecorator.remove(),this._cvsViewDecorator=null));this._assertOpen();let i=[];if("string"==typeof e?i.push(e):Array.isArray(e)&&(i=JSON.parse(JSON.stringify(e))),!this._cvsViewDecorator){if(this._cvsViewDecorator=document.createElement("canvas"),this._cvsViewDecorator.style.pointerEvents="none",this._cvsScanRegion)this._cvsScanRegion.after(this._cvsViewDecorator);else if(this._scanRegionOverlayContainer)this._scanRegionOverlayContainer.after(this._cvsViewDecorator);else if(this._layerBaseCvs)this._layerBaseCvs.parentElement.after(this._cvsViewDecorator);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(this._cvsViewDecorator);else{if(!this._video)throw new Error("'video' is null.");this._video.after(this._cvsViewDecorator)}this._recordedStates.decoratorShow=!0}this._decoratorArea=JSON.parse(JSON.stringify(t)),this._decoratorType.length=0;const r=["rectangle","focus"],n=["crossline","crosshair"];let o=!1,s=!1;for(let e of i)e=e.toLowerCase(),r.includes(e)&&!o&&(o=!0,this._decoratorType.push(e)),n.includes(e)&&!s&&(s=!0,!this._decoratorType.includes(e)&&this._decoratorType.push(e));this._updateViewDecorator()}getViewDecorator(){return{type:JSON.parse(JSON.stringify(this._decoratorType)),area:JSON.parse(JSON.stringify(this._decoratorArea)),canvas:this._cvsViewDecorator}}showViewDecorator(){this._cvsViewDecorator&&("none"==this._cvsViewDecorator.style.display&&(this._cvsViewDecorator.style.display=""),this._recordedStates.decoratorShow=!0)}hideViewDecorator(){this._cvsViewDecorator&&(this._cvsViewDecorator.style.display="none",this._recordedStates.decoratorShow=!1)}setViewDecoratorLineWidth(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("lineWidth"))throw new Error(`It is not allowed to change the property 'lineWidth' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].lineWidth=t,this._updateViewDecorator()}setViewDecoratorStrokeStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("strokeStyle"))throw new Error(`It is not allowed to change the property 'strokeStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].strokeStyle=t,this._updateViewDecorator()}setViewDecoratorFillStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("fillStyle"))throw new Error(`It is not allowed to change the property 'fillStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].fillStyle=t,this._updateViewDecorator()}setViewDecoratorMaskFillStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("maskFillStyle"))throw new Error(`It is not allowed to change the property 'maskFillStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].maskFillStyle=t,this._updateViewDecorator()}_updateViewDecorator(){if(!this._bOpen)return;if(!this._cvsViewDecorator||!this._decoratorArea)return;let e;if(this.singleFrameMode)e="contain";else{if(!this._video)return;e=this.getVideoFit()}const t=this._cvsViewDecorator;t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.objectFit=e;const i=this.getVisibleRegion(!0),r=i.regionRight-i.regionLeft,n=i.regionBottom-i.regionTop;if(t.width==r&&t.height==n||(t.width=r,t.height=n),r<=0||n<=0)return;const o=t.getContext("2d");o.clearRect(0,0,t.width,t.height);const s=this._decoratorArea.x/100*r,a=this._decoratorArea.y/100*n,l=this._decoratorArea.width/100*r,h=this._decoratorArea.height/100*n;for(let e of this._decoratorType){if("rectangle"===e){o.fillStyle=this._viewDecoratorInfo.rectangle.maskFillStyle,o.fillRect(0,0,t.width,t.height),o.clearRect(Math.round(s),Math.round(a),Math.round(l),Math.round(h)),o.fillStyle=this._viewDecoratorInfo.rectangle.fillStyle,o.fillRect(Math.round(s),Math.round(a),Math.round(l),Math.round(h)),o.lineWidth=this._viewDecoratorInfo.rectangle.lineWidth,o.strokeStyle=this._viewDecoratorInfo.rectangle.strokeStyle;const e=o.lineWidth/2;o.strokeRect(Math.round(s-e),Math.round(a-e),Math.round(l+o.lineWidth),Math.round(h+o.lineWidth))}if("focus"===e){o.fillStyle=this._viewDecoratorInfo.focus.maskFillStyle,o.fillRect(0,0,t.width,t.height),o.clearRect(Math.round(s),Math.round(a),Math.round(l),Math.round(h)),o.fillStyle=this._viewDecoratorInfo.focus.fillStyle,o.fillRect(Math.round(s),Math.round(a),Math.round(l),Math.round(h)),o.lineWidth=this._viewDecoratorInfo.focus.lineWidth,o.strokeStyle=this._viewDecoratorInfo.focus.strokeStyle;const e=o.lineWidth/2,i=[0,.25,.75,1],r=[0,.25,.75,1];o.beginPath();for(let e=0;e{const e=parseFloat(window.getComputedStyle(this._video).width),t=parseFloat(window.getComputedStyle(this._video).height);let o,s={regionBottom:r,regionRight:i,regionLeft:0,regionTop:0,regionMeasuredByPercentage:!1};return"cover"===n?e/tthis.maxNumberOfFramesInBuffer;)this._frameQueue.shift()}get maxNumberOfFramesInBuffer(){if(void 0!==this._maxNumberOfFramesInBuffer)return this._maxNumberOfFramesInBuffer;if(this._controler){const e=this._controler.getPropertyDisiredValue("maxNumberOfFramesInBuffer");if(e&&1===e.length)return e[0]}return this._defaultMaxNumberOfFramesInBuffer}get numberOfFramesInBuffer(){return this._frameQueue.length}set refreshInterval(e){this._refreshInterval=e}get refreshInterval(){if(void 0!==this._refreshInterval)return this._refreshInterval;if(this._controler){const e=this._controler.getPropertyDisiredValue("refreshInterval");if(e&&1===e.length)return e[0]}return this._defaultRefreshInterval}static createInstance(e){return j(this,void 0,void 0,(function*(){let t=new ne;("string"==typeof e||e instanceof String)&&(e=JSON.parse(e));for(let i in e)t[i]=e[i];return this._hasEngineResourceLoaded=!0,ne.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{ne.onWarning&&ne.onWarning({id:1,message:"Not using HTTP protocol, the SDK may not work correctly."})}),0):location&&"https:"!==location.protocol&&setTimeout((()=>{ne.onWarning&&ne.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)),t._drawingLayersManager=new ie,t}))}play(e,t,i,r){return j(this,void 0,void 0,(function*(){if(this._video&&this.videoSrc){yield new Promise(((e,t)=>{this._video.onloadedmetadata=()=>j(this,void 0,void 0,(function*(){this._video&&(this._video.onloadedmetadata=null,yield this._video.play(),e())})),"string"==typeof this.videoSrc||this.videoSrc instanceof String?this._video.src=this.videoSrc:this._video.srcObject=this.videoSrc,setTimeout((()=>t(new Error("Failed to play video. Timeout."))),4e3)}));const e={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};this.playCallbackInfo=JSON.parse(JSON.stringify(e));const t=this.mapCameraEvents.get("played");for(let i of t){if(!i)continue;const t=JSON.parse(JSON.stringify(e));setTimeout((()=>i.apply(this,[t])),0)}return this._recordedStates.videoPlaying=!0,e}if(this.singleFrameMode)return r&&r.notTriggerSingleFrameClick||this._clickIptSingleFrameMode(),this.playCallbackInfo={width:0,height:0,deviceId:null},JSON.parse(JSON.stringify(this.playCallbackInfo));if(!this._video)return this.playCallbackInfo=null,null;const n=++this.iPlayRound;let o=null,s=0,a=0;if(this._currentCamera&&(o=this._currentCamera.deviceId),this._video&&(s=this._video.videoWidth,a=this._video.videoHeight),this.promisePlay&&(yield this.promisePlay,nj(this,void 0,void 0,(function*(){var r;try{this._video&&this._video.srcObject&&this.stop(),ne._onLog&&ne._onLog("DCE: ======before video========");const n=()=>{if(!this._video)throw d&&d.getTracks().forEach((e=>{e.stop()})),this._videoTrack=null,this._currentCamera=null,new Error("'video' is null.")},l=this.getVideoSettings();let h;"boolean"==typeof l.video&&(l.video={});const c=["rear","back","rück","arrière","trasera","trás","traseira","posteriore","后面","後面","背面","后置","後置","背置","задней","الخلفية","후","arka","achterzijde","หลัง","baksidan","bagside","sau","bak","tylny","takakamera","belakang","אחורית","πίσω","spate","hátsó","zadní","darrere","zadná","задня","stražnja","belakang","बैक"],u=()=>{for(let e of this._allCameras){let t=e.label.toLowerCase();if(t&&c.some((e=>-1!=t.indexOf(e)))&&/\b0(\b)?/.test(t)){delete l.video.facingMode,l.video.deviceId={ideal:e.deviceId};break}}l.video.deviceId||-1==["Android","HarmonyOS"].indexOf(H.OS)||(delete l.video.facingMode,l.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})};if(e)delete l.video.facingMode,l.video.deviceId={exact:e};else if(l.video.deviceId);else if(this._lastDeviceId)delete l.video.facingMode,l.video.deviceId={exact:this._lastDeviceId};else if(this.ifSaveLastUsedCamera&&ne.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete l.video.facingMode,l.video.deviceId={exact:window.localStorage.getItem("dce_last_camera_id")};const w=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),T=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));w&&T&&(l.video.width=w,l.video.height=T)}else if(this.ifSkipCameraInspection);else if(l.video.facingMode){if("iPhone"!==H.OS&&"Mac"!==H.OS&&(yield this.getAllCameras(!0)),!this._video)return null;let x=l.video.facingMode;x instanceof Array&&x.length&&(x=x[0]),x=x.exact||x.ideal||x,"environment"===x&&(h=!!l.video.facingMode,u())}let d;t&&(l.video.width={ideal:t}),i&&(l.video.height={ideal:i}),ne._onLog&&ne._onLog("DCE: ======try getUserMedia========");let f,g=[0,500],_=null,p=null;function m(e){return j(this,void 0,void 0,(function*(){for(let t of g){n(),t&&(yield new Promise((e=>setTimeout(e,t)))),n();{const t=e.video.deviceId;p=t?t.exact||t.ideal||t:null}try{ne._onLog&&ne._onLog("DCE: ask "+JSON.stringify(e)),d=yield navigator.mediaDevices.getUserMedia(e),n();break}catch(e){_=e,ne._onLog&&ne._onLog("DCE: "+e.message||e)}}}))}if(yield m(l),d||(ne._onLog&&ne._onLog("DCE: ======try getUserMedia again========"),f=JSON.parse(JSON.stringify(l)),"object"==typeof f.video&&("iPhone"==H.OS?(t>=1280||i>=1280?f.video.width=1280:t>=640||i>=640?f.video.width=640:(t<640||i<640)&&(f.video.width=320),delete f.video.height):h&&!l.video.deviceId?(delete f.video.facingMode,this._allCameras.length&&(f.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})):f.video=!0),ne._onLog&&ne._onLog("DCE: "+f),yield m(f)),d||(g=[1e3,2e3],yield m(l)),d||(yield m(f)),!d)throw _;const v=()=>{const e=d.getVideoTracks();let t,i;if(e.length&&(t=this._videoTrack=e[0]),this._video&&t){const e=t.getSettings();if(e)for(let r of this._allCameras)if(e.deviceId===r.deviceId){r._checked=!0,r.label=t.label,i=r;break}if(!i&&p)for(let e of this._allCameras)if(p==e.deviceId){t.label&&(e._checked=!0,e.label=t.label),i=e;break}}this._currentCamera=i};if(yield this.getAllCameras(!0),n(),h){v(),u();let E=l.video.deviceId;E&&(E=E.exact||E.ideal||E);let A=null===(r=this._currentCamera)||void 0===r?void 0:r.deviceId;!E||A&&E==A||(d.getTracks().forEach((e=>{e.stop()})),g=[0,500,1e3,2e3],yield m(l))}n();const y=()=>j(this,void 0,void 0,(function*(){ne._onLog&&ne._onLog("======play video========"),yield new Promise(((e,t)=>{n(),this._video.onloadedmetadata=()=>j(this,void 0,void 0,(function*(){n(),this._video.onloadedmetadata=null,yield this._video.play(),e()})),this._video.srcObject=d,setTimeout((()=>t(new Error("Failed to play video. Timeout."))),4e3)}))}));yield y(),n(),ne._onLog&&ne._onLog("DCE: ======played video========"),this._bgLoading&&(this._bgLoading.style.animationPlayState="paused");const S=this._video.videoWidth+"x"+this._video.videoHeight;this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",this._video.videoWidth),this._optGotRsl.setAttribute("data-height",this._video.videoHeight),this._optGotRsl.innerText=S,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got")),ne._onLog&&ne._onLog("DCE: got "+S),v(),n(),this._renderSelCameraInfo();const b={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};b.deviceId&&(this._lastDeviceId=b.deviceId,this.ifSaveLastUsedCamera&&ne.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",this._lastDeviceId),l.video.width&&l.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(l.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(l.video.height)))));const C=this.mapCameraEvents.get("played");for(let I of C){if(!I)continue;const O=JSON.parse(JSON.stringify(b));setTimeout((()=>I.apply(this,[O])),0)}if(o&&o!=b.deviceId){const R=this.mapCameraEvents.get("cameraChange");for(let D of R){if(!D)continue;const M=JSON.parse(JSON.stringify(b));setTimeout((()=>D.apply(this,[M])),0)}}if(s&&a&&(s!=b.width||a!=b.height)){this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let P of this._arrScanRegionOverlays)P&&this._updateScanRegionOverlay(P);this._cvsOriginalImage||this._updateDrawingLayersSize();const L=this.mapCameraEvents.get("resolutionChange");for(let F of L){if(!F)continue;const k=JSON.parse(JSON.stringify(b));setTimeout((()=>F.apply(this,[k])),0)}}return this.promisePlay=null,b}catch(B){throw this.promisePlay=null,this._bgLoading&&(this._bgLoading.style.display="none"),"NotFoundError"===B.name&&(DOMException?B=new DOMException("No camera available, please use a device with an accessible camera.",B.name):(B=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),B}})))();const l=yield this.promisePlay;return this.playCallbackInfo=JSON.parse(JSON.stringify(l)),this._recordedStates.videoPlaying=!0,l}))}resume(){return j(this,void 0,void 0,(function*(){this._assertOpen(),yield this.play(),this.ifShowScanRegionLaser&&this.showScanRegionLaser()}))}pause(){this._assertOpen(),this._video&&(this._video.pause(),this._recordedStates.videoPlaying=!1),this.ifShowScanRegionLaser&&this.hideScanRegionLaser()}_bindUI(){if(!this.UIElement)throw new Error("Need to define `UIElement` before opening.");const e=[this.UIElement];for(let t=0;t','','',''].join(""),this._optGotRsl=this._optGotRsl||this._selRsl.options[0])):!this._optGotRsl&&t.classList.contains("dce-opt-gotResolution")?this._optGotRsl=t:!this._btnClose&&t.classList.contains("dce-btn-close")?this._btnClose=t:!this._selMinLtr&&t.classList.contains("dlr-sel-minletter")?(this._selMinLtr=t,this._selMinLtr.options.length||(this._selMinLtr.innerHTML=[this._optGotMinLtr?"":'','','','','','','','','','',''].join(""),this._optGotMinLtr=this._optGotMinLtr||this._selMinLtr.options[0])):!this._optGotMinLtr&&t.classList.contains("dlr-opt-gotMinLtr")&&(this._optGotMinLtr=t);if(this.extraBindings&&this.extraBindings.length)for(let i of this.extraBindings)try{i(t)}catch(e){}}if(!this._video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'");this.singleFrameMode?(this._video&&(this._video.addEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="pointer",this._video.setAttribute("title","Take a photo")),this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none"),this._bgCamera&&(this._bgCamera.style.display="block")):(this._selCam&&(this._selCam.style.display="block",this._selCam.addEventListener("change",this._onCameraSelChange)),this._selRsl&&(this._selRsl.style.display="block",this._selRsl.addEventListener("change",this._onResolutionSelChange)),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._bgLoading&&(this._bgLoading.style.display="block")),this._btnClose&&this._btnClose.addEventListener("click",this._onCloseBtnClick),document.addEventListener("visibilitychange",this._ev_documentHideEvent),ResizeObserver?(this._resizeObserver||(this._resizeObserver=new ResizeObserver((e=>{for(let t of e)t.target===this._divVideoContainer&&this._updateLayers()}))),this._divVideoContainer&&this._resizeObserver.observe(this._divVideoContainer)):window.addEventListener("resize",this._updateLayers)}_unbindUI(){this.singleFrameMode?(this._video&&(this._video.removeEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="",this._video.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._bgLoading&&(this._bgLoading.style.display="none"),this._selCam&&this._selCam.removeEventListener("change",this._onCameraSelChange),this._selRsl&&this._selRsl.removeEventListener("change",this._onResolutionSelChange),this._btnClose&&this._btnClose.removeEventListener("click",this._onCloseBtnClick),this.hideScanRegionLaser(),this.hideViewDecorator(),this.hideScanRegionOverlays(),this._drawingLayersManager.setVisible(!1),this._hideOriginalImageCvs(),this._video&&(this._video.onloadedmetadata=null,this._video.remove()),this._divVideoContainer=null,this._video=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._cvsScanRegion&&(this._cvsScanRegion.remove(),this._cvsScanRegion=null),this._singleFrameModeIpt&&(this._singleFrameModeIpt.remove(),this._singleFrameModeIpt=null),this._cvsSingleFrameMode&&(this._cvsSingleFrameMode.remove(),this._cvsSingleFrameMode=null),document.removeEventListener("visibilitychange",this._ev_documentHideEvent),ResizeObserver?this._resizeObserver&&this._resizeObserver.disconnect():window.removeEventListener("resize",this._updateLayers)}_assertOpen(){if(!this._bOpen)throw Error("The camera is not open.")}open(e){return j(this,void 0,void 0,(function*(){this.UIElement||(yield this.setUIElement(ne.defaultUIElementURL)),this._bindUI(),e&&this.appendAndShowUI();let t=yield this.play();this.bOpen=!0;const i=this.mapCameraEvents.get("cameraOpen");for(let e of i){if(!e)continue;const i=JSON.parse(JSON.stringify(t));setTimeout((()=>e.apply(this,[i])),0)}return t}))}close(e){if(!this._video)return;this.stop(),this._hideOriginalImage(!1),this._unbindUI(),e&&this.hideUI(),this.stopFetchingLoop(),this.bOpen=!1;const t=this.mapCameraEvents.get("cameraClose");for(let e of t){if(!e)continue;const t={width:0,height:0,deviceId:null};setTimeout((()=>e.apply(this,[t])),0)}}stop(){this._video&&this._video.srcObject&&(ne._onLog&&ne._onLog("DCE: ======stop video========"),this._video.srcObject.getTracks().forEach((e=>{e.stop()})),this._video.srcObject=null,this._videoTrack=null,this._currentCamera=null),this._video&&this.videoSrc&&(ne._onLog&&ne._onLog("DCE: ======stop existing video========"),this._video.pause(),this._video.currentTime=0),this._bgLoading&&(this._bgLoading.style.animationPlayState=""),this._frameQueue.length=0,this._reusedCvs&&this._reusedCvs.ctx2d&&this._reusedCvs.ctx2d.clearRect(0,0,this._reusedCvs.width,this._reusedCvs.height),this.forceLoseContext()}getAllCameras(e){return j(this,void 0,void 0,(function*(){let t=yield navigator.mediaDevices.enumerateDevices();if(!e&&t&&t.length&&!t[0].deviceId){let e=yield navigator.mediaDevices.getUserMedia({video:!0});t=yield navigator.mediaDevices.enumerateDevices(),e.getTracks().forEach((e=>{e.stop()})),e=null}const i=[],r=[];if(this._allCameras)for(let e of this._allCameras)e._checked&&r.push(e);for(let e=0;e{const i=this._mapCameraResolutions.get(e);if(!i||!i.length)return!1;for(let e of i)if(e[0]===t.width&&e[1]===t.height)return!0;return!1},r=(e,t,i)=>j(this,void 0,void 0,(function*(){const r={video:{deviceId:{exact:e},width:{ideal:t},height:{ideal:i}}};let n=null;try{n=yield navigator.mediaDevices.getUserMedia(r)}catch(e){return null}if(!n)return null;const o=n.getVideoTracks();let s=null;try{const e=o[0].getSettings();s={width:e.width,height:e.height}}catch(e){const t=document.createElement("video");t.srcObject=n,s={width:t.videoWidth,height:t.videoHeight},t.srcObject=null}return o.forEach((e=>{e.stop()})),s}));if(!this._bOpen){const n=this.videoSettings.video.deviceId;if(!n)return null;if(t=n.hasOwnProperty("exact")?this.videoSettings.video.deviceId.exact:n.hasOwnProperty("ideal")?this.videoSettings.video.deviceId.ideal:this.videoSettings.video.deviceId,!t)return null;let o=this._mapCameraResolutions.get(t);if(o&&!e)return this._mapCameraResolutions.get(t);this._mapCameraResolutions.set(t,[]),o=this._mapCameraResolutions.get(t);for(let e of this._predefinedResolutions){const n=yield r(t,e.width,e.height);n&&!i(t,n)&&o.push([n.width,n.height])}return o}if(this._currentCamera){t=this._currentCamera.deviceId;let r=this._mapCameraResolutions.get(t);if(r&&!e)return this._mapCameraResolutions.get(t);this._mapCameraResolutions.set(t,[]),r=this._mapCameraResolutions.get(t);const n=this.getConstraints();for(let e of this._predefinedResolutions){yield this._videoTrack.applyConstraints({width:{ideal:e.width},height:{ideal:e.height}});const n=this._videoTrack.getSettings(),o={width:n.width,height:n.height};i(t,o)||r.push([o.width,o.height])}return yield this._videoTrack.applyConstraints(n),r}return null}))}on(e,t){if(!this.mapCameraEvents.has(e))throw new Error(`Event '${e}' is not exists.`);const i=this.mapCameraEvents.get(e);i.includes(t)||i.push(t)}off(e,t){if(!this.mapCameraEvents.has(e))throw new Error(`Event '${e}' is not exists.`);const i=this.mapCameraEvents.get(e),r=i.indexOf(t);-1!==r&&i.splice(r,1)}offAll(e){if(e){if("string"==typeof e){const t=this.mapCameraEvents.get(e);t&&(t.length=0)}}else for(let e of this.mapCameraEvents.values())e&&(e.length=0)}getVideoSettings(){return JSON.parse(JSON.stringify(this.videoSettings))}updateVideoSettings(e){return this.videoSettings=JSON.parse(JSON.stringify(e)),this._lastDeviceId=null,this._bOpen?this.play():Promise.resolve()}isOpen(){return this._bOpen}getCapabilities(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCapabilities()' is unavailable in singleFrameMode.");return this._videoTrack&&this._videoTrack.getCapabilities?this._videoTrack.getCapabilities():{}}getCameraSettings(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCameraSettings()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getSettings():null}getConstraints(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getConstraints()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getConstraints():null}applyConstraints(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'applyConstraints()' is unavailable in singleFrameMode.");if(!this._videoTrack)throw new Error('"_videoTrack" is null.');if(!this._videoTrack.applyConstraints)throw Error("Not supported.");return yield this._videoTrack.applyConstraints(e)}))}turnOnTorch(){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOnTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!0}]});throw Error("Not supported.")}))}turnOffTorch(){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOffTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!1}]});throw Error("Not supported.")}))}setColorTemperature(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setColorTemperature()' is unavailable in singleFrameMode.");let t=this.getCapabilities().colorTemperature;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{colorTemperature:e}]})}))}setExposureCompensation(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setExposureCompensation()' is unavailable in singleFrameMode.");let t=this.getCapabilities().exposureCompensation;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{exposureCompensation:e}]})}))}setZoom(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setZoom()' is unavailable in singleFrameMode.");let t=this.getCapabilities().zoom;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{zoom:e}]})}))}setFrameRate(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFrameRate()' is unavailable in singleFrameMode.");let t=this.getCapabilities().frameRate;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({width:{ideal:Math.max(this._video.videoWidth,this._video.videoHeight)},frameRate:e})}))}getFrameRate(){return this.getCameraSettings().frameRate}setFocus(e,t){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFocus()' is unavailable in singleFrameMode.");const i=this.getCapabilities().focusMode,r=this.getCapabilities().focusDistance;if(!i||!i.includes(e)||!r)throw Error("Not supported.");return t?(tr.max&&(t=r.max),yield this._videoTrack.applyConstraints({advanced:[{focusMode:e,focusDistance:t}]})):yield this._videoTrack.applyConstraints({advanced:[{focusMode:e}]})}))}getFocus(){const e=this.getCameraSettings().focusMode;return"continuous"===e?{mode:e}:{mode:e,distance:this.getCameraSettings().focusDistance}}getFrameSize(e,t,i,r){if(!e||!t)return null;let n,o,s,a,l=e,h=t;const c={regionLeft:0,regionTop:0,regionRight:l,regionBottom:h,regionMeasuredByPercentage:!1};i?(i.regionMeasuredByPercentage?(c.regionLeft=i.regionLeft*l/100,c.regionTop=i.regionTop*h/100,c.regionRight=i.regionRight*l/100,c.regionBottom=i.regionBottom*h/100):(c.regionLeft=i.regionLeft,c.regionTop=i.regionTop,c.regionRight=i.regionRight,c.regionBottom=i.regionBottom),n=c.regionLeft,o=c.regionTop,l=Math.round(c.regionRight-c.regionLeft),h=Math.round(c.regionBottom-c.regionTop)):(n=0,o=0);const u=Math.max(l,h);if(r&&r>0&&u>r){const e=r/u;l>h?(s=r,a=Math.round(h*e)):(s=Math.round(l*e),a=r)}else s=l,a=h;return s<=0||a<=0?null:{sx:n,sy:o,sWidth:l,sHeight:h,dWidth:s,dHeight:a}}getFrame(){if(this.singleFrameMode)throw Error("'getFrame()' is unavailable in singleFrameMode.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'getFrame()' is unavailable in singleFrameMode.");return this._getVideoFrame(this._scanRegion)}getImage(){const e=this.getFrame();return e.pixelFormat=e.colorMode,Object.assign(Object.assign({},e),{pixelFormat:e.colorMode})}_getVideoFrame(e,t){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'_getVideoFrame()' is unavailable in singleFrameMode.");const i=Date.now();ne._onLog&&ne._onLog("DCE: _getVideoFrame(region?) START: "+i);const r=this._video.videoWidth,n=this._video.videoHeight;if(0===r||0===n)return null;const o=this.getFrameSize(r,n,e,this.maxCvsSideLength);if(!o)return null;let s,a;s=r!==o.sWidth||n!==o.sHeight,a=o.sWidth!==o.dWidth||o.sHeight!==o.dHeight;const l=(()=>!(!this._bWebGLSupported||a))(),h={data:null,region:e?JSON.parse(JSON.stringify(e)):null,sx:o.sx,sy:o.sy,width:o.dWidth,height:o.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:s,toCanvas:this._toCanvas,_sWidth:o.sWidth,_sHeight:o.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(this._video,r,n,o,t,{targetColorMode:this.frameColorMode,bUseWebGL:l})}catch(e){if("WebGLError"!==e.name)throw e;c=this._getImageData(this._video,r,n,o,t,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return ne._onLog&&ne._onLog("DCE: _getVideoFrame(region?) END: "+u),h.data=c.data,h.colorMode=c.colorMode,h._bUseWebGL=c._bUseWebGL,h.timeSpent=u-i,h.timeStamp=u,h}_getImageData(e,t,i,r,n,o){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(!t||!i)return null;ne._onLog&&ne._onLog("DCE: _getImageData() START: "+Date.now());const{sx:s,sy:a,sWidth:l,sHeight:h,dWidth:c,dHeight:u}=r;let d;if(d=o&&o.targetColorMode?o.targetColorMode.toLowerCase():"rgba",o&&o.bUseWebGL){this._reusedWebGLCvs||(this._reusedWebGLCvs=document.createElement("canvas"));const r=this._reusedWebGLCvs;r.width==t&&r.height==i||(r.width=t,r.height=i,this._reusedWebGLCtx&&this._reusedWebGLCtx.viewport(0,0,t,i));const o=this._reusedWebGLCtx||r.getContext("webgl",{antialias:!1})||r.getContext("experimental-webgl",{antialias:!1});if(!o){this._reusedWebGLCtx=null,this._bWebGLSupported=!1;const e=new Error("WebGL error: unable to initialize WebGL. Your browser or machine may not support it.");throw e.name="WebGLError",e}if(o.enable(o.SCISSOR_TEST),o.scissor(s,a,c,u),!this._reusedWebGLCtx||d!==this.currentFSColorMode){this._reusedWebGLCtx=o;const e=e=>{const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,1,1,-1,1]),e.STATIC_DRAW);const i=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,indices:i}},t=e=>{const t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t},i=(e,t,i)=>{const n=r(e,e.VERTEX_SHADER,t),o=r(e,e.FRAGMENT_SHADER,i),s=e.createProgram();return e.attachShader(s,n),e.attachShader(s,o),e.linkProgram(s),e.getProgramParameter(s,e.LINK_STATUS)?s:(alert("Unable to initialize the shader program: "+e.getProgramInfoLog(s)),null)},r=(e,t,i)=>{const r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(alert("An error occurred compiling the shaders: "+e.getShaderInfoLog(r)),e.deleteShader(r),null)},n="\n attribute mediump vec2 aVertexPosition;\n varying mediump vec2 vDirection;\n \n void main( void )\n {\n gl_Position = vec4(aVertexPosition, 1.0, 1.0) * 2.0;\n vDirection = aVertexPosition;\n }\n ";let s;s=["rgba","rbga","grba","gbra","brga","bgra"].includes(d)?d.slice(0,3):"rgb";const a=i(o,n,`\n precision mediump float;\n\n varying mediump vec2 vDirection;\n uniform sampler2D uSampler;\n uniform lowp float uColorFactor;\n \n void main(void)\n {\n vec4 sample = texture2D(uSampler, vec2(vDirection.x * 0.5 + 0.5, vDirection.y * 0.5 + 0.5));\n lowp float grey = 0.21 * sample.r + 0.71 * sample.g + 0.07 * sample.b;\n gl_FragColor = vec4(sample.${s} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n }\n `);this._webGLProgramInfo={program:a,attribLocations:{vertexPosition:o.getAttribLocation(a,"aVertexPosition")},uniformLocations:{uSampler:o.getUniformLocation(a,"uSampler"),uColorFactor:o.getUniformLocation(a,"uColorFactor")}},this._webGLBuffers=e(o),this._webGLTexture=t(o),this.currentFSColorMode=d}const l=(e,t,i)=>{const r=e.RGBA,n=e.RGBA,o=e.UNSIGNED_BYTE;e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,r,n,o,i)},h=(e,t,i,r)=>{e.clearColor(0,0,0,1),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i.indices),e.useProgram(t.program);{const r=2,n=e.FLOAT,o=!1,s=0,a=0;e.bindBuffer(e.ARRAY_BUFFER,i.position),e.vertexAttribPointer(t.attribLocations.vertexPosition,r,n,o,s,a),e.enableVertexAttribArray(t.attribLocations.vertexPosition)}e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,r),e.uniform1i(t.uniformLocations.uSampler,0),e.uniform1f(t.uniformLocations.uColorFactor,"grey"===d||"grey32"===d?1:0);const n=e.UNSIGNED_SHORT;e.drawElements(e.TRIANGLES,6,n,0)};let f;if(l(o,this._webGLTexture,e),h(o,this._webGLProgramInfo,this._webGLBuffers,this._webGLTexture),n){if(n.length=this.croppingRegions.length||this._croppingRegionIndex<0)throw new Error("The 'croppingRegionIndex' is out of bounds.");e=this.croppingRegions[this._croppingRegionIndex],this.bIncreaseRegionIndexAuto&&++this._croppingRegionIndex>=this.croppingRegions.length&&(this._croppingRegionIndex=0)}return e}_fetchingLoop(e){if(this.isDisposed)return;if(!this._bOpen||!this.isFetchingLoopStarted())return void this.stopFetchingLoop();const t=()=>{ne._onLog&&ne._onLog("DCE: start fetching a frame: "+Date.now());const e=this.getCurrentRegion();let t=this._getVideoFrame(e);if(!t)return void(ne._onLog&&ne._onLog("DCE: get a invalid frame, abandon it: "+Date.now()));for(;this._frameQueue&&this._frameQueue.length>=this.maxNumberOfFramesInBuffer;)this._frameQueue.shift();this._frameQueue.push(t),ne._onLog&&ne._onLog("DCE: finish fetching a frame: "+Date.now());const i=this.mapCameraEvents.get("frameAddedToBuffer");for(let e of i)e&&setTimeout(e.bind(this),0)},i=()=>{this.isDisposed||(this._frameLoopTimeoutId2&&clearTimeout(this._frameLoopTimeoutId2),this.refreshInterval<=0||(this._frameLoopTimeoutId2=setTimeout((()=>{this.isDisposed||(this._bOpen&&this.isFetchingLoopStarted()?(ne._onLog&&ne._onLog("DCE: second timeout executes: "+Date.now()),t(),i()):this.stopFetchingLoop())}),this.refreshInterval)))};e&&(this._frameQueue.length0&&i()):this.refreshInterval>0?(t(),i()):0===this.refreshInterval?t():this.refreshInterval),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameLoopTimeoutId=setTimeout((()=>{this.isDisposed||this._fetchingLoop(!0)}),this.loopInterval)}startFetchingLoop(){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw Error("'startFetchingLoop()' is unavailable in singleFrameMode.");this.isFetchingLoopStarted()||(this._bFetchingLoopStarted=!0,this._recordedStates.fetchingLoopStart=!0,ne._onLog&&ne._onLog("start fetching loop: "+Date.now()),this._fetchingLoop(!0))}isFetchingLoopStarted(){return this._bFetchingLoopStarted}stopFetchingLoop(){this._bFetchingLoopStarted&&(ne._onLog&&ne._onLog("stop fetching loop: "+Date.now()),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameQueue.length=0,this._bFetchingLoopStarted=!1,this._recordedStates.fetchingLoopStart=!1)}getFrameFromBuffer(e){return this._frameQueue&&this._frameQueue.length?e?e0?i-1:r,$),actionName:"modifyPolygon",pointIndex:i}),e}),{})}_extendSet(e,t){if("vertices"===e){const e=this._fabricObject;e.points=t;const i=e.points.length-1;return e.controls=e.points.reduce((function(e,t,r){return e["p"+r]=new B.Control({positionHandler:Q,actionHandler:ee(r>0?r-1:i,$),actionName:"modifyPolygon",pointIndex:r}),e}),{}),e._setPositionDimensions({}),!0}}_extendGet(e){if("vertices"===e){const e=[],t=this._fabricObject;if(t.selectable)for(let i in t.oCoords)e.push({x:t.oCoords[i].x,y:t.oCoords[i].y});else for(let i in t.getCoords())e.push({x:t.getCoords()[i].x,y:t.getCoords()[i].y});return e}}},DT_Rect:class extends q{constructor(e,t,i,r,n){super(new B.Rect({left:e,top:t,width:i,height:r}),n)}},DT_Image:class extends q{constructor(e,t,i,r){super(new B.Image(e,{left:t,top:i}),r),this.image=e}_extendSet(e,t){if("image"===e){if(t instanceof HTMLImageElement)return this._fabricObject.setElement(t),this.image=t,!0;if(t instanceof HTMLCanvasElement){const e=new Image;return e.src=t.toDataURL(),this._fabricObject.setElement(e),this.image=t,!0}throw new Error("Unsupported value.")}}_extendGet(e){if("image"===e)return this.image}},DT_Text:class extends q{constructor(e,t,i,r){super(new B.IText(e,{left:t,top:i}),r),this._mediaType="text"}},DT_Line:class extends q{constructor(e,t,i){super(new B.Line([e.x,e.y,t.x,t.y]),i)}_extendSet(e,t){return"startPoint"===e?(this._fabricObject.set("x1",t.x),this._fabricObject.set("y1",t.y),!0):"endPoint"===e?(this._fabricObject.set("x2",t.x),this._fabricObject.set("y2",t.y),!0):void 0}_extendGet(e){return"startPoint"===e?{x:this._fabricObject.get("x1"),y:this._fabricObject.get("y1")}:"endPoint"===e?{x:this._fabricObject.get("x2"),y:this._fabricObject.get("y2")}:void 0}},DT_Group:class extends q{constructor(e){super(new B.Group(e.map((e=>e._getFabricObject()))));const t=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const e=this.mapEvents.get("select");for(let t of e)t&&t.apply(this);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e.onSelect&&e.onSelect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const e=t.get("deselect");for(let t of e)t&&t.apply(this);const i=this._fabricObject._objects;for(let e of i)setTimeout((()=>{e.onDeselect&&e.onDeselect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)}}getChildItems(){return this._fabricObject._objects.map((e=>e.getDrawingItem()))}addChildItem(e){if(!e||!e.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,e,"add"):this._fabricObject.addWithUpdate(e._getFabricObject())}removeChildItem(e){e&&e.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,e,"remove"):this._fabricObject.removeWithUpdate(e._getFabricObject()))}}};class se extends M{constructor(){super(),this.bFilterRegionInJs=!0,this._onCameraSelChange=()=>{},this._onResolutionSelChange=()=>{},this._onCloseBtnClick=()=>{},this._onPlayed=null}static get version(){return this._version+`(DCE ${ne.getVersion()})`}static _fireHTTPSWarnning(){se.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{se.onWarning&&se.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}_fireResolutionWarning(){if(!this.singleFrameMode&&this.onWarning){const e=this.dce.getConstraints();e&&e.width<1280&&e.height<720&&setTimeout((()=>{this.onWarning&&this.onWarning({id:3,message:"Camera resolution too low, please use a higher resolution (720P or better)."})}),0)}}getUIElement(){return this.dce.getUIElement()}async setUIElement(e){await this.dce.setUIElement(e)}get singleFrameMode(){return this.dce.singleFrameMode}set singleFrameMode(e){this.dce.singleFrameMode=e,e&&(this.dce.ifShowScanRegionLaser=!1,(async()=>{let e=await this.getScanSettings();e.oneDTrustFrameCount=1,await this.updateScanSettings(e)})())}get onUnduplicatedRead(){return this.onUniqueRead}set onUnduplicatedRead(e){this.onUniqueRead=e}get video(){return this.dce&&this.dce.video}set videoSrc(e){this.dce&&(this.dce.videoSrc=e)}get videoSrc(){return this.dce&&this.dce.videoSrc}_assertOpen(){if(!this.dce.isOpen())throw Error("The scanner is not open.")}set regionMaskFillStyle(e){this.dce.setScanRegionMaskStyle({fillStyle:e})}get regionMaskFillStyle(){return this.dce.regionMaskFillStyle}set regionMaskStrokeStyle(e){this.dce.setScanRegionMaskStyle({strokeStyle:e})}get regionMaskStrokeStyle(){return this.dce.regionMaskStrokeStyle}set regionMaskLineWidth(e){this.dce.setScanRegionMaskStyle({lineWidth:e})}get regionMaskLineWidth(){return this.dce.regionMaskLineWidth}set region(e){this._region=e,this.dce&&(e?e instanceof Array||this.dce.setScanRegion(e):this.dce.setScanRegion(null)),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e,this.dce.frameColorMode=e?"rgba":"grey"}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}async createDCEInstance(){if(!this.dce){M._onLog&&M._onLog("createDCEInstance()");try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}ne.defaultUIElementURL=null,this.dce=await ne.createInstance(),this.dce.refreshInterval=200,this.dce.frameColorMode="grey",this.dce.maxCvsSideLength=this.maxCvsSideLength,this._drawingItemNamespace=oe,"iPhone"!==M.browserInfo.OS&&"Android"!==M.browserInfo.OS&&"HarmonyOS"!==M.browserInfo.OS&&this.dce.setResolution(1920,1080),this.dce.on("cameraChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("resolutionChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("cameraClose",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1})),this.dce.on("singleFrameAcquired",(async t=>{if(!t)return;if(!t.data)return;let i;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{data:r,sx:n,sy:o,width:s,height:a,colorMode:l,timeStamp:h,_sWidth:c,_sHeight:u}=t,d={timeStamp:h};if("grey"===l)i=await this._decodeBuffer_Uint8Array(r,s,a,s,e.EnumImagePixelFormat.IPF_GrayScaled,d);else if("rgba"===l)i=await this._decodeBuffer_Uint8Array(r,s,a,4*s,e.EnumImagePixelFormat.IPF_ABGR_8888,d);else{if("bgra"!==l)throw new Error(`Color mode '${l}' is not supported.`);i=await this._decodeBuffer_Uint8Array(r,s,a,4*s,e.EnumImagePixelFormat.IPF_ARGB_8888,d)}if(await this.clearMapDecodeRecord(),M.recalculateResultLocation(i,n,o,c,u,s,a),this._drawResults(i),this.onFrameRead&&this.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(i);this.onFrameRead(e)}if(this.onUniqueRead&&this.isOpen()&&!this._bPauseScan)for(let e of i)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e))}))}}set maxCvsSideLength(e){this._maxCvsSideLength=e,this.dce.maxCvsSideLength=e}get maxCvsSideLength(){return this._maxCvsSideLength}static async createInstance(e){let t=new se;t._instanceID=await se.createInstanceInWorker(!0),await t.createDCEInstance(),"string"==typeof e&&(e=JSON.parse(e));for(let i in e)t[i]=e[i];return await t.dce.setUIElement(se.defaultUIElementURL),t.singleFrameMode&&console.warn("The `navigator.mediaDevices.getUserMedia` is unavailable. automatically change to `singleFrameMode`."),se._fireHTTPSWarnning(),t.singleFrameMode||await t.updateRuntimeSettings("single"),t}async decodeCurrentFrame(e){this._assertOpen();let t=null;e&&e.region&&(t=e.region);const i=this.dce._getVideoFrame(t);return this._decode_DCEFrame(i)}static isRegionNormalPreset(e){return 0==e.regionLeft&&0==e.regionTop&&0==e.regionRight&&0==e.regionBottom&&0==e.regionMeasuredByPercentage}async updateRuntimeSettings(t){let i;if("string"==typeof t)if("speed"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region)}else if("balance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region),i.deblurLevel=3,i.expectedBarcodesCount=512,i.localizationModes=[2,16,0,0,0,0,0,0],i.timeout=1e5}else if("coverage"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region),i.deblurLevel=5,i.expectedBarcodesCount=512,i.scaleDownThreshold=1e5,i.localizationModes=[2,16,4,8,0,0,0,0],i.timeout=1e5}else if("single"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,se.isRegionNormalPreset(e.region)?i.region=null:i.region=e.region,i.expectedBarcodesCount=1,i.localizationModes=[16,2,0,0,0,0,0,0],i.barcodeZoneMinDistanceToImageBorders=0}else if("dense"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region),i.deblurLevel=7,i.scaleDownThreshold=1e5,i.localizationModes=[2,8,0,0,0,0,0,0],i.minResultConfidence=0,i.timeout=1e5}else if("distance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region),i.scaleDownThreshold=1e5,i.localizationModes=[2,8,0,0,0,0,0,0],i.timeout=1e5}else i=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(i=JSON.parse(JSON.stringify(t)),i.region instanceof Array){let e=t.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(i.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!M._bUseFullFeature){if(0!=(i.barcodeFormatIds&~(e.EnumBarcodeFormat.BF_ONED|e.EnumBarcodeFormat.BF_QR_CODE|e.EnumBarcodeFormat.BF_PDF417|e.EnumBarcodeFormat.BF_DATAMATRIX))||0!=i.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=i.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}{let e=i.region;if(this.bFilterRegionInJs?this.userDefinedRegion=JSON.parse(JSON.stringify(e)):this.userDefinedRegion=null,e instanceof Array)if(e.length){for(let t=0;t{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(i=>{if(i.success){try{this._handleRetJsonString(i.updateReturn)}catch(e){t(e)}return e()}{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(i)}})})),"single"==t&&(await this.setModeArgument("BinarizationModes",0,"EnableFillBinaryVacancy","0"),await this.setModeArgument("LocalizationModes",0,"ScanDirection","2"),await this.setModeArgument("BinarizationModes",0,"BlockSizeX","71"),await this.setModeArgument("BinarizationModes",0,"BlockSizeY","71"))}_bindUI(){if(!this.getUIElement())throw new Error("Need to define `UIElement` before opening.");if(this.dce._bindUI(),!this.dce.video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'")}_unbindUI(){this.dce._unbindUI()}set onPlayed(e){this.dce.off("played",this._onPlayed),this._onPlayed=e,this.dce.on("played",this._onPlayed)}get onPlayed(){return this._onPlayed}async getAllCameras(){return this.dce.getAllCameras()}async getCurrentCamera(){return this.dce.getSelectedCamera()}async setCurrentCamera(e){const t=await this.dce.selectCamera(e);return this._fireResolutionWarning(),t}getResolution(){return this.dce.getResolution()}async setResolution(e,t){const i=await this.dce.setResolution(e,t);return this._fireResolutionWarning(),i}getVideoSettings(){return this.dce.getVideoSettings()}updateVideoSettings(e){return this.dce.updateVideoSettings(e)}isOpen(){return this.dce&&this.dce.isOpen()}setVideoFit(e){return this.dce&&this.dce.setVideoFit(e)}set ifShowScanRegionMask(e){this.dce&&(this.dce.ifShowScanRegionMask=e)}get ifShowScanRegionMask(){return this.dce&&this.dce.ifShowScanRegionMask}set ifSaveLastUsedCamera(e){this.dce&&(this.dce.ifSaveLastUsedCamera=e)}get ifSaveLastUsedCamera(){return this.dce&&this.dce.ifSaveLastUsedCamera}set ifSkipCameraInspection(e){this.dce&&(this.dce.ifSkipCameraInspection=e)}get ifSkipCameraInspection(){return this.dce&&this.dce.ifSkipCameraInspection}stop(){this._drawResults(null),this.dce.stop(),this.dce.ifShowScanRegionLaser=!1,this.dce.hideViewDecorator(),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}pause(){this.dce.pause()}async play(e,t,i){this.dce.ifShowScanRegionLaser=!0;const r=await this.dce.play(e,t,i);return this._fireResolutionWarning(),r}pauseScan(e){this._assertOpen(),e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce.ifShowScanRegionLaser=!1,this.dce.stopFetchingLoop()}resumeScan(){this._assertOpen(),this._bPauseScan=!1,this.dce.ifShowScanRegionLaser=!0}getCapabilities(){return this.dce.getCapabilities()}getCameraSettings(){return this.dce.getCameraSettings()}getConstraints(){return this.dce.getConstraints()}async applyConstraints(e){return this.dce.applyConstraints(e)}async turnOnTorch(){return this.dce.turnOnTorch()}async turnOffTorch(){return this.dce.turnOffTorch()}async setColorTemperature(e){return this.dce.setColorTemperature(e)}async setExposureCompensation(e){return this.dce.setExposureCompensation(e)}async setZoom(e){return this.dce.setZoom(e)}async setFrameRate(e){return this.dce.setFrameRate(e)}getFrameRate(){return this.dce.getFrameRate()}async setFocus(e,t){return this.dce.setFocus(e,t)}getFocus(){return this.dce.getFocus()}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this.dce.stopFetchingLoop(),void this._drawResults(null);if(!this.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce.video||this.dce.video.paused||this._bPauseScan)return M._onLog&&M._onLog("Video or scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));M._onLog&&M._onLog("======= once read ======="),M._onLog&&(this._timeStartDecode=Date.now());const t=this._getVideoFrame();if(!t)return this._drawResults(null),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{t._bUseWebGL||"grey"!==t.colorMode||(this.dce.frameColorMode="rgba");let i=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{data:r,sx:n,sy:o,width:s,height:a,colorMode:l,timeStamp:h,_sWidth:c,_sHeight:u}=t,d={timeStamp:h};if("grey"===l)i=await this._decodeBuffer_Uint8Array(r,s,a,s,e.EnumImagePixelFormat.IPF_GrayScaled,d);else if("rgba"===l)i=await this._decodeBuffer_Uint8Array(r,s,a,4*s,e.EnumImagePixelFormat.IPF_ABGR_8888,d);else{if("bgra"!==l)throw new Error(`Color mode '${l}' is not supported.`);i=await this._decodeBuffer_Uint8Array(r,s,a,4*s,e.EnumImagePixelFormat.IPF_ARGB_8888,d)}return M.recalculateResultLocation(i,n,o,c,u,s,a),i})().then((e=>{if(M._onLog&&M._onLog(e),this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost,i=this._indexCurrentDecodingFrame;const r=()=>{let r=0;if(this.region instanceof Array){let n=0,o=0;n=i+1>=this.region.length?0:i+1,o=n+1>=this.region.length?0:n+1,r=e[n]&&e[n].length&&t[o]&&t[o].length?Math.min(...e[n])-Math.max(...t[o]):0}else if(t&&t.length){let i=Math.min(...e),n=Math.max(...t);i&&n&&(r=i-n)}else r=0;return r>0?r:0};(()=>{if(this.region instanceof Array){for(e[i]&&e[i]instanceof Array||(e[i]=[]);e[i].length>=5;)e[i].shift();e[i].push(this._lastInnerDecodeDuration)}else{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)}})(),this._intervalGetVideoFrame=r()+this.intervalTime}if(this.isOpen()&&this.dce.video&&!this.dce.video.paused&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of e)if(0==i.resultsType){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of e)if(0==i.resultsType){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onFrameRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultsType&&1!=e.resultsType||this.onFrameRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultsType&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t));this._drawResults(e)}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce.stopFetchingLoop(),M._onLog&&M._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){let t=this.dce.isFetchingLoopStarted();if(this.dce.loopInterval=this._intervalGetVideoFrame,t||this.dce.startFetchingLoop(),!this.dce.numberOfFramesInBuffer)return this.dce.loopInterval=0,null;e=this.dce.getFrameFromBuffer();const i=e=>{if(!e)return;let t=e.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(t)};i(e)}else this.dce.stopFetchingLoop(),e=this.dce.getFrame();return e}async open(){this._bindUI();const e=await this.dce.open();return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}async openVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const e=await this.dce.open();return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}close(){this.dce.close(),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}async show(){this._bindUI();const e=await this.dce.open(!0);return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}async showVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const e=await this.dce.open(!0);return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}hide(){this.dce.close(!0),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}destroyContext(){this.close(),this.bDestroyed||super.destroyContext()}}var ae,le,he,ce,ue,de,fe,ge,_e,pe,me,ve,ye,Se,be,Ce,we,Te,xe,Ee,Ae,Ie,Oe,Re,De,Me,Le;e.EnumBarcodeColourMode=void 0,(ae=e.EnumBarcodeColourMode||(e.EnumBarcodeColourMode={}))[ae.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",ae[ae.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",ae[ae.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",ae[ae.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",ae[ae.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",ae[ae.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",ae[ae.BICM_SKIP=0]="BICM_SKIP",ae[ae.BICM_REV=2147483648]="BICM_REV",e.EnumBarcodeComplementMode=void 0,(le=e.EnumBarcodeComplementMode||(e.EnumBarcodeComplementMode={}))[le.BCM_AUTO=1]="BCM_AUTO",le[le.BCM_GENERAL=2]="BCM_GENERAL",le[le.BCM_SKIP=0]="BCM_SKIP",le[le.BCM_REV=2147483648]="BCM_REV",e.EnumBarcodeFormat_2=void 0,(he=e.EnumBarcodeFormat_2||(e.EnumBarcodeFormat_2={}))[he.BF2_NULL=0]="BF2_NULL",he[he.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",he[he.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",he[he.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",he[he.BF2_POSTNET=2097152]="BF2_POSTNET",he[he.BF2_PLANET=4194304]="BF2_PLANET",he[he.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",he[he.BF2_RM4SCC=16777216]="BF2_RM4SCC",he[he.BF2_DOTCODE=2]="BF2_DOTCODE",he[he.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",he[he.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",he[he.BF2_PHARMACODE=12]="BF2_PHARMACODE",e.EnumBinarizationMode=void 0,(ce=e.EnumBinarizationMode||(e.EnumBinarizationMode={}))[ce.BM_AUTO=1]="BM_AUTO",ce[ce.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",ce[ce.BM_SKIP=0]="BM_SKIP",ce[ce.BM_THRESHOLD=4]="BM_THRESHOLD",ce[ce.BM_REV=2147483648]="BM_REV",e.EnumClarityCalculationMethod=void 0,(ue=e.EnumClarityCalculationMethod||(e.EnumClarityCalculationMethod={}))[ue.ECCM_CONTRAST=1]="ECCM_CONTRAST",e.EnumClarityFilterMode=void 0,(de=e.EnumClarityFilterMode||(e.EnumClarityFilterMode={}))[de.CFM_GENERAL=1]="CFM_GENERAL",e.EnumColourClusteringMode=void 0,(fe=e.EnumColourClusteringMode||(e.EnumColourClusteringMode={}))[fe.CCM_AUTO=1]="CCM_AUTO",fe[fe.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",fe[fe.CCM_SKIP=0]="CCM_SKIP",fe[fe.CCM_REV=2147483648]="CCM_REV",e.EnumColourConversionMode=void 0,(ge=e.EnumColourConversionMode||(e.EnumColourConversionMode={}))[ge.CICM_GENERAL=1]="CICM_GENERAL",ge[ge.CICM_SKIP=0]="CICM_SKIP",ge[ge.CICM_REV=2147483648]="CICM_REV",e.EnumConflictMode=void 0,(_e=e.EnumConflictMode||(e.EnumConflictMode={}))[_e.CM_IGNORE=1]="CM_IGNORE",_e[_e.CM_OVERWRITE=2]="CM_OVERWRITE",e.EnumDeblurMode=void 0,(pe=e.EnumDeblurMode||(e.EnumDeblurMode={}))[pe.DM_SKIP=0]="DM_SKIP",pe[pe.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",pe[pe.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",pe[pe.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",pe[pe.DM_SMOOTHING=8]="DM_SMOOTHING",pe[pe.DM_MORPHING=16]="DM_MORPHING",pe[pe.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",pe[pe.DM_SHARPENING=64]="DM_SHARPENING",pe[pe.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",pe[pe.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",e.EnumDeformationResistingMode=void 0,(me=e.EnumDeformationResistingMode||(e.EnumDeformationResistingMode={}))[me.DRM_AUTO=1]="DRM_AUTO",me[me.DRM_GENERAL=2]="DRM_GENERAL",me[me.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",me[me.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",me[me.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",me[me.DRM_SKIP=0]="DRM_SKIP",me[me.DRM_REV=2147483648]="DRM_REV",e.EnumDPMCodeReadingMode=void 0,(ve=e.EnumDPMCodeReadingMode||(e.EnumDPMCodeReadingMode={}))[ve.DPMCRM_AUTO=1]="DPMCRM_AUTO",ve[ve.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",ve[ve.DPMCRM_SKIP=0]="DPMCRM_SKIP",ve[ve.DPMCRM_REV=2147483648]="DPMCRM_REV",e.EnumGrayscaleTransformationMode=void 0,(ye=e.EnumGrayscaleTransformationMode||(e.EnumGrayscaleTransformationMode={}))[ye.GTM_INVERTED=1]="GTM_INVERTED",ye[ye.GTM_ORIGINAL=2]="GTM_ORIGINAL",ye[ye.GTM_SKIP=0]="GTM_SKIP",ye[ye.GTM_REV=2147483648]="GTM_REV",e.EnumImagePreprocessingMode=void 0,(Se=e.EnumImagePreprocessingMode||(e.EnumImagePreprocessingMode={}))[Se.IPM_AUTO=1]="IPM_AUTO",Se[Se.IPM_GENERAL=2]="IPM_GENERAL",Se[Se.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",Se[Se.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",Se[Se.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",Se[Se.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",Se[Se.IPM_SKIP=0]="IPM_SKIP",Se[Se.IPM_REV=2147483648]="IPM_REV",e.EnumIntermediateResultSavingMode=void 0,(be=e.EnumIntermediateResultSavingMode||(e.EnumIntermediateResultSavingMode={}))[be.IRSM_MEMORY=1]="IRSM_MEMORY",be[be.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",be[be.IRSM_BOTH=4]="IRSM_BOTH",e.EnumIntermediateResultType=void 0,(Ce=e.EnumIntermediateResultType||(e.EnumIntermediateResultType={}))[Ce.IRT_NO_RESULT=0]="IRT_NO_RESULT",Ce[Ce.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",Ce[Ce.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",Ce[Ce.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",Ce[Ce.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",Ce[Ce.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",Ce[Ce.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",Ce[Ce.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",Ce[Ce.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",Ce[Ce.IRT_CONTOUR=256]="IRT_CONTOUR",Ce[Ce.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",Ce[Ce.IRT_FORM=1024]="IRT_FORM",Ce[Ce.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",Ce[Ce.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",Ce[Ce.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL",e.EnumLocalizationMode=void 0,(we=e.EnumLocalizationMode||(e.EnumLocalizationMode={}))[we.LM_SKIP=0]="LM_SKIP",we[we.LM_AUTO=1]="LM_AUTO",we[we.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",we[we.LM_LINES=8]="LM_LINES",we[we.LM_STATISTICS=4]="LM_STATISTICS",we[we.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",we[we.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",we[we.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",we[we.LM_CENTRE=128]="LM_CENTRE",we[we.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",we[we.LM_REV=2147483648]="LM_REV",e.EnumPDFReadingMode=void 0,(Te=e.EnumPDFReadingMode||(e.EnumPDFReadingMode={}))[Te.PDFRM_RASTER=1]="PDFRM_RASTER",Te[Te.PDFRM_AUTO=2]="PDFRM_AUTO",Te[Te.PDFRM_VECTOR=4]="PDFRM_VECTOR",Te[Te.PDFRM_REV=2147483648]="PDFRM_REV",e.EnumQRCodeErrorCorrectionLevel=void 0,(xe=e.EnumQRCodeErrorCorrectionLevel||(e.EnumQRCodeErrorCorrectionLevel={}))[xe.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",xe[xe.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",xe[xe.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",xe[xe.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q",e.EnumRegionPredetectionMode=void 0,(Ee=e.EnumRegionPredetectionMode||(e.EnumRegionPredetectionMode={}))[Ee.RPM_AUTO=1]="RPM_AUTO",Ee[Ee.RPM_GENERAL=2]="RPM_GENERAL",Ee[Ee.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",Ee[Ee.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",Ee[Ee.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",Ee[Ee.RPM_SKIP=0]="RPM_SKIP",Ee[Ee.RPM_REV=2147483648]="RPM_REV",e.EnumResultCoordinateType=void 0,(Ae=e.EnumResultCoordinateType||(e.EnumResultCoordinateType={}))[Ae.RCT_PIXEL=1]="RCT_PIXEL",Ae[Ae.RCT_PERCENTAGE=2]="RCT_PERCENTAGE",e.EnumResultType=void 0,(Ie=e.EnumResultType||(e.EnumResultType={}))[Ie.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",Ie[Ie.RT_RAW_TEXT=1]="RT_RAW_TEXT",Ie[Ie.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",Ie[Ie.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT",e.EnumScaleUpMode=void 0,(Oe=e.EnumScaleUpMode||(e.EnumScaleUpMode={}))[Oe.SUM_AUTO=1]="SUM_AUTO",Oe[Oe.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",Oe[Oe.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",Oe[Oe.SUM_SKIP=0]="SUM_SKIP",Oe[Oe.SUM_REV=2147483648]="SUM_REV",e.EnumTerminatePhase=void 0,(Re=e.EnumTerminatePhase||(e.EnumTerminatePhase={}))[Re.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",Re[Re.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",Re[Re.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",Re[Re.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",Re[Re.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",Re[Re.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED",e.EnumTextFilterMode=void 0,(De=e.EnumTextFilterMode||(e.EnumTextFilterMode={}))[De.TFM_AUTO=1]="TFM_AUTO",De[De.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",De[De.TFM_SKIP=0]="TFM_SKIP",De[De.TFM_REV=2147483648]="TFM_REV",e.EnumTextResultOrderMode=void 0,(Me=e.EnumTextResultOrderMode||(e.EnumTextResultOrderMode={}))[Me.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",Me[Me.TROM_POSITION=2]="TROM_POSITION",Me[Me.TROM_FORMAT=4]="TROM_FORMAT",Me[Me.TROM_SKIP=0]="TROM_SKIP",Me[Me.TROM_REV=2147483648]="TROM_REV",e.EnumTextureDetectionMode=void 0,(Le=e.EnumTextureDetectionMode||(e.EnumTextureDetectionMode={}))[Le.TDM_AUTO=1]="TDM_AUTO",Le[Le.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",Le[Le.TDM_SKIP=0]="TDM_SKIP",Le[Le.TDM_REV=2147483648]="TDM_REV",e.BarcodeReader=M,e.BarcodeScanner=se,Object.defineProperty(e,"__esModule",{value:!0})})); + */function j(e,t,i,r){return new(i||(i=Promise))((function(n,o){function s(e){try{l(r.next(e))}catch(e){o(e)}}function a(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))}const N="undefined"==typeof self;let V,U,G,W,H;if("undefined"!=typeof navigator&&(V=navigator,U=V.userAgent,G=V.platform,W=V.mediaDevices),!N){const e={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(U)||this.searchVersion(V.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=U.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(e){for(let t=0;t{let e=!1;if(z)try{(await W.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===H.browser&&H.version>66||"Safari"===H.browser&&H.version>13||"OPR"===H.browser&&H.version>43||"Edge"===H.browser&&H.version;const J=(()=>{if(!N&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})();class q{constructor(e,t){this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapStyle=new Map,this.mapEvents=new Map([["select",[]],["deselect",[]]]),this.isDrawingItem=!0,this._setFabricObject(e),this._mediaType=e.type,this.styleSelector="default",this.styleId=t;for(let e of q.arrStyleSelectors)this._mapStyle.set(e,null)}get mediaType(){return this._mediaType}get drawingLayerId(){return this._drawingLayerId}_setFabricObject(e){this._fabricObject=e;const t=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const e=this.mapEvents.get("select");for(let t of e)t&&t.apply(this)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const e=t.get("deselect");for(let t of e)t&&t.apply(this)},e.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}on(e,t,i){const r=this.mapEvents.get(e);r.includes(t)||r.push(t)}off(e,t){const i=this.mapEvents.get(e),r=i.indexOf(t);-1!==r&&i.splice(r,1)}_setEditable(e){const t=this._fabricObject;e?(t.selectable=!0,t.evented=!0,t.hasControls=!0):(t.selectable=!1,t.evented=!1,t.hasControls=!1)}_extendSet(e,t){return!1}_extendGet(e){}set(e,t){this._extendSet(e,t)||("x"===e?this._fabricObject.set("left",t):"y"===e?this._fabricObject.set("top",t):this._fabricObject.set(e,t)),["vertices","left","top","width","height","scaleX","scaleY","skewX","skewY","padding","angle","strokeWidth"].includes(e)&&this._fabricObject.setCoords()}get(e){let t=this._extendGet(e);return void 0===t&&(t="x"===e?this._fabricObject.get("left"):"y"===e?this._fabricObject.get("top"):this._fabricObject.get(e)),t}}function Q(e,t,i){let r=i.points[this.pointIndex].x-i.pathOffset.x,n=i.points[this.pointIndex].y-i.pathOffset.y;return B.util.transformPoint({x:r,y:n},B.util.multiplyTransformMatrices(i.canvas.viewportTransform,i.calcTransformMatrix()))}function Z(e){let t=new B.Point(e.strokeUniform?1/e.scaleX:1,e.strokeUniform?1/e.scaleY:1).multiply(e.strokeWidth);return new B.Point(e.width+t.x,e.height+t.y)}function $(e,t,i,r){let n=t.target,o=n.controls[n.__corner],s=n.toLocalPoint(new B.Point(i,r),"center","center"),a=Z(n),l=n._getTransformedDimensions(0,0),h={x:s.x*a.x/l.x+n.pathOffset.x,y:s.y*a.y/l.y+n.pathOffset.y};return n.points[o.pointIndex]=h,!0}function ee(e,t){return function(i,r,n,o){let s=r.target,a=B.util.transformPoint({x:s.points[e].x-s.pathOffset.x,y:s.points[e].y-s.pathOffset.y},s.calcTransformMatrix()),l=t(i,r,n,o);s._setPositionDimensions({});let h=Z(s),c=(s.points[e].x-s.pathOffset.x)/h.x,u=(s.points[e].y-s.pathOffset.y)/h.y;return s.setPositionByOrigin(a,c+.5,u+.5),l}}q.arrMediaTypes=["rect","arc","polygon","image","text","line","path"],q.arrStyleSelectors=["default","selected"],"undefined"!=typeof document&&"undefined"!=typeof window&&(B.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(B.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(e){e.dispose&&e.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),B.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},B.Object.prototype.transparentCorners=!1,B.Object.prototype.cornerSize=20,B.Object.prototype.touchCornerSize=100,B.Object.prototype.cornerColor="rgb(254,142,20)",B.Object.prototype.cornerStyle="circle",B.Object.prototype.strokeUniform=!0,B.Object.prototype.hasBorders=!1,B.ActiveSelection.prototype.onDeselect=function(){return this.getObjects().forEach((e=>{setTimeout(e.onDeselect,0)})),this.destroy(),!1},B.Canvas.prototype.containerClass="",B.Canvas.prototype.getPointer=function(e,t){if(this._absolutePointer&&!t)return this._absolutePointer;if(this._pointer&&t)return this._pointer;var i,r=this.upperCanvasEl,n=B.util.getPointer(e,r),o=r.getBoundingClientRect(),s=o.width||0,a=o.height||0;s&&a||("top"in o&&"bottom"in o&&(a=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(s=Math.abs(o.right-o.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,t||(n=this.restorePointerVpt(n));var l=this.getRetinaScaling();if(1!==l&&(n.x/=l,n.y/=l),0!==s&&0!==a){var h=window.getComputedStyle(r).objectFit,c=r.width,u=r.height,d=s,f=a;i={width:c/d,height:u/f};var g,_,p=c/u,m=d/f;return"contain"===h?p>m?(g=d,_=d/p,{x:n.x*i.width,y:(n.y-(f-_)/2)*i.width}):(g=f*p,_=f,{x:(n.x-(d-g)/2)*i.height,y:n.y*i.height}):"cover"===h?p>m?{x:(c-i.height*d)/2+n.x*i.height,y:n.y*i.height}:{x:n.x*i.width,y:(u-i.width*f)/2+n.y*i.width}:{x:n.x*i.width,y:n.y*i.height}}return i={width:1,height:1},{x:n.x*i.width,y:n.y*i.height}});class te{constructor(e,t,i,r){let n,o;switch(this.mapMediaType_Style=new Map,this.mode="viewer",this.onSelectionChange=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,e.hasOwnProperty("getFabricCanvas")?this.fabricCanvas=e.getFabricCanvas():(this.fabricCanvas=new B.Canvas(e,r),this.fabricCanvas.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),this.fabricCanvas.lowerCanvasEl.className="",this.fabricCanvas.upperCanvasEl.className="",this.fabricCanvas.on("selection:created",(function(e){const t=e.selected,i=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!i.includes(t)&&i.push(t)}for(let e of i){const i=[];for(let r of t){const t=r.getDrawingItem();t._drawingLayer===e&&i.push(t)}setTimeout((()=>{e.onSelectionChange&&e.onSelectionChange(i,[])}),0)}})),this.fabricCanvas.on("before:selection:cleared",(function(e){const t=this.getActiveObjects(),i=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!i.includes(t)&&i.push(t)}for(let e of i){const i=[];for(let r of t){const t=r.getDrawingItem();t._drawingLayer===e&&i.push(t)}setTimeout((()=>{const t=[];for(let r of i)e.hasDrawingItem(r)&&t.push(r);t.length>0&&e.onSelectionChange&&e.onSelectionChange([],t)}),0)}})),this.fabricCanvas.on("selection:updated",(function(e){const t=e.selected,i=e.deselected,r=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!r.includes(t)&&r.push(t)}for(let e of i){const t=e.getDrawingItem()._drawingLayer;t&&!r.includes(t)&&r.push(t)}for(let e of r){const r=[],n=[];for(let i of t){const t=i.getDrawingItem();t._drawingLayer===e&&r.push(t)}for(let t of i){const i=t.getDrawingItem();i._drawingLayer===e&&n.push(i)}setTimeout((()=>{e.onSelectionChange&&e.onSelectionChange(r,n)}),0)}})),this.fabricCanvas.wrapperEl.style.position="absolute",e.getFabricCanvas=()=>this.fabricCanvas),this.id=t,this._mapDrawingStyles=i,t){case 1:n=i.get(1),o=i.get(5);break;case 2:n=i.get(2),o=i.get(6);break;case 3:n=i.get(3),o=i.get(7);break;default:n=i.get(4),o=i.get(8)}for(let e of q.arrMediaTypes)this.mapMediaType_Style.set(e,{default:n,selected:o})}getId(){return this.id}_getDrawingStyle(e,t){if("number"!=typeof e)throw new Error("Invalid style id.");const i=this._mapDrawingStyles.get(e);return i?t?JSON.parse(JSON.stringify(i)):i:null}setVisible(e){if(e){for(let e of this._arrFabricObject)e.visible=!0;this._visible=!0}else{for(let e of this._arrFabricObject)e.visible=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyleId(e){return e.styleId?e.styleId:this.mapMediaType_Style.get(e._mediaType)[e.styleSelector].styleId}_getItemCurrentStyle(e){if(e.styleId)return this._getDrawingStyle(e.styleId);return e._mapStyle.get(e.styleSelector)||null}_changeMediaTypeCurStyleInStyleSelector(e,t,i,r){let n;switch(e){case"rect":n=this.fabricCanvas.getObjects("rect");break;case"arc":n=this.fabricCanvas.getObjects("circle");break;case"polygon":n=this.fabricCanvas.getObjects("polygon");break;case"image":n=this.fabricCanvas.getObjects("image");break;case"text":n=this.fabricCanvas.getObjects("text");break;case"line":n=this.fabricCanvas.getObjects("line");break;case"path":n=this.fabricCanvas.getObjects("path")}for(let e of n){if(!this._arrFabricObject.includes(e))continue;const r=e.getDrawingItem();r.styleSelector===t&&this._changeItemStyle(r,i,!0)}r||this.fabricCanvas.renderAll()}_changeItemStyle(e,t,i){if(!e||!t)return;const r=e._getFabricObject();"number"==typeof e.styleId&&(t=this._getDrawingStyle(e.styleId)),r.strokeWidth=t.lineWidth,"fill"===t.paintMode?(r.fill=t.fillStyle,r.stroke=t.fillStyle):"stroke"===t.paintMode?(r.fill="transparent",r.stroke=t.strokeStyle):"strokeAndFill"===t.paintMode&&(r.fill=t.fillStyle,r.stroke=t.strokeStyle),r.fontFamily&&(r.fontFamily=t.fontFamily),r.fontSize&&(r.fontSize=t.fontSize),r.group||(r.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(e,t,i){if(!e||!t)return;const r=e.getChildItems();if("add"===i){if(r.includes(t))return;const i=t._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");t._zIndex=null}else{let i;if(t.styleId)i=this._getDrawingStyle(t.styleId);else{i=this.mapMediaType_Style.get(t._mediaType)[e.styleSelector];const r=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).selected,!0)},n=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).default,!0)};t.on("select",r),t.on("deselect",n),t._funcChangeStyleToSelected=r,t._funcChangeStyleToDefault=n}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,i,!0)}e._fabricObject.addWithUpdate(t._getFabricObject())}else{if("remove"!==i)return;if(!r.includes(t))return;t._zIndex=null,t._drawingLayer=null,t._drawingLayerId=null,t.off("select",t._funcChangeStyleToSelected),t.off("deselect",t._funcChangeStyleToDefault),t._funcChangeStyleToSelected=null,t._funcChangeStyleToDefault=null,e._fabricObject.removeWithUpdate(t._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(e,t){let i=e._getFabricObject();const r=this.fabricCanvas.getObjects();let n,o;if(r.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===e._mediaType){n=e.getChildItems();for(let e of n)if(e._drawingLayer&&e._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(t&&"object"==typeof t&&!Array.isArray(t))for(let e in t)i.set(e,t[e]);if(n){for(let e of n){if(e.styleId)o=this._getDrawingStyle(e.styleId);else{const t=this.mapMediaType_Style.get(e._mediaType);for(let i of q.arrStyleSelectors)e._mapStyle.set(i,t[i]);o=t.default;const i=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected,!0)},r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default,!0)};e.on("select",i),e.on("deselect",r),e._funcChangeStyleToSelected=i,e._funcChangeStyleToDefault=r}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,o,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{if(e.styleId)o=this._getDrawingStyle(e.styleId);else{const t=this.mapMediaType_Style.get(e._mediaType);for(let i of q.arrStyleSelectors)e._mapStyle.set(i,t[i]);o=t.default;const i=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected)},r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default)};e.on("select",i),e.on("deselect",r),e._funcChangeStyleToSelected=i,e._funcChangeStyleToDefault=r}this._changeItemStyle(e,o)}e._zIndex=this.id,e._drawingLayer=this,e._drawingLayerId=this.id;const s=this._arrFabricObject.length;let a=r.length;if(s)a=r.indexOf(this._arrFabricObject[s-1])+1;else for(let t=0;t{for(let t of this._arrDrawingLayer)if(t.getId()===e)return!0;return!1};if(void 0===t){for(let e=100;;e++)if(!i(e)){t=e;break}}else if(i(t))throw new Error("Existed drawing layer id.");const r=new te(e,t,this._mapDrawingStyles,{enableRetinaScaling:!1});return r._manager=this,this._arrDrawingLayer.push(r),this._switchPointerEvent(),r}deleteDrwaingLayer(e){const t=this.getDrawingLayer(e);if(!t)return;const i=this._arrDrawingLayer;t.dispose(),i.splice(i.indexOf(t),1),this._switchPointerEvent()}clearDrawingLayers(){for(let e of this._arrDrawingLayer)e.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(e){for(let t of this._arrDrawingLayer)if(t.getId()===e)return t;return null}getDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const e=this._arrDrawingLayer[0].fabricCanvas.getActiveObjects(),t=[];for(let i of e)t.push(i.getDrawingItem());return t}setDimensions(e,t){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(e,t)}setObjectFit(e){for(let t of this._arrDrawingLayer)t&&t._setObjectFit(e)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(e){this._arrDrawingLayer.length&&(this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.display=e?"block":"none")}_switchPointerEvent(){if(!this._arrDrawingLayer.length)return;let e=!1;for(let t of this._arrDrawingLayer)"editor"===t.getMode()&&(e=!0);this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.pointerEvents=e?"":"none"}}class re{constructor(e){this._controlTarget=null,this._arrUsers=[],this._mapAction_UserArgs=new Map,this._mapProperty_UserValue=new Map,this._mapAction_Callbacks=new Map,this._controlTarget=e}setControlTarget(e){this._controlTarget=e}getControlTarget(){return this._controlTarget}register(e){this._arrUsers.includes(e)||this._arrUsers.push(e)}logout(e){const t=this._arrUsers.indexOf(e);-1!==t&&(this.clearUserDisiredAction({user:e}),this.clearUserDisiredValue({user:e}),this._arrUsers.splice(t,1))}getRegisteredUsers(){return this._arrUsers}ifUserExisted(e){return this._arrUsers.includes(e)}setDisiredValue(e,t,i,r){if(!this._arrUsers.includes(e))throw new Error("Unregistered user.");r&&(this._controlTarget[t]=i),this._mapProperty_UserValue.get(t)?this._mapProperty_UserValue.get(t).set(e,i):this._mapProperty_UserValue.set(t,new Map([[e,i]]))}clearUserDisiredValue(e){if(e&&(e.user||e.property)){if(e.property&&e.user){const t=this._mapProperty_UserValue.get(e.property);if(!t)return;t.delete(e.user)}else if(e.property)this._mapProperty_UserValue.delete(e.property);else if(e.user)for(let t of this._mapProperty_UserValue.values())t.delete(e.user)}else this._mapProperty_UserValue=new Map}getValue(e){if(!this._controlTarget)throw new Error("Control target is not set.");return this._controlTarget[e]}getPropertyDisiredValue(e){if(this._mapProperty_UserValue.get(e)){const t=[],i=this._mapProperty_UserValue.get(e);for(let e of i.values())t.push(e);return t}return null}setDisiredAction(e,t,i,r){if(!this._arrUsers.includes(e))throw new Error("Unregistered user.");return i||(i=[]),r?this._controlTarget[t](...i):(this._mapAction_UserArgs.get(t)?this._mapAction_UserArgs.get(t).set(e,i):this._mapAction_UserArgs.set(t,new Map([[e,i]])),this._render(t))}clearUserDisiredAction(e){if(e&&(e.user||e.actionName)){if(e.actionName&&e.user){const t=this._mapAction_UserArgs.get(e.actionName);if(!t)return;t.delete(e.user)}else if(e.actionName)this._mapAction_UserArgs.delete(e.actionName);else if(e.user)for(let t of this._mapAction_UserArgs.values())t.delete(e.user);this.render()}else this._mapAction_UserArgs=new Map}addCallback(e,t){const i=this._mapAction_Callbacks.get(e);i?i.push(t):this._mapAction_Callbacks.set(e,[t])}removeCallback(e,t){const i=this._mapAction_Callbacks.get(e);if(!i)return;const r=i.indexOf(t);-1!==r&&i.splice(r,1)}clearCallback(e){e?this._mapAction_Callbacks.delete(e):this._mapAction_Callbacks.clear()}_fireCallback(e){const t=this._mapAction_Callbacks.get(e);if(t)for(let e of t){if(!e)return;setTimeout(e.bind(this._controlTarget),0)}}_render(e){const t=this._mapAction_UserArgs.get(e);if(!t)throw new Error("Unrecorded action.");if(t.size===this._arrUsers.length){let i=[];for(let e of t.values())e.length>0&&(i=e);if(this._controlTarget[e]){const t=this._controlTarget[e](...i);return this._mapAction_UserArgs.delete(e),this._fireCallback(e),t}}}render(e){if(e)return this._render(e);for(let e of this._mapAction_UserArgs.keys())this._render(e)}}class ne{constructor(){this._maxCvsSideLength=void 0,this._defaultMaxCvsSideLength=null,this._predefinedResolutions=[{width:160,height:120},{width:320,height:240},{width:480,height:360},{width:640,height:480},{width:800,height:600},{width:960,height:720},{width:1280,height:720},{width:1920,height:1080},{width:2560,height:1440},{width:3840,height:2160}],this._mapCameraResolutions=new Map,this._bWebGLSupported=!0,this.extraBindings=[],this._singleFrameMode=!(navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia),this._cvsSingleFrameMode=null,this._cvsOriginalImage=null,this._imgWidth=0,this._imgHeight=0,this._singleFrameModeIpt=null,this._clickIptSingleFrameMode=()=>{if(this.singleFrameMode){if(!this._singleFrameModeIpt){const e=document.createElement("input");this._singleFrameModeIpt=e,e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.addEventListener("change",(()=>j(this,void 0,void 0,(function*(){const t=e.files[0];e.value="";const i=yield(e=>j(this,void 0,void 0,(function*(){let t=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(t=yield createImageBitmap(e),t)return t}catch(e){}var r;return t||(i=yield(r=e,new Promise(((e,t)=>{let i=URL.createObjectURL(r),n=new Image;n.dbrObjUrl=i,n.src=i,n.onload=()=>{e(n)},n.onerror=e=>{t(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}})))),i})))(t),r=i instanceof HTMLImageElement?i.naturalWidth:i.width,n=i instanceof HTMLImageElement?i.naturalHeight:i.height;this._imgWidth=r,this._imgHeight=n;const o=e=>{const t=Date.now();if(0===r||0===n)return null;const i=this._scanRegion,o=this.getFrameSize(r,n,i,this.maxCvsSideLength);if(!o)return null;let s,a;s=r!==o.sWidth||n!==o.sHeight,a=o.sWidth!==o.dWidth||o.sHeight!==o.dHeight;const l=(()=>!(!this._bWebGLSupported||a))(),h={data:null,region:i?JSON.parse(JSON.stringify(i)):null,sx:o.sx,sy:o.sy,width:o.dWidth,height:o.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:s,toCanvas:this._toCanvas,_sWidth:o.sWidth,_sHeight:o.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(e,r,n,o,null,{targetColorMode:this.frameColorMode,bUseWebGL:l})}catch(t){if("WebGLError"!==t.name)throw t;c=this._getImageData(e,r,n,o,null,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return ne._onLog&&ne._onLog("DCE: _getVideoFrame(region?) END: "+u),h.data=c.data,h.colorMode=c.colorMode,h._bUseWebGL=c._bUseWebGL,h.timeSpent=u-t,h.timeStamp=u,h};(e=>{let t=this._cvsSingleFrameMode;if(!t){if(t=document.createElement("canvas"),t.style.pointerEvents="none",!this._video)throw new Error("'video' is null.");this._video.after(t),t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.objectFit="contain",this._cvsSingleFrameMode=t}t.width==r&&t.height==n||(t.width=r,t.height=n);const i=t.getContext("2d");i.clearRect(0,0,t.width,t.height),i.drawImage(e,0,0)})(i),this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e);let s;this._updateDrawingLayersSize();try{s=o(i)}catch(e){throw e}const a=this.mapCameraEvents.get("singleFrameAcquired");for(let e of a)if(e)try{const t={data:new Uint8Array(s.data),region:JSON.parse(JSON.stringify(s.region)),sx:s.sx,sy:s.sy,width:s.width,height:s.height,colorMode:s.colorMode,timeSpent:s.timeSpent,timeStamp:s.timeStamp,isCropped:s.isCropped,toCanvas:s.toCanvas,_sWidth:s._sWidth,_sHeight:s._sHeight,_bUseWebGL:s._bUseWebGL};yield e.apply(this,[t])}catch(e){console.error(e)}})))),e.style.position="fixed",e.style.left="-1px",e.style.top="-1px",e.style.width="1px",e.style.height="1px",e.style.backgroundColor="transparent",e.style.color="transparent",document.body.appendChild(e)}this._singleFrameModeIpt.click()}},this.styleEls=[],this._frameColorMode=void 0,this._defaultFrameColorMode="RGBA",this.currentFSColorMode="rgba",this.ifReuseArrayBufferView=!1,this.maxVideoCvsLength=3,this._reusedCvs=null,this._reusedWebGLCvs=null,this._reusedWebGLCtx=null,this._reusedDataContainer=null,this._webGLTexture=null,this._webGLProgramInfo=null,this._webGLBuffers=null,this._recordedStates={},this._toCanvas=function(){const e=document.createElement("canvas");let t;if(e.width=this.width,e.height=this.height,"grey"===this.colorMode){t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;ej(this,void 0,void 0,(function*(){yield this.selectCamera(this._selCam.value),this._bOpen||this.stop()})),this._onResolutionSelChange=()=>j(this,void 0,void 0,(function*(){let e,t;if(this._selRsl&&-1!=this._selRsl.selectedIndex){let i=this._selRsl.options[this._selRsl.selectedIndex];e=i.getAttribute("data-width"),t=i.getAttribute("data-height")}yield this.setResolution(e,t),this._bOpen||this.stop()})),this._onCloseBtnClick=()=>{this.close(!0)},this._bOpen=!1,this.isCameraEnhancer=!0,this.isDisposed=!1,this.videoSrc=null,this.videoSettings={video:{width:{ideal:1280},height:{ideal:720},facingMode:{ideal:"environment"}}},this.iPlayRound=0,this.promisePlay=null,this._ifSaveLastUsedCamera=!1,this.ifSkipCameraInspection=!1,this._allCameras=[],this._currentCamera=null,this._videoTrack=null,this._lastDeviceId=void 0,this._vc_bPlayingVideoBeforeHide=!1,this._ev_documentHideEvent=()=>{"visible"===document.visibilityState?this._vc_bPlayingVideoBeforeHide&&("Firefox"==H.browser?this.play():this._video.play(),this._vc_bPlayingVideoBeforeHide=!1):this._video&&!this._video.paused&&(this._vc_bPlayingVideoBeforeHide=!0,this._video.pause())},this._divVideoContainer=null,this._video=null,this.videoFit="contain",this._cvsScanRegion=null,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=2,this._bShowScanRegionMask=!0,this._bShowScanRegionLaser=void 0,this._defaultBShowScanRegionLaser=!1,this._scanRegion=null,this._arrScanRegionOverlays=[],this._layerBaseCvs=null,this._cvsViewDecorator=null,this._decoratorType=[],this._decoratorArea=null,this._viewDecoratorInfo={rectangle:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},focus:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},crossline:{lineWidth:2,strokeStyle:"rgb(254,142,20)"},crosshair:{lineWidth:4,strokeStyle:"rgb(254,142,20)"}},this._croppingRegions=void 0,this._defaultCroppingRegions=[null],this.bIncreaseRegionIndexAuto=!0,this._croppingRegionIndex=0,this._loopInterval=void 0,this._defaultLoopInterval=0,this._maxNumberOfFramesInBuffer=void 0,this._defaultMaxNumberOfFramesInBuffer=1,this._frameQueue=[],this._bFetchingLoopStarted=!1,this._refreshInterval=void 0,this._defaultRefreshInterval=-1,this._updateLayersTimeout=100,this._updateLayers=()=>{this._resizeTimeoutId&&clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout((()=>{if(!this.isDisposed){this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e);this._updateDrawingLayersSize()}}),this._updateLayersTimeout)},this.mapCameraEvents=new Map([["cameraOpen",[]],["cameraClose",[]],["cameraChange",[]],["resolutionChange",[]],["played",[]],["singleFrameAcquired",[]],["frameAddedToBuffer",[]]]),this._controler=null}static getVersion(){return this._version}static detectEnvironment(){return j(this,void 0,void 0,(function*(){return yield(async()=>({wasm:X,worker:Y,getUserMedia:z,camera:await K(),browser:H.browser,version:H.version,OS:H.OS}))()}))}static set engineResourcePath(e){if(this._hasEngineResourceLoaded)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` is called.");ne._engineResourcePath=(e=>{if(null==e&&(e="./"),!N){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get engineResourcePath(){return this._engineResourcePath}static isStorageAvailable(e){let t;try{t=window[e];const i="__storage_test__";return t.setItem(i,i),t.removeItem(i),!0}catch(e){return e instanceof DOMException&&(22===e.code||1014===e.code||"QuotaExceededError"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name)&&t&&0!==t.length}}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"data"in e&&"region"in e&&"sx"in e&&"sy"in e&&"width"in e&&"height"in e&&"colorMode"in e&&"timeSpent"in e&&"timeStamp"in e&&"isCropped"in e&&"toCanvas"in e&&"_sWidth"in e&&"_sHeight"in e&&"_bUseWebGL"in e}set maxCvsSideLength(e){if(e<=0)throw new Error("Invalid value.");this._maxCvsSideLength=e}get maxCvsSideLength(){if(void 0!==this._maxCvsSideLength)return this._maxCvsSideLength;if(this._controler){const e=this._controler.getPropertyDisiredValue("maxCvsSideLength");if(e&&1===e.length)return e[0]}return this._defaultMaxCvsSideLength}static set defaultUIElementURL(e){ne._defaultUIElementURL=e}static get defaultUIElementURL(){var e;return null===(e=ne._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",ne.engineResourcePath)}getUIElement(){return this.UIElement}setUIElement(e){return j(this,void 0,void 0,(function*(){if(this._bOpen)throw new Error("It is not allowed to change the UIElement when the camera is open.");if("string"==typeof e||e instanceof String){if(!e.trim().startsWith("<")){let t=yield fetch(e);if(!t.ok)throw Error("setUIElement(elementOrUrl): Network Error: "+t.statusText);e=yield t.text()}if(!e.trim().startsWith("<"))throw Error("setUIElement(elementOrUrl): Can't get valid HTMLElement.");let t=document.createElement("div");t.innerHTML=e;for(let e=0;e100||e.regionTop>100||e.regionRight>100||e.regionBottom>100)))}set scanRegion(e){if(!this._checkValidRegion(e))throw new Error("Invalid region.");this._scanRegion=JSON.parse(JSON.stringify(e)),this._updateScanRegionCanvas(),this._updateScanAreaDiv();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e)}setScanRegion(e){this.scanRegion=e}getScanRegion(){return JSON.parse(JSON.stringify(this._scanRegion))}_calculateCvsSize(){if(!this._bOpen)return null;let e,t,i;if(this.singleFrameMode)e=this._imgWidth,t=this._imgHeight,i="contain";else{if(!this._video)return null;e=this._video.videoWidth,t=this._video.videoHeight,i=this.getVideoFit()}return{width:e,height:t,objectFit:i}}addScanRegionOverlayCanvas(){this._assertOpen();const e=document.createElement("canvas");if(this._updateScanRegionOverlay(e),!this._scanRegionOverlayContainer){const e=document.createElement("div");if(this._scanRegionOverlayContainer=e,e.style.position="absolute",e.style.left="0",e.style.top="0",e.style.width="100%",e.style.height="100%",e.style.overflow="hidden",e.style.pointerEvents="none",this._layerBaseCvs)this._layerBaseCvs.parentElement.after(e);else if(this._cvsScanRegion)this._cvsScanRegion.before(e);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(e);else{if(!this._video)throw new Error("'video' is null.");this._video.after(e)}this._recordedStates.overlayShow=!0}return this._scanRegionOverlayContainer.append(e),this._arrScanRegionOverlays.push(e),e}removeScanRegionOverlayCanvas(e){const t=this._arrScanRegionOverlays.indexOf(e);-1!==t&&(e.remove(),this._arrScanRegionOverlays.splice(t,1))}_updateScanRegionOverlay(e){if(!e)return;const t=this._calculateCvsSize();if(!t)return;const{width:i,height:r,objectFit:n}=t;if(i<=0||r<=0)return e.width=0,void(e.height=0);const o=this._getRegionInPixels(i,r,this._scanRegion),s=this.getFrameSize(i,r,this._scanRegion,this.maxCvsSideLength),a=s.dWidth,l=s.dHeight;e.width==a&&e.height==l||(e.width=a,e.height=l);const h=window.getComputedStyle(this._video),c=parseFloat(h.width),u=parseFloat(h.height),d=c/u,f=i/r;let g,_,p,m,v=1;"contain"===n?(dd?(v=u/r,g=o.regionLeft*v-(i*v-c)/2,_=o.regionTop*v):(v=c/i,g=o.regionLeft*v,_=o.regionTop*v-(r*v-u)/2),p=(o.regionRight-o.regionLeft)*v,m=(o.regionBottom-o.regionTop)*v):(g=0,_=0,p=0,m=0),e.style.position="absolute",e.style.left=g+"px",e.style.top=_+"px",e.style.width=p+"px",e.style.height=m+"px"}showScanRegionOverlays(){this._scanRegionOverlayContainer&&("none"==this._scanRegionOverlayContainer.style.display&&(this._scanRegionOverlayContainer.style.display=""),this._recordedStates.overlayShow=!0)}hideScanRegionOverlays(){this._scanRegionOverlayContainer&&(this._scanRegionOverlayContainer.style.display="none",this._recordedStates.overlayShow=!1)}setViewDecorator(e,t){if(!e)return void(this._cvsViewDecorator&&(this._cvsViewDecorator.remove(),this._cvsViewDecorator=null));this._assertOpen();let i=[];if("string"==typeof e?i.push(e):Array.isArray(e)&&(i=JSON.parse(JSON.stringify(e))),!this._cvsViewDecorator){if(this._cvsViewDecorator=document.createElement("canvas"),this._cvsViewDecorator.style.pointerEvents="none",this._cvsScanRegion)this._cvsScanRegion.after(this._cvsViewDecorator);else if(this._scanRegionOverlayContainer)this._scanRegionOverlayContainer.after(this._cvsViewDecorator);else if(this._layerBaseCvs)this._layerBaseCvs.parentElement.after(this._cvsViewDecorator);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(this._cvsViewDecorator);else{if(!this._video)throw new Error("'video' is null.");this._video.after(this._cvsViewDecorator)}this._recordedStates.decoratorShow=!0}this._decoratorArea=JSON.parse(JSON.stringify(t)),this._decoratorType.length=0;const r=["rectangle","focus"],n=["crossline","crosshair"];let o=!1,s=!1;for(let e of i)e=e.toLowerCase(),r.includes(e)&&!o&&(o=!0,this._decoratorType.push(e)),n.includes(e)&&!s&&(s=!0,!this._decoratorType.includes(e)&&this._decoratorType.push(e));this._updateViewDecorator()}getViewDecorator(){return{type:JSON.parse(JSON.stringify(this._decoratorType)),area:JSON.parse(JSON.stringify(this._decoratorArea)),canvas:this._cvsViewDecorator}}showViewDecorator(){this._cvsViewDecorator&&("none"==this._cvsViewDecorator.style.display&&(this._cvsViewDecorator.style.display=""),this._recordedStates.decoratorShow=!0)}hideViewDecorator(){this._cvsViewDecorator&&(this._cvsViewDecorator.style.display="none",this._recordedStates.decoratorShow=!1)}setViewDecoratorLineWidth(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("lineWidth"))throw new Error(`It is not allowed to change the property 'lineWidth' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].lineWidth=t,this._updateViewDecorator()}setViewDecoratorStrokeStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("strokeStyle"))throw new Error(`It is not allowed to change the property 'strokeStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].strokeStyle=t,this._updateViewDecorator()}setViewDecoratorFillStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("fillStyle"))throw new Error(`It is not allowed to change the property 'fillStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].fillStyle=t,this._updateViewDecorator()}setViewDecoratorMaskFillStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("maskFillStyle"))throw new Error(`It is not allowed to change the property 'maskFillStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].maskFillStyle=t,this._updateViewDecorator()}_updateViewDecorator(){if(!this._bOpen)return;if(!this._cvsViewDecorator||!this._decoratorArea)return;let e;if(this.singleFrameMode)e="contain";else{if(!this._video)return;e=this.getVideoFit()}const t=this._cvsViewDecorator;t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.objectFit=e;const i=this.getVisibleRegion(!0),r=i.regionRight-i.regionLeft,n=i.regionBottom-i.regionTop;if(t.width==r&&t.height==n||(t.width=r,t.height=n),r<=0||n<=0)return;const o=t.getContext("2d");o.clearRect(0,0,t.width,t.height);const s=this._decoratorArea.x/100*r,a=this._decoratorArea.y/100*n,l=this._decoratorArea.width/100*r,h=this._decoratorArea.height/100*n;for(let e of this._decoratorType){if("rectangle"===e){o.fillStyle=this._viewDecoratorInfo.rectangle.maskFillStyle,o.fillRect(0,0,t.width,t.height),o.clearRect(Math.round(s),Math.round(a),Math.round(l),Math.round(h)),o.fillStyle=this._viewDecoratorInfo.rectangle.fillStyle,o.fillRect(Math.round(s),Math.round(a),Math.round(l),Math.round(h)),o.lineWidth=this._viewDecoratorInfo.rectangle.lineWidth,o.strokeStyle=this._viewDecoratorInfo.rectangle.strokeStyle;const e=o.lineWidth/2;o.strokeRect(Math.round(s-e),Math.round(a-e),Math.round(l+o.lineWidth),Math.round(h+o.lineWidth))}if("focus"===e){o.fillStyle=this._viewDecoratorInfo.focus.maskFillStyle,o.fillRect(0,0,t.width,t.height),o.clearRect(Math.round(s),Math.round(a),Math.round(l),Math.round(h)),o.fillStyle=this._viewDecoratorInfo.focus.fillStyle,o.fillRect(Math.round(s),Math.round(a),Math.round(l),Math.round(h)),o.lineWidth=this._viewDecoratorInfo.focus.lineWidth,o.strokeStyle=this._viewDecoratorInfo.focus.strokeStyle;const e=o.lineWidth/2,i=[0,.25,.75,1],r=[0,.25,.75,1];o.beginPath();for(let e=0;e{const e=parseFloat(window.getComputedStyle(this._video).width),t=parseFloat(window.getComputedStyle(this._video).height);let o,s={regionBottom:r,regionRight:i,regionLeft:0,regionTop:0,regionMeasuredByPercentage:!1};return"cover"===n?e/tthis.maxNumberOfFramesInBuffer;)this._frameQueue.shift()}get maxNumberOfFramesInBuffer(){if(void 0!==this._maxNumberOfFramesInBuffer)return this._maxNumberOfFramesInBuffer;if(this._controler){const e=this._controler.getPropertyDisiredValue("maxNumberOfFramesInBuffer");if(e&&1===e.length)return e[0]}return this._defaultMaxNumberOfFramesInBuffer}get numberOfFramesInBuffer(){return this._frameQueue.length}set refreshInterval(e){this._refreshInterval=e}get refreshInterval(){if(void 0!==this._refreshInterval)return this._refreshInterval;if(this._controler){const e=this._controler.getPropertyDisiredValue("refreshInterval");if(e&&1===e.length)return e[0]}return this._defaultRefreshInterval}static createInstance(e){return j(this,void 0,void 0,(function*(){let t=new ne;("string"==typeof e||e instanceof String)&&(e=JSON.parse(e));for(let i in e)t[i]=e[i];return this._hasEngineResourceLoaded=!0,ne.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{ne.onWarning&&ne.onWarning({id:1,message:"Not using HTTP protocol, the SDK may not work correctly."})}),0):location&&"https:"!==location.protocol&&setTimeout((()=>{ne.onWarning&&ne.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)),t._drawingLayersManager=new ie,t}))}play(e,t,i,r){return j(this,void 0,void 0,(function*(){if(this._video&&this.videoSrc){yield new Promise(((e,t)=>{this._video.onloadedmetadata=()=>j(this,void 0,void 0,(function*(){this._video&&(this._video.onloadedmetadata=null,yield this._video.play(),e())})),"string"==typeof this.videoSrc||this.videoSrc instanceof String?this._video.src=this.videoSrc:this._video.srcObject=this.videoSrc,setTimeout((()=>t(new Error("Failed to play video. Timeout."))),4e3)}));const e={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};this.playCallbackInfo=JSON.parse(JSON.stringify(e));const t=this.mapCameraEvents.get("played");for(let i of t){if(!i)continue;const t=JSON.parse(JSON.stringify(e));setTimeout((()=>i.apply(this,[t])),0)}return this._recordedStates.videoPlaying=!0,e}if(this.singleFrameMode)return r&&r.notTriggerSingleFrameClick||this._clickIptSingleFrameMode(),this.playCallbackInfo={width:0,height:0,deviceId:null},JSON.parse(JSON.stringify(this.playCallbackInfo));if(!this._video)return this.playCallbackInfo=null,null;const n=++this.iPlayRound;let o=null,s=0,a=0;if(this._currentCamera&&(o=this._currentCamera.deviceId),this._video&&(s=this._video.videoWidth,a=this._video.videoHeight),this.promisePlay&&(yield this.promisePlay,nj(this,void 0,void 0,(function*(){var r;try{this._video&&this._video.srcObject&&this.stop(),ne._onLog&&ne._onLog("DCE: ======before video========");const n=()=>{if(!this._video)throw d&&d.getTracks().forEach((e=>{e.stop()})),this._videoTrack=null,this._currentCamera=null,new Error("'video' is null.")},l=this.getVideoSettings();let h;"boolean"==typeof l.video&&(l.video={});const c=["rear","back","rück","arrière","trasera","trás","traseira","posteriore","后面","後面","背面","后置","後置","背置","задней","الخلفية","후","arka","achterzijde","หลัง","baksidan","bagside","sau","bak","tylny","takakamera","belakang","אחורית","πίσω","spate","hátsó","zadní","darrere","zadná","задня","stražnja","belakang","बैक"],u=()=>{for(let e of this._allCameras){let t=e.label.toLowerCase();if(t&&c.some((e=>-1!=t.indexOf(e)))&&/\b0(\b)?/.test(t)){delete l.video.facingMode,l.video.deviceId={ideal:e.deviceId};break}}l.video.deviceId||-1==["Android","HarmonyOS"].indexOf(H.OS)||(delete l.video.facingMode,l.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})};if(e)delete l.video.facingMode,l.video.deviceId={exact:e};else if(l.video.deviceId);else if(this._lastDeviceId)delete l.video.facingMode,l.video.deviceId={exact:this._lastDeviceId};else if(this.ifSaveLastUsedCamera&&ne.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete l.video.facingMode,l.video.deviceId={exact:window.localStorage.getItem("dce_last_camera_id")};const w=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),T=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));w&&T&&(l.video.width=w,l.video.height=T)}else if(this.ifSkipCameraInspection);else if(l.video.facingMode){if("iPhone"!==H.OS&&"Mac"!==H.OS&&(yield this.getAllCameras(!0)),!this._video)return null;let x=l.video.facingMode;x instanceof Array&&x.length&&(x=x[0]),x=x.exact||x.ideal||x,"environment"===x&&(h=!!l.video.facingMode,u())}let d;t&&(l.video.width={ideal:t}),i&&(l.video.height={ideal:i}),ne._onLog&&ne._onLog("DCE: ======try getUserMedia========");let f,g=[0,500],_=null,p=null;function m(e){return j(this,void 0,void 0,(function*(){for(let t of g){n(),t&&(yield new Promise((e=>setTimeout(e,t)))),n();{const t=e.video.deviceId;p=t?t.exact||t.ideal||t:null}try{ne._onLog&&ne._onLog("DCE: ask "+JSON.stringify(e)),d=yield navigator.mediaDevices.getUserMedia(e),n();break}catch(e){_=e,ne._onLog&&ne._onLog("DCE: "+e.message||e)}}}))}if(yield m(l),d||(ne._onLog&&ne._onLog("DCE: ======try getUserMedia again========"),f=JSON.parse(JSON.stringify(l)),"object"==typeof f.video&&("iPhone"==H.OS?(t>=1280||i>=1280?f.video.width=1280:t>=640||i>=640?f.video.width=640:(t<640||i<640)&&(f.video.width=320),delete f.video.height):h&&!l.video.deviceId?(delete f.video.facingMode,this._allCameras.length&&(f.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})):f.video=!0),ne._onLog&&ne._onLog("DCE: "+f),yield m(f)),d||(g=[1e3,2e3],yield m(l)),d||(yield m(f)),!d)throw _;const v=()=>{const e=d.getVideoTracks();let t,i;if(e.length&&(t=this._videoTrack=e[0]),this._video&&t){const e=t.getSettings();if(e)for(let r of this._allCameras)if(e.deviceId===r.deviceId){r._checked=!0,r.label=t.label,i=r;break}if(!i&&p)for(let e of this._allCameras)if(p==e.deviceId){t.label&&(e._checked=!0,e.label=t.label),i=e;break}}this._currentCamera=i};if(yield this.getAllCameras(!0),n(),h){v(),u();let E=l.video.deviceId;E&&(E=E.exact||E.ideal||E);let A=null===(r=this._currentCamera)||void 0===r?void 0:r.deviceId;!E||A&&E==A||(d.getTracks().forEach((e=>{e.stop()})),g=[0,500,1e3,2e3],yield m(l))}n();const y=()=>j(this,void 0,void 0,(function*(){ne._onLog&&ne._onLog("======play video========"),yield new Promise(((e,t)=>{n(),this._video.onloadedmetadata=()=>j(this,void 0,void 0,(function*(){n(),this._video.onloadedmetadata=null,yield this._video.play(),e()})),this._video.srcObject=d,setTimeout((()=>t(new Error("Failed to play video. Timeout."))),4e3)}))}));yield y(),n(),ne._onLog&&ne._onLog("DCE: ======played video========"),this._bgLoading&&(this._bgLoading.style.animationPlayState="paused");const S=this._video.videoWidth+"x"+this._video.videoHeight;this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",this._video.videoWidth),this._optGotRsl.setAttribute("data-height",this._video.videoHeight),this._optGotRsl.innerText=S,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got")),ne._onLog&&ne._onLog("DCE: got "+S),v(),n(),this._renderSelCameraInfo();const b={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};b.deviceId&&(this._lastDeviceId=b.deviceId,this.ifSaveLastUsedCamera&&ne.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",this._lastDeviceId),l.video.width&&l.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(l.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(l.video.height)))));const C=this.mapCameraEvents.get("played");for(let I of C){if(!I)continue;const O=JSON.parse(JSON.stringify(b));setTimeout((()=>I.apply(this,[O])),0)}if(o&&o!=b.deviceId){const R=this.mapCameraEvents.get("cameraChange");for(let D of R){if(!D)continue;const M=JSON.parse(JSON.stringify(b));setTimeout((()=>D.apply(this,[M])),0)}}if(s&&a&&(s!=b.width||a!=b.height)){this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let P of this._arrScanRegionOverlays)P&&this._updateScanRegionOverlay(P);this._cvsOriginalImage||this._updateDrawingLayersSize();const L=this.mapCameraEvents.get("resolutionChange");for(let F of L){if(!F)continue;const k=JSON.parse(JSON.stringify(b));setTimeout((()=>F.apply(this,[k])),0)}}return this.promisePlay=null,b}catch(B){throw this.promisePlay=null,this._bgLoading&&(this._bgLoading.style.display="none"),"NotFoundError"===B.name&&(DOMException?B=new DOMException("No camera available, please use a device with an accessible camera.",B.name):(B=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),B}})))();const l=yield this.promisePlay;return this.playCallbackInfo=JSON.parse(JSON.stringify(l)),this._recordedStates.videoPlaying=!0,l}))}resume(){return j(this,void 0,void 0,(function*(){this._assertOpen(),yield this.play(),this.ifShowScanRegionLaser&&this.showScanRegionLaser()}))}pause(){this._assertOpen(),this._video&&(this._video.pause(),this._recordedStates.videoPlaying=!1),this.ifShowScanRegionLaser&&this.hideScanRegionLaser()}_bindUI(){if(!this.UIElement)throw new Error("Need to define `UIElement` before opening.");const e=[this.UIElement];for(let t=0;t','','',''].join(""),this._optGotRsl=this._optGotRsl||this._selRsl.options[0])):!this._optGotRsl&&t.classList.contains("dce-opt-gotResolution")?this._optGotRsl=t:!this._btnClose&&t.classList.contains("dce-btn-close")?this._btnClose=t:!this._selMinLtr&&t.classList.contains("dlr-sel-minletter")?(this._selMinLtr=t,this._selMinLtr.options.length||(this._selMinLtr.innerHTML=[this._optGotMinLtr?"":'','','','','','','','','','',''].join(""),this._optGotMinLtr=this._optGotMinLtr||this._selMinLtr.options[0])):!this._optGotMinLtr&&t.classList.contains("dlr-opt-gotMinLtr")&&(this._optGotMinLtr=t);if(this.extraBindings&&this.extraBindings.length)for(let i of this.extraBindings)try{i(t)}catch(e){}}if(!this._video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'");this.singleFrameMode?(this._video&&(this._video.addEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="pointer",this._video.setAttribute("title","Take a photo")),this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none"),this._bgCamera&&(this._bgCamera.style.display="block")):(this._selCam&&(this._selCam.style.display="block",this._selCam.addEventListener("change",this._onCameraSelChange)),this._selRsl&&(this._selRsl.style.display="block",this._selRsl.addEventListener("change",this._onResolutionSelChange)),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._bgLoading&&(this._bgLoading.style.display="block")),this._btnClose&&this._btnClose.addEventListener("click",this._onCloseBtnClick),document.addEventListener("visibilitychange",this._ev_documentHideEvent),window.ResizeObserver?(this._resizeObserver||(this._resizeObserver=new ResizeObserver((e=>{for(let t of e)t.target===this._divVideoContainer&&this._updateLayers()}))),this._divVideoContainer&&this._resizeObserver.observe(this._divVideoContainer)):window.addEventListener("resize",this._updateLayers)}_unbindUI(){this.singleFrameMode?(this._video&&(this._video.removeEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="",this._video.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._bgLoading&&(this._bgLoading.style.display="none"),this._selCam&&this._selCam.removeEventListener("change",this._onCameraSelChange),this._selRsl&&this._selRsl.removeEventListener("change",this._onResolutionSelChange),this._btnClose&&this._btnClose.removeEventListener("click",this._onCloseBtnClick),this.hideScanRegionLaser(),this.hideViewDecorator(),this.hideScanRegionOverlays(),this._drawingLayersManager.setVisible(!1),this._hideOriginalImageCvs(),this._video&&(this._video.onloadedmetadata=null,this._video.remove()),this._divVideoContainer=null,this._video=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._cvsScanRegion&&(this._cvsScanRegion.remove(),this._cvsScanRegion=null),this._singleFrameModeIpt&&(this._singleFrameModeIpt.remove(),this._singleFrameModeIpt=null),this._cvsSingleFrameMode&&(this._cvsSingleFrameMode.remove(),this._cvsSingleFrameMode=null),document.removeEventListener("visibilitychange",this._ev_documentHideEvent),window.ResizeObserver?this._resizeObserver&&this._resizeObserver.disconnect():window.removeEventListener("resize",this._updateLayers)}_assertOpen(){if(!this._bOpen)throw Error("The camera is not open.")}open(e){return j(this,void 0,void 0,(function*(){this.UIElement||(yield this.setUIElement(ne.defaultUIElementURL)),this._bindUI(),e&&this.appendAndShowUI();let t=yield this.play();this.bOpen=!0;const i=this.mapCameraEvents.get("cameraOpen");for(let e of i){if(!e)continue;const i=JSON.parse(JSON.stringify(t));setTimeout((()=>e.apply(this,[i])),0)}return t}))}close(e){if(!this._video)return;this.stop(),this._hideOriginalImage(!1),this._unbindUI(),e&&this.hideUI(),this.stopFetchingLoop(),this.bOpen=!1;const t=this.mapCameraEvents.get("cameraClose");for(let e of t){if(!e)continue;const t={width:0,height:0,deviceId:null};setTimeout((()=>e.apply(this,[t])),0)}}stop(){this._video&&this._video.srcObject&&(ne._onLog&&ne._onLog("DCE: ======stop video========"),this._video.srcObject.getTracks().forEach((e=>{e.stop()})),this._video.srcObject=null,this._videoTrack=null,this._currentCamera=null),this._video&&this.videoSrc&&(ne._onLog&&ne._onLog("DCE: ======stop existing video========"),this._video.pause(),this._video.currentTime=0),this._bgLoading&&(this._bgLoading.style.animationPlayState=""),this._frameQueue.length=0,this._reusedCvs&&this._reusedCvs.ctx2d&&this._reusedCvs.ctx2d.clearRect(0,0,this._reusedCvs.width,this._reusedCvs.height),this.forceLoseContext()}getAllCameras(e){return j(this,void 0,void 0,(function*(){let t=yield navigator.mediaDevices.enumerateDevices();if(!e&&t&&t.length&&!t[0].deviceId){let e=yield navigator.mediaDevices.getUserMedia({video:!0});t=yield navigator.mediaDevices.enumerateDevices(),e.getTracks().forEach((e=>{e.stop()})),e=null}const i=[],r=[];if(this._allCameras)for(let e of this._allCameras)e._checked&&r.push(e);for(let e=0;e{const i=this._mapCameraResolutions.get(e);if(!i||!i.length)return!1;for(let e of i)if(e[0]===t.width&&e[1]===t.height)return!0;return!1},r=(e,t,i)=>j(this,void 0,void 0,(function*(){const r={video:{deviceId:{exact:e},width:{ideal:t},height:{ideal:i}}};let n=null;try{n=yield navigator.mediaDevices.getUserMedia(r)}catch(e){return null}if(!n)return null;const o=n.getVideoTracks();let s=null;try{const e=o[0].getSettings();s={width:e.width,height:e.height}}catch(e){const t=document.createElement("video");t.srcObject=n,s={width:t.videoWidth,height:t.videoHeight},t.srcObject=null}return o.forEach((e=>{e.stop()})),s}));if(!this._bOpen){const n=this.videoSettings.video.deviceId;if(!n)return null;if(t=n.hasOwnProperty("exact")?this.videoSettings.video.deviceId.exact:n.hasOwnProperty("ideal")?this.videoSettings.video.deviceId.ideal:this.videoSettings.video.deviceId,!t)return null;let o=this._mapCameraResolutions.get(t);if(o&&!e)return this._mapCameraResolutions.get(t);this._mapCameraResolutions.set(t,[]),o=this._mapCameraResolutions.get(t);for(let e of this._predefinedResolutions){const n=yield r(t,e.width,e.height);n&&!i(t,n)&&o.push([n.width,n.height])}return o}if(this._currentCamera){t=this._currentCamera.deviceId;let r=this._mapCameraResolutions.get(t);if(r&&!e)return this._mapCameraResolutions.get(t);this._mapCameraResolutions.set(t,[]),r=this._mapCameraResolutions.get(t);const n=this.getConstraints();for(let e of this._predefinedResolutions){yield this._videoTrack.applyConstraints({width:{ideal:e.width},height:{ideal:e.height}});const n=this._videoTrack.getSettings(),o={width:n.width,height:n.height};i(t,o)||r.push([o.width,o.height])}return yield this._videoTrack.applyConstraints(n),r}return null}))}on(e,t){if(!this.mapCameraEvents.has(e))throw new Error(`Event '${e}' is not exists.`);const i=this.mapCameraEvents.get(e);i.includes(t)||i.push(t)}off(e,t){if(!this.mapCameraEvents.has(e))throw new Error(`Event '${e}' is not exists.`);const i=this.mapCameraEvents.get(e),r=i.indexOf(t);-1!==r&&i.splice(r,1)}offAll(e){if(e){if("string"==typeof e){const t=this.mapCameraEvents.get(e);t&&(t.length=0)}}else for(let e of this.mapCameraEvents.values())e&&(e.length=0)}getVideoSettings(){return JSON.parse(JSON.stringify(this.videoSettings))}updateVideoSettings(e){return this.videoSettings=JSON.parse(JSON.stringify(e)),this._lastDeviceId=null,this._bOpen?this.play():Promise.resolve()}isOpen(){return this._bOpen}getCapabilities(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCapabilities()' is unavailable in singleFrameMode.");return this._videoTrack&&this._videoTrack.getCapabilities?this._videoTrack.getCapabilities():{}}getCameraSettings(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCameraSettings()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getSettings():null}getConstraints(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getConstraints()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getConstraints():null}applyConstraints(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'applyConstraints()' is unavailable in singleFrameMode.");if(!this._videoTrack)throw new Error('"_videoTrack" is null.');if(!this._videoTrack.applyConstraints)throw Error("Not supported.");return yield this._videoTrack.applyConstraints(e)}))}turnOnTorch(){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOnTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!0}]});throw Error("Not supported.")}))}turnOffTorch(){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOffTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!1}]});throw Error("Not supported.")}))}setColorTemperature(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setColorTemperature()' is unavailable in singleFrameMode.");let t=this.getCapabilities().colorTemperature;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{colorTemperature:e}]})}))}setExposureCompensation(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setExposureCompensation()' is unavailable in singleFrameMode.");let t=this.getCapabilities().exposureCompensation;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{exposureCompensation:e}]})}))}setZoom(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setZoom()' is unavailable in singleFrameMode.");let t=this.getCapabilities().zoom;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{zoom:e}]})}))}setFrameRate(e){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFrameRate()' is unavailable in singleFrameMode.");let t=this.getCapabilities().frameRate;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({width:{ideal:Math.max(this._video.videoWidth,this._video.videoHeight)},frameRate:e})}))}getFrameRate(){return this.getCameraSettings().frameRate}setFocus(e,t){return j(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFocus()' is unavailable in singleFrameMode.");const i=this.getCapabilities().focusMode,r=this.getCapabilities().focusDistance;if(!i||!i.includes(e)||!r)throw Error("Not supported.");return t?(tr.max&&(t=r.max),yield this._videoTrack.applyConstraints({advanced:[{focusMode:e,focusDistance:t}]})):yield this._videoTrack.applyConstraints({advanced:[{focusMode:e}]})}))}getFocus(){const e=this.getCameraSettings().focusMode;return"continuous"===e?{mode:e}:{mode:e,distance:this.getCameraSettings().focusDistance}}getFrameSize(e,t,i,r){if(!e||!t)return null;let n,o,s,a,l=e,h=t;const c={regionLeft:0,regionTop:0,regionRight:l,regionBottom:h,regionMeasuredByPercentage:!1};i?(i.regionMeasuredByPercentage?(c.regionLeft=i.regionLeft*l/100,c.regionTop=i.regionTop*h/100,c.regionRight=i.regionRight*l/100,c.regionBottom=i.regionBottom*h/100):(c.regionLeft=i.regionLeft,c.regionTop=i.regionTop,c.regionRight=i.regionRight,c.regionBottom=i.regionBottom),n=c.regionLeft,o=c.regionTop,l=Math.round(c.regionRight-c.regionLeft),h=Math.round(c.regionBottom-c.regionTop)):(n=0,o=0);const u=Math.max(l,h);if(r&&r>0&&u>r){const e=r/u;l>h?(s=r,a=Math.round(h*e)):(s=Math.round(l*e),a=r)}else s=l,a=h;return s<=0||a<=0?null:{sx:n,sy:o,sWidth:l,sHeight:h,dWidth:s,dHeight:a}}getFrame(){if(this.singleFrameMode)throw Error("'getFrame()' is unavailable in singleFrameMode.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'getFrame()' is unavailable in singleFrameMode.");return this._getVideoFrame(this._scanRegion)}getImage(){const e=this.getFrame();return e.pixelFormat=e.colorMode,Object.assign(Object.assign({},e),{pixelFormat:e.colorMode})}_getVideoFrame(e,t){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'_getVideoFrame()' is unavailable in singleFrameMode.");const i=Date.now();ne._onLog&&ne._onLog("DCE: _getVideoFrame() START: "+i);const r=this._video.videoWidth,n=this._video.videoHeight;if(0===r||0===n)return null;const o=this.getFrameSize(r,n,e,this.maxCvsSideLength);if(!o)return null;let s,a;s=r!==o.sWidth||n!==o.sHeight,a=o.sWidth!==o.dWidth||o.sHeight!==o.dHeight;const l=(()=>!(!this._bWebGLSupported||a))(),h={data:null,region:e?JSON.parse(JSON.stringify(e)):null,sx:o.sx,sy:o.sy,width:o.dWidth,height:o.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:s,toCanvas:this._toCanvas,_sWidth:o.sWidth,_sHeight:o.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(this._video,r,n,o,t,{targetColorMode:this.frameColorMode,bUseWebGL:l})}catch(e){if("WebGLError"!==e.name)throw e;ne._onLog&&ne._onLog("DCE: get WebGLError, try again in canvas."),c=this._getImageData(this._video,r,n,o,t,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return ne._onLog&&ne._onLog("DCE: _getVideoFrame() END: "+u),h.data=c.data,h.colorMode=c.colorMode,h._bUseWebGL=c._bUseWebGL,h.timeSpent=u-i,h.timeStamp=u,h}_getImageData(e,t,i,r,n,o){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(!t||!i)return null;ne._onLog&&ne._onLog("DCE: _getImageData(), START: "+Date.now());const{sx:s,sy:a,sWidth:l,sHeight:h,dWidth:c,dHeight:u}=r;let d;if(d=o&&o.targetColorMode?o.targetColorMode.toLowerCase():"rgba",o&&o.bUseWebGL){ne._onLog&&ne._onLog("DCE: _getImageData() in WebGL."),this._reusedWebGLCvs||(this._reusedWebGLCvs=document.createElement("canvas"));const r=this._reusedWebGLCvs;r.width==t&&r.height==i||(r.width=t,r.height=i,this._reusedWebGLCtx&&this._reusedWebGLCtx.viewport(0,0,t,i));const o=this._reusedWebGLCtx||r.getContext("webgl",{antialias:!1})||r.getContext("experimental-webgl",{antialias:!1});if(!o){ne._onLog&&ne._onLog("DCE: WebGL unavailable."),this._reusedWebGLCtx=null,this._bWebGLSupported=!1;const e=new Error("WebGL error: unable to initialize WebGL. Your browser or machine may not support it.");throw e.name="WebGLError",e}if(o.enable(o.SCISSOR_TEST),o.scissor(s,a,c,u),!this._reusedWebGLCtx||d!==this.currentFSColorMode){this._reusedWebGLCtx=o;const e=e=>{const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,1,1,-1,1]),e.STATIC_DRAW);const i=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,indices:i}},t=e=>{const t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t},i=(e,t,i)=>{const n=r(e,e.VERTEX_SHADER,t),o=r(e,e.FRAGMENT_SHADER,i),s=e.createProgram();return e.attachShader(s,n),e.attachShader(s,o),e.linkProgram(s),e.getProgramParameter(s,e.LINK_STATUS)?s:(alert("Unable to initialize the shader program: "+e.getProgramInfoLog(s)),null)},r=(e,t,i)=>{const r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(alert("An error occurred compiling the shaders: "+e.getShaderInfoLog(r)),e.deleteShader(r),null)},n="\n attribute mediump vec2 aVertexPosition;\n varying mediump vec2 vDirection;\n \n void main( void )\n {\n gl_Position = vec4(aVertexPosition, 1.0, 1.0) * 2.0;\n vDirection = aVertexPosition;\n }\n ";let s;s=["rgba","rbga","grba","gbra","brga","bgra"].includes(d)?d.slice(0,3):"rgb";const a=i(o,n,`\n precision mediump float;\n\n varying mediump vec2 vDirection;\n uniform sampler2D uSampler;\n uniform lowp float uColorFactor;\n \n void main(void)\n {\n vec4 sample = texture2D(uSampler, vec2(vDirection.x * 0.5 + 0.5, vDirection.y * 0.5 + 0.5));\n lowp float grey = 0.21 * sample.r + 0.71 * sample.g + 0.07 * sample.b;\n gl_FragColor = vec4(sample.${s} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n }\n `);this._webGLProgramInfo={program:a,attribLocations:{vertexPosition:o.getAttribLocation(a,"aVertexPosition")},uniformLocations:{uSampler:o.getUniformLocation(a,"uSampler"),uColorFactor:o.getUniformLocation(a,"uColorFactor")}},this._webGLBuffers=e(o),this._webGLTexture=t(o),this.currentFSColorMode=d}const l=(e,t,i)=>{const r=e.RGBA,n=e.RGBA,o=e.UNSIGNED_BYTE;e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,r,n,o,i)},h=(e,t,i,r)=>{e.clearColor(0,0,0,1),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i.indices),e.useProgram(t.program);{const r=2,n=e.FLOAT,o=!1,s=0,a=0;e.bindBuffer(e.ARRAY_BUFFER,i.position),e.vertexAttribPointer(t.attribLocations.vertexPosition,r,n,o,s,a),e.enableVertexAttribArray(t.attribLocations.vertexPosition)}e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,r),e.uniform1i(t.uniformLocations.uSampler,0),e.uniform1f(t.uniformLocations.uColorFactor,"grey"===d||"grey32"===d?1:0);const n=e.UNSIGNED_SHORT;e.drawElements(e.TRIANGLES,6,n,0)};let f;if(l(o,this._webGLTexture,e),h(o,this._webGLProgramInfo,this._webGLBuffers,this._webGLTexture),n){if(n.length=this.croppingRegions.length||this._croppingRegionIndex<0)throw new Error("The 'croppingRegionIndex' is out of bounds.");e=this.croppingRegions[this._croppingRegionIndex],this.bIncreaseRegionIndexAuto&&++this._croppingRegionIndex>=this.croppingRegions.length&&(this._croppingRegionIndex=0)}return e}_fetchingLoop(e){if(this.isDisposed)return;if(!this._bOpen||!this.isFetchingLoopStarted())return void this.stopFetchingLoop();const t=()=>{ne._onLog&&ne._onLog("DCE: start fetching a frame: "+Date.now());const e=this.getCurrentRegion();let t=this._getVideoFrame(e);if(!t)return void(ne._onLog&&ne._onLog("DCE: get a invalid frame, abandon it: "+Date.now()));for(;this._frameQueue&&this._frameQueue.length>=this.maxNumberOfFramesInBuffer;)this._frameQueue.shift();this._frameQueue.push(t),ne._onLog&&ne._onLog("DCE: finish fetching a frame: "+Date.now());const i=this.mapCameraEvents.get("frameAddedToBuffer");for(let e of i)e&&setTimeout(e.bind(this),0)},i=()=>{this.isDisposed||(this._frameLoopTimeoutId2&&clearTimeout(this._frameLoopTimeoutId2),this.refreshInterval<=0||(this._frameLoopTimeoutId2=setTimeout((()=>{this.isDisposed||(this._bOpen&&this.isFetchingLoopStarted()?(ne._onLog&&ne._onLog("DCE: second timeout executes: "+Date.now()),t(),i()):this.stopFetchingLoop())}),this.refreshInterval)))};e&&(this._frameQueue.length0&&i()):this.refreshInterval>0?(t(),i()):0===this.refreshInterval?t():this.refreshInterval),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameLoopTimeoutId=setTimeout((()=>{this.isDisposed||this._fetchingLoop(!0)}),this.loopInterval)}startFetchingLoop(){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw Error("'startFetchingLoop()' is unavailable in singleFrameMode.");this.isFetchingLoopStarted()||(this._bFetchingLoopStarted=!0,this._recordedStates.fetchingLoopStart=!0,ne._onLog&&ne._onLog("start fetching loop: "+Date.now()),this._fetchingLoop(!0))}isFetchingLoopStarted(){return this._bFetchingLoopStarted}stopFetchingLoop(){this._bFetchingLoopStarted&&(ne._onLog&&ne._onLog("stop fetching loop: "+Date.now()),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameQueue.length=0,this._bFetchingLoopStarted=!1,this._recordedStates.fetchingLoopStart=!1)}getFrameFromBuffer(e){return this._frameQueue&&this._frameQueue.length?e?e0?i-1:r,$),actionName:"modifyPolygon",pointIndex:i}),e}),{})}_extendSet(e,t){if("vertices"===e){const e=this._fabricObject;e.points=t;const i=e.points.length-1;return e.controls=e.points.reduce((function(e,t,r){return e["p"+r]=new B.Control({positionHandler:Q,actionHandler:ee(r>0?r-1:i,$),actionName:"modifyPolygon",pointIndex:r}),e}),{}),e._setPositionDimensions({}),!0}}_extendGet(e){if("vertices"===e){const e=[],t=this._fabricObject;if(t.selectable)for(let i in t.oCoords)e.push({x:t.oCoords[i].x,y:t.oCoords[i].y});else for(let i in t.getCoords())e.push({x:t.getCoords()[i].x,y:t.getCoords()[i].y});return e}}},DT_Rect:class extends q{constructor(e,t,i,r,n){super(new B.Rect({left:e,top:t,width:i,height:r}),n)}},DT_Image:class extends q{constructor(e,t,i,r){super(new B.Image(e,{left:t,top:i}),r),this.image=e}_extendSet(e,t){if("image"===e){if(t instanceof HTMLImageElement)return this._fabricObject.setElement(t),this.image=t,!0;if(t instanceof HTMLCanvasElement){const e=new Image;return e.src=t.toDataURL(),this._fabricObject.setElement(e),this.image=t,!0}throw new Error("Unsupported value.")}}_extendGet(e){if("image"===e)return this.image}},DT_Text:class extends q{constructor(e,t,i,r){super(new B.IText(e,{left:t,top:i}),r),this._mediaType="text"}},DT_Line:class extends q{constructor(e,t,i){super(new B.Line([e.x,e.y,t.x,t.y]),i)}_extendSet(e,t){return"startPoint"===e?(this._fabricObject.set("x1",t.x),this._fabricObject.set("y1",t.y),!0):"endPoint"===e?(this._fabricObject.set("x2",t.x),this._fabricObject.set("y2",t.y),!0):void 0}_extendGet(e){return"startPoint"===e?{x:this._fabricObject.get("x1"),y:this._fabricObject.get("y1")}:"endPoint"===e?{x:this._fabricObject.get("x2"),y:this._fabricObject.get("y2")}:void 0}},DT_Group:class extends q{constructor(e){super(new B.Group(e.map((e=>e._getFabricObject()))));const t=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const e=this.mapEvents.get("select");for(let t of e)t&&t.apply(this);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e.onSelect&&e.onSelect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const e=t.get("deselect");for(let t of e)t&&t.apply(this);const i=this._fabricObject._objects;for(let e of i)setTimeout((()=>{e.onDeselect&&e.onDeselect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)}}getChildItems(){return this._fabricObject._objects.map((e=>e.getDrawingItem()))}addChildItem(e){if(!e||!e.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,e,"add"):this._fabricObject.addWithUpdate(e._getFabricObject())}removeChildItem(e){e&&e.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,e,"remove"):this._fabricObject.removeWithUpdate(e._getFabricObject()))}}};class se extends M{constructor(){super(),this.bFilterRegionInJs=!0,this._onCameraSelChange=()=>{},this._onResolutionSelChange=()=>{},this._onCloseBtnClick=()=>{},this._onPlayed=null}static get version(){return this._version+`(DCE ${ne.getVersion()})`}static _fireHTTPSWarnning(){se.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{se.onWarning&&se.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}_fireResolutionWarning(){if(!this.singleFrameMode&&this.onWarning){const e=this.dce.getConstraints();e&&e.width<1280&&e.height<720&&setTimeout((()=>{this.onWarning&&this.onWarning({id:3,message:"Camera resolution too low, please use a higher resolution (720P or better)."})}),0)}}getUIElement(){return this.dce.getUIElement()}async setUIElement(e){await this.dce.setUIElement(e)}get singleFrameMode(){return this.dce.singleFrameMode}set singleFrameMode(e){this.dce.singleFrameMode=e,e&&(this.dce.ifShowScanRegionLaser=!1,(async()=>{let e=await this.getScanSettings();e.oneDTrustFrameCount=1,await this.updateScanSettings(e)})())}get onUnduplicatedRead(){return this.onUniqueRead}set onUnduplicatedRead(e){this.onUniqueRead=e}get video(){return this.dce&&this.dce.video}set videoSrc(e){this.dce&&(this.dce.videoSrc=e)}get videoSrc(){return this.dce&&this.dce.videoSrc}_assertOpen(){if(!this.dce.isOpen())throw Error("The scanner is not open.")}set regionMaskFillStyle(e){this.dce.setScanRegionMaskStyle({fillStyle:e})}get regionMaskFillStyle(){return this.dce.regionMaskFillStyle}set regionMaskStrokeStyle(e){this.dce.setScanRegionMaskStyle({strokeStyle:e})}get regionMaskStrokeStyle(){return this.dce.regionMaskStrokeStyle}set regionMaskLineWidth(e){this.dce.setScanRegionMaskStyle({lineWidth:e})}get regionMaskLineWidth(){return this.dce.regionMaskLineWidth}set region(e){this._region=e,this.dce&&(e?e instanceof Array||this.dce.setScanRegion(e):this.dce.setScanRegion(null)),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e,this.dce.frameColorMode=e?"rgba":"grey"}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}async createDCEInstance(){this.dce||(M._onLog&&M._onLog("createDCEInstance()"),ne.defaultUIElementURL=null,this.dce=await ne.createInstance(),this.dce.refreshInterval=200,this.dce.frameColorMode="grey",this.dce.maxCvsSideLength=this.maxCvsSideLength,this._drawingItemNamespace=oe,"iPhone"!==M.browserInfo.OS&&"Android"!==M.browserInfo.OS&&"HarmonyOS"!==M.browserInfo.OS&&this.dce.setResolution(1920,1080),this.dce.on("cameraChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("resolutionChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("cameraClose",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1})),this.dce.on("singleFrameAcquired",(async t=>{if(!t)return;if(!t.data)return;let i;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{data:r,sx:n,sy:o,width:s,height:a,colorMode:l,timeStamp:h,_sWidth:c,_sHeight:u}=t,d={timeStamp:h};if("grey"===l)i=await this._decodeBuffer_Uint8Array(r,s,a,s,e.EnumImagePixelFormat.IPF_GrayScaled,d);else if("rgba"===l)i=await this._decodeBuffer_Uint8Array(r,s,a,4*s,e.EnumImagePixelFormat.IPF_ABGR_8888,d);else{if("bgra"!==l)throw new Error(`Color mode '${l}' is not supported.`);i=await this._decodeBuffer_Uint8Array(r,s,a,4*s,e.EnumImagePixelFormat.IPF_ARGB_8888,d)}if(await this.clearMapDecodeRecord(),M.recalculateResultLocation(i,n,o,c,u,s,a),this._drawResults(i),this.onFrameRead&&this.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(i);this.onFrameRead(e)}if(this.onUniqueRead&&this.isOpen()&&!this._bPauseScan)for(let e of i)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e))})))}set maxCvsSideLength(e){this._maxCvsSideLength=e,this.dce.maxCvsSideLength=e}get maxCvsSideLength(){return this._maxCvsSideLength}static async createInstance(e){let t=new se;t._instanceID=await se.createInstanceInWorker(!0),await t.createDCEInstance(),"string"==typeof e&&(e=JSON.parse(e));for(let i in e)t[i]=e[i];return await t.dce.setUIElement(se.defaultUIElementURL),t.singleFrameMode&&console.warn("The `navigator.mediaDevices.getUserMedia` is unavailable. automatically change to `singleFrameMode`."),se._fireHTTPSWarnning(),t.singleFrameMode||await t.updateRuntimeSettings("single"),t}async decodeCurrentFrame(e){this._assertOpen();let t=null;e&&e.region&&(t=e.region);const i=this.dce._getVideoFrame(t);return this._decode_DCEFrame(i)}static isRegionNormalPreset(e){return 0==e.regionLeft&&0==e.regionTop&&0==e.regionRight&&0==e.regionBottom&&0==e.regionMeasuredByPercentage}async updateRuntimeSettings(t){let i;if("string"==typeof t)if("speed"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region)}else if("balance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region),i.deblurLevel=3,i.expectedBarcodesCount=512,i.localizationModes=[2,16,0,0,0,0,0,0],i.timeout=1e5}else if("coverage"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region),i.deblurLevel=5,i.expectedBarcodesCount=512,i.scaleDownThreshold=1e5,i.localizationModes=[2,16,4,8,0,0,0,0],i.timeout=1e5}else if("single"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,se.isRegionNormalPreset(e.region)?i.region=null:i.region=e.region,i.expectedBarcodesCount=1,i.localizationModes=[16,2,0,0,0,0,0,0],i.barcodeZoneMinDistanceToImageBorders=0}else if("dense"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region),i.deblurLevel=7,i.scaleDownThreshold=1e5,i.localizationModes=[2,8,0,0,0,0,0,0],i.minResultConfidence=0,i.timeout=1e5}else if("distance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,i=await this.getRuntimeSettings(),i.barcodeFormatIds=e.barcodeFormatIds,i.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(i.region=e.region),i.scaleDownThreshold=1e5,i.localizationModes=[2,8,0,0,0,0,0,0],i.timeout=1e5}else i=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(i=JSON.parse(JSON.stringify(t)),i.region instanceof Array){let e=t.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(i.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!M._bUseFullFeature){if(0!=(i.barcodeFormatIds&~(e.EnumBarcodeFormat.BF_ONED|e.EnumBarcodeFormat.BF_QR_CODE|e.EnumBarcodeFormat.BF_PDF417|e.EnumBarcodeFormat.BF_DATAMATRIX))||0!=i.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=i.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}{let e=i.region;if(this.bFilterRegionInJs?this.userDefinedRegion=JSON.parse(JSON.stringify(e)):this.userDefinedRegion=null,e instanceof Array)if(e.length){for(let t=0;t{let r=M._nextTaskID++;M._taskCallbackMap.set(r,(i=>{if(i.success){try{this._handleRetJsonString(i.updateReturn)}catch(e){t(e)}return e()}{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),M._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(i)}})})),"single"==t&&(await this.setModeArgument("BinarizationModes",0,"EnableFillBinaryVacancy","0"),await this.setModeArgument("LocalizationModes",0,"ScanDirection","2"),await this.setModeArgument("BinarizationModes",0,"BlockSizeX","71"),await this.setModeArgument("BinarizationModes",0,"BlockSizeY","71"))}_bindUI(){if(!this.getUIElement())throw new Error("Need to define `UIElement` before opening.");if(this.dce._bindUI(),!this.dce.video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'")}_unbindUI(){this.dce._unbindUI()}set onPlayed(e){this.dce.off("played",this._onPlayed),this._onPlayed=e,this.dce.on("played",this._onPlayed)}get onPlayed(){return this._onPlayed}async getAllCameras(){return this.dce.getAllCameras()}async getCurrentCamera(){return this.dce.getSelectedCamera()}async setCurrentCamera(e){const t=await this.dce.selectCamera(e);return this._fireResolutionWarning(),t}getResolution(){return this.dce.getResolution()}async setResolution(e,t){const i=await this.dce.setResolution(e,t);return this._fireResolutionWarning(),i}getVideoSettings(){return this.dce.getVideoSettings()}updateVideoSettings(e){return this.dce.updateVideoSettings(e)}isOpen(){return this.dce&&this.dce.isOpen()}setVideoFit(e){return this.dce&&this.dce.setVideoFit(e)}set ifShowScanRegionMask(e){this.dce&&(this.dce.ifShowScanRegionMask=e)}get ifShowScanRegionMask(){return this.dce&&this.dce.ifShowScanRegionMask}set ifSaveLastUsedCamera(e){this.dce&&(this.dce.ifSaveLastUsedCamera=e)}get ifSaveLastUsedCamera(){return this.dce&&this.dce.ifSaveLastUsedCamera}set ifSkipCameraInspection(e){this.dce&&(this.dce.ifSkipCameraInspection=e)}get ifSkipCameraInspection(){return this.dce&&this.dce.ifSkipCameraInspection}stop(){this._drawResults(null),this.dce.stop(),this.dce.ifShowScanRegionLaser=!1,this.dce.hideViewDecorator(),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}pause(){this.dce.pause()}async play(e,t,i){this.dce.ifShowScanRegionLaser=!0;const r=await this.dce.play(e,t,i);return this._fireResolutionWarning(),r}pauseScan(e){this._assertOpen(),e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce.ifShowScanRegionLaser=!1,this.dce.stopFetchingLoop()}resumeScan(){this._assertOpen(),this._bPauseScan=!1,this.dce.ifShowScanRegionLaser=!0}getCapabilities(){return this.dce.getCapabilities()}getCameraSettings(){return this.dce.getCameraSettings()}getConstraints(){return this.dce.getConstraints()}async applyConstraints(e){return this.dce.applyConstraints(e)}async turnOnTorch(){return this.dce.turnOnTorch()}async turnOffTorch(){return this.dce.turnOffTorch()}async setColorTemperature(e){return this.dce.setColorTemperature(e)}async setExposureCompensation(e){return this.dce.setExposureCompensation(e)}async setZoom(e){return this.dce.setZoom(e)}async setFrameRate(e){return this.dce.setFrameRate(e)}getFrameRate(){return this.dce.getFrameRate()}async setFocus(e,t){return this.dce.setFocus(e,t)}getFocus(){return this.dce.getFocus()}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this.dce.stopFetchingLoop(),void this._drawResults(null);if(!this.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce.video||this.dce.video.paused||this._bPauseScan)return M._onLog&&M._onLog("Video or scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));M._onLog&&M._onLog("======= once read ======="),M._onLog&&(this._timeStartDecode=Date.now());const t=this._getVideoFrame();if(!t)return this._drawResults(null),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{t._bUseWebGL||"grey"!==t.colorMode||(this.dce.frameColorMode="rgba");let i=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{data:r,sx:n,sy:o,width:s,height:a,colorMode:l,timeStamp:h,_sWidth:c,_sHeight:u}=t,d={timeStamp:h};if("grey"===l)i=await this._decodeBuffer_Uint8Array(r,s,a,s,e.EnumImagePixelFormat.IPF_GrayScaled,d);else if("rgba"===l)i=await this._decodeBuffer_Uint8Array(r,s,a,4*s,e.EnumImagePixelFormat.IPF_ABGR_8888,d);else{if("bgra"!==l)throw new Error(`Color mode '${l}' is not supported.`);i=await this._decodeBuffer_Uint8Array(r,s,a,4*s,e.EnumImagePixelFormat.IPF_ARGB_8888,d)}return M.recalculateResultLocation(i,n,o,c,u,s,a),i})().then((e=>{if(M._onLog&&M._onLog(e),this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost,i=this._indexCurrentDecodingFrame;const r=()=>{let r=0;if(this.region instanceof Array){let n=0,o=0;n=i+1>=this.region.length?0:i+1,o=n+1>=this.region.length?0:n+1,r=e[n]&&e[n].length&&t[o]&&t[o].length?Math.min(...e[n])-Math.max(...t[o]):0}else if(t&&t.length){let i=Math.min(...e),n=Math.max(...t);i&&n&&(r=i-n)}else r=0;return r>0?r:0};(()=>{if(this.region instanceof Array){for(e[i]&&e[i]instanceof Array||(e[i]=[]);e[i].length>=5;)e[i].shift();e[i].push(this._lastInnerDecodeDuration)}else{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)}})(),this._intervalGetVideoFrame=r()+this.intervalTime}if(this.isOpen()&&this.dce.video&&!this.dce.video.paused&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of e)if(0==i.resultState){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of e)if(0==i.resultState){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onFrameRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultState&&1!=e.resultState||this.onFrameRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultState&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t));this._drawResults(e)}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce.stopFetchingLoop(),M._onLog&&M._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){let t=this.dce.isFetchingLoopStarted();if(this.dce.loopInterval=this._intervalGetVideoFrame,t||this.dce.startFetchingLoop(),!this.dce.numberOfFramesInBuffer)return this.dce.loopInterval=0,null;e=this.dce.getFrameFromBuffer();const i=e=>{if(!e)return;let t=e.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(t)};i(e)}else this.dce.stopFetchingLoop(),e=this.dce.getFrame();return e}async open(){this._bindUI();const e=await this.dce.open();return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}async openVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const e=await this.dce.open();return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}close(){this.dce.close(),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}async show(){this._bindUI();const e=await this.dce.open(!0);return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}async showVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const e=await this.dce.open(!0);return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}hide(){this.dce.close(!0),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}destroyContext(){this.close(),this.bDestroyed||super.destroyContext()}}var ae,le,he,ce,ue,de,fe,ge,_e,pe,me,ve,ye,Se,be,Ce,we,Te,xe,Ee,Ae,Ie,Oe,Re,De,Me,Le;e.EnumBarcodeColourMode=void 0,(ae=e.EnumBarcodeColourMode||(e.EnumBarcodeColourMode={}))[ae.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",ae[ae.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",ae[ae.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",ae[ae.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",ae[ae.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",ae[ae.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",ae[ae.BICM_SKIP=0]="BICM_SKIP",ae[ae.BICM_REV=2147483648]="BICM_REV",e.EnumBarcodeComplementMode=void 0,(le=e.EnumBarcodeComplementMode||(e.EnumBarcodeComplementMode={}))[le.BCM_AUTO=1]="BCM_AUTO",le[le.BCM_GENERAL=2]="BCM_GENERAL",le[le.BCM_SKIP=0]="BCM_SKIP",le[le.BCM_REV=2147483648]="BCM_REV",e.EnumBarcodeFormat_2=void 0,(he=e.EnumBarcodeFormat_2||(e.EnumBarcodeFormat_2={}))[he.BF2_NULL=0]="BF2_NULL",he[he.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",he[he.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",he[he.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",he[he.BF2_POSTNET=2097152]="BF2_POSTNET",he[he.BF2_PLANET=4194304]="BF2_PLANET",he[he.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",he[he.BF2_RM4SCC=16777216]="BF2_RM4SCC",he[he.BF2_DOTCODE=2]="BF2_DOTCODE",he[he.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",he[he.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",he[he.BF2_PHARMACODE=12]="BF2_PHARMACODE",e.EnumBinarizationMode=void 0,(ce=e.EnumBinarizationMode||(e.EnumBinarizationMode={}))[ce.BM_AUTO=1]="BM_AUTO",ce[ce.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",ce[ce.BM_SKIP=0]="BM_SKIP",ce[ce.BM_THRESHOLD=4]="BM_THRESHOLD",ce[ce.BM_REV=2147483648]="BM_REV",e.EnumClarityCalculationMethod=void 0,(ue=e.EnumClarityCalculationMethod||(e.EnumClarityCalculationMethod={}))[ue.ECCM_CONTRAST=1]="ECCM_CONTRAST",e.EnumClarityFilterMode=void 0,(de=e.EnumClarityFilterMode||(e.EnumClarityFilterMode={}))[de.CFM_GENERAL=1]="CFM_GENERAL",e.EnumColourClusteringMode=void 0,(fe=e.EnumColourClusteringMode||(e.EnumColourClusteringMode={}))[fe.CCM_AUTO=1]="CCM_AUTO",fe[fe.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",fe[fe.CCM_SKIP=0]="CCM_SKIP",fe[fe.CCM_REV=2147483648]="CCM_REV",e.EnumColourConversionMode=void 0,(ge=e.EnumColourConversionMode||(e.EnumColourConversionMode={}))[ge.CICM_GENERAL=1]="CICM_GENERAL",ge[ge.CICM_SKIP=0]="CICM_SKIP",ge[ge.CICM_REV=2147483648]="CICM_REV",e.EnumConflictMode=void 0,(_e=e.EnumConflictMode||(e.EnumConflictMode={}))[_e.CM_IGNORE=1]="CM_IGNORE",_e[_e.CM_OVERWRITE=2]="CM_OVERWRITE",e.EnumDeblurMode=void 0,(pe=e.EnumDeblurMode||(e.EnumDeblurMode={}))[pe.DM_SKIP=0]="DM_SKIP",pe[pe.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",pe[pe.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",pe[pe.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",pe[pe.DM_SMOOTHING=8]="DM_SMOOTHING",pe[pe.DM_MORPHING=16]="DM_MORPHING",pe[pe.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",pe[pe.DM_SHARPENING=64]="DM_SHARPENING",pe[pe.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",pe[pe.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",e.EnumDeformationResistingMode=void 0,(me=e.EnumDeformationResistingMode||(e.EnumDeformationResistingMode={}))[me.DRM_AUTO=1]="DRM_AUTO",me[me.DRM_GENERAL=2]="DRM_GENERAL",me[me.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",me[me.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",me[me.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",me[me.DRM_SKIP=0]="DRM_SKIP",me[me.DRM_REV=2147483648]="DRM_REV",e.EnumDPMCodeReadingMode=void 0,(ve=e.EnumDPMCodeReadingMode||(e.EnumDPMCodeReadingMode={}))[ve.DPMCRM_AUTO=1]="DPMCRM_AUTO",ve[ve.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",ve[ve.DPMCRM_SKIP=0]="DPMCRM_SKIP",ve[ve.DPMCRM_REV=2147483648]="DPMCRM_REV",e.EnumGrayscaleTransformationMode=void 0,(ye=e.EnumGrayscaleTransformationMode||(e.EnumGrayscaleTransformationMode={}))[ye.GTM_INVERTED=1]="GTM_INVERTED",ye[ye.GTM_ORIGINAL=2]="GTM_ORIGINAL",ye[ye.GTM_SKIP=0]="GTM_SKIP",ye[ye.GTM_REV=2147483648]="GTM_REV",e.EnumImagePreprocessingMode=void 0,(Se=e.EnumImagePreprocessingMode||(e.EnumImagePreprocessingMode={}))[Se.IPM_AUTO=1]="IPM_AUTO",Se[Se.IPM_GENERAL=2]="IPM_GENERAL",Se[Se.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",Se[Se.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",Se[Se.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",Se[Se.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",Se[Se.IPM_SKIP=0]="IPM_SKIP",Se[Se.IPM_REV=2147483648]="IPM_REV",e.EnumIntermediateResultSavingMode=void 0,(be=e.EnumIntermediateResultSavingMode||(e.EnumIntermediateResultSavingMode={}))[be.IRSM_MEMORY=1]="IRSM_MEMORY",be[be.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",be[be.IRSM_BOTH=4]="IRSM_BOTH",e.EnumIntermediateResultType=void 0,(Ce=e.EnumIntermediateResultType||(e.EnumIntermediateResultType={}))[Ce.IRT_NO_RESULT=0]="IRT_NO_RESULT",Ce[Ce.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",Ce[Ce.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",Ce[Ce.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",Ce[Ce.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",Ce[Ce.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",Ce[Ce.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",Ce[Ce.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",Ce[Ce.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",Ce[Ce.IRT_CONTOUR=256]="IRT_CONTOUR",Ce[Ce.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",Ce[Ce.IRT_FORM=1024]="IRT_FORM",Ce[Ce.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",Ce[Ce.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",Ce[Ce.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL",e.EnumLocalizationMode=void 0,(we=e.EnumLocalizationMode||(e.EnumLocalizationMode={}))[we.LM_SKIP=0]="LM_SKIP",we[we.LM_AUTO=1]="LM_AUTO",we[we.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",we[we.LM_LINES=8]="LM_LINES",we[we.LM_STATISTICS=4]="LM_STATISTICS",we[we.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",we[we.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",we[we.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",we[we.LM_CENTRE=128]="LM_CENTRE",we[we.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",we[we.LM_REV=2147483648]="LM_REV",e.EnumPDFReadingMode=void 0,(Te=e.EnumPDFReadingMode||(e.EnumPDFReadingMode={}))[Te.PDFRM_RASTER=1]="PDFRM_RASTER",Te[Te.PDFRM_AUTO=2]="PDFRM_AUTO",Te[Te.PDFRM_VECTOR=4]="PDFRM_VECTOR",Te[Te.PDFRM_REV=2147483648]="PDFRM_REV",e.EnumQRCodeErrorCorrectionLevel=void 0,(xe=e.EnumQRCodeErrorCorrectionLevel||(e.EnumQRCodeErrorCorrectionLevel={}))[xe.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",xe[xe.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",xe[xe.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",xe[xe.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q",e.EnumRegionPredetectionMode=void 0,(Ee=e.EnumRegionPredetectionMode||(e.EnumRegionPredetectionMode={}))[Ee.RPM_AUTO=1]="RPM_AUTO",Ee[Ee.RPM_GENERAL=2]="RPM_GENERAL",Ee[Ee.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",Ee[Ee.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",Ee[Ee.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",Ee[Ee.RPM_SKIP=0]="RPM_SKIP",Ee[Ee.RPM_REV=2147483648]="RPM_REV",e.EnumResultCoordinateType=void 0,(Ae=e.EnumResultCoordinateType||(e.EnumResultCoordinateType={}))[Ae.RCT_PIXEL=1]="RCT_PIXEL",Ae[Ae.RCT_PERCENTAGE=2]="RCT_PERCENTAGE",e.EnumResultType=void 0,(Ie=e.EnumResultType||(e.EnumResultType={}))[Ie.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",Ie[Ie.RT_RAW_TEXT=1]="RT_RAW_TEXT",Ie[Ie.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",Ie[Ie.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT",e.EnumScaleUpMode=void 0,(Oe=e.EnumScaleUpMode||(e.EnumScaleUpMode={}))[Oe.SUM_AUTO=1]="SUM_AUTO",Oe[Oe.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",Oe[Oe.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",Oe[Oe.SUM_SKIP=0]="SUM_SKIP",Oe[Oe.SUM_REV=2147483648]="SUM_REV",e.EnumTerminatePhase=void 0,(Re=e.EnumTerminatePhase||(e.EnumTerminatePhase={}))[Re.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",Re[Re.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",Re[Re.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",Re[Re.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",Re[Re.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",Re[Re.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED",e.EnumTextFilterMode=void 0,(De=e.EnumTextFilterMode||(e.EnumTextFilterMode={}))[De.TFM_AUTO=1]="TFM_AUTO",De[De.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",De[De.TFM_SKIP=0]="TFM_SKIP",De[De.TFM_REV=2147483648]="TFM_REV",e.EnumTextResultOrderMode=void 0,(Me=e.EnumTextResultOrderMode||(e.EnumTextResultOrderMode={}))[Me.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",Me[Me.TROM_POSITION=2]="TROM_POSITION",Me[Me.TROM_FORMAT=4]="TROM_FORMAT",Me[Me.TROM_SKIP=0]="TROM_SKIP",Me[Me.TROM_REV=2147483648]="TROM_REV",e.EnumTextureDetectionMode=void 0,(Le=e.EnumTextureDetectionMode||(e.EnumTextureDetectionMode={}))[Le.TDM_AUTO=1]="TDM_AUTO",Le[Le.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",Le[Le.TDM_SKIP=0]="TDM_SKIP",Le[Le.TDM_REV=2147483648]="TDM_REV",e.BarcodeReader=M,e.BarcodeScanner=se,Object.defineProperty(e,"__esModule",{value:!0})})); diff --git a/dist/dbr.mjs b/dist/dbr.mjs index 8b18e96..f21ff8a 100644 --- a/dist/dbr.mjs +++ b/dist/dbr.mjs @@ -4,18 +4,18 @@ * @website http://www.dynamsoft.com * @copyright Copyright 2022, Dynamsoft Corporation * @author Dynamsoft - * @version 9.2.11 (js 20220727) + * @version 9.2.12 (js 20220727) * @fileoverview Dynamsoft JavaScript Library for Barcode Reader * More info on DBR JS: https://www.dynamsoft.com/barcode-reader/sdk-javascript/ */ -const e="undefined"==typeof self;let t,i,r,n,s;if("undefined"!=typeof navigator&&(t=navigator,i=t.userAgent,r=t.platform,n=t.mediaDevices),!e){const e={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(i)||this.searchVersion(t.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=i.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(e){for(let t=0;t{let e=!1;if(l)try{(await n.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===s.browser&&s.version>66||"Safari"===s.browser&&s.version>13||"OPR"===s.browser&&s.version>43||"Edge"===s.browser&&s.version;const c=(()=>{if(!e&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})(),u=" is not allowed to change after `createInstance` or `loadWasm` is called.",d=!e&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",f=!e&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",g=t=>{if(null==t)t=[];else{t=t instanceof Array?[...t]:[t];for(let i=0;ie&&"object"==typeof e&&"function"==typeof e.then;var S=function(){this.init()};S.prototype={init:function(){var e=this||b;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var t=this||b;if(e=parseFloat(e),t.ctx||E(),void 0!==e&&e>=0&&e<=1){if(t._volume=e,t._muted)return t;t.usingWebAudio&&t.masterGain.gain.setValueAtTime(e,b.ctx.currentTime);for(var i=0;i=0;t--)e._howls[t].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,E()),e},codecs:function(e){return(this||b)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||b;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||b,t=null;try{t="undefined"!=typeof Audio?new Audio:null}catch(t){return e}if(!t||"function"!=typeof t.canPlayType)return e;var i=t.canPlayType("audio/mpeg;").replace(/^no$/,""),r=e._navigator?e._navigator.userAgent:"",n=r.match(/OPR\/([0-6].)/g),s=n&&parseInt(n[0].split("/")[1],10)<33,o=-1!==r.indexOf("Safari")&&-1===r.indexOf("Chrome"),a=r.match(/Version\/(.*?) /),l=o&&a&&parseInt(a[1],10)<15;return e._codecs={mp3:!(s||!i&&!t.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!i,opus:!!t.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(t.canPlayType('audio/wav; codecs="1"')||t.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!t.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!t.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(t.canPlayType("audio/x-m4a;")||t.canPlayType("audio/m4a;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(t.canPlayType("audio/x-m4b;")||t.canPlayType("audio/m4b;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(t.canPlayType("audio/x-mp4;")||t.canPlayType("audio/mp4;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!t.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(t.canPlayType("audio/x-flac;")||t.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||b;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var t=function(i){for(;e._html5AudioPool.length0?o._seek:i._sprite[e][0]/1e3),h=Math.max(0,(i._sprite[e][0]+i._sprite[e][1])/1e3-l),c=1e3*h/Math.abs(o._rate),u=i._sprite[e][0]/1e3,d=(i._sprite[e][0]+i._sprite[e][1])/1e3;o._sprite=e,o._ended=!1;var f=function(){o._paused=!1,o._seek=l,o._start=u,o._stop=d,o._loop=!(!o._loop&&!i._sprite[e][2])};if(!(l>=d)){var g=o._node;if(i._webAudio){var _=function(){i._playLock=!1,f(),i._refreshBuffer(o);var e=o._muted||i._muted?0:o._volume;g.gain.setValueAtTime(e,b.ctx.currentTime),o._playStart=b.ctx.currentTime,void 0===g.bufferSource.start?o._loop?g.bufferSource.noteGrainOn(0,l,86400):g.bufferSource.noteGrainOn(0,l,h):o._loop?g.bufferSource.start(0,l,86400):g.bufferSource.start(0,l,h),c!==1/0&&(i._endTimers[o._id]=setTimeout(i._ended.bind(i,o),c)),t||setTimeout((function(){i._emit("play",o._id),i._loadQueue()}),0)};"running"===b.state&&"interrupted"!==b.ctx.state?_():(i._playLock=!0,i.once("resume",_),i._clearTimer(o._id))}else{var p=function(){g.currentTime=l,g.muted=o._muted||i._muted||b._muted||g.muted,g.volume=o._volume*b.volume(),g.playbackRate=o._rate;try{var r=g.play();if(r&&"undefined"!=typeof Promise&&(r instanceof Promise||"function"==typeof r.then)?(i._playLock=!0,f(),r.then((function(){i._playLock=!1,g._unlocked=!0,t?i._loadQueue():i._emit("play",o._id)})).catch((function(){i._playLock=!1,i._emit("playerror",o._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),o._ended=!0,o._paused=!0}))):t||(i._playLock=!1,f(),i._emit("play",o._id)),g.playbackRate=o._rate,g.paused)return void i._emit("playerror",o._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||o._loop?i._endTimers[o._id]=setTimeout(i._ended.bind(i,o),c):(i._endTimers[o._id]=function(){i._ended(o),g.removeEventListener("ended",i._endTimers[o._id],!1)},g.addEventListener("ended",i._endTimers[o._id],!1))}catch(e){i._emit("playerror",o._id,e)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===g.src&&(g.src=i._src,g.load());var m=window&&window.ejecta||!g.readyState&&b._navigator.isCocoonJS;if(g.readyState>=3||m)p();else{i._playLock=!0,i._state="loading";var v=function(){i._state="loaded",p(),g.removeEventListener(b._canPlayEvent,v,!1)};g.addEventListener(b._canPlayEvent,v,!1),i._clearTimer(o._id)}}return o._id}i._ended(o)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var i=t._getSoundIds(e),r=0;r=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else n.length>=2&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(i=t?r._soundById(t):r._sounds[0])?i._volume:0;if("loaded"!==r._state||r._playLock)return r._queue.push({event:"volume",action:function(){r.volume.apply(r,n)}}),r;void 0===t&&(r._volume=e),t=r._getSoundIds(t);for(var a=0;a0?r/h:r),u=Date.now();e._fadeTo=i,e._interval=setInterval((function(){var n=(Date.now()-u)/r;u=Date.now(),a+=l*n,a=Math.round(100*a)/100,a=l<0?Math.max(i,a):Math.min(i,a),o._webAudio?e._volume=a:o.volume(a,e._id,!0),s&&(o._volume=a),(it&&a>=i)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,o.volume(i,e._id),o._emit("fade",e._id))}),c)},_stopFade:function(e){var t=this,i=t._soundById(e);return i&&i._interval&&(t._webAudio&&i._node.gain.cancelScheduledValues(b.ctx.currentTime),clearInterval(i._interval),i._interval=null,t.volume(i._fadeTo,e),i._fadeTo=null,t._emit("fade",e)),t},loop:function(){var e,t,i,r=this,n=arguments;if(0===n.length)return r._loop;if(1===n.length){if("boolean"!=typeof n[0])return!!(i=r._soundById(parseInt(n[0],10)))&&i._loop;e=n[0],r._loop=e}else 2===n.length&&(e=n[0],t=parseInt(n[1],10));for(var s=r._getSoundIds(t),o=0;o=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else 2===n.length&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if("number"!=typeof e)return(i=r._soundById(t))?i._rate:r._rate;if("loaded"!==r._state||r._playLock)return r._queue.push({event:"rate",action:function(){r.rate.apply(r,n)}}),r;void 0===t&&(r._rate=e),t=r._getSoundIds(t);for(var a=0;a=0?t=parseInt(r[0],10):i._sounds.length&&(t=i._sounds[0]._id,e=parseFloat(r[0]))}else 2===r.length&&(e=parseFloat(r[0]),t=parseInt(r[1],10));if(void 0===t)return 0;if("number"==typeof e&&("loaded"!==i._state||i._playLock))return i._queue.push({event:"seek",action:function(){i.seek.apply(i,r)}}),i;var o=i._soundById(t);if(o){if(!("number"==typeof e&&e>=0)){if(i._webAudio){var a=i.playing(t)?b.ctx.currentTime-o._playStart:0,l=o._rateSeek?o._rateSeek-o._seek:0;return o._seek+(l+a*Math.abs(o._rate))}return o._node.currentTime}var h=i.playing(t);h&&i.pause(t,!0),o._seek=e,o._ended=!1,i._clearTimer(t),i._webAudio||!o._node||isNaN(o._node.duration)||(o._node.currentTime=e);var c=function(){h&&i.play(t,!0),i._emit("seek",t)};if(h&&!i._webAudio){var u=function(){i._playLock?setTimeout(u,0):c()};setTimeout(u,0)}else c()}return i},playing:function(e){var t=this;if("number"==typeof e){var i=t._soundById(e);return!!i&&!i._paused}for(var r=0;r=0&&b._howls.splice(r,1);var n=!0;for(i=0;i=0){n=!1;break}return T&&n&&delete T[e._src],b.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,i,r){var n=this["_on"+e];return"function"==typeof t&&n.push(r?{id:i,fn:t,once:r}:{id:i,fn:t}),this},off:function(e,t,i){var r=this,n=r["_on"+e],s=0;if("number"==typeof t&&(i=t,t=null),t||i)for(s=0;s=0;s--)n[s].id&&n[s].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,i)}.bind(r,n[s].fn),0),n[s].once&&r.off(e,n[s].fn,n[s].id));return r._loadQueue(e),r},_loadQueue:function(e){var t=this;if(t._queue.length>0){var i=t._queue[0];i.event===e&&(t._queue.shift(),t._loadQueue()),e||i.action()}return t},_ended:function(e){var t=this,i=e._sprite;if(!t._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;r--){if(i<=t)return;e._sounds[r]._ended&&(e._webAudio&&e._sounds[r]._node&&e._sounds[r]._node.disconnect(0),e._sounds.splice(r,1),i--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],i=0;i=0;if(!e.bufferSource)return this;if(b._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),t))try{e.bufferSource.buffer=b._scratchBuffer}catch(e){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(b._navigator&&b._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var w=function(e){this._parent=e,this.init()};w.prototype={init:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++b._counter,t._sounds.push(e),e.create(),e},create:function(){var e=this,t=e._parent,i=b._muted||e._muted||e._parent._muted?0:e._volume;return t._webAudio?(e._node=void 0===b.ctx.createGain?b.ctx.createGainNode():b.ctx.createGain(),e._node.gain.setValueAtTime(i,b.ctx.currentTime),e._node.paused=!0,e._node.connect(b.masterGain)):b.noAudio||(e._node=b._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(b._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=t._src,e._node.preload=!0===t._preload?"auto":t._preload,e._node.volume=i*b.volume(),e._node.load()),e},reset:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++b._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,t=e._parent;t._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(t._sprite).length&&(t._sprite={__default:[0,1e3*t._duration]}),"loaded"!==t._state&&(t._state="loaded",t._emit("load"),t._loadQueue()),e._node.removeEventListener(b._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var T={},x=function(e){var t=e._src;if(T[t])return e._duration=T[t].duration,void I(e);if(/^data:[^;]+;base64,/.test(t)){for(var i=atob(t.split(",")[1]),r=new Uint8Array(i.length),n=0;n0?(T[t._src]=e,I(t,e)):i()};"undefined"!=typeof Promise&&1===b.ctx.decodeAudioData.length?b.ctx.decodeAudioData(e).then(r).catch(i):b.ctx.decodeAudioData(e,r,i)},I=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},E=function(){if(b.usingWebAudio){try{"undefined"!=typeof AudioContext?b.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?b.ctx=new webkitAudioContext:b.usingWebAudio=!1}catch(e){b.usingWebAudio=!1}b.ctx||(b.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(b._navigator&&b._navigator.platform),t=b._navigator&&b._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),i=t?parseInt(t[1],10):null;if(e&&i&&i<9){var r=/safari/.test(b._navigator&&b._navigator.userAgent.toLowerCase());b._navigator&&!r&&(b.usingWebAudio=!1)}b.usingWebAudio&&(b.masterGain=void 0===b.ctx.createGain?b.ctx.createGainNode():b.ctx.createGain(),b.masterGain.gain.setValueAtTime(b._muted?0:b._volume,b.ctx.currentTime),b.masterGain.connect(b.ctx.destination)),b._setup()}};!function(e,t,i,r){var n;e.prototype._pos=[0,0,0],e.prototype._orientation=[0,0,-1,0,1,0],e.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var i=t._howls.length-1;i>=0;i--)t._howls[i].stereo(e);return t},e.prototype.pos=function(e,i,r){var n=this;return n.ctx&&n.ctx.listener?(i="number"!=typeof i?n._pos[1]:i,r="number"!=typeof r?n._pos[2]:r,"number"!=typeof e?n._pos:(n._pos=[e,i,r],void 0!==n.ctx.listener.positionX?(n.ctx.listener.positionX.setTargetAtTime(n._pos[0],t.ctx.currentTime,.1),n.ctx.listener.positionY.setTargetAtTime(n._pos[1],t.ctx.currentTime,.1),n.ctx.listener.positionZ.setTargetAtTime(n._pos[2],t.ctx.currentTime,.1)):n.ctx.listener.setPosition(n._pos[0],n._pos[1],n._pos[2]),n)):n},e.prototype.orientation=function(e,i,r,n,s,o){var a=this;if(!a.ctx||!a.ctx.listener)return a;var l=a._orientation;return i="number"!=typeof i?l[1]:i,r="number"!=typeof r?l[2]:r,n="number"!=typeof n?l[3]:n,s="number"!=typeof s?l[4]:s,o="number"!=typeof o?l[5]:o,"number"!=typeof e?l:(a._orientation=[e,i,r,n,s,o],void 0!==a.ctx.listener.forwardX?(a.ctx.listener.forwardX.setTargetAtTime(e,t.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(i,t.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,t.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(n,t.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(s,t.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(o,t.ctx.currentTime,.1)):a.ctx.listener.setOrientation(e,i,r,n,s,o),a)},i.prototype.init=(n=i.prototype.init,function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],n.call(this,e)}),i.prototype.stereo=function(e,i){var r=this;if(!r._webAudio)return r;if("loaded"!==r._state)return r._queue.push({event:"stereo",action:function(){r.stereo(e,i)}}),r;var n=void 0===t.ctx.createStereoPanner?"spatial":"stereo";if(void 0===i){if("number"!=typeof e)return r._stereo;r._stereo=e,r._pos=[e,0,0]}for(var o=r._getSoundIds(i),a=0;a{console.warn(`Sound '${e}' playback failure: ${t}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=R,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`license`"+u);i._license=t})(D,e)}static get productKeys(){return this._license}static set productKeys(e){D.license=e}static get handshakeCode(){return this._license}static set handshakeCode(e){D.license=e}static get organizationID(){return this._license}static set organizationID(e){D.license=e}static set sessionPassword(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`sessionPassword`"+u);i._sessionPassword=t})(D,e)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:o,worker:a,getUserMedia:l,camera:await h(),browser:s.browser,version:s.version,OS:s.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(t){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");D._engineResourcePath=(t=>{if(null==t&&(t="./"),!e){let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(t)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+u);i._licenseServer=g(t)})(D,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+u);i._deviceFriendlyName=t||""})(D,e)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(e){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");D.__bUseFullFeature=e}static isImageSource(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"getImage"in e}static isDSImage(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("width"in e&&("height"in e&&"pixelFormat"in e)))}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("region"in e&&("sx"in e&&("sy"in e&&("width"in e&&("height"in e&&("colorMode"in e&&("timeSpent"in e&&("timeStamp"in e&&("isCropped"in e&&("toCanvas"in e&&("_sWidth"in e&&("_sHeight"in e&&"_bUseWebGL"in e)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(e){this._region=e,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var e;return null===(e=D._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",D.engineResourcePath)}static set defaultUIElementURL(e){D._defaultUIElementURL=e}static _fireHTTPSWarnning(){D.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{D.onWarning&&D.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new C({src:[this._soundSource],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(e){this.bPlaySoundOnSuccessfulRead="never"!==e&&e}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(e){this.bVibrateOnSuccessfulRead="never"!==e&&e}set dce(e){this._dce=e}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(e){this._maxCvsSideLength=e,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",e)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;D._onLog&&D._onLog("_registerDCEControler()");const e=this.dce;this._dceControler=e._createControler();const t=this._dceControler;t.register(this),t.setDisiredValue(this,"refreshInterval",200),t.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}const i=e.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{i?i===t._innerSetUI&&(await e.setUIElement(`${r.engineResourcePath}dce.ui.html`),t._innerSetUI=e.getUIElement()):(await e.setUIElement(`${r.engineResourcePath}dbr.ui.html`),t._innerSetUI=e.getUIElement())}catch(t){await e.setUIElement(r.defaultUIElementURL)}else i||await e.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async e=>{let t=await this._decode_DCEFrame(e,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onImageRead(e)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));const{sx:i,sy:r,width:n,height:s,_sWidth:o,_sHeight:a}=e;D.recalculateResultLocation(t,i,r,o,a,n,s),this._drawResults(t)},e.on("cameraChange",this.callbackCameraChange),e.on("resolutionChange",this.callbackResolutionChange),e.on("cameraClose",this.callbackCameraClose),e.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(D._onLog&&D._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(e,t){if(null==e)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(e&&e.isCameraEnhancer)this.dce=e,await this._registerDCEControler(),this._imgSource=null;else{if(!D.isImageSource(e))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=e}t&&t.resultsHighlightBaseShapes&&(this._drawingItemNamespace=t.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:e,l:t,ls:i,sp:r,rmk:n}=(e=>{const t=e;if(t._pLoad.isEmpty){let e,i,r=t._license||"",n=JSON.parse(JSON.stringify(t._licenseServer)),s=t._sessionPassword,o=0;if(r.startsWith("t")||r.startsWith("f"))o=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))o=1;else{o=2;const t=r.indexOf(":");if(-1!=t&&(r=r.substring(t+1)),r.startsWith("DLS2")){let t=r.substring(4);try{t=atob(t)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const i=JSON.parse(t);if(r=i.handshakeCode?i.handshakeCode:i.organizationID?i.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===n.length){let e=[];i.mainServerURL&&(e[0]=i.mainServerURL),i.standbyServerURL&&(e[1]=i.standbyServerURL),n=g(e)}!s&&i.sessionPassword&&(s=i.sessionPassword),e=i.remark}("200001"===r||r.startsWith("200001-"))&&(n&&n.length||(r="")),r||(o=1)}if(o&&(globalThis.crypto||(i="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(i="Require https to use online key in this browser.")),i){if(1!==o)throw new Error(i);o=0,console.warn(i),t._lastErrorCode=-1,t._lastErrorString=i}return 1===o&&(r="",console.warn("Applying for a public trial license ...")),{lt:o,l:r,ls:n,sp:s,rmk:e}}throw new Error("Can't preprocess license again"+u)})(D);this._pLoad.task=async(o,a)=>{let l=D.engineResourcePath+D._workerName;D.engineResourcePath.startsWith(location.origin)||(l=await fetch(l).then((e=>e.blob())).then((e=>URL.createObjectURL(e)))),D._dbrWorker=new Worker(l),D._dbrWorker.onerror=e=>{let t=new Error(e.message);a(t)},D._dbrWorker.onmessage=async t=>{let i=t.data?t.data:t;switch(i.type){case"log":D._onLog&&D._onLog(i.message);break;case"load":{i.message&&(i.message=i.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let t,r=!1;1===e&&(r=!0),i.success?(D._dbrWorker.onerror=null,D._version=i.version+"(JS "+D._jsVersion+"."+D._jsEditVersion+")",D._onLog&&D._onLog("load dbr worker success"),i.message&&console.warn(i.message)):(t=new Error(i.message),t.stack=i.stack+"\n"+t.stack,r||111==i.ltsErrorCode&&-1!=i.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&D.showDialog(i.success?"warn":"error",i.message),i.success?o():a(t);break}case"task":{let e=i.id,t=i.body;try{D._taskCallbackMap.get(e)(t),D._taskCallbackMap.delete(e)}catch(t){throw D._taskCallbackMap.delete(e),t}break}default:D._onLog&&D._onLog(t)}},D._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:D.engineResourcePath,bUseFullFeature:D._bUseFullFeature,bd:D._bWasmDebug,v:D._jsVersion,brtk:!!e,bptk:1===e,l:t,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:s,fn:D.deviceFriendlyName,ls:i,sp:r,rmk:n})}}await this._pLoad}static async showDialog(e,t){await(async(e,t,i)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let s=document.createElement("div");s.innerHTML=n;let o=[];for(let e=0;e{if(e==t.target){a.remove();for(let e of o)e.remove()}}));else if(!h&&e.classList.contains("dls-license-icon-close"))h=e,e.addEventListener("click",(()=>{a.remove();for(let e of o)e.remove()}));else if(!c&&e.classList.contains("dls-license-icon-error"))c=e,"error"!=t&&e.remove();else if(!u&&e.classList.contains("dls-license-icon-warn"))u=e,"warn"!=t&&e.remove();else if(!d&&e.classList.contains("dls-license-msg-content")){d=e;let t=i;for(;t;){let i=t.indexOf("["),r=t.indexOf("]",i),n=t.indexOf("(",r),s=t.indexOf(")",n);if(-1==i||-1==r||-1==n||-1==s){e.appendChild(new Text(t));break}i>0&&e.appendChild(new Text(t.substring(0,i)));let o=document.createElement("a"),a=t.substring(i+1,r);o.innerText=a;let l=t.substring(n+1,s);o.setAttribute("href",l),o.setAttribute("target","_blank"),e.appendChild(o),t=t.substring(s+1)}}document.body.appendChild(a)}catch(t){e._onLog&&e._onLog(t.message||t)}})(this,e,t)}static async createInstanceInWorker(e=!1){return await D.loadWasm(),await new Promise(((t,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(e=>{if(e.success)return t(e.instanceID);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),D._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:e})}))}static async createInstance(){let e=new D;return e._instanceID=await D.createInstanceInWorker(),D._fireHTTPSWarnning(),e}async clearMapDecodeRecord(){return await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success)return e();{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:i,instanceID:this._instanceID})}))}async decode(e){D._onLog&&D._onLog("decode(source: any)"),D._onLog&&(this._timeStartDecode=Date.now());{let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),e instanceof Blob?await this._decode_Blob(e,t):e instanceof ArrayBuffer?await this._decode_ArrayBuffer(e,t):e instanceof Uint8Array||e instanceof Uint8ClampedArray?await this._decode_Uint8Array(e,t):e instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?await this._decode_Image(e,t):e instanceof HTMLCanvasElement?await this._decode_Canvas(e,t):e instanceof HTMLVideoElement?await this._decode_Video(e,t):"string"==typeof e?"data:image/"==e.substring(0,11)?await this._decode_Base64(e,t):await this._decode_Url(e,t):D.isDCEFrame(e)?(t.bCopyData=!0,await this._decode_DCEFrame(e,t)):D.isDSImage(e)?(t.bCopyData=!0,await this._decode_DSImage(e,t)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(e,t)}async decodeUrl(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(e,t)}async _decodeBuffer_Uint8Array(e,t,i,r,n,s){return await new Promise(((o,a)=>{let l=D._nextTaskID++;D._taskCallbackMap.set(l,(e=>{if(e.success){let t,i=D._onLog?Date.now():0;D._onLog&&D._onLog("worker return result: "+i),this._lastInnerDecodeDuration=e.duration;try{t=this._handleRetJsonString(e.decodeReturn)}catch(e){return a(e)}if(D._onLog){let e=Date.now();D._onLog("DBR time get result: "+i),D._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),D._onLog("DBR worker decode image cost: "+(i-this._timeEnterInnerDBR)),D._onLog("DBR worker handle results: "+(e-i)),D._onLog("Total decode image cost: "+(e-this._timeStartDecode))}return o(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}})),this._timeEnterInnerDBR=Date.now(),D._onLog&&D._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),D._dbrWorker.postMessage({type:"decodeBuffer",id:l,instanceID:this._instanceID,body:{buffer:e,width:t,height:i,stride:r,format:n,config:s}},[e.buffer]),D._onLog&&s&&s.timeStamp&&D._onLog("decode image delay: "+(this._timeEnterInnerDBR-s.timeStamp))}))}async _decodeBuffer_Blob(e,t,i,r,n,s){D._onLog&&D._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const o=e.arrayBuffer?await e.arrayBuffer():await new Promise(((t,i)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onload=()=>{t(r.result)},r.onerror=()=>{i(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(o),t,i,r,n,s)}async decodeBuffer(e,t,i,r,n,s){let o;return D._onLog&&D._onLog("decodeBuffer(buffer,width,height,stride,format)"),D._onLog&&(this._timeStartDecode=Date.now()),e instanceof Uint8Array||e instanceof Uint8ClampedArray?o=await this._decodeBuffer_Uint8Array(e,t,i,r,n,s):e instanceof ArrayBuffer?o=await this._decodeBuffer_Uint8Array(new Uint8Array(e),t,i,r,n,s):e instanceof Blob&&(o=await this._decodeBuffer_Blob(e,t,i,r,n,s)),o}async _decodeFileInMemory_Uint8Array(e){return await new Promise(((t,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(e=>{if(e.success){let r;this._lastInnerDecodeDuration=e.duration;try{r=this._handleRetJsonString(e.decodeReturn)}catch(e){return i(e)}return t(r)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),D._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:e}})}))}async getRuntimeSettings(){return await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success){let t=JSON.parse(i.results);return null!=this.userDefinedRegion&&(t.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),e(t)}{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"getRuntimeSettings",id:i,instanceID:this._instanceID})}))}async updateRuntimeSettings(e){let t;if("string"==typeof e)if("speed"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=3,t.expectedBarcodesCount=0,t.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=5,t.expectedBarcodesCount=512,t.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region}else if("dense"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=9,t.expectedBarcodesCount=0,t.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=3,t.expectedBarcodesCount=0,t.localizationModes=[2,8,0,0,0,0,0,0]}else t=JSON.parse(e);else{if("object"!=typeof e)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(t=JSON.parse(JSON.stringify(e)),t.region instanceof Array){let e=t.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(t.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!D._bUseFullFeature){if(0!=(t.barcodeFormatIds&~(v.BF_ONED|v.BF_QR_CODE|v.BF_PDF417|v.BF_DATAMATRIX))||0!=t.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=t.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let e=t.region;if(e instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(e)),(e.regionLeft||e.regionTop||e.regionRight||e.regionBottom||e.regionMeasuredByPercentage)&&(e.regionLeft||e.regionTop||100!=e.regionRight||100!=e.regionBottom||!e.regionMeasuredByPercentage)?this.region=e:this.region=null,t.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((e,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(t=>{if(t.success){try{this._handleRetJsonString(t.updateReturn)}catch(e){i(e)}return e()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),D._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(t)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=R,await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success)return e();{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"resetRuntimeSettings",id:i,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!D._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success)return e(i.results);{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:i,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(e){if(!D._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof e)e=e;else{if("object"!=typeof e)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");e=JSON.stringify(e)}return await new Promise(((t,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.initReturn)}catch(e){i(e)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),D._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:e}})}))}async _decode_Blob(e,t){D._onLog&&D._onLog("_decode_Blob(blob: Blob)");let i=null,r=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(e)}catch(e){}i||(r=await function(e){return new Promise(((t,i)=>{let r=URL.createObjectURL(e),n=new Image;n.dbrObjUrl=r,n.src=r,n.onload=()=>{t(n)},n.onerror=e=>{i(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}}))}(e));let n=await this._decode_Image(i||r,t);return i&&i.close(),n}async _decode_ArrayBuffer(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Uint8Array(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Image(e,t){D._onLog&&D._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),t=t||{};let i,r,n=e instanceof HTMLImageElement?e.naturalWidth:e.width,s=e instanceof HTMLImageElement?e.naturalHeight:e.height,o=Math.max(n,s);if(o>this._maxCvsSideLength){let e=this._maxCvsSideLength/o;i=Math.round(n*e),r=Math.round(s*e)}else i=n,r=s;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(e,0,0,n,s,0,0,i,r),e.dbrObjUrl&&URL.revokeObjectURL(e.dbrObjUrl),await this._decode_Canvas(a,t)}async _decode_Canvas(e,t){if(D._onLog&&D._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";if(0===e.width||0===e.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=e,this.oriCanvasData=null);let i=(e.ctx2d||e.getContext("2d")).getImageData(0,0,e.width,e.height).data;return await this._decodeBuffer_Uint8Array(i,e.width,e.height,4*e.width,_.IPF_ABGR_8888,t)}async _decode_Video(e,t){if(D._onLog&&D._onLog("_decode_Video(video)"),!(e instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";t=t||{};let i,r,n=e.videoWidth,s=e.videoHeight,o=Math.max(n,s);if(o>this._maxCvsSideLength){let e=this._maxCvsSideLength/o;i=Math.round(n*e),r=Math.round(s*e)}else i=n,r=s;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(e,0,0,n,s,0,0,i,r),await this._decode_Canvas(a,t)}async _decode_DCEFrame(e,t){if(D._onLog&&D._onLog("_decode_DCEFrame(dceFrame)"),!D.isDCEFrame(e))return[];let i=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,colorMode:e.colorMode,data:new Uint8Array(e.data),toCanvas:e.toCanvas});const{width:r,height:n,colorMode:s,timeStamp:o}=e;let a;a=t&&t.bCopyData?new Uint8Array(e.data):e.data;let l=null;if(t?(l=JSON.parse(JSON.stringify(t)),l.timeStamp=o):l={timeStamp:o},"grey"===s)i=await this._decodeBuffer_Uint8Array(a,r,n,r,_.IPF_GrayScaled,l);else if("rgba"===s)i=await this._decodeBuffer_Uint8Array(a,r,n,4*r,_.IPF_ABGR_8888,l);else{if("bgra"!==s)throw new Error(`Color mode '${s}' is not supported to decode.`);i=await this._decodeBuffer_Uint8Array(a,r,n,4*r,_.IPF_ARGB_8888,l)}return i}async _decode_DSImage(e,t){if(D._onLog&&D._onLog("_decode_DSImage(dsImage)"),!D.isDSImage(e))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,pixelFormat:e.pixelFormat.toLowerCase(),data:new Uint8Array(e.data),toCanvas:function(){const e=document.createElement("canvas");let t;switch(e.width=this.width,e.height=this.height,this.pixelFormat){case"grey":t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;e{let r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{t(r.response)},r.onerror=()=>{i(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(i,t)}}async _decode_FilePath(e,t){throw D._onLog&&D._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(e,t,i,r,n,s,o){if(e.length>0)for(let a of e){let e=a.localizationResult;2==e.resultCoordinateType&&(e.x1*=.01*s,e.x2*=.01*s,e.x3*=.01*s,e.x4*=.01*s,e.y1*=.01*o,e.y2*=.01*o,e.y3*=.01*o,e.y4*=.01*o);let l=s/r,h=o/n;e.x1=e.x1/l+t,e.x2=e.x2/l+t,e.x3=e.x3/l+t,e.x4=e.x4/l+t,e.y1=e.y1/h+i,e.y2=e.y2/h+i,e.y3=e.y3/h+i,e.y4=e.y4/h+i,2==e.resultCoordinateType&&(e.x1*=100/r,e.x2*=100/r,e.x3*=100/r,e.x4*=100/r,e.y1*=100/n,e.y2*=100/n,e.y3*=100/n,e.y4*=100/n)}}static BarcodeReaderException(e,t){let i,r=p.DBR_UNKNOWN;return"number"==typeof e?(r=e,i=new Error(t)):i=new Error(e),i.code=r,i}_handleRetJsonString(e){let t=p;if(e.textResults){for(let t=0;t{let i=t.indexOf(":");e[t.substring(0,i)]=t.substring(i+1)})),i.exception=e}}return e.decodeRecords?this.decodeRecords=e.decodeRecords:this.decodeRecords={},this._lastErrorCode=e.exception,this._lastErrorString=e.description,e.exception&&!D._setWarnnedEx.has(e.description)&&(D._setWarnnedEx.add(e.description),console.warn(e.description)),e.textResults}if(e.exception==t.DBR_SUCCESS)return e.data;throw D.BarcodeReaderException(e.exception,e.description)}async setModeArgument(e,t,i,r){return await new Promise(((n,s)=>{let o=D._nextTaskID++;D._taskCallbackMap.set(o,(e=>{if(e.success){try{this._handleRetJsonString(e.setReturn)}catch(e){return s(e)}return n()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,s(t)}})),D._dbrWorker.postMessage({type:"setModeArgument",id:o,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:i,argumentValue:r}})}))}async getModeArgument(e,t,i){return await new Promise(((r,n)=>{let s=D._nextTaskID++;D._taskCallbackMap.set(s,(e=>{if(e.success){let t;try{t=this._handleRetJsonString(e.getReturn)}catch(e){return n(e)}return r(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),D._dbrWorker.postMessage({type:"getModeArgument",id:s,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:i}})}))}async getIntermediateResults(){return await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success)return e(i.results);{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"getIntermediateResults",id:i,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let e=await this.getIntermediateResults(),t=[];for(let i of e)if(i.dataType==m.IMRDT_IMAGE)for(let e of i.results){const i=e.bytes;let r;switch(D._onLog&&D._onLog(" "+i.length+" "+i.byteLength+" "+e.width+" "+e.height+" "+e.stride+" "+e.format),e.format){case _.IPF_ABGR_8888:r=new Uint8ClampedArray(i);break;case _.IPF_RGB_888:{const e=i.length/3;r=new Uint8ClampedArray(4*e);for(let t=0;t{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success){let t=i.results;return t.intervalTime=this.intervalTime,t.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,t.soundOnSuccessfullRead=this.soundSource,t.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,t.vibrateDuration=this.vibrateDuration,t.captureAndDecodeInParallel=this.captureAndDecodeInParallel,e(t)}{let e=new Error(i.message);return e.stack+="\n"+i.stack,t(e)}})),D._dbrWorker.postMessage({type:"getScanSettings",id:i,instanceID:this._instanceID})}))}async updateScanSettings(e){if(!e)return;const t=JSON.parse(JSON.stringify(e));return t.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(t.intervalTime,0),delete t.intervalTime),t.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=t.whenToPlaySoundforSuccessfulRead,delete t.whenToPlaySoundforSuccessfulRead),t.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=t.soundOnSuccessfullRead,delete t.soundOnSuccessfullRead),t.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=t.whenToVibrateforSuccessfulRead,delete t.whenToVibrateforSuccessfulRead),t.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=t.vibrateDuration,delete t.vibrateDuration),t.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=t.captureAndDecodeInParallel,delete t.captureAndDecodeInParallel),await new Promise(((e,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack+="\n"+t.stack,i(e)}})),D._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:t}})}))}_cloneDecodeResults(e){if(e instanceof Array){let t=[];for(let i of e)t.push(this._cloneDecodeResults(i));return t}{let t=e,i=JSON.parse(JSON.stringify(t,((e,t)=>"oriVideoCanvas"==e||"searchRegionCanvas"==e?void 0:t)));return i}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return D._onLog&&D._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));D._onLog&&D._onLog("======= once read ======="),D._onLog&&(this._timeStartDecode=Date.now());let e=null,t=null;if(this.dce)e=this._getVideoFrame();else if(this._imgSource&&(t=await this._imgSource.getImage(),!D.isDSImage(t)))throw new Error("Invalid DSImage.");if(!e&&!t)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let i=[];if(e){i=await this._decode_DCEFrame(e,{bScanner:!0,bCopyData:!1});let t=null;if(i&&i.length){const{sx:r,sy:n,width:s,height:o,_sWidth:a,_sHeight:l}=e;t=i.map((e=>({localizationResult:JSON.parse(JSON.stringify(e.localizationResult))}))),D.recalculateResultLocation(t,r,n,a,l,s,o)}this._drawResults(t)}else t&&(i=await this._decode_DSImage(t,{bScanner:!0,bCopyData:!1}));return i})().then((e=>{if(D._onLog&&D._onLog(e),this.dce&&this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost;const i=()=>{let i=0;if(t&&t.length){let r=Math.min(...e),n=Math.max(...t);r&&n&&(i=r-n)}else i=0;return i>0?i:0};(()=>{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=i()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of e)if(0==i.resultsType){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of e)if(0==i.resultsType){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onImageRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultsType&&1!=e.resultsType||this.onImageRead(t);this.onImageRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultsType&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),D._onLog&&D._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;e=this.dce.getFrameFromBuffer();const t=e=>{if(!e)return;let t=e.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(t)};t(e)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),e=this.dce.getFrame();return e}_drawResults(e){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const t=this._dbrDrawingLayer;if(t.clearDrawingItems(),e&&e.length)for(let i of e){const e=i.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:e.x1,y:e.y1},{x:e.x2,y:e.y2},{x:e.x3,y:e.y3},{x:e.x4,y:e.y4}]);t.addDrawingItem(r)}}async startScanning(e){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let t=null;return this.dce&&(this.dce.isOpen()?(e&&this.dce.appendAndShowUI(),t=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):t=await this.dce.open(e),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),t):void 0}stopScanning(e){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",e))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(e){if(e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(D._onLog&&D._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let e=D._nextTaskID++;D._taskCallbackMap.set(e,(e=>{if(!e.success){let t=new Error(e.message);throw t.stack=e.stack+"\n"+t.stack,t}})),D._dbrWorker.postMessage({type:"destroyContext",id:e,instanceID:this._instanceID})}}D._jsVersion="9.2.11",D._jsEditVersion="20220727",D._version=`loading...(JS ${D._jsVersion}.${D._jsEditVersion})`,D._license=d,D._sessionPassword=f,D.browserInfo=s,D._workerName=`dbr-${D._jsVersion}.browser.worker.js`,D._engineResourcePath=c,D._licenseServer=[],D._deviceFriendlyName="",D._isShowRelDecodeTimeInResults=!1,D._bWasmDebug=!1,D._bNeverShowDialog=!1,D.__bUseFullFeature=!0,D._nextTaskID=0,D._taskCallbackMap=new Map,D._pLoad=new class extends Promise{constructor(e){let t,i;super(((e,r)=>{t=e,i=r})),this._s="pending",this.resolve=e=>{this.isPending&&(y(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",i(e))},this.task=e}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,y(e)?t=e:"function"==typeof e&&(t=new Promise(e)),t&&(async()=>{try{const i=await t;e===this._task&&this.resolve(i)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}},D._lastErrorCode=0,D._lastErrorString="",D._setWarnnedEx=new Set,D._defaultUIElementURL="@engineResourcePath/dbr.ui.html";var M={653:(e,t,i)=>{var r,n,s,o,a,l,h,c,u,d,f,g,_,p,m,v,y,S,b,C,w,T=T||{version:"5.2.1"};if(t.fabric=T,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?T.document=document:T.document=document.implementation.createHTMLDocument(""),T.window=window;else{var x=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;T.document=x.document,T.jsdomImplForWrapper=i(898).implForWrapper,T.nodeCanvas=i(245).Canvas,T.window=x,DOMParser=T.window.DOMParser}function A(e,t){var i=e.canvas,r=t.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var s=i.height-r.height;n.drawImage(i,0,s,r.width,r.height,0,0,r.width,r.height)}function O(e,t){var i=t.targetCanvas.getContext("2d"),r=t.destinationWidth,n=t.destinationHeight,s=r*n*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);e.readPixels(0,0,r,n,e.RGBA,e.UNSIGNED_BYTE,o);var l=new ImageData(a,r,n);i.putImageData(l,0,0)}T.isTouchSupported="ontouchstart"in T.window||"ontouchstart"in T.document||T.window&&T.window.navigator&&T.window.navigator.maxTouchPoints>0,T.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,T.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],T.DPI=96,T.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",T.commaWsp="(?:\\s+,?\\s*|,\\s*)",T.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,T.reNonWord=/[ \n\.,;!\?\-]/,T.fontPaths={},T.iMatrix=[1,0,0,1,0,0],T.svgNS="http://www.w3.org/2000/svg",T.perfLimitSizeTotal=2097152,T.maxCacheSideLimit=4096,T.minCacheSideLimit=256,T.charWidthsCache={},T.textureSize=2048,T.disableStyleCopyPaste=!1,T.enableGLFiltering=!0,T.devicePixelRatio=T.window.devicePixelRatio||T.window.webkitDevicePixelRatio||T.window.mozDevicePixelRatio||1,T.browserShadowBlurConstant=1,T.arcToSegmentsCache={},T.boundsOfCurveCache={},T.cachesBoundsOfCurve=!0,T.forceGLPutImageData=!1,T.initFilterBackend=function(){return T.enableGLFiltering&&T.isWebglSupported&&T.isWebglSupported(T.textureSize)?(console.log("max texture size: "+T.maxTextureSize),new T.WebglFilterBackend({tileSize:T.textureSize})):T.Canvas2dFilterBackend?new T.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=T),function(){function e(e,t){if(this.__eventListeners[e]){var i=this.__eventListeners[e];t?i[i.indexOf(t)]=!1:T.util.array.fill(i,!1)}}function t(e,t){var i=function(){t.apply(this,arguments),this.off(e,i)}.bind(this);this.on(e,i)}T.Observable={fire:function(e,t){if(!this.__eventListeners)return this;var i=this.__eventListeners[e];if(!i)return this;for(var r=0,n=i.length;r-1||!!t&&this._objects.some((function(t){return"function"==typeof t.contains&&t.contains(e,!0)}))},complexity:function(){return this._objects.reduce((function(e,t){return e+(t.complexity?t.complexity():0)}),0)}},T.CommonMethods={_setOptions:function(e){for(var t in e)this.set(t,e[t])},_initGradient:function(e,t){!e||!e.colorStops||e instanceof T.Gradient||this.set(t,new T.Gradient(e))},_initPattern:function(e,t,i){!e||!e.source||e instanceof T.Pattern?i&&i():this.set(t,new T.Pattern(e,i))},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return"object"==typeof e?this._setObject(e):this._set(e,t),this},_set:function(e,t){this[e]=t},toggle:function(e){var t=this.get(e);return"boolean"==typeof t&&this.set(e,!t),this},get:function(e){return this[e]}},r=t,n=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,l=Math.PI/2,T.util={cos:function(e){if(0===e)return 1;switch(e<0&&(e=-e),e/l){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},sin:function(e){if(0===e)return 0;var t=1;switch(e<0&&(t=-1),e/l){case 1:return t;case 2:return 0;case 3:return-t}return Math.sin(e)},removeFromArray:function(e,t){var i=e.indexOf(t);return-1!==i&&e.splice(i,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*a},radiansToDegrees:function(e){return e/a},rotatePoint:function(e,t,i){var r=new T.Point(e.x-t.x,e.y-t.y),n=T.util.rotateVector(r,i);return new T.Point(n.x,n.y).addEquals(t)},rotateVector:function(e,t){var i=T.util.sin(t),r=T.util.cos(t);return{x:e.x*r-e.y*i,y:e.x*i+e.y*r}},createVector:function(e,t){return new T.Point(t.x-e.x,t.y-e.y)},calcAngleBetweenVectors:function(e,t){return Math.acos((e.x*t.x+e.y*t.y)/(Math.hypot(e.x,e.y)*Math.hypot(t.x,t.y)))},getHatVector:function(e){return new T.Point(e.x,e.y).multiply(1/Math.hypot(e.x,e.y))},getBisector:function(e,t,i){var r=T.util.createVector(e,t),n=T.util.createVector(e,i),s=T.util.calcAngleBetweenVectors(r,n),o=s*(0===T.util.calcAngleBetweenVectors(T.util.rotateVector(r,s),n)?1:-1)/2;return{vector:T.util.getHatVector(T.util.rotateVector(r,o)),angle:s}},projectStrokeOnPoints:function(e,t,i){var r=[],n=t.strokeWidth/2,s=t.strokeUniform?new T.Point(1/t.scaleX,1/t.scaleY):new T.Point(1,1),o=function(e){var t=n/Math.hypot(e.x,e.y);return new T.Point(e.x*t*s.x,e.y*t*s.y)};return e.length<=1||e.forEach((function(a,l){var h,c,u=new T.Point(a.x,a.y);0===l?(c=e[l+1],h=i?o(T.util.createVector(c,u)).addEquals(u):e[e.length-1]):l===e.length-1?(h=e[l-1],c=i?o(T.util.createVector(h,u)).addEquals(u):e[0]):(h=e[l-1],c=e[l+1]);var d,f,g=T.util.getBisector(u,h,c),_=g.vector,p=g.angle;if("miter"===t.strokeLineJoin&&(d=-n/Math.sin(p/2),f=new T.Point(_.x*d*s.x,_.y*d*s.y),Math.hypot(f.x,f.y)/n<=t.strokeMiterLimit))return r.push(u.add(f)),void r.push(u.subtract(f));d=-n*Math.SQRT2,f=new T.Point(_.x*d*s.x,_.y*d*s.y),r.push(u.add(f)),r.push(u.subtract(f))})),r},transformPoint:function(e,t,i){return i?new T.Point(t[0]*e.x+t[2]*e.y,t[1]*e.x+t[3]*e.y):new T.Point(t[0]*e.x+t[2]*e.y+t[4],t[1]*e.x+t[3]*e.y+t[5])},makeBoundingBoxFromPoints:function(e,t){if(t)for(var i=0;i0&&(t>r?t-=r:t=0,i>r?i-=r:i=0);var n,s=!0,o=e.getImageData(t,i,2*r||1,2*r||1),a=o.data.length;for(n=3;n=n?s-n:2*Math.PI-(n-s)}function s(e,t,i){for(var s=i[1],o=i[2],a=i[3],l=i[4],h=i[5],c=function(e,t,i,s,o,a,l){var h=Math.PI,c=l*h/180,u=T.util.sin(c),d=T.util.cos(c),f=0,g=0,_=-d*e*.5-u*t*.5,p=-d*t*.5+u*e*.5,m=(i=Math.abs(i))*i,v=(s=Math.abs(s))*s,y=p*p,S=_*_,b=m*v-m*y-v*S,C=0;if(b<0){var w=Math.sqrt(1-b/(m*v));i*=w,s*=w}else C=(o===a?-1:1)*Math.sqrt(b/(m*y+v*S));var x=C*i*p/s,A=-C*s*_/i,O=d*x-u*A+.5*e,I=u*x+d*A+.5*t,E=n(1,0,(_-x)/i,(p-A)/s),R=n((_-x)/i,(p-A)/s,(-_-x)/i,(-p-A)/s);0===a&&R>0?R-=2*h:1===a&&R<0&&(R+=2*h);for(var D=Math.ceil(Math.abs(R/h*2)),M=[],L=R/D,P=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),F=E+L,k=0;kC)for(var x=1,A=_.length;x2;for(t=t||0,h&&(a=e[2].xe[i-2].x?1:n.x===e[i-2].x?0:-1,l=n.y>e[i-2].y?1:n.y===e[i-2].y?0:-1),r.push(["L",n.x+a*t,n.y+l*t]),r},T.util.getPathSegmentsInfo=d,T.util.getBoundsOfCurve=function(t,i,r,n,s,o,a,l){var h;if(T.cachesBoundsOfCurve&&(h=e.call(arguments),T.boundsOfCurveCache[h]))return T.boundsOfCurveCache[h];var c,u,d,f,g,_,p,m,v=Math.sqrt,y=Math.min,S=Math.max,b=Math.abs,C=[],w=[[],[]];u=6*t-12*r+6*s,c=-3*t+9*r-9*s+3*a,d=3*r-3*t;for(var x=0;x<2;++x)if(x>0&&(u=6*i-12*n+6*o,c=-3*i+9*n-9*o+3*l,d=3*n-3*i),b(c)<1e-12){if(b(u)<1e-12)continue;0<(f=-d/u)&&f<1&&C.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(m=v(p)))/(2*c))&&g<1&&C.push(g),0<(_=(-u-m)/(2*c))&&_<1&&C.push(_));for(var A,O,I,E=C.length,R=E;E--;)A=(I=1-(f=C[E]))*I*I*t+3*I*I*f*r+3*I*f*f*s+f*f*f*a,w[0][E]=A,O=I*I*I*i+3*I*I*f*n+3*I*f*f*o+f*f*f*l,w[1][E]=O;w[0][R]=t,w[1][R]=i,w[0][R+1]=a,w[1][R+1]=l;var D=[{x:y.apply(null,w[0]),y:y.apply(null,w[1])},{x:S.apply(null,w[0]),y:S.apply(null,w[1])}];return T.cachesBoundsOfCurve&&(T.boundsOfCurveCache[h]=D),D},T.util.getPointOnPath=function(e,t,i){i||(i=d(e));for(var r=0;t-i[r].length>0&&r1e-4;)i=l(s),n=s,(r=o(h.x,h.y,i.x,i.y))+a>t?(s-=c,c/=2):(h=i,s+=c,a+=r);return i.angle=u(n),i}(s,t)}},T.util.transformPath=function(e,t,i){return i&&(t=T.util.multiplyTransformMatrices(t,[1,0,0,1,-i.x,-i.y])),e.map((function(e){for(var i=e.slice(0),r={},n=1;n=t}))}}}(),function(){function e(t,i,r){if(r)if(!T.isLikelyNode&&i instanceof Element)t=i;else if(i instanceof Array){t=[];for(var n=0,s=i.length;n57343)return e.charAt(t);if(55296<=i&&i<=56319){if(e.length<=t+1)throw"High surrogate without following low surrogate";var r=e.charCodeAt(t+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return e.charAt(t)+e.charAt(t+1)}if(0===t)throw"Low surrogate without preceding high surrogate";var n=e.charCodeAt(t-1);if(55296>n||n>56319)throw"Low surrogate without preceding high surrogate";return!1}T.util.string={camelize:function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},capitalize:function(e,t){return e.charAt(0).toUpperCase()+(t?e.slice(1):e.slice(1).toLowerCase())},escapeXml:function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(t){var i,r=0,n=[];for(r=0;r-1?e.prototype[n]=function(e){return function(){var i=this.constructor.superclass;this.constructor.superclass=r;var n=t[e].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==e)return n}}(n):e.prototype[n]=t[n],i&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};function n(){}function s(t){for(var i=null,r=this;r.constructor.superclass;){var n=r.constructor.superclass.prototype[t];if(r[t]!==n){i=n;break}r=r.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,e.call(arguments,1)):i.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",this)}T.util.createClass=function(){var i=null,o=e.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(n.prototype=i.prototype,a.prototype=new n,i.subclasses.push(a));for(var l=0,h=o.length;l-1||"touch"===e.pointerType},d="string"==typeof(u=T.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,_=function(e){return e},d?_=function(e,t){return e.style.opacity=t,e}:f&&(_=function(e,t){var i=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(t=t>=.9999?"":"alpha(opacity="+100*t+")",i.filter=i.filter.replace(g,t)):i.filter+=" alpha(opacity="+100*t+")",e}),T.util.setStyle=function(e,t){var i=e.style;if(!i)return e;if("string"==typeof t)return e.style.cssText+=";"+t,t.indexOf("opacity")>-1?_(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)"opacity"===r?_(e,t[r]):i["float"===r||"cssFloat"===r?void 0===i.styleFloat?"cssFloat":"styleFloat":r]=t[r];return e},function(){var e,t,i,r,n=Array.prototype.slice,s=function(e){return n.call(e,0)};try{e=s(T.document.childNodes)instanceof Array}catch(e){}function o(e,t){var i=T.document.createElement(e);for(var r in t)"class"===r?i.className=t[r]:"for"===r?i.htmlFor=t[r]:i.setAttribute(r,t[r]);return i}function a(e){for(var t=0,i=0,r=T.document.documentElement,n=T.document.body||{scrollLeft:0,scrollTop:0};e&&(e.parentNode||e.host)&&((e=e.parentNode||e.host)===T.document?(t=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(t+=e.scrollLeft||0,i+=e.scrollTop||0),1!==e.nodeType||"fixed"!==e.style.position););return{left:t,top:i}}e||(s=function(e){for(var t=new Array(e.length),i=e.length;i--;)t[i]=e[i];return t}),t=T.document.defaultView&&T.document.defaultView.getComputedStyle?function(e,t){var i=T.document.defaultView.getComputedStyle(e,null);return i?i[t]:void 0}:function(e,t){var i=e.style[t];return!i&&e.currentStyle&&(i=e.currentStyle[t]),i},i=T.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",T.util.makeElementUnselectable=function(e){return void 0!==e.onselectstart&&(e.onselectstart=T.util.falseFunction),r?e.style[r]="none":"string"==typeof e.unselectable&&(e.unselectable="on"),e},T.util.makeElementSelectable=function(e){return void 0!==e.onselectstart&&(e.onselectstart=null),r?e.style[r]="":"string"==typeof e.unselectable&&(e.unselectable=""),e},T.util.setImageSmoothing=function(e,t){e.imageSmoothingEnabled=e.imageSmoothingEnabled||e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled||e.oImageSmoothingEnabled,e.imageSmoothingEnabled=t},T.util.getById=function(e){return"string"==typeof e?T.document.getElementById(e):e},T.util.toArray=s,T.util.addClass=function(e,t){e&&-1===(" "+e.className+" ").indexOf(" "+t+" ")&&(e.className+=(e.className?" ":"")+t)},T.util.makeElement=o,T.util.wrapElement=function(e,t,i){return"string"==typeof t&&(t=o(t,i)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t},T.util.getScrollLeftTop=a,T.util.getElementOffset=function(e){var i,r,n=e&&e.ownerDocument,s={left:0,top:0},o={left:0,top:0},l={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return o;for(var h in l)o[l[h]]+=parseInt(t(e,h),10)||0;return i=n.documentElement,void 0!==e.getBoundingClientRect&&(s=e.getBoundingClientRect()),r=a(e),{left:s.left+r.left-(i.clientLeft||0)+o.left,top:s.top+r.top-(i.clientTop||0)+o.top}},T.util.getNodeCanvas=function(e){var t=T.jsdomImplForWrapper(e);return t._canvas||t._image},T.util.cleanUpJsdomNode=function(e){if(T.isLikelyNode){var t=T.jsdomImplForWrapper(e);t&&(t._image=null,t._canvas=null,t._currentSrc=null,t._attributes=null,t._classList=null)}}}(),function(){function e(){}T.util.request=function(t,i){i||(i={});var r=i.method?i.method.toUpperCase():"GET",n=i.onComplete||function(){},s=new T.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(n(s),s.onreadystatechange=e)},"GET"===r&&(o=null,"string"==typeof i.parameters&&(t=function(e,t){return e+(/\?/.test(e)?"&":"?")+t}(t,i.parameters))),s.open(r,t,!0),"POST"!==r&&"PUT"!==r||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),T.log=console.log,T.warn=console.warn,function(){var e=T.util.object.extend,t=T.util.object.clone,i=[];function r(){return!1}function n(e,t,i,r){return-i*Math.cos(e/r*(Math.PI/2))+i+t}T.util.object.extend(i,{cancelAll:function(){var e=this.splice(0);return e.forEach((function(e){e.cancel()})),e},cancelByCanvas:function(e){if(!e)return[];var t=this.filter((function(t){return"object"==typeof t.target&&t.target.canvas===e}));return t.forEach((function(e){e.cancel()})),t},cancelByTarget:function(e){var t=this.findAnimationsByTarget(e);return t.forEach((function(e){e.cancel()})),t},findAnimationIndex:function(e){return this.indexOf(this.findAnimation(e))},findAnimation:function(e){return this.find((function(t){return t.cancel===e}))},findAnimationsByTarget:function(e){return e?this.filter((function(t){return t.target===e})):[]}});var s=T.window.requestAnimationFrame||T.window.webkitRequestAnimationFrame||T.window.mozRequestAnimationFrame||T.window.oRequestAnimationFrame||T.window.msRequestAnimationFrame||function(e){return T.window.setTimeout(e,1e3/60)},o=T.window.cancelAnimationFrame||T.window.clearTimeout;function a(){return s.apply(T.window,arguments)}T.util.animate=function(i){i||(i={});var s,o=!1,l=function(){var e=T.runningAnimations.indexOf(s);return e>-1&&T.runningAnimations.splice(e,1)[0]};return s=e(t(i),{cancel:function(){return o=!0,l()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),T.runningAnimations.push(s),a((function(e){var t,h=e||+new Date,c=i.duration||500,u=h+c,d=i.onChange||r,f=i.abort||r,g=i.onComplete||r,_=i.easing||n,p="startValue"in i&&i.startValue.length>0,m="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?m.map((function(e,t){return v[t]-m[t]})):v-m);i.onStart&&i.onStart(),function e(i){var r=(t=i||+new Date)>u?c:t-h,n=r/c,S=p?m.map((function(e,t){return _(r,m[t],y[t],c)})):_(r,m,y,c),b=p?Math.abs((S[0]-m[0])/y[0]):Math.abs((S-m)/y);if(s.currentValue=p?S.slice():S,s.completionRate=b,s.durationRate=n,!o){if(!f(S,b,n))return t>u?(s.currentValue=p?v.slice():v,s.completionRate=1,s.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void l()):(d(S,b,n),void a(e));l()}}(h)})),s.cancel},T.util.requestAnimFrame=a,T.util.cancelAnimFrame=function(){return o.apply(T.window,arguments)},T.runningAnimations=i}(),function(){function e(e,t,i){var r="rgba("+parseInt(e[0]+i*(t[0]-e[0]),10)+","+parseInt(e[1]+i*(t[1]-e[1]),10)+","+parseInt(e[2]+i*(t[2]-e[2]),10);return(r+=","+(e&&t?parseFloat(e[3]+i*(t[3]-e[3])):1))+")"}T.util.animateColor=function(t,i,r,n){var s=new T.Color(t).getSource(),o=new T.Color(i).getSource(),a=n.onComplete,l=n.onChange;return n=n||{},T.util.animate(T.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(t,i,r,s){return e(i,r,n.colorEasing?n.colorEasing(t,s):1-Math.cos(t/s*(Math.PI/2)))},onComplete:function(t,i,r){if(a)return a(e(o,o,0),i,r)},onChange:function(t,i,r){if(l){if(Array.isArray(t))return l(e(t,t,0),i,r);l(t,i,r)}}}))}}(),function(){function e(e,t,i,r){return e-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===e||"xlink:href"===e||"font"===e)return i;if("imageSmoothing"===e)return"optimizeQuality"===i;a=l?i.map(s):s(i,n)}}else i="";return!l&&isNaN(a)?i:a}function f(e){return new RegExp("^("+e.join("|")+")\\b","i")}function g(e,t){var i,r,n,s,o=[];for(n=0,s=t.length;n1;)l.shift(),h=t.util.multiplyTransformMatrices(h,l[0]);return h}}();var v=new RegExp("^\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*$");function y(e){if(!t.svgViewBoxElementsRegEx.test(e.nodeName))return{};var i,r,n,o,a,l,h=e.getAttribute("viewBox"),c=1,u=1,d=e.getAttribute("width"),f=e.getAttribute("height"),g=e.getAttribute("x")||0,_=e.getAttribute("y")||0,p=e.getAttribute("preserveAspectRatio")||"",m=!h||!(h=h.match(v)),y=!d||!f||"100%"===d||"100%"===f,S=m&&y,b={},C="",w=0,T=0;if(b.width=0,b.height=0,b.toBeParsed=S,m&&(g||_)&&e.parentNode&&"#document"!==e.parentNode.nodeName&&(C=" translate("+s(g)+" "+s(_)+") ",a=(e.getAttribute("transform")||"")+C,e.setAttribute("transform",a),e.removeAttribute("x"),e.removeAttribute("y")),S)return b;if(m)return b.width=s(d),b.height=s(f),b;if(i=-parseFloat(h[1]),r=-parseFloat(h[2]),n=parseFloat(h[3]),o=parseFloat(h[4]),b.minX=i,b.minY=r,b.viewBoxWidth=n,b.viewBoxHeight=o,y?(b.width=n,b.height=o):(b.width=s(d),b.height=s(f),c=b.width/n,u=b.height/o),"none"!==(p=t.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),w=b.width-n*c,T=b.height-o*c,"Mid"===p.alignX&&(w/=2),"Mid"===p.alignY&&(T/=2),"Min"===p.alignX&&(w=0),"Min"===p.alignY&&(T=0)),1===c&&1===u&&0===i&&0===r&&0===g&&0===_)return b;if((g||_)&&"#document"!==e.parentNode.nodeName&&(C=" translate("+s(g)+" "+s(_)+") "),a=C+" matrix("+c+" 0 0 "+u+" "+(i*c+w)+" "+(r*u+T)+") ","svg"===e.nodeName){for(l=e.ownerDocument.createElementNS(t.svgNS,"g");e.firstChild;)l.appendChild(e.firstChild);e.appendChild(l)}else(l=e).removeAttribute("x"),l.removeAttribute("y"),a=l.getAttribute("transform")+a;return l.setAttribute("transform",a),b}function S(e,t){var i="xlink:href",r=m(e,t.getAttribute(i).slice(1));if(r&&r.getAttribute(i)&&S(e,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(e){r&&!t.hasAttribute(e)&&r.hasAttribute(e)&&t.setAttribute(e,r.getAttribute(e))})),!t.children.length)for(var n=r.cloneNode(!0);n.firstChild;)t.appendChild(n.firstChild);t.removeAttribute(i)}t.parseSVGDocument=function(e,i,n,s){if(e){!function(e){for(var i=g(e,["use","svg:use"]),r=0;i.length&&re.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return void 0===t&&(t=.5),t=Math.max(Math.min(1,t),0),new i(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,i=this.y-e.y;return Math.sqrt(t*t+i*i)},midPointFrom:function(e){return this.lerp(e)},min:function(e){return new i(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new i(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setFromPoint:function(e){return this.x=e.x,this.y=e.y,this},swap:function(e){var t=this.x,i=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=i},clone:function(){return new i(this.x,this.y)}})}(t),function(e){var t=e.fabric||(e.fabric={});function i(e){this.status=e,this.points=[]}t.Intersection?t.warn("fabric.Intersection is already defined"):(t.Intersection=i,t.Intersection.prototype={constructor:i,appendPoint:function(e){return this.points.push(e),this},appendPoints:function(e){return this.points=this.points.concat(e),this}},t.Intersection.intersectLineLine=function(e,r,n,s){var o,a=(s.x-n.x)*(e.y-n.y)-(s.y-n.y)*(e.x-n.x),l=(r.x-e.x)*(e.y-n.y)-(r.y-e.y)*(e.x-n.x),h=(s.y-n.y)*(r.x-e.x)-(s.x-n.x)*(r.y-e.y);if(0!==h){var c=a/h,u=l/h;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new t.Point(e.x+c*(r.x-e.x),e.y+c*(r.y-e.y))):o=new i}else o=new i(0===a||0===l?"Coincident":"Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var n,s,o,a,l=new i,h=r.length;for(a=0;a0&&(l.status="Intersection"),l},t.Intersection.intersectPolygonPolygon=function(e,t){var r,n=new i,s=e.length;for(r=0;r0&&(n.status="Intersection"),n},t.Intersection.intersectPolygonRectangle=function(e,r,n){var s=r.min(n),o=r.max(n),a=new t.Point(o.x,s.y),l=new t.Point(s.x,o.y),h=i.intersectLinePolygon(s,a,e),c=i.intersectLinePolygon(a,o,e),u=i.intersectLinePolygon(o,l,e),d=i.intersectLinePolygon(l,s,e),f=new i;return f.appendPoints(h.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(t),function(e){var t=e.fabric||(e.fabric={});function i(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e}t.Color?t.warn("fabric.Color is already defined."):(t.Color=i,t.Color.prototype={_tryParsingColor:function(e){var t;e in i.colorNameMap&&(e=i.colorNameMap[e]),"transparent"===e&&(t=[255,255,255,0]),t||(t=i.sourceFromHex(e)),t||(t=i.sourceFromRgb(e)),t||(t=i.sourceFromHsl(e)),t||(t=[0,0,0,1]),t&&this.setSource(t)},_rgbToHsl:function(e,i,r){e/=255,i/=255,r/=255;var n,s,o,a=t.util.array.max([e,i,r]),l=t.util.array.min([e,i,r]);if(o=(a+l)/2,a===l)n=s=0;else{var h=a-l;switch(s=o>.5?h/(2-a-l):h/(a+l),a){case e:n=(i-r)/h+(i0)-(e<0)||+e};function f(e,t){var i=e.angle+u(Math.atan2(t.y,t.x))+360;return Math.round(i%360/45)}function g(e,i){var r=i.transform.target,n=r.canvas,s=t.util.object.clone(i);s.target=r,n&&n.fire("object:"+e,s),r.fire(e,i)}function _(e,t){var i=t.canvas,r=e[i.uniScaleKey];return i.uniformScaling&&!r||!i.uniformScaling&&r}function p(e){return e.originX===h&&e.originY===h}function m(e,t,i){var r=e.lockScalingX,n=e.lockScalingY;return!((!r||!n)&&(t||!r&&!n||!i)&&(!r||"x"!==t)&&(!n||"y"!==t))}function v(e,t,i,r){return{e,transform:t,pointer:{x:i,y:r}}}function y(e){return function(t,i,r,n){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),l=e(t,i,r,n);return s.setPositionByOrigin(a,i.originX,i.originY),l}}function S(e,t){return function(i,r,n,s){var o=t(i,r,n,s);return o&&g(e,v(i,r,n,s)),o}}function b(e,i,r,n,s){var o=e.target,a=o.controls[e.corner],l=o.canvas.getZoom(),h=o.padding/l,c=o.toLocalPoint(new t.Point(n,s),i,r);return c.x>=h&&(c.x-=h),c.x<=-h&&(c.x+=h),c.y>=h&&(c.y-=h),c.y<=h&&(c.y+=h),c.x-=a.offsetX,c.y-=a.offsetY,c}function C(e){return e.flipX!==e.flipY}function w(e,t,i,r,n){if(0!==e[t]){var s=n/e._getTransformedDimensions()[r]*e[i];e.set(i,s)}}function T(e,t,i,r){var n,h=t.target,c=h._getTransformedDimensions(0,h.skewY),d=b(t,t.originX,t.originY,i,r),f=Math.abs(2*d.x)-c.x,g=h.skewX;f<2?n=0:(n=u(Math.atan2(f/h.scaleX,c.y/h.scaleY)),t.originX===s&&t.originY===l&&(n=-n),t.originX===a&&t.originY===o&&(n=-n),C(h)&&(n=-n));var _=g!==n;if(_){var p=h._getTransformedDimensions().y;h.set("skewX",n),w(h,"skewY","scaleY","y",p)}return _}function x(e,t,i,r){var n,h=t.target,c=h._getTransformedDimensions(h.skewX,0),d=b(t,t.originX,t.originY,i,r),f=Math.abs(2*d.y)-c.y,g=h.skewY;f<2?n=0:(n=u(Math.atan2(f/h.scaleY,c.x/h.scaleX)),t.originX===s&&t.originY===l&&(n=-n),t.originX===a&&t.originY===o&&(n=-n),C(h)&&(n=-n));var _=g!==n;if(_){var p=h._getTransformedDimensions().x;h.set("skewY",n),w(h,"skewX","scaleX","x",p)}return _}function A(e,t,i,r,n){n=n||{};var s,o,a,l,h,u,f=t.target,g=f.lockScalingX,v=f.lockScalingY,y=n.by,S=_(e,f),C=m(f,y,S),w=t.gestureScale;if(C)return!1;if(w)o=t.scaleX*w,a=t.scaleY*w;else{if(s=b(t,t.originX,t.originY,i,r),h="y"!==y?d(s.x):1,u="x"!==y?d(s.y):1,t.signX||(t.signX=h),t.signY||(t.signY=u),f.lockScalingFlip&&(t.signX!==h||t.signY!==u))return!1;if(l=f._getTransformedDimensions(),S&&!y){var T=Math.abs(s.x)+Math.abs(s.y),x=t.original,A=T/(Math.abs(l.x*x.scaleX/f.scaleX)+Math.abs(l.y*x.scaleY/f.scaleY));o=x.scaleX*A,a=x.scaleY*A}else o=Math.abs(s.x*f.scaleX/l.x),a=Math.abs(s.y*f.scaleY/l.y);p(t)&&(o*=2,a*=2),t.signX!==h&&"y"!==y&&(t.originX=c[t.originX],o*=-1,t.signX=h),t.signY!==u&&"x"!==y&&(t.originY=c[t.originY],a*=-1,t.signY=u)}var O=f.scaleX,I=f.scaleY;return y?("x"===y&&f.set("scaleX",o),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!v&&f.set("scaleY",a)),O!==f.scaleX||I!==f.scaleY}n.scaleCursorStyleHandler=function(e,t,r){var n=_(e,r),s="";if(0!==t.x&&0===t.y?s="x":0===t.x&&0!==t.y&&(s="y"),m(r,s,n))return"not-allowed";var o=f(r,t);return i[o]+"-resize"},n.skewCursorStyleHandler=function(e,t,i){var n="not-allowed";if(0!==t.x&&i.lockSkewingY)return n;if(0!==t.y&&i.lockSkewingX)return n;var s=f(i,t)%4;return r[s]+"-resize"},n.scaleSkewCursorStyleHandler=function(e,t,i){return e[i.canvas.altActionKey]?n.skewCursorStyleHandler(e,t,i):n.scaleCursorStyleHandler(e,t,i)},n.rotationWithSnapping=S("rotating",y((function(e,t,i,r){var n=t,s=n.target,o=s.translateToOriginPoint(s.getCenterPoint(),n.originX,n.originY);if(s.lockRotation)return!1;var a,l=Math.atan2(n.ey-o.y,n.ex-o.x),h=Math.atan2(r-o.y,i-o.x),c=u(h-l+n.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,_=Math.floor(c/d)*d;Math.abs(c-_)0?s:a:(c>0&&(n=u===o?s:a),c<0&&(n=u===o?a:s),C(l)&&(n=n===s?a:s)),t.originX=n,S("skewing",y(T))(e,t,i,r))},n.skewHandlerY=function(e,t,i,r){var n,a=t.target,c=a.skewY,u=t.originX;return!a.lockSkewingY&&(0===c?n=b(t,h,h,i,r).y>0?o:l:(c>0&&(n=u===s?o:l),c<0&&(n=u===s?l:o),C(a)&&(n=n===o?l:o)),t.originY=n,S("skewing",y(x))(e,t,i,r))},n.dragHandler=function(e,t,i,r){var n=t.target,s=i-t.offsetX,o=r-t.offsetY,a=!n.get("lockMovementX")&&n.left!==s,l=!n.get("lockMovementY")&&n.top!==o;return a&&n.set("left",s),l&&n.set("top",o),(a||l)&&g("moving",v(e,t,i,r)),a||l},n.scaleOrSkewActionName=function(e,t,i){var r=e[i.canvas.altActionKey];return 0===t.x?r?"skewX":"scaleY":0===t.y?r?"skewY":"scaleX":void 0},n.rotationStyleHandler=function(e,t,i){return i.lockRotation?"not-allowed":t.cursorStyle},n.fireEvent=g,n.wrapWithFixedAnchor=y,n.wrapWithFireEvent=S,n.getLocalPoint=b,t.controlsUtils=n}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.degreesToRadians,r=t.controlsUtils;r.renderCircleControl=function(e,t,i,r,n){r=r||{};var s,o=this.sizeX||r.cornerSize||n.cornerSize,a=this.sizeY||r.cornerSize||n.cornerSize,l=void 0!==r.transparentCorners?r.transparentCorners:n.transparentCorners,h=l?"stroke":"fill",c=!l&&(r.cornerStrokeColor||n.cornerStrokeColor),u=t,d=i;e.save(),e.fillStyle=r.cornerColor||n.cornerColor,e.strokeStyle=r.cornerStrokeColor||n.cornerStrokeColor,o>a?(s=o,e.scale(1,a/o),d=i*o/a):a>o?(s=a,e.scale(o/a,1),u=t*a/o):s=o,e.lineWidth=1,e.beginPath(),e.arc(u,d,s/2,0,2*Math.PI,!1),e[h](),c&&e.stroke(),e.restore()},r.renderSquareControl=function(e,t,r,n,s){n=n||{};var o=this.sizeX||n.cornerSize||s.cornerSize,a=this.sizeY||n.cornerSize||s.cornerSize,l=void 0!==n.transparentCorners?n.transparentCorners:s.transparentCorners,h=l?"stroke":"fill",c=!l&&(n.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;e.save(),e.fillStyle=n.cornerColor||s.cornerColor,e.strokeStyle=n.cornerStrokeColor||s.cornerStrokeColor,e.lineWidth=1,e.translate(t,r),e.rotate(i(s.angle)),e[h+"Rect"](-u,-d,o,a),c&&e.strokeRect(-u,-d,o,a),e.restore()}}(t),function(e){var t=e.fabric||(e.fabric={});t.Control=function(e){for(var t in e)this[t]=e[t]},t.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(e,t){return t.cursorStyle},getActionName:function(e,t){return t.actionName},getVisibility:function(e,t){var i=e._controlsVisibility;return i&&void 0!==i[t]?i[t]:this.visible},setVisibility:function(e){this.visible=e},positionHandler:function(e,i){return t.util.transformPoint({x:this.x*e.x+this.offsetX,y:this.y*e.y+this.offsetY},i)},calcCornerCoords:function(e,i,r,n,s){var o,a,l,h,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-t.util.degreesToRadians(e),_=Math.PI/2-d-t.util.degreesToRadians(e);o=f*t.util.cos(g),a=f*t.util.sin(g),l=f*t.util.cos(_),h=f*t.util.sin(_)}else f=.7071067812*(c&&u?c:i),g=t.util.degreesToRadians(45-e),o=l=f*t.util.cos(g),a=h=f*t.util.sin(g);return{tl:{x:r-h,y:n-l},tr:{x:r+o,y:n-a},bl:{x:r-o,y:n+a},br:{x:r+h,y:n+l}}},render:function(e,i,r,n,s){"circle"===((n=n||{}).cornerStyle||s.cornerStyle)?t.controlsUtils.renderCircleControl.call(this,e,i,r,n,s):t.controlsUtils.renderSquareControl.call(this,e,i,r,n,s)}}}(t),function(){function e(e,t){var i,r,n,s,o=e.getAttribute("style"),a=e.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var l=o.split(/\s*;\s*/);for(""===l[l.length-1]&&l.pop(),s=l.length;s--;){var h=l[s].split(/\s*:\s*/),c=h[0].trim(),u=h[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(n=u)}}return i||(i=e.getAttribute("stop-color")||"rgb(0,0,0)"),n||(n=e.getAttribute("stop-opacity")),r=(i=new T.Color(i)).getAlpha(),n=isNaN(parseFloat(n))?1:parseFloat(n),n*=r*t,{offset:a,color:i.toRgb(),opacity:n}}var t=T.util.object.clone;T.Gradient=T.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(e){e||(e={}),e.coords||(e.coords={});var t,i=this;Object.keys(e).forEach((function(t){i[t]=e[t]})),this.id?this.id+="_"+T.Object.__uid++:this.id=T.Object.__uid++,t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},"radial"===this.type&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.colorStops=e.colorStops.slice()},addColorStop:function(e){for(var t in e){var i=new T.Color(e[t]);this.colorStops.push({offset:parseFloat(t),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(e){var t={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return T.util.populateWithProperties(this,t,e),t},toSVG:function(e,i){var r,n,s,o,a=t(this.coords,!0),l=(i=i||{},t(this.colorStops,!0)),h=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():T.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(l.sort((function(e,t){return e.offset-t.offset})),"objectBoundingBox"===g?(u/=e.width,d/=e.height):(u+=e.width/2,d+=e.height/2),"path"===e.type&&"percentage"!==this.gradientUnits&&(u-=e.pathOffset.x,d-=e.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+T.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(h)for((l=l.concat()).reverse(),r=0,n=l.length;r0){var p=_/Math.max(a.r1,a.r2);for(r=0,n=l.length;r\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(e){var t,i,r,n=T.util.object.clone(this.coords);if(this.type){for("linear"===this.type?t=e.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(t=e.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2)),i=0,r=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,l,h,c=t.getElementsByTagName("stop"),u="userSpaceOnUse"===t.getAttribute("gradientUnits")?"pixels":"percentage",d=t.getAttribute("gradientTransform")||"",f=[],g=0,_=0;for("linearGradient"===t.nodeName||"LINEARGRADIENT"===t.nodeName?(o="linear",a=function(e){return{x1:e.getAttribute("x1")||0,y1:e.getAttribute("y1")||0,x2:e.getAttribute("x2")||"100%",y2:e.getAttribute("y2")||0}}(t)):(o="radial",a=function(e){return{x1:e.getAttribute("fx")||e.getAttribute("cx")||"50%",y1:e.getAttribute("fy")||e.getAttribute("cy")||"50%",r1:0,x2:e.getAttribute("cx")||"50%",y2:e.getAttribute("cy")||"50%",r2:e.getAttribute("r")||"50%"}}(t)),l=c.length;l--;)f.push(e(c[l],s));return h=T.parseTransformAttribute(d),function(e,t,i,r){var n,s;Object.keys(t).forEach((function(e){"Infinity"===(n=t[e])?s=1:"-Infinity"===n?s=0:(s=parseFloat(t[e],10),"string"==typeof n&&/^(\d+\.\d+)%|(\d+)%$/.test(n)&&(s*=.01,"pixels"===r&&("x1"!==e&&"x2"!==e&&"r2"!==e||(s*=i.viewBoxWidth||i.width),"y1"!==e&&"y2"!==e||(s*=i.viewBoxHeight||i.height)))),t[e]=s}))}(0,a,n,u),"pixels"===u&&(g=-i.left,_=-i.top),new T.Gradient({id:t.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:h,offsetX:g,offsetY:_})}})}(),m=T.util.toFixed,T.Pattern=T.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(e,t){if(e||(e={}),this.id=T.Object.__uid++,this.setOptions(e),!e.source||e.source&&"string"!=typeof e.source)t&&t(this);else{var i=this;this.source=T.util.createImage(),T.util.loadImage(e.source,(function(e,r){i.source=e,t&&t(i,r)}),null,this.crossOrigin)}},toObject:function(e){var t,i,r=T.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?t=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(t=this.source.toDataURL()),i={type:"pattern",source:t,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:m(this.offsetX,r),offsetY:m(this.offsetY,r),patternTransform:this.patternTransform?this.patternTransform.concat():null},T.util.populateWithProperties(this,i,e),i},toSVG:function(e){var t="function"==typeof this.source?this.source():this.source,i=t.width/e.width,r=t.height/e.height,n=this.offsetX/e.width,s=this.offsetY/e.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,s&&(r+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,n&&(i+=Math.abs(n))),t.src?o=t.src:t.toDataURL&&(o=t.toDataURL()),'\n\n\n'},setOptions:function(e){for(var t in e)this[t]=e[t]},toLive:function(e){var t=this.source;if(!t)return"";if(void 0!==t.src){if(!t.complete)return"";if(0===t.naturalWidth||0===t.naturalHeight)return""}return e.createPattern(t,this.repeat)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.toFixed;t.Shadow?t.warn("fabric.Shadow is already defined."):(t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(e){for(var i in"string"==typeof e&&(e=this._parseShadow(e)),e)this[i]=e[i];this.id=t.Object.__uid++},_parseShadow:function(e){var i=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var r=40,n=40,s=t.Object.NUM_FRACTION_DIGITS,o=t.util.rotateVector({x:this.offsetX,y:this.offsetY},t.util.degreesToRadians(-e.angle)),a=new t.Color(this.color);return e.width&&e.height&&(r=100*i((Math.abs(o.x)+this.blur)/e.width,s)+20,n=100*i((Math.abs(o.y)+this.blur)/e.height,s)+20),e.flipX&&(o.x*=-1),e.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var e={},i=t.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(t){this[t]!==i[t]&&(e[t]=this[t])}),this),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(t),function(){if(T.StaticCanvas)T.warn("fabric.StaticCanvas is already defined.");else{var e=T.util.object.extend,t=T.util.getElementOffset,i=T.util.removeFromArray,r=T.util.toFixed,n=T.util.transformPoint,s=T.util.invertTransform,o=T.util.getNodeCanvas,a=T.util.createCanvasElement,l=new Error("Could not initialize `canvas` element");T.StaticCanvas=T.util.createClass(T.CommonMethods,{initialize:function(e,t){t||(t={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(e,t)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:T.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(e,t){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(e),this._initOptions(t),this.interactive||this._initRetinaScaling(),t.overlayImage&&this.setOverlayImage(t.overlayImage,i),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,i),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,i),t.overlayColor&&this.setOverlayColor(t.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return T.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,T.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var e=T.devicePixelRatio;this.__initRetinaScaling(e,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(e,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(e,t,i){t.setAttribute("width",this.width*e),t.setAttribute("height",this.height*e),i.scale(e,e)},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,i){return this.__setBgOverlayImage("overlayImage",e,t,i)},setBackgroundImage:function(e,t,i){return this.__setBgOverlayImage("backgroundImage",e,t,i)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,i,r){return"string"==typeof t?T.util.loadImage(t,(function(t,n){if(t){var s=new T.Image(t,r);this[e]=s,s.canvas=this}i&&i(t,n)}),this,r&&r.crossOrigin):(r&&t.setOptions(r),this[e]=t,t&&(t.canvas=this),i&&i(t,!1)),this},__setBgOverlayColor:function(e,t,i){return this[e]=t,this._initGradient(t,e),this._initPattern(t,e,i),this},_createCanvasElement:function(){var e=a();if(!e)throw l;if(e.style||(e.style={}),void 0===e.getContext)throw l;return e},_initOptions:function(e){var t=this.lowerCanvasEl;this._setOptions(e),this.width=this.width||parseInt(t.width,10)||0,this.height=this.height||parseInt(t.height,10)||0,this.lowerCanvasEl.style&&(t.width=this.width,t.height=this.height,t.style.width=this.width+"px",t.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(e){e&&e.getContext?this.lowerCanvasEl=e:this.lowerCanvasEl=T.util.getById(e)||this._createCanvasElement(),T.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e,t){return this.setDimensions({width:e},t)},setHeight:function(e,t){return this.setDimensions({height:e},t)},setDimensions:function(e,t){var i;for(var r in t=t||{},e)i=e[r],t.cssOnly||(this._setBackstoreDimension(r,e[r]),i+="px",this.hasLostContext=!0),t.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),t.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.upperCanvasEl&&(this.upperCanvasEl[e]=t),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this[e]=t,this},_setCssDimension:function(e,t){return this.lowerCanvasEl.style[e]=t,this.upperCanvasEl&&(this.upperCanvasEl.style[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(e){var t,i,r,n=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=e,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",t),this._setSVGObjects(i,t),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",t),i.push(""),i.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('\n','\n')},_setSVGHeader:function(e,t){var i,n=t.width||this.width,s=t.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=T.Object.NUM_FRACTION_DIGITS;t.viewBox?o='viewBox="'+t.viewBox.x+" "+t.viewBox.y+" "+t.viewBox.width+" "+t.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),e.push("\n',"Created with Fabric.js ",T.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(t),"\n")},createSVGClipPathMarkup:function(e){var t=this.clipPath;return t?(t.clipPathId="CLIPPATH_"+T.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(e.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var e=this;return["background","overlay"].map((function(t){var i=e[t+"Color"];if(i&&i.toLive){var r=e[t+"Vpt"],n=e.viewportTransform,s={width:e.width/(r?n[0]:1),height:e.height/(r?n[3]:1)};return i.toSVG(s,{additionalTransform:r?T.util.matrixToSVG(n):""})}})).join("")},createSVGFontFacesMarkup:function(){var e,t,i,r,n,s,o,a,l="",h={},c=T.fontPaths,u=[];for(this._objects.forEach((function e(t){u.push(t),t._objects&&t._objects.forEach(e)})),o=0,a=u.length;o',"\n",l,"","\n"].join("")),l},_setSVGObjects:function(e,t){var i,r,n,s=this._objects;for(r=0,n=s.length;r\n")}else e.push('\n")},sendToBack:function(e){if(!e)return this;var t,r,n,s=this._activeObject;if(e===s&&"activeSelection"===e.type)for(t=(n=s._objects).length;t--;)r=n[t],i(this._objects,r),this._objects.unshift(r);else i(this._objects,e),this._objects.unshift(e);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(e){if(!e)return this;var t,r,n,s=this._activeObject;if(e===s&&"activeSelection"===e.type)for(n=s._objects,t=0;t0+h&&(o=s-1,i(this._objects,n),this._objects.splice(o,0,n)),h++;else 0!==(s=this._objects.indexOf(e))&&(o=this._findNewLowerIndex(e,s,t),i(this._objects,e),this._objects.splice(o,0,e));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(e,t,i){var r,n;if(i){for(r=t,n=t-1;n>=0;--n)if(e.intersectsWithObject(this._objects[n])||e.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(e)){r=n;break}}else r=t-1;return r},bringForward:function(e,t){if(!e)return this;var r,n,s,o,a,l=this._activeObject,h=0;if(e===l&&"activeSelection"===e.type)for(r=(a=l._objects).length;r--;)n=a[r],(s=this._objects.indexOf(n))"}}),e(T.StaticCanvas.prototype,T.Observable),e(T.StaticCanvas.prototype,T.Collection),e(T.StaticCanvas.prototype,T.DataURLExporter),e(T.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=a();if(!t||!t.getContext)return null;var i=t.getContext("2d");return i&&"setLineDash"===e?void 0!==i.setLineDash:null}}),T.StaticCanvas.prototype.toJSON=T.StaticCanvas.prototype.toObject,T.isLikelyNode&&(T.StaticCanvas.prototype.createPNGStream=function(){var e=o(this.lowerCanvasEl);return e&&e.createPNGStream()},T.StaticCanvas.prototype.createJPEGStream=function(e){var t=o(this.lowerCanvasEl);return t&&t.createJPEGStream(e)})}}(),T.BaseBrush=T.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(e){e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.miterLimit=this.strokeMiterLimit,e.lineJoin=this.strokeLineJoin,e.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(e){var t=this.canvas.viewportTransform;e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5])},_setShadow:function(){if(this.shadow){var e=this.canvas,t=this.shadow,i=e.contextTop,r=e.getZoom();e&&e._isRetinaScaling()&&(r*=T.devicePixelRatio),i.shadowColor=t.color,i.shadowBlur=t.blur*r,i.shadowOffsetX=t.offsetX*r,i.shadowOffsetY=t.offsetY*r}},needsFullRender:function(){return new T.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_isOutSideCanvas:function(e){return e.x<0||e.x>this.canvas.getWidth()||e.y<0||e.y>this.canvas.getHeight()}}),T.PencilBrush=T.util.createClass(T.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(e){this.canvas=e,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(e,t,i){var r=t.midPointFrom(i);return e.quadraticCurveTo(t.x,t.y,r.x,r.y),r},onMouseDown:function(e,t){this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],this._prepareForDrawing(e),this._captureDrawingPath(e),this._render())},onMouseMove:function(e,t){if(this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(e))&&this._captureDrawingPath(e)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,r=i.length,n=this.canvas.contextTop;this._saveAndTransform(n),this.oldEnd&&(n.beginPath(),n.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(n,i[r-2],i[r-1],!0),n.stroke(),n.restore()}},onMouseUp:function(e){return!this.canvas._isMainEvent(e.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(e){var t=new T.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){return!(this._points.length>1&&e.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(e),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(e){var t=new T.Point(e.x,e.y);return this._addPoint(t)},_render:function(e){var t,i,r=this._points[0],n=this._points[1];if(e=e||this.canvas.contextTop,this._saveAndTransform(e),e.beginPath(),2===this._points.length&&r.x===n.x&&r.y===n.y){var s=this.width/1e3;r=new T.Point(r.x,r.y),n=new T.Point(n.x,n.y),r.x-=s,n.x+=s}for(e.moveTo(r.x,r.y),t=1,i=this._points.length;t=n&&(o=e[i],a.push(o));return a.push(e[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var e=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(e))this.canvas.requestRenderAll();else{var t=this.createPath(e);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:t}),this.canvas.add(t),this.canvas.requestRenderAll(),t.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:t})}}}),T.CircleBrush=T.util.createClass(T.BaseBrush,{width:10,initialize:function(e){this.canvas=e,this.points=[]},drawDot:function(e){var t=this.addPoint(e),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,t),i.restore()},dot:function(e,t){e.fillStyle=t.fill,e.beginPath(),e.arc(t.x,t.y,t.radius,0,2*Math.PI,!1),e.closePath(),e.fill()},onMouseDown:function(e){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(e)},_render:function(){var e,t,i=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(i),e=0,t=r.length;e0&&!this.preserveObjectStacking){t=[],i=[];for(var n=0,s=this._objects.length;n1&&(this._activeObject._objects=i),t.push.apply(t,i)}else t=this._objects;return t},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var e=this.contextContainer;return this.renderCanvas(e,this._chooseObjectsToRender()),this},renderTopLayer:function(e){e.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(e),this.contextTopDirty=!0),e.restore()},renderTop:function(){var e=this.contextTop;return this.clearContext(e),this.renderTopLayer(e),this.fire("after:render"),this},_normalizePointer:function(e,t){var i=e.calcTransformMatrix(),r=T.util.invertTransform(i),n=this.restorePointerVpt(t);return T.util.transformPoint(n,r)},isTargetTransparent:function(e,t,i){if(e.shouldCache()&&e._cacheCanvas&&e!==this._activeObject){var r=this._normalizePointer(e,{x:t,y:i}),n=Math.max(e.cacheTranslationX+r.x*e.zoomX,0),s=Math.max(e.cacheTranslationY+r.y*e.zoomY,0);return T.util.isTransparent(e._cacheContext,Math.round(n),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=e.selectionBackgroundColor,l=this.viewportTransform;return e.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(l[0],l[1],l[2],l[3],l[4],l[5]),e.render(o),o.restore(),e.selectionBackgroundColor=a,T.util.isTransparent(o,t,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(e){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(t){return!0===e[t]})):e[this.selectionKey]},_shouldClearSelection:function(e,t){var i=this.getActiveObjects(),r=this._activeObject;return!t||t&&r&&i.length>1&&-1===i.indexOf(t)&&r!==t&&!this._isSelectionKeyPressed(e)||t&&!t.evented||t&&!t.selectable&&r&&r!==t},_shouldCenterTransform:function(e,t,i){var r;if(e)return"scale"===t||"scaleX"===t||"scaleY"===t||"resizing"===t?r=this.centeredScaling||e.centeredScaling:"rotate"===t&&(r=this.centeredRotation||e.centeredRotation),r?!i:i},_getOriginFromCorner:function(e,t){var i={x:e.originX,y:e.originY};return"ml"===t||"tl"===t||"bl"===t?i.x="right":"mr"!==t&&"tr"!==t&&"br"!==t||(i.x="left"),"tl"===t||"mt"===t||"tr"===t?i.y="bottom":"bl"!==t&&"mb"!==t&&"br"!==t||(i.y="top"),i},_getActionFromCorner:function(e,t,i,r){if(!t||!e)return"drag";var n=r.controls[t];return n.getActionName(i,n,r)},_setupCurrentTransform:function(e,i,r){if(i){var n=this.getPointer(e),s=i.__corner,o=i.controls[s],a=r&&s?o.getActionHandler(e,i,o):T.controlsUtils.dragHandler,l=this._getActionFromCorner(r,s,e,i),h=this._getOriginFromCorner(i,s),c=e[this.centeredKey],u={target:i,action:l,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:n.x-i.left,offsetY:n.y-i.top,originX:h.x,originY:h.y,ex:n.x,ey:n.y,lastX:n.x,lastY:n.y,theta:t(i.angle),width:i.width*i.scaleX,shiftKey:e.shiftKey,altKey:c,original:T.util.saveObjectTransform(i)};this._shouldCenterTransform(i,l,c)&&(u.originX="center",u.originY="center"),u.original.originX=h.x,u.original.originY=h.y,this._currentTransform=u,this._beforeTransform(e)}},setCursor:function(e){this.upperCanvasEl.style.cursor=e},_drawSelection:function(e){var t=this._groupSelector,i=new T.Point(t.ex,t.ey),r=T.util.transformPoint(i,this.viewportTransform),n=new T.Point(t.ex+t.left,t.ey+t.top),s=T.util.transformPoint(n,this.viewportTransform),o=Math.min(r.x,s.x),a=Math.min(r.y,s.y),l=Math.max(r.x,s.x),h=Math.max(r.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(e.fillStyle=this.selectionColor,e.fillRect(o,a,l-o,h-a)),this.selectionLineWidth&&this.selectionBorderColor&&(e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor,o+=c,a+=c,l-=c,h-=c,T.Object.prototype._setLineDash.call(this,e,this.selectionDashArray),e.strokeRect(o,a,l-o,h-a))},findTarget:function(e,t){if(!this.skipTargetFind){var r,n,s=this.getPointer(e,!0),o=this._activeObject,a=this.getActiveObjects(),l=i(e),h=a.length>1&&!t||1===a.length;if(this.targets=[],h&&o._findTargetCorner(s,l))return o;if(a.length>1&&!t&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;r=o,n=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return e[this.altSelectionKey]&&c&&r&&c!==r&&(c=r,this.targets=n),c}},_checkTarget:function(e,t,i){if(t&&t.visible&&t.evented&&t.containsPoint(e)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing)return!0;if(!this.isTargetTransparent(t,i.x,i.y))return!0}},_searchPossibleTargets:function(e,t){for(var i,r,n=e.length;n--;){var s=e[n],o=s.group?this._normalizePointer(s.group,t):t;if(this._checkTarget(o,s,t)){(i=e[n]).subTargetCheck&&i instanceof T.Group&&(r=this._searchPossibleTargets(i._objects,t))&&this.targets.push(r);break}}return i},restorePointerVpt:function(e){return T.util.transformPoint(e,T.util.invertTransform(this.viewportTransform))},getPointer:function(t,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var r,n=e(t),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,l=o.height||0;a&&l||("top"in o&&"bottom"in o&&(l=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,i||(n=this.restorePointerVpt(n));var h=this.getRetinaScaling();return 1!==h&&(n.x/=h,n.y/=h),r=0===a||0===l?{width:1,height:1}:{width:s.width/a,height:s.height/l},{x:n.x*r.width,y:n.y*r.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),t=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),T.util.addClass(i,"upper-canvas "+e),this.wrapperEl.appendChild(i),this._copyCanvasStyle(t,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=T.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),T.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),T.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(e){var t=this.width||e.width,i=this.height||e.height;T.util.setStyle(e,{position:"absolute",width:t+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),e.width=t,e.height=i,T.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var e=this._activeObject;return e?"activeSelection"===e.type&&e._objects?e._objects.slice(0):[e]:[]},_onObjectRemoved:function(e){e===this._activeObject&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared",{target:e}),e.fire("deselected")),e===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",e)},_fireSelectionEvents:function(e,t){var i=!1,r=this.getActiveObjects(),n=[],s=[];e.forEach((function(e){-1===r.indexOf(e)&&(i=!0,e.fire("deselected",{e:t,target:e}),s.push(e))})),r.forEach((function(r){-1===e.indexOf(r)&&(i=!0,r.fire("selected",{e:t,target:r}),n.push(r))})),e.length>0&&r.length>0?i&&this.fire("selection:updated",{e:t,selected:n,deselected:s}):r.length>0?this.fire("selection:created",{e:t,selected:n}):e.length>0&&this.fire("selection:cleared",{e:t,deselected:s})},setActiveObject:function(e,t){var i=this.getActiveObjects();return this._setActiveObject(e,t),this._fireSelectionEvents(i,t),this},_setActiveObject:function(e,t){return this._activeObject!==e&&!!this._discardActiveObject(t,e)&&!e.onSelect({e:t})&&(this._activeObject=e,!0)},_discardActiveObject:function(e,t){var i=this._activeObject;if(i){if(i.onDeselect({e,object:t}))return!1;this._activeObject=null}return!0},discardActiveObject:function(e){var t=this.getActiveObjects(),i=this.getActiveObject();return t.length&&this.fire("before:selection:cleared",{target:i,e}),this._discardActiveObject(e),this._fireSelectionEvents(t,e),this},dispose:function(){var e=this.wrapperEl;return this.removeListeners(),e.removeChild(this.upperCanvasEl),e.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(e){T.util.cleanUpJsdomNode(this[e]),this[e]=void 0}.bind(this)),e.parentNode&&e.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,T.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(e){var t=this._activeObject;t&&t._renderControls(e)},_toObject:function(e,t,i){var r=this._realizeGroupTransformOnObject(e),n=this.callSuper("_toObject",e,t,i);return this._unwindGroupTransformOnObject(e,r),n},_realizeGroupTransformOnObject:function(e){if(e.group&&"activeSelection"===e.group.type&&this._activeObject===e.group){var t={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){t[i]=e[i]})),T.util.addTransformToObject(e,this._activeObject.calcOwnMatrix()),t}return null},_unwindGroupTransformOnObject:function(e,t){t&&e.set(t)},_setSVGObject:function(e,t,i){var r=this._realizeGroupTransformOnObject(t);this.callSuper("_setSVGObject",e,t,i),this._unwindGroupTransformOnObject(t,r)},setViewportTransform:function(e){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),T.StaticCanvas.prototype.setViewportTransform.call(this,e)}}),T.StaticCanvas)"prototype"!==r&&(T.Canvas[r]=T.StaticCanvas[r])}(),function(){var e=T.util.addListener,t=T.util.removeListener,i={passive:!1};function r(e,t){return e.button&&e.button===t-1}T.util.object.extend(T.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(e,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(e,t){var r=this.upperCanvasEl,n=this._getEventPrefix();e(T.window,"resize",this._onResize),e(r,n+"down",this._onMouseDown),e(r,n+"move",this._onMouseMove,i),e(r,n+"out",this._onMouseOut),e(r,n+"enter",this._onMouseEnter),e(r,"wheel",this._onMouseWheel),e(r,"contextmenu",this._onContextMenu),e(r,"dblclick",this._onDoubleClick),e(r,"dragover",this._onDragOver),e(r,"dragenter",this._onDragEnter),e(r,"dragleave",this._onDragLeave),e(r,"drop",this._onDrop),this.enablePointerEvents||e(r,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&t in eventjs&&(eventjs[t](r,"gesture",this._onGesture),eventjs[t](r,"drag",this._onDrag),eventjs[t](r,"orientation",this._onOrientationChange),eventjs[t](r,"shake",this._onShake),eventjs[t](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(t,"remove");var e=this._getEventPrefix();t(T.document,e+"up",this._onMouseUp),t(T.document,"touchend",this._onTouchEnd,i),t(T.document,e+"move",this._onMouseMove,i),t(T.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(e,t){this.__onTransformGesture&&this.__onTransformGesture(e,t)},_onDrag:function(e,t){this.__onDrag&&this.__onDrag(e,t)},_onMouseWheel:function(e){this.__onMouseWheel(e)},_onMouseOut:function(e){var t=this._hoveredTarget;this.fire("mouse:out",{target:t,e}),this._hoveredTarget=null,t&&t.fire("mouseout",{e});var i=this;this._hoveredTargets.forEach((function(r){i.fire("mouse:out",{target:t,e}),r&&t.fire("mouseout",{e})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(e){e.isEditing&&e.hiddenTextarea.focus()}))},_onMouseEnter:function(e){this._currentTransform||this.findTarget(e)||(this.fire("mouse:over",{target:null,e}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(e,t){this.__onOrientationChange&&this.__onOrientationChange(e,t)},_onShake:function(e,t){this.__onShake&&this.__onShake(e,t)},_onLongPress:function(e,t){this.__onLongPress&&this.__onLongPress(e,t)},_onDragOver:function(e){e.preventDefault();var t=this._simpleEventHandler("dragover",e);this._fireEnterLeaveEvents(t,e)},_onDrop:function(e){return this._simpleEventHandler("drop:before",e),this._simpleEventHandler("drop",e)},_onContextMenu:function(e){return this.stopContextMenu&&(e.stopPropagation(),e.preventDefault()),!1},_onDoubleClick:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"dblclick"),this._resetTransformEventData(e)},getPointerId:function(e){var t=e.changedTouches;return t?t[0]&&t[0].identifier:this.enablePointerEvents?e.pointerId:-1},_isMainEvent:function(e){return!0===e.isPrimary||!1!==e.isPrimary&&("touchend"===e.type&&0===e.touches.length||!e.changedTouches||e.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();e(T.document,"touchend",this._onTouchEnd,i),e(T.document,"touchmove",this._onMouseMove,i),t(n,s+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();t(n,s+"move",this._onMouseMove,i),e(T.document,s+"up",this._onMouseUp),e(T.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var n=this._getEventPrefix();t(T.document,"touchend",this._onTouchEnd,i),t(T.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){e(s.upperCanvasEl,n+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(r)&&(t(T.document,s+"up",this._onMouseUp),t(T.document,s+"move",this._onMouseMove,i),e(n,s+"move",this._onMouseMove,i))},_onMouseMove:function(e){!this.allowTouchScrolling&&e.preventDefault&&e.preventDefault(),this.__onMouseMove(e)},_onResize:function(){this.calcOffset()},_shouldRender:function(e){var t=this._activeObject;return!!(!!t!=!!e||t&&e&&t!==e)||(t&&t.isEditing,!1)},__onMouseUp:function(e){var t,i=this._currentTransform,n=this._groupSelector,s=!1,o=!n||0===n.left&&0===n.top;if(this._cacheTransformEventData(e),t=this._target,this._handleEvent(e,"up:before"),r(e,3))this.fireRightClick&&this._handleEvent(e,"up",3,o);else{if(r(e,2))return this.fireMiddleClick&&this._handleEvent(e,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(e);else if(this._isMainEvent(e)){if(i&&(this._finalizeCurrentTransform(e),s=i.actionPerformed),!o){var a=t===this._activeObject;this._maybeGroupObjects(e),s||(s=this._shouldRender(t)||!a&&t===this._activeObject)}var l,h;if(t){if(l=t._findTargetCorner(this.getPointer(e,!0),T.util.isTouchEvent(e)),t.selectable&&t!==this._activeObject&&"up"===t.activeOn)this.setActiveObject(t,e),s=!0;else{var c=t.controls[l],u=c&&c.getMouseUpHandler(e,t,c);u&&u(e,i,(h=this.getPointer(e)).x,h.y)}t.isMoving=!1}if(i&&(i.target!==t||i.corner!==l)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(e,t,c);h=h||this.getPointer(e),f&&f(e,i,h.x,h.y)}this._setCursorFromEvent(e,t),this._handleEvent(e,"up",1,o),this._groupSelector=null,this._currentTransform=null,t&&(t.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(e,t){var i=this.findTarget(t),r=this.targets,n={e:t,target:i,subTargets:r};if(this.fire(e,n),i&&i.fire(e,n),!r)return i;for(var s=0;s1&&(t=new T.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(t,e))},_collectObjects:function(e){for(var t,i=[],r=this._groupSelector.ex,n=this._groupSelector.ey,s=r+this._groupSelector.left,o=n+this._groupSelector.top,a=new T.Point(v(r,s),v(n,o)),l=new T.Point(y(r,s),y(n,o)),h=!this.selectionFullyContained,c=r===s&&n===o,u=this._objects.length;u--&&!((t=this._objects[u])&&t.selectable&&t.visible&&(h&&t.intersectsWithRect(a,l,!0)||t.isContainedWithinRect(a,l,!0)||h&&t.containsPoint(a,null,!0)||h&&t.containsPoint(l,null,!0))&&(i.push(t),c)););return i.length>1&&(i=i.filter((function(t){return!t.onSelect({e})}))),i},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e),this.setCursor(this.defaultCursor),this._groupSelector=null}}),T.util.object.extend(T.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",i=e.quality||1,r=(e.multiplier||1)*(e.enableRetinaScaling?this.getRetinaScaling():1),n=this.toCanvasElement(r,e);return T.util.toDataURL(n,t,i)},toCanvasElement:function(e,t){e=e||1;var i=((t=t||{}).width||this.width)*e,r=(t.height||this.height)*e,n=this.getZoom(),s=this.width,o=this.height,a=n*e,l=this.viewportTransform,h=(l[4]-(t.left||0))*e,c=(l[5]-(t.top||0))*e,u=this.interactive,d=[a,0,0,a,h,c],f=this.enableRetinaScaling,g=T.util.createCanvasElement(),_=this.contextTop;return g.width=i,g.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=l,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=_,g}}),T.util.object.extend(T.StaticCanvas.prototype,{loadFromJSON:function(e,t,i){if(e){var r="string"==typeof e?JSON.parse(e):T.util.object.clone(e),n=this,s=r.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(e){n.clear(),n._setBgOverlay(r,(function(){s?n._enlivenObjects([s],(function(i){n.clipPath=i[0],n.__setupCanvas.call(n,r,e,o,t)})):n.__setupCanvas.call(n,r,e,o,t)}))}),i),this}},__setupCanvas:function(e,t,i,r){var n=this;t.forEach((function(e,t){n.insertAt(e,t)})),this.renderOnAddRemove=i,delete e.objects,delete e.backgroundImage,delete e.overlayImage,delete e.background,delete e.overlay,this._setOptions(e),this.renderAll(),r&&r()},_setBgOverlay:function(e,t){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(e.backgroundImage||e.overlayImage||e.background||e.overlay){var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&t&&t()};this.__setBgOverlay("backgroundImage",e.backgroundImage,i,r),this.__setBgOverlay("overlayImage",e.overlayImage,i,r),this.__setBgOverlay("backgroundColor",e.background,i,r),this.__setBgOverlay("overlayColor",e.overlay,i,r)}else t&&t()},__setBgOverlay:function(e,t,i,r){var n=this;if(!t)return i[e]=!0,void(r&&r());"backgroundImage"===e||"overlayImage"===e?T.util.enlivenObjects([t],(function(t){n[e]=t[0],i[e]=!0,r&&r()})):this["set"+T.util.string.capitalize(e,!0)](t,(function(){i[e]=!0,r&&r()}))},_enlivenObjects:function(e,t,i){e&&0!==e.length?T.util.enlivenObjects(e,(function(e){t&&t(e)}),null,i):t&&t([])},_toDataURL:function(e,t){this.clone((function(i){t(i.toDataURL(e))}))},_toDataURLWithMultiplier:function(e,t,i){this.clone((function(r){i(r.toDataURLWithMultiplier(e,t))}))},clone:function(e,t){var i=JSON.stringify(this.toJSON(t));this.cloneWithoutData((function(t){t.loadFromJSON(i,(function(){e&&e(t)}))}))},cloneWithoutData:function(e){var t=T.util.createCanvasElement();t.width=this.width,t.height=this.height;var i=new T.Canvas(t);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),e&&e(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):e&&e(i)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.object.clone,n=t.util.toFixed,s=t.util.string.capitalize,o=t.util.degreesToRadians,a=!t.isLikelyNode;t.Object||(t.Object=t.util.createClass(t.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(e){e&&this.setOptions(e)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=t.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(e){var i=t.perfLimitSizeTotal,r=e.width,n=e.height,s=t.maxCacheSideLimit,o=t.minCacheSideLimit;if(r<=s&&n<=s&&r*n<=i)return rc&&(e.zoomX/=r/c,e.width=c,e.capped=!0),n>u&&(e.zoomY/=n/u,e.height=u,e.capped=!0),e},_getCacheCanvasDimensions:function(){var e=this.getTotalObjectScaling(),t=this._getTransformedDimensions(0,0),i=t.x*e.scaleX/this.scaleX,r=t.y*e.scaleY/this.scaleY;return{width:i+2,height:r+2,zoomX:e.scaleX,zoomY:e.scaleY,x:i,y:r}},_updateCacheCanvas:function(){var e=this.canvas;if(this.noScaleCache&&e&&e._currentTransform){var i=e._currentTransform.target,r=e._currentTransform.action;if(this===i&&r.slice&&"scale"===r.slice(0,5))return!1}var n,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),l=t.minCacheSideLimit,h=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=h!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,_=f||g,p=0,m=0,v=!1;if(f){var y=this._cacheCanvas.width,S=this._cacheCanvas.height,b=h>y||c>S;v=b||(h<.9*y||c<.9*S)&&y>l&&S>l,b&&!a.capped&&(h>l||c>l)&&(p=.1*h,m=.1*c)}return this instanceof t.Text&&this.path&&(_=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,m+=this.getHeightOfLine(0)*this.zoomY),!!_&&(v?(o.width=Math.ceil(h+p),o.height=Math.ceil(c+m)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),n=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-n)+n,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=h,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(e){this._setOptions(e),this._initGradient(e.fill,"fill"),this._initGradient(e.stroke,"stroke"),this._initPattern(e.fill,"fill"),this._initPattern(e.stroke,"stroke")},transform:function(e){var t=this.group&&!this.group._transformDone||this.group&&this.canvas&&e===this.canvas.contextTop,i=this.calcTransformMatrix(!t);e.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(e){var i=t.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:t.version,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(e),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),t.util.populateWithProperties(this,r,e),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var i=t.util.getKlass(e.type).prototype;return i.stateProperties.forEach((function(t){"left"!==t&&"top"!==t&&(e[t]===i[t]&&delete e[t],Array.isArray(e[t])&&Array.isArray(i[t])&&0===e[t].length&&0===i[t].length&&delete e[t])})),e},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var e=t.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(e.scaleX),scaleY:Math.abs(e.scaleY)}},getTotalObjectScaling:function(){var e=this.getObjectScaling(),t=e.scaleX,i=e.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();t*=r*n,i*=r*n}return{scaleX:t,scaleY:i}},getObjectOpacity:function(){var e=this.opacity;return this.group&&(e*=this.group.getObjectOpacity()),e},_set:function(e,i){var r="scaleX"===e||"scaleY"===e,n=this[e]!==i,s=!1;return r&&(i=this._constrainScale(i)),"scaleX"===e&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===e&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==e||!i||i instanceof t.Shadow?"dirty"===e&&this.group&&this.group.set("dirty",i):i=new t.Shadow(i),this[e]=i,n&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(e)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(e)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:t.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(e){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(e.save(),this._setupCompositeOperation(e),this.drawSelectionBackground(e),this.transform(e),this._setOpacity(e),this._setShadow(e,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(e)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(e),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),e.restore())},renderCache:function(e){e=e||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,e.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(e,i){if(e.save(),i.inverted?e.globalCompositeOperation="destination-out":e.globalCompositeOperation="destination-in",i.absolutePositioned){var r=t.util.invertTransform(this.calcTransformMatrix());e.transform(r[0],r[1],r[2],r[3],r[4],r[5])}i.transform(e),e.scale(1/i.zoomX,1/i.zoomY),e.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),e.restore()},drawObject:function(e,t){var i=this.fill,r=this.stroke;t?(this.fill="black",this.stroke="",this._setClippingProperties(e)):this._renderBackground(e),this._render(e),this._drawClipPath(e,this.clipPath),this.fill=i,this.stroke=r},_drawClipPath:function(e,t){t&&(t.canvas=this.canvas,t.shouldCache(),t._transformDone=!0,t.renderCache({forClipping:!0}),this.drawClipPathOnCache(e,t))},drawCacheOnCanvas:function(e){e.scale(1/this.zoomX,1/this.zoomY),e.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(e){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!e&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!e){var t=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-t/2,-i/2,t,i)}return!0}return!1},_renderBackground:function(e){if(this.backgroundColor){var t=this._getNonTransformedDimensions();e.fillStyle=this.backgroundColor,e.fillRect(-t.x/2,-t.y/2,t.x,t.y),this._removeShadow(e)}},_setOpacity:function(e){this.group&&!this.group._transformDone?e.globalAlpha=this.getObjectOpacity():e.globalAlpha*=this.opacity},_setStrokeStyles:function(e,t){var i=t.stroke;i&&(e.lineWidth=t.strokeWidth,e.lineCap=t.strokeLineCap,e.lineDashOffset=t.strokeDashOffset,e.lineJoin=t.strokeLineJoin,e.miterLimit=t.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(e,i):(e.strokeStyle=i.toLive(e,this),this._applyPatternGradientTransform(e,i)):e.strokeStyle=t.stroke)},_setFillStyles:function(e,t){var i=t.fill;i&&(i.toLive?(e.fillStyle=i.toLive(e,this),this._applyPatternGradientTransform(e,t.fill)):e.fillStyle=i)},_setClippingProperties:function(e){e.globalAlpha=1,e.strokeStyle="transparent",e.fillStyle="#000000"},_setLineDash:function(e,t){t&&0!==t.length&&(1&t.length&&t.push.apply(t,t),e.setLineDash(t))},_renderControls:function(e,i){var r,n,s,a=this.getViewportTransform(),l=this.calcTransformMatrix();n=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,l=t.util.multiplyTransformMatrices(a,l),r=t.util.qrDecompose(l),e.save(),e.translate(r.translateX,r.translateY),e.lineWidth=1*this.borderScaleFactor,this.group||(e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),e.rotate(o(this.group?r.angle:this.angle)),i.forActiveSelection||this.group?n&&this.drawBordersInGroup(e,r,i):n&&this.drawBorders(e,i),s&&this.drawControls(e,i),e.restore()},_setShadow:function(e){if(this.shadow){var i,r=this.shadow,n=this.canvas,s=n&&n.viewportTransform[0]||1,o=n&&n.viewportTransform[3]||1;i=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),n&&n._isRetinaScaling()&&(s*=t.devicePixelRatio,o*=t.devicePixelRatio),e.shadowColor=r.color,e.shadowBlur=r.blur*t.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,e.shadowOffsetX=r.offsetX*s*i.scaleX,e.shadowOffsetY=r.offsetY*o*i.scaleY}},_removeShadow:function(e){this.shadow&&(e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0)},_applyPatternGradientTransform:function(e,t){if(!t||!t.toLive)return{offsetX:0,offsetY:0};var i=t.gradientTransform||t.patternTransform,r=-this.width/2+t.offsetX||0,n=-this.height/2+t.offsetY||0;return"percentage"===t.gradientUnits?e.transform(this.width,0,0,this.height,r,n):e.transform(1,0,0,1,r,n),i&&e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:r,offsetY:n}},_renderPaintInOrder:function(e){"stroke"===this.paintFirst?(this._renderStroke(e),this._renderFill(e)):(this._renderFill(e),this._renderStroke(e))},_render:function(){},_renderFill:function(e){this.fill&&(e.save(),this._setFillStyles(e,this),"evenodd"===this.fillRule?e.fill("evenodd"):e.fill(),e.restore())},_renderStroke:function(e){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this.strokeUniform&&this.group){var t=this.getObjectScaling();e.scale(1/t.scaleX,1/t.scaleY)}else this.strokeUniform&&e.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(e,this.strokeDashArray),this._setStrokeStyles(e,this),e.stroke(),e.restore()}},_applyPatternForTransformedGradient:function(e,i){var r,n=this._limitCacheSize(this._getCacheCanvasDimensions()),s=t.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=n.x/this.scaleX/o,l=n.y/this.scaleY/o;s.width=a,s.height=l,(r=s.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(a,0),r.lineTo(a,l),r.lineTo(0,l),r.closePath(),r.translate(a/2,l/2),r.scale(n.zoomX/this.scaleX/o,n.zoomY/this.scaleY/o),this._applyPatternGradientTransform(r,i),r.fillStyle=i.toLive(e),r.fill(),e.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),e.scale(o*this.scaleX/n.zoomX,o*this.scaleY/n.zoomY),e.strokeStyle=r.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var e=t.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",e.scaleX),this.set("scaleY",e.scaleY),this.angle=e.angle,this.skewX=e.skewX,this.skewY=0}},_removeTransformMatrix:function(e){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=t.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,e&&(this.scaleX*=e.scaleX,this.scaleY*=e.scaleY,this.cropX=e.cropX,this.cropY=e.cropY,i.x+=e.offsetLeft,i.y+=e.offsetTop,this.width=e.width,this.height=e.height),this.setPositionByOrigin(i,"center","center")},clone:function(e,i){var r=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(r,e):t.Object._fromObject("Object",r,e)},cloneAsImage:function(e,i){var r=this.toCanvasElement(i);return e&&e(new t.Image(r)),this},toCanvasElement:function(e){e||(e={});var i=t.util,r=i.saveObjectTransform(this),n=this.group,s=this.shadow,o=Math.abs,a=(e.multiplier||1)*(e.enableRetinaScaling?t.devicePixelRatio:1);delete this.group,e.withoutTransform&&i.resetObjectTransform(this),e.withoutShadow&&(this.shadow=null);var l,h,c,u,d=t.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,_={x:0,y:0};g&&(h=g.blur,l=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),_.x=2*Math.round(o(g.offsetX)+h)*o(l.scaleX),_.y=2*Math.round(o(g.offsetY)+h)*o(l.scaleY)),c=f.width+_.x,u=f.height+_.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new t.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===e.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new t.Point(p.width/2,p.height/2),"center","center");var m=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,e);return this.shadow=s,this.set("canvas",m),n&&(this.group=n),this.set(r).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(e){return e||(e={}),t.util.toDataURL(this.toCanvasElement(e),e.format||"png",e.quality||1)},isType:function(e){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===e},complexity:function(){return 1},toJSON:function(e){return this.toObject(e)},rotate:function(e){var t=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return t&&this._setOriginToCenter(),this.set("angle",e),t&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(e,i){i=i||this.canvas.getPointer(e);var r=new t.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=t.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(e){this.globalCompositeOperation&&(e.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){t.runningAnimations&&t.runningAnimations.cancelByTarget(this)}}),t.util.createAccessors&&t.util.createAccessors(t.Object),i(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.ENLIVEN_PROPS=["clipPath"],t.Object._fromObject=function(e,i,n,s){var o=t[e];i=r(i,!0),t.util.enlivenPatterns([i.fill,i.stroke],(function(e){void 0!==e[0]&&(i.fill=e[0]),void 0!==e[1]&&(i.stroke=e[1]),t.util.enlivenObjectEnlivables(i,i,(function(){var e=s?new o(i[s],i):new o(i);n&&n(e)}))}))},t.Object.__uid=0)}(t),S=T.util.degreesToRadians,b={left:-.5,center:0,right:.5},C={top:-.5,center:0,bottom:.5},T.util.object.extend(T.Object.prototype,{translateToGivenOrigin:function(e,t,i,r,n){var s,o,a,l=e.x,h=e.y;return"string"==typeof t?t=b[t]:t-=.5,"string"==typeof r?r=b[r]:r-=.5,"string"==typeof i?i=C[i]:i-=.5,"string"==typeof n?n=C[n]:n-=.5,o=n-i,((s=r-t)||o)&&(a=this._getTransformedDimensions(),l=e.x+s*a.x,h=e.y+o*a.y),new T.Point(l,h)},translateToCenterPoint:function(e,t,i){var r=this.translateToGivenOrigin(e,t,i,"center","center");return this.angle?T.util.rotatePoint(r,e,S(this.angle)):r},translateToOriginPoint:function(e,t,i){var r=this.translateToGivenOrigin(e,"center","center",t,i);return this.angle?T.util.rotatePoint(r,e,S(this.angle)):r},getCenterPoint:function(){var e=new T.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var i=this.getCenterPoint();return this.translateToOriginPoint(i,e,t)},toLocalPoint:function(e,t,i){var r,n,s=this.getCenterPoint();return r=void 0!==t&&void 0!==i?this.translateToGivenOrigin(s,"center","center",t,i):new T.Point(this.left,this.top),n=new T.Point(e.x,e.y),this.angle&&(n=T.util.rotatePoint(n,s,-S(this.angle))),n.subtractEquals(r)},setPositionByOrigin:function(e,t,i){var r=this.translateToCenterPoint(e,t,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(e){var t,i,r=S(this.angle),n=this.getScaledWidth(),s=T.util.cos(r)*n,o=T.util.sin(r)*n;t="string"==typeof this.originX?b[this.originX]:this.originX-.5,i="string"==typeof e?b[e]:e-.5,this.left+=s*(i-t),this.top+=o*(i-t),this.setCoords(),this.originX=e},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var e=this.getCenterPoint();this.originX="center",this.originY="center",this.left=e.x,this.top=e.y},_resetOrigin:function(){var e=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=e.x,this.top=e.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var e=T.util,t=e.degreesToRadians,i=e.multiplyTransformMatrices,r=e.transformPoint;e.object.extend(T.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(e,t){return t?e?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),e?this.aCoords:this.lineCoords)},getCoords:function(e,t){return i=this._getCoords(e,t),[new T.Point(i.tl.x,i.tl.y),new T.Point(i.tr.x,i.tr.y),new T.Point(i.br.x,i.br.y),new T.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(e,t,i,r){var n=this.getCoords(i,r);return"Intersection"===T.Intersection.intersectPolygonRectangle(n,e,t).status},intersectsWithObject:function(e,t,i){return"Intersection"===T.Intersection.intersectPolygonPolygon(this.getCoords(t,i),e.getCoords(t,i)).status||e.isContainedWithinObject(this,t,i)||this.isContainedWithinObject(e,t,i)},isContainedWithinObject:function(e,t,i){for(var r=this.getCoords(t,i),n=t?e.aCoords:e.lineCoords,s=0,o=e._getImageLines(n);s<4;s++)if(!e.containsPoint(r[s],o))return!1;return!0},isContainedWithinRect:function(e,t,i,r){var n=this.getBoundingRect(i,r);return n.left>=e.x&&n.left+n.width<=t.x&&n.top>=e.y&&n.top+n.height<=t.y},containsPoint:function(e,t,i,r){var n=this._getCoords(i,r),s=(t=t||this._getImageLines(n),this._findCrossPoints(e,t));return 0!==s&&s%2==1},isOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,e).some((function(e){return e.x<=i.x&&e.x>=t.x&&e.y<=i.y&&e.y>=t.y}))||!!this.intersectsWithRect(t,i,!0,e)||this._containsCenterOfCanvas(t,i,e)},_containsCenterOfCanvas:function(e,t,i){var r={x:(e.x+t.x)/2,y:(e.y+t.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(t,i,!0,e)||this.getCoords(!0,e).every((function(e){return(e.x>=i.x||e.x<=t.x)&&(e.y>=i.y||e.y<=t.y)}))&&this._containsCenterOfCanvas(t,i,e)},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var i,r,n,s=0;for(var o in t)if(!((n=t[o]).o.y=e.y&&n.d.y>=e.y||(n.o.x===n.d.x&&n.o.x>=e.x?r=n.o.x:(i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(e.y-0*e.x-(n.o.y-i*n.o.x))/(0-i)),r>=e.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(t,i){var r=this.getCoords(t,i);return e.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(e){return Math.abs(e)\n')}},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})},toClipPathSVG:function(e){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})},_createBaseClipPathSVGMarkup:function(e,t){var i=(t=t||{}).reviver,r=t.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),s=e.indexOf("COMMON_PARTS");return e[s]=n,i?i(e.join("")):e.join("")},_createBaseSVGMarkup:function(e,t){var i,r,n=(t=t||{}).noStyle,s=t.reviver,o=n?"":'style="'+this.getSvgStyles()+'" ',a=t.withShadow?'style="'+this.getSvgFilter()+'" ':"",l=this.clipPath,h=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=l&&l.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],_=e.indexOf("COMMON_PARTS"),p=t.additionalTransform;return l&&(l.clipPathId="CLIPPATH_"+T.Object.__uid++,r='\n'+l.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,h,n?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),e[_]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),l&&g.push(r),g.push(e.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var e=T.util.object.extend,t="stateProperties";function i(t,i,r){var n={};r.forEach((function(e){n[e]=t[e]})),e(t[i],n,!0)}function r(e,t,i){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(var n=0,s=e.length;n=0;l--)if(n=a[l],this.isControlVisible(n)&&(r=this._getImageLines(t?this.oCoords[n].touchCorner:this.oCoords[n].corner),0!==(i=this._findCrossPoints({x:s,y:o},r))&&i%2==1))return this.__corner=n,n;return!1},forEachControl:function(e){for(var t in this.controls)e(this.controls[t],t,this)},_setCornerCoords:function(){var e=this.oCoords;for(var t in e){var i=this.controls[t];e[t].corner=i.calcCornerCoords(this.angle,this.cornerSize,e[t].x,e[t].y,!1),e[t].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,e[t].x,e[t].y,!0)}},drawSelectionBackground:function(t){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;t.save();var i=this.getCenterPoint(),r=this._calculateCurrentDimensions(),n=this.canvas.viewportTransform;return t.translate(i.x,i.y),t.scale(1/n[0],1/n[3]),t.rotate(e(this.angle)),t.fillStyle=this.selectionBackgroundColor,t.fillRect(-r.x/2,-r.y/2,r.x,r.y),t.restore(),this},drawBorders:function(e,t){t=t||{};var i=this._calculateCurrentDimensions(),r=this.borderScaleFactor,n=i.x+r,s=i.y+r,o=void 0!==t.hasControls?t.hasControls:this.hasControls,a=!1;return e.save(),e.strokeStyle=t.borderColor||this.borderColor,this._setLineDash(e,t.borderDashArray||this.borderDashArray),e.strokeRect(-n/2,-s/2,n,s),o&&(e.beginPath(),this.forEachControl((function(t,i,r){t.withConnection&&t.getVisibility(r,i)&&(a=!0,e.moveTo(t.x*n,t.y*s),e.lineTo(t.x*n+t.offsetX,t.y*s+t.offsetY))})),a&&e.stroke()),e.restore(),this},drawBordersInGroup:function(e,t,i){i=i||{};var r=T.util.sizeAfterTransform(this.width,this.height,t),n=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=r.x+n*(s?this.canvas.getZoom():t.scaleX)+o,l=r.y+n*(s?this.canvas.getZoom():t.scaleY)+o;return e.save(),this._setLineDash(e,i.borderDashArray||this.borderDashArray),e.strokeStyle=i.borderColor||this.borderColor,e.strokeRect(-a/2,-l/2,a,l),e.restore(),this},drawControls:function(e,t){t=t||{},e.save();var i,r,n=this.canvas.getRetinaScaling();return e.setTransform(n,0,0,n,0,0),e.strokeStyle=e.fillStyle=t.cornerColor||this.cornerColor,this.transparentCorners||(e.strokeStyle=t.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(e,t.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(n,s,o){r=o.oCoords[s],n.getVisibility(o,s)&&(i&&(r=T.util.transformPoint(r,i)),n.render(e,r.x,r.y,t,o))})),e.restore(),this},isControlVisible:function(e){return this.controls[e]&&this.controls[e].getVisibility(this,e)},setControlVisible:function(e,t){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[e]=t,this},setControlsVisibility:function(e){for(var t in e||(e={}),e)this.setControlVisible(t,e[t]);return this},onDeselect:function(){},onSelect:function(){}})}(),T.util.object.extend(T.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,s=this;return T.util.animate({target:this,startValue:e.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.requestRenderAll(),n()},onComplete:function(){e.setCoords(),r()}})},fxCenterObjectV:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,s=this;return T.util.animate({target:this,startValue:e.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.requestRenderAll(),n()},onComplete:function(){e.setCoords(),r()}})},fxRemove:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,s=this;return T.util.animate({target:this,startValue:e.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(t){e.set("opacity",t),s.requestRenderAll(),n()},onComplete:function(){s.remove(e),r()}})}}),T.util.object.extend(T.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var e,t,i=[],r=[];for(e in arguments[0])i.push(e);for(var n=0,s=i.length;n-1||n&&s.colorProperties.indexOf(n[1])>-1,a=n?this.get(n[0])[n[1]]:this.get(e);"from"in i||(i.from=a),o||(t=~t.indexOf("=")?a+parseFloat(t.replace("=","")):parseFloat(t));var l={target:this,startValue:i.from,endValue:t,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(e,t,r){return i.abort.call(s,e,t,r)},onChange:function(t,o,a){n?s[n[0]][n[1]]=t:s.set(e,t),r||i.onChange&&i.onChange(t,o,a)},onComplete:function(e,t,n){r||(s.setCoords(),i.onComplete&&i.onComplete(e,t,n))}};return o?T.util.animateColor(l.startValue,l.endValue,l.duration,l):T.util.animate(l)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.object.clone,n={x1:1,x2:1,y1:1,y2:1};function s(e,t){var i=e.origin,r=e.axis1,n=e.axis2,s=e.dimension,o=t.nearest,a=t.center,l=t.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(r),this.get(n));case a:return Math.min(this.get(r),this.get(n))+.5*this.get(s);case l:return Math.max(this.get(r),this.get(n))}}}t.Line?t.warn("fabric.Line is already defined"):(t.Line=t.util.createClass(t.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:t.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(e,t){e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in e?e.left:this._getLeftToOriginX(),this.top="top"in e?e.top:this._getTopToOriginY()},_set:function(e,t){return this.callSuper("_set",e,t),void 0!==n[e]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(e){e.beginPath();var t=this.calcLinePoints();e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2),e.lineWidth=this.strokeWidth;var i=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this.stroke&&this._renderStroke(e),e.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(e){return i(this.callSuper("toObject",e),this.calcLinePoints())},_getNonTransformedDimensions:function(){var e=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(e.y-=this.strokeWidth),0===this.height&&(e.x-=this.strokeWidth)),e},calcLinePoints:function(){var e=this.x1<=this.x2?-1:1,t=this.y1<=this.y2?-1:1,i=e*this.width*.5,r=t*this.height*.5;return{x1:i,x2:e*this.width*-.5,y1:r,y2:t*this.height*-.5}},_toSVG:function(){var e=this.calcLinePoints();return["\n']}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r,n){n=n||{};var s=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];r(new t.Line(o,i(s,n)))},t.Line.fromObject=function(e,i){var n=r(e,!0);n.points=[e.x1,e.y1,e.x2,e.y2],t.Object._fromObject("Line",n,(function(e){delete e.points,i&&i(e)}),"points")})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.degreesToRadians;t.Circle?t.warn("fabric.Circle is already defined."):(t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:t.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(e,t){return this.callSuper("_set",e,t),"radius"===e&&this.setRadius(t),this},toObject:function(e){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(e))},_toSVG:function(){var e,r=(this.endAngle-this.startAngle)%360;if(0===r)e=["\n'];else{var n=i(this.startAngle),s=i(this.endAngle),o=this.radius;e=['180?"1":"0")+" 1"," "+t.util.cos(s)*o+" "+t.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return e},_render:function(e){e.beginPath(),e.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){return this.radius=e,this.set("width",2*e).set("height",2*e)}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,i){var r,n=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=n)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");n.left=(n.left||0)-n.radius,n.top=(n.top||0)-n.radius,i(new t.Circle(n))},t.Circle.fromObject=function(e,i){t.Object._fromObject("Circle",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={});t.Triangle?t.warn("fabric.Triangle is already defined"):(t.Triangle=t.util.createClass(t.Object,{type:"triangle",width:100,height:100,_render:function(e){var t=this.width/2,i=this.height/2;e.beginPath(),e.moveTo(-t,i),e.lineTo(0,-i),e.lineTo(t,i),e.closePath(),this._renderPaintInOrder(e)},_toSVG:function(){var e=this.width/2,t=this.height/2;return["']}}),t.Triangle.fromObject=function(e,i){return t.Object._fromObject("Triangle",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=2*Math.PI;t.Ellipse?t.warn("fabric.Ellipse is already defined."):(t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this.set("rx",e&&e.rx||0),this.set("ry",e&&e.ry||0)},_set:function(e,t){switch(this.callSuper("_set",e,t),e){case"rx":this.rx=t,this.set("width",2*t);break;case"ry":this.ry=t,this.set("height",2*t)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["\n']},_render:function(e){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(0,0,this.rx,0,i,!1),e.restore(),this._renderPaintInOrder(e)}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,i){var r=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,i(new t.Ellipse(r))},t.Ellipse.fromObject=function(e,i){t.Object._fromObject("Ellipse",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend;t.Rect?t.warn("fabric.Rect is already defined"):(t.Rect=t.util.createClass(t.Object,{stateProperties:t.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,s=-this.width/2,o=-this.height/2,a=0!==t||0!==i,l=.4477152502;e.beginPath(),e.moveTo(s+t,o),e.lineTo(s+r-t,o),a&&e.bezierCurveTo(s+r-l*t,o,s+r,o+l*i,s+r,o+i),e.lineTo(s+r,o+n-i),a&&e.bezierCurveTo(s+r,o+n-l*i,s+r-l*t,o+n,s+r-t,o+n),e.lineTo(s+t,o+n),a&&e.bezierCurveTo(s+l*t,o+n,s,o+n-l*i,s,o+n-i),e.lineTo(s,o+i),a&&e.bezierCurveTo(s,o+l*i,s+l*t,o,s+t,o),e.closePath(),this._renderPaintInOrder(e)},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["\n']}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r,n){if(!e)return r(null);n=n||{};var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new t.Rect(i(n?t.util.object.clone(n):{},s));o.visible=o.visible&&o.width>0&&o.height>0,r(o)},t.Rect.fromObject=function(e,i){return t.Object._fromObject("Rect",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.array.min,n=t.util.array.max,s=t.util.toFixed,o=t.util.projectStrokeOnPoints;t.Polyline?t.warn("fabric.Polyline is already defined"):(t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:t.Object.prototype.cacheProperties.concat("points"),initialize:function(e,t){t=t||{},this.points=e||[],this.callSuper("initialize",t),this._setPositionDimensions(t)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(e){var t,i=this._calcDimensions(e),r=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-r,this.height=i.height-r,e.fromSVG||(t=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+r/2,y:i.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),void 0===e.left&&(this.left=e.fromSVG?i.left:t.x),void 0===e.top&&(this.top=e.fromSVG?i.top:t.y),this.pathOffset={x:i.left+this.width/2+r/2,y:i.top+this.height/2+r/2}},_calcDimensions:function(){var e=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,t=r(e,"x")||0,i=r(e,"y")||0;return{left:t,top:i,width:(n(e,"x")||0)-t,height:(n(e,"y")||0)-i}},toObject:function(e){return i(this.callSuper("toObject",e),{points:this.points.concat()})},_toSVG:function(){for(var e=[],i=this.pathOffset.x,r=this.pathOffset.y,n=t.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(e){var t,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;e.beginPath(),e.moveTo(this.points[0].x-r,this.points[0].y-n);for(var s=0;s"},toObject:function(e){return n(this.callSuper("toObject",e),{path:this.path.map((function(e){return e.slice()}))})},toDatalessObject:function(e){var t=this.toObject(["sourcePath"].concat(e));return t.sourcePath&&delete t.path,t},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var e=t.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,e)+", "+o(-this.pathOffset.y,e)+")"},toClipPathSVG:function(e){var t=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},toSVG:function(e){var t=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var e,n,s=[],o=[],a=0,l=0,h=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(e){var i=!!this.group;return this._restoreObjectsState(),t.util.resetObjectTransform(this),e&&(i&&t.util.removeTransformFromObject(e,this.group.calcTransformMatrix()),this._objects.push(e),e.group=this,e._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),t.util.resetObjectTransform(this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(e){this.dirty=!0,e.group=this,e._set("canvas",this.canvas)},_onObjectRemoved:function(e){this.dirty=!0,delete e.group},_set:function(e,i){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(e,i);if("canvas"===e)for(;r--;)this._objects[r]._set(e,i);t.Object.prototype._set.call(this,e,i)},toObject:function(e){var i=this.includeDefaultValues,r=this._objects.filter((function(e){return!e.excludeFromExport})).map((function(t){var r=t.includeDefaultValues;t.includeDefaultValues=i;var n=t.toObject(e);return t.includeDefaultValues=r,n})),n=t.Object.prototype.toObject.call(this,e);return n.objects=r,n},toDatalessObject:function(e){var i,r=this.sourcePath;if(r)i=r;else{var n=this.includeDefaultValues;i=this._objects.map((function(t){var i=t.includeDefaultValues;t.includeDefaultValues=n;var r=t.toDatalessObject(e);return t.includeDefaultValues=i,r}))}var s=t.Object.prototype.toDatalessObject.call(this,e);return s.objects=i,s},render:function(e){this._transformDone=!0,this.callSuper("render",e),this._transformDone=!1},shouldCache:function(){var e=t.Object.prototype.shouldCache.call(this);if(e)for(var i=0,r=this._objects.length;i\n"],i=0,r=this._objects.length;i\n"),t},getSvgStyles:function(){var e=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",t=this.visible?"":" visibility: hidden;";return[e,this.getSvgFilter(),t].join("")},toClipPathSVG:function(e){for(var t=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(e,t,i){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",e,t),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+l+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var h=this.fill;this.fill=null,e=["\t\n'],this.fill=h}return"fill"!==this.paintFirst?t.concat(e,i):t.concat(i,e)},getSrc:function(e){var t=e?this._element:this._originalElement;return t?t.toDataURL?t.toDataURL():this.srcFromAttribute?t.getAttribute("src"):t.src:this.src||""},setSrc:function(e,t,i){return T.util.loadImage(e,(function(e,r){this.setElement(e,i),this._setWidthHeight(),t&&t(this,r)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var e=this.resizeFilter,t=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!e||r>t&&n>t)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=n);T.filterBackend||(T.filterBackend=T.initFilterBackend());var o=T.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,l=s.width,h=s.height;o.width=l,o.height=h,this._element=o,this._lastScaleX=e.scaleX=r,this._lastScaleY=e.scaleY=n,T.filterBackend.applyFilters([e],s,l,h,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(e){if(e=(e=e||this.filters||[]).filter((function(e){return e&&!e.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===e.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var t=this._originalElement,i=t.naturalWidth||t.width,r=t.naturalHeight||t.height;if(this._element===this._originalElement){var n=T.util.createCanvasElement();n.width=i,n.height=r,this._element=n,this._filteredEl=n}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,r),this._lastScaleX=1,this._lastScaleY=1;return T.filterBackend||(T.filterBackend=T.initFilterBackend()),T.filterBackend.applyFilters(e,this._originalElement,i,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(e){T.util.setImageSmoothing(e,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(e),this._renderPaintInOrder(e)},drawCacheOnCanvas:function(e){T.util.setImageSmoothing(e,this.imageSmoothing),T.Object.prototype.drawCacheOnCanvas.call(this,e)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(e){var t=this._element;if(t){var i=this._filterScalingX,r=this._filterScalingY,n=this.width,s=this.height,o=Math.min,a=Math.max,l=a(this.cropX,0),h=a(this.cropY,0),c=t.naturalWidth||t.width,u=t.naturalHeight||t.height,d=l*i,f=h*r,g=o(n*i,c-d),_=o(s*r,u-f),p=-n/2,m=-s/2,v=o(n,c/i-l),y=o(s,u/r-h);t&&e.drawImage(t,d,f,g,_,p,m,v,y)}},_needsResize:function(){var e=this.getTotalObjectScaling();return e.scaleX!==this._lastScaleX||e.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(e,t){this.setElement(T.util.getById(e),t),T.util.addClass(this.getElement(),T.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e&&e.length?T.util.enlivenObjects(e,(function(e){t&&t(e)}),"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){e||(e={});var t=this.getElement();this.width=e.width||t.naturalWidth||t.width||0,this.height=e.height||t.naturalHeight||t.height||0},parsePreserveAspectRatioAttribute:function(){var e,t=T.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,r=this._element.height,n=1,s=1,o=0,a=0,l=0,h=0,c=this.width,u=this.height,d={width:c,height:u};return!t||"none"===t.alignX&&"none"===t.alignY?(n=c/i,s=u/r):("meet"===t.meetOrSlice&&(e=(c-i*(n=s=T.util.findScaleToFit(this._element,d)))/2,"Min"===t.alignX&&(o=-e),"Max"===t.alignX&&(o=e),e=(u-r*s)/2,"Min"===t.alignY&&(a=-e),"Max"===t.alignY&&(a=e)),"slice"===t.meetOrSlice&&(e=i-c/(n=s=T.util.findScaleToCover(this._element,d)),"Mid"===t.alignX&&(l=e/2),"Max"===t.alignX&&(l=e),e=r-u/s,"Mid"===t.alignY&&(h=e/2),"Max"===t.alignY&&(h=e),i=c/n,r=u/s)),{width:i,height:r,scaleX:n,scaleY:s,offsetLeft:o,offsetTop:a,cropX:l,cropY:h}}}),T.Image.CSS_CANVAS="canvas-img",T.Image.prototype.getSvgSrc=T.Image.prototype.getSrc,T.Image.fromObject=function(e,t){var i=T.util.object.clone(e);T.util.loadImage(i.src,(function(e,r){r?t&&t(null,!0):T.Image.prototype._initFilters.call(i,i.filters,(function(r){i.filters=r||[],T.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(r){i.resizeFilter=r[0],T.util.enlivenObjectEnlivables(i,i,(function(){var r=new T.Image(e,i);t(r,!1)}))}))}))}),null,i.crossOrigin)},T.Image.fromURL=function(e,t,i){T.util.loadImage(e,(function(e,r){t&&t(new T.Image(e,i),r)}),null,i&&i.crossOrigin)},T.Image.ATTRIBUTE_NAMES=T.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),T.Image.fromElement=function(e,i,r){var n=T.parseAttributes(e,T.Image.ATTRIBUTE_NAMES);T.Image.fromURL(n["xlink:href"],i,t(r?T.util.object.clone(r):{},n))})}(t),T.util.object.extend(T.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.angle%360;return e>0?90*Math.round((e-1)/90):90*Math.round(e/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(e){var t=function(){},i=(e=e||{}).onComplete||t,r=e.onChange||t,n=this;return T.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){n.rotate(e),r()},onComplete:function(){n.setCoords(),i()}})}}),T.util.object.extend(T.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function e(e,t){var i="precision "+t+" float;\nvoid main(){}",r=e.createShader(e.FRAGMENT_SHADER);return e.shaderSource(r,i),e.compileShader(r),!!e.getShaderParameter(r,e.COMPILE_STATUS)}function t(e){e&&e.tileSize&&(this.tileSize=e.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}T.isWebglSupported=function(t){if(T.isLikelyNode)return!1;t=t||T.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),r=i.getContext("webgl")||i.getContext("experimental-webgl"),n=!1;if(r){T.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),n=T.maxTextureSize>=t;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(e(r,s[o])){T.webGlPrecision=s[o];break}}return this.isSupported=n,n},T.WebglFilterBackend=t,t.prototype={tileSize:2048,resources:{},setupGLContext:function(e,t){this.dispose(),this.createWebGLCanvas(e,t),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(e,t)},chooseFastestCopyGLTo2DMethod:function(e,t){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(e){i=!1}var n="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&s){var o=T.util.createCanvasElement(),a=new ArrayBuffer(e*t*4);if(T.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=O);var l,h,c={imageBuffer:a,destinationWidth:e,destinationHeight:t,targetCanvas:o};o.width=e,o.height=t,l=window.performance.now(),A.call(c,this.gl,c),h=window.performance.now()-l,l=window.performance.now(),O.call(c,this.gl,c),h>window.performance.now()-l?(this.imageBuffer=a,this.copyGLTo2D=O):this.copyGLTo2D=A}},createWebGLCanvas:function(e,t){var i=T.util.createCanvasElement();i.width=e,i.height=t;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},n=i.getContext("webgl",r);n||(n=i.getContext("experimental-webgl",r)),n&&(n.clearColor(0,0,0,0),this.canvas=i,this.gl=n)},applyFilters:function(e,t,i,r,n,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,t));var l={originalWidth:t.width||t.originalWidth,originalHeight:t.height||t.originalHeight,sourceWidth:i,sourceHeight:r,destinationWidth:i,destinationHeight:r,context:a,sourceTexture:this.createTexture(a,i,r,!o&&t),targetTexture:this.createTexture(a,i,r),originalTexture:o||this.createTexture(a,i,r,!o&&t),passes:e.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:n},h=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,h),e.forEach((function(e){e&&e.applyTo(l)})),function(e){var t=e.targetCanvas,i=t.width,r=t.height,n=e.destinationWidth,s=e.destinationHeight;i===n&&r===s||(t.width=n,t.height=s)}(l),this.copyGLTo2D(a,l),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(l.sourceTexture),a.deleteTexture(l.targetTexture),a.deleteFramebuffer(h),n.getContext("2d").setTransform(1,0,0,1,0,0),l},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(e,t,i,r){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),r?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t,i,0,e.RGBA,e.UNSIGNED_BYTE,null),n},getCachedTexture:function(e,t){if(this.textureCache[e])return this.textureCache[e];var i=this.createTexture(this.gl,t.width,t.height,t);return this.textureCache[e]=i,i},evictCachesForKey:function(e){this.textureCache[e]&&(this.gl.deleteTexture(this.textureCache[e]),delete this.textureCache[e])},copyGLTo2D:A,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var e=this.gl,t={renderer:"",vendor:""};if(!e)return t;var i=e.getExtension("WEBGL_debug_renderer_info");if(i){var r=e.getParameter(i.UNMASKED_RENDERER_WEBGL),n=e.getParameter(i.UNMASKED_VENDOR_WEBGL);r&&(t.renderer=r.toLowerCase()),n&&(t.vendor=n.toLowerCase())}return this.gpuInfo=t,t}}}(),function(){var e=function(){};function t(){}T.Canvas2dFilterBackend=t,t.prototype={evictCachesForKey:e,dispose:e,clearWebGLCaches:e,resources:{},applyFilters:function(e,t,i,r,n){var s=n.getContext("2d");s.drawImage(t,0,0,i,r);var o={sourceWidth:i,sourceHeight:r,imageData:s.getImageData(0,0,i,r),originalEl:t,originalImageData:s.getImageData(0,0,i,r),canvasEl:n,ctx:s,filterBackend:this};return e.forEach((function(e){e.applyTo(o)})),o.imageData.width===i&&o.imageData.height===r||(n.width=o.imageData.width,n.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),T.Image=T.Image||{},T.Image.filters=T.Image.filters||{},T.Image.filters.BaseFilter=T.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(e){e&&this.setOptions(e)},setOptions:function(e){for(var t in e)this[t]=e[t]},createProgram:function(e,t,i){t=t||this.fragmentSource,i=i||this.vertexSource,"highp"!==T.webGlPrecision&&(t=t.replace(/precision highp float/g,"precision "+T.webGlPrecision+" float"));var r=e.createShader(e.VERTEX_SHADER);if(e.shaderSource(r,i),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+e.getShaderInfoLog(r));var n=e.createShader(e.FRAGMENT_SHADER);if(e.shaderSource(n,t),e.compileShader(n),!e.getShaderParameter(n,e.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+e.getShaderInfoLog(n));var s=e.createProgram();if(e.attachShader(s,r),e.attachShader(s,n),e.linkProgram(s),!e.getProgramParameter(s,e.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+e.getProgramInfoLog(s));var o=this.getAttributeLocations(e,s),a=this.getUniformLocations(e,s)||{};return a.uStepW=e.getUniformLocation(s,"uStepW"),a.uStepH=e.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(e,t){return{aPosition:e.getAttribLocation(t,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(e,t,i){var r=t.aPosition,n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.enableVertexAttribArray(r),e.vertexAttribPointer(r,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,i,e.STATIC_DRAW)},_setupFrameBuffer:function(e){var t,i,r=e.context;e.passes>1?(t=e.destinationWidth,i=e.destinationHeight,e.sourceWidth===t&&e.sourceHeight===i||(r.deleteTexture(e.targetTexture),e.targetTexture=e.filterBackend.createTexture(r,t,i)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(e){e.passes--,e.pass++;var t=e.targetTexture;e.targetTexture=e.sourceTexture,e.sourceTexture=t},isNeutralState:function(){var e=this.mainParameter,t=T.Image.filters[this.type].prototype;if(e){if(Array.isArray(t[e])){for(var i=t[e].length;i--;)if(this[e][i]!==t[e][i])return!1;return!0}return t[e]===this[e]}return!1},applyTo:function(e){e.webgl?(this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)},retrieveShader:function(e){return e.programCache.hasOwnProperty(this.type)||(e.programCache[this.type]=this.createProgram(e.context)),e.programCache[this.type]},applyToWebGL:function(e){var t=e.context,i=this.retrieveShader(e);0===e.pass&&e.originalTexture?t.bindTexture(t.TEXTURE_2D,e.originalTexture):t.bindTexture(t.TEXTURE_2D,e.sourceTexture),t.useProgram(i.program),this.sendAttributeData(t,i.attributeLocations,e.aPosition),t.uniform1f(i.uniformLocations.uStepW,1/e.sourceWidth),t.uniform1f(i.uniformLocations.uStepH,1/e.sourceHeight),this.sendUniformData(t,i.uniformLocations),t.viewport(0,0,e.destinationWidth,e.destinationHeight),t.drawArrays(t.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(e,t,i){e.activeTexture(i),e.bindTexture(e.TEXTURE_2D,t),e.activeTexture(e.TEXTURE0)},unbindAdditionalTexture:function(e,t){e.activeTexture(t),e.bindTexture(e.TEXTURE_2D,null),e.activeTexture(e.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(e){this[this.mainParameter]=e},sendUniformData:function(){},createHelpLayer:function(e){if(!e.helpLayer){var t=document.createElement("canvas");t.width=e.sourceWidth,t.height=e.sourceHeight,e.helpLayer=t}},toObject:function(){var e={type:this.type},t=this.mainParameter;return t&&(e[t]=this[t]),e},toJSON:function(){return this.toObject()}}),T.Image.filters.BaseFilter.fromObject=function(e,t){var i=new T.Image.filters[e.type](e);return t&&t(i),i},function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.ColorMatrix=r(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(e){this.callSuper("initialize",e),this.matrix=this.matrix.slice(0)},applyTo2d:function(e){var t,i,r,n,s,o=e.imageData.data,a=o.length,l=this.matrix,h=this.colorsOnly;for(s=0;s=S||o<0||o>=y||(l=4*(a*y+o),h=p[f*m+d],t+=_[l]*h,i+=_[l+1]*h,r+=_[l+2]*h,w||(n+=_[l+3]*h));C[s]=t,C[s+1]=i,C[s+2]=r,C[s+3]=w?_[s+3]:n}e.imageData=b},getUniformLocations:function(e,t){return{uMatrix:e.getUniformLocation(t,"uMatrix"),uOpaque:e.getUniformLocation(t,"uOpaque"),uHalfSize:e.getUniformLocation(t,"uHalfSize"),uSize:e.getUniformLocation(t,"uSize")}},sendUniformData:function(e,t){e.uniform1fv(t.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Grayscale=r(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(e){var t,i,r=e.imageData.data,n=r.length,s=this.mode;for(t=0;th[0]&&n>h[1]&&s>h[2]&&r 0.0) {\n"+this.fragmentSource[e]+"}\n}"},retrieveShader:function(e){var t,i=this.type+"_"+this.mode;return e.programCache.hasOwnProperty(i)||(t=this.buildSource(this.mode),e.programCache[i]=this.createProgram(e.context,t)),e.programCache[i]},applyTo2d:function(e){var i,r,n,s,o,a,l,h=e.imageData.data,c=h.length,u=1-this.alpha;i=(l=new t.Color(this.color).getSource())[0]*this.alpha,r=l[1]*this.alpha,n=l[2]*this.alpha;for(var d=0;d=e||t<=-e)return 0;if(t<1.1920929e-7&&t>-1.1920929e-7)return 1;var i=(t*=Math.PI)/e;return a(t)/t*a(i)/i}},applyTo2d:function(e){var t=e.imageData,i=this.scaleX,r=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/r;var n,s=t.width,a=t.height,l=o(s*i),h=o(a*r);"sliceHack"===this.resizeType?n=this.sliceByTwo(e,s,a,l,h):"hermite"===this.resizeType?n=this.hermiteFastResize(e,s,a,l,h):"bilinear"===this.resizeType?n=this.bilinearFiltering(e,s,a,l,h):"lanczos"===this.resizeType&&(n=this.lanczosResize(e,s,a,l,h)),e.imageData=n},sliceByTwo:function(e,i,n,s,o){var a,l,h=e.imageData,c=.5,u=!1,d=!1,f=i*c,g=n*c,_=t.filterBackend.resources,p=0,m=0,v=i,y=0;for(_.sliceByTwo||(_.sliceByTwo=document.createElement("canvas")),((a=_.sliceByTwo).width<1.5*i||a.height=t)){M=r(1e3*s(T-b.x)),S[M]||(S[M]={});for(var P=C.y-y;P<=C.y+y;P++)P<0||P>=o||(L=r(1e3*s(P-b.y)),S[M][L]||(S[M][L]=f(n(i(M*p,2)+i(L*m,2))/1e3)),(x=S[M][L])>0&&(O+=x,I+=x*c[A=4*(P*t+T)],E+=x*c[A+1],R+=x*c[A+2],D+=x*c[A+3]))}d[A=4*(w*a+l)]=I/O,d[A+1]=E/O,d[A+2]=R/O,d[A+3]=D/O}return++l1&&L<-1||(y=2*L*L*L-3*L*L+1)>0&&(x+=y*f[3+(M=4*(D+O*t))],b+=y,f[M+3]<255&&(y=y*f[M+3]/250),C+=y*f[M],w+=y*f[M+1],T+=y*f[M+2],S+=y)}_[v]=C/S,_[v+1]=w/S,_[v+2]=T/S,_[v+3]=x/b}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),t.Image.filters.Resize.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Contrast=r(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(e){if(0!==this.contrast){var t,i=e.imageData.data,r=i.length,n=Math.floor(255*this.contrast),s=259*(n+255)/(255*(259-n));for(t=0;t1&&(t=1/this.aspectRatio):this.aspectRatio<1&&(t=this.aspectRatio),e=t*this.blur*.12,this.horizontal?i[0]=e:i[1]=e,i}}),i.Blur.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Gamma=r(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(e){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,e)},applyTo2d:function(e){var t,i=e.imageData.data,r=this.gamma,n=i.length,s=1/r[0],o=1/r[1],a=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),t=0,n=256;t'},_getCacheCanvasDimensions:function(){var e=this.callSuper("_getCacheCanvasDimensions"),t=this.fontSize;return e.width+=t*e.zoomX,e.height+=t*e.zoomY,e},_render:function(e){var t=this.path;t&&!t.isNotVisible()&&t._render(e),this._setTextStyles(e),this._renderTextLinesBackground(e),this._renderTextDecoration(e,"underline"),this._renderText(e),this._renderTextDecoration(e,"overline"),this._renderTextDecoration(e,"linethrough")},_renderText:function(e){"stroke"===this.paintFirst?(this._renderTextStroke(e),this._renderTextFill(e)):(this._renderTextFill(e),this._renderTextStroke(e))},_setTextStyles:function(e,t,i){if(e.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":e.textBaseline="middle";break;case"ascender":e.textBaseline="top";break;case"descender":e.textBaseline="bottom"}e.font=this._getFontDeclaration(t,i)},calcTextWidth:function(){for(var e=this.getLineWidth(0),t=1,i=this._textLines.length;te&&(e=r)}return e},_renderTextLine:function(e,t,i,r,n,s){this._renderChars(e,t,i,r,n,s)},_renderTextLinesBackground:function(e){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var t,i,r,n,s,o,a,l=e.fillStyle,h=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,_=this._textLines.length;g<_;g++)if(t=this.getHeightOfLine(g),this.textBackgroundColor||this.styleHas("textBackgroundColor",g)){r=this._textLines[g],i=this._getLineLeftOffset(g),d=0,u=0,n=this.getValueOfPropertyAt(g,0,"textBackgroundColor");for(var p=0,m=r.length;p=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:l,numOfSpaces:0}},_setGraphemeOnPath:function(e,i,r){var n=e+i.kernedWidth/2,s=this.path,o=t.util.getPointOnPath(s.path,n,s.segmentsInfo);i.renderLeft=o.x-r.x,i.renderTop=o.y-r.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(e,t,i,r,n){var s,o=this.getCompleteStyleDeclaration(t,i),a=r?this.getCompleteStyleDeclaration(t,i-1):{},l=this._measureChar(e,o,r,a),h=l.kernedWidth,c=l.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),h+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:h,deltaY:o.deltaY};if(i>0&&!n){var d=this.__charBounds[t][i-1];u.left=d.left+d.width+l.kernedWidth-l.width}return u},getHeightOfLine:function(e){if(this.__lineHeights[e])return this.__lineHeights[e];for(var t=this._textLines[e],i=this.getHeightOfChar(e,0),r=1,n=t.length;r0){var O=v+s+u;"rtl"===this.direction&&(O=this.width-O-d),h&&m&&(e.fillStyle=m,e.fillRect(O,c+C*r+o,d,this.fontSize/15)),u=f.left,d=f.width,h=g,m=p,r=n,o=a}else d+=f.kernedWidth;O=v+s+u,"rtl"===this.direction&&(O=this.width-O-d),e.fillStyle=p,g&&p&&e.fillRect(O,c+C*r+o,d-b,this.fontSize/15),y+=i}else y+=i;this._removeShadow(e)}},_getFontDeclaration:function(e,i){var r=e||this,n=this.fontFamily,s=t.Text.genericFonts.indexOf(n.toLowerCase())>-1,o=void 0===n||n.indexOf("'")>-1||n.indexOf(",")>-1||n.indexOf('"')>-1||s?r.fontFamily:'"'+r.fontFamily+'"';return[t.isLikelyNode?r.fontWeight:r.fontStyle,t.isLikelyNode?r.fontStyle:r.fontWeight,i?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",o].join(" ")},render:function(e){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",e)))},_splitTextIntoLines:function(e){for(var i=e.split(this._reNewline),r=new Array(i.length),n=["\n"],s=[],o=0;o-1&&(e.underline=!0),e.textDecoration.indexOf("line-through")>-1&&(e.linethrough=!0),e.textDecoration.indexOf("overline")>-1&&(e.overline=!0),delete e.textDecoration)}T.IText=T.util.createClass(T.Text,T.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(e,t){this.callSuper("initialize",e,t),this.initBehavior()},setSelectionStart:function(e){e=Math.max(e,0),this._updateAndFire("selectionStart",e)},setSelectionEnd:function(e){e=Math.min(e,this.text.length),this._updateAndFire("selectionEnd",e)},_updateAndFire:function(e,t){this[e]!==t&&(this._fireSelectionChanged(),this[e]=t),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(e){this.clearContextTop(),this.callSuper("render",e),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(e){this.callSuper("_render",e)},clearContextTop:function(e){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this.canvas.contextTop,i=this.canvas.viewportTransform;t.save(),t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(t),this._clearTextArea(t),e||t.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this._getCursorBoundaries(),t=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(e,t):this.renderSelection(e,t),t.restore()}},_clearTextArea:function(e){var t=this.width+4,i=this.height+4;e.clearRect(-t/2,-i/2,t,i)},_getCursorBoundaries:function(e){void 0===e&&(e=this.selectionStart);var t=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(e);return{left:t,top:i,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(e){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var t,i,r,n,s=0,o=0,a=this.get2DCursorLocation(e);r=a.charIndex,i=a.lineIndex;for(var l=0;l0?o:0)},"rtl"===this.direction&&(n.left*=-1),this.cursorOffsetCache=n,this.cursorOffsetCache},renderCursor:function(e,t){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(r,n,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,l=e.topOffset,h=this.getValueOfPropertyAt(r,n,"deltaY");l+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(e,t),t.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,n,"fill"),t.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,t.fillRect(e.left+e.leftOffset-a/2,l+e.top+h,a,s)},renderSelection:function(e,t){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,n=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(r),a=s.lineIndex,l=o.lineIndex,h=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=l;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),_=0,p=0;if(u===a&&(_=this.__charBounds[a][h].left),u>=a&&u1)&&(g/=this.lineHeight);var v=e.left+f+_,y=p-_,S=g,b=0;this.inCompositionMode?(t.fillStyle=this.compositionColor||"black",S=1,b=g):t.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),t.fillRect(v,e.top+e.topOffset+b,y,S),e.topOffset+=d}},getCurrentCharFontSize:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fontSize")},getCurrentCharColor:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fill")},_getCurrentCharIndex:function(){var e=this.get2DCursorLocation(this.selectionStart,!0),t=e.charIndex>0?e.charIndex-1:0;return{l:e.lineIndex,c:t}}}),T.IText.fromObject=function(t,i){if(e(t),t.styles)for(var r in t.styles)for(var n in t.styles[r])e(t.styles[r][n]);T.Object._fromObject("IText",t,i,"text")}}(),w=T.util.object.clone,T.util.object.extend(T.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var e=this;this.on("added",(function(){var t=e.canvas;t&&(t._hasITextHandlers||(t._hasITextHandlers=!0,e._initCanvasHandlers(t)),t._iTextInstances=t._iTextInstances||[],t._iTextInstances.push(e))}))},initRemovedHandler:function(){var e=this;this.on("removed",(function(){var t=e.canvas;t&&(t._iTextInstances=t._iTextInstances||[],T.util.removeFromArray(t._iTextInstances,e),0===t._iTextInstances.length&&(t._hasITextHandlers=!1,e._removeCanvasHandlers(t)))}))},_initCanvasHandlers:function(e){e._mouseUpITextHandler=function(){e._iTextInstances&&e._iTextInstances.forEach((function(e){e.__isMousedown=!1}))},e.on("mouse:up",e._mouseUpITextHandler)},_removeCanvasHandlers:function(e){e.off("mouse:up",e._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(e,t,i,r){var n;return n={isAborted:!1,abort:function(){this.isAborted=!0}},e.animate("_currentCursorOpacity",t,{duration:i,onComplete:function(){n.isAborted||e[r]()},onChange:function(){e.canvas&&e.selectionStart===e.selectionEnd&&e.renderCursorOrSelection()},abort:function(){return n.isAborted}}),n},_onTickComplete:function(){var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){e._currentTickCompleteState=e._animateCursor(e,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(e){var t=this,i=e?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){t._tick()}),i)},abortCursorAnimation:function(){var e=this._currentTickState||this._currentTickCompleteState,t=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,e&&t&&t.clearContext(t.contextTop||t.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(e){var t=0,i=e-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)t++,i--;for(;/\S/.test(this._text[i])&&i>-1;)t++,i--;return e-t},findWordBoundaryRight:function(e){var t=0,i=e;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)t++,i++;for(;/\S/.test(this._text[i])&&i-1;)t++,i--;return e-t},findLineBoundaryRight:function(e){for(var t=0,i=e;!/\n/.test(this._text[i])&&i0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=t):(this.selectionStart=t,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(e,t,i){var r=i.slice(0,e),n=T.util.string.graphemeSplit(r).length;if(e===t)return{selectionStart:n,selectionEnd:n};var s=i.slice(e,t);return{selectionStart:n,selectionEnd:n+T.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(e,t,i){var r=i.slice(0,e).join("").length;return e===t?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(e,t).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var e=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=e.selectionStart,this.hiddenTextarea.selectionEnd=e.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var e=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=e.selectionEnd,this.inCompositionMode||(this.selectionStart=e.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var e=this._calcTextareaPosition();this.hiddenTextarea.style.left=e.left,this.hiddenTextarea.style.top=e.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var e=this.inCompositionMode?this.compositionStart:this.selectionStart,t=this._getCursorBoundaries(e),i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex,s=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,o=t.leftOffset,a=this.calcTransformMatrix(),l={x:t.left+o,y:t.top+t.topOffset+s},h=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/h,d=c.height/h,f=u-s,g=d-s,_=c.clientWidth/u,p=c.clientHeight/d;return l=T.util.transformPoint(l,a),(l=T.util.transformPoint(l,this.canvas.viewportTransform)).x*=_,l.y*=p,l.x<0&&(l.x=0),l.x>f&&(l.x=f),l.y<0&&(l.y=0),l.y>g&&(l.y=g),l.x+=this.canvas._offset.left,l.y+=this.canvas._offset.top,{left:l.x+"px",top:l.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var e=this._textBeforeEdit!==this.text,t=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,t&&(t.blur&&t.blur(),t.parentNode&&t.parentNode.removeChild(t)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),e&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),e&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var e in this.styles)this._textLines[e]||delete this.styles[e]},removeStyleFromTo:function(e,t){var i,r,n=this.get2DCursorLocation(e,!0),s=this.get2DCursorLocation(t,!0),o=n.lineIndex,a=n.charIndex,l=s.lineIndex,h=s.charIndex;if(o!==l){if(this.styles[o])for(i=a;i=h&&(r[c-d]=r[u],delete r[u])}},shiftLineStyles:function(e,t){var i=w(this.styles);for(var r in this.styles){var n=parseInt(r,10);n>e&&(this.styles[n+t]=i[n],i[n-t]||delete this.styles[n])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(e,t,i,r){var n,s={},o=!1,a=this._unwrappedTextLines[e].length===t;for(var l in i||(i=1),this.shiftLineStyles(e,i),this.styles[e]&&(n=this.styles[e][0===t?t:t-1]),this.styles[e]){var h=parseInt(l,10);h>=t&&(o=!0,s[h-t]=this.styles[e][l],a&&0===t||delete this.styles[e][l])}var c=!1;for(o&&!a&&(this.styles[e+i]=s,c=!0),c&&i--;i>0;)r&&r[i-1]?this.styles[e+i]={0:w(r[i-1])}:n?this.styles[e+i]={0:w(n)}:delete this.styles[e+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(e,t,i,r){this.styles||(this.styles={});var n=this.styles[e],s=n?w(n):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=t&&(n[a+i]=s[a],s[a-i]||delete n[a])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[e]||(this.styles[e]={}),this.styles[e][t+i]=w(r[i]));else if(n)for(var l=n[t?t-1:1];l&&i--;)this.styles[e][t+i]=w(l)},insertNewStyleBlock:function(e,t,i){for(var r=this.get2DCursorLocation(t,!0),n=[0],s=0,o=0;o0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,n[0],i),i=i&&i.slice(n[0]+1)),s&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+n[0],s),o=1;o0?this.insertCharStyleObject(r.lineIndex+o,0,n[o],i):i&&this.styles[r.lineIndex+o]&&i[0]&&(this.styles[r.lineIndex+o][0]=i[0]),i=i&&i.slice(n[o]+1);n[o]>0&&this.insertCharStyleObject(r.lineIndex+o,0,n[o],i)},setSelectionStartEndWithShift:function(e,t,i){i<=e?(t===e?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=e),this.selectionStart=i):i>e&&ie?this.selectionStart=e:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>e?this.selectionEnd=e:this.selectionEnd<0&&(this.selectionEnd=0)}}),T.util.object.extend(T.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(e){if(this.canvas){this.__newClickTime=+new Date;var t=e.pointer;this.isTripleClick(t)&&(this.fire("tripleclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(e){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(e.e))},tripleClickHandler:function(e){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(e.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(e.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(e){if(this.__isMousedown=!1,!(!this.editable||this.group||e.transform&&e.transform.actionPerformed||e.e.button&&1!==e.e.button)){if(this.canvas){var t=this.canvas._activeObject;if(t&&t!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(e.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e),i=this.selectionStart,r=this.selectionEnd;e.shiftKey?this.setSelectionStartEndWithShift(i,r,t):(this.selectionStart=t,this.selectionEnd=t),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(e){for(var t,i=this.getLocalPointer(e),r=0,n=0,s=0,o=0,a=0,l=0,h=this._textLines.length;l0&&(o+=this._textLines[l-1].length+this.missingNewlineOffset(l-1));n=this._getLineLeftOffset(a)*this.scaleX,t=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+n);for(var c=0,u=t.length;cs||o<0?0:1);return this.flipX&&(a=n-a),a>this._text.length&&(a=this._text.length),a}}),T.util.object.extend(T.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=T.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var e=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+e.top+"; left: "+e.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+e.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):T.document.body.appendChild(this.hiddenTextarea),T.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),T.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),T.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),T.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(T.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(e){if(this.isEditing){var t="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(e.keyCode in t)this[t[e.keyCode]](e);else{if(!(e.keyCode in this.ctrlKeysMapDown)||!e.ctrlKey&&!e.metaKey)return;this[this.ctrlKeysMapDown[e.keyCode]](e)}e.stopImmediatePropagation(),e.preventDefault(),e.keyCode>=33&&e.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(e){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:e.keyCode in this.ctrlKeysMapUp&&(e.ctrlKey||e.metaKey)&&(this[this.ctrlKeysMapUp[e.keyCode]](e),e.stopImmediatePropagation(),e.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(e){var t=this.fromPaste;if(this.fromPaste=!1,e&&e.stopPropagation(),this.isEditing){var i,r,n,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,l=this._text.length,h=a.length,c=h-l,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),_=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):h0&&(r+=(i=this.__charBounds[e][t-1]).left+i.width),r},getDownCursorOffset:function(e,t){var i=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(i),n=r.lineIndex;if(n===this._textLines.length-1||e.metaKey||34===e.keyCode)return this._text.length-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n+1,o);return this._textLines[n].slice(s).length+a+1+this.missingNewlineOffset(n)},_getSelectionForOffset:function(e,t){return e.shiftKey&&this.selectionStart!==this.selectionEnd&&t?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(e,t){var i=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||e.metaKey||33===e.keyCode)return-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n-1,o),l=this._textLines[n].slice(0,s),h=this.missingNewlineOffset(n-1);return-this._textLines[n-1].length+a-l.length+(1-h)},_getIndexOnLine:function(e,t){for(var i,r,n=this._textLines[e],s=this._getLineLeftOffset(e),o=0,a=0,l=n.length;at){r=!0;var h=s-i,c=s,u=Math.abs(h-t);o=Math.abs(c-t)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",e)},moveCursorUp:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",e)},_moveCursorUpOrDown:function(e,t){var i=this["get"+e+"CursorOffset"](t,"right"===this._selectionDirection);t.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(e){var t="left"===this._selectionDirection?this.selectionStart+e:this.selectionEnd+e;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,t),0!==e},moveCursorWithoutShift:function(e){return e<0?(this.selectionStart+=e,this.selectionEnd=this.selectionStart):(this.selectionEnd+=e,this.selectionStart=this.selectionEnd),0!==e},moveCursorLeft:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",e)},_move:function(e,t,i){var r;if(e.altKey)r=this["findWordBoundary"+i](this[t]);else{if(!e.metaKey&&35!==e.keyCode&&36!==e.keyCode)return this[t]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[t])}if(void 0!==typeof r&&this[t]!==r)return this[t]=r,!0},_moveLeft:function(e,t){return this._move(e,t,"Left")},_moveRight:function(e,t){return this._move(e,t,"Right")},moveCursorLeftWithoutShift:function(e){var t=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(t=this._moveLeft(e,"selectionStart")),this.selectionEnd=this.selectionStart,t},moveCursorLeftWithShift:function(e){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(e,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(e,"selectionStart")):void 0},moveCursorRight:function(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",e)},_moveCursorLeftOrRight:function(e,t){var i="moveCursor"+e+"With";this._currentCursorOpacity=1,t.shiftKey?i+="Shift":i+="outShift",this[i](t)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(e){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(e,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(e){var t=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(t=this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,t},removeChars:function(e,t){void 0===t&&(t=e+1),this.removeStyleFromTo(e,t),this._text.splice(e,t-e),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(e,t,i,r){void 0===r&&(r=i),r>i&&this.removeStyleFromTo(i,r);var n=T.util.string.graphemeSplit(e);this.insertNewStyleBlock(n,i,t),this._text=[].concat(this._text.slice(0,i),n,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var e=T.util.toFixed,t=/ +/g;T.util.object.extend(T.Text.prototype,{_toSVG:function(){var e=this._getSVGLeftTopOffsets(),t=this._getSVGTextAndBg(e.textTop,e.textLeft);return this._wrapSVGTextAndBg(t)},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(e){var t=this.getSvgTextDecoration(this);return[e.textBgRects.join(""),'\t\t",e.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(e,t){var i,r=[],n=[],s=e;this._setSVGBg(n);for(var o=0,a=this._textLines.length;o",T.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(e,t,i,r){var n,s,o,a,l,h=this.getHeightOfLine(t),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[t];r+=h*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,_=f.length-1;g<=_;g++)l=g===_||this.charSpacing,u+=f[g],o=this.__charBounds[t][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!l&&this._reSpaceAndTab.test(f[g])&&(l=!0),l||(n=n||this.getCompleteStyleDeclaration(t,g),s=this.getCompleteStyleDeclaration(t,g+1),l=this._hasStyleChangedForSvg(n,s)),l&&(a=this._getStyleDeclaration(t,g)||{},e.push(this._createTextCharSpan(u,a,i,r)),u="",n=s,i+=d,d=0)},_pushTextBgRect:function(t,i,r,n,s,o){var a=T.Object.NUM_FRACTION_DIGITS;t.push("\t\t\n')},_setSVGTextLineBg:function(e,t,i,r){for(var n,s,o=this._textLines[t],a=this.getHeightOfLine(t)/this.lineHeight,l=0,h=0,c=this.getValueOfPropertyAt(t,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(e){for(var t=0,i=0,r=0,n={},s=0;s0?(i=0,r++,t++):!this.splitByGrapheme&&this._reSpaceAndTab.test(e.graphemeText[r])&&s>0&&(i++,r++),n[s]={line:t,offset:i},r+=e.graphemeLines[s].length,i+=e.graphemeLines[s].length;return n},styleHas:function(e,i){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[i];r&&(i=r.line)}return t.Text.prototype.styleHas.call(this,e,i)},isEmptyStyles:function(e){if(!this.styles)return!0;var t,i,r=0,n=!1,s=this._styleMap[e],o=this._styleMap[e+1];for(var a in s&&(e=s.line,r=s.offset),o&&(n=o.line===e,t=o.offset),i=void 0===e?this.styles:{line:this.styles[e]})for(var l in i[a])if(l>=r&&(!n||lr&&!p?(a.push(l),l=[],s=f,p=!0):s+=m,p||o||l.push(d),l=l.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>_&&(_=f);return v&&a.push(l),_+n>this.dynamicMinWidth&&(this.dynamicMinWidth=_-m+n),a},isEndOfWrapping:function(e){return!this._styleMap[e+1]||this._styleMap[e+1].line!==this._styleMap[e].line},missingNewlineOffset:function(e){return this.splitByGrapheme?this.isEndOfWrapping(e)?1:0:1},_splitTextIntoLines:function(e){for(var i=t.Text.prototype._splitTextIntoLines.call(this,e),r=this._wrapText(i.lines,this.width),n=new Array(r.length),s=0;s{},898:()=>{},245:()=>{}},L={};function P(e){var t=L[e];if(void 0!==t)return t.exports;var i=L[e]={exports:{}};return M[e](i,i.exports,P),i.exports}P.d=(e,t)=>{for(var i in t)P.o(t,i)&&!P.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},P.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var F={};(()=>{let e;P.d(F,{R:()=>e}),e="undefined"!=typeof document&&"undefined"!=typeof window?P(653).fabric:{version:"5.2.1"}})();var k=F.R; +const e="undefined"==typeof self;let t,i,r,n,s;if("undefined"!=typeof navigator&&(t=navigator,i=t.userAgent,r=t.platform,n=t.mediaDevices),!e){const e={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(i)||this.searchVersion(t.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=i.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(e){for(let t=0;t{let e=!1;if(l)try{(await n.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===s.browser&&s.version>66||"Safari"===s.browser&&s.version>13||"OPR"===s.browser&&s.version>43||"Edge"===s.browser&&s.version;const c=(()=>{if(!e&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})(),u=" is not allowed to change after `createInstance` or `loadWasm` is called.",d=!e&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",f=!e&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",g=t=>{if(null==t)t=[];else{t=t instanceof Array?[...t]:[t];for(let i=0;ie&&"object"==typeof e&&"function"==typeof e.then;var S=function(){this.init()};S.prototype={init:function(){var e=this||b;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var t=this||b;if(e=parseFloat(e),t.ctx||E(),void 0!==e&&e>=0&&e<=1){if(t._volume=e,t._muted)return t;t.usingWebAudio&&t.masterGain.gain.setValueAtTime(e,b.ctx.currentTime);for(var i=0;i=0;t--)e._howls[t].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,E()),e},codecs:function(e){return(this||b)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||b;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||b,t=null;try{t="undefined"!=typeof Audio?new Audio:null}catch(t){return e}if(!t||"function"!=typeof t.canPlayType)return e;var i=t.canPlayType("audio/mpeg;").replace(/^no$/,""),r=e._navigator?e._navigator.userAgent:"",n=r.match(/OPR\/([0-6].)/g),s=n&&parseInt(n[0].split("/")[1],10)<33,o=-1!==r.indexOf("Safari")&&-1===r.indexOf("Chrome"),a=r.match(/Version\/(.*?) /),l=o&&a&&parseInt(a[1],10)<15;return e._codecs={mp3:!(s||!i&&!t.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!i,opus:!!t.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(t.canPlayType('audio/wav; codecs="1"')||t.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!t.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!t.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(t.canPlayType("audio/x-m4a;")||t.canPlayType("audio/m4a;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(t.canPlayType("audio/x-m4b;")||t.canPlayType("audio/m4b;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(t.canPlayType("audio/x-mp4;")||t.canPlayType("audio/mp4;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(l||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!t.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(t.canPlayType("audio/x-flac;")||t.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||b;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var t=function(i){for(;e._html5AudioPool.length0?o._seek:i._sprite[e][0]/1e3),h=Math.max(0,(i._sprite[e][0]+i._sprite[e][1])/1e3-l),c=1e3*h/Math.abs(o._rate),u=i._sprite[e][0]/1e3,d=(i._sprite[e][0]+i._sprite[e][1])/1e3;o._sprite=e,o._ended=!1;var f=function(){o._paused=!1,o._seek=l,o._start=u,o._stop=d,o._loop=!(!o._loop&&!i._sprite[e][2])};if(!(l>=d)){var g=o._node;if(i._webAudio){var _=function(){i._playLock=!1,f(),i._refreshBuffer(o);var e=o._muted||i._muted?0:o._volume;g.gain.setValueAtTime(e,b.ctx.currentTime),o._playStart=b.ctx.currentTime,void 0===g.bufferSource.start?o._loop?g.bufferSource.noteGrainOn(0,l,86400):g.bufferSource.noteGrainOn(0,l,h):o._loop?g.bufferSource.start(0,l,86400):g.bufferSource.start(0,l,h),c!==1/0&&(i._endTimers[o._id]=setTimeout(i._ended.bind(i,o),c)),t||setTimeout((function(){i._emit("play",o._id),i._loadQueue()}),0)};"running"===b.state&&"interrupted"!==b.ctx.state?_():(i._playLock=!0,i.once("resume",_),i._clearTimer(o._id))}else{var p=function(){g.currentTime=l,g.muted=o._muted||i._muted||b._muted||g.muted,g.volume=o._volume*b.volume(),g.playbackRate=o._rate;try{var r=g.play();if(r&&"undefined"!=typeof Promise&&(r instanceof Promise||"function"==typeof r.then)?(i._playLock=!0,f(),r.then((function(){i._playLock=!1,g._unlocked=!0,t?i._loadQueue():i._emit("play",o._id)})).catch((function(){i._playLock=!1,i._emit("playerror",o._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),o._ended=!0,o._paused=!0}))):t||(i._playLock=!1,f(),i._emit("play",o._id)),g.playbackRate=o._rate,g.paused)return void i._emit("playerror",o._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||o._loop?i._endTimers[o._id]=setTimeout(i._ended.bind(i,o),c):(i._endTimers[o._id]=function(){i._ended(o),g.removeEventListener("ended",i._endTimers[o._id],!1)},g.addEventListener("ended",i._endTimers[o._id],!1))}catch(e){i._emit("playerror",o._id,e)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===g.src&&(g.src=i._src,g.load());var m=window&&window.ejecta||!g.readyState&&b._navigator.isCocoonJS;if(g.readyState>=3||m)p();else{i._playLock=!0,i._state="loading";var v=function(){i._state="loaded",p(),g.removeEventListener(b._canPlayEvent,v,!1)};g.addEventListener(b._canPlayEvent,v,!1),i._clearTimer(o._id)}}return o._id}i._ended(o)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var i=t._getSoundIds(e),r=0;r=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else n.length>=2&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(i=t?r._soundById(t):r._sounds[0])?i._volume:0;if("loaded"!==r._state||r._playLock)return r._queue.push({event:"volume",action:function(){r.volume.apply(r,n)}}),r;void 0===t&&(r._volume=e),t=r._getSoundIds(t);for(var a=0;a0?r/h:r),u=Date.now();e._fadeTo=i,e._interval=setInterval((function(){var n=(Date.now()-u)/r;u=Date.now(),a+=l*n,a=Math.round(100*a)/100,a=l<0?Math.max(i,a):Math.min(i,a),o._webAudio?e._volume=a:o.volume(a,e._id,!0),s&&(o._volume=a),(it&&a>=i)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,o.volume(i,e._id),o._emit("fade",e._id))}),c)},_stopFade:function(e){var t=this,i=t._soundById(e);return i&&i._interval&&(t._webAudio&&i._node.gain.cancelScheduledValues(b.ctx.currentTime),clearInterval(i._interval),i._interval=null,t.volume(i._fadeTo,e),i._fadeTo=null,t._emit("fade",e)),t},loop:function(){var e,t,i,r=this,n=arguments;if(0===n.length)return r._loop;if(1===n.length){if("boolean"!=typeof n[0])return!!(i=r._soundById(parseInt(n[0],10)))&&i._loop;e=n[0],r._loop=e}else 2===n.length&&(e=n[0],t=parseInt(n[1],10));for(var s=r._getSoundIds(t),o=0;o=0?t=parseInt(n[0],10):e=parseFloat(n[0])}else 2===n.length&&(e=parseFloat(n[0]),t=parseInt(n[1],10));if("number"!=typeof e)return(i=r._soundById(t))?i._rate:r._rate;if("loaded"!==r._state||r._playLock)return r._queue.push({event:"rate",action:function(){r.rate.apply(r,n)}}),r;void 0===t&&(r._rate=e),t=r._getSoundIds(t);for(var a=0;a=0?t=parseInt(r[0],10):i._sounds.length&&(t=i._sounds[0]._id,e=parseFloat(r[0]))}else 2===r.length&&(e=parseFloat(r[0]),t=parseInt(r[1],10));if(void 0===t)return 0;if("number"==typeof e&&("loaded"!==i._state||i._playLock))return i._queue.push({event:"seek",action:function(){i.seek.apply(i,r)}}),i;var o=i._soundById(t);if(o){if(!("number"==typeof e&&e>=0)){if(i._webAudio){var a=i.playing(t)?b.ctx.currentTime-o._playStart:0,l=o._rateSeek?o._rateSeek-o._seek:0;return o._seek+(l+a*Math.abs(o._rate))}return o._node.currentTime}var h=i.playing(t);h&&i.pause(t,!0),o._seek=e,o._ended=!1,i._clearTimer(t),i._webAudio||!o._node||isNaN(o._node.duration)||(o._node.currentTime=e);var c=function(){h&&i.play(t,!0),i._emit("seek",t)};if(h&&!i._webAudio){var u=function(){i._playLock?setTimeout(u,0):c()};setTimeout(u,0)}else c()}return i},playing:function(e){var t=this;if("number"==typeof e){var i=t._soundById(e);return!!i&&!i._paused}for(var r=0;r=0&&b._howls.splice(r,1);var n=!0;for(i=0;i=0){n=!1;break}return T&&n&&delete T[e._src],b.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,i,r){var n=this["_on"+e];return"function"==typeof t&&n.push(r?{id:i,fn:t,once:r}:{id:i,fn:t}),this},off:function(e,t,i){var r=this,n=r["_on"+e],s=0;if("number"==typeof t&&(i=t,t=null),t||i)for(s=0;s=0;s--)n[s].id&&n[s].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,i)}.bind(r,n[s].fn),0),n[s].once&&r.off(e,n[s].fn,n[s].id));return r._loadQueue(e),r},_loadQueue:function(e){var t=this;if(t._queue.length>0){var i=t._queue[0];i.event===e&&(t._queue.shift(),t._loadQueue()),e||i.action()}return t},_ended:function(e){var t=this,i=e._sprite;if(!t._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;r--){if(i<=t)return;e._sounds[r]._ended&&(e._webAudio&&e._sounds[r]._node&&e._sounds[r]._node.disconnect(0),e._sounds.splice(r,1),i--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],i=0;i=0;if(!e.bufferSource)return this;if(b._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),t))try{e.bufferSource.buffer=b._scratchBuffer}catch(e){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(b._navigator&&b._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var w=function(e){this._parent=e,this.init()};w.prototype={init:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++b._counter,t._sounds.push(e),e.create(),e},create:function(){var e=this,t=e._parent,i=b._muted||e._muted||e._parent._muted?0:e._volume;return t._webAudio?(e._node=void 0===b.ctx.createGain?b.ctx.createGainNode():b.ctx.createGain(),e._node.gain.setValueAtTime(i,b.ctx.currentTime),e._node.paused=!0,e._node.connect(b.masterGain)):b.noAudio||(e._node=b._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(b._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=t._src,e._node.preload=!0===t._preload?"auto":t._preload,e._node.volume=i*b.volume(),e._node.load()),e},reset:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++b._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,t=e._parent;t._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(t._sprite).length&&(t._sprite={__default:[0,1e3*t._duration]}),"loaded"!==t._state&&(t._state="loaded",t._emit("load"),t._loadQueue()),e._node.removeEventListener(b._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var T={},x=function(e){var t=e._src;if(T[t])return e._duration=T[t].duration,void I(e);if(/^data:[^;]+;base64,/.test(t)){for(var i=atob(t.split(",")[1]),r=new Uint8Array(i.length),n=0;n0?(T[t._src]=e,I(t,e)):i()};"undefined"!=typeof Promise&&1===b.ctx.decodeAudioData.length?b.ctx.decodeAudioData(e).then(r).catch(i):b.ctx.decodeAudioData(e,r,i)},I=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},E=function(){if(b.usingWebAudio){try{"undefined"!=typeof AudioContext?b.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?b.ctx=new webkitAudioContext:b.usingWebAudio=!1}catch(e){b.usingWebAudio=!1}b.ctx||(b.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(b._navigator&&b._navigator.platform),t=b._navigator&&b._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),i=t?parseInt(t[1],10):null;if(e&&i&&i<9){var r=/safari/.test(b._navigator&&b._navigator.userAgent.toLowerCase());b._navigator&&!r&&(b.usingWebAudio=!1)}b.usingWebAudio&&(b.masterGain=void 0===b.ctx.createGain?b.ctx.createGainNode():b.ctx.createGain(),b.masterGain.gain.setValueAtTime(b._muted?0:b._volume,b.ctx.currentTime),b.masterGain.connect(b.ctx.destination)),b._setup()}};!function(e,t,i,r){var n;e.prototype._pos=[0,0,0],e.prototype._orientation=[0,0,-1,0,1,0],e.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var i=t._howls.length-1;i>=0;i--)t._howls[i].stereo(e);return t},e.prototype.pos=function(e,i,r){var n=this;return n.ctx&&n.ctx.listener?(i="number"!=typeof i?n._pos[1]:i,r="number"!=typeof r?n._pos[2]:r,"number"!=typeof e?n._pos:(n._pos=[e,i,r],void 0!==n.ctx.listener.positionX?(n.ctx.listener.positionX.setTargetAtTime(n._pos[0],t.ctx.currentTime,.1),n.ctx.listener.positionY.setTargetAtTime(n._pos[1],t.ctx.currentTime,.1),n.ctx.listener.positionZ.setTargetAtTime(n._pos[2],t.ctx.currentTime,.1)):n.ctx.listener.setPosition(n._pos[0],n._pos[1],n._pos[2]),n)):n},e.prototype.orientation=function(e,i,r,n,s,o){var a=this;if(!a.ctx||!a.ctx.listener)return a;var l=a._orientation;return i="number"!=typeof i?l[1]:i,r="number"!=typeof r?l[2]:r,n="number"!=typeof n?l[3]:n,s="number"!=typeof s?l[4]:s,o="number"!=typeof o?l[5]:o,"number"!=typeof e?l:(a._orientation=[e,i,r,n,s,o],void 0!==a.ctx.listener.forwardX?(a.ctx.listener.forwardX.setTargetAtTime(e,t.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(i,t.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,t.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(n,t.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(s,t.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(o,t.ctx.currentTime,.1)):a.ctx.listener.setOrientation(e,i,r,n,s,o),a)},i.prototype.init=(n=i.prototype.init,function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],n.call(this,e)}),i.prototype.stereo=function(e,i){var r=this;if(!r._webAudio)return r;if("loaded"!==r._state)return r._queue.push({event:"stereo",action:function(){r.stereo(e,i)}}),r;var n=void 0===t.ctx.createStereoPanner?"spatial":"stereo";if(void 0===i){if("number"!=typeof e)return r._stereo;r._stereo=e,r._pos=[e,0,0]}for(var o=r._getSoundIds(i),a=0;a{console.warn(`Sound '${e}' playback failure: ${t}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=R,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`license`"+u);i._license=t})(D,e)}static get productKeys(){return this._license}static set productKeys(e){D.license=e}static get handshakeCode(){return this._license}static set handshakeCode(e){D.license=e}static get organizationID(){return this._license}static set organizationID(e){D.license=e}static set sessionPassword(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`sessionPassword`"+u);i._sessionPassword=t})(D,e)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:o,worker:a,getUserMedia:l,camera:await h(),browser:s.browser,version:s.version,OS:s.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(t){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");D._engineResourcePath=(t=>{if(null==t&&(t="./"),!e){let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(t)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+u);i._licenseServer=g(t)})(D,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){((e,t)=>{const i=e;if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+u);i._deviceFriendlyName=t||""})(D,e)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(e){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");D.__bUseFullFeature=e}static isImageSource(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"getImage"in e}static isDSImage(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("width"in e&&("height"in e&&"pixelFormat"in e)))}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("region"in e&&("sx"in e&&("sy"in e&&("width"in e&&("height"in e&&("colorMode"in e&&("timeSpent"in e&&("timeStamp"in e&&("isCropped"in e&&("toCanvas"in e&&("_sWidth"in e&&("_sHeight"in e&&"_bUseWebGL"in e)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(e){this._region=e,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var e;return null===(e=D._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",D.engineResourcePath)}static set defaultUIElementURL(e){D._defaultUIElementURL=e}static _fireHTTPSWarnning(){D.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{D.onWarning&&D.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new C({src:[this._soundSource],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(e){this.bPlaySoundOnSuccessfulRead="never"!==e&&e}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(e){this.bVibrateOnSuccessfulRead="never"!==e&&e}set dce(e){this._dce=e}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(e){this._maxCvsSideLength=e,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",e)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;D._onLog&&D._onLog("_registerDCEControler()");const e=this.dce;this._dceControler=e._createControler();const t=this._dceControler;t.register(this),t.setDisiredValue(this,"refreshInterval",200),t.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}const i=e.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{i?i===t._innerSetUI&&(await e.setUIElement(`${r.engineResourcePath}dce.ui.html`),t._innerSetUI=e.getUIElement()):(await e.setUIElement(`${r.engineResourcePath}dbr.ui.html`),t._innerSetUI=e.getUIElement())}catch(t){await e.setUIElement(r.defaultUIElementURL)}else i||await e.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async e=>{let t=await this._decode_DCEFrame(e,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onImageRead(e)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));const{sx:i,sy:r,width:n,height:s,_sWidth:o,_sHeight:a}=e;D.recalculateResultLocation(t,i,r,o,a,n,s),this._drawResults(t)},e.on("cameraChange",this.callbackCameraChange),e.on("resolutionChange",this.callbackResolutionChange),e.on("cameraClose",this.callbackCameraClose),e.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(D._onLog&&D._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(e,t){if(null==e)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(e&&e.isCameraEnhancer)this.dce=e,await this._registerDCEControler(),this._imgSource=null;else{if(!D.isImageSource(e))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=e}t&&t.resultsHighlightBaseShapes&&(this._drawingItemNamespace=t.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:e,l:t,ls:i,sp:r,rmk:n}=(e=>{const t=e;if(t._pLoad.isEmpty){let e,i,r=t._license||"",n=JSON.parse(JSON.stringify(t._licenseServer)),s=t._sessionPassword,o=0;if(r.startsWith("t")||r.startsWith("f"))o=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))o=1;else{o=2;const t=r.indexOf(":");if(-1!=t&&(r=r.substring(t+1)),r.startsWith("DLS2")){let t=r.substring(4);try{t=atob(t)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const i=JSON.parse(t);if(r=i.handshakeCode?i.handshakeCode:i.organizationID?i.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===n.length){let e=[];i.mainServerURL&&(e[0]=i.mainServerURL),i.standbyServerURL&&(e[1]=i.standbyServerURL),n=g(e)}!s&&i.sessionPassword&&(s=i.sessionPassword),e=i.remark}("200001"===r||r.startsWith("200001-"))&&(n&&n.length||(r="")),r||(o=1)}if(o&&(globalThis.crypto||(i="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(i="Require https to use online key in this browser.")),i){if(1!==o)throw new Error(i);o=0,console.warn(i),t._lastErrorCode=-1,t._lastErrorString=i}return 1===o&&(r="",console.warn("Applying for a public trial license ...")),{lt:o,l:r,ls:n,sp:s,rmk:e}}throw new Error("Can't preprocess license again"+u)})(D);this._pLoad.task=async(o,a)=>{let l=D.engineResourcePath+D._workerName;D.engineResourcePath.startsWith(location.origin)||(l=await fetch(l).then((e=>e.blob())).then((e=>URL.createObjectURL(e)))),D._dbrWorker=new Worker(l),D._dbrWorker.onerror=e=>{let t=new Error(e.message);a(t)},D._dbrWorker.onmessage=async t=>{let i=t.data?t.data:t;switch(i.type){case"log":D._onLog&&D._onLog(i.message);break;case"load":{i.message&&(i.message=i.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let t,r=!1;1===e&&(r=!0),i.success?(D._dbrWorker.onerror=null,D._version=i.version+"(JS "+D._jsVersion+"."+D._jsEditVersion+")",D._onLog&&D._onLog("load dbr worker success"),i.message&&console.warn(i.message)):(t=new Error(i.message),t.stack=i.stack+"\n"+t.stack,r||111==i.ltsErrorCode&&-1!=i.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&D.showDialog(i.success?"warn":"error",i.message),i.success?o():a(t);break}case"task":{let e=i.id,t=i.body;try{D._taskCallbackMap.get(e)(t),D._taskCallbackMap.delete(e)}catch(t){throw D._taskCallbackMap.delete(e),t}break}default:D._onLog&&D._onLog(t)}},D._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:D.engineResourcePath,bUseFullFeature:D._bUseFullFeature,bd:D._bWasmDebug,v:D._jsVersion,brtk:!!e,bptk:1===e,l:t,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:s,fn:D.deviceFriendlyName,ls:i,sp:r,rmk:n})}}await this._pLoad}static async showDialog(e,t){await(async(e,t,i)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let s=document.createElement("div");s.innerHTML=n;let o=[];for(let e=0;e{if(e==t.target){a.remove();for(let e of o)e.remove()}}));else if(!h&&e.classList.contains("dls-license-icon-close"))h=e,e.addEventListener("click",(()=>{a.remove();for(let e of o)e.remove()}));else if(!c&&e.classList.contains("dls-license-icon-error"))c=e,"error"!=t&&e.remove();else if(!u&&e.classList.contains("dls-license-icon-warn"))u=e,"warn"!=t&&e.remove();else if(!d&&e.classList.contains("dls-license-msg-content")){d=e;let t=i;for(;t;){let i=t.indexOf("["),r=t.indexOf("]",i),n=t.indexOf("(",r),s=t.indexOf(")",n);if(-1==i||-1==r||-1==n||-1==s){e.appendChild(new Text(t));break}i>0&&e.appendChild(new Text(t.substring(0,i)));let o=document.createElement("a"),a=t.substring(i+1,r);o.innerText=a;let l=t.substring(n+1,s);o.setAttribute("href",l),o.setAttribute("target","_blank"),e.appendChild(o),t=t.substring(s+1)}}document.body.appendChild(a)}catch(t){e._onLog&&e._onLog(t.message||t)}})(this,e,t)}static async createInstanceInWorker(e=!1){return await D.loadWasm(),await new Promise(((t,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(e=>{if(e.success)return t(e.instanceID);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),D._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:e})}))}static async createInstance(){let e=new D;return e._instanceID=await D.createInstanceInWorker(),D._fireHTTPSWarnning(),e}async clearMapDecodeRecord(){return await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success)return e();{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:i,instanceID:this._instanceID})}))}async decode(e){D._onLog&&D._onLog("decode(source: any)"),D._onLog&&(this._timeStartDecode=Date.now());{let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),e instanceof Blob?await this._decode_Blob(e,t):e instanceof ArrayBuffer?await this._decode_ArrayBuffer(e,t):e instanceof Uint8Array||e instanceof Uint8ClampedArray?await this._decode_Uint8Array(e,t):e instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?await this._decode_Image(e,t):e instanceof HTMLCanvasElement?await this._decode_Canvas(e,t):e instanceof HTMLVideoElement?await this._decode_Video(e,t):"string"==typeof e?"data:image/"==e.substring(0,11)?await this._decode_Base64(e,t):await this._decode_Url(e,t):D.isDCEFrame(e)?(t.bCopyData=!0,await this._decode_DCEFrame(e,t)):D.isDSImage(e)?(t.bCopyData=!0,await this._decode_DSImage(e,t)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(e,t)}async decodeUrl(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(e,t)}async _decodeBuffer_Uint8Array(e,t,i,r,n,s){return await new Promise(((o,a)=>{let l=D._nextTaskID++;D._taskCallbackMap.set(l,(e=>{if(e.success){let t,i=D._onLog?Date.now():0;D._onLog&&D._onLog("worker return result: "+i),this._lastInnerDecodeDuration=e.duration;try{t=this._handleRetJsonString(e.decodeReturn)}catch(e){return a(e)}if(D._onLog){let e=Date.now();D._onLog("DBR time get result: "+i),D._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),D._onLog("DBR worker decode image cost: "+(i-this._timeEnterInnerDBR)),D._onLog("DBR worker handle results: "+(e-i)),D._onLog("Total decode image cost: "+(e-this._timeStartDecode))}return o(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}})),this._timeEnterInnerDBR=Date.now(),D._onLog&&D._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),D._dbrWorker.postMessage({type:"decodeBuffer",id:l,instanceID:this._instanceID,body:{buffer:e,width:t,height:i,stride:r,format:n,config:s}},[e.buffer]),D._onLog&&s&&s.timeStamp&&D._onLog("decode image delay: "+(this._timeEnterInnerDBR-s.timeStamp))}))}async _decodeBuffer_Blob(e,t,i,r,n,s){D._onLog&&D._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const o=e.arrayBuffer?await e.arrayBuffer():await new Promise(((t,i)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onload=()=>{t(r.result)},r.onerror=()=>{i(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(o),t,i,r,n,s)}async decodeBuffer(e,t,i,r,n,s){let o;return D._onLog&&D._onLog("decodeBuffer(buffer,width,height,stride,format)"),D._onLog&&(this._timeStartDecode=Date.now()),e instanceof Uint8Array||e instanceof Uint8ClampedArray?o=await this._decodeBuffer_Uint8Array(e,t,i,r,n,s):e instanceof ArrayBuffer?o=await this._decodeBuffer_Uint8Array(new Uint8Array(e),t,i,r,n,s):e instanceof Blob&&(o=await this._decodeBuffer_Blob(e,t,i,r,n,s)),o}async _decodeFileInMemory_Uint8Array(e){return await new Promise(((t,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(e=>{if(e.success){let r;this._lastInnerDecodeDuration=e.duration;try{r=this._handleRetJsonString(e.decodeReturn)}catch(e){return i(e)}return t(r)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),D._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:e}})}))}async getRuntimeSettings(){return await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success){let t=JSON.parse(i.results);return null!=this.userDefinedRegion&&(t.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),e(t)}{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"getRuntimeSettings",id:i,instanceID:this._instanceID})}))}async updateRuntimeSettings(e){let t;if("string"==typeof e)if("speed"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=3,t.expectedBarcodesCount=0,t.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=5,t.expectedBarcodesCount=512,t.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region}else if("dense"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=9,t.expectedBarcodesCount=0,t.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=3,t.expectedBarcodesCount=0,t.localizationModes=[2,8,0,0,0,0,0,0]}else t=JSON.parse(e);else{if("object"!=typeof e)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(t=JSON.parse(JSON.stringify(e)),t.region instanceof Array){let e=t.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(t.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!D._bUseFullFeature){if(0!=(t.barcodeFormatIds&~(v.BF_ONED|v.BF_QR_CODE|v.BF_PDF417|v.BF_DATAMATRIX))||0!=t.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=t.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let e=t.region;if(e instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(e)),(e.regionLeft||e.regionTop||e.regionRight||e.regionBottom||e.regionMeasuredByPercentage)&&(e.regionLeft||e.regionTop||100!=e.regionRight||100!=e.regionBottom||!e.regionMeasuredByPercentage)?this.region=e:this.region=null,t.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((e,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(t=>{if(t.success){try{this._handleRetJsonString(t.updateReturn)}catch(e){i(e)}return e()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),D._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(t)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=R,await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success)return e();{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"resetRuntimeSettings",id:i,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!D._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success)return e(i.results);{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:i,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(e){if(!D._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof e)e=e;else{if("object"!=typeof e)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");e=JSON.stringify(e)}return await new Promise(((t,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.initReturn)}catch(e){i(e)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),D._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:e}})}))}async _decode_Blob(e,t){D._onLog&&D._onLog("_decode_Blob(blob: Blob)");let i=null,r=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(e)}catch(e){}i||(r=await function(e){return new Promise(((t,i)=>{let r=URL.createObjectURL(e),n=new Image;n.dbrObjUrl=r,n.src=r,n.onload=()=>{t(n)},n.onerror=e=>{i(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}}))}(e));let n=await this._decode_Image(i||r,t);return i&&i.close(),n}async _decode_ArrayBuffer(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Uint8Array(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Image(e,t){D._onLog&&D._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),t=t||{};let i,r,n=e instanceof HTMLImageElement?e.naturalWidth:e.width,s=e instanceof HTMLImageElement?e.naturalHeight:e.height,o=Math.max(n,s);if(o>this._maxCvsSideLength){let e=this._maxCvsSideLength/o;i=Math.round(n*e),r=Math.round(s*e)}else i=n,r=s;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(e,0,0,n,s,0,0,i,r),e.dbrObjUrl&&URL.revokeObjectURL(e.dbrObjUrl),await this._decode_Canvas(a,t)}async _decode_Canvas(e,t){if(D._onLog&&D._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";if(0===e.width||0===e.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=e,this.oriCanvasData=null);let i=(e.ctx2d||e.getContext("2d")).getImageData(0,0,e.width,e.height).data;return await this._decodeBuffer_Uint8Array(i,e.width,e.height,4*e.width,_.IPF_ABGR_8888,t)}async _decode_Video(e,t){if(D._onLog&&D._onLog("_decode_Video(video)"),!(e instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";t=t||{};let i,r,n=e.videoWidth,s=e.videoHeight,o=Math.max(n,s);if(o>this._maxCvsSideLength){let e=this._maxCvsSideLength/o;i=Math.round(n*e),r=Math.round(s*e)}else i=n,r=s;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(e,0,0,n,s,0,0,i,r),await this._decode_Canvas(a,t)}async _decode_DCEFrame(e,t){if(D._onLog&&D._onLog("_decode_DCEFrame(dceFrame)"),!D.isDCEFrame(e))return[];let i=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,colorMode:e.colorMode,data:new Uint8Array(e.data),toCanvas:e.toCanvas});const{width:r,height:n,colorMode:s,timeStamp:o}=e;let a;a=t&&t.bCopyData?new Uint8Array(e.data):e.data;let l=null;if(t?(l=JSON.parse(JSON.stringify(t)),l.timeStamp=o):l={timeStamp:o},"grey"===s)i=await this._decodeBuffer_Uint8Array(a,r,n,r,_.IPF_GrayScaled,l);else if("rgba"===s)i=await this._decodeBuffer_Uint8Array(a,r,n,4*r,_.IPF_ABGR_8888,l);else{if("bgra"!==s)throw new Error(`Color mode '${s}' is not supported to decode.`);i=await this._decodeBuffer_Uint8Array(a,r,n,4*r,_.IPF_ARGB_8888,l)}return i}async _decode_DSImage(e,t){if(D._onLog&&D._onLog("_decode_DSImage(dsImage)"),!D.isDSImage(e))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,pixelFormat:e.pixelFormat.toLowerCase(),data:new Uint8Array(e.data),toCanvas:function(){const e=document.createElement("canvas");let t;switch(e.width=this.width,e.height=this.height,this.pixelFormat){case"grey":t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;e{let r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{t(r.response)},r.onerror=()=>{i(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(i,t)}}async _decode_FilePath(e,t){throw D._onLog&&D._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(e,t,i,r,n,s,o){if(e.length>0)for(let a of e){let e=a.localizationResult;2==e.resultCoordinateType&&(e.x1*=.01*s,e.x2*=.01*s,e.x3*=.01*s,e.x4*=.01*s,e.y1*=.01*o,e.y2*=.01*o,e.y3*=.01*o,e.y4*=.01*o);let l=s/r,h=o/n;e.x1=e.x1/l+t,e.x2=e.x2/l+t,e.x3=e.x3/l+t,e.x4=e.x4/l+t,e.y1=e.y1/h+i,e.y2=e.y2/h+i,e.y3=e.y3/h+i,e.y4=e.y4/h+i,2==e.resultCoordinateType&&(e.x1*=100/r,e.x2*=100/r,e.x3*=100/r,e.x4*=100/r,e.y1*=100/n,e.y2*=100/n,e.y3*=100/n,e.y4*=100/n)}}static BarcodeReaderException(e,t){let i,r=p.DBR_UNKNOWN;return"number"==typeof e?(r=e,i=new Error(t)):i=new Error(e),i.code=r,i}_handleRetJsonString(e){let t=p;if(e.textResults){for(let t=0;t{let i=t.indexOf(":");e[t.substring(0,i)]=t.substring(i+1)})),i.exception=e}}return e.decodeRecords?this.decodeRecords=e.decodeRecords:this.decodeRecords={},this._lastErrorCode=e.exception,this._lastErrorString=e.description,e.exception&&!D._setWarnnedEx.has(e.description)&&(D._setWarnnedEx.add(e.description),console.warn(e.description)),e.textResults}if(e.exception==t.DBR_SUCCESS)return e.data;throw D.BarcodeReaderException(e.exception,e.description)}async setModeArgument(e,t,i,r){return await new Promise(((n,s)=>{let o=D._nextTaskID++;D._taskCallbackMap.set(o,(e=>{if(e.success){try{this._handleRetJsonString(e.setReturn)}catch(e){return s(e)}return n()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,s(t)}})),D._dbrWorker.postMessage({type:"setModeArgument",id:o,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:i,argumentValue:r}})}))}async getModeArgument(e,t,i){return await new Promise(((r,n)=>{let s=D._nextTaskID++;D._taskCallbackMap.set(s,(e=>{if(e.success){let t;try{t=this._handleRetJsonString(e.getReturn)}catch(e){return n(e)}return r(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),D._dbrWorker.postMessage({type:"getModeArgument",id:s,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:i}})}))}async getIntermediateResults(){return await new Promise(((e,t)=>{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success)return e(i.results);{let e=new Error(i.message);return e.stack=i.stack+"\n"+e.stack,t(e)}})),D._dbrWorker.postMessage({type:"getIntermediateResults",id:i,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let e=await this.getIntermediateResults(),t=[];for(let i of e)if(i.dataType==m.IMRDT_IMAGE)for(let e of i.results){const i=e.bytes;let r;switch(D._onLog&&D._onLog(" "+i.length+" "+i.byteLength+" "+e.width+" "+e.height+" "+e.stride+" "+e.format),e.format){case _.IPF_ABGR_8888:r=new Uint8ClampedArray(i);break;case _.IPF_RGB_888:{const e=i.length/3;r=new Uint8ClampedArray(4*e);for(let t=0;t{let i=D._nextTaskID++;D._taskCallbackMap.set(i,(i=>{if(i.success){let t=i.results;return t.intervalTime=this.intervalTime,t.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,t.soundOnSuccessfullRead=this.soundSource,t.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,t.vibrateDuration=this.vibrateDuration,t.captureAndDecodeInParallel=this.captureAndDecodeInParallel,e(t)}{let e=new Error(i.message);return e.stack+="\n"+i.stack,t(e)}})),D._dbrWorker.postMessage({type:"getScanSettings",id:i,instanceID:this._instanceID})}))}async updateScanSettings(e){if(!e)return;const t=JSON.parse(JSON.stringify(e));return t.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(t.intervalTime,0),delete t.intervalTime),t.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=t.whenToPlaySoundforSuccessfulRead,delete t.whenToPlaySoundforSuccessfulRead),t.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=t.soundOnSuccessfullRead,delete t.soundOnSuccessfullRead),t.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=t.whenToVibrateforSuccessfulRead,delete t.whenToVibrateforSuccessfulRead),t.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=t.vibrateDuration,delete t.vibrateDuration),t.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=t.captureAndDecodeInParallel,delete t.captureAndDecodeInParallel),await new Promise(((e,i)=>{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack+="\n"+t.stack,i(e)}})),D._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:t}})}))}_cloneDecodeResults(e){if(e instanceof Array){let t=[];for(let i of e)t.push(this._cloneDecodeResults(i));return t}{let t=e,i=JSON.parse(JSON.stringify(t,((e,t)=>"oriVideoCanvas"==e||"searchRegionCanvas"==e?void 0:t)));return i}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return D._onLog&&D._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));D._onLog&&D._onLog("======= once read ======="),D._onLog&&(this._timeStartDecode=Date.now());let e=null,t=null;if(this.dce)e=this._getVideoFrame();else if(this._imgSource&&(t=await this._imgSource.getImage(),!D.isDSImage(t)))throw new Error("Invalid DSImage.");if(!e&&!t)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let i=[];if(e){i=await this._decode_DCEFrame(e,{bScanner:!0,bCopyData:!1});let t=null;if(i&&i.length){const{sx:r,sy:n,width:s,height:o,_sWidth:a,_sHeight:l}=e;t=i.map((e=>({localizationResult:JSON.parse(JSON.stringify(e.localizationResult))}))),D.recalculateResultLocation(t,r,n,a,l,s,o)}this._drawResults(t)}else t&&(i=await this._decode_DSImage(t,{bScanner:!0,bCopyData:!1}));return i})().then((e=>{if(D._onLog&&D._onLog(e),this.dce&&this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost;const i=()=>{let i=0;if(t&&t.length){let r=Math.min(...e),n=Math.max(...t);r&&n&&(i=r-n)}else i=0;return i>0?i:0};(()=>{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=i()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of e)if(0==i.resultState){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of e)if(0==i.resultState){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onImageRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultState&&1!=e.resultState||this.onImageRead(t);this.onImageRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultState&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),D._onLog&&D._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;e=this.dce.getFrameFromBuffer();const t=e=>{if(!e)return;let t=e.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(t)};t(e)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),e=this.dce.getFrame();return e}_drawResults(e){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const t=this._dbrDrawingLayer;if(t.clearDrawingItems(),e&&e.length)for(let i of e){const e=i.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:e.x1,y:e.y1},{x:e.x2,y:e.y2},{x:e.x3,y:e.y3},{x:e.x4,y:e.y4}]);t.addDrawingItem(r)}}async startScanning(e){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let t=null;return this.dce&&(this.dce.isOpen()?(e&&this.dce.appendAndShowUI(),t=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):t=await this.dce.open(e),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),t):void 0}stopScanning(e){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",e))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(e){if(e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(D._onLog&&D._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let e=D._nextTaskID++;D._taskCallbackMap.set(e,(e=>{if(!e.success){let t=new Error(e.message);throw t.stack=e.stack+"\n"+t.stack,t}})),D._dbrWorker.postMessage({type:"destroyContext",id:e,instanceID:this._instanceID})}}D._jsVersion="9.2.12",D._jsEditVersion="20220727",D._version=`loading...(JS ${D._jsVersion}.${D._jsEditVersion})`,D._license=d,D._sessionPassword=f,D.browserInfo=s,D._workerName=`dbr-${D._jsVersion}.browser.worker.js`,D._engineResourcePath=c,D._licenseServer=[],D._deviceFriendlyName="",D._isShowRelDecodeTimeInResults=!1,D._bWasmDebug=!1,D._bNeverShowDialog=!1,D.__bUseFullFeature=!0,D._nextTaskID=0,D._taskCallbackMap=new Map,D._pLoad=new class extends Promise{constructor(e){let t,i;super(((e,r)=>{t=e,i=r})),this._s="pending",this.resolve=e=>{this.isPending&&(y(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",i(e))},this.task=e}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,y(e)?t=e:"function"==typeof e&&(t=new Promise(e)),t&&(async()=>{try{const i=await t;e===this._task&&this.resolve(i)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}},D._lastErrorCode=0,D._lastErrorString="",D._setWarnnedEx=new Set,D._defaultUIElementURL="@engineResourcePath/dbr.ui.html";var M={653:(e,t,i)=>{var r,n,s,o,a,l,h,c,u,d,f,g,_,p,m,v,y,S,b,C,w,T=T||{version:"5.2.1"};if(t.fabric=T,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?T.document=document:T.document=document.implementation.createHTMLDocument(""),T.window=window;else{var x=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;T.document=x.document,T.jsdomImplForWrapper=i(898).implForWrapper,T.nodeCanvas=i(245).Canvas,T.window=x,DOMParser=T.window.DOMParser}function A(e,t){var i=e.canvas,r=t.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var s=i.height-r.height;n.drawImage(i,0,s,r.width,r.height,0,0,r.width,r.height)}function O(e,t){var i=t.targetCanvas.getContext("2d"),r=t.destinationWidth,n=t.destinationHeight,s=r*n*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);e.readPixels(0,0,r,n,e.RGBA,e.UNSIGNED_BYTE,o);var l=new ImageData(a,r,n);i.putImageData(l,0,0)}T.isTouchSupported="ontouchstart"in T.window||"ontouchstart"in T.document||T.window&&T.window.navigator&&T.window.navigator.maxTouchPoints>0,T.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,T.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],T.DPI=96,T.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",T.commaWsp="(?:\\s+,?\\s*|,\\s*)",T.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,T.reNonWord=/[ \n\.,;!\?\-]/,T.fontPaths={},T.iMatrix=[1,0,0,1,0,0],T.svgNS="http://www.w3.org/2000/svg",T.perfLimitSizeTotal=2097152,T.maxCacheSideLimit=4096,T.minCacheSideLimit=256,T.charWidthsCache={},T.textureSize=2048,T.disableStyleCopyPaste=!1,T.enableGLFiltering=!0,T.devicePixelRatio=T.window.devicePixelRatio||T.window.webkitDevicePixelRatio||T.window.mozDevicePixelRatio||1,T.browserShadowBlurConstant=1,T.arcToSegmentsCache={},T.boundsOfCurveCache={},T.cachesBoundsOfCurve=!0,T.forceGLPutImageData=!1,T.initFilterBackend=function(){return T.enableGLFiltering&&T.isWebglSupported&&T.isWebglSupported(T.textureSize)?(console.log("max texture size: "+T.maxTextureSize),new T.WebglFilterBackend({tileSize:T.textureSize})):T.Canvas2dFilterBackend?new T.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=T),function(){function e(e,t){if(this.__eventListeners[e]){var i=this.__eventListeners[e];t?i[i.indexOf(t)]=!1:T.util.array.fill(i,!1)}}function t(e,t){var i=function(){t.apply(this,arguments),this.off(e,i)}.bind(this);this.on(e,i)}T.Observable={fire:function(e,t){if(!this.__eventListeners)return this;var i=this.__eventListeners[e];if(!i)return this;for(var r=0,n=i.length;r-1||!!t&&this._objects.some((function(t){return"function"==typeof t.contains&&t.contains(e,!0)}))},complexity:function(){return this._objects.reduce((function(e,t){return e+(t.complexity?t.complexity():0)}),0)}},T.CommonMethods={_setOptions:function(e){for(var t in e)this.set(t,e[t])},_initGradient:function(e,t){!e||!e.colorStops||e instanceof T.Gradient||this.set(t,new T.Gradient(e))},_initPattern:function(e,t,i){!e||!e.source||e instanceof T.Pattern?i&&i():this.set(t,new T.Pattern(e,i))},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return"object"==typeof e?this._setObject(e):this._set(e,t),this},_set:function(e,t){this[e]=t},toggle:function(e){var t=this.get(e);return"boolean"==typeof t&&this.set(e,!t),this},get:function(e){return this[e]}},r=t,n=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,l=Math.PI/2,T.util={cos:function(e){if(0===e)return 1;switch(e<0&&(e=-e),e/l){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},sin:function(e){if(0===e)return 0;var t=1;switch(e<0&&(t=-1),e/l){case 1:return t;case 2:return 0;case 3:return-t}return Math.sin(e)},removeFromArray:function(e,t){var i=e.indexOf(t);return-1!==i&&e.splice(i,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*a},radiansToDegrees:function(e){return e/a},rotatePoint:function(e,t,i){var r=new T.Point(e.x-t.x,e.y-t.y),n=T.util.rotateVector(r,i);return new T.Point(n.x,n.y).addEquals(t)},rotateVector:function(e,t){var i=T.util.sin(t),r=T.util.cos(t);return{x:e.x*r-e.y*i,y:e.x*i+e.y*r}},createVector:function(e,t){return new T.Point(t.x-e.x,t.y-e.y)},calcAngleBetweenVectors:function(e,t){return Math.acos((e.x*t.x+e.y*t.y)/(Math.hypot(e.x,e.y)*Math.hypot(t.x,t.y)))},getHatVector:function(e){return new T.Point(e.x,e.y).multiply(1/Math.hypot(e.x,e.y))},getBisector:function(e,t,i){var r=T.util.createVector(e,t),n=T.util.createVector(e,i),s=T.util.calcAngleBetweenVectors(r,n),o=s*(0===T.util.calcAngleBetweenVectors(T.util.rotateVector(r,s),n)?1:-1)/2;return{vector:T.util.getHatVector(T.util.rotateVector(r,o)),angle:s}},projectStrokeOnPoints:function(e,t,i){var r=[],n=t.strokeWidth/2,s=t.strokeUniform?new T.Point(1/t.scaleX,1/t.scaleY):new T.Point(1,1),o=function(e){var t=n/Math.hypot(e.x,e.y);return new T.Point(e.x*t*s.x,e.y*t*s.y)};return e.length<=1||e.forEach((function(a,l){var h,c,u=new T.Point(a.x,a.y);0===l?(c=e[l+1],h=i?o(T.util.createVector(c,u)).addEquals(u):e[e.length-1]):l===e.length-1?(h=e[l-1],c=i?o(T.util.createVector(h,u)).addEquals(u):e[0]):(h=e[l-1],c=e[l+1]);var d,f,g=T.util.getBisector(u,h,c),_=g.vector,p=g.angle;if("miter"===t.strokeLineJoin&&(d=-n/Math.sin(p/2),f=new T.Point(_.x*d*s.x,_.y*d*s.y),Math.hypot(f.x,f.y)/n<=t.strokeMiterLimit))return r.push(u.add(f)),void r.push(u.subtract(f));d=-n*Math.SQRT2,f=new T.Point(_.x*d*s.x,_.y*d*s.y),r.push(u.add(f)),r.push(u.subtract(f))})),r},transformPoint:function(e,t,i){return i?new T.Point(t[0]*e.x+t[2]*e.y,t[1]*e.x+t[3]*e.y):new T.Point(t[0]*e.x+t[2]*e.y+t[4],t[1]*e.x+t[3]*e.y+t[5])},makeBoundingBoxFromPoints:function(e,t){if(t)for(var i=0;i0&&(t>r?t-=r:t=0,i>r?i-=r:i=0);var n,s=!0,o=e.getImageData(t,i,2*r||1,2*r||1),a=o.data.length;for(n=3;n=n?s-n:2*Math.PI-(n-s)}function s(e,t,i){for(var s=i[1],o=i[2],a=i[3],l=i[4],h=i[5],c=function(e,t,i,s,o,a,l){var h=Math.PI,c=l*h/180,u=T.util.sin(c),d=T.util.cos(c),f=0,g=0,_=-d*e*.5-u*t*.5,p=-d*t*.5+u*e*.5,m=(i=Math.abs(i))*i,v=(s=Math.abs(s))*s,y=p*p,S=_*_,b=m*v-m*y-v*S,C=0;if(b<0){var w=Math.sqrt(1-b/(m*v));i*=w,s*=w}else C=(o===a?-1:1)*Math.sqrt(b/(m*y+v*S));var x=C*i*p/s,A=-C*s*_/i,O=d*x-u*A+.5*e,I=u*x+d*A+.5*t,E=n(1,0,(_-x)/i,(p-A)/s),R=n((_-x)/i,(p-A)/s,(-_-x)/i,(-p-A)/s);0===a&&R>0?R-=2*h:1===a&&R<0&&(R+=2*h);for(var D=Math.ceil(Math.abs(R/h*2)),M=[],L=R/D,P=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),F=E+L,k=0;kC)for(var x=1,A=_.length;x2;for(t=t||0,h&&(a=e[2].xe[i-2].x?1:n.x===e[i-2].x?0:-1,l=n.y>e[i-2].y?1:n.y===e[i-2].y?0:-1),r.push(["L",n.x+a*t,n.y+l*t]),r},T.util.getPathSegmentsInfo=d,T.util.getBoundsOfCurve=function(t,i,r,n,s,o,a,l){var h;if(T.cachesBoundsOfCurve&&(h=e.call(arguments),T.boundsOfCurveCache[h]))return T.boundsOfCurveCache[h];var c,u,d,f,g,_,p,m,v=Math.sqrt,y=Math.min,S=Math.max,b=Math.abs,C=[],w=[[],[]];u=6*t-12*r+6*s,c=-3*t+9*r-9*s+3*a,d=3*r-3*t;for(var x=0;x<2;++x)if(x>0&&(u=6*i-12*n+6*o,c=-3*i+9*n-9*o+3*l,d=3*n-3*i),b(c)<1e-12){if(b(u)<1e-12)continue;0<(f=-d/u)&&f<1&&C.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(m=v(p)))/(2*c))&&g<1&&C.push(g),0<(_=(-u-m)/(2*c))&&_<1&&C.push(_));for(var A,O,I,E=C.length,R=E;E--;)A=(I=1-(f=C[E]))*I*I*t+3*I*I*f*r+3*I*f*f*s+f*f*f*a,w[0][E]=A,O=I*I*I*i+3*I*I*f*n+3*I*f*f*o+f*f*f*l,w[1][E]=O;w[0][R]=t,w[1][R]=i,w[0][R+1]=a,w[1][R+1]=l;var D=[{x:y.apply(null,w[0]),y:y.apply(null,w[1])},{x:S.apply(null,w[0]),y:S.apply(null,w[1])}];return T.cachesBoundsOfCurve&&(T.boundsOfCurveCache[h]=D),D},T.util.getPointOnPath=function(e,t,i){i||(i=d(e));for(var r=0;t-i[r].length>0&&r1e-4;)i=l(s),n=s,(r=o(h.x,h.y,i.x,i.y))+a>t?(s-=c,c/=2):(h=i,s+=c,a+=r);return i.angle=u(n),i}(s,t)}},T.util.transformPath=function(e,t,i){return i&&(t=T.util.multiplyTransformMatrices(t,[1,0,0,1,-i.x,-i.y])),e.map((function(e){for(var i=e.slice(0),r={},n=1;n=t}))}}}(),function(){function e(t,i,r){if(r)if(!T.isLikelyNode&&i instanceof Element)t=i;else if(i instanceof Array){t=[];for(var n=0,s=i.length;n57343)return e.charAt(t);if(55296<=i&&i<=56319){if(e.length<=t+1)throw"High surrogate without following low surrogate";var r=e.charCodeAt(t+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return e.charAt(t)+e.charAt(t+1)}if(0===t)throw"Low surrogate without preceding high surrogate";var n=e.charCodeAt(t-1);if(55296>n||n>56319)throw"Low surrogate without preceding high surrogate";return!1}T.util.string={camelize:function(e){return e.replace(/-+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))},capitalize:function(e,t){return e.charAt(0).toUpperCase()+(t?e.slice(1):e.slice(1).toLowerCase())},escapeXml:function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(t){var i,r=0,n=[];for(r=0;r-1?e.prototype[n]=function(e){return function(){var i=this.constructor.superclass;this.constructor.superclass=r;var n=t[e].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==e)return n}}(n):e.prototype[n]=t[n],i&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};function n(){}function s(t){for(var i=null,r=this;r.constructor.superclass;){var n=r.constructor.superclass.prototype[t];if(r[t]!==n){i=n;break}r=r.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,e.call(arguments,1)):i.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",this)}T.util.createClass=function(){var i=null,o=e.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(n.prototype=i.prototype,a.prototype=new n,i.subclasses.push(a));for(var l=0,h=o.length;l-1||"touch"===e.pointerType},d="string"==typeof(u=T.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,_=function(e){return e},d?_=function(e,t){return e.style.opacity=t,e}:f&&(_=function(e,t){var i=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(t=t>=.9999?"":"alpha(opacity="+100*t+")",i.filter=i.filter.replace(g,t)):i.filter+=" alpha(opacity="+100*t+")",e}),T.util.setStyle=function(e,t){var i=e.style;if(!i)return e;if("string"==typeof t)return e.style.cssText+=";"+t,t.indexOf("opacity")>-1?_(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)"opacity"===r?_(e,t[r]):i["float"===r||"cssFloat"===r?void 0===i.styleFloat?"cssFloat":"styleFloat":r]=t[r];return e},function(){var e,t,i,r,n=Array.prototype.slice,s=function(e){return n.call(e,0)};try{e=s(T.document.childNodes)instanceof Array}catch(e){}function o(e,t){var i=T.document.createElement(e);for(var r in t)"class"===r?i.className=t[r]:"for"===r?i.htmlFor=t[r]:i.setAttribute(r,t[r]);return i}function a(e){for(var t=0,i=0,r=T.document.documentElement,n=T.document.body||{scrollLeft:0,scrollTop:0};e&&(e.parentNode||e.host)&&((e=e.parentNode||e.host)===T.document?(t=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(t+=e.scrollLeft||0,i+=e.scrollTop||0),1!==e.nodeType||"fixed"!==e.style.position););return{left:t,top:i}}e||(s=function(e){for(var t=new Array(e.length),i=e.length;i--;)t[i]=e[i];return t}),t=T.document.defaultView&&T.document.defaultView.getComputedStyle?function(e,t){var i=T.document.defaultView.getComputedStyle(e,null);return i?i[t]:void 0}:function(e,t){var i=e.style[t];return!i&&e.currentStyle&&(i=e.currentStyle[t]),i},i=T.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",T.util.makeElementUnselectable=function(e){return void 0!==e.onselectstart&&(e.onselectstart=T.util.falseFunction),r?e.style[r]="none":"string"==typeof e.unselectable&&(e.unselectable="on"),e},T.util.makeElementSelectable=function(e){return void 0!==e.onselectstart&&(e.onselectstart=null),r?e.style[r]="":"string"==typeof e.unselectable&&(e.unselectable=""),e},T.util.setImageSmoothing=function(e,t){e.imageSmoothingEnabled=e.imageSmoothingEnabled||e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled||e.oImageSmoothingEnabled,e.imageSmoothingEnabled=t},T.util.getById=function(e){return"string"==typeof e?T.document.getElementById(e):e},T.util.toArray=s,T.util.addClass=function(e,t){e&&-1===(" "+e.className+" ").indexOf(" "+t+" ")&&(e.className+=(e.className?" ":"")+t)},T.util.makeElement=o,T.util.wrapElement=function(e,t,i){return"string"==typeof t&&(t=o(t,i)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t},T.util.getScrollLeftTop=a,T.util.getElementOffset=function(e){var i,r,n=e&&e.ownerDocument,s={left:0,top:0},o={left:0,top:0},l={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return o;for(var h in l)o[l[h]]+=parseInt(t(e,h),10)||0;return i=n.documentElement,void 0!==e.getBoundingClientRect&&(s=e.getBoundingClientRect()),r=a(e),{left:s.left+r.left-(i.clientLeft||0)+o.left,top:s.top+r.top-(i.clientTop||0)+o.top}},T.util.getNodeCanvas=function(e){var t=T.jsdomImplForWrapper(e);return t._canvas||t._image},T.util.cleanUpJsdomNode=function(e){if(T.isLikelyNode){var t=T.jsdomImplForWrapper(e);t&&(t._image=null,t._canvas=null,t._currentSrc=null,t._attributes=null,t._classList=null)}}}(),function(){function e(){}T.util.request=function(t,i){i||(i={});var r=i.method?i.method.toUpperCase():"GET",n=i.onComplete||function(){},s=new T.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(n(s),s.onreadystatechange=e)},"GET"===r&&(o=null,"string"==typeof i.parameters&&(t=function(e,t){return e+(/\?/.test(e)?"&":"?")+t}(t,i.parameters))),s.open(r,t,!0),"POST"!==r&&"PUT"!==r||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),T.log=console.log,T.warn=console.warn,function(){var e=T.util.object.extend,t=T.util.object.clone,i=[];function r(){return!1}function n(e,t,i,r){return-i*Math.cos(e/r*(Math.PI/2))+i+t}T.util.object.extend(i,{cancelAll:function(){var e=this.splice(0);return e.forEach((function(e){e.cancel()})),e},cancelByCanvas:function(e){if(!e)return[];var t=this.filter((function(t){return"object"==typeof t.target&&t.target.canvas===e}));return t.forEach((function(e){e.cancel()})),t},cancelByTarget:function(e){var t=this.findAnimationsByTarget(e);return t.forEach((function(e){e.cancel()})),t},findAnimationIndex:function(e){return this.indexOf(this.findAnimation(e))},findAnimation:function(e){return this.find((function(t){return t.cancel===e}))},findAnimationsByTarget:function(e){return e?this.filter((function(t){return t.target===e})):[]}});var s=T.window.requestAnimationFrame||T.window.webkitRequestAnimationFrame||T.window.mozRequestAnimationFrame||T.window.oRequestAnimationFrame||T.window.msRequestAnimationFrame||function(e){return T.window.setTimeout(e,1e3/60)},o=T.window.cancelAnimationFrame||T.window.clearTimeout;function a(){return s.apply(T.window,arguments)}T.util.animate=function(i){i||(i={});var s,o=!1,l=function(){var e=T.runningAnimations.indexOf(s);return e>-1&&T.runningAnimations.splice(e,1)[0]};return s=e(t(i),{cancel:function(){return o=!0,l()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),T.runningAnimations.push(s),a((function(e){var t,h=e||+new Date,c=i.duration||500,u=h+c,d=i.onChange||r,f=i.abort||r,g=i.onComplete||r,_=i.easing||n,p="startValue"in i&&i.startValue.length>0,m="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?m.map((function(e,t){return v[t]-m[t]})):v-m);i.onStart&&i.onStart(),function e(i){var r=(t=i||+new Date)>u?c:t-h,n=r/c,S=p?m.map((function(e,t){return _(r,m[t],y[t],c)})):_(r,m,y,c),b=p?Math.abs((S[0]-m[0])/y[0]):Math.abs((S-m)/y);if(s.currentValue=p?S.slice():S,s.completionRate=b,s.durationRate=n,!o){if(!f(S,b,n))return t>u?(s.currentValue=p?v.slice():v,s.completionRate=1,s.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void l()):(d(S,b,n),void a(e));l()}}(h)})),s.cancel},T.util.requestAnimFrame=a,T.util.cancelAnimFrame=function(){return o.apply(T.window,arguments)},T.runningAnimations=i}(),function(){function e(e,t,i){var r="rgba("+parseInt(e[0]+i*(t[0]-e[0]),10)+","+parseInt(e[1]+i*(t[1]-e[1]),10)+","+parseInt(e[2]+i*(t[2]-e[2]),10);return(r+=","+(e&&t?parseFloat(e[3]+i*(t[3]-e[3])):1))+")"}T.util.animateColor=function(t,i,r,n){var s=new T.Color(t).getSource(),o=new T.Color(i).getSource(),a=n.onComplete,l=n.onChange;return n=n||{},T.util.animate(T.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(t,i,r,s){return e(i,r,n.colorEasing?n.colorEasing(t,s):1-Math.cos(t/s*(Math.PI/2)))},onComplete:function(t,i,r){if(a)return a(e(o,o,0),i,r)},onChange:function(t,i,r){if(l){if(Array.isArray(t))return l(e(t,t,0),i,r);l(t,i,r)}}}))}}(),function(){function e(e,t,i,r){return e-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===e||"xlink:href"===e||"font"===e)return i;if("imageSmoothing"===e)return"optimizeQuality"===i;a=l?i.map(s):s(i,n)}}else i="";return!l&&isNaN(a)?i:a}function f(e){return new RegExp("^("+e.join("|")+")\\b","i")}function g(e,t){var i,r,n,s,o=[];for(n=0,s=t.length;n1;)l.shift(),h=t.util.multiplyTransformMatrices(h,l[0]);return h}}();var v=new RegExp("^\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*,?\\s*("+t.reNum+"+)\\s*$");function y(e){if(!t.svgViewBoxElementsRegEx.test(e.nodeName))return{};var i,r,n,o,a,l,h=e.getAttribute("viewBox"),c=1,u=1,d=e.getAttribute("width"),f=e.getAttribute("height"),g=e.getAttribute("x")||0,_=e.getAttribute("y")||0,p=e.getAttribute("preserveAspectRatio")||"",m=!h||!(h=h.match(v)),y=!d||!f||"100%"===d||"100%"===f,S=m&&y,b={},C="",w=0,T=0;if(b.width=0,b.height=0,b.toBeParsed=S,m&&(g||_)&&e.parentNode&&"#document"!==e.parentNode.nodeName&&(C=" translate("+s(g)+" "+s(_)+") ",a=(e.getAttribute("transform")||"")+C,e.setAttribute("transform",a),e.removeAttribute("x"),e.removeAttribute("y")),S)return b;if(m)return b.width=s(d),b.height=s(f),b;if(i=-parseFloat(h[1]),r=-parseFloat(h[2]),n=parseFloat(h[3]),o=parseFloat(h[4]),b.minX=i,b.minY=r,b.viewBoxWidth=n,b.viewBoxHeight=o,y?(b.width=n,b.height=o):(b.width=s(d),b.height=s(f),c=b.width/n,u=b.height/o),"none"!==(p=t.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),w=b.width-n*c,T=b.height-o*c,"Mid"===p.alignX&&(w/=2),"Mid"===p.alignY&&(T/=2),"Min"===p.alignX&&(w=0),"Min"===p.alignY&&(T=0)),1===c&&1===u&&0===i&&0===r&&0===g&&0===_)return b;if((g||_)&&"#document"!==e.parentNode.nodeName&&(C=" translate("+s(g)+" "+s(_)+") "),a=C+" matrix("+c+" 0 0 "+u+" "+(i*c+w)+" "+(r*u+T)+") ","svg"===e.nodeName){for(l=e.ownerDocument.createElementNS(t.svgNS,"g");e.firstChild;)l.appendChild(e.firstChild);e.appendChild(l)}else(l=e).removeAttribute("x"),l.removeAttribute("y"),a=l.getAttribute("transform")+a;return l.setAttribute("transform",a),b}function S(e,t){var i="xlink:href",r=m(e,t.getAttribute(i).slice(1));if(r&&r.getAttribute(i)&&S(e,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(e){r&&!t.hasAttribute(e)&&r.hasAttribute(e)&&t.setAttribute(e,r.getAttribute(e))})),!t.children.length)for(var n=r.cloneNode(!0);n.firstChild;)t.appendChild(n.firstChild);t.removeAttribute(i)}t.parseSVGDocument=function(e,i,n,s){if(e){!function(e){for(var i=g(e,["use","svg:use"]),r=0;i.length&&re.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return void 0===t&&(t=.5),t=Math.max(Math.min(1,t),0),new i(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,i=this.y-e.y;return Math.sqrt(t*t+i*i)},midPointFrom:function(e){return this.lerp(e)},min:function(e){return new i(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new i(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setFromPoint:function(e){return this.x=e.x,this.y=e.y,this},swap:function(e){var t=this.x,i=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=i},clone:function(){return new i(this.x,this.y)}})}(t),function(e){var t=e.fabric||(e.fabric={});function i(e){this.status=e,this.points=[]}t.Intersection?t.warn("fabric.Intersection is already defined"):(t.Intersection=i,t.Intersection.prototype={constructor:i,appendPoint:function(e){return this.points.push(e),this},appendPoints:function(e){return this.points=this.points.concat(e),this}},t.Intersection.intersectLineLine=function(e,r,n,s){var o,a=(s.x-n.x)*(e.y-n.y)-(s.y-n.y)*(e.x-n.x),l=(r.x-e.x)*(e.y-n.y)-(r.y-e.y)*(e.x-n.x),h=(s.y-n.y)*(r.x-e.x)-(s.x-n.x)*(r.y-e.y);if(0!==h){var c=a/h,u=l/h;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new t.Point(e.x+c*(r.x-e.x),e.y+c*(r.y-e.y))):o=new i}else o=new i(0===a||0===l?"Coincident":"Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var n,s,o,a,l=new i,h=r.length;for(a=0;a0&&(l.status="Intersection"),l},t.Intersection.intersectPolygonPolygon=function(e,t){var r,n=new i,s=e.length;for(r=0;r0&&(n.status="Intersection"),n},t.Intersection.intersectPolygonRectangle=function(e,r,n){var s=r.min(n),o=r.max(n),a=new t.Point(o.x,s.y),l=new t.Point(s.x,o.y),h=i.intersectLinePolygon(s,a,e),c=i.intersectLinePolygon(a,o,e),u=i.intersectLinePolygon(o,l,e),d=i.intersectLinePolygon(l,s,e),f=new i;return f.appendPoints(h.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(t),function(e){var t=e.fabric||(e.fabric={});function i(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e}t.Color?t.warn("fabric.Color is already defined."):(t.Color=i,t.Color.prototype={_tryParsingColor:function(e){var t;e in i.colorNameMap&&(e=i.colorNameMap[e]),"transparent"===e&&(t=[255,255,255,0]),t||(t=i.sourceFromHex(e)),t||(t=i.sourceFromRgb(e)),t||(t=i.sourceFromHsl(e)),t||(t=[0,0,0,1]),t&&this.setSource(t)},_rgbToHsl:function(e,i,r){e/=255,i/=255,r/=255;var n,s,o,a=t.util.array.max([e,i,r]),l=t.util.array.min([e,i,r]);if(o=(a+l)/2,a===l)n=s=0;else{var h=a-l;switch(s=o>.5?h/(2-a-l):h/(a+l),a){case e:n=(i-r)/h+(i0)-(e<0)||+e};function f(e,t){var i=e.angle+u(Math.atan2(t.y,t.x))+360;return Math.round(i%360/45)}function g(e,i){var r=i.transform.target,n=r.canvas,s=t.util.object.clone(i);s.target=r,n&&n.fire("object:"+e,s),r.fire(e,i)}function _(e,t){var i=t.canvas,r=e[i.uniScaleKey];return i.uniformScaling&&!r||!i.uniformScaling&&r}function p(e){return e.originX===h&&e.originY===h}function m(e,t,i){var r=e.lockScalingX,n=e.lockScalingY;return!((!r||!n)&&(t||!r&&!n||!i)&&(!r||"x"!==t)&&(!n||"y"!==t))}function v(e,t,i,r){return{e,transform:t,pointer:{x:i,y:r}}}function y(e){return function(t,i,r,n){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),l=e(t,i,r,n);return s.setPositionByOrigin(a,i.originX,i.originY),l}}function S(e,t){return function(i,r,n,s){var o=t(i,r,n,s);return o&&g(e,v(i,r,n,s)),o}}function b(e,i,r,n,s){var o=e.target,a=o.controls[e.corner],l=o.canvas.getZoom(),h=o.padding/l,c=o.toLocalPoint(new t.Point(n,s),i,r);return c.x>=h&&(c.x-=h),c.x<=-h&&(c.x+=h),c.y>=h&&(c.y-=h),c.y<=h&&(c.y+=h),c.x-=a.offsetX,c.y-=a.offsetY,c}function C(e){return e.flipX!==e.flipY}function w(e,t,i,r,n){if(0!==e[t]){var s=n/e._getTransformedDimensions()[r]*e[i];e.set(i,s)}}function T(e,t,i,r){var n,h=t.target,c=h._getTransformedDimensions(0,h.skewY),d=b(t,t.originX,t.originY,i,r),f=Math.abs(2*d.x)-c.x,g=h.skewX;f<2?n=0:(n=u(Math.atan2(f/h.scaleX,c.y/h.scaleY)),t.originX===s&&t.originY===l&&(n=-n),t.originX===a&&t.originY===o&&(n=-n),C(h)&&(n=-n));var _=g!==n;if(_){var p=h._getTransformedDimensions().y;h.set("skewX",n),w(h,"skewY","scaleY","y",p)}return _}function x(e,t,i,r){var n,h=t.target,c=h._getTransformedDimensions(h.skewX,0),d=b(t,t.originX,t.originY,i,r),f=Math.abs(2*d.y)-c.y,g=h.skewY;f<2?n=0:(n=u(Math.atan2(f/h.scaleY,c.x/h.scaleX)),t.originX===s&&t.originY===l&&(n=-n),t.originX===a&&t.originY===o&&(n=-n),C(h)&&(n=-n));var _=g!==n;if(_){var p=h._getTransformedDimensions().x;h.set("skewY",n),w(h,"skewX","scaleX","x",p)}return _}function A(e,t,i,r,n){n=n||{};var s,o,a,l,h,u,f=t.target,g=f.lockScalingX,v=f.lockScalingY,y=n.by,S=_(e,f),C=m(f,y,S),w=t.gestureScale;if(C)return!1;if(w)o=t.scaleX*w,a=t.scaleY*w;else{if(s=b(t,t.originX,t.originY,i,r),h="y"!==y?d(s.x):1,u="x"!==y?d(s.y):1,t.signX||(t.signX=h),t.signY||(t.signY=u),f.lockScalingFlip&&(t.signX!==h||t.signY!==u))return!1;if(l=f._getTransformedDimensions(),S&&!y){var T=Math.abs(s.x)+Math.abs(s.y),x=t.original,A=T/(Math.abs(l.x*x.scaleX/f.scaleX)+Math.abs(l.y*x.scaleY/f.scaleY));o=x.scaleX*A,a=x.scaleY*A}else o=Math.abs(s.x*f.scaleX/l.x),a=Math.abs(s.y*f.scaleY/l.y);p(t)&&(o*=2,a*=2),t.signX!==h&&"y"!==y&&(t.originX=c[t.originX],o*=-1,t.signX=h),t.signY!==u&&"x"!==y&&(t.originY=c[t.originY],a*=-1,t.signY=u)}var O=f.scaleX,I=f.scaleY;return y?("x"===y&&f.set("scaleX",o),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!v&&f.set("scaleY",a)),O!==f.scaleX||I!==f.scaleY}n.scaleCursorStyleHandler=function(e,t,r){var n=_(e,r),s="";if(0!==t.x&&0===t.y?s="x":0===t.x&&0!==t.y&&(s="y"),m(r,s,n))return"not-allowed";var o=f(r,t);return i[o]+"-resize"},n.skewCursorStyleHandler=function(e,t,i){var n="not-allowed";if(0!==t.x&&i.lockSkewingY)return n;if(0!==t.y&&i.lockSkewingX)return n;var s=f(i,t)%4;return r[s]+"-resize"},n.scaleSkewCursorStyleHandler=function(e,t,i){return e[i.canvas.altActionKey]?n.skewCursorStyleHandler(e,t,i):n.scaleCursorStyleHandler(e,t,i)},n.rotationWithSnapping=S("rotating",y((function(e,t,i,r){var n=t,s=n.target,o=s.translateToOriginPoint(s.getCenterPoint(),n.originX,n.originY);if(s.lockRotation)return!1;var a,l=Math.atan2(n.ey-o.y,n.ex-o.x),h=Math.atan2(r-o.y,i-o.x),c=u(h-l+n.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,_=Math.floor(c/d)*d;Math.abs(c-_)0?s:a:(c>0&&(n=u===o?s:a),c<0&&(n=u===o?a:s),C(l)&&(n=n===s?a:s)),t.originX=n,S("skewing",y(T))(e,t,i,r))},n.skewHandlerY=function(e,t,i,r){var n,a=t.target,c=a.skewY,u=t.originX;return!a.lockSkewingY&&(0===c?n=b(t,h,h,i,r).y>0?o:l:(c>0&&(n=u===s?o:l),c<0&&(n=u===s?l:o),C(a)&&(n=n===o?l:o)),t.originY=n,S("skewing",y(x))(e,t,i,r))},n.dragHandler=function(e,t,i,r){var n=t.target,s=i-t.offsetX,o=r-t.offsetY,a=!n.get("lockMovementX")&&n.left!==s,l=!n.get("lockMovementY")&&n.top!==o;return a&&n.set("left",s),l&&n.set("top",o),(a||l)&&g("moving",v(e,t,i,r)),a||l},n.scaleOrSkewActionName=function(e,t,i){var r=e[i.canvas.altActionKey];return 0===t.x?r?"skewX":"scaleY":0===t.y?r?"skewY":"scaleX":void 0},n.rotationStyleHandler=function(e,t,i){return i.lockRotation?"not-allowed":t.cursorStyle},n.fireEvent=g,n.wrapWithFixedAnchor=y,n.wrapWithFireEvent=S,n.getLocalPoint=b,t.controlsUtils=n}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.degreesToRadians,r=t.controlsUtils;r.renderCircleControl=function(e,t,i,r,n){r=r||{};var s,o=this.sizeX||r.cornerSize||n.cornerSize,a=this.sizeY||r.cornerSize||n.cornerSize,l=void 0!==r.transparentCorners?r.transparentCorners:n.transparentCorners,h=l?"stroke":"fill",c=!l&&(r.cornerStrokeColor||n.cornerStrokeColor),u=t,d=i;e.save(),e.fillStyle=r.cornerColor||n.cornerColor,e.strokeStyle=r.cornerStrokeColor||n.cornerStrokeColor,o>a?(s=o,e.scale(1,a/o),d=i*o/a):a>o?(s=a,e.scale(o/a,1),u=t*a/o):s=o,e.lineWidth=1,e.beginPath(),e.arc(u,d,s/2,0,2*Math.PI,!1),e[h](),c&&e.stroke(),e.restore()},r.renderSquareControl=function(e,t,r,n,s){n=n||{};var o=this.sizeX||n.cornerSize||s.cornerSize,a=this.sizeY||n.cornerSize||s.cornerSize,l=void 0!==n.transparentCorners?n.transparentCorners:s.transparentCorners,h=l?"stroke":"fill",c=!l&&(n.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;e.save(),e.fillStyle=n.cornerColor||s.cornerColor,e.strokeStyle=n.cornerStrokeColor||s.cornerStrokeColor,e.lineWidth=1,e.translate(t,r),e.rotate(i(s.angle)),e[h+"Rect"](-u,-d,o,a),c&&e.strokeRect(-u,-d,o,a),e.restore()}}(t),function(e){var t=e.fabric||(e.fabric={});t.Control=function(e){for(var t in e)this[t]=e[t]},t.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(e,t){return t.cursorStyle},getActionName:function(e,t){return t.actionName},getVisibility:function(e,t){var i=e._controlsVisibility;return i&&void 0!==i[t]?i[t]:this.visible},setVisibility:function(e){this.visible=e},positionHandler:function(e,i){return t.util.transformPoint({x:this.x*e.x+this.offsetX,y:this.y*e.y+this.offsetY},i)},calcCornerCoords:function(e,i,r,n,s){var o,a,l,h,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-t.util.degreesToRadians(e),_=Math.PI/2-d-t.util.degreesToRadians(e);o=f*t.util.cos(g),a=f*t.util.sin(g),l=f*t.util.cos(_),h=f*t.util.sin(_)}else f=.7071067812*(c&&u?c:i),g=t.util.degreesToRadians(45-e),o=l=f*t.util.cos(g),a=h=f*t.util.sin(g);return{tl:{x:r-h,y:n-l},tr:{x:r+o,y:n-a},bl:{x:r-o,y:n+a},br:{x:r+h,y:n+l}}},render:function(e,i,r,n,s){"circle"===((n=n||{}).cornerStyle||s.cornerStyle)?t.controlsUtils.renderCircleControl.call(this,e,i,r,n,s):t.controlsUtils.renderSquareControl.call(this,e,i,r,n,s)}}}(t),function(){function e(e,t){var i,r,n,s,o=e.getAttribute("style"),a=e.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var l=o.split(/\s*;\s*/);for(""===l[l.length-1]&&l.pop(),s=l.length;s--;){var h=l[s].split(/\s*:\s*/),c=h[0].trim(),u=h[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(n=u)}}return i||(i=e.getAttribute("stop-color")||"rgb(0,0,0)"),n||(n=e.getAttribute("stop-opacity")),r=(i=new T.Color(i)).getAlpha(),n=isNaN(parseFloat(n))?1:parseFloat(n),n*=r*t,{offset:a,color:i.toRgb(),opacity:n}}var t=T.util.object.clone;T.Gradient=T.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(e){e||(e={}),e.coords||(e.coords={});var t,i=this;Object.keys(e).forEach((function(t){i[t]=e[t]})),this.id?this.id+="_"+T.Object.__uid++:this.id=T.Object.__uid++,t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},"radial"===this.type&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.colorStops=e.colorStops.slice()},addColorStop:function(e){for(var t in e){var i=new T.Color(e[t]);this.colorStops.push({offset:parseFloat(t),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(e){var t={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return T.util.populateWithProperties(this,t,e),t},toSVG:function(e,i){var r,n,s,o,a=t(this.coords,!0),l=(i=i||{},t(this.colorStops,!0)),h=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():T.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(l.sort((function(e,t){return e.offset-t.offset})),"objectBoundingBox"===g?(u/=e.width,d/=e.height):(u+=e.width/2,d+=e.height/2),"path"===e.type&&"percentage"!==this.gradientUnits&&(u-=e.pathOffset.x,d-=e.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+T.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(h)for((l=l.concat()).reverse(),r=0,n=l.length;r0){var p=_/Math.max(a.r1,a.r2);for(r=0,n=l.length;r\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(e){var t,i,r,n=T.util.object.clone(this.coords);if(this.type){for("linear"===this.type?t=e.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(t=e.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2)),i=0,r=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,l,h,c=t.getElementsByTagName("stop"),u="userSpaceOnUse"===t.getAttribute("gradientUnits")?"pixels":"percentage",d=t.getAttribute("gradientTransform")||"",f=[],g=0,_=0;for("linearGradient"===t.nodeName||"LINEARGRADIENT"===t.nodeName?(o="linear",a=function(e){return{x1:e.getAttribute("x1")||0,y1:e.getAttribute("y1")||0,x2:e.getAttribute("x2")||"100%",y2:e.getAttribute("y2")||0}}(t)):(o="radial",a=function(e){return{x1:e.getAttribute("fx")||e.getAttribute("cx")||"50%",y1:e.getAttribute("fy")||e.getAttribute("cy")||"50%",r1:0,x2:e.getAttribute("cx")||"50%",y2:e.getAttribute("cy")||"50%",r2:e.getAttribute("r")||"50%"}}(t)),l=c.length;l--;)f.push(e(c[l],s));return h=T.parseTransformAttribute(d),function(e,t,i,r){var n,s;Object.keys(t).forEach((function(e){"Infinity"===(n=t[e])?s=1:"-Infinity"===n?s=0:(s=parseFloat(t[e],10),"string"==typeof n&&/^(\d+\.\d+)%|(\d+)%$/.test(n)&&(s*=.01,"pixels"===r&&("x1"!==e&&"x2"!==e&&"r2"!==e||(s*=i.viewBoxWidth||i.width),"y1"!==e&&"y2"!==e||(s*=i.viewBoxHeight||i.height)))),t[e]=s}))}(0,a,n,u),"pixels"===u&&(g=-i.left,_=-i.top),new T.Gradient({id:t.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:h,offsetX:g,offsetY:_})}})}(),m=T.util.toFixed,T.Pattern=T.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(e,t){if(e||(e={}),this.id=T.Object.__uid++,this.setOptions(e),!e.source||e.source&&"string"!=typeof e.source)t&&t(this);else{var i=this;this.source=T.util.createImage(),T.util.loadImage(e.source,(function(e,r){i.source=e,t&&t(i,r)}),null,this.crossOrigin)}},toObject:function(e){var t,i,r=T.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?t=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(t=this.source.toDataURL()),i={type:"pattern",source:t,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:m(this.offsetX,r),offsetY:m(this.offsetY,r),patternTransform:this.patternTransform?this.patternTransform.concat():null},T.util.populateWithProperties(this,i,e),i},toSVG:function(e){var t="function"==typeof this.source?this.source():this.source,i=t.width/e.width,r=t.height/e.height,n=this.offsetX/e.width,s=this.offsetY/e.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,s&&(r+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,n&&(i+=Math.abs(n))),t.src?o=t.src:t.toDataURL&&(o=t.toDataURL()),'\n\n\n'},setOptions:function(e){for(var t in e)this[t]=e[t]},toLive:function(e){var t=this.source;if(!t)return"";if(void 0!==t.src){if(!t.complete)return"";if(0===t.naturalWidth||0===t.naturalHeight)return""}return e.createPattern(t,this.repeat)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.toFixed;t.Shadow?t.warn("fabric.Shadow is already defined."):(t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(e){for(var i in"string"==typeof e&&(e=this._parseShadow(e)),e)this[i]=e[i];this.id=t.Object.__uid++},_parseShadow:function(e){var i=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var r=40,n=40,s=t.Object.NUM_FRACTION_DIGITS,o=t.util.rotateVector({x:this.offsetX,y:this.offsetY},t.util.degreesToRadians(-e.angle)),a=new t.Color(this.color);return e.width&&e.height&&(r=100*i((Math.abs(o.x)+this.blur)/e.width,s)+20,n=100*i((Math.abs(o.y)+this.blur)/e.height,s)+20),e.flipX&&(o.x*=-1),e.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var e={},i=t.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(t){this[t]!==i[t]&&(e[t]=this[t])}),this),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(t),function(){if(T.StaticCanvas)T.warn("fabric.StaticCanvas is already defined.");else{var e=T.util.object.extend,t=T.util.getElementOffset,i=T.util.removeFromArray,r=T.util.toFixed,n=T.util.transformPoint,s=T.util.invertTransform,o=T.util.getNodeCanvas,a=T.util.createCanvasElement,l=new Error("Could not initialize `canvas` element");T.StaticCanvas=T.util.createClass(T.CommonMethods,{initialize:function(e,t){t||(t={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(e,t)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:T.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(e,t){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(e),this._initOptions(t),this.interactive||this._initRetinaScaling(),t.overlayImage&&this.setOverlayImage(t.overlayImage,i),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,i),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,i),t.overlayColor&&this.setOverlayColor(t.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return T.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,T.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var e=T.devicePixelRatio;this.__initRetinaScaling(e,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(e,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(e,t,i){t.setAttribute("width",this.width*e),t.setAttribute("height",this.height*e),i.scale(e,e)},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,i){return this.__setBgOverlayImage("overlayImage",e,t,i)},setBackgroundImage:function(e,t,i){return this.__setBgOverlayImage("backgroundImage",e,t,i)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,i,r){return"string"==typeof t?T.util.loadImage(t,(function(t,n){if(t){var s=new T.Image(t,r);this[e]=s,s.canvas=this}i&&i(t,n)}),this,r&&r.crossOrigin):(r&&t.setOptions(r),this[e]=t,t&&(t.canvas=this),i&&i(t,!1)),this},__setBgOverlayColor:function(e,t,i){return this[e]=t,this._initGradient(t,e),this._initPattern(t,e,i),this},_createCanvasElement:function(){var e=a();if(!e)throw l;if(e.style||(e.style={}),void 0===e.getContext)throw l;return e},_initOptions:function(e){var t=this.lowerCanvasEl;this._setOptions(e),this.width=this.width||parseInt(t.width,10)||0,this.height=this.height||parseInt(t.height,10)||0,this.lowerCanvasEl.style&&(t.width=this.width,t.height=this.height,t.style.width=this.width+"px",t.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(e){e&&e.getContext?this.lowerCanvasEl=e:this.lowerCanvasEl=T.util.getById(e)||this._createCanvasElement(),T.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e,t){return this.setDimensions({width:e},t)},setHeight:function(e,t){return this.setDimensions({height:e},t)},setDimensions:function(e,t){var i;for(var r in t=t||{},e)i=e[r],t.cssOnly||(this._setBackstoreDimension(r,e[r]),i+="px",this.hasLostContext=!0),t.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),t.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.upperCanvasEl&&(this.upperCanvasEl[e]=t),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this[e]=t,this},_setCssDimension:function(e,t){return this.lowerCanvasEl.style[e]=t,this.upperCanvasEl&&(this.upperCanvasEl.style[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(e){var t,i,r,n=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=e,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",t),this._setSVGObjects(i,t),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",t),i.push(""),i.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('\n','\n')},_setSVGHeader:function(e,t){var i,n=t.width||this.width,s=t.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=T.Object.NUM_FRACTION_DIGITS;t.viewBox?o='viewBox="'+t.viewBox.x+" "+t.viewBox.y+" "+t.viewBox.width+" "+t.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),e.push("\n',"Created with Fabric.js ",T.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(t),"\n")},createSVGClipPathMarkup:function(e){var t=this.clipPath;return t?(t.clipPathId="CLIPPATH_"+T.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(e.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var e=this;return["background","overlay"].map((function(t){var i=e[t+"Color"];if(i&&i.toLive){var r=e[t+"Vpt"],n=e.viewportTransform,s={width:e.width/(r?n[0]:1),height:e.height/(r?n[3]:1)};return i.toSVG(s,{additionalTransform:r?T.util.matrixToSVG(n):""})}})).join("")},createSVGFontFacesMarkup:function(){var e,t,i,r,n,s,o,a,l="",h={},c=T.fontPaths,u=[];for(this._objects.forEach((function e(t){u.push(t),t._objects&&t._objects.forEach(e)})),o=0,a=u.length;o',"\n",l,"","\n"].join("")),l},_setSVGObjects:function(e,t){var i,r,n,s=this._objects;for(r=0,n=s.length;r\n")}else e.push('\n")},sendToBack:function(e){if(!e)return this;var t,r,n,s=this._activeObject;if(e===s&&"activeSelection"===e.type)for(t=(n=s._objects).length;t--;)r=n[t],i(this._objects,r),this._objects.unshift(r);else i(this._objects,e),this._objects.unshift(e);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(e){if(!e)return this;var t,r,n,s=this._activeObject;if(e===s&&"activeSelection"===e.type)for(n=s._objects,t=0;t0+h&&(o=s-1,i(this._objects,n),this._objects.splice(o,0,n)),h++;else 0!==(s=this._objects.indexOf(e))&&(o=this._findNewLowerIndex(e,s,t),i(this._objects,e),this._objects.splice(o,0,e));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(e,t,i){var r,n;if(i){for(r=t,n=t-1;n>=0;--n)if(e.intersectsWithObject(this._objects[n])||e.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(e)){r=n;break}}else r=t-1;return r},bringForward:function(e,t){if(!e)return this;var r,n,s,o,a,l=this._activeObject,h=0;if(e===l&&"activeSelection"===e.type)for(r=(a=l._objects).length;r--;)n=a[r],(s=this._objects.indexOf(n))"}}),e(T.StaticCanvas.prototype,T.Observable),e(T.StaticCanvas.prototype,T.Collection),e(T.StaticCanvas.prototype,T.DataURLExporter),e(T.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=a();if(!t||!t.getContext)return null;var i=t.getContext("2d");return i&&"setLineDash"===e?void 0!==i.setLineDash:null}}),T.StaticCanvas.prototype.toJSON=T.StaticCanvas.prototype.toObject,T.isLikelyNode&&(T.StaticCanvas.prototype.createPNGStream=function(){var e=o(this.lowerCanvasEl);return e&&e.createPNGStream()},T.StaticCanvas.prototype.createJPEGStream=function(e){var t=o(this.lowerCanvasEl);return t&&t.createJPEGStream(e)})}}(),T.BaseBrush=T.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(e){e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.miterLimit=this.strokeMiterLimit,e.lineJoin=this.strokeLineJoin,e.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(e){var t=this.canvas.viewportTransform;e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5])},_setShadow:function(){if(this.shadow){var e=this.canvas,t=this.shadow,i=e.contextTop,r=e.getZoom();e&&e._isRetinaScaling()&&(r*=T.devicePixelRatio),i.shadowColor=t.color,i.shadowBlur=t.blur*r,i.shadowOffsetX=t.offsetX*r,i.shadowOffsetY=t.offsetY*r}},needsFullRender:function(){return new T.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_isOutSideCanvas:function(e){return e.x<0||e.x>this.canvas.getWidth()||e.y<0||e.y>this.canvas.getHeight()}}),T.PencilBrush=T.util.createClass(T.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(e){this.canvas=e,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(e,t,i){var r=t.midPointFrom(i);return e.quadraticCurveTo(t.x,t.y,r.x,r.y),r},onMouseDown:function(e,t){this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],this._prepareForDrawing(e),this._captureDrawingPath(e),this._render())},onMouseMove:function(e,t){if(this.canvas._isMainEvent(t.e)&&(this.drawStraightLine=t.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(e))&&this._captureDrawingPath(e)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,r=i.length,n=this.canvas.contextTop;this._saveAndTransform(n),this.oldEnd&&(n.beginPath(),n.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(n,i[r-2],i[r-1],!0),n.stroke(),n.restore()}},onMouseUp:function(e){return!this.canvas._isMainEvent(e.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(e){var t=new T.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){return!(this._points.length>1&&e.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(e),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(e){var t=new T.Point(e.x,e.y);return this._addPoint(t)},_render:function(e){var t,i,r=this._points[0],n=this._points[1];if(e=e||this.canvas.contextTop,this._saveAndTransform(e),e.beginPath(),2===this._points.length&&r.x===n.x&&r.y===n.y){var s=this.width/1e3;r=new T.Point(r.x,r.y),n=new T.Point(n.x,n.y),r.x-=s,n.x+=s}for(e.moveTo(r.x,r.y),t=1,i=this._points.length;t=n&&(o=e[i],a.push(o));return a.push(e[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var e=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(e))this.canvas.requestRenderAll();else{var t=this.createPath(e);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:t}),this.canvas.add(t),this.canvas.requestRenderAll(),t.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:t})}}}),T.CircleBrush=T.util.createClass(T.BaseBrush,{width:10,initialize:function(e){this.canvas=e,this.points=[]},drawDot:function(e){var t=this.addPoint(e),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,t),i.restore()},dot:function(e,t){e.fillStyle=t.fill,e.beginPath(),e.arc(t.x,t.y,t.radius,0,2*Math.PI,!1),e.closePath(),e.fill()},onMouseDown:function(e){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(e)},_render:function(){var e,t,i=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(i),e=0,t=r.length;e0&&!this.preserveObjectStacking){t=[],i=[];for(var n=0,s=this._objects.length;n1&&(this._activeObject._objects=i),t.push.apply(t,i)}else t=this._objects;return t},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var e=this.contextContainer;return this.renderCanvas(e,this._chooseObjectsToRender()),this},renderTopLayer:function(e){e.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(e),this.contextTopDirty=!0),e.restore()},renderTop:function(){var e=this.contextTop;return this.clearContext(e),this.renderTopLayer(e),this.fire("after:render"),this},_normalizePointer:function(e,t){var i=e.calcTransformMatrix(),r=T.util.invertTransform(i),n=this.restorePointerVpt(t);return T.util.transformPoint(n,r)},isTargetTransparent:function(e,t,i){if(e.shouldCache()&&e._cacheCanvas&&e!==this._activeObject){var r=this._normalizePointer(e,{x:t,y:i}),n=Math.max(e.cacheTranslationX+r.x*e.zoomX,0),s=Math.max(e.cacheTranslationY+r.y*e.zoomY,0);return T.util.isTransparent(e._cacheContext,Math.round(n),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=e.selectionBackgroundColor,l=this.viewportTransform;return e.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(l[0],l[1],l[2],l[3],l[4],l[5]),e.render(o),o.restore(),e.selectionBackgroundColor=a,T.util.isTransparent(o,t,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(e){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(t){return!0===e[t]})):e[this.selectionKey]},_shouldClearSelection:function(e,t){var i=this.getActiveObjects(),r=this._activeObject;return!t||t&&r&&i.length>1&&-1===i.indexOf(t)&&r!==t&&!this._isSelectionKeyPressed(e)||t&&!t.evented||t&&!t.selectable&&r&&r!==t},_shouldCenterTransform:function(e,t,i){var r;if(e)return"scale"===t||"scaleX"===t||"scaleY"===t||"resizing"===t?r=this.centeredScaling||e.centeredScaling:"rotate"===t&&(r=this.centeredRotation||e.centeredRotation),r?!i:i},_getOriginFromCorner:function(e,t){var i={x:e.originX,y:e.originY};return"ml"===t||"tl"===t||"bl"===t?i.x="right":"mr"!==t&&"tr"!==t&&"br"!==t||(i.x="left"),"tl"===t||"mt"===t||"tr"===t?i.y="bottom":"bl"!==t&&"mb"!==t&&"br"!==t||(i.y="top"),i},_getActionFromCorner:function(e,t,i,r){if(!t||!e)return"drag";var n=r.controls[t];return n.getActionName(i,n,r)},_setupCurrentTransform:function(e,i,r){if(i){var n=this.getPointer(e),s=i.__corner,o=i.controls[s],a=r&&s?o.getActionHandler(e,i,o):T.controlsUtils.dragHandler,l=this._getActionFromCorner(r,s,e,i),h=this._getOriginFromCorner(i,s),c=e[this.centeredKey],u={target:i,action:l,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:n.x-i.left,offsetY:n.y-i.top,originX:h.x,originY:h.y,ex:n.x,ey:n.y,lastX:n.x,lastY:n.y,theta:t(i.angle),width:i.width*i.scaleX,shiftKey:e.shiftKey,altKey:c,original:T.util.saveObjectTransform(i)};this._shouldCenterTransform(i,l,c)&&(u.originX="center",u.originY="center"),u.original.originX=h.x,u.original.originY=h.y,this._currentTransform=u,this._beforeTransform(e)}},setCursor:function(e){this.upperCanvasEl.style.cursor=e},_drawSelection:function(e){var t=this._groupSelector,i=new T.Point(t.ex,t.ey),r=T.util.transformPoint(i,this.viewportTransform),n=new T.Point(t.ex+t.left,t.ey+t.top),s=T.util.transformPoint(n,this.viewportTransform),o=Math.min(r.x,s.x),a=Math.min(r.y,s.y),l=Math.max(r.x,s.x),h=Math.max(r.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(e.fillStyle=this.selectionColor,e.fillRect(o,a,l-o,h-a)),this.selectionLineWidth&&this.selectionBorderColor&&(e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor,o+=c,a+=c,l-=c,h-=c,T.Object.prototype._setLineDash.call(this,e,this.selectionDashArray),e.strokeRect(o,a,l-o,h-a))},findTarget:function(e,t){if(!this.skipTargetFind){var r,n,s=this.getPointer(e,!0),o=this._activeObject,a=this.getActiveObjects(),l=i(e),h=a.length>1&&!t||1===a.length;if(this.targets=[],h&&o._findTargetCorner(s,l))return o;if(a.length>1&&!t&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;r=o,n=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return e[this.altSelectionKey]&&c&&r&&c!==r&&(c=r,this.targets=n),c}},_checkTarget:function(e,t,i){if(t&&t.visible&&t.evented&&t.containsPoint(e)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||t.isEditing)return!0;if(!this.isTargetTransparent(t,i.x,i.y))return!0}},_searchPossibleTargets:function(e,t){for(var i,r,n=e.length;n--;){var s=e[n],o=s.group?this._normalizePointer(s.group,t):t;if(this._checkTarget(o,s,t)){(i=e[n]).subTargetCheck&&i instanceof T.Group&&(r=this._searchPossibleTargets(i._objects,t))&&this.targets.push(r);break}}return i},restorePointerVpt:function(e){return T.util.transformPoint(e,T.util.invertTransform(this.viewportTransform))},getPointer:function(t,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var r,n=e(t),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,l=o.height||0;a&&l||("top"in o&&"bottom"in o&&(l=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,i||(n=this.restorePointerVpt(n));var h=this.getRetinaScaling();return 1!==h&&(n.x/=h,n.y/=h),r=0===a||0===l?{width:1,height:1}:{width:s.width/a,height:s.height/l},{x:n.x*r.width,y:n.y*r.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),t=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),T.util.addClass(i,"upper-canvas "+e),this.wrapperEl.appendChild(i),this._copyCanvasStyle(t,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=T.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),T.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),T.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(e){var t=this.width||e.width,i=this.height||e.height;T.util.setStyle(e,{position:"absolute",width:t+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),e.width=t,e.height=i,T.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var e=this._activeObject;return e?"activeSelection"===e.type&&e._objects?e._objects.slice(0):[e]:[]},_onObjectRemoved:function(e){e===this._activeObject&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared",{target:e}),e.fire("deselected")),e===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",e)},_fireSelectionEvents:function(e,t){var i=!1,r=this.getActiveObjects(),n=[],s=[];e.forEach((function(e){-1===r.indexOf(e)&&(i=!0,e.fire("deselected",{e:t,target:e}),s.push(e))})),r.forEach((function(r){-1===e.indexOf(r)&&(i=!0,r.fire("selected",{e:t,target:r}),n.push(r))})),e.length>0&&r.length>0?i&&this.fire("selection:updated",{e:t,selected:n,deselected:s}):r.length>0?this.fire("selection:created",{e:t,selected:n}):e.length>0&&this.fire("selection:cleared",{e:t,deselected:s})},setActiveObject:function(e,t){var i=this.getActiveObjects();return this._setActiveObject(e,t),this._fireSelectionEvents(i,t),this},_setActiveObject:function(e,t){return this._activeObject!==e&&!!this._discardActiveObject(t,e)&&!e.onSelect({e:t})&&(this._activeObject=e,!0)},_discardActiveObject:function(e,t){var i=this._activeObject;if(i){if(i.onDeselect({e,object:t}))return!1;this._activeObject=null}return!0},discardActiveObject:function(e){var t=this.getActiveObjects(),i=this.getActiveObject();return t.length&&this.fire("before:selection:cleared",{target:i,e}),this._discardActiveObject(e),this._fireSelectionEvents(t,e),this},dispose:function(){var e=this.wrapperEl;return this.removeListeners(),e.removeChild(this.upperCanvasEl),e.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(e){T.util.cleanUpJsdomNode(this[e]),this[e]=void 0}.bind(this)),e.parentNode&&e.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,T.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(e){var t=this._activeObject;t&&t._renderControls(e)},_toObject:function(e,t,i){var r=this._realizeGroupTransformOnObject(e),n=this.callSuper("_toObject",e,t,i);return this._unwindGroupTransformOnObject(e,r),n},_realizeGroupTransformOnObject:function(e){if(e.group&&"activeSelection"===e.group.type&&this._activeObject===e.group){var t={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){t[i]=e[i]})),T.util.addTransformToObject(e,this._activeObject.calcOwnMatrix()),t}return null},_unwindGroupTransformOnObject:function(e,t){t&&e.set(t)},_setSVGObject:function(e,t,i){var r=this._realizeGroupTransformOnObject(t);this.callSuper("_setSVGObject",e,t,i),this._unwindGroupTransformOnObject(t,r)},setViewportTransform:function(e){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),T.StaticCanvas.prototype.setViewportTransform.call(this,e)}}),T.StaticCanvas)"prototype"!==r&&(T.Canvas[r]=T.StaticCanvas[r])}(),function(){var e=T.util.addListener,t=T.util.removeListener,i={passive:!1};function r(e,t){return e.button&&e.button===t-1}T.util.object.extend(T.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(e,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(e,t){var r=this.upperCanvasEl,n=this._getEventPrefix();e(T.window,"resize",this._onResize),e(r,n+"down",this._onMouseDown),e(r,n+"move",this._onMouseMove,i),e(r,n+"out",this._onMouseOut),e(r,n+"enter",this._onMouseEnter),e(r,"wheel",this._onMouseWheel),e(r,"contextmenu",this._onContextMenu),e(r,"dblclick",this._onDoubleClick),e(r,"dragover",this._onDragOver),e(r,"dragenter",this._onDragEnter),e(r,"dragleave",this._onDragLeave),e(r,"drop",this._onDrop),this.enablePointerEvents||e(r,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&t in eventjs&&(eventjs[t](r,"gesture",this._onGesture),eventjs[t](r,"drag",this._onDrag),eventjs[t](r,"orientation",this._onOrientationChange),eventjs[t](r,"shake",this._onShake),eventjs[t](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(t,"remove");var e=this._getEventPrefix();t(T.document,e+"up",this._onMouseUp),t(T.document,"touchend",this._onTouchEnd,i),t(T.document,e+"move",this._onMouseMove,i),t(T.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(e,t){this.__onTransformGesture&&this.__onTransformGesture(e,t)},_onDrag:function(e,t){this.__onDrag&&this.__onDrag(e,t)},_onMouseWheel:function(e){this.__onMouseWheel(e)},_onMouseOut:function(e){var t=this._hoveredTarget;this.fire("mouse:out",{target:t,e}),this._hoveredTarget=null,t&&t.fire("mouseout",{e});var i=this;this._hoveredTargets.forEach((function(r){i.fire("mouse:out",{target:t,e}),r&&t.fire("mouseout",{e})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(e){e.isEditing&&e.hiddenTextarea.focus()}))},_onMouseEnter:function(e){this._currentTransform||this.findTarget(e)||(this.fire("mouse:over",{target:null,e}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(e,t){this.__onOrientationChange&&this.__onOrientationChange(e,t)},_onShake:function(e,t){this.__onShake&&this.__onShake(e,t)},_onLongPress:function(e,t){this.__onLongPress&&this.__onLongPress(e,t)},_onDragOver:function(e){e.preventDefault();var t=this._simpleEventHandler("dragover",e);this._fireEnterLeaveEvents(t,e)},_onDrop:function(e){return this._simpleEventHandler("drop:before",e),this._simpleEventHandler("drop",e)},_onContextMenu:function(e){return this.stopContextMenu&&(e.stopPropagation(),e.preventDefault()),!1},_onDoubleClick:function(e){this._cacheTransformEventData(e),this._handleEvent(e,"dblclick"),this._resetTransformEventData(e)},getPointerId:function(e){var t=e.changedTouches;return t?t[0]&&t[0].identifier:this.enablePointerEvents?e.pointerId:-1},_isMainEvent:function(e){return!0===e.isPrimary||!1!==e.isPrimary&&("touchend"===e.type&&0===e.touches.length||!e.changedTouches||e.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();e(T.document,"touchend",this._onTouchEnd,i),e(T.document,"touchmove",this._onMouseMove,i),t(n,s+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();t(n,s+"move",this._onMouseMove,i),e(T.document,s+"up",this._onMouseUp),e(T.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var n=this._getEventPrefix();t(T.document,"touchend",this._onTouchEnd,i),t(T.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){e(s.upperCanvasEl,n+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(r)&&(t(T.document,s+"up",this._onMouseUp),t(T.document,s+"move",this._onMouseMove,i),e(n,s+"move",this._onMouseMove,i))},_onMouseMove:function(e){!this.allowTouchScrolling&&e.preventDefault&&e.preventDefault(),this.__onMouseMove(e)},_onResize:function(){this.calcOffset()},_shouldRender:function(e){var t=this._activeObject;return!!(!!t!=!!e||t&&e&&t!==e)||(t&&t.isEditing,!1)},__onMouseUp:function(e){var t,i=this._currentTransform,n=this._groupSelector,s=!1,o=!n||0===n.left&&0===n.top;if(this._cacheTransformEventData(e),t=this._target,this._handleEvent(e,"up:before"),r(e,3))this.fireRightClick&&this._handleEvent(e,"up",3,o);else{if(r(e,2))return this.fireMiddleClick&&this._handleEvent(e,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(e);else if(this._isMainEvent(e)){if(i&&(this._finalizeCurrentTransform(e),s=i.actionPerformed),!o){var a=t===this._activeObject;this._maybeGroupObjects(e),s||(s=this._shouldRender(t)||!a&&t===this._activeObject)}var l,h;if(t){if(l=t._findTargetCorner(this.getPointer(e,!0),T.util.isTouchEvent(e)),t.selectable&&t!==this._activeObject&&"up"===t.activeOn)this.setActiveObject(t,e),s=!0;else{var c=t.controls[l],u=c&&c.getMouseUpHandler(e,t,c);u&&u(e,i,(h=this.getPointer(e)).x,h.y)}t.isMoving=!1}if(i&&(i.target!==t||i.corner!==l)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(e,t,c);h=h||this.getPointer(e),f&&f(e,i,h.x,h.y)}this._setCursorFromEvent(e,t),this._handleEvent(e,"up",1,o),this._groupSelector=null,this._currentTransform=null,t&&(t.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(e,t){var i=this.findTarget(t),r=this.targets,n={e:t,target:i,subTargets:r};if(this.fire(e,n),i&&i.fire(e,n),!r)return i;for(var s=0;s1&&(t=new T.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(t,e))},_collectObjects:function(e){for(var t,i=[],r=this._groupSelector.ex,n=this._groupSelector.ey,s=r+this._groupSelector.left,o=n+this._groupSelector.top,a=new T.Point(v(r,s),v(n,o)),l=new T.Point(y(r,s),y(n,o)),h=!this.selectionFullyContained,c=r===s&&n===o,u=this._objects.length;u--&&!((t=this._objects[u])&&t.selectable&&t.visible&&(h&&t.intersectsWithRect(a,l,!0)||t.isContainedWithinRect(a,l,!0)||h&&t.containsPoint(a,null,!0)||h&&t.containsPoint(l,null,!0))&&(i.push(t),c)););return i.length>1&&(i=i.filter((function(t){return!t.onSelect({e})}))),i},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e),this.setCursor(this.defaultCursor),this._groupSelector=null}}),T.util.object.extend(T.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",i=e.quality||1,r=(e.multiplier||1)*(e.enableRetinaScaling?this.getRetinaScaling():1),n=this.toCanvasElement(r,e);return T.util.toDataURL(n,t,i)},toCanvasElement:function(e,t){e=e||1;var i=((t=t||{}).width||this.width)*e,r=(t.height||this.height)*e,n=this.getZoom(),s=this.width,o=this.height,a=n*e,l=this.viewportTransform,h=(l[4]-(t.left||0))*e,c=(l[5]-(t.top||0))*e,u=this.interactive,d=[a,0,0,a,h,c],f=this.enableRetinaScaling,g=T.util.createCanvasElement(),_=this.contextTop;return g.width=i,g.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=l,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=_,g}}),T.util.object.extend(T.StaticCanvas.prototype,{loadFromJSON:function(e,t,i){if(e){var r="string"==typeof e?JSON.parse(e):T.util.object.clone(e),n=this,s=r.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(e){n.clear(),n._setBgOverlay(r,(function(){s?n._enlivenObjects([s],(function(i){n.clipPath=i[0],n.__setupCanvas.call(n,r,e,o,t)})):n.__setupCanvas.call(n,r,e,o,t)}))}),i),this}},__setupCanvas:function(e,t,i,r){var n=this;t.forEach((function(e,t){n.insertAt(e,t)})),this.renderOnAddRemove=i,delete e.objects,delete e.backgroundImage,delete e.overlayImage,delete e.background,delete e.overlay,this._setOptions(e),this.renderAll(),r&&r()},_setBgOverlay:function(e,t){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(e.backgroundImage||e.overlayImage||e.background||e.overlay){var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&t&&t()};this.__setBgOverlay("backgroundImage",e.backgroundImage,i,r),this.__setBgOverlay("overlayImage",e.overlayImage,i,r),this.__setBgOverlay("backgroundColor",e.background,i,r),this.__setBgOverlay("overlayColor",e.overlay,i,r)}else t&&t()},__setBgOverlay:function(e,t,i,r){var n=this;if(!t)return i[e]=!0,void(r&&r());"backgroundImage"===e||"overlayImage"===e?T.util.enlivenObjects([t],(function(t){n[e]=t[0],i[e]=!0,r&&r()})):this["set"+T.util.string.capitalize(e,!0)](t,(function(){i[e]=!0,r&&r()}))},_enlivenObjects:function(e,t,i){e&&0!==e.length?T.util.enlivenObjects(e,(function(e){t&&t(e)}),null,i):t&&t([])},_toDataURL:function(e,t){this.clone((function(i){t(i.toDataURL(e))}))},_toDataURLWithMultiplier:function(e,t,i){this.clone((function(r){i(r.toDataURLWithMultiplier(e,t))}))},clone:function(e,t){var i=JSON.stringify(this.toJSON(t));this.cloneWithoutData((function(t){t.loadFromJSON(i,(function(){e&&e(t)}))}))},cloneWithoutData:function(e){var t=T.util.createCanvasElement();t.width=this.width,t.height=this.height;var i=new T.Canvas(t);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),e&&e(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):e&&e(i)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.object.clone,n=t.util.toFixed,s=t.util.string.capitalize,o=t.util.degreesToRadians,a=!t.isLikelyNode;t.Object||(t.Object=t.util.createClass(t.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(e){e&&this.setOptions(e)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=t.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(e){var i=t.perfLimitSizeTotal,r=e.width,n=e.height,s=t.maxCacheSideLimit,o=t.minCacheSideLimit;if(r<=s&&n<=s&&r*n<=i)return rc&&(e.zoomX/=r/c,e.width=c,e.capped=!0),n>u&&(e.zoomY/=n/u,e.height=u,e.capped=!0),e},_getCacheCanvasDimensions:function(){var e=this.getTotalObjectScaling(),t=this._getTransformedDimensions(0,0),i=t.x*e.scaleX/this.scaleX,r=t.y*e.scaleY/this.scaleY;return{width:i+2,height:r+2,zoomX:e.scaleX,zoomY:e.scaleY,x:i,y:r}},_updateCacheCanvas:function(){var e=this.canvas;if(this.noScaleCache&&e&&e._currentTransform){var i=e._currentTransform.target,r=e._currentTransform.action;if(this===i&&r.slice&&"scale"===r.slice(0,5))return!1}var n,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),l=t.minCacheSideLimit,h=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=h!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,_=f||g,p=0,m=0,v=!1;if(f){var y=this._cacheCanvas.width,S=this._cacheCanvas.height,b=h>y||c>S;v=b||(h<.9*y||c<.9*S)&&y>l&&S>l,b&&!a.capped&&(h>l||c>l)&&(p=.1*h,m=.1*c)}return this instanceof t.Text&&this.path&&(_=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,m+=this.getHeightOfLine(0)*this.zoomY),!!_&&(v?(o.width=Math.ceil(h+p),o.height=Math.ceil(c+m)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),n=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-n)+n,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=h,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(e){this._setOptions(e),this._initGradient(e.fill,"fill"),this._initGradient(e.stroke,"stroke"),this._initPattern(e.fill,"fill"),this._initPattern(e.stroke,"stroke")},transform:function(e){var t=this.group&&!this.group._transformDone||this.group&&this.canvas&&e===this.canvas.contextTop,i=this.calcTransformMatrix(!t);e.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(e){var i=t.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:t.version,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(e),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),t.util.populateWithProperties(this,r,e),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var i=t.util.getKlass(e.type).prototype;return i.stateProperties.forEach((function(t){"left"!==t&&"top"!==t&&(e[t]===i[t]&&delete e[t],Array.isArray(e[t])&&Array.isArray(i[t])&&0===e[t].length&&0===i[t].length&&delete e[t])})),e},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var e=t.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(e.scaleX),scaleY:Math.abs(e.scaleY)}},getTotalObjectScaling:function(){var e=this.getObjectScaling(),t=e.scaleX,i=e.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();t*=r*n,i*=r*n}return{scaleX:t,scaleY:i}},getObjectOpacity:function(){var e=this.opacity;return this.group&&(e*=this.group.getObjectOpacity()),e},_set:function(e,i){var r="scaleX"===e||"scaleY"===e,n=this[e]!==i,s=!1;return r&&(i=this._constrainScale(i)),"scaleX"===e&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===e&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==e||!i||i instanceof t.Shadow?"dirty"===e&&this.group&&this.group.set("dirty",i):i=new t.Shadow(i),this[e]=i,n&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(e)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(e)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:t.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(e){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(e.save(),this._setupCompositeOperation(e),this.drawSelectionBackground(e),this.transform(e),this._setOpacity(e),this._setShadow(e,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(e)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(e),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),e.restore())},renderCache:function(e){e=e||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,e.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(e,i){if(e.save(),i.inverted?e.globalCompositeOperation="destination-out":e.globalCompositeOperation="destination-in",i.absolutePositioned){var r=t.util.invertTransform(this.calcTransformMatrix());e.transform(r[0],r[1],r[2],r[3],r[4],r[5])}i.transform(e),e.scale(1/i.zoomX,1/i.zoomY),e.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),e.restore()},drawObject:function(e,t){var i=this.fill,r=this.stroke;t?(this.fill="black",this.stroke="",this._setClippingProperties(e)):this._renderBackground(e),this._render(e),this._drawClipPath(e,this.clipPath),this.fill=i,this.stroke=r},_drawClipPath:function(e,t){t&&(t.canvas=this.canvas,t.shouldCache(),t._transformDone=!0,t.renderCache({forClipping:!0}),this.drawClipPathOnCache(e,t))},drawCacheOnCanvas:function(e){e.scale(1/this.zoomX,1/this.zoomY),e.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(e){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!e&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!e){var t=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-t/2,-i/2,t,i)}return!0}return!1},_renderBackground:function(e){if(this.backgroundColor){var t=this._getNonTransformedDimensions();e.fillStyle=this.backgroundColor,e.fillRect(-t.x/2,-t.y/2,t.x,t.y),this._removeShadow(e)}},_setOpacity:function(e){this.group&&!this.group._transformDone?e.globalAlpha=this.getObjectOpacity():e.globalAlpha*=this.opacity},_setStrokeStyles:function(e,t){var i=t.stroke;i&&(e.lineWidth=t.strokeWidth,e.lineCap=t.strokeLineCap,e.lineDashOffset=t.strokeDashOffset,e.lineJoin=t.strokeLineJoin,e.miterLimit=t.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(e,i):(e.strokeStyle=i.toLive(e,this),this._applyPatternGradientTransform(e,i)):e.strokeStyle=t.stroke)},_setFillStyles:function(e,t){var i=t.fill;i&&(i.toLive?(e.fillStyle=i.toLive(e,this),this._applyPatternGradientTransform(e,t.fill)):e.fillStyle=i)},_setClippingProperties:function(e){e.globalAlpha=1,e.strokeStyle="transparent",e.fillStyle="#000000"},_setLineDash:function(e,t){t&&0!==t.length&&(1&t.length&&t.push.apply(t,t),e.setLineDash(t))},_renderControls:function(e,i){var r,n,s,a=this.getViewportTransform(),l=this.calcTransformMatrix();n=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,l=t.util.multiplyTransformMatrices(a,l),r=t.util.qrDecompose(l),e.save(),e.translate(r.translateX,r.translateY),e.lineWidth=1*this.borderScaleFactor,this.group||(e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),e.rotate(o(this.group?r.angle:this.angle)),i.forActiveSelection||this.group?n&&this.drawBordersInGroup(e,r,i):n&&this.drawBorders(e,i),s&&this.drawControls(e,i),e.restore()},_setShadow:function(e){if(this.shadow){var i,r=this.shadow,n=this.canvas,s=n&&n.viewportTransform[0]||1,o=n&&n.viewportTransform[3]||1;i=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),n&&n._isRetinaScaling()&&(s*=t.devicePixelRatio,o*=t.devicePixelRatio),e.shadowColor=r.color,e.shadowBlur=r.blur*t.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,e.shadowOffsetX=r.offsetX*s*i.scaleX,e.shadowOffsetY=r.offsetY*o*i.scaleY}},_removeShadow:function(e){this.shadow&&(e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0)},_applyPatternGradientTransform:function(e,t){if(!t||!t.toLive)return{offsetX:0,offsetY:0};var i=t.gradientTransform||t.patternTransform,r=-this.width/2+t.offsetX||0,n=-this.height/2+t.offsetY||0;return"percentage"===t.gradientUnits?e.transform(this.width,0,0,this.height,r,n):e.transform(1,0,0,1,r,n),i&&e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:r,offsetY:n}},_renderPaintInOrder:function(e){"stroke"===this.paintFirst?(this._renderStroke(e),this._renderFill(e)):(this._renderFill(e),this._renderStroke(e))},_render:function(){},_renderFill:function(e){this.fill&&(e.save(),this._setFillStyles(e,this),"evenodd"===this.fillRule?e.fill("evenodd"):e.fill(),e.restore())},_renderStroke:function(e){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e),e.save(),this.strokeUniform&&this.group){var t=this.getObjectScaling();e.scale(1/t.scaleX,1/t.scaleY)}else this.strokeUniform&&e.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(e,this.strokeDashArray),this._setStrokeStyles(e,this),e.stroke(),e.restore()}},_applyPatternForTransformedGradient:function(e,i){var r,n=this._limitCacheSize(this._getCacheCanvasDimensions()),s=t.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=n.x/this.scaleX/o,l=n.y/this.scaleY/o;s.width=a,s.height=l,(r=s.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(a,0),r.lineTo(a,l),r.lineTo(0,l),r.closePath(),r.translate(a/2,l/2),r.scale(n.zoomX/this.scaleX/o,n.zoomY/this.scaleY/o),this._applyPatternGradientTransform(r,i),r.fillStyle=i.toLive(e),r.fill(),e.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),e.scale(o*this.scaleX/n.zoomX,o*this.scaleY/n.zoomY),e.strokeStyle=r.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var e=t.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",e.scaleX),this.set("scaleY",e.scaleY),this.angle=e.angle,this.skewX=e.skewX,this.skewY=0}},_removeTransformMatrix:function(e){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=t.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,e&&(this.scaleX*=e.scaleX,this.scaleY*=e.scaleY,this.cropX=e.cropX,this.cropY=e.cropY,i.x+=e.offsetLeft,i.y+=e.offsetTop,this.width=e.width,this.height=e.height),this.setPositionByOrigin(i,"center","center")},clone:function(e,i){var r=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(r,e):t.Object._fromObject("Object",r,e)},cloneAsImage:function(e,i){var r=this.toCanvasElement(i);return e&&e(new t.Image(r)),this},toCanvasElement:function(e){e||(e={});var i=t.util,r=i.saveObjectTransform(this),n=this.group,s=this.shadow,o=Math.abs,a=(e.multiplier||1)*(e.enableRetinaScaling?t.devicePixelRatio:1);delete this.group,e.withoutTransform&&i.resetObjectTransform(this),e.withoutShadow&&(this.shadow=null);var l,h,c,u,d=t.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,_={x:0,y:0};g&&(h=g.blur,l=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),_.x=2*Math.round(o(g.offsetX)+h)*o(l.scaleX),_.y=2*Math.round(o(g.offsetY)+h)*o(l.scaleY)),c=f.width+_.x,u=f.height+_.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new t.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===e.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new t.Point(p.width/2,p.height/2),"center","center");var m=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,e);return this.shadow=s,this.set("canvas",m),n&&(this.group=n),this.set(r).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(e){return e||(e={}),t.util.toDataURL(this.toCanvasElement(e),e.format||"png",e.quality||1)},isType:function(e){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===e},complexity:function(){return 1},toJSON:function(e){return this.toObject(e)},rotate:function(e){var t=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return t&&this._setOriginToCenter(),this.set("angle",e),t&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(e,i){i=i||this.canvas.getPointer(e);var r=new t.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=t.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(e){this.globalCompositeOperation&&(e.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){t.runningAnimations&&t.runningAnimations.cancelByTarget(this)}}),t.util.createAccessors&&t.util.createAccessors(t.Object),i(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.ENLIVEN_PROPS=["clipPath"],t.Object._fromObject=function(e,i,n,s){var o=t[e];i=r(i,!0),t.util.enlivenPatterns([i.fill,i.stroke],(function(e){void 0!==e[0]&&(i.fill=e[0]),void 0!==e[1]&&(i.stroke=e[1]),t.util.enlivenObjectEnlivables(i,i,(function(){var e=s?new o(i[s],i):new o(i);n&&n(e)}))}))},t.Object.__uid=0)}(t),S=T.util.degreesToRadians,b={left:-.5,center:0,right:.5},C={top:-.5,center:0,bottom:.5},T.util.object.extend(T.Object.prototype,{translateToGivenOrigin:function(e,t,i,r,n){var s,o,a,l=e.x,h=e.y;return"string"==typeof t?t=b[t]:t-=.5,"string"==typeof r?r=b[r]:r-=.5,"string"==typeof i?i=C[i]:i-=.5,"string"==typeof n?n=C[n]:n-=.5,o=n-i,((s=r-t)||o)&&(a=this._getTransformedDimensions(),l=e.x+s*a.x,h=e.y+o*a.y),new T.Point(l,h)},translateToCenterPoint:function(e,t,i){var r=this.translateToGivenOrigin(e,t,i,"center","center");return this.angle?T.util.rotatePoint(r,e,S(this.angle)):r},translateToOriginPoint:function(e,t,i){var r=this.translateToGivenOrigin(e,"center","center",t,i);return this.angle?T.util.rotatePoint(r,e,S(this.angle)):r},getCenterPoint:function(){var e=new T.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var i=this.getCenterPoint();return this.translateToOriginPoint(i,e,t)},toLocalPoint:function(e,t,i){var r,n,s=this.getCenterPoint();return r=void 0!==t&&void 0!==i?this.translateToGivenOrigin(s,"center","center",t,i):new T.Point(this.left,this.top),n=new T.Point(e.x,e.y),this.angle&&(n=T.util.rotatePoint(n,s,-S(this.angle))),n.subtractEquals(r)},setPositionByOrigin:function(e,t,i){var r=this.translateToCenterPoint(e,t,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(e){var t,i,r=S(this.angle),n=this.getScaledWidth(),s=T.util.cos(r)*n,o=T.util.sin(r)*n;t="string"==typeof this.originX?b[this.originX]:this.originX-.5,i="string"==typeof e?b[e]:e-.5,this.left+=s*(i-t),this.top+=o*(i-t),this.setCoords(),this.originX=e},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var e=this.getCenterPoint();this.originX="center",this.originY="center",this.left=e.x,this.top=e.y},_resetOrigin:function(){var e=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=e.x,this.top=e.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var e=T.util,t=e.degreesToRadians,i=e.multiplyTransformMatrices,r=e.transformPoint;e.object.extend(T.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(e,t){return t?e?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),e?this.aCoords:this.lineCoords)},getCoords:function(e,t){return i=this._getCoords(e,t),[new T.Point(i.tl.x,i.tl.y),new T.Point(i.tr.x,i.tr.y),new T.Point(i.br.x,i.br.y),new T.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(e,t,i,r){var n=this.getCoords(i,r);return"Intersection"===T.Intersection.intersectPolygonRectangle(n,e,t).status},intersectsWithObject:function(e,t,i){return"Intersection"===T.Intersection.intersectPolygonPolygon(this.getCoords(t,i),e.getCoords(t,i)).status||e.isContainedWithinObject(this,t,i)||this.isContainedWithinObject(e,t,i)},isContainedWithinObject:function(e,t,i){for(var r=this.getCoords(t,i),n=t?e.aCoords:e.lineCoords,s=0,o=e._getImageLines(n);s<4;s++)if(!e.containsPoint(r[s],o))return!1;return!0},isContainedWithinRect:function(e,t,i,r){var n=this.getBoundingRect(i,r);return n.left>=e.x&&n.left+n.width<=t.x&&n.top>=e.y&&n.top+n.height<=t.y},containsPoint:function(e,t,i,r){var n=this._getCoords(i,r),s=(t=t||this._getImageLines(n),this._findCrossPoints(e,t));return 0!==s&&s%2==1},isOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,e).some((function(e){return e.x<=i.x&&e.x>=t.x&&e.y<=i.y&&e.y>=t.y}))||!!this.intersectsWithRect(t,i,!0,e)||this._containsCenterOfCanvas(t,i,e)},_containsCenterOfCanvas:function(e,t,i){var r={x:(e.x+t.x)/2,y:(e.y+t.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(e){if(!this.canvas)return!1;var t=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(t,i,!0,e)||this.getCoords(!0,e).every((function(e){return(e.x>=i.x||e.x<=t.x)&&(e.y>=i.y||e.y<=t.y)}))&&this._containsCenterOfCanvas(t,i,e)},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var i,r,n,s=0;for(var o in t)if(!((n=t[o]).o.y=e.y&&n.d.y>=e.y||(n.o.x===n.d.x&&n.o.x>=e.x?r=n.o.x:(i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(e.y-0*e.x-(n.o.y-i*n.o.x))/(0-i)),r>=e.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(t,i){var r=this.getCoords(t,i);return e.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(e){return Math.abs(e)\n')}},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})},toClipPathSVG:function(e){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})},_createBaseClipPathSVGMarkup:function(e,t){var i=(t=t||{}).reviver,r=t.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),s=e.indexOf("COMMON_PARTS");return e[s]=n,i?i(e.join("")):e.join("")},_createBaseSVGMarkup:function(e,t){var i,r,n=(t=t||{}).noStyle,s=t.reviver,o=n?"":'style="'+this.getSvgStyles()+'" ',a=t.withShadow?'style="'+this.getSvgFilter()+'" ':"",l=this.clipPath,h=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=l&&l.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],_=e.indexOf("COMMON_PARTS"),p=t.additionalTransform;return l&&(l.clipPathId="CLIPPATH_"+T.Object.__uid++,r='\n'+l.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,h,n?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),e[_]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),l&&g.push(r),g.push(e.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var e=T.util.object.extend,t="stateProperties";function i(t,i,r){var n={};r.forEach((function(e){n[e]=t[e]})),e(t[i],n,!0)}function r(e,t,i){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(var n=0,s=e.length;n=0;l--)if(n=a[l],this.isControlVisible(n)&&(r=this._getImageLines(t?this.oCoords[n].touchCorner:this.oCoords[n].corner),0!==(i=this._findCrossPoints({x:s,y:o},r))&&i%2==1))return this.__corner=n,n;return!1},forEachControl:function(e){for(var t in this.controls)e(this.controls[t],t,this)},_setCornerCoords:function(){var e=this.oCoords;for(var t in e){var i=this.controls[t];e[t].corner=i.calcCornerCoords(this.angle,this.cornerSize,e[t].x,e[t].y,!1),e[t].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,e[t].x,e[t].y,!0)}},drawSelectionBackground:function(t){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;t.save();var i=this.getCenterPoint(),r=this._calculateCurrentDimensions(),n=this.canvas.viewportTransform;return t.translate(i.x,i.y),t.scale(1/n[0],1/n[3]),t.rotate(e(this.angle)),t.fillStyle=this.selectionBackgroundColor,t.fillRect(-r.x/2,-r.y/2,r.x,r.y),t.restore(),this},drawBorders:function(e,t){t=t||{};var i=this._calculateCurrentDimensions(),r=this.borderScaleFactor,n=i.x+r,s=i.y+r,o=void 0!==t.hasControls?t.hasControls:this.hasControls,a=!1;return e.save(),e.strokeStyle=t.borderColor||this.borderColor,this._setLineDash(e,t.borderDashArray||this.borderDashArray),e.strokeRect(-n/2,-s/2,n,s),o&&(e.beginPath(),this.forEachControl((function(t,i,r){t.withConnection&&t.getVisibility(r,i)&&(a=!0,e.moveTo(t.x*n,t.y*s),e.lineTo(t.x*n+t.offsetX,t.y*s+t.offsetY))})),a&&e.stroke()),e.restore(),this},drawBordersInGroup:function(e,t,i){i=i||{};var r=T.util.sizeAfterTransform(this.width,this.height,t),n=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=r.x+n*(s?this.canvas.getZoom():t.scaleX)+o,l=r.y+n*(s?this.canvas.getZoom():t.scaleY)+o;return e.save(),this._setLineDash(e,i.borderDashArray||this.borderDashArray),e.strokeStyle=i.borderColor||this.borderColor,e.strokeRect(-a/2,-l/2,a,l),e.restore(),this},drawControls:function(e,t){t=t||{},e.save();var i,r,n=this.canvas.getRetinaScaling();return e.setTransform(n,0,0,n,0,0),e.strokeStyle=e.fillStyle=t.cornerColor||this.cornerColor,this.transparentCorners||(e.strokeStyle=t.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(e,t.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(n,s,o){r=o.oCoords[s],n.getVisibility(o,s)&&(i&&(r=T.util.transformPoint(r,i)),n.render(e,r.x,r.y,t,o))})),e.restore(),this},isControlVisible:function(e){return this.controls[e]&&this.controls[e].getVisibility(this,e)},setControlVisible:function(e,t){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[e]=t,this},setControlsVisibility:function(e){for(var t in e||(e={}),e)this.setControlVisible(t,e[t]);return this},onDeselect:function(){},onSelect:function(){}})}(),T.util.object.extend(T.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,s=this;return T.util.animate({target:this,startValue:e.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.requestRenderAll(),n()},onComplete:function(){e.setCoords(),r()}})},fxCenterObjectV:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,s=this;return T.util.animate({target:this,startValue:e.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.requestRenderAll(),n()},onComplete:function(){e.setCoords(),r()}})},fxRemove:function(e,t){var i=function(){},r=(t=t||{}).onComplete||i,n=t.onChange||i,s=this;return T.util.animate({target:this,startValue:e.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(t){e.set("opacity",t),s.requestRenderAll(),n()},onComplete:function(){s.remove(e),r()}})}}),T.util.object.extend(T.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var e,t,i=[],r=[];for(e in arguments[0])i.push(e);for(var n=0,s=i.length;n-1||n&&s.colorProperties.indexOf(n[1])>-1,a=n?this.get(n[0])[n[1]]:this.get(e);"from"in i||(i.from=a),o||(t=~t.indexOf("=")?a+parseFloat(t.replace("=","")):parseFloat(t));var l={target:this,startValue:i.from,endValue:t,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(e,t,r){return i.abort.call(s,e,t,r)},onChange:function(t,o,a){n?s[n[0]][n[1]]=t:s.set(e,t),r||i.onChange&&i.onChange(t,o,a)},onComplete:function(e,t,n){r||(s.setCoords(),i.onComplete&&i.onComplete(e,t,n))}};return o?T.util.animateColor(l.startValue,l.endValue,l.duration,l):T.util.animate(l)}}),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.object.clone,n={x1:1,x2:1,y1:1,y2:1};function s(e,t){var i=e.origin,r=e.axis1,n=e.axis2,s=e.dimension,o=t.nearest,a=t.center,l=t.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(r),this.get(n));case a:return Math.min(this.get(r),this.get(n))+.5*this.get(s);case l:return Math.max(this.get(r),this.get(n))}}}t.Line?t.warn("fabric.Line is already defined"):(t.Line=t.util.createClass(t.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:t.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(e,t){e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in e?e.left:this._getLeftToOriginX(),this.top="top"in e?e.top:this._getTopToOriginY()},_set:function(e,t){return this.callSuper("_set",e,t),void 0!==n[e]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(e){e.beginPath();var t=this.calcLinePoints();e.moveTo(t.x1,t.y1),e.lineTo(t.x2,t.y2),e.lineWidth=this.strokeWidth;var i=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this.stroke&&this._renderStroke(e),e.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(e){return i(this.callSuper("toObject",e),this.calcLinePoints())},_getNonTransformedDimensions:function(){var e=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(e.y-=this.strokeWidth),0===this.height&&(e.x-=this.strokeWidth)),e},calcLinePoints:function(){var e=this.x1<=this.x2?-1:1,t=this.y1<=this.y2?-1:1,i=e*this.width*.5,r=t*this.height*.5;return{x1:i,x2:e*this.width*-.5,y1:r,y2:t*this.height*-.5}},_toSVG:function(){var e=this.calcLinePoints();return["\n']}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r,n){n=n||{};var s=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];r(new t.Line(o,i(s,n)))},t.Line.fromObject=function(e,i){var n=r(e,!0);n.points=[e.x1,e.y1,e.x2,e.y2],t.Object._fromObject("Line",n,(function(e){delete e.points,i&&i(e)}),"points")})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.degreesToRadians;t.Circle?t.warn("fabric.Circle is already defined."):(t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:t.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(e,t){return this.callSuper("_set",e,t),"radius"===e&&this.setRadius(t),this},toObject:function(e){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(e))},_toSVG:function(){var e,r=(this.endAngle-this.startAngle)%360;if(0===r)e=["\n'];else{var n=i(this.startAngle),s=i(this.endAngle),o=this.radius;e=['180?"1":"0")+" 1"," "+t.util.cos(s)*o+" "+t.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return e},_render:function(e){e.beginPath(),e.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){return this.radius=e,this.set("width",2*e).set("height",2*e)}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,i){var r,n=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=n)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");n.left=(n.left||0)-n.radius,n.top=(n.top||0)-n.radius,i(new t.Circle(n))},t.Circle.fromObject=function(e,i){t.Object._fromObject("Circle",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={});t.Triangle?t.warn("fabric.Triangle is already defined"):(t.Triangle=t.util.createClass(t.Object,{type:"triangle",width:100,height:100,_render:function(e){var t=this.width/2,i=this.height/2;e.beginPath(),e.moveTo(-t,i),e.lineTo(0,-i),e.lineTo(t,i),e.closePath(),this._renderPaintInOrder(e)},_toSVG:function(){var e=this.width/2,t=this.height/2;return["']}}),t.Triangle.fromObject=function(e,i){return t.Object._fromObject("Triangle",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=2*Math.PI;t.Ellipse?t.warn("fabric.Ellipse is already defined."):(t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this.set("rx",e&&e.rx||0),this.set("ry",e&&e.ry||0)},_set:function(e,t){switch(this.callSuper("_set",e,t),e){case"rx":this.rx=t,this.set("width",2*t);break;case"ry":this.ry=t,this.set("height",2*t)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["\n']},_render:function(e){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(0,0,this.rx,0,i,!1),e.restore(),this._renderPaintInOrder(e)}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,i){var r=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,i(new t.Ellipse(r))},t.Ellipse.fromObject=function(e,i){t.Object._fromObject("Ellipse",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend;t.Rect?t.warn("fabric.Rect is already defined"):(t.Rect=t.util.createClass(t.Object,{stateProperties:t.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:t.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(e){this.callSuper("initialize",e),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,s=-this.width/2,o=-this.height/2,a=0!==t||0!==i,l=.4477152502;e.beginPath(),e.moveTo(s+t,o),e.lineTo(s+r-t,o),a&&e.bezierCurveTo(s+r-l*t,o,s+r,o+l*i,s+r,o+i),e.lineTo(s+r,o+n-i),a&&e.bezierCurveTo(s+r,o+n-l*i,s+r-l*t,o+n,s+r-t,o+n),e.lineTo(s+t,o+n),a&&e.bezierCurveTo(s+l*t,o+n,s,o+n-l*i,s,o+n-i),e.lineTo(s,o+i),a&&e.bezierCurveTo(s,o+l*i,s+l*t,o,s+t,o),e.closePath(),this._renderPaintInOrder(e)},toObject:function(e){return this.callSuper("toObject",["rx","ry"].concat(e))},_toSVG:function(){return["\n']}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r,n){if(!e)return r(null);n=n||{};var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new t.Rect(i(n?t.util.object.clone(n):{},s));o.visible=o.visible&&o.width>0&&o.height>0,r(o)},t.Rect.fromObject=function(e,i){return t.Object._fromObject("Rect",e,i)})}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.util.object.extend,r=t.util.array.min,n=t.util.array.max,s=t.util.toFixed,o=t.util.projectStrokeOnPoints;t.Polyline?t.warn("fabric.Polyline is already defined"):(t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:t.Object.prototype.cacheProperties.concat("points"),initialize:function(e,t){t=t||{},this.points=e||[],this.callSuper("initialize",t),this._setPositionDimensions(t)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(e){var t,i=this._calcDimensions(e),r=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-r,this.height=i.height-r,e.fromSVG||(t=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+r/2,y:i.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),void 0===e.left&&(this.left=e.fromSVG?i.left:t.x),void 0===e.top&&(this.top=e.fromSVG?i.top:t.y),this.pathOffset={x:i.left+this.width/2+r/2,y:i.top+this.height/2+r/2}},_calcDimensions:function(){var e=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,t=r(e,"x")||0,i=r(e,"y")||0;return{left:t,top:i,width:(n(e,"x")||0)-t,height:(n(e,"y")||0)-i}},toObject:function(e){return i(this.callSuper("toObject",e),{points:this.points.concat()})},_toSVG:function(){for(var e=[],i=this.pathOffset.x,r=this.pathOffset.y,n=t.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(e){var t,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;e.beginPath(),e.moveTo(this.points[0].x-r,this.points[0].y-n);for(var s=0;s"},toObject:function(e){return n(this.callSuper("toObject",e),{path:this.path.map((function(e){return e.slice()}))})},toDatalessObject:function(e){var t=this.toObject(["sourcePath"].concat(e));return t.sourcePath&&delete t.path,t},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var e=t.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,e)+", "+o(-this.pathOffset.y,e)+")"},toClipPathSVG:function(e){var t=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},toSVG:function(e){var t=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,additionalTransform:t})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var e,n,s=[],o=[],a=0,l=0,h=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(e){var i=!!this.group;return this._restoreObjectsState(),t.util.resetObjectTransform(this),e&&(i&&t.util.removeTransformFromObject(e,this.group.calcTransformMatrix()),this._objects.push(e),e.group=this,e._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),t.util.resetObjectTransform(this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(e){this.dirty=!0,e.group=this,e._set("canvas",this.canvas)},_onObjectRemoved:function(e){this.dirty=!0,delete e.group},_set:function(e,i){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(e,i);if("canvas"===e)for(;r--;)this._objects[r]._set(e,i);t.Object.prototype._set.call(this,e,i)},toObject:function(e){var i=this.includeDefaultValues,r=this._objects.filter((function(e){return!e.excludeFromExport})).map((function(t){var r=t.includeDefaultValues;t.includeDefaultValues=i;var n=t.toObject(e);return t.includeDefaultValues=r,n})),n=t.Object.prototype.toObject.call(this,e);return n.objects=r,n},toDatalessObject:function(e){var i,r=this.sourcePath;if(r)i=r;else{var n=this.includeDefaultValues;i=this._objects.map((function(t){var i=t.includeDefaultValues;t.includeDefaultValues=n;var r=t.toDatalessObject(e);return t.includeDefaultValues=i,r}))}var s=t.Object.prototype.toDatalessObject.call(this,e);return s.objects=i,s},render:function(e){this._transformDone=!0,this.callSuper("render",e),this._transformDone=!1},shouldCache:function(){var e=t.Object.prototype.shouldCache.call(this);if(e)for(var i=0,r=this._objects.length;i\n"],i=0,r=this._objects.length;i\n"),t},getSvgStyles:function(){var e=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",t=this.visible?"":" visibility: hidden;";return[e,this.getSvgFilter(),t].join("")},toClipPathSVG:function(e){for(var t=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(e,t,i){e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",e,t),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+l+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var h=this.fill;this.fill=null,e=["\t\n'],this.fill=h}return"fill"!==this.paintFirst?t.concat(e,i):t.concat(i,e)},getSrc:function(e){var t=e?this._element:this._originalElement;return t?t.toDataURL?t.toDataURL():this.srcFromAttribute?t.getAttribute("src"):t.src:this.src||""},setSrc:function(e,t,i){return T.util.loadImage(e,(function(e,r){this.setElement(e,i),this._setWidthHeight(),t&&t(this,r)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var e=this.resizeFilter,t=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!e||r>t&&n>t)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=n);T.filterBackend||(T.filterBackend=T.initFilterBackend());var o=T.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,l=s.width,h=s.height;o.width=l,o.height=h,this._element=o,this._lastScaleX=e.scaleX=r,this._lastScaleY=e.scaleY=n,T.filterBackend.applyFilters([e],s,l,h,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(e){if(e=(e=e||this.filters||[]).filter((function(e){return e&&!e.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===e.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var t=this._originalElement,i=t.naturalWidth||t.width,r=t.naturalHeight||t.height;if(this._element===this._originalElement){var n=T.util.createCanvasElement();n.width=i,n.height=r,this._element=n,this._filteredEl=n}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,r),this._lastScaleX=1,this._lastScaleY=1;return T.filterBackend||(T.filterBackend=T.initFilterBackend()),T.filterBackend.applyFilters(e,this._originalElement,i,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(e){T.util.setImageSmoothing(e,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(e),this._renderPaintInOrder(e)},drawCacheOnCanvas:function(e){T.util.setImageSmoothing(e,this.imageSmoothing),T.Object.prototype.drawCacheOnCanvas.call(this,e)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(e){var t=this._element;if(t){var i=this._filterScalingX,r=this._filterScalingY,n=this.width,s=this.height,o=Math.min,a=Math.max,l=a(this.cropX,0),h=a(this.cropY,0),c=t.naturalWidth||t.width,u=t.naturalHeight||t.height,d=l*i,f=h*r,g=o(n*i,c-d),_=o(s*r,u-f),p=-n/2,m=-s/2,v=o(n,c/i-l),y=o(s,u/r-h);t&&e.drawImage(t,d,f,g,_,p,m,v,y)}},_needsResize:function(){var e=this.getTotalObjectScaling();return e.scaleX!==this._lastScaleX||e.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(e,t){this.setElement(T.util.getById(e),t),T.util.addClass(this.getElement(),T.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e&&e.length?T.util.enlivenObjects(e,(function(e){t&&t(e)}),"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){e||(e={});var t=this.getElement();this.width=e.width||t.naturalWidth||t.width||0,this.height=e.height||t.naturalHeight||t.height||0},parsePreserveAspectRatioAttribute:function(){var e,t=T.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,r=this._element.height,n=1,s=1,o=0,a=0,l=0,h=0,c=this.width,u=this.height,d={width:c,height:u};return!t||"none"===t.alignX&&"none"===t.alignY?(n=c/i,s=u/r):("meet"===t.meetOrSlice&&(e=(c-i*(n=s=T.util.findScaleToFit(this._element,d)))/2,"Min"===t.alignX&&(o=-e),"Max"===t.alignX&&(o=e),e=(u-r*s)/2,"Min"===t.alignY&&(a=-e),"Max"===t.alignY&&(a=e)),"slice"===t.meetOrSlice&&(e=i-c/(n=s=T.util.findScaleToCover(this._element,d)),"Mid"===t.alignX&&(l=e/2),"Max"===t.alignX&&(l=e),e=r-u/s,"Mid"===t.alignY&&(h=e/2),"Max"===t.alignY&&(h=e),i=c/n,r=u/s)),{width:i,height:r,scaleX:n,scaleY:s,offsetLeft:o,offsetTop:a,cropX:l,cropY:h}}}),T.Image.CSS_CANVAS="canvas-img",T.Image.prototype.getSvgSrc=T.Image.prototype.getSrc,T.Image.fromObject=function(e,t){var i=T.util.object.clone(e);T.util.loadImage(i.src,(function(e,r){r?t&&t(null,!0):T.Image.prototype._initFilters.call(i,i.filters,(function(r){i.filters=r||[],T.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(r){i.resizeFilter=r[0],T.util.enlivenObjectEnlivables(i,i,(function(){var r=new T.Image(e,i);t(r,!1)}))}))}))}),null,i.crossOrigin)},T.Image.fromURL=function(e,t,i){T.util.loadImage(e,(function(e,r){t&&t(new T.Image(e,i),r)}),null,i&&i.crossOrigin)},T.Image.ATTRIBUTE_NAMES=T.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),T.Image.fromElement=function(e,i,r){var n=T.parseAttributes(e,T.Image.ATTRIBUTE_NAMES);T.Image.fromURL(n["xlink:href"],i,t(r?T.util.object.clone(r):{},n))})}(t),T.util.object.extend(T.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.angle%360;return e>0?90*Math.round((e-1)/90):90*Math.round(e/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(e){var t=function(){},i=(e=e||{}).onComplete||t,r=e.onChange||t,n=this;return T.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){n.rotate(e),r()},onComplete:function(){n.setCoords(),i()}})}}),T.util.object.extend(T.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function e(e,t){var i="precision "+t+" float;\nvoid main(){}",r=e.createShader(e.FRAGMENT_SHADER);return e.shaderSource(r,i),e.compileShader(r),!!e.getShaderParameter(r,e.COMPILE_STATUS)}function t(e){e&&e.tileSize&&(this.tileSize=e.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}T.isWebglSupported=function(t){if(T.isLikelyNode)return!1;t=t||T.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),r=i.getContext("webgl")||i.getContext("experimental-webgl"),n=!1;if(r){T.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),n=T.maxTextureSize>=t;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(e(r,s[o])){T.webGlPrecision=s[o];break}}return this.isSupported=n,n},T.WebglFilterBackend=t,t.prototype={tileSize:2048,resources:{},setupGLContext:function(e,t){this.dispose(),this.createWebGLCanvas(e,t),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(e,t)},chooseFastestCopyGLTo2DMethod:function(e,t){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(e){i=!1}var n="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&s){var o=T.util.createCanvasElement(),a=new ArrayBuffer(e*t*4);if(T.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=O);var l,h,c={imageBuffer:a,destinationWidth:e,destinationHeight:t,targetCanvas:o};o.width=e,o.height=t,l=window.performance.now(),A.call(c,this.gl,c),h=window.performance.now()-l,l=window.performance.now(),O.call(c,this.gl,c),h>window.performance.now()-l?(this.imageBuffer=a,this.copyGLTo2D=O):this.copyGLTo2D=A}},createWebGLCanvas:function(e,t){var i=T.util.createCanvasElement();i.width=e,i.height=t;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},n=i.getContext("webgl",r);n||(n=i.getContext("experimental-webgl",r)),n&&(n.clearColor(0,0,0,0),this.canvas=i,this.gl=n)},applyFilters:function(e,t,i,r,n,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,t));var l={originalWidth:t.width||t.originalWidth,originalHeight:t.height||t.originalHeight,sourceWidth:i,sourceHeight:r,destinationWidth:i,destinationHeight:r,context:a,sourceTexture:this.createTexture(a,i,r,!o&&t),targetTexture:this.createTexture(a,i,r),originalTexture:o||this.createTexture(a,i,r,!o&&t),passes:e.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:n},h=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,h),e.forEach((function(e){e&&e.applyTo(l)})),function(e){var t=e.targetCanvas,i=t.width,r=t.height,n=e.destinationWidth,s=e.destinationHeight;i===n&&r===s||(t.width=n,t.height=s)}(l),this.copyGLTo2D(a,l),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(l.sourceTexture),a.deleteTexture(l.targetTexture),a.deleteFramebuffer(h),n.getContext("2d").setTransform(1,0,0,1,0,0),l},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(e,t,i,r){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),r?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t,i,0,e.RGBA,e.UNSIGNED_BYTE,null),n},getCachedTexture:function(e,t){if(this.textureCache[e])return this.textureCache[e];var i=this.createTexture(this.gl,t.width,t.height,t);return this.textureCache[e]=i,i},evictCachesForKey:function(e){this.textureCache[e]&&(this.gl.deleteTexture(this.textureCache[e]),delete this.textureCache[e])},copyGLTo2D:A,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var e=this.gl,t={renderer:"",vendor:""};if(!e)return t;var i=e.getExtension("WEBGL_debug_renderer_info");if(i){var r=e.getParameter(i.UNMASKED_RENDERER_WEBGL),n=e.getParameter(i.UNMASKED_VENDOR_WEBGL);r&&(t.renderer=r.toLowerCase()),n&&(t.vendor=n.toLowerCase())}return this.gpuInfo=t,t}}}(),function(){var e=function(){};function t(){}T.Canvas2dFilterBackend=t,t.prototype={evictCachesForKey:e,dispose:e,clearWebGLCaches:e,resources:{},applyFilters:function(e,t,i,r,n){var s=n.getContext("2d");s.drawImage(t,0,0,i,r);var o={sourceWidth:i,sourceHeight:r,imageData:s.getImageData(0,0,i,r),originalEl:t,originalImageData:s.getImageData(0,0,i,r),canvasEl:n,ctx:s,filterBackend:this};return e.forEach((function(e){e.applyTo(o)})),o.imageData.width===i&&o.imageData.height===r||(n.width=o.imageData.width,n.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),T.Image=T.Image||{},T.Image.filters=T.Image.filters||{},T.Image.filters.BaseFilter=T.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(e){e&&this.setOptions(e)},setOptions:function(e){for(var t in e)this[t]=e[t]},createProgram:function(e,t,i){t=t||this.fragmentSource,i=i||this.vertexSource,"highp"!==T.webGlPrecision&&(t=t.replace(/precision highp float/g,"precision "+T.webGlPrecision+" float"));var r=e.createShader(e.VERTEX_SHADER);if(e.shaderSource(r,i),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+e.getShaderInfoLog(r));var n=e.createShader(e.FRAGMENT_SHADER);if(e.shaderSource(n,t),e.compileShader(n),!e.getShaderParameter(n,e.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+e.getShaderInfoLog(n));var s=e.createProgram();if(e.attachShader(s,r),e.attachShader(s,n),e.linkProgram(s),!e.getProgramParameter(s,e.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+e.getProgramInfoLog(s));var o=this.getAttributeLocations(e,s),a=this.getUniformLocations(e,s)||{};return a.uStepW=e.getUniformLocation(s,"uStepW"),a.uStepH=e.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(e,t){return{aPosition:e.getAttribLocation(t,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(e,t,i){var r=t.aPosition,n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.enableVertexAttribArray(r),e.vertexAttribPointer(r,2,e.FLOAT,!1,0,0),e.bufferData(e.ARRAY_BUFFER,i,e.STATIC_DRAW)},_setupFrameBuffer:function(e){var t,i,r=e.context;e.passes>1?(t=e.destinationWidth,i=e.destinationHeight,e.sourceWidth===t&&e.sourceHeight===i||(r.deleteTexture(e.targetTexture),e.targetTexture=e.filterBackend.createTexture(r,t,i)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(e){e.passes--,e.pass++;var t=e.targetTexture;e.targetTexture=e.sourceTexture,e.sourceTexture=t},isNeutralState:function(){var e=this.mainParameter,t=T.Image.filters[this.type].prototype;if(e){if(Array.isArray(t[e])){for(var i=t[e].length;i--;)if(this[e][i]!==t[e][i])return!1;return!0}return t[e]===this[e]}return!1},applyTo:function(e){e.webgl?(this._setupFrameBuffer(e),this.applyToWebGL(e),this._swapTextures(e)):this.applyTo2d(e)},retrieveShader:function(e){return e.programCache.hasOwnProperty(this.type)||(e.programCache[this.type]=this.createProgram(e.context)),e.programCache[this.type]},applyToWebGL:function(e){var t=e.context,i=this.retrieveShader(e);0===e.pass&&e.originalTexture?t.bindTexture(t.TEXTURE_2D,e.originalTexture):t.bindTexture(t.TEXTURE_2D,e.sourceTexture),t.useProgram(i.program),this.sendAttributeData(t,i.attributeLocations,e.aPosition),t.uniform1f(i.uniformLocations.uStepW,1/e.sourceWidth),t.uniform1f(i.uniformLocations.uStepH,1/e.sourceHeight),this.sendUniformData(t,i.uniformLocations),t.viewport(0,0,e.destinationWidth,e.destinationHeight),t.drawArrays(t.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(e,t,i){e.activeTexture(i),e.bindTexture(e.TEXTURE_2D,t),e.activeTexture(e.TEXTURE0)},unbindAdditionalTexture:function(e,t){e.activeTexture(t),e.bindTexture(e.TEXTURE_2D,null),e.activeTexture(e.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(e){this[this.mainParameter]=e},sendUniformData:function(){},createHelpLayer:function(e){if(!e.helpLayer){var t=document.createElement("canvas");t.width=e.sourceWidth,t.height=e.sourceHeight,e.helpLayer=t}},toObject:function(){var e={type:this.type},t=this.mainParameter;return t&&(e[t]=this[t]),e},toJSON:function(){return this.toObject()}}),T.Image.filters.BaseFilter.fromObject=function(e,t){var i=new T.Image.filters[e.type](e);return t&&t(i),i},function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.ColorMatrix=r(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(e){this.callSuper("initialize",e),this.matrix=this.matrix.slice(0)},applyTo2d:function(e){var t,i,r,n,s,o=e.imageData.data,a=o.length,l=this.matrix,h=this.colorsOnly;for(s=0;s=S||o<0||o>=y||(l=4*(a*y+o),h=p[f*m+d],t+=_[l]*h,i+=_[l+1]*h,r+=_[l+2]*h,w||(n+=_[l+3]*h));C[s]=t,C[s+1]=i,C[s+2]=r,C[s+3]=w?_[s+3]:n}e.imageData=b},getUniformLocations:function(e,t){return{uMatrix:e.getUniformLocation(t,"uMatrix"),uOpaque:e.getUniformLocation(t,"uOpaque"),uHalfSize:e.getUniformLocation(t,"uHalfSize"),uSize:e.getUniformLocation(t,"uSize")}},sendUniformData:function(e,t){e.uniform1fv(t.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Grayscale=r(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(e){var t,i,r=e.imageData.data,n=r.length,s=this.mode;for(t=0;th[0]&&n>h[1]&&s>h[2]&&r 0.0) {\n"+this.fragmentSource[e]+"}\n}"},retrieveShader:function(e){var t,i=this.type+"_"+this.mode;return e.programCache.hasOwnProperty(i)||(t=this.buildSource(this.mode),e.programCache[i]=this.createProgram(e.context,t)),e.programCache[i]},applyTo2d:function(e){var i,r,n,s,o,a,l,h=e.imageData.data,c=h.length,u=1-this.alpha;i=(l=new t.Color(this.color).getSource())[0]*this.alpha,r=l[1]*this.alpha,n=l[2]*this.alpha;for(var d=0;d=e||t<=-e)return 0;if(t<1.1920929e-7&&t>-1.1920929e-7)return 1;var i=(t*=Math.PI)/e;return a(t)/t*a(i)/i}},applyTo2d:function(e){var t=e.imageData,i=this.scaleX,r=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/r;var n,s=t.width,a=t.height,l=o(s*i),h=o(a*r);"sliceHack"===this.resizeType?n=this.sliceByTwo(e,s,a,l,h):"hermite"===this.resizeType?n=this.hermiteFastResize(e,s,a,l,h):"bilinear"===this.resizeType?n=this.bilinearFiltering(e,s,a,l,h):"lanczos"===this.resizeType&&(n=this.lanczosResize(e,s,a,l,h)),e.imageData=n},sliceByTwo:function(e,i,n,s,o){var a,l,h=e.imageData,c=.5,u=!1,d=!1,f=i*c,g=n*c,_=t.filterBackend.resources,p=0,m=0,v=i,y=0;for(_.sliceByTwo||(_.sliceByTwo=document.createElement("canvas")),((a=_.sliceByTwo).width<1.5*i||a.height=t)){M=r(1e3*s(T-b.x)),S[M]||(S[M]={});for(var P=C.y-y;P<=C.y+y;P++)P<0||P>=o||(L=r(1e3*s(P-b.y)),S[M][L]||(S[M][L]=f(n(i(M*p,2)+i(L*m,2))/1e3)),(x=S[M][L])>0&&(O+=x,I+=x*c[A=4*(P*t+T)],E+=x*c[A+1],R+=x*c[A+2],D+=x*c[A+3]))}d[A=4*(w*a+l)]=I/O,d[A+1]=E/O,d[A+2]=R/O,d[A+3]=D/O}return++l1&&L<-1||(y=2*L*L*L-3*L*L+1)>0&&(x+=y*f[3+(M=4*(D+O*t))],b+=y,f[M+3]<255&&(y=y*f[M+3]/250),C+=y*f[M],w+=y*f[M+1],T+=y*f[M+2],S+=y)}_[v]=C/S,_[v+1]=w/S,_[v+2]=T/S,_[v+3]=x/b}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),t.Image.filters.Resize.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Contrast=r(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(e){if(0!==this.contrast){var t,i=e.imageData.data,r=i.length,n=Math.floor(255*this.contrast),s=259*(n+255)/(255*(259-n));for(t=0;t1&&(t=1/this.aspectRatio):this.aspectRatio<1&&(t=this.aspectRatio),e=t*this.blur*.12,this.horizontal?i[0]=e:i[1]=e,i}}),i.Blur.fromObject=t.Image.filters.BaseFilter.fromObject}(t),function(e){var t=e.fabric||(e.fabric={}),i=t.Image.filters,r=t.util.createClass;i.Gamma=r(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(e){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,e)},applyTo2d:function(e){var t,i=e.imageData.data,r=this.gamma,n=i.length,s=1/r[0],o=1/r[1],a=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),t=0,n=256;t'},_getCacheCanvasDimensions:function(){var e=this.callSuper("_getCacheCanvasDimensions"),t=this.fontSize;return e.width+=t*e.zoomX,e.height+=t*e.zoomY,e},_render:function(e){var t=this.path;t&&!t.isNotVisible()&&t._render(e),this._setTextStyles(e),this._renderTextLinesBackground(e),this._renderTextDecoration(e,"underline"),this._renderText(e),this._renderTextDecoration(e,"overline"),this._renderTextDecoration(e,"linethrough")},_renderText:function(e){"stroke"===this.paintFirst?(this._renderTextStroke(e),this._renderTextFill(e)):(this._renderTextFill(e),this._renderTextStroke(e))},_setTextStyles:function(e,t,i){if(e.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":e.textBaseline="middle";break;case"ascender":e.textBaseline="top";break;case"descender":e.textBaseline="bottom"}e.font=this._getFontDeclaration(t,i)},calcTextWidth:function(){for(var e=this.getLineWidth(0),t=1,i=this._textLines.length;te&&(e=r)}return e},_renderTextLine:function(e,t,i,r,n,s){this._renderChars(e,t,i,r,n,s)},_renderTextLinesBackground:function(e){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var t,i,r,n,s,o,a,l=e.fillStyle,h=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,_=this._textLines.length;g<_;g++)if(t=this.getHeightOfLine(g),this.textBackgroundColor||this.styleHas("textBackgroundColor",g)){r=this._textLines[g],i=this._getLineLeftOffset(g),d=0,u=0,n=this.getValueOfPropertyAt(g,0,"textBackgroundColor");for(var p=0,m=r.length;p=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:l,numOfSpaces:0}},_setGraphemeOnPath:function(e,i,r){var n=e+i.kernedWidth/2,s=this.path,o=t.util.getPointOnPath(s.path,n,s.segmentsInfo);i.renderLeft=o.x-r.x,i.renderTop=o.y-r.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(e,t,i,r,n){var s,o=this.getCompleteStyleDeclaration(t,i),a=r?this.getCompleteStyleDeclaration(t,i-1):{},l=this._measureChar(e,o,r,a),h=l.kernedWidth,c=l.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),h+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:h,deltaY:o.deltaY};if(i>0&&!n){var d=this.__charBounds[t][i-1];u.left=d.left+d.width+l.kernedWidth-l.width}return u},getHeightOfLine:function(e){if(this.__lineHeights[e])return this.__lineHeights[e];for(var t=this._textLines[e],i=this.getHeightOfChar(e,0),r=1,n=t.length;r0){var O=v+s+u;"rtl"===this.direction&&(O=this.width-O-d),h&&m&&(e.fillStyle=m,e.fillRect(O,c+C*r+o,d,this.fontSize/15)),u=f.left,d=f.width,h=g,m=p,r=n,o=a}else d+=f.kernedWidth;O=v+s+u,"rtl"===this.direction&&(O=this.width-O-d),e.fillStyle=p,g&&p&&e.fillRect(O,c+C*r+o,d-b,this.fontSize/15),y+=i}else y+=i;this._removeShadow(e)}},_getFontDeclaration:function(e,i){var r=e||this,n=this.fontFamily,s=t.Text.genericFonts.indexOf(n.toLowerCase())>-1,o=void 0===n||n.indexOf("'")>-1||n.indexOf(",")>-1||n.indexOf('"')>-1||s?r.fontFamily:'"'+r.fontFamily+'"';return[t.isLikelyNode?r.fontWeight:r.fontStyle,t.isLikelyNode?r.fontStyle:r.fontWeight,i?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",o].join(" ")},render:function(e){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",e)))},_splitTextIntoLines:function(e){for(var i=e.split(this._reNewline),r=new Array(i.length),n=["\n"],s=[],o=0;o-1&&(e.underline=!0),e.textDecoration.indexOf("line-through")>-1&&(e.linethrough=!0),e.textDecoration.indexOf("overline")>-1&&(e.overline=!0),delete e.textDecoration)}T.IText=T.util.createClass(T.Text,T.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(e,t){this.callSuper("initialize",e,t),this.initBehavior()},setSelectionStart:function(e){e=Math.max(e,0),this._updateAndFire("selectionStart",e)},setSelectionEnd:function(e){e=Math.min(e,this.text.length),this._updateAndFire("selectionEnd",e)},_updateAndFire:function(e,t){this[e]!==t&&(this._fireSelectionChanged(),this[e]=t),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(e){this.clearContextTop(),this.callSuper("render",e),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(e){this.callSuper("_render",e)},clearContextTop:function(e){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this.canvas.contextTop,i=this.canvas.viewportTransform;t.save(),t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(t),this._clearTextArea(t),e||t.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this._getCursorBoundaries(),t=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(e,t):this.renderSelection(e,t),t.restore()}},_clearTextArea:function(e){var t=this.width+4,i=this.height+4;e.clearRect(-t/2,-i/2,t,i)},_getCursorBoundaries:function(e){void 0===e&&(e=this.selectionStart);var t=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(e);return{left:t,top:i,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(e){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var t,i,r,n,s=0,o=0,a=this.get2DCursorLocation(e);r=a.charIndex,i=a.lineIndex;for(var l=0;l0?o:0)},"rtl"===this.direction&&(n.left*=-1),this.cursorOffsetCache=n,this.cursorOffsetCache},renderCursor:function(e,t){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(r,n,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,l=e.topOffset,h=this.getValueOfPropertyAt(r,n,"deltaY");l+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(e,t),t.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,n,"fill"),t.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,t.fillRect(e.left+e.leftOffset-a/2,l+e.top+h,a,s)},renderSelection:function(e,t){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,n=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(r),a=s.lineIndex,l=o.lineIndex,h=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=l;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),_=0,p=0;if(u===a&&(_=this.__charBounds[a][h].left),u>=a&&u1)&&(g/=this.lineHeight);var v=e.left+f+_,y=p-_,S=g,b=0;this.inCompositionMode?(t.fillStyle=this.compositionColor||"black",S=1,b=g):t.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),t.fillRect(v,e.top+e.topOffset+b,y,S),e.topOffset+=d}},getCurrentCharFontSize:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fontSize")},getCurrentCharColor:function(){var e=this._getCurrentCharIndex();return this.getValueOfPropertyAt(e.l,e.c,"fill")},_getCurrentCharIndex:function(){var e=this.get2DCursorLocation(this.selectionStart,!0),t=e.charIndex>0?e.charIndex-1:0;return{l:e.lineIndex,c:t}}}),T.IText.fromObject=function(t,i){if(e(t),t.styles)for(var r in t.styles)for(var n in t.styles[r])e(t.styles[r][n]);T.Object._fromObject("IText",t,i,"text")}}(),w=T.util.object.clone,T.util.object.extend(T.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var e=this;this.on("added",(function(){var t=e.canvas;t&&(t._hasITextHandlers||(t._hasITextHandlers=!0,e._initCanvasHandlers(t)),t._iTextInstances=t._iTextInstances||[],t._iTextInstances.push(e))}))},initRemovedHandler:function(){var e=this;this.on("removed",(function(){var t=e.canvas;t&&(t._iTextInstances=t._iTextInstances||[],T.util.removeFromArray(t._iTextInstances,e),0===t._iTextInstances.length&&(t._hasITextHandlers=!1,e._removeCanvasHandlers(t)))}))},_initCanvasHandlers:function(e){e._mouseUpITextHandler=function(){e._iTextInstances&&e._iTextInstances.forEach((function(e){e.__isMousedown=!1}))},e.on("mouse:up",e._mouseUpITextHandler)},_removeCanvasHandlers:function(e){e.off("mouse:up",e._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(e,t,i,r){var n;return n={isAborted:!1,abort:function(){this.isAborted=!0}},e.animate("_currentCursorOpacity",t,{duration:i,onComplete:function(){n.isAborted||e[r]()},onChange:function(){e.canvas&&e.selectionStart===e.selectionEnd&&e.renderCursorOrSelection()},abort:function(){return n.isAborted}}),n},_onTickComplete:function(){var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){e._currentTickCompleteState=e._animateCursor(e,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(e){var t=this,i=e?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){t._tick()}),i)},abortCursorAnimation:function(){var e=this._currentTickState||this._currentTickCompleteState,t=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,e&&t&&t.clearContext(t.contextTop||t.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(e){var t=0,i=e-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)t++,i--;for(;/\S/.test(this._text[i])&&i>-1;)t++,i--;return e-t},findWordBoundaryRight:function(e){var t=0,i=e;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)t++,i++;for(;/\S/.test(this._text[i])&&i-1;)t++,i--;return e-t},findLineBoundaryRight:function(e){for(var t=0,i=e;!/\n/.test(this._text[i])&&i0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=t):(this.selectionStart=t,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(e,t,i){var r=i.slice(0,e),n=T.util.string.graphemeSplit(r).length;if(e===t)return{selectionStart:n,selectionEnd:n};var s=i.slice(e,t);return{selectionStart:n,selectionEnd:n+T.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(e,t,i){var r=i.slice(0,e).join("").length;return e===t?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(e,t).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var e=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=e.selectionStart,this.hiddenTextarea.selectionEnd=e.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var e=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=e.selectionEnd,this.inCompositionMode||(this.selectionStart=e.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var e=this._calcTextareaPosition();this.hiddenTextarea.style.left=e.left,this.hiddenTextarea.style.top=e.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var e=this.inCompositionMode?this.compositionStart:this.selectionStart,t=this._getCursorBoundaries(e),i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex,s=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,o=t.leftOffset,a=this.calcTransformMatrix(),l={x:t.left+o,y:t.top+t.topOffset+s},h=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/h,d=c.height/h,f=u-s,g=d-s,_=c.clientWidth/u,p=c.clientHeight/d;return l=T.util.transformPoint(l,a),(l=T.util.transformPoint(l,this.canvas.viewportTransform)).x*=_,l.y*=p,l.x<0&&(l.x=0),l.x>f&&(l.x=f),l.y<0&&(l.y=0),l.y>g&&(l.y=g),l.x+=this.canvas._offset.left,l.y+=this.canvas._offset.top,{left:l.x+"px",top:l.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var e=this._textBeforeEdit!==this.text,t=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,t&&(t.blur&&t.blur(),t.parentNode&&t.parentNode.removeChild(t)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),e&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),e&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var e in this.styles)this._textLines[e]||delete this.styles[e]},removeStyleFromTo:function(e,t){var i,r,n=this.get2DCursorLocation(e,!0),s=this.get2DCursorLocation(t,!0),o=n.lineIndex,a=n.charIndex,l=s.lineIndex,h=s.charIndex;if(o!==l){if(this.styles[o])for(i=a;i=h&&(r[c-d]=r[u],delete r[u])}},shiftLineStyles:function(e,t){var i=w(this.styles);for(var r in this.styles){var n=parseInt(r,10);n>e&&(this.styles[n+t]=i[n],i[n-t]||delete this.styles[n])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(e,t,i,r){var n,s={},o=!1,a=this._unwrappedTextLines[e].length===t;for(var l in i||(i=1),this.shiftLineStyles(e,i),this.styles[e]&&(n=this.styles[e][0===t?t:t-1]),this.styles[e]){var h=parseInt(l,10);h>=t&&(o=!0,s[h-t]=this.styles[e][l],a&&0===t||delete this.styles[e][l])}var c=!1;for(o&&!a&&(this.styles[e+i]=s,c=!0),c&&i--;i>0;)r&&r[i-1]?this.styles[e+i]={0:w(r[i-1])}:n?this.styles[e+i]={0:w(n)}:delete this.styles[e+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(e,t,i,r){this.styles||(this.styles={});var n=this.styles[e],s=n?w(n):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=t&&(n[a+i]=s[a],s[a-i]||delete n[a])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[e]||(this.styles[e]={}),this.styles[e][t+i]=w(r[i]));else if(n)for(var l=n[t?t-1:1];l&&i--;)this.styles[e][t+i]=w(l)},insertNewStyleBlock:function(e,t,i){for(var r=this.get2DCursorLocation(t,!0),n=[0],s=0,o=0;o0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,n[0],i),i=i&&i.slice(n[0]+1)),s&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+n[0],s),o=1;o0?this.insertCharStyleObject(r.lineIndex+o,0,n[o],i):i&&this.styles[r.lineIndex+o]&&i[0]&&(this.styles[r.lineIndex+o][0]=i[0]),i=i&&i.slice(n[o]+1);n[o]>0&&this.insertCharStyleObject(r.lineIndex+o,0,n[o],i)},setSelectionStartEndWithShift:function(e,t,i){i<=e?(t===e?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=e),this.selectionStart=i):i>e&&ie?this.selectionStart=e:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>e?this.selectionEnd=e:this.selectionEnd<0&&(this.selectionEnd=0)}}),T.util.object.extend(T.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(e){if(this.canvas){this.__newClickTime=+new Date;var t=e.pointer;this.isTripleClick(t)&&(this.fire("tripleclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(e){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(e.e))},tripleClickHandler:function(e){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(e.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(e.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(e){!this.canvas||!this.editable||e.e.button&&1!==e.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(e){if(this.__isMousedown=!1,!(!this.editable||this.group||e.transform&&e.transform.actionPerformed||e.e.button&&1!==e.e.button)){if(this.canvas){var t=this.canvas._activeObject;if(t&&t!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(e.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e),i=this.selectionStart,r=this.selectionEnd;e.shiftKey?this.setSelectionStartEndWithShift(i,r,t):(this.selectionStart=t,this.selectionEnd=t),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(e){for(var t,i=this.getLocalPointer(e),r=0,n=0,s=0,o=0,a=0,l=0,h=this._textLines.length;l0&&(o+=this._textLines[l-1].length+this.missingNewlineOffset(l-1));n=this._getLineLeftOffset(a)*this.scaleX,t=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+n);for(var c=0,u=t.length;cs||o<0?0:1);return this.flipX&&(a=n-a),a>this._text.length&&(a=this._text.length),a}}),T.util.object.extend(T.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=T.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var e=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+e.top+"; left: "+e.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+e.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):T.document.body.appendChild(this.hiddenTextarea),T.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),T.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),T.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),T.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(T.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(e){if(this.isEditing){var t="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(e.keyCode in t)this[t[e.keyCode]](e);else{if(!(e.keyCode in this.ctrlKeysMapDown)||!e.ctrlKey&&!e.metaKey)return;this[this.ctrlKeysMapDown[e.keyCode]](e)}e.stopImmediatePropagation(),e.preventDefault(),e.keyCode>=33&&e.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(e){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:e.keyCode in this.ctrlKeysMapUp&&(e.ctrlKey||e.metaKey)&&(this[this.ctrlKeysMapUp[e.keyCode]](e),e.stopImmediatePropagation(),e.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(e){var t=this.fromPaste;if(this.fromPaste=!1,e&&e.stopPropagation(),this.isEditing){var i,r,n,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,l=this._text.length,h=a.length,c=h-l,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),_=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):h0&&(r+=(i=this.__charBounds[e][t-1]).left+i.width),r},getDownCursorOffset:function(e,t){var i=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(i),n=r.lineIndex;if(n===this._textLines.length-1||e.metaKey||34===e.keyCode)return this._text.length-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n+1,o);return this._textLines[n].slice(s).length+a+1+this.missingNewlineOffset(n)},_getSelectionForOffset:function(e,t){return e.shiftKey&&this.selectionStart!==this.selectionEnd&&t?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(e,t){var i=this._getSelectionForOffset(e,t),r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||e.metaKey||33===e.keyCode)return-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n-1,o),l=this._textLines[n].slice(0,s),h=this.missingNewlineOffset(n-1);return-this._textLines[n-1].length+a-l.length+(1-h)},_getIndexOnLine:function(e,t){for(var i,r,n=this._textLines[e],s=this._getLineLeftOffset(e),o=0,a=0,l=n.length;at){r=!0;var h=s-i,c=s,u=Math.abs(h-t);o=Math.abs(c-t)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",e)},moveCursorUp:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",e)},_moveCursorUpOrDown:function(e,t){var i=this["get"+e+"CursorOffset"](t,"right"===this._selectionDirection);t.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(e){var t="left"===this._selectionDirection?this.selectionStart+e:this.selectionEnd+e;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,t),0!==e},moveCursorWithoutShift:function(e){return e<0?(this.selectionStart+=e,this.selectionEnd=this.selectionStart):(this.selectionEnd+=e,this.selectionStart=this.selectionEnd),0!==e},moveCursorLeft:function(e){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",e)},_move:function(e,t,i){var r;if(e.altKey)r=this["findWordBoundary"+i](this[t]);else{if(!e.metaKey&&35!==e.keyCode&&36!==e.keyCode)return this[t]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[t])}if(void 0!==typeof r&&this[t]!==r)return this[t]=r,!0},_moveLeft:function(e,t){return this._move(e,t,"Left")},_moveRight:function(e,t){return this._move(e,t,"Right")},moveCursorLeftWithoutShift:function(e){var t=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(t=this._moveLeft(e,"selectionStart")),this.selectionEnd=this.selectionStart,t},moveCursorLeftWithShift:function(e){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(e,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(e,"selectionStart")):void 0},moveCursorRight:function(e){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",e)},_moveCursorLeftOrRight:function(e,t){var i="moveCursor"+e+"With";this._currentCursorOpacity=1,t.shiftKey?i+="Shift":i+="outShift",this[i](t)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(e){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(e,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(e){var t=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(t=this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,t},removeChars:function(e,t){void 0===t&&(t=e+1),this.removeStyleFromTo(e,t),this._text.splice(e,t-e),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(e,t,i,r){void 0===r&&(r=i),r>i&&this.removeStyleFromTo(i,r);var n=T.util.string.graphemeSplit(e);this.insertNewStyleBlock(n,i,t),this._text=[].concat(this._text.slice(0,i),n,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var e=T.util.toFixed,t=/ +/g;T.util.object.extend(T.Text.prototype,{_toSVG:function(){var e=this._getSVGLeftTopOffsets(),t=this._getSVGTextAndBg(e.textTop,e.textLeft);return this._wrapSVGTextAndBg(t)},toSVG:function(e){return this._createBaseSVGMarkup(this._toSVG(),{reviver:e,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(e){var t=this.getSvgTextDecoration(this);return[e.textBgRects.join(""),'\t\t",e.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(e,t){var i,r=[],n=[],s=e;this._setSVGBg(n);for(var o=0,a=this._textLines.length;o",T.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(e,t,i,r){var n,s,o,a,l,h=this.getHeightOfLine(t),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[t];r+=h*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,_=f.length-1;g<=_;g++)l=g===_||this.charSpacing,u+=f[g],o=this.__charBounds[t][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!l&&this._reSpaceAndTab.test(f[g])&&(l=!0),l||(n=n||this.getCompleteStyleDeclaration(t,g),s=this.getCompleteStyleDeclaration(t,g+1),l=this._hasStyleChangedForSvg(n,s)),l&&(a=this._getStyleDeclaration(t,g)||{},e.push(this._createTextCharSpan(u,a,i,r)),u="",n=s,i+=d,d=0)},_pushTextBgRect:function(t,i,r,n,s,o){var a=T.Object.NUM_FRACTION_DIGITS;t.push("\t\t\n')},_setSVGTextLineBg:function(e,t,i,r){for(var n,s,o=this._textLines[t],a=this.getHeightOfLine(t)/this.lineHeight,l=0,h=0,c=this.getValueOfPropertyAt(t,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(e){for(var t=0,i=0,r=0,n={},s=0;s0?(i=0,r++,t++):!this.splitByGrapheme&&this._reSpaceAndTab.test(e.graphemeText[r])&&s>0&&(i++,r++),n[s]={line:t,offset:i},r+=e.graphemeLines[s].length,i+=e.graphemeLines[s].length;return n},styleHas:function(e,i){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[i];r&&(i=r.line)}return t.Text.prototype.styleHas.call(this,e,i)},isEmptyStyles:function(e){if(!this.styles)return!0;var t,i,r=0,n=!1,s=this._styleMap[e],o=this._styleMap[e+1];for(var a in s&&(e=s.line,r=s.offset),o&&(n=o.line===e,t=o.offset),i=void 0===e?this.styles:{line:this.styles[e]})for(var l in i[a])if(l>=r&&(!n||lr&&!p?(a.push(l),l=[],s=f,p=!0):s+=m,p||o||l.push(d),l=l.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>_&&(_=f);return v&&a.push(l),_+n>this.dynamicMinWidth&&(this.dynamicMinWidth=_-m+n),a},isEndOfWrapping:function(e){return!this._styleMap[e+1]||this._styleMap[e+1].line!==this._styleMap[e].line},missingNewlineOffset:function(e){return this.splitByGrapheme?this.isEndOfWrapping(e)?1:0:1},_splitTextIntoLines:function(e){for(var i=t.Text.prototype._splitTextIntoLines.call(this,e),r=this._wrapText(i.lines,this.width),n=new Array(r.length),s=0;s{},898:()=>{},245:()=>{}},L={};function P(e){var t=L[e];if(void 0!==t)return t.exports;var i=L[e]={exports:{}};return M[e](i,i.exports,P),i.exports}P.d=(e,t)=>{for(var i in t)P.o(t,i)&&!P.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},P.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var F={};(()=>{let e;P.d(F,{R:()=>e}),e="undefined"!=typeof document&&"undefined"!=typeof window?P(653).fabric:{version:"5.2.1"}})();var k=F.R; /*! * Dynamsoft JavaScript Library * @product Dynamsoft Camera Enhancer JS Edition * @website https://www.dynamsoft.com * @copyright Copyright 2022, Dynamsoft Corporation * @author Dynamsoft - * @version 3.0.0 (js 20220726) + * @version 3.0.1 (js 20220803) * @fileoverview Dynamsoft JavaScript Library for Camera Enhancer * More info on DCE JS: https://www.dynamsoft.com/camera-enhancer/docs/programming/javascript/?ver=latest - */function B(e,t,i,r){return new(i||(i=Promise))((function(n,s){function o(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((r=r.apply(e,t||[])).next())}))}const j="undefined"==typeof self;let N,V,U,G,W;if("undefined"!=typeof navigator&&(N=navigator,V=N.userAgent,U=N.platform,G=N.mediaDevices),!j){const e={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(V)||this.searchVersion(N.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=V.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(e){for(let t=0;t{let e=!1;if(Y)try{(await G.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===W.browser&&W.version>66||"Safari"===W.browser&&W.version>13||"OPR"===W.browser&&W.version>43||"Edge"===W.browser&&W.version;const K=(()=>{if(!j&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})();class J{constructor(e,t){this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapStyle=new Map,this.mapEvents=new Map([["select",[]],["deselect",[]]]),this.isDrawingItem=!0,this._setFabricObject(e),this._mediaType=e.type,this.styleSelector="default",this.styleId=t;for(let e of J.arrStyleSelectors)this._mapStyle.set(e,null)}get mediaType(){return this._mediaType}get drawingLayerId(){return this._drawingLayerId}_setFabricObject(e){this._fabricObject=e;const t=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const e=this.mapEvents.get("select");for(let t of e)t&&t.apply(this)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const e=t.get("deselect");for(let t of e)t&&t.apply(this)},e.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}on(e,t,i){const r=this.mapEvents.get(e);r.includes(t)||r.push(t)}off(e,t){const i=this.mapEvents.get(e),r=i.indexOf(t);-1!==r&&i.splice(r,1)}_setEditable(e){const t=this._fabricObject;e?(t.selectable=!0,t.evented=!0,t.hasControls=!0):(t.selectable=!1,t.evented=!1,t.hasControls=!1)}_extendSet(e,t){return!1}_extendGet(e){}set(e,t){this._extendSet(e,t)||("x"===e?this._fabricObject.set("left",t):"y"===e?this._fabricObject.set("top",t):this._fabricObject.set(e,t)),["vertices","left","top","width","height","scaleX","scaleY","skewX","skewY","padding","angle","strokeWidth"].includes(e)&&this._fabricObject.setCoords()}get(e){let t=this._extendGet(e);return void 0===t&&(t="x"===e?this._fabricObject.get("left"):"y"===e?this._fabricObject.get("top"):this._fabricObject.get(e)),t}}function q(e,t,i){let r=i.points[this.pointIndex].x-i.pathOffset.x,n=i.points[this.pointIndex].y-i.pathOffset.y;return k.util.transformPoint({x:r,y:n},k.util.multiplyTransformMatrices(i.canvas.viewportTransform,i.calcTransformMatrix()))}function Q(e){let t=new k.Point(e.strokeUniform?1/e.scaleX:1,e.strokeUniform?1/e.scaleY:1).multiply(e.strokeWidth);return new k.Point(e.width+t.x,e.height+t.y)}function Z(e,t,i,r){let n=t.target,s=n.controls[n.__corner],o=n.toLocalPoint(new k.Point(i,r),"center","center"),a=Q(n),l=n._getTransformedDimensions(0,0),h={x:o.x*a.x/l.x+n.pathOffset.x,y:o.y*a.y/l.y+n.pathOffset.y};return n.points[s.pointIndex]=h,!0}function $(e,t){return function(i,r,n,s){let o=r.target,a=k.util.transformPoint({x:o.points[e].x-o.pathOffset.x,y:o.points[e].y-o.pathOffset.y},o.calcTransformMatrix()),l=t(i,r,n,s);o._setPositionDimensions({});let h=Q(o),c=(o.points[e].x-o.pathOffset.x)/h.x,u=(o.points[e].y-o.pathOffset.y)/h.y;return o.setPositionByOrigin(a,c+.5,u+.5),l}}J.arrMediaTypes=["rect","arc","polygon","image","text","line","path"],J.arrStyleSelectors=["default","selected"],"undefined"!=typeof document&&"undefined"!=typeof window&&(k.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(k.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(e){e.dispose&&e.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),k.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},k.Object.prototype.transparentCorners=!1,k.Object.prototype.cornerSize=20,k.Object.prototype.touchCornerSize=100,k.Object.prototype.cornerColor="rgb(254,142,20)",k.Object.prototype.cornerStyle="circle",k.Object.prototype.strokeUniform=!0,k.Object.prototype.hasBorders=!1,k.ActiveSelection.prototype.onDeselect=function(){return this.getObjects().forEach((e=>{setTimeout(e.onDeselect,0)})),this.destroy(),!1},k.Canvas.prototype.containerClass="",k.Canvas.prototype.getPointer=function(e,t){if(this._absolutePointer&&!t)return this._absolutePointer;if(this._pointer&&t)return this._pointer;var i,r=this.upperCanvasEl,n=k.util.getPointer(e,r),s=r.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,t||(n=this.restorePointerVpt(n));var l=this.getRetinaScaling();if(1!==l&&(n.x/=l,n.y/=l),0!==o&&0!==a){var h=window.getComputedStyle(r).objectFit,c=r.width,u=r.height,d=o,f=a;i={width:c/d,height:u/f};var g,_,p=c/u,m=d/f;return"contain"===h?p>m?(g=d,_=d/p,{x:n.x*i.width,y:(n.y-(f-_)/2)*i.width}):(g=f*p,_=f,{x:(n.x-(d-g)/2)*i.height,y:n.y*i.height}):"cover"===h?p>m?{x:(c-i.height*d)/2+n.x*i.height,y:n.y*i.height}:{x:n.x*i.width,y:(u-i.width*f)/2+n.y*i.width}:{x:n.x*i.width,y:n.y*i.height}}return i={width:1,height:1},{x:n.x*i.width,y:n.y*i.height}});class ee{constructor(e,t,i,r){let n,s;switch(this.mapMediaType_Style=new Map,this.mode="viewer",this.onSelectionChange=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,e.hasOwnProperty("getFabricCanvas")?this.fabricCanvas=e.getFabricCanvas():(this.fabricCanvas=new k.Canvas(e,r),this.fabricCanvas.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),this.fabricCanvas.lowerCanvasEl.className="",this.fabricCanvas.upperCanvasEl.className="",this.fabricCanvas.on("selection:created",(function(e){const t=e.selected,i=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!i.includes(t)&&i.push(t)}for(let e of i){const i=[];for(let r of t){const t=r.getDrawingItem();t._drawingLayer===e&&i.push(t)}setTimeout((()=>{e.onSelectionChange&&e.onSelectionChange(i,[])}),0)}})),this.fabricCanvas.on("before:selection:cleared",(function(e){const t=this.getActiveObjects(),i=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!i.includes(t)&&i.push(t)}for(let e of i){const i=[];for(let r of t){const t=r.getDrawingItem();t._drawingLayer===e&&i.push(t)}setTimeout((()=>{const t=[];for(let r of i)e.hasDrawingItem(r)&&t.push(r);t.length>0&&e.onSelectionChange&&e.onSelectionChange([],t)}),0)}})),this.fabricCanvas.on("selection:updated",(function(e){const t=e.selected,i=e.deselected,r=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!r.includes(t)&&r.push(t)}for(let e of i){const t=e.getDrawingItem()._drawingLayer;t&&!r.includes(t)&&r.push(t)}for(let e of r){const r=[],n=[];for(let i of t){const t=i.getDrawingItem();t._drawingLayer===e&&r.push(t)}for(let t of i){const i=t.getDrawingItem();i._drawingLayer===e&&n.push(i)}setTimeout((()=>{e.onSelectionChange&&e.onSelectionChange(r,n)}),0)}})),this.fabricCanvas.wrapperEl.style.position="absolute",e.getFabricCanvas=()=>this.fabricCanvas),this.id=t,this._mapDrawingStyles=i,t){case 1:n=i.get(1),s=i.get(5);break;case 2:n=i.get(2),s=i.get(6);break;case 3:n=i.get(3),s=i.get(7);break;default:n=i.get(4),s=i.get(8)}for(let e of J.arrMediaTypes)this.mapMediaType_Style.set(e,{default:n,selected:s})}getId(){return this.id}_getDrawingStyle(e,t){if("number"!=typeof e)throw new Error("Invalid style id.");const i=this._mapDrawingStyles.get(e);return i?t?JSON.parse(JSON.stringify(i)):i:null}setVisible(e){if(e){for(let e of this._arrFabricObject)e.visible=!0;this._visible=!0}else{for(let e of this._arrFabricObject)e.visible=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyleId(e){return e.styleId?e.styleId:this.mapMediaType_Style.get(e._mediaType)[e.styleSelector].styleId}_getItemCurrentStyle(e){if(e.styleId)return this._getDrawingStyle(e.styleId);return e._mapStyle.get(e.styleSelector)||null}_changeMediaTypeCurStyleInStyleSelector(e,t,i,r){let n;switch(e){case"rect":n=this.fabricCanvas.getObjects("rect");break;case"arc":n=this.fabricCanvas.getObjects("circle");break;case"polygon":n=this.fabricCanvas.getObjects("polygon");break;case"image":n=this.fabricCanvas.getObjects("image");break;case"text":n=this.fabricCanvas.getObjects("text");break;case"line":n=this.fabricCanvas.getObjects("line");break;case"path":n=this.fabricCanvas.getObjects("path")}for(let e of n){if(!this._arrFabricObject.includes(e))continue;const r=e.getDrawingItem();r.styleSelector===t&&this._changeItemStyle(r,i,!0)}r||this.fabricCanvas.renderAll()}_changeItemStyle(e,t,i){if(!e||!t)return;const r=e._getFabricObject();"number"==typeof e.styleId&&(t=this._getDrawingStyle(e.styleId)),r.strokeWidth=t.lineWidth,"fill"===t.paintMode?(r.fill=t.fillStyle,r.stroke=t.fillStyle):"stroke"===t.paintMode?(r.fill="transparent",r.stroke=t.strokeStyle):"strokeAndFill"===t.paintMode&&(r.fill=t.fillStyle,r.stroke=t.strokeStyle),r.fontFamily&&(r.fontFamily=t.fontFamily),r.fontSize&&(r.fontSize=t.fontSize),r.group||(r.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(e,t,i){if(!e||!t)return;const r=e.getChildItems();if("add"===i){if(r.includes(t))return;const i=t._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");t._zIndex=null}else{let i;if(t.styleId)i=this._getDrawingStyle(t.styleId);else{i=this.mapMediaType_Style.get(t._mediaType)[e.styleSelector];const r=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).selected,!0)},n=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).default,!0)};t.on("select",r),t.on("deselect",n),t._funcChangeStyleToSelected=r,t._funcChangeStyleToDefault=n}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,i,!0)}e._fabricObject.addWithUpdate(t._getFabricObject())}else{if("remove"!==i)return;if(!r.includes(t))return;t._zIndex=null,t._drawingLayer=null,t._drawingLayerId=null,t.off("select",t._funcChangeStyleToSelected),t.off("deselect",t._funcChangeStyleToDefault),t._funcChangeStyleToSelected=null,t._funcChangeStyleToDefault=null,e._fabricObject.removeWithUpdate(t._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(e,t){let i=e._getFabricObject();const r=this.fabricCanvas.getObjects();let n,s;if(r.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===e._mediaType){n=e.getChildItems();for(let e of n)if(e._drawingLayer&&e._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(t&&"object"==typeof t&&!Array.isArray(t))for(let e in t)i.set(e,t[e]);if(n){for(let e of n){if(e.styleId)s=this._getDrawingStyle(e.styleId);else{const t=this.mapMediaType_Style.get(e._mediaType);for(let i of J.arrStyleSelectors)e._mapStyle.set(i,t[i]);s=t.default;const i=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected,!0)},r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default,!0)};e.on("select",i),e.on("deselect",r),e._funcChangeStyleToSelected=i,e._funcChangeStyleToDefault=r}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{if(e.styleId)s=this._getDrawingStyle(e.styleId);else{const t=this.mapMediaType_Style.get(e._mediaType);for(let i of J.arrStyleSelectors)e._mapStyle.set(i,t[i]);s=t.default;const i=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected)},r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default)};e.on("select",i),e.on("deselect",r),e._funcChangeStyleToSelected=i,e._funcChangeStyleToDefault=r}this._changeItemStyle(e,s)}e._zIndex=this.id,e._drawingLayer=this,e._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=r.length;if(o)a=r.indexOf(this._arrFabricObject[o-1])+1;else for(let t=0;t{for(let t of this._arrDrawingLayer)if(t.getId()===e)return!0;return!1};if(void 0===t){for(let e=100;;e++)if(!i(e)){t=e;break}}else if(i(t))throw new Error("Existed drawing layer id.");const r=new ee(e,t,this._mapDrawingStyles,{enableRetinaScaling:!1});return r._manager=this,this._arrDrawingLayer.push(r),this._switchPointerEvent(),r}deleteDrwaingLayer(e){const t=this.getDrawingLayer(e);if(!t)return;const i=this._arrDrawingLayer;t.dispose(),i.splice(i.indexOf(t),1),this._switchPointerEvent()}clearDrawingLayers(){for(let e of this._arrDrawingLayer)e.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(e){for(let t of this._arrDrawingLayer)if(t.getId()===e)return t;return null}getDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const e=this._arrDrawingLayer[0].fabricCanvas.getActiveObjects(),t=[];for(let i of e)t.push(i.getDrawingItem());return t}setDimensions(e,t){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(e,t)}setObjectFit(e){for(let t of this._arrDrawingLayer)t&&t._setObjectFit(e)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(e){this._arrDrawingLayer.length&&(this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.display=e?"block":"none")}_switchPointerEvent(){if(!this._arrDrawingLayer.length)return;let e=!1;for(let t of this._arrDrawingLayer)"editor"===t.getMode()&&(e=!0);this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.pointerEvents=e?"":"none"}}class ie{constructor(e){this._controlTarget=null,this._arrUsers=[],this._mapAction_UserArgs=new Map,this._mapProperty_UserValue=new Map,this._mapAction_Callbacks=new Map,this._controlTarget=e}setControlTarget(e){this._controlTarget=e}getControlTarget(){return this._controlTarget}register(e){this._arrUsers.includes(e)||this._arrUsers.push(e)}logout(e){const t=this._arrUsers.indexOf(e);-1!==t&&(this.clearUserDisiredAction({user:e}),this.clearUserDisiredValue({user:e}),this._arrUsers.splice(t,1))}getRegisteredUsers(){return this._arrUsers}ifUserExisted(e){return this._arrUsers.includes(e)}setDisiredValue(e,t,i,r){if(!this._arrUsers.includes(e))throw new Error("Unregistered user.");r&&(this._controlTarget[t]=i),this._mapProperty_UserValue.get(t)?this._mapProperty_UserValue.get(t).set(e,i):this._mapProperty_UserValue.set(t,new Map([[e,i]]))}clearUserDisiredValue(e){if(e&&(e.user||e.property)){if(e.property&&e.user){const t=this._mapProperty_UserValue.get(e.property);if(!t)return;t.delete(e.user)}else if(e.property)this._mapProperty_UserValue.delete(e.property);else if(e.user)for(let t of this._mapProperty_UserValue.values())t.delete(e.user)}else this._mapProperty_UserValue=new Map}getValue(e){if(!this._controlTarget)throw new Error("Control target is not set.");return this._controlTarget[e]}getPropertyDisiredValue(e){if(this._mapProperty_UserValue.get(e)){const t=[],i=this._mapProperty_UserValue.get(e);for(let e of i.values())t.push(e);return t}return null}setDisiredAction(e,t,i,r){if(!this._arrUsers.includes(e))throw new Error("Unregistered user.");return i||(i=[]),r?this._controlTarget[t](...i):(this._mapAction_UserArgs.get(t)?this._mapAction_UserArgs.get(t).set(e,i):this._mapAction_UserArgs.set(t,new Map([[e,i]])),this._render(t))}clearUserDisiredAction(e){if(e&&(e.user||e.actionName)){if(e.actionName&&e.user){const t=this._mapAction_UserArgs.get(e.actionName);if(!t)return;t.delete(e.user)}else if(e.actionName)this._mapAction_UserArgs.delete(e.actionName);else if(e.user)for(let t of this._mapAction_UserArgs.values())t.delete(e.user);this.render()}else this._mapAction_UserArgs=new Map}addCallback(e,t){const i=this._mapAction_Callbacks.get(e);i?i.push(t):this._mapAction_Callbacks.set(e,[t])}removeCallback(e,t){const i=this._mapAction_Callbacks.get(e);if(!i)return;const r=i.indexOf(t);-1!==r&&i.splice(r,1)}clearCallback(e){e?this._mapAction_Callbacks.delete(e):this._mapAction_Callbacks.clear()}_fireCallback(e){const t=this._mapAction_Callbacks.get(e);if(t)for(let e of t){if(!e)return;setTimeout(e.bind(this._controlTarget),0)}}_render(e){const t=this._mapAction_UserArgs.get(e);if(!t)throw new Error("Unrecorded action.");if(t.size===this._arrUsers.length){let i=[];for(let e of t.values())e.length>0&&(i=e);if(this._controlTarget[e]){const t=this._controlTarget[e](...i);return this._mapAction_UserArgs.delete(e),this._fireCallback(e),t}}}render(e){if(e)return this._render(e);for(let e of this._mapAction_UserArgs.keys())this._render(e)}}class re{constructor(){this._maxCvsSideLength=void 0,this._defaultMaxCvsSideLength=null,this._predefinedResolutions=[{width:160,height:120},{width:320,height:240},{width:480,height:360},{width:640,height:480},{width:800,height:600},{width:960,height:720},{width:1280,height:720},{width:1920,height:1080},{width:2560,height:1440},{width:3840,height:2160}],this._mapCameraResolutions=new Map,this._bWebGLSupported=!0,this.extraBindings=[],this._singleFrameMode=!(navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia),this._cvsSingleFrameMode=null,this._cvsOriginalImage=null,this._imgWidth=0,this._imgHeight=0,this._singleFrameModeIpt=null,this._clickIptSingleFrameMode=()=>{if(this.singleFrameMode){if(!this._singleFrameModeIpt){const e=document.createElement("input");this._singleFrameModeIpt=e,e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.addEventListener("change",(()=>B(this,void 0,void 0,(function*(){const t=e.files[0];e.value="";const i=yield(e=>B(this,void 0,void 0,(function*(){let t=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(t=yield createImageBitmap(e),t)return t}catch(e){}var r;return t||(i=yield(r=e,new Promise(((e,t)=>{let i=URL.createObjectURL(r),n=new Image;n.dbrObjUrl=i,n.src=i,n.onload=()=>{e(n)},n.onerror=e=>{t(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}})))),i})))(t),r=i instanceof HTMLImageElement?i.naturalWidth:i.width,n=i instanceof HTMLImageElement?i.naturalHeight:i.height;this._imgWidth=r,this._imgHeight=n;const s=e=>{const t=Date.now();if(0===r||0===n)return null;const i=this._scanRegion,s=this.getFrameSize(r,n,i,this.maxCvsSideLength);if(!s)return null;let o,a;o=r!==s.sWidth||n!==s.sHeight,a=s.sWidth!==s.dWidth||s.sHeight!==s.dHeight;const l=(()=>!(!this._bWebGLSupported||a))(),h={data:null,region:i?JSON.parse(JSON.stringify(i)):null,sx:s.sx,sy:s.sy,width:s.dWidth,height:s.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:o,toCanvas:this._toCanvas,_sWidth:s.sWidth,_sHeight:s.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(e,r,n,s,null,{targetColorMode:this.frameColorMode,bUseWebGL:l})}catch(t){if("WebGLError"!==t.name)throw t;c=this._getImageData(e,r,n,s,null,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return re._onLog&&re._onLog("DCE: _getVideoFrame(region?) END: "+u),h.data=c.data,h.colorMode=c.colorMode,h._bUseWebGL=c._bUseWebGL,h.timeSpent=u-t,h.timeStamp=u,h};(e=>{let t=this._cvsSingleFrameMode;if(!t){if(t=document.createElement("canvas"),t.style.pointerEvents="none",!this._video)throw new Error("'video' is null.");this._video.after(t),t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.objectFit="contain",this._cvsSingleFrameMode=t}t.width==r&&t.height==n||(t.width=r,t.height=n);const i=t.getContext("2d");i.clearRect(0,0,t.width,t.height),i.drawImage(e,0,0)})(i),this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e);let o;this._updateDrawingLayersSize();try{o=s(i)}catch(e){throw e}const a=this.mapCameraEvents.get("singleFrameAcquired");for(let e of a)if(e)try{const t={data:new Uint8Array(o.data),region:JSON.parse(JSON.stringify(o.region)),sx:o.sx,sy:o.sy,width:o.width,height:o.height,colorMode:o.colorMode,timeSpent:o.timeSpent,timeStamp:o.timeStamp,isCropped:o.isCropped,toCanvas:o.toCanvas,_sWidth:o._sWidth,_sHeight:o._sHeight,_bUseWebGL:o._bUseWebGL};yield e.apply(this,[t])}catch(e){console.error(e)}})))),e.style.position="fixed",e.style.left="-1px",e.style.top="-1px",e.style.width="1px",e.style.height="1px",e.style.backgroundColor="transparent",e.style.color="transparent",document.body.appendChild(e)}this._singleFrameModeIpt.click()}},this.styleEls=[],this._frameColorMode=void 0,this._defaultFrameColorMode="RGBA",this.currentFSColorMode="rgba",this.ifReuseArrayBufferView=!1,this.maxVideoCvsLength=3,this._reusedCvs=null,this._reusedWebGLCvs=null,this._reusedWebGLCtx=null,this._reusedDataContainer=null,this._webGLTexture=null,this._webGLProgramInfo=null,this._webGLBuffers=null,this._recordedStates={},this._toCanvas=function(){const e=document.createElement("canvas");let t;if(e.width=this.width,e.height=this.height,"grey"===this.colorMode){t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;eB(this,void 0,void 0,(function*(){yield this.selectCamera(this._selCam.value),this._bOpen||this.stop()})),this._onResolutionSelChange=()=>B(this,void 0,void 0,(function*(){let e,t;if(this._selRsl&&-1!=this._selRsl.selectedIndex){let i=this._selRsl.options[this._selRsl.selectedIndex];e=i.getAttribute("data-width"),t=i.getAttribute("data-height")}yield this.setResolution(e,t),this._bOpen||this.stop()})),this._onCloseBtnClick=()=>{this.close(!0)},this._bOpen=!1,this.isCameraEnhancer=!0,this.isDisposed=!1,this.videoSrc=null,this.videoSettings={video:{width:{ideal:1280},height:{ideal:720},facingMode:{ideal:"environment"}}},this.iPlayRound=0,this.promisePlay=null,this._ifSaveLastUsedCamera=!1,this.ifSkipCameraInspection=!1,this._allCameras=[],this._currentCamera=null,this._videoTrack=null,this._lastDeviceId=void 0,this._vc_bPlayingVideoBeforeHide=!1,this._ev_documentHideEvent=()=>{"visible"===document.visibilityState?this._vc_bPlayingVideoBeforeHide&&("Firefox"==W.browser?this.play():this._video.play(),this._vc_bPlayingVideoBeforeHide=!1):this._video&&!this._video.paused&&(this._vc_bPlayingVideoBeforeHide=!0,this._video.pause())},this._divVideoContainer=null,this._video=null,this.videoFit="contain",this._cvsScanRegion=null,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=2,this._bShowScanRegionMask=!0,this._bShowScanRegionLaser=void 0,this._defaultBShowScanRegionLaser=!1,this._scanRegion=null,this._arrScanRegionOverlays=[],this._layerBaseCvs=null,this._cvsViewDecorator=null,this._decoratorType=[],this._decoratorArea=null,this._viewDecoratorInfo={rectangle:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},focus:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},crossline:{lineWidth:2,strokeStyle:"rgb(254,142,20)"},crosshair:{lineWidth:4,strokeStyle:"rgb(254,142,20)"}},this._croppingRegions=void 0,this._defaultCroppingRegions=[null],this.bIncreaseRegionIndexAuto=!0,this._croppingRegionIndex=0,this._loopInterval=void 0,this._defaultLoopInterval=0,this._maxNumberOfFramesInBuffer=void 0,this._defaultMaxNumberOfFramesInBuffer=1,this._frameQueue=[],this._bFetchingLoopStarted=!1,this._refreshInterval=void 0,this._defaultRefreshInterval=-1,this._updateLayersTimeout=0,this._updateLayers=()=>{this._resizeTimeoutId&&clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout((()=>{if(!this.isDisposed){this._updateScanAreaDiv(),this._updateViewDecorator();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e)}}),this._updateLayersTimeout)},this.mapCameraEvents=new Map([["cameraOpen",[]],["cameraClose",[]],["cameraChange",[]],["resolutionChange",[]],["played",[]],["singleFrameAcquired",[]],["frameAddedToBuffer",[]]]),this._controler=null}static getVersion(){return this._version}static detectEnvironment(){return B(this,void 0,void 0,(function*(){return yield(async()=>({wasm:H,worker:X,getUserMedia:Y,camera:await z(),browser:W.browser,version:W.version,OS:W.OS}))()}))}static set engineResourcePath(e){if(this._hasEngineResourceLoaded)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` is called.");re._engineResourcePath=(e=>{if(null==e&&(e="./"),!j){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get engineResourcePath(){return this._engineResourcePath}static isStorageAvailable(e){let t;try{t=window[e];const i="__storage_test__";return t.setItem(i,i),t.removeItem(i),!0}catch(e){return e instanceof DOMException&&(22===e.code||1014===e.code||"QuotaExceededError"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name)&&t&&0!==t.length}}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"data"in e&&"region"in e&&"sx"in e&&"sy"in e&&"width"in e&&"height"in e&&"colorMode"in e&&"timeSpent"in e&&"timeStamp"in e&&"isCropped"in e&&"toCanvas"in e&&"_sWidth"in e&&"_sHeight"in e&&"_bUseWebGL"in e}set maxCvsSideLength(e){if(e<=0)throw new Error("Invalid value.");this._maxCvsSideLength=e}get maxCvsSideLength(){if(void 0!==this._maxCvsSideLength)return this._maxCvsSideLength;if(this._controler){const e=this._controler.getPropertyDisiredValue("maxCvsSideLength");if(e&&1===e.length)return e[0]}return this._defaultMaxCvsSideLength}static set defaultUIElementURL(e){re._defaultUIElementURL=e}static get defaultUIElementURL(){var e;return null===(e=re._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",re.engineResourcePath)}getUIElement(){return this.UIElement}setUIElement(e){return B(this,void 0,void 0,(function*(){if(this._bOpen)throw new Error("It is not allowed to change the UIElement when the camera is open.");if("string"==typeof e||e instanceof String){if(!e.trim().startsWith("<")){let t=yield fetch(e);if(!t.ok)throw Error("setUIElement(elementOrUrl): Network Error: "+t.statusText);e=yield t.text()}if(!e.trim().startsWith("<"))throw Error("setUIElement(elementOrUrl): Can't get valid HTMLElement.");let t=document.createElement("div");t.innerHTML=e;for(let e=0;e100||e.regionTop>100||e.regionRight>100||e.regionBottom>100)))}set scanRegion(e){if(!this._checkValidRegion(e))throw new Error("Invalid region.");this._scanRegion=JSON.parse(JSON.stringify(e)),this._updateScanRegionCanvas(),this._updateScanAreaDiv();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e)}setScanRegion(e){this.scanRegion=e}getScanRegion(){return JSON.parse(JSON.stringify(this._scanRegion))}_calculateCvsSize(){if(!this._bOpen)return null;let e,t,i;if(this.singleFrameMode)e=this._imgWidth,t=this._imgHeight,i="contain";else{if(!this._video)return null;e=this._video.videoWidth,t=this._video.videoHeight,i=this.getVideoFit()}return{width:e,height:t,objectFit:i}}addScanRegionOverlayCanvas(){this._assertOpen();const e=document.createElement("canvas");if(this._updateScanRegionOverlay(e),!this._scanRegionOverlayContainer){const e=document.createElement("div");if(this._scanRegionOverlayContainer=e,e.style.position="absolute",e.style.left="0",e.style.top="0",e.style.width="100%",e.style.height="100%",e.style.overflow="hidden",e.style.pointerEvents="none",this._layerBaseCvs)this._layerBaseCvs.parentElement.after(e);else if(this._cvsScanRegion)this._cvsScanRegion.before(e);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(e);else{if(!this._video)throw new Error("'video' is null.");this._video.after(e)}this._recordedStates.overlayShow=!0}return this._scanRegionOverlayContainer.append(e),this._arrScanRegionOverlays.push(e),e}removeScanRegionOverlayCanvas(e){const t=this._arrScanRegionOverlays.indexOf(e);-1!==t&&(e.remove(),this._arrScanRegionOverlays.splice(t,1))}_updateScanRegionOverlay(e){if(!e)return;const t=this._calculateCvsSize();if(!t)return;const{width:i,height:r,objectFit:n}=t;if(i<=0||r<=0)return e.width=0,void(e.height=0);const s=this._getRegionInPixels(i,r,this._scanRegion),o=this.getFrameSize(i,r,this._scanRegion,this.maxCvsSideLength),a=o.dWidth,l=o.dHeight;e.width==a&&e.height==l||(e.width=a,e.height=l);const h=window.getComputedStyle(this._video),c=parseFloat(h.width),u=parseFloat(h.height),d=c/u,f=i/r;let g,_,p,m,v=1;"contain"===n?(dd?(v=u/r,g=s.regionLeft*v-(i*v-c)/2,_=s.regionTop*v):(v=c/i,g=s.regionLeft*v,_=s.regionTop*v-(r*v-u)/2),p=(s.regionRight-s.regionLeft)*v,m=(s.regionBottom-s.regionTop)*v):(g=0,_=0,p=0,m=0),e.style.position="absolute",e.style.left=g+"px",e.style.top=_+"px",e.style.width=p+"px",e.style.height=m+"px"}showScanRegionOverlays(){this._scanRegionOverlayContainer&&("none"==this._scanRegionOverlayContainer.style.display&&(this._scanRegionOverlayContainer.style.display=""),this._recordedStates.overlayShow=!0)}hideScanRegionOverlays(){this._scanRegionOverlayContainer&&(this._scanRegionOverlayContainer.style.display="none",this._recordedStates.overlayShow=!1)}setViewDecorator(e,t){if(!e)return void(this._cvsViewDecorator&&(this._cvsViewDecorator.remove(),this._cvsViewDecorator=null));this._assertOpen();let i=[];if("string"==typeof e?i.push(e):Array.isArray(e)&&(i=JSON.parse(JSON.stringify(e))),!this._cvsViewDecorator){if(this._cvsViewDecorator=document.createElement("canvas"),this._cvsViewDecorator.style.pointerEvents="none",this._cvsScanRegion)this._cvsScanRegion.after(this._cvsViewDecorator);else if(this._scanRegionOverlayContainer)this._scanRegionOverlayContainer.after(this._cvsViewDecorator);else if(this._layerBaseCvs)this._layerBaseCvs.parentElement.after(this._cvsViewDecorator);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(this._cvsViewDecorator);else{if(!this._video)throw new Error("'video' is null.");this._video.after(this._cvsViewDecorator)}this._recordedStates.decoratorShow=!0}this._decoratorArea=JSON.parse(JSON.stringify(t)),this._decoratorType.length=0;const r=["rectangle","focus"],n=["crossline","crosshair"];let s=!1,o=!1;for(let e of i)e=e.toLowerCase(),r.includes(e)&&!s&&(s=!0,this._decoratorType.push(e)),n.includes(e)&&!o&&(o=!0,!this._decoratorType.includes(e)&&this._decoratorType.push(e));this._updateViewDecorator()}getViewDecorator(){return{type:JSON.parse(JSON.stringify(this._decoratorType)),area:JSON.parse(JSON.stringify(this._decoratorArea)),canvas:this._cvsViewDecorator}}showViewDecorator(){this._cvsViewDecorator&&("none"==this._cvsViewDecorator.style.display&&(this._cvsViewDecorator.style.display=""),this._recordedStates.decoratorShow=!0)}hideViewDecorator(){this._cvsViewDecorator&&(this._cvsViewDecorator.style.display="none",this._recordedStates.decoratorShow=!1)}setViewDecoratorLineWidth(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("lineWidth"))throw new Error(`It is not allowed to change the property 'lineWidth' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].lineWidth=t,this._updateViewDecorator()}setViewDecoratorStrokeStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("strokeStyle"))throw new Error(`It is not allowed to change the property 'strokeStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].strokeStyle=t,this._updateViewDecorator()}setViewDecoratorFillStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("fillStyle"))throw new Error(`It is not allowed to change the property 'fillStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].fillStyle=t,this._updateViewDecorator()}setViewDecoratorMaskFillStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("maskFillStyle"))throw new Error(`It is not allowed to change the property 'maskFillStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].maskFillStyle=t,this._updateViewDecorator()}_updateViewDecorator(){if(!this._bOpen)return;if(!this._cvsViewDecorator||!this._decoratorArea)return;let e;if(this.singleFrameMode)e="contain";else{if(!this._video)return;e=this.getVideoFit()}const t=this._cvsViewDecorator;t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.objectFit=e;const i=this.getVisibleRegion(!0),r=i.regionRight-i.regionLeft,n=i.regionBottom-i.regionTop;if(t.width==r&&t.height==n||(t.width=r,t.height=n),r<=0||n<=0)return;const s=t.getContext("2d");s.clearRect(0,0,t.width,t.height);const o=this._decoratorArea.x/100*r,a=this._decoratorArea.y/100*n,l=this._decoratorArea.width/100*r,h=this._decoratorArea.height/100*n;for(let e of this._decoratorType){if("rectangle"===e){s.fillStyle=this._viewDecoratorInfo.rectangle.maskFillStyle,s.fillRect(0,0,t.width,t.height),s.clearRect(Math.round(o),Math.round(a),Math.round(l),Math.round(h)),s.fillStyle=this._viewDecoratorInfo.rectangle.fillStyle,s.fillRect(Math.round(o),Math.round(a),Math.round(l),Math.round(h)),s.lineWidth=this._viewDecoratorInfo.rectangle.lineWidth,s.strokeStyle=this._viewDecoratorInfo.rectangle.strokeStyle;const e=s.lineWidth/2;s.strokeRect(Math.round(o-e),Math.round(a-e),Math.round(l+s.lineWidth),Math.round(h+s.lineWidth))}if("focus"===e){s.fillStyle=this._viewDecoratorInfo.focus.maskFillStyle,s.fillRect(0,0,t.width,t.height),s.clearRect(Math.round(o),Math.round(a),Math.round(l),Math.round(h)),s.fillStyle=this._viewDecoratorInfo.focus.fillStyle,s.fillRect(Math.round(o),Math.round(a),Math.round(l),Math.round(h)),s.lineWidth=this._viewDecoratorInfo.focus.lineWidth,s.strokeStyle=this._viewDecoratorInfo.focus.strokeStyle;const e=s.lineWidth/2,i=[0,.25,.75,1],r=[0,.25,.75,1];s.beginPath();for(let e=0;e{const e=parseFloat(window.getComputedStyle(this._video).width),t=parseFloat(window.getComputedStyle(this._video).height);let s,o={regionBottom:r,regionRight:i,regionLeft:0,regionTop:0,regionMeasuredByPercentage:!1};return"cover"===n?e/tthis.maxNumberOfFramesInBuffer;)this._frameQueue.shift()}get maxNumberOfFramesInBuffer(){if(void 0!==this._maxNumberOfFramesInBuffer)return this._maxNumberOfFramesInBuffer;if(this._controler){const e=this._controler.getPropertyDisiredValue("maxNumberOfFramesInBuffer");if(e&&1===e.length)return e[0]}return this._defaultMaxNumberOfFramesInBuffer}get numberOfFramesInBuffer(){return this._frameQueue.length}set refreshInterval(e){this._refreshInterval=e}get refreshInterval(){if(void 0!==this._refreshInterval)return this._refreshInterval;if(this._controler){const e=this._controler.getPropertyDisiredValue("refreshInterval");if(e&&1===e.length)return e[0]}return this._defaultRefreshInterval}static createInstance(e){return B(this,void 0,void 0,(function*(){let t=new re;("string"==typeof e||e instanceof String)&&(e=JSON.parse(e));for(let i in e)t[i]=e[i];return this._hasEngineResourceLoaded=!0,re.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{re.onWarning&&re.onWarning({id:1,message:"Not using HTTP protocol, the SDK may not work correctly."})}),0):location&&"https:"!==location.protocol&&setTimeout((()=>{re.onWarning&&re.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)),t._drawingLayersManager=new te,t}))}play(e,t,i,r){return B(this,void 0,void 0,(function*(){if(this._video&&this.videoSrc){yield new Promise(((e,t)=>{this._video.onloadedmetadata=()=>B(this,void 0,void 0,(function*(){this._video&&(this._video.onloadedmetadata=null,yield this._video.play(),e())})),"string"==typeof this.videoSrc||this.videoSrc instanceof String?this._video.src=this.videoSrc:this._video.srcObject=this.videoSrc,setTimeout((()=>t(new Error("Failed to play video. Timeout."))),4e3)}));const e={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};this.playCallbackInfo=JSON.parse(JSON.stringify(e));const t=this.mapCameraEvents.get("played");for(let i of t){if(!i)continue;const t=JSON.parse(JSON.stringify(e));setTimeout((()=>i.apply(this,[t])),0)}return this._recordedStates.videoPlaying=!0,e}if(this.singleFrameMode)return r&&r.notTriggerSingleFrameClick||this._clickIptSingleFrameMode(),this.playCallbackInfo={width:0,height:0,deviceId:null},JSON.parse(JSON.stringify(this.playCallbackInfo));if(!this._video)return this.playCallbackInfo=null,null;const n=++this.iPlayRound;let s=null,o=0,a=0;if(this._currentCamera&&(s=this._currentCamera.deviceId),this._video&&(o=this._video.videoWidth,a=this._video.videoHeight),this.promisePlay&&(yield this.promisePlay,nB(this,void 0,void 0,(function*(){var r;try{this._video&&this._video.srcObject&&this.stop(),re._onLog&&re._onLog("DCE: ======before video========");const n=()=>{if(!this._video)throw d&&d.getTracks().forEach((e=>{e.stop()})),this._videoTrack=null,this._currentCamera=null,new Error("'video' is null.")},l=this.getVideoSettings();let h;"boolean"==typeof l.video&&(l.video={});const c=["rear","back","rück","arrière","trasera","trás","traseira","posteriore","后面","後面","背面","后置","後置","背置","задней","الخلفية","후","arka","achterzijde","หลัง","baksidan","bagside","sau","bak","tylny","takakamera","belakang","אחורית","πίσω","spate","hátsó","zadní","darrere","zadná","задня","stražnja","belakang","बैक"],u=()=>{for(let e of this._allCameras){let t=e.label.toLowerCase();if(t&&c.some((e=>-1!=t.indexOf(e)))&&/\b0(\b)?/.test(t)){delete l.video.facingMode,l.video.deviceId={ideal:e.deviceId};break}}l.video.deviceId||-1==["Android","HarmonyOS"].indexOf(W.OS)||(delete l.video.facingMode,l.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})};if(e)delete l.video.facingMode,l.video.deviceId={exact:e};else if(l.video.deviceId);else if(this._lastDeviceId)delete l.video.facingMode,l.video.deviceId={exact:this._lastDeviceId};else if(this.ifSaveLastUsedCamera&&re.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete l.video.facingMode,l.video.deviceId={exact:window.localStorage.getItem("dce_last_camera_id")};const w=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),T=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));w&&T&&(l.video.width=w,l.video.height=T)}else if(this.ifSkipCameraInspection);else if(l.video.facingMode){if("iPhone"!==W.OS&&"Mac"!==W.OS&&(yield this.getAllCameras(!0)),!this._video)return null;let x=l.video.facingMode;x instanceof Array&&x.length&&(x=x[0]),x=x.exact||x.ideal||x,"environment"===x&&(h=!!l.video.facingMode,u())}let d;t&&(l.video.width={ideal:t}),i&&(l.video.height={ideal:i}),re._onLog&&re._onLog("DCE: ======try getUserMedia========");let f,g=[0,500],_=null,p=null;function m(e){return B(this,void 0,void 0,(function*(){for(let t of g){n(),t&&(yield new Promise((e=>setTimeout(e,t)))),n();{const t=e.video.deviceId;p=t?t.exact||t.ideal||t:null}try{re._onLog&&re._onLog("DCE: ask "+JSON.stringify(e)),d=yield navigator.mediaDevices.getUserMedia(e),n();break}catch(e){_=e,re._onLog&&re._onLog("DCE: "+e.message||e)}}}))}if(yield m(l),d||(re._onLog&&re._onLog("DCE: ======try getUserMedia again========"),f=JSON.parse(JSON.stringify(l)),"object"==typeof f.video&&("iPhone"==W.OS?(t>=1280||i>=1280?f.video.width=1280:t>=640||i>=640?f.video.width=640:(t<640||i<640)&&(f.video.width=320),delete f.video.height):h&&!l.video.deviceId?(delete f.video.facingMode,this._allCameras.length&&(f.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})):f.video=!0),re._onLog&&re._onLog("DCE: "+f),yield m(f)),d||(g=[1e3,2e3],yield m(l)),d||(yield m(f)),!d)throw _;const v=()=>{const e=d.getVideoTracks();let t,i;if(e.length&&(t=this._videoTrack=e[0]),this._video&&t){const e=t.getSettings();if(e)for(let r of this._allCameras)if(e.deviceId===r.deviceId){r._checked=!0,r.label=t.label,i=r;break}if(!i&&p)for(let e of this._allCameras)if(p==e.deviceId){t.label&&(e._checked=!0,e.label=t.label),i=e;break}}this._currentCamera=i};if(yield this.getAllCameras(!0),n(),h){v(),u();let A=l.video.deviceId;A&&(A=A.exact||A.ideal||A);let O=null===(r=this._currentCamera)||void 0===r?void 0:r.deviceId;!A||O&&A==O||(d.getTracks().forEach((e=>{e.stop()})),g=[0,500,1e3,2e3],yield m(l))}n();const y=()=>B(this,void 0,void 0,(function*(){re._onLog&&re._onLog("======play video========"),yield new Promise(((e,t)=>{n(),this._video.onloadedmetadata=()=>B(this,void 0,void 0,(function*(){n(),this._video.onloadedmetadata=null,yield this._video.play(),e()})),this._video.srcObject=d,setTimeout((()=>t(new Error("Failed to play video. Timeout."))),4e3)}))}));yield y(),n(),re._onLog&&re._onLog("DCE: ======played video========"),this._bgLoading&&(this._bgLoading.style.animationPlayState="paused");const S=this._video.videoWidth+"x"+this._video.videoHeight;this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",this._video.videoWidth),this._optGotRsl.setAttribute("data-height",this._video.videoHeight),this._optGotRsl.innerText=S,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got")),re._onLog&&re._onLog("DCE: got "+S),v(),n(),this._renderSelCameraInfo();const b={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};b.deviceId&&(this._lastDeviceId=b.deviceId,this.ifSaveLastUsedCamera&&re.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",this._lastDeviceId),l.video.width&&l.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(l.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(l.video.height)))));const C=this.mapCameraEvents.get("played");for(let I of C){if(!I)continue;const E=JSON.parse(JSON.stringify(b));setTimeout((()=>I.apply(this,[E])),0)}if(s&&s!=b.deviceId){const R=this.mapCameraEvents.get("cameraChange");for(let D of R){if(!D)continue;const M=JSON.parse(JSON.stringify(b));setTimeout((()=>D.apply(this,[M])),0)}}if(o&&a&&(o!=b.width||a!=b.height)){this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let P of this._arrScanRegionOverlays)P&&this._updateScanRegionOverlay(P);this._cvsOriginalImage||this._updateDrawingLayersSize();const L=this.mapCameraEvents.get("resolutionChange");for(let F of L){if(!F)continue;const k=JSON.parse(JSON.stringify(b));setTimeout((()=>F.apply(this,[k])),0)}}return this.promisePlay=null,b}catch(j){throw this.promisePlay=null,this._bgLoading&&(this._bgLoading.style.display="none"),"NotFoundError"===j.name&&(DOMException?j=new DOMException("No camera available, please use a device with an accessible camera.",j.name):(j=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),j}})))();const l=yield this.promisePlay;return this.playCallbackInfo=JSON.parse(JSON.stringify(l)),this._recordedStates.videoPlaying=!0,l}))}resume(){return B(this,void 0,void 0,(function*(){this._assertOpen(),yield this.play(),this.ifShowScanRegionLaser&&this.showScanRegionLaser()}))}pause(){this._assertOpen(),this._video&&(this._video.pause(),this._recordedStates.videoPlaying=!1),this.ifShowScanRegionLaser&&this.hideScanRegionLaser()}_bindUI(){if(!this.UIElement)throw new Error("Need to define `UIElement` before opening.");const e=[this.UIElement];for(let t=0;t','','',''].join(""),this._optGotRsl=this._optGotRsl||this._selRsl.options[0])):!this._optGotRsl&&t.classList.contains("dce-opt-gotResolution")?this._optGotRsl=t:!this._btnClose&&t.classList.contains("dce-btn-close")?this._btnClose=t:!this._selMinLtr&&t.classList.contains("dlr-sel-minletter")?(this._selMinLtr=t,this._selMinLtr.options.length||(this._selMinLtr.innerHTML=[this._optGotMinLtr?"":'','','','','','','','','','',''].join(""),this._optGotMinLtr=this._optGotMinLtr||this._selMinLtr.options[0])):!this._optGotMinLtr&&t.classList.contains("dlr-opt-gotMinLtr")&&(this._optGotMinLtr=t);if(this.extraBindings&&this.extraBindings.length)for(let i of this.extraBindings)try{i(t)}catch(e){}}if(!this._video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'");this.singleFrameMode?(this._video&&(this._video.addEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="pointer",this._video.setAttribute("title","Take a photo")),this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none"),this._bgCamera&&(this._bgCamera.style.display="block")):(this._selCam&&(this._selCam.style.display="block",this._selCam.addEventListener("change",this._onCameraSelChange)),this._selRsl&&(this._selRsl.style.display="block",this._selRsl.addEventListener("change",this._onResolutionSelChange)),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._bgLoading&&(this._bgLoading.style.display="block")),this._btnClose&&this._btnClose.addEventListener("click",this._onCloseBtnClick),document.addEventListener("visibilitychange",this._ev_documentHideEvent),ResizeObserver?(this._resizeObserver||(this._resizeObserver=new ResizeObserver((e=>{for(let t of e)t.target===this._divVideoContainer&&this._updateLayers()}))),this._divVideoContainer&&this._resizeObserver.observe(this._divVideoContainer)):window.addEventListener("resize",this._updateLayers)}_unbindUI(){this.singleFrameMode?(this._video&&(this._video.removeEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="",this._video.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._bgLoading&&(this._bgLoading.style.display="none"),this._selCam&&this._selCam.removeEventListener("change",this._onCameraSelChange),this._selRsl&&this._selRsl.removeEventListener("change",this._onResolutionSelChange),this._btnClose&&this._btnClose.removeEventListener("click",this._onCloseBtnClick),this.hideScanRegionLaser(),this.hideViewDecorator(),this.hideScanRegionOverlays(),this._drawingLayersManager.setVisible(!1),this._hideOriginalImageCvs(),this._video&&(this._video.onloadedmetadata=null,this._video.remove()),this._divVideoContainer=null,this._video=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._cvsScanRegion&&(this._cvsScanRegion.remove(),this._cvsScanRegion=null),this._singleFrameModeIpt&&(this._singleFrameModeIpt.remove(),this._singleFrameModeIpt=null),this._cvsSingleFrameMode&&(this._cvsSingleFrameMode.remove(),this._cvsSingleFrameMode=null),document.removeEventListener("visibilitychange",this._ev_documentHideEvent),ResizeObserver?this._resizeObserver&&this._resizeObserver.disconnect():window.removeEventListener("resize",this._updateLayers)}_assertOpen(){if(!this._bOpen)throw Error("The camera is not open.")}open(e){return B(this,void 0,void 0,(function*(){this.UIElement||(yield this.setUIElement(re.defaultUIElementURL)),this._bindUI(),e&&this.appendAndShowUI();let t=yield this.play();this.bOpen=!0;const i=this.mapCameraEvents.get("cameraOpen");for(let e of i){if(!e)continue;const i=JSON.parse(JSON.stringify(t));setTimeout((()=>e.apply(this,[i])),0)}return t}))}close(e){if(!this._video)return;this.stop(),this._hideOriginalImage(!1),this._unbindUI(),e&&this.hideUI(),this.stopFetchingLoop(),this.bOpen=!1;const t=this.mapCameraEvents.get("cameraClose");for(let e of t){if(!e)continue;const t={width:0,height:0,deviceId:null};setTimeout((()=>e.apply(this,[t])),0)}}stop(){this._video&&this._video.srcObject&&(re._onLog&&re._onLog("DCE: ======stop video========"),this._video.srcObject.getTracks().forEach((e=>{e.stop()})),this._video.srcObject=null,this._videoTrack=null,this._currentCamera=null),this._video&&this.videoSrc&&(re._onLog&&re._onLog("DCE: ======stop existing video========"),this._video.pause(),this._video.currentTime=0),this._bgLoading&&(this._bgLoading.style.animationPlayState=""),this._frameQueue.length=0,this._reusedCvs&&this._reusedCvs.ctx2d&&this._reusedCvs.ctx2d.clearRect(0,0,this._reusedCvs.width,this._reusedCvs.height),this.forceLoseContext()}getAllCameras(e){return B(this,void 0,void 0,(function*(){let t=yield navigator.mediaDevices.enumerateDevices();if(!e&&t&&t.length&&!t[0].deviceId){let e=yield navigator.mediaDevices.getUserMedia({video:!0});t=yield navigator.mediaDevices.enumerateDevices(),e.getTracks().forEach((e=>{e.stop()})),e=null}const i=[],r=[];if(this._allCameras)for(let e of this._allCameras)e._checked&&r.push(e);for(let e=0;e{const i=this._mapCameraResolutions.get(e);if(!i||!i.length)return!1;for(let e of i)if(e[0]===t.width&&e[1]===t.height)return!0;return!1},r=(e,t,i)=>B(this,void 0,void 0,(function*(){const r={video:{deviceId:{exact:e},width:{ideal:t},height:{ideal:i}}};let n=null;try{n=yield navigator.mediaDevices.getUserMedia(r)}catch(e){return null}if(!n)return null;const s=n.getVideoTracks();let o=null;try{const e=s[0].getSettings();o={width:e.width,height:e.height}}catch(e){const t=document.createElement("video");t.srcObject=n,o={width:t.videoWidth,height:t.videoHeight},t.srcObject=null}return s.forEach((e=>{e.stop()})),o}));if(!this._bOpen){const n=this.videoSettings.video.deviceId;if(!n)return null;if(t=n.hasOwnProperty("exact")?this.videoSettings.video.deviceId.exact:n.hasOwnProperty("ideal")?this.videoSettings.video.deviceId.ideal:this.videoSettings.video.deviceId,!t)return null;let s=this._mapCameraResolutions.get(t);if(s&&!e)return this._mapCameraResolutions.get(t);this._mapCameraResolutions.set(t,[]),s=this._mapCameraResolutions.get(t);for(let e of this._predefinedResolutions){const n=yield r(t,e.width,e.height);n&&!i(t,n)&&s.push([n.width,n.height])}return s}if(this._currentCamera){t=this._currentCamera.deviceId;let r=this._mapCameraResolutions.get(t);if(r&&!e)return this._mapCameraResolutions.get(t);this._mapCameraResolutions.set(t,[]),r=this._mapCameraResolutions.get(t);const n=this.getConstraints();for(let e of this._predefinedResolutions){yield this._videoTrack.applyConstraints({width:{ideal:e.width},height:{ideal:e.height}});const n=this._videoTrack.getSettings(),s={width:n.width,height:n.height};i(t,s)||r.push([s.width,s.height])}return yield this._videoTrack.applyConstraints(n),r}return null}))}on(e,t){if(!this.mapCameraEvents.has(e))throw new Error(`Event '${e}' is not exists.`);const i=this.mapCameraEvents.get(e);i.includes(t)||i.push(t)}off(e,t){if(!this.mapCameraEvents.has(e))throw new Error(`Event '${e}' is not exists.`);const i=this.mapCameraEvents.get(e),r=i.indexOf(t);-1!==r&&i.splice(r,1)}offAll(e){if(e){if("string"==typeof e){const t=this.mapCameraEvents.get(e);t&&(t.length=0)}}else for(let e of this.mapCameraEvents.values())e&&(e.length=0)}getVideoSettings(){return JSON.parse(JSON.stringify(this.videoSettings))}updateVideoSettings(e){return this.videoSettings=JSON.parse(JSON.stringify(e)),this._lastDeviceId=null,this._bOpen?this.play():Promise.resolve()}isOpen(){return this._bOpen}getCapabilities(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCapabilities()' is unavailable in singleFrameMode.");return this._videoTrack&&this._videoTrack.getCapabilities?this._videoTrack.getCapabilities():{}}getCameraSettings(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCameraSettings()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getSettings():null}getConstraints(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getConstraints()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getConstraints():null}applyConstraints(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'applyConstraints()' is unavailable in singleFrameMode.");if(!this._videoTrack)throw new Error('"_videoTrack" is null.');if(!this._videoTrack.applyConstraints)throw Error("Not supported.");return yield this._videoTrack.applyConstraints(e)}))}turnOnTorch(){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOnTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!0}]});throw Error("Not supported.")}))}turnOffTorch(){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOffTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!1}]});throw Error("Not supported.")}))}setColorTemperature(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setColorTemperature()' is unavailable in singleFrameMode.");let t=this.getCapabilities().colorTemperature;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{colorTemperature:e}]})}))}setExposureCompensation(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setExposureCompensation()' is unavailable in singleFrameMode.");let t=this.getCapabilities().exposureCompensation;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{exposureCompensation:e}]})}))}setZoom(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setZoom()' is unavailable in singleFrameMode.");let t=this.getCapabilities().zoom;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{zoom:e}]})}))}setFrameRate(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFrameRate()' is unavailable in singleFrameMode.");let t=this.getCapabilities().frameRate;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({width:{ideal:Math.max(this._video.videoWidth,this._video.videoHeight)},frameRate:e})}))}getFrameRate(){return this.getCameraSettings().frameRate}setFocus(e,t){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFocus()' is unavailable in singleFrameMode.");const i=this.getCapabilities().focusMode,r=this.getCapabilities().focusDistance;if(!i||!i.includes(e)||!r)throw Error("Not supported.");return t?(tr.max&&(t=r.max),yield this._videoTrack.applyConstraints({advanced:[{focusMode:e,focusDistance:t}]})):yield this._videoTrack.applyConstraints({advanced:[{focusMode:e}]})}))}getFocus(){const e=this.getCameraSettings().focusMode;return"continuous"===e?{mode:e}:{mode:e,distance:this.getCameraSettings().focusDistance}}getFrameSize(e,t,i,r){if(!e||!t)return null;let n,s,o,a,l=e,h=t;const c={regionLeft:0,regionTop:0,regionRight:l,regionBottom:h,regionMeasuredByPercentage:!1};i?(i.regionMeasuredByPercentage?(c.regionLeft=i.regionLeft*l/100,c.regionTop=i.regionTop*h/100,c.regionRight=i.regionRight*l/100,c.regionBottom=i.regionBottom*h/100):(c.regionLeft=i.regionLeft,c.regionTop=i.regionTop,c.regionRight=i.regionRight,c.regionBottom=i.regionBottom),n=c.regionLeft,s=c.regionTop,l=Math.round(c.regionRight-c.regionLeft),h=Math.round(c.regionBottom-c.regionTop)):(n=0,s=0);const u=Math.max(l,h);if(r&&r>0&&u>r){const e=r/u;l>h?(o=r,a=Math.round(h*e)):(o=Math.round(l*e),a=r)}else o=l,a=h;return o<=0||a<=0?null:{sx:n,sy:s,sWidth:l,sHeight:h,dWidth:o,dHeight:a}}getFrame(){if(this.singleFrameMode)throw Error("'getFrame()' is unavailable in singleFrameMode.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'getFrame()' is unavailable in singleFrameMode.");return this._getVideoFrame(this._scanRegion)}getImage(){const e=this.getFrame();return e.pixelFormat=e.colorMode,Object.assign(Object.assign({},e),{pixelFormat:e.colorMode})}_getVideoFrame(e,t){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'_getVideoFrame()' is unavailable in singleFrameMode.");const i=Date.now();re._onLog&&re._onLog("DCE: _getVideoFrame(region?) START: "+i);const r=this._video.videoWidth,n=this._video.videoHeight;if(0===r||0===n)return null;const s=this.getFrameSize(r,n,e,this.maxCvsSideLength);if(!s)return null;let o,a;o=r!==s.sWidth||n!==s.sHeight,a=s.sWidth!==s.dWidth||s.sHeight!==s.dHeight;const l=(()=>!(!this._bWebGLSupported||a))(),h={data:null,region:e?JSON.parse(JSON.stringify(e)):null,sx:s.sx,sy:s.sy,width:s.dWidth,height:s.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:o,toCanvas:this._toCanvas,_sWidth:s.sWidth,_sHeight:s.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(this._video,r,n,s,t,{targetColorMode:this.frameColorMode,bUseWebGL:l})}catch(e){if("WebGLError"!==e.name)throw e;c=this._getImageData(this._video,r,n,s,t,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return re._onLog&&re._onLog("DCE: _getVideoFrame(region?) END: "+u),h.data=c.data,h.colorMode=c.colorMode,h._bUseWebGL=c._bUseWebGL,h.timeSpent=u-i,h.timeStamp=u,h}_getImageData(e,t,i,r,n,s){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(!t||!i)return null;re._onLog&&re._onLog("DCE: _getImageData() START: "+Date.now());const{sx:o,sy:a,sWidth:l,sHeight:h,dWidth:c,dHeight:u}=r;let d;if(d=s&&s.targetColorMode?s.targetColorMode.toLowerCase():"rgba",s&&s.bUseWebGL){this._reusedWebGLCvs||(this._reusedWebGLCvs=document.createElement("canvas"));const r=this._reusedWebGLCvs;r.width==t&&r.height==i||(r.width=t,r.height=i,this._reusedWebGLCtx&&this._reusedWebGLCtx.viewport(0,0,t,i));const s=this._reusedWebGLCtx||r.getContext("webgl",{antialias:!1})||r.getContext("experimental-webgl",{antialias:!1});if(!s){this._reusedWebGLCtx=null,this._bWebGLSupported=!1;const e=new Error("WebGL error: unable to initialize WebGL. Your browser or machine may not support it.");throw e.name="WebGLError",e}if(s.enable(s.SCISSOR_TEST),s.scissor(o,a,c,u),!this._reusedWebGLCtx||d!==this.currentFSColorMode){this._reusedWebGLCtx=s;const e=e=>{const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,1,1,-1,1]),e.STATIC_DRAW);const i=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,indices:i}},t=e=>{const t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t},i=(e,t,i)=>{const n=r(e,e.VERTEX_SHADER,t),s=r(e,e.FRAGMENT_SHADER,i),o=e.createProgram();return e.attachShader(o,n),e.attachShader(o,s),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?o:(alert("Unable to initialize the shader program: "+e.getProgramInfoLog(o)),null)},r=(e,t,i)=>{const r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(alert("An error occurred compiling the shaders: "+e.getShaderInfoLog(r)),e.deleteShader(r),null)},n="\n attribute mediump vec2 aVertexPosition;\n varying mediump vec2 vDirection;\n \n void main( void )\n {\n gl_Position = vec4(aVertexPosition, 1.0, 1.0) * 2.0;\n vDirection = aVertexPosition;\n }\n ";let o;o=["rgba","rbga","grba","gbra","brga","bgra"].includes(d)?d.slice(0,3):"rgb";const a=i(s,n,`\n precision mediump float;\n\n varying mediump vec2 vDirection;\n uniform sampler2D uSampler;\n uniform lowp float uColorFactor;\n \n void main(void)\n {\n vec4 sample = texture2D(uSampler, vec2(vDirection.x * 0.5 + 0.5, vDirection.y * 0.5 + 0.5));\n lowp float grey = 0.21 * sample.r + 0.71 * sample.g + 0.07 * sample.b;\n gl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n }\n `);this._webGLProgramInfo={program:a,attribLocations:{vertexPosition:s.getAttribLocation(a,"aVertexPosition")},uniformLocations:{uSampler:s.getUniformLocation(a,"uSampler"),uColorFactor:s.getUniformLocation(a,"uColorFactor")}},this._webGLBuffers=e(s),this._webGLTexture=t(s),this.currentFSColorMode=d}const l=(e,t,i)=>{const r=e.RGBA,n=e.RGBA,s=e.UNSIGNED_BYTE;e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,r,n,s,i)},h=(e,t,i,r)=>{e.clearColor(0,0,0,1),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i.indices),e.useProgram(t.program);{const r=2,n=e.FLOAT,s=!1,o=0,a=0;e.bindBuffer(e.ARRAY_BUFFER,i.position),e.vertexAttribPointer(t.attribLocations.vertexPosition,r,n,s,o,a),e.enableVertexAttribArray(t.attribLocations.vertexPosition)}e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,r),e.uniform1i(t.uniformLocations.uSampler,0),e.uniform1f(t.uniformLocations.uColorFactor,"grey"===d||"grey32"===d?1:0);const n=e.UNSIGNED_SHORT;e.drawElements(e.TRIANGLES,6,n,0)};let f;if(l(s,this._webGLTexture,e),h(s,this._webGLProgramInfo,this._webGLBuffers,this._webGLTexture),n){if(n.length=this.croppingRegions.length||this._croppingRegionIndex<0)throw new Error("The 'croppingRegionIndex' is out of bounds.");e=this.croppingRegions[this._croppingRegionIndex],this.bIncreaseRegionIndexAuto&&++this._croppingRegionIndex>=this.croppingRegions.length&&(this._croppingRegionIndex=0)}return e}_fetchingLoop(e){if(this.isDisposed)return;if(!this._bOpen||!this.isFetchingLoopStarted())return void this.stopFetchingLoop();const t=()=>{re._onLog&&re._onLog("DCE: start fetching a frame: "+Date.now());const e=this.getCurrentRegion();let t=this._getVideoFrame(e);if(!t)return void(re._onLog&&re._onLog("DCE: get a invalid frame, abandon it: "+Date.now()));for(;this._frameQueue&&this._frameQueue.length>=this.maxNumberOfFramesInBuffer;)this._frameQueue.shift();this._frameQueue.push(t),re._onLog&&re._onLog("DCE: finish fetching a frame: "+Date.now());const i=this.mapCameraEvents.get("frameAddedToBuffer");for(let e of i)e&&setTimeout(e.bind(this),0)},i=()=>{this.isDisposed||(this._frameLoopTimeoutId2&&clearTimeout(this._frameLoopTimeoutId2),this.refreshInterval<=0||(this._frameLoopTimeoutId2=setTimeout((()=>{this.isDisposed||(this._bOpen&&this.isFetchingLoopStarted()?(re._onLog&&re._onLog("DCE: second timeout executes: "+Date.now()),t(),i()):this.stopFetchingLoop())}),this.refreshInterval)))};e&&(this._frameQueue.length0&&i()):this.refreshInterval>0?(t(),i()):0===this.refreshInterval?t():this.refreshInterval),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameLoopTimeoutId=setTimeout((()=>{this.isDisposed||this._fetchingLoop(!0)}),this.loopInterval)}startFetchingLoop(){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw Error("'startFetchingLoop()' is unavailable in singleFrameMode.");this.isFetchingLoopStarted()||(this._bFetchingLoopStarted=!0,this._recordedStates.fetchingLoopStart=!0,re._onLog&&re._onLog("start fetching loop: "+Date.now()),this._fetchingLoop(!0))}isFetchingLoopStarted(){return this._bFetchingLoopStarted}stopFetchingLoop(){this._bFetchingLoopStarted&&(re._onLog&&re._onLog("stop fetching loop: "+Date.now()),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameQueue.length=0,this._bFetchingLoopStarted=!1,this._recordedStates.fetchingLoopStart=!1)}getFrameFromBuffer(e){return this._frameQueue&&this._frameQueue.length?e?e0?i-1:r,Z),actionName:"modifyPolygon",pointIndex:i}),e}),{})}_extendSet(e,t){if("vertices"===e){const e=this._fabricObject;e.points=t;const i=e.points.length-1;return e.controls=e.points.reduce((function(e,t,r){return e["p"+r]=new k.Control({positionHandler:q,actionHandler:$(r>0?r-1:i,Z),actionName:"modifyPolygon",pointIndex:r}),e}),{}),e._setPositionDimensions({}),!0}}_extendGet(e){if("vertices"===e){const e=[],t=this._fabricObject;if(t.selectable)for(let i in t.oCoords)e.push({x:t.oCoords[i].x,y:t.oCoords[i].y});else for(let i in t.getCoords())e.push({x:t.getCoords()[i].x,y:t.getCoords()[i].y});return e}}},DT_Rect:class extends J{constructor(e,t,i,r,n){super(new k.Rect({left:e,top:t,width:i,height:r}),n)}},DT_Image:class extends J{constructor(e,t,i,r){super(new k.Image(e,{left:t,top:i}),r),this.image=e}_extendSet(e,t){if("image"===e){if(t instanceof HTMLImageElement)return this._fabricObject.setElement(t),this.image=t,!0;if(t instanceof HTMLCanvasElement){const e=new Image;return e.src=t.toDataURL(),this._fabricObject.setElement(e),this.image=t,!0}throw new Error("Unsupported value.")}}_extendGet(e){if("image"===e)return this.image}},DT_Text:class extends J{constructor(e,t,i,r){super(new k.IText(e,{left:t,top:i}),r),this._mediaType="text"}},DT_Line:class extends J{constructor(e,t,i){super(new k.Line([e.x,e.y,t.x,t.y]),i)}_extendSet(e,t){return"startPoint"===e?(this._fabricObject.set("x1",t.x),this._fabricObject.set("y1",t.y),!0):"endPoint"===e?(this._fabricObject.set("x2",t.x),this._fabricObject.set("y2",t.y),!0):void 0}_extendGet(e){return"startPoint"===e?{x:this._fabricObject.get("x1"),y:this._fabricObject.get("y1")}:"endPoint"===e?{x:this._fabricObject.get("x2"),y:this._fabricObject.get("y2")}:void 0}},DT_Group:class extends J{constructor(e){super(new k.Group(e.map((e=>e._getFabricObject()))));const t=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const e=this.mapEvents.get("select");for(let t of e)t&&t.apply(this);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e.onSelect&&e.onSelect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const e=t.get("deselect");for(let t of e)t&&t.apply(this);const i=this._fabricObject._objects;for(let e of i)setTimeout((()=>{e.onDeselect&&e.onDeselect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)}}getChildItems(){return this._fabricObject._objects.map((e=>e.getDrawingItem()))}addChildItem(e){if(!e||!e.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,e,"add"):this._fabricObject.addWithUpdate(e._getFabricObject())}removeChildItem(e){e&&e.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,e,"remove"):this._fabricObject.removeWithUpdate(e._getFabricObject()))}}};class se extends D{constructor(){super(),this.bFilterRegionInJs=!0,this._onCameraSelChange=()=>{},this._onResolutionSelChange=()=>{},this._onCloseBtnClick=()=>{},this._onPlayed=null}static get version(){return this._version+`(DCE ${re.getVersion()})`}static _fireHTTPSWarnning(){se.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{se.onWarning&&se.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}_fireResolutionWarning(){if(!this.singleFrameMode&&this.onWarning){const e=this.dce.getConstraints();e&&e.width<1280&&e.height<720&&setTimeout((()=>{this.onWarning&&this.onWarning({id:3,message:"Camera resolution too low, please use a higher resolution (720P or better)."})}),0)}}getUIElement(){return this.dce.getUIElement()}async setUIElement(e){await this.dce.setUIElement(e)}get singleFrameMode(){return this.dce.singleFrameMode}set singleFrameMode(e){this.dce.singleFrameMode=e,e&&(this.dce.ifShowScanRegionLaser=!1,(async()=>{let e=await this.getScanSettings();e.oneDTrustFrameCount=1,await this.updateScanSettings(e)})())}get onUnduplicatedRead(){return this.onUniqueRead}set onUnduplicatedRead(e){this.onUniqueRead=e}get video(){return this.dce&&this.dce.video}set videoSrc(e){this.dce&&(this.dce.videoSrc=e)}get videoSrc(){return this.dce&&this.dce.videoSrc}_assertOpen(){if(!this.dce.isOpen())throw Error("The scanner is not open.")}set regionMaskFillStyle(e){this.dce.setScanRegionMaskStyle({fillStyle:e})}get regionMaskFillStyle(){return this.dce.regionMaskFillStyle}set regionMaskStrokeStyle(e){this.dce.setScanRegionMaskStyle({strokeStyle:e})}get regionMaskStrokeStyle(){return this.dce.regionMaskStrokeStyle}set regionMaskLineWidth(e){this.dce.setScanRegionMaskStyle({lineWidth:e})}get regionMaskLineWidth(){return this.dce.regionMaskLineWidth}set region(e){this._region=e,this.dce&&(e?e instanceof Array||this.dce.setScanRegion(e):this.dce.setScanRegion(null)),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e,this.dce.frameColorMode=e?"rgba":"grey"}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}async createDCEInstance(){if(!this.dce){D._onLog&&D._onLog("createDCEInstance()");try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}re.defaultUIElementURL=null,this.dce=await re.createInstance(),this.dce.refreshInterval=200,this.dce.frameColorMode="grey",this.dce.maxCvsSideLength=this.maxCvsSideLength,this._drawingItemNamespace=ne,"iPhone"!==D.browserInfo.OS&&"Android"!==D.browserInfo.OS&&"HarmonyOS"!==D.browserInfo.OS&&this.dce.setResolution(1920,1080),this.dce.on("cameraChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("resolutionChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("cameraClose",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1})),this.dce.on("singleFrameAcquired",(async e=>{if(!e)return;if(!e.data)return;let t;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,colorMode:e.colorMode,data:new Uint8Array(e.data),toCanvas:e.toCanvas});const{data:i,sx:r,sy:n,width:s,height:o,colorMode:a,timeStamp:l,_sWidth:h,_sHeight:c}=e,u={timeStamp:l};if("grey"===a)t=await this._decodeBuffer_Uint8Array(i,s,o,s,_.IPF_GrayScaled,u);else if("rgba"===a)t=await this._decodeBuffer_Uint8Array(i,s,o,4*s,_.IPF_ABGR_8888,u);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported.`);t=await this._decodeBuffer_Uint8Array(i,s,o,4*s,_.IPF_ARGB_8888,u)}if(await this.clearMapDecodeRecord(),D.recalculateResultLocation(t,r,n,h,c,s,o),this._drawResults(t),this.onFrameRead&&this.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onFrameRead(e)}if(this.onUniqueRead&&this.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e))}))}}set maxCvsSideLength(e){this._maxCvsSideLength=e,this.dce.maxCvsSideLength=e}get maxCvsSideLength(){return this._maxCvsSideLength}static async createInstance(e){let t=new se;t._instanceID=await se.createInstanceInWorker(!0),await t.createDCEInstance(),"string"==typeof e&&(e=JSON.parse(e));for(let i in e)t[i]=e[i];return await t.dce.setUIElement(se.defaultUIElementURL),t.singleFrameMode&&console.warn("The `navigator.mediaDevices.getUserMedia` is unavailable. automatically change to `singleFrameMode`."),se._fireHTTPSWarnning(),t.singleFrameMode||await t.updateRuntimeSettings("single"),t}async decodeCurrentFrame(e){this._assertOpen();let t=null;e&&e.region&&(t=e.region);const i=this.dce._getVideoFrame(t);return this._decode_DCEFrame(i)}static isRegionNormalPreset(e){return 0==e.regionLeft&&0==e.regionTop&&0==e.regionRight&&0==e.regionBottom&&0==e.regionMeasuredByPercentage}async updateRuntimeSettings(e){let t;if("string"==typeof e)if("speed"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region)}else if("balance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region),t.deblurLevel=3,t.expectedBarcodesCount=512,t.localizationModes=[2,16,0,0,0,0,0,0],t.timeout=1e5}else if("coverage"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region),t.deblurLevel=5,t.expectedBarcodesCount=512,t.scaleDownThreshold=1e5,t.localizationModes=[2,16,4,8,0,0,0,0],t.timeout=1e5}else if("single"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,se.isRegionNormalPreset(e.region)?t.region=null:t.region=e.region,t.expectedBarcodesCount=1,t.localizationModes=[16,2,0,0,0,0,0,0],t.barcodeZoneMinDistanceToImageBorders=0}else if("dense"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region),t.deblurLevel=7,t.scaleDownThreshold=1e5,t.localizationModes=[2,8,0,0,0,0,0,0],t.minResultConfidence=0,t.timeout=1e5}else if("distance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region),t.scaleDownThreshold=1e5,t.localizationModes=[2,8,0,0,0,0,0,0],t.timeout=1e5}else t=JSON.parse(e);else{if("object"!=typeof e)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(t=JSON.parse(JSON.stringify(e)),t.region instanceof Array){let i=e.region;[i.regionLeft,i.regionTop,i.regionLeft,i.regionBottom,i.regionMeasuredByPercentage].some((e=>void 0!==e))&&(t.region={regionLeft:i.regionLeft||0,regionTop:i.regionTop||0,regionRight:i.regionRight||0,regionBottom:i.regionBottom||0,regionMeasuredByPercentage:i.regionMeasuredByPercentage||0})}}if(!D._bUseFullFeature){if(0!=(t.barcodeFormatIds&~(v.BF_ONED|v.BF_QR_CODE|v.BF_PDF417|v.BF_DATAMATRIX))||0!=t.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=t.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}{let e=t.region;if(this.bFilterRegionInJs?this.userDefinedRegion=JSON.parse(JSON.stringify(e)):this.userDefinedRegion=null,e instanceof Array)if(e.length){for(let t=0;t{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(t=>{if(t.success){try{this._handleRetJsonString(t.updateReturn)}catch(e){i(e)}return e()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),D._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(t)}})})),"single"==e&&(await this.setModeArgument("BinarizationModes",0,"EnableFillBinaryVacancy","0"),await this.setModeArgument("LocalizationModes",0,"ScanDirection","2"),await this.setModeArgument("BinarizationModes",0,"BlockSizeX","71"),await this.setModeArgument("BinarizationModes",0,"BlockSizeY","71"))}_bindUI(){if(!this.getUIElement())throw new Error("Need to define `UIElement` before opening.");if(this.dce._bindUI(),!this.dce.video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'")}_unbindUI(){this.dce._unbindUI()}set onPlayed(e){this.dce.off("played",this._onPlayed),this._onPlayed=e,this.dce.on("played",this._onPlayed)}get onPlayed(){return this._onPlayed}async getAllCameras(){return this.dce.getAllCameras()}async getCurrentCamera(){return this.dce.getSelectedCamera()}async setCurrentCamera(e){const t=await this.dce.selectCamera(e);return this._fireResolutionWarning(),t}getResolution(){return this.dce.getResolution()}async setResolution(e,t){const i=await this.dce.setResolution(e,t);return this._fireResolutionWarning(),i}getVideoSettings(){return this.dce.getVideoSettings()}updateVideoSettings(e){return this.dce.updateVideoSettings(e)}isOpen(){return this.dce&&this.dce.isOpen()}setVideoFit(e){return this.dce&&this.dce.setVideoFit(e)}set ifShowScanRegionMask(e){this.dce&&(this.dce.ifShowScanRegionMask=e)}get ifShowScanRegionMask(){return this.dce&&this.dce.ifShowScanRegionMask}set ifSaveLastUsedCamera(e){this.dce&&(this.dce.ifSaveLastUsedCamera=e)}get ifSaveLastUsedCamera(){return this.dce&&this.dce.ifSaveLastUsedCamera}set ifSkipCameraInspection(e){this.dce&&(this.dce.ifSkipCameraInspection=e)}get ifSkipCameraInspection(){return this.dce&&this.dce.ifSkipCameraInspection}stop(){this._drawResults(null),this.dce.stop(),this.dce.ifShowScanRegionLaser=!1,this.dce.hideViewDecorator(),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}pause(){this.dce.pause()}async play(e,t,i){this.dce.ifShowScanRegionLaser=!0;const r=await this.dce.play(e,t,i);return this._fireResolutionWarning(),r}pauseScan(e){this._assertOpen(),e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce.ifShowScanRegionLaser=!1,this.dce.stopFetchingLoop()}resumeScan(){this._assertOpen(),this._bPauseScan=!1,this.dce.ifShowScanRegionLaser=!0}getCapabilities(){return this.dce.getCapabilities()}getCameraSettings(){return this.dce.getCameraSettings()}getConstraints(){return this.dce.getConstraints()}async applyConstraints(e){return this.dce.applyConstraints(e)}async turnOnTorch(){return this.dce.turnOnTorch()}async turnOffTorch(){return this.dce.turnOffTorch()}async setColorTemperature(e){return this.dce.setColorTemperature(e)}async setExposureCompensation(e){return this.dce.setExposureCompensation(e)}async setZoom(e){return this.dce.setZoom(e)}async setFrameRate(e){return this.dce.setFrameRate(e)}getFrameRate(){return this.dce.getFrameRate()}async setFocus(e,t){return this.dce.setFocus(e,t)}getFocus(){return this.dce.getFocus()}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this.dce.stopFetchingLoop(),void this._drawResults(null);if(!this.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce.video||this.dce.video.paused||this._bPauseScan)return D._onLog&&D._onLog("Video or scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));D._onLog&&D._onLog("======= once read ======="),D._onLog&&(this._timeStartDecode=Date.now());const e=this._getVideoFrame();if(!e)return this._drawResults(null),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{e._bUseWebGL||"grey"!==e.colorMode||(this.dce.frameColorMode="rgba");let t=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,colorMode:e.colorMode,data:new Uint8Array(e.data),toCanvas:e.toCanvas});const{data:i,sx:r,sy:n,width:s,height:o,colorMode:a,timeStamp:l,_sWidth:h,_sHeight:c}=e,u={timeStamp:l};if("grey"===a)t=await this._decodeBuffer_Uint8Array(i,s,o,s,_.IPF_GrayScaled,u);else if("rgba"===a)t=await this._decodeBuffer_Uint8Array(i,s,o,4*s,_.IPF_ABGR_8888,u);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported.`);t=await this._decodeBuffer_Uint8Array(i,s,o,4*s,_.IPF_ARGB_8888,u)}return D.recalculateResultLocation(t,r,n,h,c,s,o),t})().then((e=>{if(D._onLog&&D._onLog(e),this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost,i=this._indexCurrentDecodingFrame;const r=()=>{let r=0;if(this.region instanceof Array){let n=0,s=0;n=i+1>=this.region.length?0:i+1,s=n+1>=this.region.length?0:n+1,r=e[n]&&e[n].length&&t[s]&&t[s].length?Math.min(...e[n])-Math.max(...t[s]):0}else if(t&&t.length){let i=Math.min(...e),n=Math.max(...t);i&&n&&(r=i-n)}else r=0;return r>0?r:0};(()=>{if(this.region instanceof Array){for(e[i]&&e[i]instanceof Array||(e[i]=[]);e[i].length>=5;)e[i].shift();e[i].push(this._lastInnerDecodeDuration)}else{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)}})(),this._intervalGetVideoFrame=r()+this.intervalTime}if(this.isOpen()&&this.dce.video&&!this.dce.video.paused&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of e)if(0==i.resultsType){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of e)if(0==i.resultsType){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onFrameRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultsType&&1!=e.resultsType||this.onFrameRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultsType&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t));this._drawResults(e)}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce.stopFetchingLoop(),D._onLog&&D._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){let t=this.dce.isFetchingLoopStarted();if(this.dce.loopInterval=this._intervalGetVideoFrame,t||this.dce.startFetchingLoop(),!this.dce.numberOfFramesInBuffer)return this.dce.loopInterval=0,null;e=this.dce.getFrameFromBuffer();const i=e=>{if(!e)return;let t=e.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(t)};i(e)}else this.dce.stopFetchingLoop(),e=this.dce.getFrame();return e}async open(){this._bindUI();const e=await this.dce.open();return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}async openVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const e=await this.dce.open();return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}close(){this.dce.close(),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}async show(){this._bindUI();const e=await this.dce.open(!0);return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}async showVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const e=await this.dce.open(!0);return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}hide(){this.dce.close(!0),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}destroyContext(){this.close(),this.bDestroyed||super.destroyContext()}}var oe,ae,le,he,ce,ue,de,fe,ge,_e,pe,me,ve,ye,Se,be,Ce,we,Te,xe,Ae,Oe,Ie,Ee,Re,De,Me;!function(e){e[e.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",e[e.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",e[e.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",e[e.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",e[e.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",e[e.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",e[e.BICM_SKIP=0]="BICM_SKIP",e[e.BICM_REV=2147483648]="BICM_REV"}(oe||(oe={})),function(e){e[e.BCM_AUTO=1]="BCM_AUTO",e[e.BCM_GENERAL=2]="BCM_GENERAL",e[e.BCM_SKIP=0]="BCM_SKIP",e[e.BCM_REV=2147483648]="BCM_REV"}(ae||(ae={})),function(e){e[e.BF2_NULL=0]="BF2_NULL",e[e.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",e[e.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",e[e.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",e[e.BF2_POSTNET=2097152]="BF2_POSTNET",e[e.BF2_PLANET=4194304]="BF2_PLANET",e[e.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",e[e.BF2_RM4SCC=16777216]="BF2_RM4SCC",e[e.BF2_DOTCODE=2]="BF2_DOTCODE",e[e.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",e[e.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",e[e.BF2_PHARMACODE=12]="BF2_PHARMACODE"}(le||(le={})),function(e){e[e.BM_AUTO=1]="BM_AUTO",e[e.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",e[e.BM_SKIP=0]="BM_SKIP",e[e.BM_THRESHOLD=4]="BM_THRESHOLD",e[e.BM_REV=2147483648]="BM_REV"}(he||(he={})),function(e){e[e.ECCM_CONTRAST=1]="ECCM_CONTRAST"}(ce||(ce={})),function(e){e[e.CFM_GENERAL=1]="CFM_GENERAL"}(ue||(ue={})),function(e){e[e.CCM_AUTO=1]="CCM_AUTO",e[e.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",e[e.CCM_SKIP=0]="CCM_SKIP",e[e.CCM_REV=2147483648]="CCM_REV"}(de||(de={})),function(e){e[e.CICM_GENERAL=1]="CICM_GENERAL",e[e.CICM_SKIP=0]="CICM_SKIP",e[e.CICM_REV=2147483648]="CICM_REV"}(fe||(fe={})),function(e){e[e.CM_IGNORE=1]="CM_IGNORE",e[e.CM_OVERWRITE=2]="CM_OVERWRITE"}(ge||(ge={})),function(e){e[e.DM_SKIP=0]="DM_SKIP",e[e.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",e[e.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",e[e.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",e[e.DM_SMOOTHING=8]="DM_SMOOTHING",e[e.DM_MORPHING=16]="DM_MORPHING",e[e.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",e[e.DM_SHARPENING=64]="DM_SHARPENING",e[e.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",e[e.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING"}(_e||(_e={})),function(e){e[e.DRM_AUTO=1]="DRM_AUTO",e[e.DRM_GENERAL=2]="DRM_GENERAL",e[e.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",e[e.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",e[e.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",e[e.DRM_SKIP=0]="DRM_SKIP",e[e.DRM_REV=2147483648]="DRM_REV"}(pe||(pe={})),function(e){e[e.DPMCRM_AUTO=1]="DPMCRM_AUTO",e[e.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",e[e.DPMCRM_SKIP=0]="DPMCRM_SKIP",e[e.DPMCRM_REV=2147483648]="DPMCRM_REV"}(me||(me={})),function(e){e[e.GTM_INVERTED=1]="GTM_INVERTED",e[e.GTM_ORIGINAL=2]="GTM_ORIGINAL",e[e.GTM_SKIP=0]="GTM_SKIP",e[e.GTM_REV=2147483648]="GTM_REV"}(ve||(ve={})),function(e){e[e.IPM_AUTO=1]="IPM_AUTO",e[e.IPM_GENERAL=2]="IPM_GENERAL",e[e.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",e[e.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",e[e.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",e[e.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",e[e.IPM_SKIP=0]="IPM_SKIP",e[e.IPM_REV=2147483648]="IPM_REV"}(ye||(ye={})),function(e){e[e.IRSM_MEMORY=1]="IRSM_MEMORY",e[e.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",e[e.IRSM_BOTH=4]="IRSM_BOTH"}(Se||(Se={})),function(e){e[e.IRT_NO_RESULT=0]="IRT_NO_RESULT",e[e.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",e[e.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",e[e.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",e[e.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",e[e.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",e[e.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",e[e.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",e[e.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",e[e.IRT_CONTOUR=256]="IRT_CONTOUR",e[e.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",e[e.IRT_FORM=1024]="IRT_FORM",e[e.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",e[e.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",e[e.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL"}(be||(be={})),function(e){e[e.LM_SKIP=0]="LM_SKIP",e[e.LM_AUTO=1]="LM_AUTO",e[e.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",e[e.LM_LINES=8]="LM_LINES",e[e.LM_STATISTICS=4]="LM_STATISTICS",e[e.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",e[e.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",e[e.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",e[e.LM_CENTRE=128]="LM_CENTRE",e[e.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",e[e.LM_REV=2147483648]="LM_REV"}(Ce||(Ce={})),function(e){e[e.PDFRM_RASTER=1]="PDFRM_RASTER",e[e.PDFRM_AUTO=2]="PDFRM_AUTO",e[e.PDFRM_VECTOR=4]="PDFRM_VECTOR",e[e.PDFRM_REV=2147483648]="PDFRM_REV"}(we||(we={})),function(e){e[e.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",e[e.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",e[e.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",e[e.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(Te||(Te={})),function(e){e[e.RPM_AUTO=1]="RPM_AUTO",e[e.RPM_GENERAL=2]="RPM_GENERAL",e[e.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",e[e.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",e[e.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",e[e.RPM_SKIP=0]="RPM_SKIP",e[e.RPM_REV=2147483648]="RPM_REV"}(xe||(xe={})),function(e){e[e.RCT_PIXEL=1]="RCT_PIXEL",e[e.RCT_PERCENTAGE=2]="RCT_PERCENTAGE"}(Ae||(Ae={})),function(e){e[e.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",e[e.RT_RAW_TEXT=1]="RT_RAW_TEXT",e[e.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",e[e.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT"}(Oe||(Oe={})),function(e){e[e.SUM_AUTO=1]="SUM_AUTO",e[e.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",e[e.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",e[e.SUM_SKIP=0]="SUM_SKIP",e[e.SUM_REV=2147483648]="SUM_REV"}(Ie||(Ie={})),function(e){e[e.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",e[e.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",e[e.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",e[e.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",e[e.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",e[e.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED"}(Ee||(Ee={})),function(e){e[e.TFM_AUTO=1]="TFM_AUTO",e[e.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",e[e.TFM_SKIP=0]="TFM_SKIP",e[e.TFM_REV=2147483648]="TFM_REV"}(Re||(Re={})),function(e){e[e.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",e[e.TROM_POSITION=2]="TROM_POSITION",e[e.TROM_FORMAT=4]="TROM_FORMAT",e[e.TROM_SKIP=0]="TROM_SKIP",e[e.TROM_REV=2147483648]="TROM_REV"}(De||(De={})),function(e){e[e.TDM_AUTO=1]="TDM_AUTO",e[e.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",e[e.TDM_SKIP=0]="TDM_SKIP",e[e.TDM_REV=2147483648]="TDM_REV"}(Me||(Me={}));export{D as BarcodeReader,se as BarcodeScanner,oe as EnumBarcodeColourMode,ae as EnumBarcodeComplementMode,v as EnumBarcodeFormat,le as EnumBarcodeFormat_2,he as EnumBinarizationMode,ce as EnumClarityCalculationMethod,ue as EnumClarityFilterMode,de as EnumColourClusteringMode,fe as EnumColourConversionMode,ge as EnumConflictMode,me as EnumDPMCodeReadingMode,_e as EnumDeblurMode,pe as EnumDeformationResistingMode,p as EnumErrorCode,ve as EnumGrayscaleTransformationMode,m as EnumIMResultDataType,_ as EnumImagePixelFormat,ye as EnumImagePreprocessingMode,Se as EnumIntermediateResultSavingMode,be as EnumIntermediateResultType,Ce as EnumLocalizationMode,we as EnumPDFReadingMode,Te as EnumQRCodeErrorCorrectionLevel,xe as EnumRegionPredetectionMode,Ae as EnumResultCoordinateType,Oe as EnumResultType,Ie as EnumScaleUpMode,Ee as EnumTerminatePhase,Re as EnumTextFilterMode,De as EnumTextResultOrderMode,Me as EnumTextureDetectionMode}; + */function B(e,t,i,r){return new(i||(i=Promise))((function(n,s){function o(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((r=r.apply(e,t||[])).next())}))}const j="undefined"==typeof self;let N,V,U,G,W;if("undefined"!=typeof navigator&&(N=navigator,V=N.userAgent,U=N.platform,G=N.mediaDevices),!j){const e={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(V)||this.searchVersion(N.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=V.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(e){for(let t=0;t{let e=!1;if(Y)try{(await G.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===W.browser&&W.version>66||"Safari"===W.browser&&W.version>13||"OPR"===W.browser&&W.version>43||"Edge"===W.browser&&W.version;const K=(()=>{if(!j&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})();class J{constructor(e,t){this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapStyle=new Map,this.mapEvents=new Map([["select",[]],["deselect",[]]]),this.isDrawingItem=!0,this._setFabricObject(e),this._mediaType=e.type,this.styleSelector="default",this.styleId=t;for(let e of J.arrStyleSelectors)this._mapStyle.set(e,null)}get mediaType(){return this._mediaType}get drawingLayerId(){return this._drawingLayerId}_setFabricObject(e){this._fabricObject=e;const t=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const e=this.mapEvents.get("select");for(let t of e)t&&t.apply(this)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const e=t.get("deselect");for(let t of e)t&&t.apply(this)},e.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}on(e,t,i){const r=this.mapEvents.get(e);r.includes(t)||r.push(t)}off(e,t){const i=this.mapEvents.get(e),r=i.indexOf(t);-1!==r&&i.splice(r,1)}_setEditable(e){const t=this._fabricObject;e?(t.selectable=!0,t.evented=!0,t.hasControls=!0):(t.selectable=!1,t.evented=!1,t.hasControls=!1)}_extendSet(e,t){return!1}_extendGet(e){}set(e,t){this._extendSet(e,t)||("x"===e?this._fabricObject.set("left",t):"y"===e?this._fabricObject.set("top",t):this._fabricObject.set(e,t)),["vertices","left","top","width","height","scaleX","scaleY","skewX","skewY","padding","angle","strokeWidth"].includes(e)&&this._fabricObject.setCoords()}get(e){let t=this._extendGet(e);return void 0===t&&(t="x"===e?this._fabricObject.get("left"):"y"===e?this._fabricObject.get("top"):this._fabricObject.get(e)),t}}function q(e,t,i){let r=i.points[this.pointIndex].x-i.pathOffset.x,n=i.points[this.pointIndex].y-i.pathOffset.y;return k.util.transformPoint({x:r,y:n},k.util.multiplyTransformMatrices(i.canvas.viewportTransform,i.calcTransformMatrix()))}function Q(e){let t=new k.Point(e.strokeUniform?1/e.scaleX:1,e.strokeUniform?1/e.scaleY:1).multiply(e.strokeWidth);return new k.Point(e.width+t.x,e.height+t.y)}function Z(e,t,i,r){let n=t.target,s=n.controls[n.__corner],o=n.toLocalPoint(new k.Point(i,r),"center","center"),a=Q(n),l=n._getTransformedDimensions(0,0),h={x:o.x*a.x/l.x+n.pathOffset.x,y:o.y*a.y/l.y+n.pathOffset.y};return n.points[s.pointIndex]=h,!0}function $(e,t){return function(i,r,n,s){let o=r.target,a=k.util.transformPoint({x:o.points[e].x-o.pathOffset.x,y:o.points[e].y-o.pathOffset.y},o.calcTransformMatrix()),l=t(i,r,n,s);o._setPositionDimensions({});let h=Q(o),c=(o.points[e].x-o.pathOffset.x)/h.x,u=(o.points[e].y-o.pathOffset.y)/h.y;return o.setPositionByOrigin(a,c+.5,u+.5),l}}J.arrMediaTypes=["rect","arc","polygon","image","text","line","path"],J.arrStyleSelectors=["default","selected"],"undefined"!=typeof document&&"undefined"!=typeof window&&(k.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(k.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(e){e.dispose&&e.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),k.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},k.Object.prototype.transparentCorners=!1,k.Object.prototype.cornerSize=20,k.Object.prototype.touchCornerSize=100,k.Object.prototype.cornerColor="rgb(254,142,20)",k.Object.prototype.cornerStyle="circle",k.Object.prototype.strokeUniform=!0,k.Object.prototype.hasBorders=!1,k.ActiveSelection.prototype.onDeselect=function(){return this.getObjects().forEach((e=>{setTimeout(e.onDeselect,0)})),this.destroy(),!1},k.Canvas.prototype.containerClass="",k.Canvas.prototype.getPointer=function(e,t){if(this._absolutePointer&&!t)return this._absolutePointer;if(this._pointer&&t)return this._pointer;var i,r=this.upperCanvasEl,n=k.util.getPointer(e,r),s=r.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,t||(n=this.restorePointerVpt(n));var l=this.getRetinaScaling();if(1!==l&&(n.x/=l,n.y/=l),0!==o&&0!==a){var h=window.getComputedStyle(r).objectFit,c=r.width,u=r.height,d=o,f=a;i={width:c/d,height:u/f};var g,_,p=c/u,m=d/f;return"contain"===h?p>m?(g=d,_=d/p,{x:n.x*i.width,y:(n.y-(f-_)/2)*i.width}):(g=f*p,_=f,{x:(n.x-(d-g)/2)*i.height,y:n.y*i.height}):"cover"===h?p>m?{x:(c-i.height*d)/2+n.x*i.height,y:n.y*i.height}:{x:n.x*i.width,y:(u-i.width*f)/2+n.y*i.width}:{x:n.x*i.width,y:n.y*i.height}}return i={width:1,height:1},{x:n.x*i.width,y:n.y*i.height}});class ee{constructor(e,t,i,r){let n,s;switch(this.mapMediaType_Style=new Map,this.mode="viewer",this.onSelectionChange=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,e.hasOwnProperty("getFabricCanvas")?this.fabricCanvas=e.getFabricCanvas():(this.fabricCanvas=new k.Canvas(e,r),this.fabricCanvas.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),this.fabricCanvas.lowerCanvasEl.className="",this.fabricCanvas.upperCanvasEl.className="",this.fabricCanvas.on("selection:created",(function(e){const t=e.selected,i=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!i.includes(t)&&i.push(t)}for(let e of i){const i=[];for(let r of t){const t=r.getDrawingItem();t._drawingLayer===e&&i.push(t)}setTimeout((()=>{e.onSelectionChange&&e.onSelectionChange(i,[])}),0)}})),this.fabricCanvas.on("before:selection:cleared",(function(e){const t=this.getActiveObjects(),i=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!i.includes(t)&&i.push(t)}for(let e of i){const i=[];for(let r of t){const t=r.getDrawingItem();t._drawingLayer===e&&i.push(t)}setTimeout((()=>{const t=[];for(let r of i)e.hasDrawingItem(r)&&t.push(r);t.length>0&&e.onSelectionChange&&e.onSelectionChange([],t)}),0)}})),this.fabricCanvas.on("selection:updated",(function(e){const t=e.selected,i=e.deselected,r=[];for(let e of t){const t=e.getDrawingItem()._drawingLayer;t&&!r.includes(t)&&r.push(t)}for(let e of i){const t=e.getDrawingItem()._drawingLayer;t&&!r.includes(t)&&r.push(t)}for(let e of r){const r=[],n=[];for(let i of t){const t=i.getDrawingItem();t._drawingLayer===e&&r.push(t)}for(let t of i){const i=t.getDrawingItem();i._drawingLayer===e&&n.push(i)}setTimeout((()=>{e.onSelectionChange&&e.onSelectionChange(r,n)}),0)}})),this.fabricCanvas.wrapperEl.style.position="absolute",e.getFabricCanvas=()=>this.fabricCanvas),this.id=t,this._mapDrawingStyles=i,t){case 1:n=i.get(1),s=i.get(5);break;case 2:n=i.get(2),s=i.get(6);break;case 3:n=i.get(3),s=i.get(7);break;default:n=i.get(4),s=i.get(8)}for(let e of J.arrMediaTypes)this.mapMediaType_Style.set(e,{default:n,selected:s})}getId(){return this.id}_getDrawingStyle(e,t){if("number"!=typeof e)throw new Error("Invalid style id.");const i=this._mapDrawingStyles.get(e);return i?t?JSON.parse(JSON.stringify(i)):i:null}setVisible(e){if(e){for(let e of this._arrFabricObject)e.visible=!0;this._visible=!0}else{for(let e of this._arrFabricObject)e.visible=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyleId(e){return e.styleId?e.styleId:this.mapMediaType_Style.get(e._mediaType)[e.styleSelector].styleId}_getItemCurrentStyle(e){if(e.styleId)return this._getDrawingStyle(e.styleId);return e._mapStyle.get(e.styleSelector)||null}_changeMediaTypeCurStyleInStyleSelector(e,t,i,r){let n;switch(e){case"rect":n=this.fabricCanvas.getObjects("rect");break;case"arc":n=this.fabricCanvas.getObjects("circle");break;case"polygon":n=this.fabricCanvas.getObjects("polygon");break;case"image":n=this.fabricCanvas.getObjects("image");break;case"text":n=this.fabricCanvas.getObjects("text");break;case"line":n=this.fabricCanvas.getObjects("line");break;case"path":n=this.fabricCanvas.getObjects("path")}for(let e of n){if(!this._arrFabricObject.includes(e))continue;const r=e.getDrawingItem();r.styleSelector===t&&this._changeItemStyle(r,i,!0)}r||this.fabricCanvas.renderAll()}_changeItemStyle(e,t,i){if(!e||!t)return;const r=e._getFabricObject();"number"==typeof e.styleId&&(t=this._getDrawingStyle(e.styleId)),r.strokeWidth=t.lineWidth,"fill"===t.paintMode?(r.fill=t.fillStyle,r.stroke=t.fillStyle):"stroke"===t.paintMode?(r.fill="transparent",r.stroke=t.strokeStyle):"strokeAndFill"===t.paintMode&&(r.fill=t.fillStyle,r.stroke=t.strokeStyle),r.fontFamily&&(r.fontFamily=t.fontFamily),r.fontSize&&(r.fontSize=t.fontSize),r.group||(r.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(e,t,i){if(!e||!t)return;const r=e.getChildItems();if("add"===i){if(r.includes(t))return;const i=t._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");t._zIndex=null}else{let i;if(t.styleId)i=this._getDrawingStyle(t.styleId);else{i=this.mapMediaType_Style.get(t._mediaType)[e.styleSelector];const r=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).selected,!0)},n=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).default,!0)};t.on("select",r),t.on("deselect",n),t._funcChangeStyleToSelected=r,t._funcChangeStyleToDefault=n}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,i,!0)}e._fabricObject.addWithUpdate(t._getFabricObject())}else{if("remove"!==i)return;if(!r.includes(t))return;t._zIndex=null,t._drawingLayer=null,t._drawingLayerId=null,t.off("select",t._funcChangeStyleToSelected),t.off("deselect",t._funcChangeStyleToDefault),t._funcChangeStyleToSelected=null,t._funcChangeStyleToDefault=null,e._fabricObject.removeWithUpdate(t._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(e,t){let i=e._getFabricObject();const r=this.fabricCanvas.getObjects();let n,s;if(r.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===e._mediaType){n=e.getChildItems();for(let e of n)if(e._drawingLayer&&e._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(t&&"object"==typeof t&&!Array.isArray(t))for(let e in t)i.set(e,t[e]);if(n){for(let e of n){if(e.styleId)s=this._getDrawingStyle(e.styleId);else{const t=this.mapMediaType_Style.get(e._mediaType);for(let i of J.arrStyleSelectors)e._mapStyle.set(i,t[i]);s=t.default;const i=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected,!0)},r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default,!0)};e.on("select",i),e.on("deselect",r),e._funcChangeStyleToSelected=i,e._funcChangeStyleToDefault=r}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{if(e.styleId)s=this._getDrawingStyle(e.styleId);else{const t=this.mapMediaType_Style.get(e._mediaType);for(let i of J.arrStyleSelectors)e._mapStyle.set(i,t[i]);s=t.default;const i=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected)},r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default)};e.on("select",i),e.on("deselect",r),e._funcChangeStyleToSelected=i,e._funcChangeStyleToDefault=r}this._changeItemStyle(e,s)}e._zIndex=this.id,e._drawingLayer=this,e._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=r.length;if(o)a=r.indexOf(this._arrFabricObject[o-1])+1;else for(let t=0;t{for(let t of this._arrDrawingLayer)if(t.getId()===e)return!0;return!1};if(void 0===t){for(let e=100;;e++)if(!i(e)){t=e;break}}else if(i(t))throw new Error("Existed drawing layer id.");const r=new ee(e,t,this._mapDrawingStyles,{enableRetinaScaling:!1});return r._manager=this,this._arrDrawingLayer.push(r),this._switchPointerEvent(),r}deleteDrwaingLayer(e){const t=this.getDrawingLayer(e);if(!t)return;const i=this._arrDrawingLayer;t.dispose(),i.splice(i.indexOf(t),1),this._switchPointerEvent()}clearDrawingLayers(){for(let e of this._arrDrawingLayer)e.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(e){for(let t of this._arrDrawingLayer)if(t.getId()===e)return t;return null}getDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const e=this._arrDrawingLayer[0].fabricCanvas.getActiveObjects(),t=[];for(let i of e)t.push(i.getDrawingItem());return t}setDimensions(e,t){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(e,t)}setObjectFit(e){for(let t of this._arrDrawingLayer)t&&t._setObjectFit(e)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(e){this._arrDrawingLayer.length&&(this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.display=e?"block":"none")}_switchPointerEvent(){if(!this._arrDrawingLayer.length)return;let e=!1;for(let t of this._arrDrawingLayer)"editor"===t.getMode()&&(e=!0);this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.pointerEvents=e?"":"none"}}class ie{constructor(e){this._controlTarget=null,this._arrUsers=[],this._mapAction_UserArgs=new Map,this._mapProperty_UserValue=new Map,this._mapAction_Callbacks=new Map,this._controlTarget=e}setControlTarget(e){this._controlTarget=e}getControlTarget(){return this._controlTarget}register(e){this._arrUsers.includes(e)||this._arrUsers.push(e)}logout(e){const t=this._arrUsers.indexOf(e);-1!==t&&(this.clearUserDisiredAction({user:e}),this.clearUserDisiredValue({user:e}),this._arrUsers.splice(t,1))}getRegisteredUsers(){return this._arrUsers}ifUserExisted(e){return this._arrUsers.includes(e)}setDisiredValue(e,t,i,r){if(!this._arrUsers.includes(e))throw new Error("Unregistered user.");r&&(this._controlTarget[t]=i),this._mapProperty_UserValue.get(t)?this._mapProperty_UserValue.get(t).set(e,i):this._mapProperty_UserValue.set(t,new Map([[e,i]]))}clearUserDisiredValue(e){if(e&&(e.user||e.property)){if(e.property&&e.user){const t=this._mapProperty_UserValue.get(e.property);if(!t)return;t.delete(e.user)}else if(e.property)this._mapProperty_UserValue.delete(e.property);else if(e.user)for(let t of this._mapProperty_UserValue.values())t.delete(e.user)}else this._mapProperty_UserValue=new Map}getValue(e){if(!this._controlTarget)throw new Error("Control target is not set.");return this._controlTarget[e]}getPropertyDisiredValue(e){if(this._mapProperty_UserValue.get(e)){const t=[],i=this._mapProperty_UserValue.get(e);for(let e of i.values())t.push(e);return t}return null}setDisiredAction(e,t,i,r){if(!this._arrUsers.includes(e))throw new Error("Unregistered user.");return i||(i=[]),r?this._controlTarget[t](...i):(this._mapAction_UserArgs.get(t)?this._mapAction_UserArgs.get(t).set(e,i):this._mapAction_UserArgs.set(t,new Map([[e,i]])),this._render(t))}clearUserDisiredAction(e){if(e&&(e.user||e.actionName)){if(e.actionName&&e.user){const t=this._mapAction_UserArgs.get(e.actionName);if(!t)return;t.delete(e.user)}else if(e.actionName)this._mapAction_UserArgs.delete(e.actionName);else if(e.user)for(let t of this._mapAction_UserArgs.values())t.delete(e.user);this.render()}else this._mapAction_UserArgs=new Map}addCallback(e,t){const i=this._mapAction_Callbacks.get(e);i?i.push(t):this._mapAction_Callbacks.set(e,[t])}removeCallback(e,t){const i=this._mapAction_Callbacks.get(e);if(!i)return;const r=i.indexOf(t);-1!==r&&i.splice(r,1)}clearCallback(e){e?this._mapAction_Callbacks.delete(e):this._mapAction_Callbacks.clear()}_fireCallback(e){const t=this._mapAction_Callbacks.get(e);if(t)for(let e of t){if(!e)return;setTimeout(e.bind(this._controlTarget),0)}}_render(e){const t=this._mapAction_UserArgs.get(e);if(!t)throw new Error("Unrecorded action.");if(t.size===this._arrUsers.length){let i=[];for(let e of t.values())e.length>0&&(i=e);if(this._controlTarget[e]){const t=this._controlTarget[e](...i);return this._mapAction_UserArgs.delete(e),this._fireCallback(e),t}}}render(e){if(e)return this._render(e);for(let e of this._mapAction_UserArgs.keys())this._render(e)}}class re{constructor(){this._maxCvsSideLength=void 0,this._defaultMaxCvsSideLength=null,this._predefinedResolutions=[{width:160,height:120},{width:320,height:240},{width:480,height:360},{width:640,height:480},{width:800,height:600},{width:960,height:720},{width:1280,height:720},{width:1920,height:1080},{width:2560,height:1440},{width:3840,height:2160}],this._mapCameraResolutions=new Map,this._bWebGLSupported=!0,this.extraBindings=[],this._singleFrameMode=!(navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia),this._cvsSingleFrameMode=null,this._cvsOriginalImage=null,this._imgWidth=0,this._imgHeight=0,this._singleFrameModeIpt=null,this._clickIptSingleFrameMode=()=>{if(this.singleFrameMode){if(!this._singleFrameModeIpt){const e=document.createElement("input");this._singleFrameModeIpt=e,e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.addEventListener("change",(()=>B(this,void 0,void 0,(function*(){const t=e.files[0];e.value="";const i=yield(e=>B(this,void 0,void 0,(function*(){let t=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(t=yield createImageBitmap(e),t)return t}catch(e){}var r;return t||(i=yield(r=e,new Promise(((e,t)=>{let i=URL.createObjectURL(r),n=new Image;n.dbrObjUrl=i,n.src=i,n.onload=()=>{e(n)},n.onerror=e=>{t(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}})))),i})))(t),r=i instanceof HTMLImageElement?i.naturalWidth:i.width,n=i instanceof HTMLImageElement?i.naturalHeight:i.height;this._imgWidth=r,this._imgHeight=n;const s=e=>{const t=Date.now();if(0===r||0===n)return null;const i=this._scanRegion,s=this.getFrameSize(r,n,i,this.maxCvsSideLength);if(!s)return null;let o,a;o=r!==s.sWidth||n!==s.sHeight,a=s.sWidth!==s.dWidth||s.sHeight!==s.dHeight;const l=(()=>!(!this._bWebGLSupported||a))(),h={data:null,region:i?JSON.parse(JSON.stringify(i)):null,sx:s.sx,sy:s.sy,width:s.dWidth,height:s.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:o,toCanvas:this._toCanvas,_sWidth:s.sWidth,_sHeight:s.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(e,r,n,s,null,{targetColorMode:this.frameColorMode,bUseWebGL:l})}catch(t){if("WebGLError"!==t.name)throw t;c=this._getImageData(e,r,n,s,null,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return re._onLog&&re._onLog("DCE: _getVideoFrame(region?) END: "+u),h.data=c.data,h.colorMode=c.colorMode,h._bUseWebGL=c._bUseWebGL,h.timeSpent=u-t,h.timeStamp=u,h};(e=>{let t=this._cvsSingleFrameMode;if(!t){if(t=document.createElement("canvas"),t.style.pointerEvents="none",!this._video)throw new Error("'video' is null.");this._video.after(t),t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.objectFit="contain",this._cvsSingleFrameMode=t}t.width==r&&t.height==n||(t.width=r,t.height=n);const i=t.getContext("2d");i.clearRect(0,0,t.width,t.height),i.drawImage(e,0,0)})(i),this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e);let o;this._updateDrawingLayersSize();try{o=s(i)}catch(e){throw e}const a=this.mapCameraEvents.get("singleFrameAcquired");for(let e of a)if(e)try{const t={data:new Uint8Array(o.data),region:JSON.parse(JSON.stringify(o.region)),sx:o.sx,sy:o.sy,width:o.width,height:o.height,colorMode:o.colorMode,timeSpent:o.timeSpent,timeStamp:o.timeStamp,isCropped:o.isCropped,toCanvas:o.toCanvas,_sWidth:o._sWidth,_sHeight:o._sHeight,_bUseWebGL:o._bUseWebGL};yield e.apply(this,[t])}catch(e){console.error(e)}})))),e.style.position="fixed",e.style.left="-1px",e.style.top="-1px",e.style.width="1px",e.style.height="1px",e.style.backgroundColor="transparent",e.style.color="transparent",document.body.appendChild(e)}this._singleFrameModeIpt.click()}},this.styleEls=[],this._frameColorMode=void 0,this._defaultFrameColorMode="RGBA",this.currentFSColorMode="rgba",this.ifReuseArrayBufferView=!1,this.maxVideoCvsLength=3,this._reusedCvs=null,this._reusedWebGLCvs=null,this._reusedWebGLCtx=null,this._reusedDataContainer=null,this._webGLTexture=null,this._webGLProgramInfo=null,this._webGLBuffers=null,this._recordedStates={},this._toCanvas=function(){const e=document.createElement("canvas");let t;if(e.width=this.width,e.height=this.height,"grey"===this.colorMode){t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;eB(this,void 0,void 0,(function*(){yield this.selectCamera(this._selCam.value),this._bOpen||this.stop()})),this._onResolutionSelChange=()=>B(this,void 0,void 0,(function*(){let e,t;if(this._selRsl&&-1!=this._selRsl.selectedIndex){let i=this._selRsl.options[this._selRsl.selectedIndex];e=i.getAttribute("data-width"),t=i.getAttribute("data-height")}yield this.setResolution(e,t),this._bOpen||this.stop()})),this._onCloseBtnClick=()=>{this.close(!0)},this._bOpen=!1,this.isCameraEnhancer=!0,this.isDisposed=!1,this.videoSrc=null,this.videoSettings={video:{width:{ideal:1280},height:{ideal:720},facingMode:{ideal:"environment"}}},this.iPlayRound=0,this.promisePlay=null,this._ifSaveLastUsedCamera=!1,this.ifSkipCameraInspection=!1,this._allCameras=[],this._currentCamera=null,this._videoTrack=null,this._lastDeviceId=void 0,this._vc_bPlayingVideoBeforeHide=!1,this._ev_documentHideEvent=()=>{"visible"===document.visibilityState?this._vc_bPlayingVideoBeforeHide&&("Firefox"==W.browser?this.play():this._video.play(),this._vc_bPlayingVideoBeforeHide=!1):this._video&&!this._video.paused&&(this._vc_bPlayingVideoBeforeHide=!0,this._video.pause())},this._divVideoContainer=null,this._video=null,this.videoFit="contain",this._cvsScanRegion=null,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=2,this._bShowScanRegionMask=!0,this._bShowScanRegionLaser=void 0,this._defaultBShowScanRegionLaser=!1,this._scanRegion=null,this._arrScanRegionOverlays=[],this._layerBaseCvs=null,this._cvsViewDecorator=null,this._decoratorType=[],this._decoratorArea=null,this._viewDecoratorInfo={rectangle:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},focus:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},crossline:{lineWidth:2,strokeStyle:"rgb(254,142,20)"},crosshair:{lineWidth:4,strokeStyle:"rgb(254,142,20)"}},this._croppingRegions=void 0,this._defaultCroppingRegions=[null],this.bIncreaseRegionIndexAuto=!0,this._croppingRegionIndex=0,this._loopInterval=void 0,this._defaultLoopInterval=0,this._maxNumberOfFramesInBuffer=void 0,this._defaultMaxNumberOfFramesInBuffer=1,this._frameQueue=[],this._bFetchingLoopStarted=!1,this._refreshInterval=void 0,this._defaultRefreshInterval=-1,this._updateLayersTimeout=100,this._updateLayers=()=>{this._resizeTimeoutId&&clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout((()=>{if(!this.isDisposed){this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e);this._updateDrawingLayersSize()}}),this._updateLayersTimeout)},this.mapCameraEvents=new Map([["cameraOpen",[]],["cameraClose",[]],["cameraChange",[]],["resolutionChange",[]],["played",[]],["singleFrameAcquired",[]],["frameAddedToBuffer",[]]]),this._controler=null}static getVersion(){return this._version}static detectEnvironment(){return B(this,void 0,void 0,(function*(){return yield(async()=>({wasm:H,worker:X,getUserMedia:Y,camera:await z(),browser:W.browser,version:W.version,OS:W.OS}))()}))}static set engineResourcePath(e){if(this._hasEngineResourceLoaded)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` is called.");re._engineResourcePath=(e=>{if(null==e&&(e="./"),!j){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get engineResourcePath(){return this._engineResourcePath}static isStorageAvailable(e){let t;try{t=window[e];const i="__storage_test__";return t.setItem(i,i),t.removeItem(i),!0}catch(e){return e instanceof DOMException&&(22===e.code||1014===e.code||"QuotaExceededError"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name)&&t&&0!==t.length}}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"data"in e&&"region"in e&&"sx"in e&&"sy"in e&&"width"in e&&"height"in e&&"colorMode"in e&&"timeSpent"in e&&"timeStamp"in e&&"isCropped"in e&&"toCanvas"in e&&"_sWidth"in e&&"_sHeight"in e&&"_bUseWebGL"in e}set maxCvsSideLength(e){if(e<=0)throw new Error("Invalid value.");this._maxCvsSideLength=e}get maxCvsSideLength(){if(void 0!==this._maxCvsSideLength)return this._maxCvsSideLength;if(this._controler){const e=this._controler.getPropertyDisiredValue("maxCvsSideLength");if(e&&1===e.length)return e[0]}return this._defaultMaxCvsSideLength}static set defaultUIElementURL(e){re._defaultUIElementURL=e}static get defaultUIElementURL(){var e;return null===(e=re._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",re.engineResourcePath)}getUIElement(){return this.UIElement}setUIElement(e){return B(this,void 0,void 0,(function*(){if(this._bOpen)throw new Error("It is not allowed to change the UIElement when the camera is open.");if("string"==typeof e||e instanceof String){if(!e.trim().startsWith("<")){let t=yield fetch(e);if(!t.ok)throw Error("setUIElement(elementOrUrl): Network Error: "+t.statusText);e=yield t.text()}if(!e.trim().startsWith("<"))throw Error("setUIElement(elementOrUrl): Can't get valid HTMLElement.");let t=document.createElement("div");t.innerHTML=e;for(let e=0;e100||e.regionTop>100||e.regionRight>100||e.regionBottom>100)))}set scanRegion(e){if(!this._checkValidRegion(e))throw new Error("Invalid region.");this._scanRegion=JSON.parse(JSON.stringify(e)),this._updateScanRegionCanvas(),this._updateScanAreaDiv();for(let e of this._arrScanRegionOverlays)e&&this._updateScanRegionOverlay(e)}setScanRegion(e){this.scanRegion=e}getScanRegion(){return JSON.parse(JSON.stringify(this._scanRegion))}_calculateCvsSize(){if(!this._bOpen)return null;let e,t,i;if(this.singleFrameMode)e=this._imgWidth,t=this._imgHeight,i="contain";else{if(!this._video)return null;e=this._video.videoWidth,t=this._video.videoHeight,i=this.getVideoFit()}return{width:e,height:t,objectFit:i}}addScanRegionOverlayCanvas(){this._assertOpen();const e=document.createElement("canvas");if(this._updateScanRegionOverlay(e),!this._scanRegionOverlayContainer){const e=document.createElement("div");if(this._scanRegionOverlayContainer=e,e.style.position="absolute",e.style.left="0",e.style.top="0",e.style.width="100%",e.style.height="100%",e.style.overflow="hidden",e.style.pointerEvents="none",this._layerBaseCvs)this._layerBaseCvs.parentElement.after(e);else if(this._cvsScanRegion)this._cvsScanRegion.before(e);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(e);else{if(!this._video)throw new Error("'video' is null.");this._video.after(e)}this._recordedStates.overlayShow=!0}return this._scanRegionOverlayContainer.append(e),this._arrScanRegionOverlays.push(e),e}removeScanRegionOverlayCanvas(e){const t=this._arrScanRegionOverlays.indexOf(e);-1!==t&&(e.remove(),this._arrScanRegionOverlays.splice(t,1))}_updateScanRegionOverlay(e){if(!e)return;const t=this._calculateCvsSize();if(!t)return;const{width:i,height:r,objectFit:n}=t;if(i<=0||r<=0)return e.width=0,void(e.height=0);const s=this._getRegionInPixels(i,r,this._scanRegion),o=this.getFrameSize(i,r,this._scanRegion,this.maxCvsSideLength),a=o.dWidth,l=o.dHeight;e.width==a&&e.height==l||(e.width=a,e.height=l);const h=window.getComputedStyle(this._video),c=parseFloat(h.width),u=parseFloat(h.height),d=c/u,f=i/r;let g,_,p,m,v=1;"contain"===n?(dd?(v=u/r,g=s.regionLeft*v-(i*v-c)/2,_=s.regionTop*v):(v=c/i,g=s.regionLeft*v,_=s.regionTop*v-(r*v-u)/2),p=(s.regionRight-s.regionLeft)*v,m=(s.regionBottom-s.regionTop)*v):(g=0,_=0,p=0,m=0),e.style.position="absolute",e.style.left=g+"px",e.style.top=_+"px",e.style.width=p+"px",e.style.height=m+"px"}showScanRegionOverlays(){this._scanRegionOverlayContainer&&("none"==this._scanRegionOverlayContainer.style.display&&(this._scanRegionOverlayContainer.style.display=""),this._recordedStates.overlayShow=!0)}hideScanRegionOverlays(){this._scanRegionOverlayContainer&&(this._scanRegionOverlayContainer.style.display="none",this._recordedStates.overlayShow=!1)}setViewDecorator(e,t){if(!e)return void(this._cvsViewDecorator&&(this._cvsViewDecorator.remove(),this._cvsViewDecorator=null));this._assertOpen();let i=[];if("string"==typeof e?i.push(e):Array.isArray(e)&&(i=JSON.parse(JSON.stringify(e))),!this._cvsViewDecorator){if(this._cvsViewDecorator=document.createElement("canvas"),this._cvsViewDecorator.style.pointerEvents="none",this._cvsScanRegion)this._cvsScanRegion.after(this._cvsViewDecorator);else if(this._scanRegionOverlayContainer)this._scanRegionOverlayContainer.after(this._cvsViewDecorator);else if(this._layerBaseCvs)this._layerBaseCvs.parentElement.after(this._cvsViewDecorator);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(this._cvsViewDecorator);else{if(!this._video)throw new Error("'video' is null.");this._video.after(this._cvsViewDecorator)}this._recordedStates.decoratorShow=!0}this._decoratorArea=JSON.parse(JSON.stringify(t)),this._decoratorType.length=0;const r=["rectangle","focus"],n=["crossline","crosshair"];let s=!1,o=!1;for(let e of i)e=e.toLowerCase(),r.includes(e)&&!s&&(s=!0,this._decoratorType.push(e)),n.includes(e)&&!o&&(o=!0,!this._decoratorType.includes(e)&&this._decoratorType.push(e));this._updateViewDecorator()}getViewDecorator(){return{type:JSON.parse(JSON.stringify(this._decoratorType)),area:JSON.parse(JSON.stringify(this._decoratorArea)),canvas:this._cvsViewDecorator}}showViewDecorator(){this._cvsViewDecorator&&("none"==this._cvsViewDecorator.style.display&&(this._cvsViewDecorator.style.display=""),this._recordedStates.decoratorShow=!0)}hideViewDecorator(){this._cvsViewDecorator&&(this._cvsViewDecorator.style.display="none",this._recordedStates.decoratorShow=!1)}setViewDecoratorLineWidth(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("lineWidth"))throw new Error(`It is not allowed to change the property 'lineWidth' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].lineWidth=t,this._updateViewDecorator()}setViewDecoratorStrokeStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("strokeStyle"))throw new Error(`It is not allowed to change the property 'strokeStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].strokeStyle=t,this._updateViewDecorator()}setViewDecoratorFillStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("fillStyle"))throw new Error(`It is not allowed to change the property 'fillStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].fillStyle=t,this._updateViewDecorator()}setViewDecoratorMaskFillStyle(e,t){if("string"!=typeof e)throw new Error("The 'type' should be a string.");if(e=e.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(e))throw new Error(`The type of '${e}' doesn't exist.`);if(!this._viewDecoratorInfo[e].hasOwnProperty("maskFillStyle"))throw new Error(`It is not allowed to change the property 'maskFillStyle' when the decorator type is '${e}'.`);this._viewDecoratorInfo[e].maskFillStyle=t,this._updateViewDecorator()}_updateViewDecorator(){if(!this._bOpen)return;if(!this._cvsViewDecorator||!this._decoratorArea)return;let e;if(this.singleFrameMode)e="contain";else{if(!this._video)return;e=this.getVideoFit()}const t=this._cvsViewDecorator;t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.objectFit=e;const i=this.getVisibleRegion(!0),r=i.regionRight-i.regionLeft,n=i.regionBottom-i.regionTop;if(t.width==r&&t.height==n||(t.width=r,t.height=n),r<=0||n<=0)return;const s=t.getContext("2d");s.clearRect(0,0,t.width,t.height);const o=this._decoratorArea.x/100*r,a=this._decoratorArea.y/100*n,l=this._decoratorArea.width/100*r,h=this._decoratorArea.height/100*n;for(let e of this._decoratorType){if("rectangle"===e){s.fillStyle=this._viewDecoratorInfo.rectangle.maskFillStyle,s.fillRect(0,0,t.width,t.height),s.clearRect(Math.round(o),Math.round(a),Math.round(l),Math.round(h)),s.fillStyle=this._viewDecoratorInfo.rectangle.fillStyle,s.fillRect(Math.round(o),Math.round(a),Math.round(l),Math.round(h)),s.lineWidth=this._viewDecoratorInfo.rectangle.lineWidth,s.strokeStyle=this._viewDecoratorInfo.rectangle.strokeStyle;const e=s.lineWidth/2;s.strokeRect(Math.round(o-e),Math.round(a-e),Math.round(l+s.lineWidth),Math.round(h+s.lineWidth))}if("focus"===e){s.fillStyle=this._viewDecoratorInfo.focus.maskFillStyle,s.fillRect(0,0,t.width,t.height),s.clearRect(Math.round(o),Math.round(a),Math.round(l),Math.round(h)),s.fillStyle=this._viewDecoratorInfo.focus.fillStyle,s.fillRect(Math.round(o),Math.round(a),Math.round(l),Math.round(h)),s.lineWidth=this._viewDecoratorInfo.focus.lineWidth,s.strokeStyle=this._viewDecoratorInfo.focus.strokeStyle;const e=s.lineWidth/2,i=[0,.25,.75,1],r=[0,.25,.75,1];s.beginPath();for(let e=0;e{const e=parseFloat(window.getComputedStyle(this._video).width),t=parseFloat(window.getComputedStyle(this._video).height);let s,o={regionBottom:r,regionRight:i,regionLeft:0,regionTop:0,regionMeasuredByPercentage:!1};return"cover"===n?e/tthis.maxNumberOfFramesInBuffer;)this._frameQueue.shift()}get maxNumberOfFramesInBuffer(){if(void 0!==this._maxNumberOfFramesInBuffer)return this._maxNumberOfFramesInBuffer;if(this._controler){const e=this._controler.getPropertyDisiredValue("maxNumberOfFramesInBuffer");if(e&&1===e.length)return e[0]}return this._defaultMaxNumberOfFramesInBuffer}get numberOfFramesInBuffer(){return this._frameQueue.length}set refreshInterval(e){this._refreshInterval=e}get refreshInterval(){if(void 0!==this._refreshInterval)return this._refreshInterval;if(this._controler){const e=this._controler.getPropertyDisiredValue("refreshInterval");if(e&&1===e.length)return e[0]}return this._defaultRefreshInterval}static createInstance(e){return B(this,void 0,void 0,(function*(){let t=new re;("string"==typeof e||e instanceof String)&&(e=JSON.parse(e));for(let i in e)t[i]=e[i];return this._hasEngineResourceLoaded=!0,re.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{re.onWarning&&re.onWarning({id:1,message:"Not using HTTP protocol, the SDK may not work correctly."})}),0):location&&"https:"!==location.protocol&&setTimeout((()=>{re.onWarning&&re.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)),t._drawingLayersManager=new te,t}))}play(e,t,i,r){return B(this,void 0,void 0,(function*(){if(this._video&&this.videoSrc){yield new Promise(((e,t)=>{this._video.onloadedmetadata=()=>B(this,void 0,void 0,(function*(){this._video&&(this._video.onloadedmetadata=null,yield this._video.play(),e())})),"string"==typeof this.videoSrc||this.videoSrc instanceof String?this._video.src=this.videoSrc:this._video.srcObject=this.videoSrc,setTimeout((()=>t(new Error("Failed to play video. Timeout."))),4e3)}));const e={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};this.playCallbackInfo=JSON.parse(JSON.stringify(e));const t=this.mapCameraEvents.get("played");for(let i of t){if(!i)continue;const t=JSON.parse(JSON.stringify(e));setTimeout((()=>i.apply(this,[t])),0)}return this._recordedStates.videoPlaying=!0,e}if(this.singleFrameMode)return r&&r.notTriggerSingleFrameClick||this._clickIptSingleFrameMode(),this.playCallbackInfo={width:0,height:0,deviceId:null},JSON.parse(JSON.stringify(this.playCallbackInfo));if(!this._video)return this.playCallbackInfo=null,null;const n=++this.iPlayRound;let s=null,o=0,a=0;if(this._currentCamera&&(s=this._currentCamera.deviceId),this._video&&(o=this._video.videoWidth,a=this._video.videoHeight),this.promisePlay&&(yield this.promisePlay,nB(this,void 0,void 0,(function*(){var r;try{this._video&&this._video.srcObject&&this.stop(),re._onLog&&re._onLog("DCE: ======before video========");const n=()=>{if(!this._video)throw d&&d.getTracks().forEach((e=>{e.stop()})),this._videoTrack=null,this._currentCamera=null,new Error("'video' is null.")},l=this.getVideoSettings();let h;"boolean"==typeof l.video&&(l.video={});const c=["rear","back","rück","arrière","trasera","trás","traseira","posteriore","后面","後面","背面","后置","後置","背置","задней","الخلفية","후","arka","achterzijde","หลัง","baksidan","bagside","sau","bak","tylny","takakamera","belakang","אחורית","πίσω","spate","hátsó","zadní","darrere","zadná","задня","stražnja","belakang","बैक"],u=()=>{for(let e of this._allCameras){let t=e.label.toLowerCase();if(t&&c.some((e=>-1!=t.indexOf(e)))&&/\b0(\b)?/.test(t)){delete l.video.facingMode,l.video.deviceId={ideal:e.deviceId};break}}l.video.deviceId||-1==["Android","HarmonyOS"].indexOf(W.OS)||(delete l.video.facingMode,l.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})};if(e)delete l.video.facingMode,l.video.deviceId={exact:e};else if(l.video.deviceId);else if(this._lastDeviceId)delete l.video.facingMode,l.video.deviceId={exact:this._lastDeviceId};else if(this.ifSaveLastUsedCamera&&re.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete l.video.facingMode,l.video.deviceId={exact:window.localStorage.getItem("dce_last_camera_id")};const w=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),T=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));w&&T&&(l.video.width=w,l.video.height=T)}else if(this.ifSkipCameraInspection);else if(l.video.facingMode){if("iPhone"!==W.OS&&"Mac"!==W.OS&&(yield this.getAllCameras(!0)),!this._video)return null;let x=l.video.facingMode;x instanceof Array&&x.length&&(x=x[0]),x=x.exact||x.ideal||x,"environment"===x&&(h=!!l.video.facingMode,u())}let d;t&&(l.video.width={ideal:t}),i&&(l.video.height={ideal:i}),re._onLog&&re._onLog("DCE: ======try getUserMedia========");let f,g=[0,500],_=null,p=null;function m(e){return B(this,void 0,void 0,(function*(){for(let t of g){n(),t&&(yield new Promise((e=>setTimeout(e,t)))),n();{const t=e.video.deviceId;p=t?t.exact||t.ideal||t:null}try{re._onLog&&re._onLog("DCE: ask "+JSON.stringify(e)),d=yield navigator.mediaDevices.getUserMedia(e),n();break}catch(e){_=e,re._onLog&&re._onLog("DCE: "+e.message||e)}}}))}if(yield m(l),d||(re._onLog&&re._onLog("DCE: ======try getUserMedia again========"),f=JSON.parse(JSON.stringify(l)),"object"==typeof f.video&&("iPhone"==W.OS?(t>=1280||i>=1280?f.video.width=1280:t>=640||i>=640?f.video.width=640:(t<640||i<640)&&(f.video.width=320),delete f.video.height):h&&!l.video.deviceId?(delete f.video.facingMode,this._allCameras.length&&(f.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})):f.video=!0),re._onLog&&re._onLog("DCE: "+f),yield m(f)),d||(g=[1e3,2e3],yield m(l)),d||(yield m(f)),!d)throw _;const v=()=>{const e=d.getVideoTracks();let t,i;if(e.length&&(t=this._videoTrack=e[0]),this._video&&t){const e=t.getSettings();if(e)for(let r of this._allCameras)if(e.deviceId===r.deviceId){r._checked=!0,r.label=t.label,i=r;break}if(!i&&p)for(let e of this._allCameras)if(p==e.deviceId){t.label&&(e._checked=!0,e.label=t.label),i=e;break}}this._currentCamera=i};if(yield this.getAllCameras(!0),n(),h){v(),u();let A=l.video.deviceId;A&&(A=A.exact||A.ideal||A);let O=null===(r=this._currentCamera)||void 0===r?void 0:r.deviceId;!A||O&&A==O||(d.getTracks().forEach((e=>{e.stop()})),g=[0,500,1e3,2e3],yield m(l))}n();const y=()=>B(this,void 0,void 0,(function*(){re._onLog&&re._onLog("======play video========"),yield new Promise(((e,t)=>{n(),this._video.onloadedmetadata=()=>B(this,void 0,void 0,(function*(){n(),this._video.onloadedmetadata=null,yield this._video.play(),e()})),this._video.srcObject=d,setTimeout((()=>t(new Error("Failed to play video. Timeout."))),4e3)}))}));yield y(),n(),re._onLog&&re._onLog("DCE: ======played video========"),this._bgLoading&&(this._bgLoading.style.animationPlayState="paused");const S=this._video.videoWidth+"x"+this._video.videoHeight;this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",this._video.videoWidth),this._optGotRsl.setAttribute("data-height",this._video.videoHeight),this._optGotRsl.innerText=S,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got")),re._onLog&&re._onLog("DCE: got "+S),v(),n(),this._renderSelCameraInfo();const b={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};b.deviceId&&(this._lastDeviceId=b.deviceId,this.ifSaveLastUsedCamera&&re.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",this._lastDeviceId),l.video.width&&l.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(l.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(l.video.height)))));const C=this.mapCameraEvents.get("played");for(let I of C){if(!I)continue;const E=JSON.parse(JSON.stringify(b));setTimeout((()=>I.apply(this,[E])),0)}if(s&&s!=b.deviceId){const R=this.mapCameraEvents.get("cameraChange");for(let D of R){if(!D)continue;const M=JSON.parse(JSON.stringify(b));setTimeout((()=>D.apply(this,[M])),0)}}if(o&&a&&(o!=b.width||a!=b.height)){this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let P of this._arrScanRegionOverlays)P&&this._updateScanRegionOverlay(P);this._cvsOriginalImage||this._updateDrawingLayersSize();const L=this.mapCameraEvents.get("resolutionChange");for(let F of L){if(!F)continue;const k=JSON.parse(JSON.stringify(b));setTimeout((()=>F.apply(this,[k])),0)}}return this.promisePlay=null,b}catch(j){throw this.promisePlay=null,this._bgLoading&&(this._bgLoading.style.display="none"),"NotFoundError"===j.name&&(DOMException?j=new DOMException("No camera available, please use a device with an accessible camera.",j.name):(j=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),j}})))();const l=yield this.promisePlay;return this.playCallbackInfo=JSON.parse(JSON.stringify(l)),this._recordedStates.videoPlaying=!0,l}))}resume(){return B(this,void 0,void 0,(function*(){this._assertOpen(),yield this.play(),this.ifShowScanRegionLaser&&this.showScanRegionLaser()}))}pause(){this._assertOpen(),this._video&&(this._video.pause(),this._recordedStates.videoPlaying=!1),this.ifShowScanRegionLaser&&this.hideScanRegionLaser()}_bindUI(){if(!this.UIElement)throw new Error("Need to define `UIElement` before opening.");const e=[this.UIElement];for(let t=0;t','','',''].join(""),this._optGotRsl=this._optGotRsl||this._selRsl.options[0])):!this._optGotRsl&&t.classList.contains("dce-opt-gotResolution")?this._optGotRsl=t:!this._btnClose&&t.classList.contains("dce-btn-close")?this._btnClose=t:!this._selMinLtr&&t.classList.contains("dlr-sel-minletter")?(this._selMinLtr=t,this._selMinLtr.options.length||(this._selMinLtr.innerHTML=[this._optGotMinLtr?"":'','','','','','','','','','',''].join(""),this._optGotMinLtr=this._optGotMinLtr||this._selMinLtr.options[0])):!this._optGotMinLtr&&t.classList.contains("dlr-opt-gotMinLtr")&&(this._optGotMinLtr=t);if(this.extraBindings&&this.extraBindings.length)for(let i of this.extraBindings)try{i(t)}catch(e){}}if(!this._video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'");this.singleFrameMode?(this._video&&(this._video.addEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="pointer",this._video.setAttribute("title","Take a photo")),this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none"),this._bgCamera&&(this._bgCamera.style.display="block")):(this._selCam&&(this._selCam.style.display="block",this._selCam.addEventListener("change",this._onCameraSelChange)),this._selRsl&&(this._selRsl.style.display="block",this._selRsl.addEventListener("change",this._onResolutionSelChange)),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._bgLoading&&(this._bgLoading.style.display="block")),this._btnClose&&this._btnClose.addEventListener("click",this._onCloseBtnClick),document.addEventListener("visibilitychange",this._ev_documentHideEvent),window.ResizeObserver?(this._resizeObserver||(this._resizeObserver=new ResizeObserver((e=>{for(let t of e)t.target===this._divVideoContainer&&this._updateLayers()}))),this._divVideoContainer&&this._resizeObserver.observe(this._divVideoContainer)):window.addEventListener("resize",this._updateLayers)}_unbindUI(){this.singleFrameMode?(this._video&&(this._video.removeEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="",this._video.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._bgLoading&&(this._bgLoading.style.display="none"),this._selCam&&this._selCam.removeEventListener("change",this._onCameraSelChange),this._selRsl&&this._selRsl.removeEventListener("change",this._onResolutionSelChange),this._btnClose&&this._btnClose.removeEventListener("click",this._onCloseBtnClick),this.hideScanRegionLaser(),this.hideViewDecorator(),this.hideScanRegionOverlays(),this._drawingLayersManager.setVisible(!1),this._hideOriginalImageCvs(),this._video&&(this._video.onloadedmetadata=null,this._video.remove()),this._divVideoContainer=null,this._video=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._cvsScanRegion&&(this._cvsScanRegion.remove(),this._cvsScanRegion=null),this._singleFrameModeIpt&&(this._singleFrameModeIpt.remove(),this._singleFrameModeIpt=null),this._cvsSingleFrameMode&&(this._cvsSingleFrameMode.remove(),this._cvsSingleFrameMode=null),document.removeEventListener("visibilitychange",this._ev_documentHideEvent),window.ResizeObserver?this._resizeObserver&&this._resizeObserver.disconnect():window.removeEventListener("resize",this._updateLayers)}_assertOpen(){if(!this._bOpen)throw Error("The camera is not open.")}open(e){return B(this,void 0,void 0,(function*(){this.UIElement||(yield this.setUIElement(re.defaultUIElementURL)),this._bindUI(),e&&this.appendAndShowUI();let t=yield this.play();this.bOpen=!0;const i=this.mapCameraEvents.get("cameraOpen");for(let e of i){if(!e)continue;const i=JSON.parse(JSON.stringify(t));setTimeout((()=>e.apply(this,[i])),0)}return t}))}close(e){if(!this._video)return;this.stop(),this._hideOriginalImage(!1),this._unbindUI(),e&&this.hideUI(),this.stopFetchingLoop(),this.bOpen=!1;const t=this.mapCameraEvents.get("cameraClose");for(let e of t){if(!e)continue;const t={width:0,height:0,deviceId:null};setTimeout((()=>e.apply(this,[t])),0)}}stop(){this._video&&this._video.srcObject&&(re._onLog&&re._onLog("DCE: ======stop video========"),this._video.srcObject.getTracks().forEach((e=>{e.stop()})),this._video.srcObject=null,this._videoTrack=null,this._currentCamera=null),this._video&&this.videoSrc&&(re._onLog&&re._onLog("DCE: ======stop existing video========"),this._video.pause(),this._video.currentTime=0),this._bgLoading&&(this._bgLoading.style.animationPlayState=""),this._frameQueue.length=0,this._reusedCvs&&this._reusedCvs.ctx2d&&this._reusedCvs.ctx2d.clearRect(0,0,this._reusedCvs.width,this._reusedCvs.height),this.forceLoseContext()}getAllCameras(e){return B(this,void 0,void 0,(function*(){let t=yield navigator.mediaDevices.enumerateDevices();if(!e&&t&&t.length&&!t[0].deviceId){let e=yield navigator.mediaDevices.getUserMedia({video:!0});t=yield navigator.mediaDevices.enumerateDevices(),e.getTracks().forEach((e=>{e.stop()})),e=null}const i=[],r=[];if(this._allCameras)for(let e of this._allCameras)e._checked&&r.push(e);for(let e=0;e{const i=this._mapCameraResolutions.get(e);if(!i||!i.length)return!1;for(let e of i)if(e[0]===t.width&&e[1]===t.height)return!0;return!1},r=(e,t,i)=>B(this,void 0,void 0,(function*(){const r={video:{deviceId:{exact:e},width:{ideal:t},height:{ideal:i}}};let n=null;try{n=yield navigator.mediaDevices.getUserMedia(r)}catch(e){return null}if(!n)return null;const s=n.getVideoTracks();let o=null;try{const e=s[0].getSettings();o={width:e.width,height:e.height}}catch(e){const t=document.createElement("video");t.srcObject=n,o={width:t.videoWidth,height:t.videoHeight},t.srcObject=null}return s.forEach((e=>{e.stop()})),o}));if(!this._bOpen){const n=this.videoSettings.video.deviceId;if(!n)return null;if(t=n.hasOwnProperty("exact")?this.videoSettings.video.deviceId.exact:n.hasOwnProperty("ideal")?this.videoSettings.video.deviceId.ideal:this.videoSettings.video.deviceId,!t)return null;let s=this._mapCameraResolutions.get(t);if(s&&!e)return this._mapCameraResolutions.get(t);this._mapCameraResolutions.set(t,[]),s=this._mapCameraResolutions.get(t);for(let e of this._predefinedResolutions){const n=yield r(t,e.width,e.height);n&&!i(t,n)&&s.push([n.width,n.height])}return s}if(this._currentCamera){t=this._currentCamera.deviceId;let r=this._mapCameraResolutions.get(t);if(r&&!e)return this._mapCameraResolutions.get(t);this._mapCameraResolutions.set(t,[]),r=this._mapCameraResolutions.get(t);const n=this.getConstraints();for(let e of this._predefinedResolutions){yield this._videoTrack.applyConstraints({width:{ideal:e.width},height:{ideal:e.height}});const n=this._videoTrack.getSettings(),s={width:n.width,height:n.height};i(t,s)||r.push([s.width,s.height])}return yield this._videoTrack.applyConstraints(n),r}return null}))}on(e,t){if(!this.mapCameraEvents.has(e))throw new Error(`Event '${e}' is not exists.`);const i=this.mapCameraEvents.get(e);i.includes(t)||i.push(t)}off(e,t){if(!this.mapCameraEvents.has(e))throw new Error(`Event '${e}' is not exists.`);const i=this.mapCameraEvents.get(e),r=i.indexOf(t);-1!==r&&i.splice(r,1)}offAll(e){if(e){if("string"==typeof e){const t=this.mapCameraEvents.get(e);t&&(t.length=0)}}else for(let e of this.mapCameraEvents.values())e&&(e.length=0)}getVideoSettings(){return JSON.parse(JSON.stringify(this.videoSettings))}updateVideoSettings(e){return this.videoSettings=JSON.parse(JSON.stringify(e)),this._lastDeviceId=null,this._bOpen?this.play():Promise.resolve()}isOpen(){return this._bOpen}getCapabilities(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCapabilities()' is unavailable in singleFrameMode.");return this._videoTrack&&this._videoTrack.getCapabilities?this._videoTrack.getCapabilities():{}}getCameraSettings(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCameraSettings()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getSettings():null}getConstraints(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getConstraints()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getConstraints():null}applyConstraints(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'applyConstraints()' is unavailable in singleFrameMode.");if(!this._videoTrack)throw new Error('"_videoTrack" is null.');if(!this._videoTrack.applyConstraints)throw Error("Not supported.");return yield this._videoTrack.applyConstraints(e)}))}turnOnTorch(){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOnTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!0}]});throw Error("Not supported.")}))}turnOffTorch(){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOffTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!1}]});throw Error("Not supported.")}))}setColorTemperature(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setColorTemperature()' is unavailable in singleFrameMode.");let t=this.getCapabilities().colorTemperature;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{colorTemperature:e}]})}))}setExposureCompensation(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setExposureCompensation()' is unavailable in singleFrameMode.");let t=this.getCapabilities().exposureCompensation;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{exposureCompensation:e}]})}))}setZoom(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setZoom()' is unavailable in singleFrameMode.");let t=this.getCapabilities().zoom;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({advanced:[{zoom:e}]})}))}setFrameRate(e){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFrameRate()' is unavailable in singleFrameMode.");let t=this.getCapabilities().frameRate;if(!t)throw Error("Not supported.");return et.max&&(e=t.max),yield this._videoTrack.applyConstraints({width:{ideal:Math.max(this._video.videoWidth,this._video.videoHeight)},frameRate:e})}))}getFrameRate(){return this.getCameraSettings().frameRate}setFocus(e,t){return B(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFocus()' is unavailable in singleFrameMode.");const i=this.getCapabilities().focusMode,r=this.getCapabilities().focusDistance;if(!i||!i.includes(e)||!r)throw Error("Not supported.");return t?(tr.max&&(t=r.max),yield this._videoTrack.applyConstraints({advanced:[{focusMode:e,focusDistance:t}]})):yield this._videoTrack.applyConstraints({advanced:[{focusMode:e}]})}))}getFocus(){const e=this.getCameraSettings().focusMode;return"continuous"===e?{mode:e}:{mode:e,distance:this.getCameraSettings().focusDistance}}getFrameSize(e,t,i,r){if(!e||!t)return null;let n,s,o,a,l=e,h=t;const c={regionLeft:0,regionTop:0,regionRight:l,regionBottom:h,regionMeasuredByPercentage:!1};i?(i.regionMeasuredByPercentage?(c.regionLeft=i.regionLeft*l/100,c.regionTop=i.regionTop*h/100,c.regionRight=i.regionRight*l/100,c.regionBottom=i.regionBottom*h/100):(c.regionLeft=i.regionLeft,c.regionTop=i.regionTop,c.regionRight=i.regionRight,c.regionBottom=i.regionBottom),n=c.regionLeft,s=c.regionTop,l=Math.round(c.regionRight-c.regionLeft),h=Math.round(c.regionBottom-c.regionTop)):(n=0,s=0);const u=Math.max(l,h);if(r&&r>0&&u>r){const e=r/u;l>h?(o=r,a=Math.round(h*e)):(o=Math.round(l*e),a=r)}else o=l,a=h;return o<=0||a<=0?null:{sx:n,sy:s,sWidth:l,sHeight:h,dWidth:o,dHeight:a}}getFrame(){if(this.singleFrameMode)throw Error("'getFrame()' is unavailable in singleFrameMode.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'getFrame()' is unavailable in singleFrameMode.");return this._getVideoFrame(this._scanRegion)}getImage(){const e=this.getFrame();return e.pixelFormat=e.colorMode,Object.assign(Object.assign({},e),{pixelFormat:e.colorMode})}_getVideoFrame(e,t){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'_getVideoFrame()' is unavailable in singleFrameMode.");const i=Date.now();re._onLog&&re._onLog("DCE: _getVideoFrame() START: "+i);const r=this._video.videoWidth,n=this._video.videoHeight;if(0===r||0===n)return null;const s=this.getFrameSize(r,n,e,this.maxCvsSideLength);if(!s)return null;let o,a;o=r!==s.sWidth||n!==s.sHeight,a=s.sWidth!==s.dWidth||s.sHeight!==s.dHeight;const l=(()=>!(!this._bWebGLSupported||a))(),h={data:null,region:e?JSON.parse(JSON.stringify(e)):null,sx:s.sx,sy:s.sy,width:s.dWidth,height:s.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:o,toCanvas:this._toCanvas,_sWidth:s.sWidth,_sHeight:s.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(this._video,r,n,s,t,{targetColorMode:this.frameColorMode,bUseWebGL:l})}catch(e){if("WebGLError"!==e.name)throw e;re._onLog&&re._onLog("DCE: get WebGLError, try again in canvas."),c=this._getImageData(this._video,r,n,s,t,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return re._onLog&&re._onLog("DCE: _getVideoFrame() END: "+u),h.data=c.data,h.colorMode=c.colorMode,h._bUseWebGL=c._bUseWebGL,h.timeSpent=u-i,h.timeStamp=u,h}_getImageData(e,t,i,r,n,s){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(!t||!i)return null;re._onLog&&re._onLog("DCE: _getImageData(), START: "+Date.now());const{sx:o,sy:a,sWidth:l,sHeight:h,dWidth:c,dHeight:u}=r;let d;if(d=s&&s.targetColorMode?s.targetColorMode.toLowerCase():"rgba",s&&s.bUseWebGL){re._onLog&&re._onLog("DCE: _getImageData() in WebGL."),this._reusedWebGLCvs||(this._reusedWebGLCvs=document.createElement("canvas"));const r=this._reusedWebGLCvs;r.width==t&&r.height==i||(r.width=t,r.height=i,this._reusedWebGLCtx&&this._reusedWebGLCtx.viewport(0,0,t,i));const s=this._reusedWebGLCtx||r.getContext("webgl",{antialias:!1})||r.getContext("experimental-webgl",{antialias:!1});if(!s){re._onLog&&re._onLog("DCE: WebGL unavailable."),this._reusedWebGLCtx=null,this._bWebGLSupported=!1;const e=new Error("WebGL error: unable to initialize WebGL. Your browser or machine may not support it.");throw e.name="WebGLError",e}if(s.enable(s.SCISSOR_TEST),s.scissor(o,a,c,u),!this._reusedWebGLCtx||d!==this.currentFSColorMode){this._reusedWebGLCtx=s;const e=e=>{const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,1,1,-1,1]),e.STATIC_DRAW);const i=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,indices:i}},t=e=>{const t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t},i=(e,t,i)=>{const n=r(e,e.VERTEX_SHADER,t),s=r(e,e.FRAGMENT_SHADER,i),o=e.createProgram();return e.attachShader(o,n),e.attachShader(o,s),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?o:(alert("Unable to initialize the shader program: "+e.getProgramInfoLog(o)),null)},r=(e,t,i)=>{const r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(alert("An error occurred compiling the shaders: "+e.getShaderInfoLog(r)),e.deleteShader(r),null)},n="\n attribute mediump vec2 aVertexPosition;\n varying mediump vec2 vDirection;\n \n void main( void )\n {\n gl_Position = vec4(aVertexPosition, 1.0, 1.0) * 2.0;\n vDirection = aVertexPosition;\n }\n ";let o;o=["rgba","rbga","grba","gbra","brga","bgra"].includes(d)?d.slice(0,3):"rgb";const a=i(s,n,`\n precision mediump float;\n\n varying mediump vec2 vDirection;\n uniform sampler2D uSampler;\n uniform lowp float uColorFactor;\n \n void main(void)\n {\n vec4 sample = texture2D(uSampler, vec2(vDirection.x * 0.5 + 0.5, vDirection.y * 0.5 + 0.5));\n lowp float grey = 0.21 * sample.r + 0.71 * sample.g + 0.07 * sample.b;\n gl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n }\n `);this._webGLProgramInfo={program:a,attribLocations:{vertexPosition:s.getAttribLocation(a,"aVertexPosition")},uniformLocations:{uSampler:s.getUniformLocation(a,"uSampler"),uColorFactor:s.getUniformLocation(a,"uColorFactor")}},this._webGLBuffers=e(s),this._webGLTexture=t(s),this.currentFSColorMode=d}const l=(e,t,i)=>{const r=e.RGBA,n=e.RGBA,s=e.UNSIGNED_BYTE;e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,r,n,s,i)},h=(e,t,i,r)=>{e.clearColor(0,0,0,1),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i.indices),e.useProgram(t.program);{const r=2,n=e.FLOAT,s=!1,o=0,a=0;e.bindBuffer(e.ARRAY_BUFFER,i.position),e.vertexAttribPointer(t.attribLocations.vertexPosition,r,n,s,o,a),e.enableVertexAttribArray(t.attribLocations.vertexPosition)}e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,r),e.uniform1i(t.uniformLocations.uSampler,0),e.uniform1f(t.uniformLocations.uColorFactor,"grey"===d||"grey32"===d?1:0);const n=e.UNSIGNED_SHORT;e.drawElements(e.TRIANGLES,6,n,0)};let f;if(l(s,this._webGLTexture,e),h(s,this._webGLProgramInfo,this._webGLBuffers,this._webGLTexture),n){if(n.length=this.croppingRegions.length||this._croppingRegionIndex<0)throw new Error("The 'croppingRegionIndex' is out of bounds.");e=this.croppingRegions[this._croppingRegionIndex],this.bIncreaseRegionIndexAuto&&++this._croppingRegionIndex>=this.croppingRegions.length&&(this._croppingRegionIndex=0)}return e}_fetchingLoop(e){if(this.isDisposed)return;if(!this._bOpen||!this.isFetchingLoopStarted())return void this.stopFetchingLoop();const t=()=>{re._onLog&&re._onLog("DCE: start fetching a frame: "+Date.now());const e=this.getCurrentRegion();let t=this._getVideoFrame(e);if(!t)return void(re._onLog&&re._onLog("DCE: get a invalid frame, abandon it: "+Date.now()));for(;this._frameQueue&&this._frameQueue.length>=this.maxNumberOfFramesInBuffer;)this._frameQueue.shift();this._frameQueue.push(t),re._onLog&&re._onLog("DCE: finish fetching a frame: "+Date.now());const i=this.mapCameraEvents.get("frameAddedToBuffer");for(let e of i)e&&setTimeout(e.bind(this),0)},i=()=>{this.isDisposed||(this._frameLoopTimeoutId2&&clearTimeout(this._frameLoopTimeoutId2),this.refreshInterval<=0||(this._frameLoopTimeoutId2=setTimeout((()=>{this.isDisposed||(this._bOpen&&this.isFetchingLoopStarted()?(re._onLog&&re._onLog("DCE: second timeout executes: "+Date.now()),t(),i()):this.stopFetchingLoop())}),this.refreshInterval)))};e&&(this._frameQueue.length0&&i()):this.refreshInterval>0?(t(),i()):0===this.refreshInterval?t():this.refreshInterval),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameLoopTimeoutId=setTimeout((()=>{this.isDisposed||this._fetchingLoop(!0)}),this.loopInterval)}startFetchingLoop(){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw Error("'startFetchingLoop()' is unavailable in singleFrameMode.");this.isFetchingLoopStarted()||(this._bFetchingLoopStarted=!0,this._recordedStates.fetchingLoopStart=!0,re._onLog&&re._onLog("start fetching loop: "+Date.now()),this._fetchingLoop(!0))}isFetchingLoopStarted(){return this._bFetchingLoopStarted}stopFetchingLoop(){this._bFetchingLoopStarted&&(re._onLog&&re._onLog("stop fetching loop: "+Date.now()),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameQueue.length=0,this._bFetchingLoopStarted=!1,this._recordedStates.fetchingLoopStart=!1)}getFrameFromBuffer(e){return this._frameQueue&&this._frameQueue.length?e?e0?i-1:r,Z),actionName:"modifyPolygon",pointIndex:i}),e}),{})}_extendSet(e,t){if("vertices"===e){const e=this._fabricObject;e.points=t;const i=e.points.length-1;return e.controls=e.points.reduce((function(e,t,r){return e["p"+r]=new k.Control({positionHandler:q,actionHandler:$(r>0?r-1:i,Z),actionName:"modifyPolygon",pointIndex:r}),e}),{}),e._setPositionDimensions({}),!0}}_extendGet(e){if("vertices"===e){const e=[],t=this._fabricObject;if(t.selectable)for(let i in t.oCoords)e.push({x:t.oCoords[i].x,y:t.oCoords[i].y});else for(let i in t.getCoords())e.push({x:t.getCoords()[i].x,y:t.getCoords()[i].y});return e}}},DT_Rect:class extends J{constructor(e,t,i,r,n){super(new k.Rect({left:e,top:t,width:i,height:r}),n)}},DT_Image:class extends J{constructor(e,t,i,r){super(new k.Image(e,{left:t,top:i}),r),this.image=e}_extendSet(e,t){if("image"===e){if(t instanceof HTMLImageElement)return this._fabricObject.setElement(t),this.image=t,!0;if(t instanceof HTMLCanvasElement){const e=new Image;return e.src=t.toDataURL(),this._fabricObject.setElement(e),this.image=t,!0}throw new Error("Unsupported value.")}}_extendGet(e){if("image"===e)return this.image}},DT_Text:class extends J{constructor(e,t,i,r){super(new k.IText(e,{left:t,top:i}),r),this._mediaType="text"}},DT_Line:class extends J{constructor(e,t,i){super(new k.Line([e.x,e.y,t.x,t.y]),i)}_extendSet(e,t){return"startPoint"===e?(this._fabricObject.set("x1",t.x),this._fabricObject.set("y1",t.y),!0):"endPoint"===e?(this._fabricObject.set("x2",t.x),this._fabricObject.set("y2",t.y),!0):void 0}_extendGet(e){return"startPoint"===e?{x:this._fabricObject.get("x1"),y:this._fabricObject.get("y1")}:"endPoint"===e?{x:this._fabricObject.get("x2"),y:this._fabricObject.get("y2")}:void 0}},DT_Group:class extends J{constructor(e){super(new k.Group(e.map((e=>e._getFabricObject()))));const t=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const e=this.mapEvents.get("select");for(let t of e)t&&t.apply(this);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e.onSelect&&e.onSelect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const e=t.get("deselect");for(let t of e)t&&t.apply(this);const i=this._fabricObject._objects;for(let e of i)setTimeout((()=>{e.onDeselect&&e.onDeselect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)}}getChildItems(){return this._fabricObject._objects.map((e=>e.getDrawingItem()))}addChildItem(e){if(!e||!e.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,e,"add"):this._fabricObject.addWithUpdate(e._getFabricObject())}removeChildItem(e){e&&e.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,e,"remove"):this._fabricObject.removeWithUpdate(e._getFabricObject()))}}};class se extends D{constructor(){super(),this.bFilterRegionInJs=!0,this._onCameraSelChange=()=>{},this._onResolutionSelChange=()=>{},this._onCloseBtnClick=()=>{},this._onPlayed=null}static get version(){return this._version+`(DCE ${re.getVersion()})`}static _fireHTTPSWarnning(){se.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{se.onWarning&&se.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}_fireResolutionWarning(){if(!this.singleFrameMode&&this.onWarning){const e=this.dce.getConstraints();e&&e.width<1280&&e.height<720&&setTimeout((()=>{this.onWarning&&this.onWarning({id:3,message:"Camera resolution too low, please use a higher resolution (720P or better)."})}),0)}}getUIElement(){return this.dce.getUIElement()}async setUIElement(e){await this.dce.setUIElement(e)}get singleFrameMode(){return this.dce.singleFrameMode}set singleFrameMode(e){this.dce.singleFrameMode=e,e&&(this.dce.ifShowScanRegionLaser=!1,(async()=>{let e=await this.getScanSettings();e.oneDTrustFrameCount=1,await this.updateScanSettings(e)})())}get onUnduplicatedRead(){return this.onUniqueRead}set onUnduplicatedRead(e){this.onUniqueRead=e}get video(){return this.dce&&this.dce.video}set videoSrc(e){this.dce&&(this.dce.videoSrc=e)}get videoSrc(){return this.dce&&this.dce.videoSrc}_assertOpen(){if(!this.dce.isOpen())throw Error("The scanner is not open.")}set regionMaskFillStyle(e){this.dce.setScanRegionMaskStyle({fillStyle:e})}get regionMaskFillStyle(){return this.dce.regionMaskFillStyle}set regionMaskStrokeStyle(e){this.dce.setScanRegionMaskStyle({strokeStyle:e})}get regionMaskStrokeStyle(){return this.dce.regionMaskStrokeStyle}set regionMaskLineWidth(e){this.dce.setScanRegionMaskStyle({lineWidth:e})}get regionMaskLineWidth(){return this.dce.regionMaskLineWidth}set region(e){this._region=e,this.dce&&(e?e instanceof Array||this.dce.setScanRegion(e):this.dce.setScanRegion(null)),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e,this.dce.frameColorMode=e?"rgba":"grey"}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}async createDCEInstance(){this.dce||(D._onLog&&D._onLog("createDCEInstance()"),re.defaultUIElementURL=null,this.dce=await re.createInstance(),this.dce.refreshInterval=200,this.dce.frameColorMode="grey",this.dce.maxCvsSideLength=this.maxCvsSideLength,this._drawingItemNamespace=ne,"iPhone"!==D.browserInfo.OS&&"Android"!==D.browserInfo.OS&&"HarmonyOS"!==D.browserInfo.OS&&this.dce.setResolution(1920,1080),this.dce.on("cameraChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("resolutionChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("cameraClose",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1})),this.dce.on("singleFrameAcquired",(async e=>{if(!e)return;if(!e.data)return;let t;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,colorMode:e.colorMode,data:new Uint8Array(e.data),toCanvas:e.toCanvas});const{data:i,sx:r,sy:n,width:s,height:o,colorMode:a,timeStamp:l,_sWidth:h,_sHeight:c}=e,u={timeStamp:l};if("grey"===a)t=await this._decodeBuffer_Uint8Array(i,s,o,s,_.IPF_GrayScaled,u);else if("rgba"===a)t=await this._decodeBuffer_Uint8Array(i,s,o,4*s,_.IPF_ABGR_8888,u);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported.`);t=await this._decodeBuffer_Uint8Array(i,s,o,4*s,_.IPF_ARGB_8888,u)}if(await this.clearMapDecodeRecord(),D.recalculateResultLocation(t,r,n,h,c,s,o),this._drawResults(t),this.onFrameRead&&this.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onFrameRead(e)}if(this.onUniqueRead&&this.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e))})))}set maxCvsSideLength(e){this._maxCvsSideLength=e,this.dce.maxCvsSideLength=e}get maxCvsSideLength(){return this._maxCvsSideLength}static async createInstance(e){let t=new se;t._instanceID=await se.createInstanceInWorker(!0),await t.createDCEInstance(),"string"==typeof e&&(e=JSON.parse(e));for(let i in e)t[i]=e[i];return await t.dce.setUIElement(se.defaultUIElementURL),t.singleFrameMode&&console.warn("The `navigator.mediaDevices.getUserMedia` is unavailable. automatically change to `singleFrameMode`."),se._fireHTTPSWarnning(),t.singleFrameMode||await t.updateRuntimeSettings("single"),t}async decodeCurrentFrame(e){this._assertOpen();let t=null;e&&e.region&&(t=e.region);const i=this.dce._getVideoFrame(t);return this._decode_DCEFrame(i)}static isRegionNormalPreset(e){return 0==e.regionLeft&&0==e.regionTop&&0==e.regionRight&&0==e.regionBottom&&0==e.regionMeasuredByPercentage}async updateRuntimeSettings(e){let t;if("string"==typeof e)if("speed"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region)}else if("balance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region),t.deblurLevel=3,t.expectedBarcodesCount=512,t.localizationModes=[2,16,0,0,0,0,0,0],t.timeout=1e5}else if("coverage"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region),t.deblurLevel=5,t.expectedBarcodesCount=512,t.scaleDownThreshold=1e5,t.localizationModes=[2,16,4,8,0,0,0,0],t.timeout=1e5}else if("single"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,se.isRegionNormalPreset(e.region)?t.region=null:t.region=e.region,t.expectedBarcodesCount=1,t.localizationModes=[16,2,0,0,0,0,0,0],t.barcodeZoneMinDistanceToImageBorders=0}else if("dense"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region),t.deblurLevel=7,t.scaleDownThreshold=1e5,t.localizationModes=[2,8,0,0,0,0,0,0],t.minResultConfidence=0,t.timeout=1e5}else if("distance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,e.region&&(t.region=e.region),t.scaleDownThreshold=1e5,t.localizationModes=[2,8,0,0,0,0,0,0],t.timeout=1e5}else t=JSON.parse(e);else{if("object"!=typeof e)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(t=JSON.parse(JSON.stringify(e)),t.region instanceof Array){let i=e.region;[i.regionLeft,i.regionTop,i.regionLeft,i.regionBottom,i.regionMeasuredByPercentage].some((e=>void 0!==e))&&(t.region={regionLeft:i.regionLeft||0,regionTop:i.regionTop||0,regionRight:i.regionRight||0,regionBottom:i.regionBottom||0,regionMeasuredByPercentage:i.regionMeasuredByPercentage||0})}}if(!D._bUseFullFeature){if(0!=(t.barcodeFormatIds&~(v.BF_ONED|v.BF_QR_CODE|v.BF_PDF417|v.BF_DATAMATRIX))||0!=t.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=t.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}{let e=t.region;if(this.bFilterRegionInJs?this.userDefinedRegion=JSON.parse(JSON.stringify(e)):this.userDefinedRegion=null,e instanceof Array)if(e.length){for(let t=0;t{let r=D._nextTaskID++;D._taskCallbackMap.set(r,(t=>{if(t.success){try{this._handleRetJsonString(t.updateReturn)}catch(e){i(e)}return e()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),D._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(t)}})})),"single"==e&&(await this.setModeArgument("BinarizationModes",0,"EnableFillBinaryVacancy","0"),await this.setModeArgument("LocalizationModes",0,"ScanDirection","2"),await this.setModeArgument("BinarizationModes",0,"BlockSizeX","71"),await this.setModeArgument("BinarizationModes",0,"BlockSizeY","71"))}_bindUI(){if(!this.getUIElement())throw new Error("Need to define `UIElement` before opening.");if(this.dce._bindUI(),!this.dce.video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'")}_unbindUI(){this.dce._unbindUI()}set onPlayed(e){this.dce.off("played",this._onPlayed),this._onPlayed=e,this.dce.on("played",this._onPlayed)}get onPlayed(){return this._onPlayed}async getAllCameras(){return this.dce.getAllCameras()}async getCurrentCamera(){return this.dce.getSelectedCamera()}async setCurrentCamera(e){const t=await this.dce.selectCamera(e);return this._fireResolutionWarning(),t}getResolution(){return this.dce.getResolution()}async setResolution(e,t){const i=await this.dce.setResolution(e,t);return this._fireResolutionWarning(),i}getVideoSettings(){return this.dce.getVideoSettings()}updateVideoSettings(e){return this.dce.updateVideoSettings(e)}isOpen(){return this.dce&&this.dce.isOpen()}setVideoFit(e){return this.dce&&this.dce.setVideoFit(e)}set ifShowScanRegionMask(e){this.dce&&(this.dce.ifShowScanRegionMask=e)}get ifShowScanRegionMask(){return this.dce&&this.dce.ifShowScanRegionMask}set ifSaveLastUsedCamera(e){this.dce&&(this.dce.ifSaveLastUsedCamera=e)}get ifSaveLastUsedCamera(){return this.dce&&this.dce.ifSaveLastUsedCamera}set ifSkipCameraInspection(e){this.dce&&(this.dce.ifSkipCameraInspection=e)}get ifSkipCameraInspection(){return this.dce&&this.dce.ifSkipCameraInspection}stop(){this._drawResults(null),this.dce.stop(),this.dce.ifShowScanRegionLaser=!1,this.dce.hideViewDecorator(),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}pause(){this.dce.pause()}async play(e,t,i){this.dce.ifShowScanRegionLaser=!0;const r=await this.dce.play(e,t,i);return this._fireResolutionWarning(),r}pauseScan(e){this._assertOpen(),e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce.ifShowScanRegionLaser=!1,this.dce.stopFetchingLoop()}resumeScan(){this._assertOpen(),this._bPauseScan=!1,this.dce.ifShowScanRegionLaser=!0}getCapabilities(){return this.dce.getCapabilities()}getCameraSettings(){return this.dce.getCameraSettings()}getConstraints(){return this.dce.getConstraints()}async applyConstraints(e){return this.dce.applyConstraints(e)}async turnOnTorch(){return this.dce.turnOnTorch()}async turnOffTorch(){return this.dce.turnOffTorch()}async setColorTemperature(e){return this.dce.setColorTemperature(e)}async setExposureCompensation(e){return this.dce.setExposureCompensation(e)}async setZoom(e){return this.dce.setZoom(e)}async setFrameRate(e){return this.dce.setFrameRate(e)}getFrameRate(){return this.dce.getFrameRate()}async setFocus(e,t){return this.dce.setFocus(e,t)}getFocus(){return this.dce.getFocus()}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this.dce.stopFetchingLoop(),void this._drawResults(null);if(!this.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce.video||this.dce.video.paused||this._bPauseScan)return D._onLog&&D._onLog("Video or scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));D._onLog&&D._onLog("======= once read ======="),D._onLog&&(this._timeStartDecode=Date.now());const e=this._getVideoFrame();if(!e)return this._drawResults(null),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{e._bUseWebGL||"grey"!==e.colorMode||(this.dce.frameColorMode="rgba");let t=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,colorMode:e.colorMode,data:new Uint8Array(e.data),toCanvas:e.toCanvas});const{data:i,sx:r,sy:n,width:s,height:o,colorMode:a,timeStamp:l,_sWidth:h,_sHeight:c}=e,u={timeStamp:l};if("grey"===a)t=await this._decodeBuffer_Uint8Array(i,s,o,s,_.IPF_GrayScaled,u);else if("rgba"===a)t=await this._decodeBuffer_Uint8Array(i,s,o,4*s,_.IPF_ABGR_8888,u);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported.`);t=await this._decodeBuffer_Uint8Array(i,s,o,4*s,_.IPF_ARGB_8888,u)}return D.recalculateResultLocation(t,r,n,h,c,s,o),t})().then((e=>{if(D._onLog&&D._onLog(e),this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost,i=this._indexCurrentDecodingFrame;const r=()=>{let r=0;if(this.region instanceof Array){let n=0,s=0;n=i+1>=this.region.length?0:i+1,s=n+1>=this.region.length?0:n+1,r=e[n]&&e[n].length&&t[s]&&t[s].length?Math.min(...e[n])-Math.max(...t[s]):0}else if(t&&t.length){let i=Math.min(...e),n=Math.max(...t);i&&n&&(r=i-n)}else r=0;return r>0?r:0};(()=>{if(this.region instanceof Array){for(e[i]&&e[i]instanceof Array||(e[i]=[]);e[i].length>=5;)e[i].shift();e[i].push(this._lastInnerDecodeDuration)}else{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)}})(),this._intervalGetVideoFrame=r()+this.intervalTime}if(this.isOpen()&&this.dce.video&&!this.dce.video.paused&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of e)if(0==i.resultState){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of e)if(0==i.resultState){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onFrameRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultState&&1!=e.resultState||this.onFrameRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultState&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t));this._drawResults(e)}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce.stopFetchingLoop(),D._onLog&&D._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){let t=this.dce.isFetchingLoopStarted();if(this.dce.loopInterval=this._intervalGetVideoFrame,t||this.dce.startFetchingLoop(),!this.dce.numberOfFramesInBuffer)return this.dce.loopInterval=0,null;e=this.dce.getFrameFromBuffer();const i=e=>{if(!e)return;let t=e.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(t)};i(e)}else this.dce.stopFetchingLoop(),e=this.dce.getFrame();return e}async open(){this._bindUI();const e=await this.dce.open();return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}async openVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const e=await this.dce.open();return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}close(){this.dce.close(),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}async show(){this._bindUI();const e=await this.dce.open(!0);return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}async showVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const e=await this.dce.open(!0);return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),e}hide(){this.dce.close(!0),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}destroyContext(){this.close(),this.bDestroyed||super.destroyContext()}}var oe,ae,le,he,ce,ue,de,fe,ge,_e,pe,me,ve,ye,Se,be,Ce,we,Te,xe,Ae,Oe,Ie,Ee,Re,De,Me;!function(e){e[e.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",e[e.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",e[e.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",e[e.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",e[e.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",e[e.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",e[e.BICM_SKIP=0]="BICM_SKIP",e[e.BICM_REV=2147483648]="BICM_REV"}(oe||(oe={})),function(e){e[e.BCM_AUTO=1]="BCM_AUTO",e[e.BCM_GENERAL=2]="BCM_GENERAL",e[e.BCM_SKIP=0]="BCM_SKIP",e[e.BCM_REV=2147483648]="BCM_REV"}(ae||(ae={})),function(e){e[e.BF2_NULL=0]="BF2_NULL",e[e.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",e[e.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",e[e.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",e[e.BF2_POSTNET=2097152]="BF2_POSTNET",e[e.BF2_PLANET=4194304]="BF2_PLANET",e[e.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",e[e.BF2_RM4SCC=16777216]="BF2_RM4SCC",e[e.BF2_DOTCODE=2]="BF2_DOTCODE",e[e.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",e[e.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",e[e.BF2_PHARMACODE=12]="BF2_PHARMACODE"}(le||(le={})),function(e){e[e.BM_AUTO=1]="BM_AUTO",e[e.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",e[e.BM_SKIP=0]="BM_SKIP",e[e.BM_THRESHOLD=4]="BM_THRESHOLD",e[e.BM_REV=2147483648]="BM_REV"}(he||(he={})),function(e){e[e.ECCM_CONTRAST=1]="ECCM_CONTRAST"}(ce||(ce={})),function(e){e[e.CFM_GENERAL=1]="CFM_GENERAL"}(ue||(ue={})),function(e){e[e.CCM_AUTO=1]="CCM_AUTO",e[e.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",e[e.CCM_SKIP=0]="CCM_SKIP",e[e.CCM_REV=2147483648]="CCM_REV"}(de||(de={})),function(e){e[e.CICM_GENERAL=1]="CICM_GENERAL",e[e.CICM_SKIP=0]="CICM_SKIP",e[e.CICM_REV=2147483648]="CICM_REV"}(fe||(fe={})),function(e){e[e.CM_IGNORE=1]="CM_IGNORE",e[e.CM_OVERWRITE=2]="CM_OVERWRITE"}(ge||(ge={})),function(e){e[e.DM_SKIP=0]="DM_SKIP",e[e.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",e[e.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",e[e.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",e[e.DM_SMOOTHING=8]="DM_SMOOTHING",e[e.DM_MORPHING=16]="DM_MORPHING",e[e.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",e[e.DM_SHARPENING=64]="DM_SHARPENING",e[e.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",e[e.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING"}(_e||(_e={})),function(e){e[e.DRM_AUTO=1]="DRM_AUTO",e[e.DRM_GENERAL=2]="DRM_GENERAL",e[e.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",e[e.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",e[e.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",e[e.DRM_SKIP=0]="DRM_SKIP",e[e.DRM_REV=2147483648]="DRM_REV"}(pe||(pe={})),function(e){e[e.DPMCRM_AUTO=1]="DPMCRM_AUTO",e[e.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",e[e.DPMCRM_SKIP=0]="DPMCRM_SKIP",e[e.DPMCRM_REV=2147483648]="DPMCRM_REV"}(me||(me={})),function(e){e[e.GTM_INVERTED=1]="GTM_INVERTED",e[e.GTM_ORIGINAL=2]="GTM_ORIGINAL",e[e.GTM_SKIP=0]="GTM_SKIP",e[e.GTM_REV=2147483648]="GTM_REV"}(ve||(ve={})),function(e){e[e.IPM_AUTO=1]="IPM_AUTO",e[e.IPM_GENERAL=2]="IPM_GENERAL",e[e.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",e[e.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",e[e.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",e[e.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",e[e.IPM_SKIP=0]="IPM_SKIP",e[e.IPM_REV=2147483648]="IPM_REV"}(ye||(ye={})),function(e){e[e.IRSM_MEMORY=1]="IRSM_MEMORY",e[e.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",e[e.IRSM_BOTH=4]="IRSM_BOTH"}(Se||(Se={})),function(e){e[e.IRT_NO_RESULT=0]="IRT_NO_RESULT",e[e.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",e[e.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",e[e.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",e[e.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",e[e.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",e[e.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",e[e.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",e[e.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",e[e.IRT_CONTOUR=256]="IRT_CONTOUR",e[e.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",e[e.IRT_FORM=1024]="IRT_FORM",e[e.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",e[e.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",e[e.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL"}(be||(be={})),function(e){e[e.LM_SKIP=0]="LM_SKIP",e[e.LM_AUTO=1]="LM_AUTO",e[e.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",e[e.LM_LINES=8]="LM_LINES",e[e.LM_STATISTICS=4]="LM_STATISTICS",e[e.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",e[e.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",e[e.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",e[e.LM_CENTRE=128]="LM_CENTRE",e[e.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",e[e.LM_REV=2147483648]="LM_REV"}(Ce||(Ce={})),function(e){e[e.PDFRM_RASTER=1]="PDFRM_RASTER",e[e.PDFRM_AUTO=2]="PDFRM_AUTO",e[e.PDFRM_VECTOR=4]="PDFRM_VECTOR",e[e.PDFRM_REV=2147483648]="PDFRM_REV"}(we||(we={})),function(e){e[e.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",e[e.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",e[e.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",e[e.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(Te||(Te={})),function(e){e[e.RPM_AUTO=1]="RPM_AUTO",e[e.RPM_GENERAL=2]="RPM_GENERAL",e[e.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",e[e.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",e[e.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",e[e.RPM_SKIP=0]="RPM_SKIP",e[e.RPM_REV=2147483648]="RPM_REV"}(xe||(xe={})),function(e){e[e.RCT_PIXEL=1]="RCT_PIXEL",e[e.RCT_PERCENTAGE=2]="RCT_PERCENTAGE"}(Ae||(Ae={})),function(e){e[e.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",e[e.RT_RAW_TEXT=1]="RT_RAW_TEXT",e[e.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",e[e.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT"}(Oe||(Oe={})),function(e){e[e.SUM_AUTO=1]="SUM_AUTO",e[e.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",e[e.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",e[e.SUM_SKIP=0]="SUM_SKIP",e[e.SUM_REV=2147483648]="SUM_REV"}(Ie||(Ie={})),function(e){e[e.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",e[e.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",e[e.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",e[e.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",e[e.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",e[e.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED"}(Ee||(Ee={})),function(e){e[e.TFM_AUTO=1]="TFM_AUTO",e[e.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",e[e.TFM_SKIP=0]="TFM_SKIP",e[e.TFM_REV=2147483648]="TFM_REV"}(Re||(Re={})),function(e){e[e.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",e[e.TROM_POSITION=2]="TROM_POSITION",e[e.TROM_FORMAT=4]="TROM_FORMAT",e[e.TROM_SKIP=0]="TROM_SKIP",e[e.TROM_REV=2147483648]="TROM_REV"}(De||(De={})),function(e){e[e.TDM_AUTO=1]="TDM_AUTO",e[e.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",e[e.TDM_SKIP=0]="TDM_SKIP",e[e.TDM_REV=2147483648]="TDM_REV"}(Me||(Me={}));export{D as BarcodeReader,se as BarcodeScanner,oe as EnumBarcodeColourMode,ae as EnumBarcodeComplementMode,v as EnumBarcodeFormat,le as EnumBarcodeFormat_2,he as EnumBinarizationMode,ce as EnumClarityCalculationMethod,ue as EnumClarityFilterMode,de as EnumColourClusteringMode,fe as EnumColourConversionMode,ge as EnumConflictMode,me as EnumDPMCodeReadingMode,_e as EnumDeblurMode,pe as EnumDeformationResistingMode,p as EnumErrorCode,ve as EnumGrayscaleTransformationMode,m as EnumIMResultDataType,_ as EnumImagePixelFormat,ye as EnumImagePreprocessingMode,Se as EnumIntermediateResultSavingMode,be as EnumIntermediateResultType,Ce as EnumLocalizationMode,we as EnumPDFReadingMode,Te as EnumQRCodeErrorCorrectionLevel,xe as EnumRegionPredetectionMode,Ae as EnumResultCoordinateType,Oe as EnumResultType,Ie as EnumScaleUpMode,Ee as EnumTerminatePhase,Re as EnumTextFilterMode,De as EnumTextResultOrderMode,Me as EnumTextureDetectionMode}; diff --git a/dist/dbr.pure.esm.js b/dist/dbr.pure.esm.js index fad60b8..e8d8a37 100644 --- a/dist/dbr.pure.esm.js +++ b/dist/dbr.pure.esm.js @@ -4,18 +4,18 @@ * @website http://www.dynamsoft.com * @copyright Copyright 2022, Dynamsoft Corporation * @author Dynamsoft - * @version 9.2.11 (js 20220727) + * @version 9.2.12 (js 20220727) * @fileoverview Dynamsoft JavaScript Library for Barcode Reader * More info on DBR JS: https://www.dynamsoft.com/barcode-reader/sdk-javascript/ */ -import{Howl as t}from"dm-howler";const e="undefined"==typeof self;let i,r,n,s,o;if("undefined"!=typeof navigator&&(i=navigator,r=i.userAgent,n=i.platform,s=i.mediaDevices),!e){const t={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(r)||this.searchVersion(i.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=r.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(t){for(let e=0;e{let t=!1;if(l)try{(await s.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===o.browser&&o.version>66||"Safari"===o.browser&&o.version>13||"OPR"===o.browser&&o.version>43||"Edge"===o.browser&&o.version;const u=(()=>{if(!e&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"})(),d=" is not allowed to change after `createInstance` or `loadWasm` is called.",f=!e&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",g=!e&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",_=t=>{if(null==t)t=[];else{t=t instanceof Array?[...t]:[t];for(let i=0;it&&"object"==typeof t&&"function"==typeof t.then;const C="iPhone"==o.OS||"Android"==o.OS||"HarmonyOS"==o.OS?2048:4096;class b{constructor(){this._instanceID=void 0,this._ifSaveOriginalImageInACanvas=!1,this.oriCanvas=null,this.oriCanvasData=null,this.canvas=null,this.bFilterRegionInJs=!1,this._region=null,this._timeStartDecode=null,this._timeEnterInnerDBR=null,this._timeGetMessage=null,this.decodeRecords={},this.bDestroyed=!1,this._lastErrorCode=0,this._lastErrorString="",this._lastInnerDecodeDuration=0,this.intervalTime=0,this._intervalGetVideoFrame=0,this.array_getFrameTimeCost=[],this.array_decodeFrameTimeCost=[],this._indexCurrentDecodingFrame=0,this._bPauseScan=!1,this._intervalDetectVideoPause=1e3,this._soundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",this.beepSound=new t({src:["data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"],onplayerror:(t,e)=>{console.warn(`Sound '${t}' playback failure: ${e}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=C,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(t){((t,e)=>{const i=t;if(!i._pLoad.isEmpty)throw new Error("`license`"+d);i._license=e})(b,t)}static get productKeys(){return this._license}static set productKeys(t){b.license=t}static get handshakeCode(){return this._license}static set handshakeCode(t){b.license=t}static get organizationID(){return this._license}static set organizationID(t){b.license=t}static set sessionPassword(t){((t,e)=>{const i=t;if(!i._pLoad.isEmpty)throw new Error("`sessionPassword`"+d);i._sessionPassword=e})(b,t)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:a,worker:h,getUserMedia:l,camera:await c(),browser:o.browser,version:o.version,OS:o.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(t){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");b._engineResourcePath=(t=>{if(null==t&&(t="./"),!e){let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(t)}static get licenseServer(){return this._licenseServer}static set licenseServer(t){((t,e)=>{const i=t;if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+d);i._licenseServer=_(e)})(b,t)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(t){((t,e)=>{const i=t;if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+d);i._deviceFriendlyName=e||""})(b,t)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(t){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");b.__bUseFullFeature=t}static isImageSource(t){return!(!t||"object"!=typeof t||Array.isArray(t))&&"getImage"in t}static isDSImage(t){return!(!t||"object"!=typeof t||Array.isArray(t))&&("data"in t&&("width"in t&&("height"in t&&"pixelFormat"in t)))}static isDCEFrame(t){return!(!t||"object"!=typeof t||Array.isArray(t))&&("data"in t&&("region"in t&&("sx"in t&&("sy"in t&&("width"in t&&("height"in t&&("colorMode"in t&&("timeSpent"in t&&("timeStamp"in t&&("isCropped"in t&&("toCanvas"in t&&("_sWidth"in t&&("_sHeight"in t&&"_bUseWebGL"in t)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(t){this._ifSaveOriginalImageInACanvas=t}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(t){this._region=t,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var t;return null===(t=b._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",b.engineResourcePath)}static set defaultUIElementURL(t){b._defaultUIElementURL=t}static _fireHTTPSWarnning(){b.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{b.onWarning&&b.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new t({src:[this._soundSource],onplayerror:(t,e)=>{console.warn(`Sound '${t}' playback failure: ${e}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(t){this.bPlaySoundOnSuccessfulRead="never"!==t&&t}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(t){this.bVibrateOnSuccessfulRead="never"!==t&&t}set dce(t){this._dce=t}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(t){this._maxCvsSideLength=t,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",t)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;b._onLog&&b._onLog("_registerDCEControler()");const t=this.dce;this._dceControler=t._createControler();const e=this._dceControler;e.register(this),e.setDisiredValue(this,"refreshInterval",200),e.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(t){"ReferenceError"===t.name&&window&&(window.ResizeObserver=void 0)}const i=t.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{i?i===e._innerSetUI&&(await t.setUIElement(`${r.engineResourcePath}dce.ui.html`),e._innerSetUI=t.getUIElement()):(await t.setUIElement(`${r.engineResourcePath}dbr.ui.html`),e._innerSetUI=t.getUIElement())}catch(e){await t.setUIElement(r.defaultUIElementURL)}else i||await t.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async t=>{let e=await this._decode_DCEFrame(t,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let t=this._cloneDecodeResults(e);this.onImageRead(t)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let t of e)this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t));const{sx:i,sy:r,width:n,height:s,_sWidth:o,_sHeight:a}=t;b.recalculateResultLocation(e,i,r,o,a,n,s),this._drawResults(e)},t.on("cameraChange",this.callbackCameraChange),t.on("resolutionChange",this.callbackResolutionChange),t.on("cameraClose",this.callbackCameraClose),t.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(b._onLog&&b._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(t,e){if(null==t)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(t&&t.isCameraEnhancer)this.dce=t,await this._registerDCEControler(),this._imgSource=null;else{if(!b.isImageSource(t))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=t}e&&e.resultsHighlightBaseShapes&&(this._drawingItemNamespace=e.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:t,l:e,ls:i,sp:r,rmk:n}=(t=>{const e=t;if(e._pLoad.isEmpty){let t,i,r=e._license||"",n=JSON.parse(JSON.stringify(e._licenseServer)),s=e._sessionPassword,o=0;if(r.startsWith("t")||r.startsWith("f"))o=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))o=1;else{o=2;const e=r.indexOf(":");if(-1!=e&&(r=r.substring(e+1)),r.startsWith("DLS2")){let e=r.substring(4);try{e=atob(e)}catch(t){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const i=JSON.parse(e);if(r=i.handshakeCode?i.handshakeCode:i.organizationID?i.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===n.length){let t=[];i.mainServerURL&&(t[0]=i.mainServerURL),i.standbyServerURL&&(t[1]=i.standbyServerURL),n=_(t)}!s&&i.sessionPassword&&(s=i.sessionPassword),t=i.remark}("200001"===r||r.startsWith("200001-"))&&(n&&n.length||(r="")),r||(o=1)}if(o&&(globalThis.crypto||(i="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(i="Require https to use online key in this browser.")),i){if(1!==o)throw new Error(i);o=0,console.warn(i),e._lastErrorCode=-1,e._lastErrorString=i}return 1===o&&(r="",console.warn("Applying for a public trial license ...")),{lt:o,l:r,ls:n,sp:s,rmk:t}}throw new Error("Can't preprocess license again"+d)})(b);this._pLoad.task=async(s,a)=>{let h=b.engineResourcePath+b._workerName;b.engineResourcePath.startsWith(location.origin)||(h=await fetch(h).then((t=>t.blob())).then((t=>URL.createObjectURL(t)))),b._dbrWorker=new Worker(h),b._dbrWorker.onerror=t=>{let e=new Error(t.message);a(e)},b._dbrWorker.onmessage=async e=>{let i=e.data?e.data:e;switch(i.type){case"log":b._onLog&&b._onLog(i.message);break;case"load":{i.message&&(i.message=i.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let e,r=!1;1===t&&(r=!0),i.success?(b._dbrWorker.onerror=null,b._version=i.version+"(JS "+b._jsVersion+"."+b._jsEditVersion+")",b._onLog&&b._onLog("load dbr worker success"),i.message&&console.warn(i.message)):(e=new Error(i.message),e.stack=i.stack+"\n"+e.stack,r||111==i.ltsErrorCode&&-1!=i.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&b.showDialog(i.success?"warn":"error",i.message),i.success?s():a(e);break}case"task":{let t=i.id,e=i.body;try{b._taskCallbackMap.get(t)(e),b._taskCallbackMap.delete(t)}catch(e){throw b._taskCallbackMap.delete(t),e}break}default:b._onLog&&b._onLog(e)}},b._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:b.engineResourcePath,bUseFullFeature:b._bUseFullFeature,bd:b._bWasmDebug,v:b._jsVersion,brtk:!!t,bptk:1===t,l:e,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:o,fn:b.deviceFriendlyName,ls:i,sp:r,rmk:n})}}await this._pLoad}static async showDialog(t,e){await(async(t,e,i)=>{if(!t._bNeverShowDialog)try{let r=await fetch(t.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let s=document.createElement("div");s.innerHTML=n;let o=[];for(let t=0;t{if(t==e.target){a.remove();for(let t of o)t.remove()}}));else if(!l&&t.classList.contains("dls-license-icon-close"))l=t,t.addEventListener("click",(()=>{a.remove();for(let t of o)t.remove()}));else if(!c&&t.classList.contains("dls-license-icon-error"))c=t,"error"!=e&&t.remove();else if(!u&&t.classList.contains("dls-license-icon-warn"))u=t,"warn"!=e&&t.remove();else if(!d&&t.classList.contains("dls-license-msg-content")){d=t;let e=i;for(;e;){let i=e.indexOf("["),r=e.indexOf("]",i),n=e.indexOf("(",r),s=e.indexOf(")",n);if(-1==i||-1==r||-1==n||-1==s){t.appendChild(new Text(e));break}i>0&&t.appendChild(new Text(e.substring(0,i)));let o=document.createElement("a"),a=e.substring(i+1,r);o.innerText=a;let h=e.substring(n+1,s);o.setAttribute("href",h),o.setAttribute("target","_blank"),t.appendChild(o),e=e.substring(s+1)}}document.body.appendChild(a)}catch(e){t._onLog&&t._onLog(e.message||e)}})(this,t,e)}static async createInstanceInWorker(t=!1){return await b.loadWasm(),await new Promise(((e,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(t=>{if(t.success)return e(t.instanceID);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),b._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:t})}))}static async createInstance(){let t=new b;return t._instanceID=await b.createInstanceInWorker(),b._fireHTTPSWarnning(),t}async clearMapDecodeRecord(){return await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success)return t();{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:i,instanceID:this._instanceID})}))}async decode(t){b._onLog&&b._onLog("decode(source: any)"),b._onLog&&(this._timeStartDecode=Date.now());{let e={};return!this.region||this.region instanceof Array||(e.region=JSON.parse(JSON.stringify(this.region))),t instanceof Blob?await this._decode_Blob(t,e):t instanceof ArrayBuffer?await this._decode_ArrayBuffer(t,e):t instanceof Uint8Array||t instanceof Uint8ClampedArray?await this._decode_Uint8Array(t,e):t instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?await this._decode_Image(t,e):t instanceof HTMLCanvasElement?await this._decode_Canvas(t,e):t instanceof HTMLVideoElement?await this._decode_Video(t,e):"string"==typeof t?"data:image/"==t.substring(0,11)?await this._decode_Base64(t,e):await this._decode_Url(t,e):b.isDCEFrame(t)?(e.bCopyData=!0,await this._decode_DCEFrame(t,e)):b.isDSImage(t)?(e.bCopyData=!0,await this._decode_DSImage(t,e)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(t){let e={};return!this.region||this.region instanceof Array||(e.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(t,e)}async decodeUrl(t){let e={};return!this.region||this.region instanceof Array||(e.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(t,e)}async _decodeBuffer_Uint8Array(t,e,i,r,n,s){return await new Promise(((o,a)=>{let h=b._nextTaskID++;b._taskCallbackMap.set(h,(t=>{if(t.success){let e,i=b._onLog?Date.now():0;b._onLog&&b._onLog("worker return result: "+i),this._lastInnerDecodeDuration=t.duration;try{e=this._handleRetJsonString(t.decodeReturn)}catch(t){return a(t)}if(b._onLog){let t=Date.now();b._onLog("DBR time get result: "+i),b._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),b._onLog("DBR worker decode image cost: "+(i-this._timeEnterInnerDBR)),b._onLog("DBR worker handle results: "+(t-i)),b._onLog("Total decode image cost: "+(t-this._timeStartDecode))}return o(e)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,a(e)}})),this._timeEnterInnerDBR=Date.now(),b._onLog&&b._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),b._dbrWorker.postMessage({type:"decodeBuffer",id:h,instanceID:this._instanceID,body:{buffer:t,width:e,height:i,stride:r,format:n,config:s}},[t.buffer]),b._onLog&&s&&s.timeStamp&&b._onLog("decode image delay: "+(this._timeEnterInnerDBR-s.timeStamp))}))}async _decodeBuffer_Blob(t,e,i,r,n,s){b._onLog&&b._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const o=t.arrayBuffer?await t.arrayBuffer():await new Promise(((e,i)=>{let r=new FileReader;r.readAsArrayBuffer(t),r.onload=()=>{e(r.result)},r.onerror=()=>{i(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(o),e,i,r,n,s)}async decodeBuffer(t,e,i,r,n,s){let o;return b._onLog&&b._onLog("decodeBuffer(buffer,width,height,stride,format)"),b._onLog&&(this._timeStartDecode=Date.now()),t instanceof Uint8Array||t instanceof Uint8ClampedArray?o=await this._decodeBuffer_Uint8Array(t,e,i,r,n,s):t instanceof ArrayBuffer?o=await this._decodeBuffer_Uint8Array(new Uint8Array(t),e,i,r,n,s):t instanceof Blob&&(o=await this._decodeBuffer_Blob(t,e,i,r,n,s)),o}async _decodeFileInMemory_Uint8Array(t){return await new Promise(((e,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(t=>{if(t.success){let r;this._lastInnerDecodeDuration=t.duration;try{r=this._handleRetJsonString(t.decodeReturn)}catch(t){return i(t)}return e(r)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),b._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:t}})}))}async getRuntimeSettings(){return await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success){let e=JSON.parse(i.results);return null!=this.userDefinedRegion&&(e.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),t(e)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"getRuntimeSettings",id:i,instanceID:this._instanceID})}))}async updateRuntimeSettings(t){let e;if("string"==typeof t)if("speed"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region,e.deblurLevel=3,e.expectedBarcodesCount=0,e.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region,e.deblurLevel=5,e.expectedBarcodesCount=512,e.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region}else if("dense"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region,e.deblurLevel=9,e.expectedBarcodesCount=0,e.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region,e.deblurLevel=3,e.expectedBarcodesCount=0,e.localizationModes=[2,8,0,0,0,0,0,0]}else e=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(e=JSON.parse(JSON.stringify(t)),e.region instanceof Array){let t=e.region;[t.regionLeft,t.regionTop,t.regionLeft,t.regionBottom,t.regionMeasuredByPercentage].some((t=>void 0!==t))&&(e.region={regionLeft:t.regionLeft||0,regionTop:t.regionTop||0,regionRight:t.regionRight||0,regionBottom:t.regionBottom||0,regionMeasuredByPercentage:t.regionMeasuredByPercentage||0})}}if(!b._bUseFullFeature){if(0!=(e.barcodeFormatIds&~(y.BF_ONED|y.BF_QR_CODE|y.BF_PDF417|y.BF_DATAMATRIX))||0!=e.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=e.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let t=e.region;if(t instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(t)),(t.regionLeft||t.regionTop||t.regionRight||t.regionBottom||t.regionMeasuredByPercentage)&&(t.regionLeft||t.regionTop||100!=t.regionRight||100!=t.regionBottom||!t.regionMeasuredByPercentage)?this.region=t:this.region=null,e.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((t,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.updateReturn)}catch(t){i(t)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),b._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(e)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=C,await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success)return t();{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"resetRuntimeSettings",id:i,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!b._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success)return t(i.results);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:i,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(t){if(!b._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof t)t=t;else{if("object"!=typeof t)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");t=JSON.stringify(t)}return await new Promise(((e,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(t=>{if(t.success){try{this._handleRetJsonString(t.initReturn)}catch(t){i(t)}return e()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),b._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:t}})}))}async _decode_Blob(t,e){b._onLog&&b._onLog("_decode_Blob(blob: Blob)");let i=null,r=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(t)}catch(t){}i||(r=await function(t){return new Promise(((e,i)=>{let r=URL.createObjectURL(t),n=new Image;n.dbrObjUrl=r,n.src=r,n.onload=()=>{e(n)},n.onerror=t=>{i(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}}))}(t));let n=await this._decode_Image(i||r,e);return i&&i.close(),n}async _decode_ArrayBuffer(t,e){return await this._decode_Blob(new Blob([t]),e)}async _decode_Uint8Array(t,e){return await this._decode_Blob(new Blob([t]),e)}async _decode_Image(t,e){b._onLog&&b._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),e=e||{};let i,r,n=t instanceof HTMLImageElement?t.naturalWidth:t.width,s=t instanceof HTMLImageElement?t.naturalHeight:t.height,o=Math.max(n,s);if(o>this._maxCvsSideLength){let t=this._maxCvsSideLength/o;i=Math.round(n*t),r=Math.round(s*t)}else i=n,r=s;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(t,0,0,n,s,0,0,i,r),t.dbrObjUrl&&URL.revokeObjectURL(t.dbrObjUrl),await this._decode_Canvas(a,e)}async _decode_Canvas(t,e){if(b._onLog&&b._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if(0===t.width||0===t.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=t,this.oriCanvasData=null);let i=(t.ctx2d||t.getContext("2d")).getImageData(0,0,t.width,t.height).data;return await this._decodeBuffer_Uint8Array(i,t.width,t.height,4*t.width,p.IPF_ABGR_8888,e)}async _decode_Video(t,e){if(b._onLog&&b._onLog("_decode_Video(video)"),!(t instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";e=e||{};let i,r,n=t.videoWidth,s=t.videoHeight,o=Math.max(n,s);if(o>this._maxCvsSideLength){let t=this._maxCvsSideLength/o;i=Math.round(n*t),r=Math.round(s*t)}else i=n,r=s;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(t,0,0,n,s,0,0,i,r),await this._decode_Canvas(a,e)}async _decode_DCEFrame(t,e){if(b._onLog&&b._onLog("_decode_DCEFrame(dceFrame)"),!b.isDCEFrame(t))return[];let i=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{width:r,height:n,colorMode:s,timeStamp:o}=t;let a;a=e&&e.bCopyData?new Uint8Array(t.data):t.data;let h=null;if(e?(h=JSON.parse(JSON.stringify(e)),h.timeStamp=o):h={timeStamp:o},"grey"===s)i=await this._decodeBuffer_Uint8Array(a,r,n,r,p.IPF_GrayScaled,h);else if("rgba"===s)i=await this._decodeBuffer_Uint8Array(a,r,n,4*r,p.IPF_ABGR_8888,h);else{if("bgra"!==s)throw new Error(`Color mode '${s}' is not supported to decode.`);i=await this._decodeBuffer_Uint8Array(a,r,n,4*r,p.IPF_ARGB_8888,h)}return i}async _decode_DSImage(t,e){if(b._onLog&&b._onLog("_decode_DSImage(dsImage)"),!b.isDSImage(t))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,pixelFormat:t.pixelFormat.toLowerCase(),data:new Uint8Array(t.data),toCanvas:function(){const t=document.createElement("canvas");let e;switch(t.width=this.width,t.height=this.height,this.pixelFormat){case"grey":e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{let r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{e(r.response)},r.onerror=()=>{i(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(i,e)}}async _decode_FilePath(t,e){throw b._onLog&&b._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(t,e,i,r,n,s,o){if(t.length>0)for(let a of t){let t=a.localizationResult;2==t.resultCoordinateType&&(t.x1*=.01*s,t.x2*=.01*s,t.x3*=.01*s,t.x4*=.01*s,t.y1*=.01*o,t.y2*=.01*o,t.y3*=.01*o,t.y4*=.01*o);let h=s/r,l=o/n;t.x1=t.x1/h+e,t.x2=t.x2/h+e,t.x3=t.x3/h+e,t.x4=t.x4/h+e,t.y1=t.y1/l+i,t.y2=t.y2/l+i,t.y3=t.y3/l+i,t.y4=t.y4/l+i,2==t.resultCoordinateType&&(t.x1*=100/r,t.x2*=100/r,t.x3*=100/r,t.x4*=100/r,t.y1*=100/n,t.y2*=100/n,t.y3*=100/n,t.y4*=100/n)}}static BarcodeReaderException(t,e){let i,r=m.DBR_UNKNOWN;return"number"==typeof t?(r=t,i=new Error(e)):i=new Error(t),i.code=r,i}_handleRetJsonString(t){let e=m;if(t.textResults){for(let e=0;e{let i=e.indexOf(":");t[e.substring(0,i)]=e.substring(i+1)})),i.exception=t}}return t.decodeRecords?this.decodeRecords=t.decodeRecords:this.decodeRecords={},this._lastErrorCode=t.exception,this._lastErrorString=t.description,t.exception&&!b._setWarnnedEx.has(t.description)&&(b._setWarnnedEx.add(t.description),console.warn(t.description)),t.textResults}if(t.exception==e.DBR_SUCCESS)return t.data;throw b.BarcodeReaderException(t.exception,t.description)}async setModeArgument(t,e,i,r){return await new Promise(((n,s)=>{let o=b._nextTaskID++;b._taskCallbackMap.set(o,(t=>{if(t.success){try{this._handleRetJsonString(t.setReturn)}catch(t){return s(t)}return n()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,s(e)}})),b._dbrWorker.postMessage({type:"setModeArgument",id:o,instanceID:this._instanceID,body:{modeName:t,index:e,argumentName:i,argumentValue:r}})}))}async getModeArgument(t,e,i){return await new Promise(((r,n)=>{let s=b._nextTaskID++;b._taskCallbackMap.set(s,(t=>{if(t.success){let e;try{e=this._handleRetJsonString(t.getReturn)}catch(t){return n(t)}return r(e)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}})),b._dbrWorker.postMessage({type:"getModeArgument",id:s,instanceID:this._instanceID,body:{modeName:t,index:e,argumentName:i}})}))}async getIntermediateResults(){return await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success)return t(i.results);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"getIntermediateResults",id:i,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let t=await this.getIntermediateResults(),e=[];for(let i of t)if(i.dataType==v.IMRDT_IMAGE)for(let t of i.results){const i=t.bytes;let r;switch(b._onLog&&b._onLog(" "+i.length+" "+i.byteLength+" "+t.width+" "+t.height+" "+t.stride+" "+t.format),t.format){case p.IPF_ABGR_8888:r=new Uint8ClampedArray(i);break;case p.IPF_RGB_888:{const t=i.length/3;r=new Uint8ClampedArray(4*t);for(let e=0;e{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success){let e=i.results;return e.intervalTime=this.intervalTime,e.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,e.soundOnSuccessfullRead=this.soundSource,e.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,e.vibrateDuration=this.vibrateDuration,e.captureAndDecodeInParallel=this.captureAndDecodeInParallel,t(e)}{let t=new Error(i.message);return t.stack+="\n"+i.stack,e(t)}})),b._dbrWorker.postMessage({type:"getScanSettings",id:i,instanceID:this._instanceID})}))}async updateScanSettings(t){if(!t)return;const e=JSON.parse(JSON.stringify(t));return e.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(e.intervalTime,0),delete e.intervalTime),e.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=e.whenToPlaySoundforSuccessfulRead,delete e.whenToPlaySoundforSuccessfulRead),e.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=e.soundOnSuccessfullRead,delete e.soundOnSuccessfullRead),e.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=e.whenToVibrateforSuccessfulRead,delete e.whenToVibrateforSuccessfulRead),e.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=e.vibrateDuration,delete e.vibrateDuration),e.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=e.captureAndDecodeInParallel,delete e.captureAndDecodeInParallel),await new Promise(((t,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success)return t();{let t=new Error(e.message);return t.stack+="\n"+e.stack,i(t)}})),b._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:e}})}))}_cloneDecodeResults(t){if(t instanceof Array){let e=[];for(let i of t)e.push(this._cloneDecodeResults(i));return e}{let e=t,i=JSON.parse(JSON.stringify(e,((t,e)=>"oriVideoCanvas"==t||"searchRegionCanvas"==t?void 0:e)));return i}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return b._onLog&&b._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));b._onLog&&b._onLog("======= once read ======="),b._onLog&&(this._timeStartDecode=Date.now());let t=null,e=null;if(this.dce)t=this._getVideoFrame();else if(this._imgSource&&(e=await this._imgSource.getImage(),!b.isDSImage(e)))throw new Error("Invalid DSImage.");if(!t&&!e)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let i=[];if(t){i=await this._decode_DCEFrame(t,{bScanner:!0,bCopyData:!1});let e=null;if(i&&i.length){const{sx:r,sy:n,width:s,height:o,_sWidth:a,_sHeight:h}=t;e=i.map((t=>({localizationResult:JSON.parse(JSON.stringify(t.localizationResult))}))),b.recalculateResultLocation(e,r,n,a,h,s,o)}this._drawResults(e)}else e&&(i=await this._decode_DSImage(e,{bScanner:!0,bCopyData:!1}));return i})().then((t=>{if(b._onLog&&b._onLog(t),this.dce&&this.captureAndDecodeInParallel){let t=this.array_decodeFrameTimeCost,e=this.array_getFrameTimeCost;const i=()=>{let i=0;if(e&&e.length){let r=Math.min(...t),n=Math.max(...e);r&&n&&(i=r-n)}else i=0;return i>0?i:0};(()=>{for(;t.length>=5;)t.shift();t.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=i()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&t.length){let e=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)e=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of t)if(0==i.resultsType){e=!0;break}e&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&t.length){let e=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)e=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of t)if(0==i.resultsType){e=!0;break}if(e)try{navigator.vibrate(this.vibrateDuration)}catch(t){console.warn("Vibration not allowed. User interaction required: "+(t.message||t))}}if(this.onImageRead){let e=this._cloneDecodeResults(t);for(let t of e)0!=t.resultsType&&1!=t.resultsType||this.onImageRead(e);this.onImageRead(e)}if(this.onUniqueRead)for(let e of t)0==e.resultsType&&this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((t=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),b._onLog&&b._onLog(t.message||t),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==t.message||console.warn(t.message)}))}_getVideoFrame(){if(!this.dce)return null;let t;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;t=this.dce.getFrameFromBuffer();const e=t=>{if(!t)return;let e=t.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(e)};e(t)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),t=this.dce.getFrame();return t}_drawResults(t){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const e=this._dbrDrawingLayer;if(e.clearDrawingItems(),t&&t.length)for(let i of t){const t=i.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:t.x1,y:t.y1},{x:t.x2,y:t.y2},{x:t.x3,y:t.y3},{x:t.x4,y:t.y4}]);e.addDrawingItem(r)}}async startScanning(t){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let e=null;return this.dce&&(this.dce.isOpen()?(t&&this.dce.appendAndShowUI(),e=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):e=await this.dce.open(t),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),e):void 0}stopScanning(t){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",t))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(t){if(t&&t.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(b._onLog&&b._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let t=b._nextTaskID++;b._taskCallbackMap.set(t,(t=>{if(!t.success){let e=new Error(t.message);throw e.stack=t.stack+"\n"+e.stack,e}})),b._dbrWorker.postMessage({type:"destroyContext",id:t,instanceID:this._instanceID})}}b._jsVersion="9.2.11",b._jsEditVersion="20220727",b._version=`loading...(JS ${b._jsVersion}.${b._jsEditVersion})`,b._license=f,b._sessionPassword=g,b.browserInfo=o,b._workerName=`dbr-${b._jsVersion}.browser.worker.js`,b._engineResourcePath=u,b._licenseServer=[],b._deviceFriendlyName="",b._isShowRelDecodeTimeInResults=!1,b._bWasmDebug=!1,b._bNeverShowDialog=!1,b.__bUseFullFeature=!0,b._nextTaskID=0,b._taskCallbackMap=new Map,b._pLoad=new class extends Promise{constructor(t){let e,i;super(((t,r)=>{e=t,i=r})),this._s="pending",this.resolve=t=>{this.isPending&&(S(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,S(t)?e=t:"function"==typeof t&&(e=new Promise(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}},b._lastErrorCode=0,b._lastErrorString="",b._setWarnnedEx=new Set,b._defaultUIElementURL="@engineResourcePath/dbr.ui.html";var w={653:(t,e,i)=>{var r,n,s,o,a,h,l,c,u,d,f,g,_,p,m,v,y,S,C,b,w,T=T||{version:"5.2.1"};if(e.fabric=T,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?T.document=document:T.document=document.implementation.createHTMLDocument(""),T.window=window;else{var x=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;T.document=x.document,T.jsdomImplForWrapper=i(898).implForWrapper,T.nodeCanvas=i(245).Canvas,T.window=x,DOMParser=T.window.DOMParser}function O(t,e){var i=t.canvas,r=e.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var s=i.height-r.height;n.drawImage(i,0,s,r.width,r.height,0,0,r.width,r.height)}function E(t,e){var i=e.targetCanvas.getContext("2d"),r=e.destinationWidth,n=e.destinationHeight,s=r*n*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);t.readPixels(0,0,r,n,t.RGBA,t.UNSIGNED_BYTE,o);var h=new ImageData(a,r,n);i.putImageData(h,0,0)}T.isTouchSupported="ontouchstart"in T.window||"ontouchstart"in T.document||T.window&&T.window.navigator&&T.window.navigator.maxTouchPoints>0,T.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,T.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],T.DPI=96,T.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",T.commaWsp="(?:\\s+,?\\s*|,\\s*)",T.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,T.reNonWord=/[ \n\.,;!\?\-]/,T.fontPaths={},T.iMatrix=[1,0,0,1,0,0],T.svgNS="http://www.w3.org/2000/svg",T.perfLimitSizeTotal=2097152,T.maxCacheSideLimit=4096,T.minCacheSideLimit=256,T.charWidthsCache={},T.textureSize=2048,T.disableStyleCopyPaste=!1,T.enableGLFiltering=!0,T.devicePixelRatio=T.window.devicePixelRatio||T.window.webkitDevicePixelRatio||T.window.mozDevicePixelRatio||1,T.browserShadowBlurConstant=1,T.arcToSegmentsCache={},T.boundsOfCurveCache={},T.cachesBoundsOfCurve=!0,T.forceGLPutImageData=!1,T.initFilterBackend=function(){return T.enableGLFiltering&&T.isWebglSupported&&T.isWebglSupported(T.textureSize)?(console.log("max texture size: "+T.maxTextureSize),new T.WebglFilterBackend({tileSize:T.textureSize})):T.Canvas2dFilterBackend?new T.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=T),function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:T.util.array.fill(i,!1)}}function e(t,e){var i=function(){e.apply(this,arguments),this.off(t,i)}.bind(this);this.on(t,i)}T.Observable={fire:function(t,e){if(!this.__eventListeners)return this;var i=this.__eventListeners[t];if(!i)return this;for(var r=0,n=i.length;r-1||!!e&&this._objects.some((function(e){return"function"==typeof e.contains&&e.contains(t,!0)}))},complexity:function(){return this._objects.reduce((function(t,e){return t+(e.complexity?e.complexity():0)}),0)}},T.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof T.Gradient||this.set(e,new T.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof T.Pattern?i&&i():this.set(e,new T.Pattern(t,i))},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},r=e,n=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,h=Math.PI/2,T.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/h){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},sin:function(t){if(0===t)return 0;var e=1;switch(t<0&&(e=-1),t/h){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)},removeFromArray:function(t,e){var i=t.indexOf(e);return-1!==i&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*a},radiansToDegrees:function(t){return t/a},rotatePoint:function(t,e,i){var r=new T.Point(t.x-e.x,t.y-e.y),n=T.util.rotateVector(r,i);return new T.Point(n.x,n.y).addEquals(e)},rotateVector:function(t,e){var i=T.util.sin(e),r=T.util.cos(e);return{x:t.x*r-t.y*i,y:t.x*i+t.y*r}},createVector:function(t,e){return new T.Point(e.x-t.x,e.y-t.y)},calcAngleBetweenVectors:function(t,e){return Math.acos((t.x*e.x+t.y*e.y)/(Math.hypot(t.x,t.y)*Math.hypot(e.x,e.y)))},getHatVector:function(t){return new T.Point(t.x,t.y).multiply(1/Math.hypot(t.x,t.y))},getBisector:function(t,e,i){var r=T.util.createVector(t,e),n=T.util.createVector(t,i),s=T.util.calcAngleBetweenVectors(r,n),o=s*(0===T.util.calcAngleBetweenVectors(T.util.rotateVector(r,s),n)?1:-1)/2;return{vector:T.util.getHatVector(T.util.rotateVector(r,o)),angle:s}},projectStrokeOnPoints:function(t,e,i){var r=[],n=e.strokeWidth/2,s=e.strokeUniform?new T.Point(1/e.scaleX,1/e.scaleY):new T.Point(1,1),o=function(t){var e=n/Math.hypot(t.x,t.y);return new T.Point(t.x*e*s.x,t.y*e*s.y)};return t.length<=1||t.forEach((function(a,h){var l,c,u=new T.Point(a.x,a.y);0===h?(c=t[h+1],l=i?o(T.util.createVector(c,u)).addEquals(u):t[t.length-1]):h===t.length-1?(l=t[h-1],c=i?o(T.util.createVector(l,u)).addEquals(u):t[0]):(l=t[h-1],c=t[h+1]);var d,f,g=T.util.getBisector(u,l,c),_=g.vector,p=g.angle;if("miter"===e.strokeLineJoin&&(d=-n/Math.sin(p/2),f=new T.Point(_.x*d*s.x,_.y*d*s.y),Math.hypot(f.x,f.y)/n<=e.strokeMiterLimit))return r.push(u.add(f)),void r.push(u.subtract(f));d=-n*Math.SQRT2,f=new T.Point(_.x*d*s.x,_.y*d*s.y),r.push(u.add(f)),r.push(u.subtract(f))})),r},transformPoint:function(t,e,i){return i?new T.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new T.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t,e){if(e)for(var i=0;i0&&(e>r?e-=r:e=0,i>r?i-=r:i=0);var n,s=!0,o=t.getImageData(e,i,2*r||1,2*r||1),a=o.data.length;for(n=3;n=n?s-n:2*Math.PI-(n-s)}function s(t,e,i){for(var s=i[1],o=i[2],a=i[3],h=i[4],l=i[5],c=function(t,e,i,s,o,a,h){var l=Math.PI,c=h*l/180,u=T.util.sin(c),d=T.util.cos(c),f=0,g=0,_=-d*t*.5-u*e*.5,p=-d*e*.5+u*t*.5,m=(i=Math.abs(i))*i,v=(s=Math.abs(s))*s,y=p*p,S=_*_,C=m*v-m*y-v*S,b=0;if(C<0){var w=Math.sqrt(1-C/(m*v));i*=w,s*=w}else b=(o===a?-1:1)*Math.sqrt(C/(m*y+v*S));var x=b*i*p/s,O=-b*s*_/i,E=d*x-u*O+.5*t,I=u*x+d*O+.5*e,R=n(1,0,(_-x)/i,(p-O)/s),A=n((_-x)/i,(p-O)/s,(-_-x)/i,(-p-O)/s);0===a&&A>0?A-=2*l:1===a&&A<0&&(A+=2*l);for(var D=Math.ceil(Math.abs(A/l*2)),M=[],L=A/D,P=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),F=R+L,k=0;kb)for(var x=1,O=_.length;x2;for(e=e||0,l&&(a=t[2].xt[i-2].x?1:n.x===t[i-2].x?0:-1,h=n.y>t[i-2].y?1:n.y===t[i-2].y?0:-1),r.push(["L",n.x+a*e,n.y+h*e]),r},T.util.getPathSegmentsInfo=d,T.util.getBoundsOfCurve=function(e,i,r,n,s,o,a,h){var l;if(T.cachesBoundsOfCurve&&(l=t.call(arguments),T.boundsOfCurveCache[l]))return T.boundsOfCurveCache[l];var c,u,d,f,g,_,p,m,v=Math.sqrt,y=Math.min,S=Math.max,C=Math.abs,b=[],w=[[],[]];u=6*e-12*r+6*s,c=-3*e+9*r-9*s+3*a,d=3*r-3*e;for(var x=0;x<2;++x)if(x>0&&(u=6*i-12*n+6*o,c=-3*i+9*n-9*o+3*h,d=3*n-3*i),C(c)<1e-12){if(C(u)<1e-12)continue;0<(f=-d/u)&&f<1&&b.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(m=v(p)))/(2*c))&&g<1&&b.push(g),0<(_=(-u-m)/(2*c))&&_<1&&b.push(_));for(var O,E,I,R=b.length,A=R;R--;)O=(I=1-(f=b[R]))*I*I*e+3*I*I*f*r+3*I*f*f*s+f*f*f*a,w[0][R]=O,E=I*I*I*i+3*I*I*f*n+3*I*f*f*o+f*f*f*h,w[1][R]=E;w[0][A]=e,w[1][A]=i,w[0][A+1]=a,w[1][A+1]=h;var D=[{x:y.apply(null,w[0]),y:y.apply(null,w[1])},{x:S.apply(null,w[0]),y:S.apply(null,w[1])}];return T.cachesBoundsOfCurve&&(T.boundsOfCurveCache[l]=D),D},T.util.getPointOnPath=function(t,e,i){i||(i=d(t));for(var r=0;e-i[r].length>0&&r1e-4;)i=h(s),n=s,(r=o(l.x,l.y,i.x,i.y))+a>e?(s-=c,c/=2):(l=i,s+=c,a+=r);return i.angle=u(n),i}(s,e)}},T.util.transformPath=function(t,e,i){return i&&(e=T.util.multiplyTransformMatrices(e,[1,0,0,1,-i.x,-i.y])),t.map((function(t){for(var i=t.slice(0),r={},n=1;n=e}))}}}(),function(){function t(e,i,r){if(r)if(!T.isLikelyNode&&i instanceof Element)e=i;else if(i instanceof Array){e=[];for(var n=0,s=i.length;n57343)return t.charAt(e);if(55296<=i&&i<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var r=t.charCodeAt(e+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";var n=t.charCodeAt(e-1);if(55296>n||n>56319)throw"Low surrogate without preceding high surrogate";return!1}T.util.string={camelize:function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},capitalize:function(t,e){return t.charAt(0).toUpperCase()+(e?t.slice(1):t.slice(1).toLowerCase())},escapeXml:function(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(e){var i,r=0,n=[];for(r=0;r-1?t.prototype[n]=function(t){return function(){var i=this.constructor.superclass;this.constructor.superclass=r;var n=e[t].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==t)return n}}(n):t.prototype[n]=e[n],i&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function n(){}function s(e){for(var i=null,r=this;r.constructor.superclass;){var n=r.constructor.superclass.prototype[e];if(r[e]!==n){i=n;break}r=r.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,t.call(arguments,1)):i.call(this):console.log("tried to callSuper "+e+", method not found in prototype chain",this)}T.util.createClass=function(){var i=null,o=t.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(n.prototype=i.prototype,a.prototype=new n,i.subclasses.push(a));for(var h=0,l=o.length;h-1||"touch"===t.pointerType},d="string"==typeof(u=T.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,_=function(t){return t},d?_=function(t,e){return t.style.opacity=e,t}:f&&(_=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(g,e)):i.filter+=" alpha(opacity="+100*e+")",t}),T.util.setStyle=function(t,e){var i=t.style;if(!i)return t;if("string"==typeof e)return t.style.cssText+=";"+e,e.indexOf("opacity")>-1?_(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)"opacity"===r?_(t,e[r]):i["float"===r||"cssFloat"===r?void 0===i.styleFloat?"cssFloat":"styleFloat":r]=e[r];return t},function(){var t,e,i,r,n=Array.prototype.slice,s=function(t){return n.call(t,0)};try{t=s(T.document.childNodes)instanceof Array}catch(t){}function o(t,e){var i=T.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function a(t){for(var e=0,i=0,r=T.document.documentElement,n=T.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===T.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:i}}t||(s=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e}),e=T.document.defaultView&&T.document.defaultView.getComputedStyle?function(t,e){var i=T.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},i=T.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",T.util.makeElementUnselectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=T.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t},T.util.makeElementSelectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t},T.util.setImageSmoothing=function(t,e){t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=e},T.util.getById=function(t){return"string"==typeof t?T.document.getElementById(t):t},T.util.toArray=s,T.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},T.util.makeElement=o,T.util.wrapElement=function(t,e,i){return"string"==typeof e&&(e=o(e,i)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},T.util.getScrollLeftTop=a,T.util.getElementOffset=function(t){var i,r,n=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},h={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return o;for(var l in h)o[h[l]]+=parseInt(e(t,l),10)||0;return i=n.documentElement,void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect()),r=a(t),{left:s.left+r.left-(i.clientLeft||0)+o.left,top:s.top+r.top-(i.clientTop||0)+o.top}},T.util.getNodeCanvas=function(t){var e=T.jsdomImplForWrapper(t);return e._canvas||e._image},T.util.cleanUpJsdomNode=function(t){if(T.isLikelyNode){var e=T.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}T.util.request=function(e,i){i||(i={});var r=i.method?i.method.toUpperCase():"GET",n=i.onComplete||function(){},s=new T.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(n(s),s.onreadystatechange=t)},"GET"===r&&(o=null,"string"==typeof i.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,i.parameters))),s.open(r,e,!0),"POST"!==r&&"PUT"!==r||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),T.log=console.log,T.warn=console.warn,function(){var t=T.util.object.extend,e=T.util.object.clone,i=[];function r(){return!1}function n(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e}T.util.object.extend(i,{cancelAll:function(){var t=this.splice(0);return t.forEach((function(t){t.cancel()})),t},cancelByCanvas:function(t){if(!t)return[];var e=this.filter((function(e){return"object"==typeof e.target&&e.target.canvas===t}));return e.forEach((function(t){t.cancel()})),e},cancelByTarget:function(t){var e=this.findAnimationsByTarget(t);return e.forEach((function(t){t.cancel()})),e},findAnimationIndex:function(t){return this.indexOf(this.findAnimation(t))},findAnimation:function(t){return this.find((function(e){return e.cancel===t}))},findAnimationsByTarget:function(t){return t?this.filter((function(e){return e.target===t})):[]}});var s=T.window.requestAnimationFrame||T.window.webkitRequestAnimationFrame||T.window.mozRequestAnimationFrame||T.window.oRequestAnimationFrame||T.window.msRequestAnimationFrame||function(t){return T.window.setTimeout(t,1e3/60)},o=T.window.cancelAnimationFrame||T.window.clearTimeout;function a(){return s.apply(T.window,arguments)}T.util.animate=function(i){i||(i={});var s,o=!1,h=function(){var t=T.runningAnimations.indexOf(s);return t>-1&&T.runningAnimations.splice(t,1)[0]};return s=t(e(i),{cancel:function(){return o=!0,h()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),T.runningAnimations.push(s),a((function(t){var e,l=t||+new Date,c=i.duration||500,u=l+c,d=i.onChange||r,f=i.abort||r,g=i.onComplete||r,_=i.easing||n,p="startValue"in i&&i.startValue.length>0,m="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?m.map((function(t,e){return v[e]-m[e]})):v-m);i.onStart&&i.onStart(),function t(i){var r=(e=i||+new Date)>u?c:e-l,n=r/c,S=p?m.map((function(t,e){return _(r,m[e],y[e],c)})):_(r,m,y,c),C=p?Math.abs((S[0]-m[0])/y[0]):Math.abs((S-m)/y);if(s.currentValue=p?S.slice():S,s.completionRate=C,s.durationRate=n,!o){if(!f(S,C,n))return e>u?(s.currentValue=p?v.slice():v,s.completionRate=1,s.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void h()):(d(S,C,n),void a(t));h()}}(l)})),s.cancel},T.util.requestAnimFrame=a,T.util.cancelAnimFrame=function(){return o.apply(T.window,arguments)},T.runningAnimations=i}(),function(){function t(t,e,i){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return(r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1))+")"}T.util.animateColor=function(e,i,r,n){var s=new T.Color(e).getSource(),o=new T.Color(i).getSource(),a=n.onComplete,h=n.onChange;return n=n||{},T.util.animate(T.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){return t(i,r,n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2)))},onComplete:function(e,i,r){if(a)return a(t(o,o,0),i,r)},onChange:function(e,i,r){if(h){if(Array.isArray(e))return h(t(e,e,0),i,r);h(e,i,r)}}}))}}(),function(){function t(t,e,i,r){return t-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===t||"xlink:href"===t||"font"===t)return i;if("imageSmoothing"===t)return"optimizeQuality"===i;a=h?i.map(s):s(i,n)}}else i="";return!h&&isNaN(a)?i:a}function f(t){return new RegExp("^("+t.join("|")+")\\b","i")}function g(t,e){var i,r,n,s,o=[];for(n=0,s=e.length;n1;)h.shift(),l=e.util.multiplyTransformMatrices(l,h[0]);return l}}();var v=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function y(t){if(!e.svgViewBoxElementsRegEx.test(t.nodeName))return{};var i,r,n,o,a,h,l=t.getAttribute("viewBox"),c=1,u=1,d=t.getAttribute("width"),f=t.getAttribute("height"),g=t.getAttribute("x")||0,_=t.getAttribute("y")||0,p=t.getAttribute("preserveAspectRatio")||"",m=!l||!(l=l.match(v)),y=!d||!f||"100%"===d||"100%"===f,S=m&&y,C={},b="",w=0,T=0;if(C.width=0,C.height=0,C.toBeParsed=S,m&&(g||_)&&t.parentNode&&"#document"!==t.parentNode.nodeName&&(b=" translate("+s(g)+" "+s(_)+") ",a=(t.getAttribute("transform")||"")+b,t.setAttribute("transform",a),t.removeAttribute("x"),t.removeAttribute("y")),S)return C;if(m)return C.width=s(d),C.height=s(f),C;if(i=-parseFloat(l[1]),r=-parseFloat(l[2]),n=parseFloat(l[3]),o=parseFloat(l[4]),C.minX=i,C.minY=r,C.viewBoxWidth=n,C.viewBoxHeight=o,y?(C.width=n,C.height=o):(C.width=s(d),C.height=s(f),c=C.width/n,u=C.height/o),"none"!==(p=e.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),w=C.width-n*c,T=C.height-o*c,"Mid"===p.alignX&&(w/=2),"Mid"===p.alignY&&(T/=2),"Min"===p.alignX&&(w=0),"Min"===p.alignY&&(T=0)),1===c&&1===u&&0===i&&0===r&&0===g&&0===_)return C;if((g||_)&&"#document"!==t.parentNode.nodeName&&(b=" translate("+s(g)+" "+s(_)+") "),a=b+" matrix("+c+" 0 0 "+u+" "+(i*c+w)+" "+(r*u+T)+") ","svg"===t.nodeName){for(h=t.ownerDocument.createElementNS(e.svgNS,"g");t.firstChild;)h.appendChild(t.firstChild);t.appendChild(h)}else(h=t).removeAttribute("x"),h.removeAttribute("y"),a=h.getAttribute("transform")+a;return h.setAttribute("transform",a),C}function S(t,e){var i="xlink:href",r=m(t,e.getAttribute(i).slice(1));if(r&&r.getAttribute(i)&&S(t,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(t){r&&!e.hasAttribute(t)&&r.hasAttribute(t)&&e.setAttribute(t,r.getAttribute(t))})),!e.children.length)for(var n=r.cloneNode(!0);n.firstChild;)e.appendChild(n.firstChild);e.removeAttribute(i)}e.parseSVGDocument=function(t,i,n,s){if(t){!function(t){for(var i=g(t,["use","svg:use"]),r=0;i.length&&rt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){this.status=t,this.points=[]}e.Intersection?e.warn("fabric.Intersection is already defined"):(e.Intersection=i,e.Intersection.prototype={constructor:i,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},e.Intersection.intersectLineLine=function(t,r,n,s){var o,a=(s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x),h=(r.x-t.x)*(t.y-n.y)-(r.y-t.y)*(t.x-n.x),l=(s.y-n.y)*(r.x-t.x)-(s.x-n.x)*(r.y-t.y);if(0!==l){var c=a/l,u=h/l;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new e.Point(t.x+c*(r.x-t.x),t.y+c*(r.y-t.y))):o=new i}else o=new i(0===a||0===h?"Coincident":"Parallel");return o},e.Intersection.intersectLinePolygon=function(t,e,r){var n,s,o,a,h=new i,l=r.length;for(a=0;a0&&(h.status="Intersection"),h},e.Intersection.intersectPolygonPolygon=function(t,e){var r,n=new i,s=t.length;for(r=0;r0&&(n.status="Intersection"),n},e.Intersection.intersectPolygonRectangle=function(t,r,n){var s=r.min(n),o=r.max(n),a=new e.Point(o.x,s.y),h=new e.Point(s.x,o.y),l=i.intersectLinePolygon(s,a,t),c=i.intersectLinePolygon(a,o,t),u=i.intersectLinePolygon(o,h,t),d=i.intersectLinePolygon(h,s,t),f=new i;return f.appendPoints(l.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function r(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}e.Color?e.warn("fabric.Color is already defined."):(e.Color=i,e.Color.prototype={_tryParsingColor:function(t){var e;t in i.colorNameMap&&(t=i.colorNameMap[t]),"transparent"===t&&(e=[255,255,255,0]),e||(e=i.sourceFromHex(t)),e||(e=i.sourceFromRgb(t)),e||(e=i.sourceFromHsl(t)),e||(e=[0,0,0,1]),e&&this.setSource(e)},_rgbToHsl:function(t,i,r){t/=255,i/=255,r/=255;var n,s,o,a=e.util.array.max([t,i,r]),h=e.util.array.min([t,i,r]);if(o=(a+h)/2,a===h)n=s=0;else{var l=a-h;switch(s=o>.5?l/(2-a-h):l/(a+h),a){case t:n=(i-r)/l+(i0)-(t<0)||+t};function f(t,e){var i=t.angle+u(Math.atan2(e.y,e.x))+360;return Math.round(i%360/45)}function g(t,i){var r=i.transform.target,n=r.canvas,s=e.util.object.clone(i);s.target=r,n&&n.fire("object:"+t,s),r.fire(t,i)}function _(t,e){var i=e.canvas,r=t[i.uniScaleKey];return i.uniformScaling&&!r||!i.uniformScaling&&r}function p(t){return t.originX===l&&t.originY===l}function m(t,e,i){var r=t.lockScalingX,n=t.lockScalingY;return!((!r||!n)&&(e||!r&&!n||!i)&&(!r||"x"!==e)&&(!n||"y"!==e))}function v(t,e,i,r){return{e:t,transform:e,pointer:{x:i,y:r}}}function y(t){return function(e,i,r,n){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),h=t(e,i,r,n);return s.setPositionByOrigin(a,i.originX,i.originY),h}}function S(t,e){return function(i,r,n,s){var o=e(i,r,n,s);return o&&g(t,v(i,r,n,s)),o}}function C(t,i,r,n,s){var o=t.target,a=o.controls[t.corner],h=o.canvas.getZoom(),l=o.padding/h,c=o.toLocalPoint(new e.Point(n,s),i,r);return c.x>=l&&(c.x-=l),c.x<=-l&&(c.x+=l),c.y>=l&&(c.y-=l),c.y<=l&&(c.y+=l),c.x-=a.offsetX,c.y-=a.offsetY,c}function b(t){return t.flipX!==t.flipY}function w(t,e,i,r,n){if(0!==t[e]){var s=n/t._getTransformedDimensions()[r]*t[i];t.set(i,s)}}function T(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(0,l.skewY),d=C(e,e.originX,e.originY,i,r),f=Math.abs(2*d.x)-c.x,g=l.skewX;f<2?n=0:(n=u(Math.atan2(f/l.scaleX,c.y/l.scaleY)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),b(l)&&(n=-n));var _=g!==n;if(_){var p=l._getTransformedDimensions().y;l.set("skewX",n),w(l,"skewY","scaleY","y",p)}return _}function x(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(l.skewX,0),d=C(e,e.originX,e.originY,i,r),f=Math.abs(2*d.y)-c.y,g=l.skewY;f<2?n=0:(n=u(Math.atan2(f/l.scaleY,c.x/l.scaleX)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),b(l)&&(n=-n));var _=g!==n;if(_){var p=l._getTransformedDimensions().x;l.set("skewY",n),w(l,"skewX","scaleX","x",p)}return _}function O(t,e,i,r,n){n=n||{};var s,o,a,h,l,u,f=e.target,g=f.lockScalingX,v=f.lockScalingY,y=n.by,S=_(t,f),b=m(f,y,S),w=e.gestureScale;if(b)return!1;if(w)o=e.scaleX*w,a=e.scaleY*w;else{if(s=C(e,e.originX,e.originY,i,r),l="y"!==y?d(s.x):1,u="x"!==y?d(s.y):1,e.signX||(e.signX=l),e.signY||(e.signY=u),f.lockScalingFlip&&(e.signX!==l||e.signY!==u))return!1;if(h=f._getTransformedDimensions(),S&&!y){var T=Math.abs(s.x)+Math.abs(s.y),x=e.original,O=T/(Math.abs(h.x*x.scaleX/f.scaleX)+Math.abs(h.y*x.scaleY/f.scaleY));o=x.scaleX*O,a=x.scaleY*O}else o=Math.abs(s.x*f.scaleX/h.x),a=Math.abs(s.y*f.scaleY/h.y);p(e)&&(o*=2,a*=2),e.signX!==l&&"y"!==y&&(e.originX=c[e.originX],o*=-1,e.signX=l),e.signY!==u&&"x"!==y&&(e.originY=c[e.originY],a*=-1,e.signY=u)}var E=f.scaleX,I=f.scaleY;return y?("x"===y&&f.set("scaleX",o),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!v&&f.set("scaleY",a)),E!==f.scaleX||I!==f.scaleY}n.scaleCursorStyleHandler=function(t,e,r){var n=_(t,r),s="";if(0!==e.x&&0===e.y?s="x":0===e.x&&0!==e.y&&(s="y"),m(r,s,n))return"not-allowed";var o=f(r,e);return i[o]+"-resize"},n.skewCursorStyleHandler=function(t,e,i){var n="not-allowed";if(0!==e.x&&i.lockSkewingY)return n;if(0!==e.y&&i.lockSkewingX)return n;var s=f(i,e)%4;return r[s]+"-resize"},n.scaleSkewCursorStyleHandler=function(t,e,i){return t[i.canvas.altActionKey]?n.skewCursorStyleHandler(t,e,i):n.scaleCursorStyleHandler(t,e,i)},n.rotationWithSnapping=S("rotating",y((function(t,e,i,r){var n=e,s=n.target,o=s.translateToOriginPoint(s.getCenterPoint(),n.originX,n.originY);if(s.lockRotation)return!1;var a,h=Math.atan2(n.ey-o.y,n.ex-o.x),l=Math.atan2(r-o.y,i-o.x),c=u(l-h+n.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,_=Math.floor(c/d)*d;Math.abs(c-_)0?s:a:(c>0&&(n=u===o?s:a),c<0&&(n=u===o?a:s),b(h)&&(n=n===s?a:s)),e.originX=n,S("skewing",y(T))(t,e,i,r))},n.skewHandlerY=function(t,e,i,r){var n,a=e.target,c=a.skewY,u=e.originX;return!a.lockSkewingY&&(0===c?n=C(e,l,l,i,r).y>0?o:h:(c>0&&(n=u===s?o:h),c<0&&(n=u===s?h:o),b(a)&&(n=n===o?h:o)),e.originY=n,S("skewing",y(x))(t,e,i,r))},n.dragHandler=function(t,e,i,r){var n=e.target,s=i-e.offsetX,o=r-e.offsetY,a=!n.get("lockMovementX")&&n.left!==s,h=!n.get("lockMovementY")&&n.top!==o;return a&&n.set("left",s),h&&n.set("top",o),(a||h)&&g("moving",v(t,e,i,r)),a||h},n.scaleOrSkewActionName=function(t,e,i){var r=t[i.canvas.altActionKey];return 0===e.x?r?"skewX":"scaleY":0===e.y?r?"skewY":"scaleX":void 0},n.rotationStyleHandler=function(t,e,i){return i.lockRotation?"not-allowed":e.cursorStyle},n.fireEvent=g,n.wrapWithFixedAnchor=y,n.wrapWithFireEvent=S,n.getLocalPoint=C,e.controlsUtils=n}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians,r=e.controlsUtils;r.renderCircleControl=function(t,e,i,r,n){r=r||{};var s,o=this.sizeX||r.cornerSize||n.cornerSize,a=this.sizeY||r.cornerSize||n.cornerSize,h=void 0!==r.transparentCorners?r.transparentCorners:n.transparentCorners,l=h?"stroke":"fill",c=!h&&(r.cornerStrokeColor||n.cornerStrokeColor),u=e,d=i;t.save(),t.fillStyle=r.cornerColor||n.cornerColor,t.strokeStyle=r.cornerStrokeColor||n.cornerStrokeColor,o>a?(s=o,t.scale(1,a/o),d=i*o/a):a>o?(s=a,t.scale(o/a,1),u=e*a/o):s=o,t.lineWidth=1,t.beginPath(),t.arc(u,d,s/2,0,2*Math.PI,!1),t[l](),c&&t.stroke(),t.restore()},r.renderSquareControl=function(t,e,r,n,s){n=n||{};var o=this.sizeX||n.cornerSize||s.cornerSize,a=this.sizeY||n.cornerSize||s.cornerSize,h=void 0!==n.transparentCorners?n.transparentCorners:s.transparentCorners,l=h?"stroke":"fill",c=!h&&(n.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;t.save(),t.fillStyle=n.cornerColor||s.cornerColor,t.strokeStyle=n.cornerStrokeColor||s.cornerStrokeColor,t.lineWidth=1,t.translate(e,r),t.rotate(i(s.angle)),t[l+"Rect"](-u,-d,o,a),c&&t.strokeRect(-u,-d,o,a),t.restore()}}(e),function(t){var e=t.fabric||(t.fabric={});e.Control=function(t){for(var e in t)this[e]=t[e]},e.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(t,e){return e.cursorStyle},getActionName:function(t,e){return e.actionName},getVisibility:function(t,e){var i=t._controlsVisibility;return i&&void 0!==i[e]?i[e]:this.visible},setVisibility:function(t){this.visible=t},positionHandler:function(t,i){return e.util.transformPoint({x:this.x*t.x+this.offsetX,y:this.y*t.y+this.offsetY},i)},calcCornerCoords:function(t,i,r,n,s){var o,a,h,l,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-e.util.degreesToRadians(t),_=Math.PI/2-d-e.util.degreesToRadians(t);o=f*e.util.cos(g),a=f*e.util.sin(g),h=f*e.util.cos(_),l=f*e.util.sin(_)}else f=.7071067812*(c&&u?c:i),g=e.util.degreesToRadians(45-t),o=h=f*e.util.cos(g),a=l=f*e.util.sin(g);return{tl:{x:r-l,y:n-h},tr:{x:r+o,y:n-a},bl:{x:r-o,y:n+a},br:{x:r+l,y:n+h}}},render:function(t,i,r,n,s){"circle"===((n=n||{}).cornerStyle||s.cornerStyle)?e.controlsUtils.renderCircleControl.call(this,t,i,r,n,s):e.controlsUtils.renderSquareControl.call(this,t,i,r,n,s)}}}(e),function(){function t(t,e){var i,r,n,s,o=t.getAttribute("style"),a=t.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var h=o.split(/\s*;\s*/);for(""===h[h.length-1]&&h.pop(),s=h.length;s--;){var l=h[s].split(/\s*:\s*/),c=l[0].trim(),u=l[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(n=u)}}return i||(i=t.getAttribute("stop-color")||"rgb(0,0,0)"),n||(n=t.getAttribute("stop-opacity")),r=(i=new T.Color(i)).getAlpha(),n=isNaN(parseFloat(n))?1:parseFloat(n),n*=r*e,{offset:a,color:i.toRgb(),opacity:n}}var e=T.util.object.clone;T.Gradient=T.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(t){t||(t={}),t.coords||(t.coords={});var e,i=this;Object.keys(t).forEach((function(e){i[e]=t[e]})),this.id?this.id+="_"+T.Object.__uid++:this.id=T.Object.__uid++,e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice()},addColorStop:function(t){for(var e in t){var i=new T.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return T.util.populateWithProperties(this,e,t),e},toSVG:function(t,i){var r,n,s,o,a=e(this.coords,!0),h=(i=i||{},e(this.colorStops,!0)),l=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():T.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(h.sort((function(t,e){return t.offset-e.offset})),"objectBoundingBox"===g?(u/=t.width,d/=t.height):(u+=t.width/2,d+=t.height/2),"path"===t.type&&"percentage"!==this.gradientUnits&&(u-=t.pathOffset.x,d-=t.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+T.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(l)for((h=h.concat()).reverse(),r=0,n=h.length;r0){var p=_/Math.max(a.r1,a.r2);for(r=0,n=h.length;r\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(t){var e,i,r,n=T.util.object.clone(this.coords);if(this.type){for("linear"===this.type?e=t.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(e=t.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2)),i=0,r=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,h,l,c=e.getElementsByTagName("stop"),u="userSpaceOnUse"===e.getAttribute("gradientUnits")?"pixels":"percentage",d=e.getAttribute("gradientTransform")||"",f=[],g=0,_=0;for("linearGradient"===e.nodeName||"LINEARGRADIENT"===e.nodeName?(o="linear",a=function(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}(e)):(o="radial",a=function(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}(e)),h=c.length;h--;)f.push(t(c[h],s));return l=T.parseTransformAttribute(d),function(t,e,i,r){var n,s;Object.keys(e).forEach((function(t){"Infinity"===(n=e[t])?s=1:"-Infinity"===n?s=0:(s=parseFloat(e[t],10),"string"==typeof n&&/^(\d+\.\d+)%|(\d+)%$/.test(n)&&(s*=.01,"pixels"===r&&("x1"!==t&&"x2"!==t&&"r2"!==t||(s*=i.viewBoxWidth||i.width),"y1"!==t&&"y2"!==t||(s*=i.viewBoxHeight||i.height)))),e[t]=s}))}(0,a,n,u),"pixels"===u&&(g=-i.left,_=-i.top),new T.Gradient({id:e.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:l,offsetX:g,offsetY:_})}})}(),m=T.util.toFixed,T.Pattern=T.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(t,e){if(t||(t={}),this.id=T.Object.__uid++,this.setOptions(t),!t.source||t.source&&"string"!=typeof t.source)e&&e(this);else{var i=this;this.source=T.util.createImage(),T.util.loadImage(t.source,(function(t,r){i.source=t,e&&e(i,r)}),null,this.crossOrigin)}},toObject:function(t){var e,i,r=T.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?e=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(e=this.source.toDataURL()),i={type:"pattern",source:e,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:m(this.offsetX,r),offsetY:m(this.offsetY,r),patternTransform:this.patternTransform?this.patternTransform.concat():null},T.util.populateWithProperties(this,i,t),i},toSVG:function(t){var e="function"==typeof this.source?this.source():this.source,i=e.width/t.width,r=e.height/t.height,n=this.offsetX/t.width,s=this.offsetY/t.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,s&&(r+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,n&&(i+=Math.abs(n))),e.src?o=e.src:e.toDataURL&&(o=e.toDataURL()),'\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e=this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.toFixed;e.Shadow?e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var i in"string"==typeof t&&(t=this._parseShadow(t)),t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var r=40,n=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=new e.Color(this.color);return t.width&&t.height&&(r=100*i((Math.abs(o.x)+this.blur)/t.width,s)+20,n=100*i((Math.abs(o.y)+this.blur)/t.height,s)+20),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(e){this[e]!==i[e]&&(t[e]=this[e])}),this),t}}),e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(e),function(){if(T.StaticCanvas)T.warn("fabric.StaticCanvas is already defined.");else{var t=T.util.object.extend,e=T.util.getElementOffset,i=T.util.removeFromArray,r=T.util.toFixed,n=T.util.transformPoint,s=T.util.invertTransform,o=T.util.getNodeCanvas,a=T.util.createCanvasElement,h=new Error("Could not initialize `canvas` element");T.StaticCanvas=T.util.createClass(T.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:T.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return T.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,T.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=T.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},__setBgOverlayImage:function(t,e,i,r){return"string"==typeof e?T.util.loadImage(e,(function(e,n){if(e){var s=new T.Image(e,r);this[t]=s,s.canvas=this}i&&i(e,n)}),this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,e&&(e.canvas=this),i&&i(e,!1)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=a();if(!t)throw h;if(t.style||(t.style={}),void 0===t.getContext)throw h;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=T.util.getById(t)||this._createCanvasElement(),T.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var r in e=e||{},t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,r,n=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=t,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,n=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=T.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",T.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+T.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var t=this;return["background","overlay"].map((function(e){var i=t[e+"Color"];if(i&&i.toLive){var r=t[e+"Vpt"],n=t.viewportTransform,s={width:t.width/(r?n[0]:1),height:t.height/(r?n[3]:1)};return i.toSVG(s,{additionalTransform:r?T.util.matrixToSVG(n):""})}})).join("")},createSVGFontFacesMarkup:function(){var t,e,i,r,n,s,o,a,h="",l={},c=T.fontPaths,u=[];for(this._objects.forEach((function t(e){u.push(e),e._objects&&e._objects.forEach(t)})),o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,r,n,s=this._objects;for(r=0,n=s.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(e=(n=s._objects).length;e--;)r=n[e],i(this._objects,r),this._objects.unshift(r);else i(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(n=s._objects,e=0;e0+l&&(o=s-1,i(this._objects,n),this._objects.splice(o,0,n)),l++;else 0!==(s=this._objects.indexOf(t))&&(o=this._findNewLowerIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(t,e,i){var r,n;if(i){for(r=e,n=e-1;n>=0;--n)if(t.intersectsWithObject(this._objects[n])||t.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(t)){r=n;break}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,n,s,o,a,h=this._activeObject,l=0;if(t===h&&"activeSelection"===t.type)for(r=(a=h._objects).length;r--;)n=a[r],(s=this._objects.indexOf(n))"}}),t(T.StaticCanvas.prototype,T.Observable),t(T.StaticCanvas.prototype,T.Collection),t(T.StaticCanvas.prototype,T.DataURLExporter),t(T.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=a();if(!e||!e.getContext)return null;var i=e.getContext("2d");return i&&"setLineDash"===t?void 0!==i.setLineDash:null}}),T.StaticCanvas.prototype.toJSON=T.StaticCanvas.prototype.toObject,T.isLikelyNode&&(T.StaticCanvas.prototype.createPNGStream=function(){var t=o(this.lowerCanvasEl);return t&&t.createPNGStream()},T.StaticCanvas.prototype.createJPEGStream=function(t){var e=o(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),T.BaseBrush=T.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,r=t.getZoom();t&&t._isRetinaScaling()&&(r*=T.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*r,i.shadowOffsetX=e.offsetX*r,i.shadowOffsetY=e.offsetY*r}},needsFullRender:function(){return new T.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0},_isOutSideCanvas:function(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}),T.PencilBrush=T.util.createClass(T.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(t){this.canvas=t,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(t,e,i){var r=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,r.x,r.y),r},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._captureDrawingPath(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,r=i.length,n=this.canvas.contextTop;this._saveAndTransform(n),this.oldEnd&&(n.beginPath(),n.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(n,i[r-2],i[r-1],!0),n.stroke(),n.restore()}},onMouseUp:function(t){return!this.canvas._isMainEvent(t.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(t){var e=new T.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(t){var e=new T.Point(t.x,t.y);return this._addPoint(e)},_render:function(t){var e,i,r=this._points[0],n=this._points[1];if(t=t||this.canvas.contextTop,this._saveAndTransform(t),t.beginPath(),2===this._points.length&&r.x===n.x&&r.y===n.y){var s=this.width/1e3;r=new T.Point(r.x,r.y),n=new T.Point(n.x,n.y),r.x-=s,n.x+=s}for(t.moveTo(r.x,r.y),e=1,i=this._points.length;e=n&&(o=t[i],a.push(o));return a.push(t[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var t=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(t))this.canvas.requestRenderAll();else{var e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:e})}}}),T.CircleBrush=T.util.createClass(T.BaseBrush,{width:10,initialize:function(t){this.canvas=t,this.points=[]},drawDot:function(t){var e=this.addPoint(t),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,e),i.restore()},dot:function(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()},onMouseDown:function(t){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)},_render:function(){var t,e,i=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(i),t=0,e=r.length;t0&&!this.preserveObjectStacking){e=[],i=[];for(var n=0,s=this._objects.length;n1&&(this._activeObject._objects=i),e.push.apply(e,i)}else e=this._objects;return e},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var t=this.contextContainer;return this.renderCanvas(t,this._chooseObjectsToRender()),this},renderTopLayer:function(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()},renderTop:function(){var t=this.contextTop;return this.clearContext(t),this.renderTopLayer(t),this.fire("after:render"),this},_normalizePointer:function(t,e){var i=t.calcTransformMatrix(),r=T.util.invertTransform(i),n=this.restorePointerVpt(e);return T.util.transformPoint(n,r)},isTargetTransparent:function(t,e,i){if(t.shouldCache()&&t._cacheCanvas&&t!==this._activeObject){var r=this._normalizePointer(t,{x:e,y:i}),n=Math.max(t.cacheTranslationX+r.x*t.zoomX,0),s=Math.max(t.cacheTranslationY+r.y*t.zoomY,0);return T.util.isTransparent(t._cacheContext,Math.round(n),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=t.selectionBackgroundColor,h=this.viewportTransform;return t.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(h[0],h[1],h[2],h[3],h[4],h[5]),t.render(o),o.restore(),t.selectionBackgroundColor=a,T.util.isTransparent(o,e,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(t){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(e){return!0===t[e]})):t[this.selectionKey]},_shouldClearSelection:function(t,e){var i=this.getActiveObjects(),r=this._activeObject;return!e||e&&r&&i.length>1&&-1===i.indexOf(e)&&r!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&r&&r!==e},_shouldCenterTransform:function(t,e,i){var r;if(t)return"scale"===e||"scaleX"===e||"scaleY"===e||"resizing"===e?r=this.centeredScaling||t.centeredScaling:"rotate"===e&&(r=this.centeredRotation||t.centeredRotation),r?!i:i},_getOriginFromCorner:function(t,e){var i={x:t.originX,y:t.originY};return"ml"===e||"tl"===e||"bl"===e?i.x="right":"mr"!==e&&"tr"!==e&&"br"!==e||(i.x="left"),"tl"===e||"mt"===e||"tr"===e?i.y="bottom":"bl"!==e&&"mb"!==e&&"br"!==e||(i.y="top"),i},_getActionFromCorner:function(t,e,i,r){if(!e||!t)return"drag";var n=r.controls[e];return n.getActionName(i,n,r)},_setupCurrentTransform:function(t,i,r){if(i){var n=this.getPointer(t),s=i.__corner,o=i.controls[s],a=r&&s?o.getActionHandler(t,i,o):T.controlsUtils.dragHandler,h=this._getActionFromCorner(r,s,t,i),l=this._getOriginFromCorner(i,s),c=t[this.centeredKey],u={target:i,action:h,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:n.x-i.left,offsetY:n.y-i.top,originX:l.x,originY:l.y,ex:n.x,ey:n.y,lastX:n.x,lastY:n.y,theta:e(i.angle),width:i.width*i.scaleX,shiftKey:t.shiftKey,altKey:c,original:T.util.saveObjectTransform(i)};this._shouldCenterTransform(i,h,c)&&(u.originX="center",u.originY="center"),u.original.originX=l.x,u.original.originY=l.y,this._currentTransform=u,this._beforeTransform(t)}},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_drawSelection:function(t){var e=this._groupSelector,i=new T.Point(e.ex,e.ey),r=T.util.transformPoint(i,this.viewportTransform),n=new T.Point(e.ex+e.left,e.ey+e.top),s=T.util.transformPoint(n,this.viewportTransform),o=Math.min(r.x,s.x),a=Math.min(r.y,s.y),h=Math.max(r.x,s.x),l=Math.max(r.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(o,a,h-o,l-a)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,o+=c,a+=c,h-=c,l-=c,T.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(o,a,h-o,l-a))},findTarget:function(t,e){if(!this.skipTargetFind){var r,n,s=this.getPointer(t,!0),o=this._activeObject,a=this.getActiveObjects(),h=i(t),l=a.length>1&&!e||1===a.length;if(this.targets=[],l&&o._findTargetCorner(s,h))return o;if(a.length>1&&!e&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;r=o,n=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return t[this.altSelectionKey]&&c&&r&&c!==r&&(c=r,this.targets=n),c}},_checkTarget:function(t,e,i){if(e&&e.visible&&e.evented&&e.containsPoint(t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;if(!this.isTargetTransparent(e,i.x,i.y))return!0}},_searchPossibleTargets:function(t,e){for(var i,r,n=t.length;n--;){var s=t[n],o=s.group?this._normalizePointer(s.group,e):e;if(this._checkTarget(o,s,e)){(i=t[n]).subTargetCheck&&i instanceof T.Group&&(r=this._searchPossibleTargets(i._objects,e))&&this.targets.push(r);break}}return i},restorePointerVpt:function(t){return T.util.transformPoint(t,T.util.invertTransform(this.viewportTransform))},getPointer:function(e,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var r,n=t(e),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,h=o.height||0;a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,i||(n=this.restorePointerVpt(n));var l=this.getRetinaScaling();return 1!==l&&(n.x/=l,n.y/=l),r=0===a||0===h?{width:1,height:1}:{width:s.width/a,height:s.height/h},{x:n.x*r.width,y:n.y*r.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),e=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),T.util.addClass(i,"upper-canvas "+t),this.wrapperEl.appendChild(i),this._copyCanvasStyle(e,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=T.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),T.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),T.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.width||t.width,i=this.height||t.height;T.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),t.width=e,t.height=i,T.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var t=this._activeObject;return t?"activeSelection"===t.type&&t._objects?t._objects.slice(0):[t]:[]},_onObjectRemoved:function(t){t===this._activeObject&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),t===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",t)},_fireSelectionEvents:function(t,e){var i=!1,r=this.getActiveObjects(),n=[],s=[];t.forEach((function(t){-1===r.indexOf(t)&&(i=!0,t.fire("deselected",{e,target:t}),s.push(t))})),r.forEach((function(r){-1===t.indexOf(r)&&(i=!0,r.fire("selected",{e,target:r}),n.push(r))})),t.length>0&&r.length>0?i&&this.fire("selection:updated",{e,selected:n,deselected:s}):r.length>0?this.fire("selection:created",{e,selected:n}):t.length>0&&this.fire("selection:cleared",{e,deselected:s})},setActiveObject:function(t,e){var i=this.getActiveObjects();return this._setActiveObject(t,e),this._fireSelectionEvents(i,e),this},_setActiveObject:function(t,e){return this._activeObject!==t&&!!this._discardActiveObject(e,t)&&!t.onSelect({e})&&(this._activeObject=t,!0)},_discardActiveObject:function(t,e){var i=this._activeObject;if(i){if(i.onDeselect({e:t,object:e}))return!1;this._activeObject=null}return!0},discardActiveObject:function(t){var e=this.getActiveObjects(),i=this.getActiveObject();return e.length&&this.fire("before:selection:cleared",{target:i,e:t}),this._discardActiveObject(t),this._fireSelectionEvents(e,t),this},dispose:function(){var t=this.wrapperEl;return this.removeListeners(),t.removeChild(this.upperCanvasEl),t.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(t){T.util.cleanUpJsdomNode(this[t]),this[t]=void 0}.bind(this)),t.parentNode&&t.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,T.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(t){var e=this._activeObject;e&&e._renderControls(t)},_toObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(t),n=this.callSuper("_toObject",t,e,i);return this._unwindGroupTransformOnObject(t,r),n},_realizeGroupTransformOnObject:function(t){if(t.group&&"activeSelection"===t.group.type&&this._activeObject===t.group){var e={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){e[i]=t[i]})),T.util.addTransformToObject(t,this._activeObject.calcOwnMatrix()),e}return null},_unwindGroupTransformOnObject:function(t,e){e&&t.set(e)},_setSVGObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(e);this.callSuper("_setSVGObject",t,e,i),this._unwindGroupTransformOnObject(e,r)},setViewportTransform:function(t){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),T.StaticCanvas.prototype.setViewportTransform.call(this,t)}}),T.StaticCanvas)"prototype"!==r&&(T.Canvas[r]=T.StaticCanvas[r])}(),function(){var t=T.util.addListener,e=T.util.removeListener,i={passive:!1};function r(t,e){return t.button&&t.button===e-1}T.util.object.extend(T.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(t,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(t,e){var r=this.upperCanvasEl,n=this._getEventPrefix();t(T.window,"resize",this._onResize),t(r,n+"down",this._onMouseDown),t(r,n+"move",this._onMouseMove,i),t(r,n+"out",this._onMouseOut),t(r,n+"enter",this._onMouseEnter),t(r,"wheel",this._onMouseWheel),t(r,"contextmenu",this._onContextMenu),t(r,"dblclick",this._onDoubleClick),t(r,"dragover",this._onDragOver),t(r,"dragenter",this._onDragEnter),t(r,"dragleave",this._onDragLeave),t(r,"drop",this._onDrop),this.enablePointerEvents||t(r,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&e in eventjs&&(eventjs[e](r,"gesture",this._onGesture),eventjs[e](r,"drag",this._onDrag),eventjs[e](r,"orientation",this._onOrientationChange),eventjs[e](r,"shake",this._onShake),eventjs[e](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(e,"remove");var t=this._getEventPrefix();e(T.document,t+"up",this._onMouseUp),e(T.document,"touchend",this._onTouchEnd,i),e(T.document,t+"move",this._onMouseMove,i),e(T.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t});var i=this;this._hoveredTargets.forEach((function(r){i.fire("mouse:out",{target:e,e:t}),r&&e.fire("mouseout",{e:t})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(t){t.isEditing&&t.hiddenTextarea.focus()}))},_onMouseEnter:function(t){this._currentTransform||this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onDragOver:function(t){t.preventDefault();var e=this._simpleEventHandler("dragover",t);this._fireEnterLeaveEvents(e,t)},_onDrop:function(t){return this._simpleEventHandler("drop:before",t),this._simpleEventHandler("drop",t)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onDoubleClick:function(t){this._cacheTransformEventData(t),this._handleEvent(t,"dblclick"),this._resetTransformEventData(t)},getPointerId:function(t){var e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1},_isMainEvent:function(t){return!0===t.isPrimary||!1!==t.isPrimary&&("touchend"===t.type&&0===t.touches.length||!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();t(T.document,"touchend",this._onTouchEnd,i),t(T.document,"touchmove",this._onMouseMove,i),e(n,s+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();e(n,s+"move",this._onMouseMove,i),t(T.document,s+"up",this._onMouseUp),t(T.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var n=this._getEventPrefix();e(T.document,"touchend",this._onTouchEnd,i),e(T.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){t(s.upperCanvasEl,n+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(r)&&(e(T.document,s+"up",this._onMouseUp),e(T.document,s+"move",this._onMouseMove,i),t(n,s+"move",this._onMouseMove,i))},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t){var e=this._activeObject;return!!(!!e!=!!t||e&&t&&e!==t)||(e&&e.isEditing,!1)},__onMouseUp:function(t){var e,i=this._currentTransform,n=this._groupSelector,s=!1,o=!n||0===n.left&&0===n.top;if(this._cacheTransformEventData(t),e=this._target,this._handleEvent(t,"up:before"),r(t,3))this.fireRightClick&&this._handleEvent(t,"up",3,o);else{if(r(t,2))return this.fireMiddleClick&&this._handleEvent(t,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(t);else if(this._isMainEvent(t)){if(i&&(this._finalizeCurrentTransform(t),s=i.actionPerformed),!o){var a=e===this._activeObject;this._maybeGroupObjects(t),s||(s=this._shouldRender(e)||!a&&e===this._activeObject)}var h,l;if(e){if(h=e._findTargetCorner(this.getPointer(t,!0),T.util.isTouchEvent(t)),e.selectable&&e!==this._activeObject&&"up"===e.activeOn)this.setActiveObject(e,t),s=!0;else{var c=e.controls[h],u=c&&c.getMouseUpHandler(t,e,c);u&&u(t,i,(l=this.getPointer(t)).x,l.y)}e.isMoving=!1}if(i&&(i.target!==e||i.corner!==h)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(t,e,c);l=l||this.getPointer(t),f&&f(t,i,l.x,l.y)}this._setCursorFromEvent(t,e),this._handleEvent(t,"up",1,o),this._groupSelector=null,this._currentTransform=null,e&&(e.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(t,e){var i=this.findTarget(e),r=this.targets,n={e,target:i,subTargets:r};if(this.fire(t,n),i&&i.fire(t,n),!r)return i;for(var s=0;s1&&(e=new T.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(e,t))},_collectObjects:function(t){for(var e,i=[],r=this._groupSelector.ex,n=this._groupSelector.ey,s=r+this._groupSelector.left,o=n+this._groupSelector.top,a=new T.Point(v(r,s),v(n,o)),h=new T.Point(y(r,s),y(n,o)),l=!this.selectionFullyContained,c=r===s&&n===o,u=this._objects.length;u--&&!((e=this._objects[u])&&e.selectable&&e.visible&&(l&&e.intersectsWithRect(a,h,!0)||e.isContainedWithinRect(a,h,!0)||l&&e.containsPoint(a,null,!0)||l&&e.containsPoint(h,null,!0))&&(i.push(e),c)););return i.length>1&&(i=i.filter((function(e){return!e.onSelect({e:t})}))),i},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t),this.setCursor(this.defaultCursor),this._groupSelector=null}}),T.util.object.extend(T.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,r=(t.multiplier||1)*(t.enableRetinaScaling?this.getRetinaScaling():1),n=this.toCanvasElement(r,t);return T.util.toDataURL(n,e,i)},toCanvasElement:function(t,e){t=t||1;var i=((e=e||{}).width||this.width)*t,r=(e.height||this.height)*t,n=this.getZoom(),s=this.width,o=this.height,a=n*t,h=this.viewportTransform,l=(h[4]-(e.left||0))*t,c=(h[5]-(e.top||0))*t,u=this.interactive,d=[a,0,0,a,l,c],f=this.enableRetinaScaling,g=T.util.createCanvasElement(),_=this.contextTop;return g.width=i,g.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=h,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=_,g}}),T.util.object.extend(T.StaticCanvas.prototype,{loadFromJSON:function(t,e,i){if(t){var r="string"==typeof t?JSON.parse(t):T.util.object.clone(t),n=this,s=r.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(t){n.clear(),n._setBgOverlay(r,(function(){s?n._enlivenObjects([s],(function(i){n.clipPath=i[0],n.__setupCanvas.call(n,r,t,o,e)})):n.__setupCanvas.call(n,r,t,o,e)}))}),i),this}},__setupCanvas:function(t,e,i,r){var n=this;e.forEach((function(t,e){n.insertAt(t,e)})),this.renderOnAddRemove=i,delete t.objects,delete t.backgroundImage,delete t.overlayImage,delete t.background,delete t.overlay,this._setOptions(t),this.renderAll(),r&&r()},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(t.backgroundImage||t.overlayImage||t.background||t.overlay){var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,r),this.__setBgOverlay("overlayImage",t.overlayImage,i,r),this.__setBgOverlay("backgroundColor",t.background,i,r),this.__setBgOverlay("overlayColor",t.overlay,i,r)}else e&&e()},__setBgOverlay:function(t,e,i,r){var n=this;if(!e)return i[t]=!0,void(r&&r());"backgroundImage"===t||"overlayImage"===t?T.util.enlivenObjects([e],(function(e){n[t]=e[0],i[t]=!0,r&&r()})):this["set"+T.util.string.capitalize(t,!0)](e,(function(){i[t]=!0,r&&r()}))},_enlivenObjects:function(t,e,i){t&&0!==t.length?T.util.enlivenObjects(t,(function(t){e&&e(t)}),null,i):e&&e([])},_toDataURL:function(t,e){this.clone((function(i){e(i.toDataURL(t))}))},_toDataURLWithMultiplier:function(t,e,i){this.clone((function(r){i(r.toDataURLWithMultiplier(t,e))}))},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData((function(e){e.loadFromJSON(i,(function(){t&&t(e)}))}))},cloneWithoutData:function(t){var e=T.util.createCanvasElement();e.width=this.width,e.height=this.height;var i=new T.Canvas(e);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),t&&t(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(t){t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,r=t.width,n=t.height,s=e.maxCacheSideLimit,o=e.minCacheSideLimit;if(r<=s&&n<=s&&r*n<=i)return rc&&(t.zoomX/=r/c,t.width=c,t.capped=!0),n>u&&(t.zoomY/=n/u,t.height=u,t.capped=!0),t},_getCacheCanvasDimensions:function(){var t=this.getTotalObjectScaling(),e=this._getTransformedDimensions(0,0),i=e.x*t.scaleX/this.scaleX,r=e.y*t.scaleY/this.scaleY;return{width:i+2,height:r+2,zoomX:t.scaleX,zoomY:t.scaleY,x:i,y:r}},_updateCacheCanvas:function(){var t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){var i=t._currentTransform.target,r=t._currentTransform.action;if(this===i&&r.slice&&"scale"===r.slice(0,5))return!1}var n,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),h=e.minCacheSideLimit,l=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=l!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,_=f||g,p=0,m=0,v=!1;if(f){var y=this._cacheCanvas.width,S=this._cacheCanvas.height,C=l>y||c>S;v=C||(l<.9*y||c<.9*S)&&y>h&&S>h,C&&!a.capped&&(l>h||c>h)&&(p=.1*l,m=.1*c)}return this instanceof e.Text&&this.path&&(_=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,m+=this.getHeightOfLine(0)*this.zoomY),!!_&&(v?(o.width=Math.ceil(l+p),o.height=Math.ceil(c+m)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),n=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-n)+n,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=l,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t){var e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,i=this.calcTransformMatrix(!e);t.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:e.version,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(t),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype;return i.stateProperties.forEach((function(e){"left"!==e&&"top"!==e&&(t[e]===i[e]&&delete t[e],Array.isArray(t[e])&&Array.isArray(i[e])&&0===t[e].length&&0===i[e].length&&delete t[e])})),t},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var t=e.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(t.scaleX),scaleY:Math.abs(t.scaleY)}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();e*=r*n,i*=r*n}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,i){var r="scaleX"===t||"scaleY"===t,n=this[t]!==i,s=!1;return r&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,n&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(t)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(t),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),t.restore())},renderCache:function(t){t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,t.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(t,i){if(t.save(),i.inverted?t.globalCompositeOperation="destination-out":t.globalCompositeOperation="destination-in",i.absolutePositioned){var r=e.util.invertTransform(this.calcTransformMatrix());t.transform(r[0],r[1],r[2],r[3],r[4],r[5])}i.transform(t),t.scale(1/i.zoomX,1/i.zoomY),t.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),t.restore()},drawObject:function(t,e){var i=this.fill,r=this.stroke;e?(this.fill="black",this.stroke="",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath),this.fill=i,this.stroke=r},_drawClipPath:function(t,e){e&&(e.canvas=this.canvas,e.shouldCache(),e._transformDone=!0,e.renderCache({forClipping:!0}),this.drawClipPathOnCache(t,e))},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity},_setStrokeStyles:function(t,e){var i=e.stroke;i&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(t,i):(t.strokeStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,i)):t.strokeStyle=e.stroke)},_setFillStyles:function(t,e){var i=e.fill;i&&(i.toLive?(t.fillStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,e.fill)):t.fillStyle=i)},_setClippingProperties:function(t){t.globalAlpha=1,t.strokeStyle="transparent",t.fillStyle="#000000"},_setLineDash:function(t,e){e&&0!==e.length&&(1&e.length&&e.push.apply(e,e),t.setLineDash(e))},_renderControls:function(t,i){var r,n,s,a=this.getViewportTransform(),h=this.calcTransformMatrix();n=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,h=e.util.multiplyTransformMatrices(a,h),r=e.util.qrDecompose(h),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),t.rotate(o(this.group?r.angle:this.angle)),i.forActiveSelection||this.group?n&&this.drawBordersInGroup(t,r,i):n&&this.drawBorders(t,i),s&&this.drawControls(t,i),t.restore()},_setShadow:function(t){if(this.shadow){var i,r=this.shadow,n=this.canvas,s=n&&n.viewportTransform[0]||1,o=n&&n.viewportTransform[3]||1;i=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),n&&n._isRetinaScaling()&&(s*=e.devicePixelRatio,o*=e.devicePixelRatio),t.shadowColor=r.color,t.shadowBlur=r.blur*e.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,t.shadowOffsetX=r.offsetX*s*i.scaleX,t.shadowOffsetY=r.offsetY*o*i.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(!e||!e.toLive)return{offsetX:0,offsetY:0};var i=e.gradientTransform||e.patternTransform,r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;return"percentage"===e.gradientUnits?t.transform(this.width,0,0,this.height,r,n):t.transform(1,0,0,1,r,n),i&&t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:r,offsetY:n}},_renderPaintInOrder:function(t){"stroke"===this.paintFirst?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))},_render:function(){},_renderFill:function(t){this.fill&&(t.save(),this._setFillStyles(t,this),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform&&this.group){var e=this.getObjectScaling();t.scale(1/e.scaleX,1/e.scaleY)}else this.strokeUniform&&t.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}},_applyPatternForTransformedGradient:function(t,i){var r,n=this._limitCacheSize(this._getCacheCanvasDimensions()),s=e.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=n.x/this.scaleX/o,h=n.y/this.scaleY/o;s.width=a,s.height=h,(r=s.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(a,0),r.lineTo(a,h),r.lineTo(0,h),r.closePath(),r.translate(a/2,h/2),r.scale(n.zoomX/this.scaleX/o,n.zoomY/this.scaleY/o),this._applyPatternGradientTransform(r,i),r.fillStyle=i.toLive(t),r.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(o*this.scaleX/n.zoomX,o*this.scaleY/n.zoomY),t.strokeStyle=r.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var t=e.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",t.scaleX),this.set("scaleY",t.scaleY),this.angle=t.angle,this.skewX=t.skewX,this.skewY=0}},_removeTransformMatrix:function(t){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=e.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,t&&(this.scaleX*=t.scaleX,this.scaleY*=t.scaleY,this.cropX=t.cropX,this.cropY=t.cropY,i.x+=t.offsetLeft,i.y+=t.offsetTop,this.width=t.width,this.height=t.height),this.setPositionByOrigin(i,"center","center")},clone:function(t,i){var r=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(r,t):e.Object._fromObject("Object",r,t)},cloneAsImage:function(t,i){var r=this.toCanvasElement(i);return t&&t(new e.Image(r)),this},toCanvasElement:function(t){t||(t={});var i=e.util,r=i.saveObjectTransform(this),n=this.group,s=this.shadow,o=Math.abs,a=(t.multiplier||1)*(t.enableRetinaScaling?e.devicePixelRatio:1);delete this.group,t.withoutTransform&&i.resetObjectTransform(this),t.withoutShadow&&(this.shadow=null);var h,l,c,u,d=e.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,_={x:0,y:0};g&&(l=g.blur,h=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),_.x=2*Math.round(o(g.offsetX)+l)*o(h.scaleX),_.y=2*Math.round(o(g.offsetY)+l)*o(h.scaleY)),c=f.width+_.x,u=f.height+_.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new e.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===t.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new e.Point(p.width/2,p.height/2),"center","center");var m=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,t);return this.shadow=s,this.set("canvas",m),n&&(this.group=n),this.set(r).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(t){return t||(t={}),e.util.toDataURL(this.toCanvasElement(t),t.format||"png",t.quality||1)},isType:function(t){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},rotate:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var r=new e.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){e.runningAnimations&&e.runningAnimations.cancelByTarget(this)}}),e.util.createAccessors&&e.util.createAccessors(e.Object),i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.ENLIVEN_PROPS=["clipPath"],e.Object._fromObject=function(t,i,n,s){var o=e[t];i=r(i,!0),e.util.enlivenPatterns([i.fill,i.stroke],(function(t){void 0!==t[0]&&(i.fill=t[0]),void 0!==t[1]&&(i.stroke=t[1]),e.util.enlivenObjectEnlivables(i,i,(function(){var t=s?new o(i[s],i):new o(i);n&&n(t)}))}))},e.Object.__uid=0)}(e),S=T.util.degreesToRadians,C={left:-.5,center:0,right:.5},b={top:-.5,center:0,bottom:.5},T.util.object.extend(T.Object.prototype,{translateToGivenOrigin:function(t,e,i,r,n){var s,o,a,h=t.x,l=t.y;return"string"==typeof e?e=C[e]:e-=.5,"string"==typeof r?r=C[r]:r-=.5,"string"==typeof i?i=b[i]:i-=.5,"string"==typeof n?n=b[n]:n-=.5,o=n-i,((s=r-e)||o)&&(a=this._getTransformedDimensions(),h=t.x+s*a.x,l=t.y+o*a.y),new T.Point(h,l)},translateToCenterPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,e,i,"center","center");return this.angle?T.util.rotatePoint(r,t,S(this.angle)):r},translateToOriginPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,"center","center",e,i);return this.angle?T.util.rotatePoint(r,t,S(this.angle)):r},getCenterPoint:function(){var t=new T.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(t,e,i){var r,n,s=this.getCenterPoint();return r=void 0!==e&&void 0!==i?this.translateToGivenOrigin(s,"center","center",e,i):new T.Point(this.left,this.top),n=new T.Point(t.x,t.y),this.angle&&(n=T.util.rotatePoint(n,s,-S(this.angle))),n.subtractEquals(r)},setPositionByOrigin:function(t,e,i){var r=this.translateToCenterPoint(t,e,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(t){var e,i,r=S(this.angle),n=this.getScaledWidth(),s=T.util.cos(r)*n,o=T.util.sin(r)*n;e="string"==typeof this.originX?C[this.originX]:this.originX-.5,i="string"==typeof t?C[t]:t-.5,this.left+=s*(i-e),this.top+=o*(i-e),this.setCoords(),this.originX=t},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var t=T.util,e=t.degreesToRadians,i=t.multiplyTransformMatrices,r=t.transformPoint;t.object.extend(T.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(t,e){return e?t?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),t?this.aCoords:this.lineCoords)},getCoords:function(t,e){return i=this._getCoords(t,e),[new T.Point(i.tl.x,i.tl.y),new T.Point(i.tr.x,i.tr.y),new T.Point(i.br.x,i.br.y),new T.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r);return"Intersection"===T.Intersection.intersectPolygonRectangle(n,t,e).status},intersectsWithObject:function(t,e,i){return"Intersection"===T.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i)).status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=e?t.aCoords:t.lineCoords,s=0,o=t._getImageLines(n);s<4;s++)if(!t.containsPoint(r[s],o))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var n=this._getCoords(i,r),s=(e=e||this._getImageLines(n),this._findCrossPoints(t,e));return 0!==s&&s%2==1},isOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,t).some((function(t){return t.x<=i.x&&t.x>=e.x&&t.y<=i.y&&t.y>=e.y}))||!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_containsCenterOfCanvas:function(t,e,i){var r={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this.getCoords(!0,t).every((function(t){return(t.x>=i.x||t.x<=e.x)&&(t.y>=i.y||t.y<=e.y)}))&&this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s=0;for(var o in e)if(!((n=e[o]).o.y=t.y&&n.d.y>=t.y||(n.o.x===n.d.x&&n.o.x>=t.x?r=n.o.x:(i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(t.y-0*t.x-(n.o.y-i*n.o.x))/(0-i)),r>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(e,i){var r=this.getCoords(e,i);return t.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,r=e.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=n,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,r,n=(e=e||{}).noStyle,s=e.reviver,o=n?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,l=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=h&&h.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],_=t.indexOf("COMMON_PARTS"),p=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+T.Object.__uid++,r='\n'+h.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,l,n?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),t[_]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),h&&g.push(r),g.push(t.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var t=T.util.object.extend,e="stateProperties";function i(e,i,r){var n={};r.forEach((function(t){n[t]=e[t]})),t(e[i],n,!0)}function r(t,e,i){if(t===e)return!0;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var n=0,s=t.length;n=0;h--)if(n=a[h],this.isControlVisible(n)&&(r=this._getImageLines(e?this.oCoords[n].touchCorner:this.oCoords[n].corner),0!==(i=this._findCrossPoints({x:s,y:o},r))&&i%2==1))return this.__corner=n,n;return!1},forEachControl:function(t){for(var e in this.controls)t(this.controls[e],e,this)},_setCornerCoords:function(){var t=this.oCoords;for(var e in t){var i=this.controls[e];t[e].corner=i.calcCornerCoords(this.angle,this.cornerSize,t[e].x,t[e].y,!1),t[e].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,t[e].x,t[e].y,!0)}},drawSelectionBackground:function(e){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;e.save();var i=this.getCenterPoint(),r=this._calculateCurrentDimensions(),n=this.canvas.viewportTransform;return e.translate(i.x,i.y),e.scale(1/n[0],1/n[3]),e.rotate(t(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-r.x/2,-r.y/2,r.x,r.y),e.restore(),this},drawBorders:function(t,e){e=e||{};var i=this._calculateCurrentDimensions(),r=this.borderScaleFactor,n=i.x+r,s=i.y+r,o=void 0!==e.hasControls?e.hasControls:this.hasControls,a=!1;return t.save(),t.strokeStyle=e.borderColor||this.borderColor,this._setLineDash(t,e.borderDashArray||this.borderDashArray),t.strokeRect(-n/2,-s/2,n,s),o&&(t.beginPath(),this.forEachControl((function(e,i,r){e.withConnection&&e.getVisibility(r,i)&&(a=!0,t.moveTo(e.x*n,e.y*s),t.lineTo(e.x*n+e.offsetX,e.y*s+e.offsetY))})),a&&t.stroke()),t.restore(),this},drawBordersInGroup:function(t,e,i){i=i||{};var r=T.util.sizeAfterTransform(this.width,this.height,e),n=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=r.x+n*(s?this.canvas.getZoom():e.scaleX)+o,h=r.y+n*(s?this.canvas.getZoom():e.scaleY)+o;return t.save(),this._setLineDash(t,i.borderDashArray||this.borderDashArray),t.strokeStyle=i.borderColor||this.borderColor,t.strokeRect(-a/2,-h/2,a,h),t.restore(),this},drawControls:function(t,e){e=e||{},t.save();var i,r,n=this.canvas.getRetinaScaling();return t.setTransform(n,0,0,n,0,0),t.strokeStyle=t.fillStyle=e.cornerColor||this.cornerColor,this.transparentCorners||(t.strokeStyle=e.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(t,e.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(n,s,o){r=o.oCoords[s],n.getVisibility(o,s)&&(i&&(r=T.util.transformPoint(r,i)),n.render(t,r.x,r.y,e,o))})),t.restore(),this},isControlVisible:function(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)},setControlVisible:function(t,e){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e,this},setControlsVisibility:function(t){for(var e in t||(t={}),t)this.setControlVisible(e,t[e]);return this},onDeselect:function(){},onSelect:function(){}})}(),T.util.object.extend(T.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(e){t.set("left",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxCenterObjectV:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(e){t.set("top",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxRemove:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(e){t.set("opacity",e),s.requestRenderAll(),n()},onComplete:function(){s.remove(t),r()}})}}),T.util.object.extend(T.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var t,e,i=[],r=[];for(t in arguments[0])i.push(t);for(var n=0,s=i.length;n-1||n&&s.colorProperties.indexOf(n[1])>-1,a=n?this.get(n[0])[n[1]]:this.get(t);"from"in i||(i.from=a),o||(e=~e.indexOf("=")?a+parseFloat(e.replace("=","")):parseFloat(e));var h={target:this,startValue:i.from,endValue:e,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(t,e,r){return i.abort.call(s,t,e,r)},onChange:function(e,o,a){n?s[n[0]][n[1]]=e:s.set(t,e),r||i.onChange&&i.onChange(e,o,a)},onComplete:function(t,e,n){r||(s.setCoords(),i.onComplete&&i.onComplete(t,e,n))}};return o?T.util.animateColor(h.startValue,h.endValue,h.duration,h):T.util.animate(h)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n={x1:1,x2:1,y1:1,y2:1};function s(t,e){var i=t.origin,r=t.axis1,n=t.axis2,s=t.dimension,o=e.nearest,a=e.center,h=e.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(r),this.get(n));case a:return Math.min(this.get(r),this.get(n))+.5*this.get(s);case h:return Math.max(this.get(r),this.get(n))}}}e.Line?e.warn("fabric.Line is already defined"):(e.Line=e.util.createClass(e.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:e.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(t,e){t||(t=[0,0,0,0]),this.callSuper("initialize",e),this.set("x1",t[0]),this.set("y1",t[1]),this.set("x2",t[2]),this.set("y2",t[3]),this._setWidthHeight(e)},_setWidthHeight:function(t){t||(t={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in t?t.left:this._getLeftToOriginX(),this.top="top"in t?t.top:this._getTopToOriginY()},_set:function(t,e){return this.callSuper("_set",t,e),void 0!==n[t]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(t){t.beginPath();var e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;var i=t.strokeStyle;t.strokeStyle=this.stroke||t.fillStyle,this.stroke&&this._renderStroke(t),t.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(t){return i(this.callSuper("toObject",t),this.calcLinePoints())},_getNonTransformedDimensions:function(){var t=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t},calcLinePoints:function(){var t=this.x1<=this.x2?-1:1,e=this.y1<=this.y2?-1:1,i=t*this.width*.5,r=e*this.height*.5;return{x1:i,x2:t*this.width*-.5,y1:r,y2:e*this.height*-.5}},_toSVG:function(){var t=this.calcLinePoints();return["\n']}}),e.Line.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),e.Line.fromElement=function(t,r,n){n=n||{};var s=e.parseAttributes(t,e.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];r(new e.Line(o,i(s,n)))},e.Line.fromObject=function(t,i){var n=r(t,!0);n.points=[t.x1,t.y1,t.x2,t.y2],e.Object._fromObject("Line",n,(function(t){delete t.points,i&&i(t)}),"points")})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians;e.Circle?e.warn("fabric.Circle is already defined."):(e.Circle=e.util.createClass(e.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:e.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,r=(this.endAngle-this.startAngle)%360;if(0===r)t=["\n'];else{var n=i(this.startAngle),s=i(this.endAngle),o=this.radius;t=['180?"1":"0")+" 1"," "+e.util.cos(s)*o+" "+e.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),e.Circle.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),e.Circle.fromElement=function(t,i){var r,n=e.parseAttributes(t,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=n)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");n.left=(n.left||0)-n.radius,n.top=(n.top||0)-n.radius,i(new e.Circle(n))},e.Circle.fromObject=function(t,i){e.Object._fromObject("Circle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={});e.Triangle?e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),e.Triangle.fromObject=function(t,i){return e.Object._fromObject("Triangle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=2*Math.PI;e.Ellipse?e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,i,!1),t.restore(),this._renderPaintInOrder(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){var r=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,i(new e.Ellipse(r))},e.Ellipse.fromObject=function(t,i){e.Object._fromObject("Ellipse",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Rect?e.warn("fabric.Rect is already defined"):(e.Rect=e.util.createClass(e.Object,{stateProperties:e.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+r-e,o),a&&t.bezierCurveTo(s+r-h*e,o,s+r,o+h*i,s+r,o+i),t.lineTo(s+r,o+n-i),a&&t.bezierCurveTo(s+r,o+n-h*i,s+r-h*e,o+n,s+r-e,o+n),t.lineTo(s+e,o+n),a&&t.bezierCurveTo(s+h*e,o+n,s,o+n-h*i,s,o+n-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r,n){if(!t)return r(null);n=n||{};var s=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new e.Rect(i(n?e.util.object.clone(n):{},s));o.visible=o.visible&&o.width>0&&o.height>0,r(o)},e.Rect.fromObject=function(t,i){return e.Object._fromObject("Rect",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.toFixed,o=e.util.projectStrokeOnPoints;e.Polyline?e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:e.Object.prototype.cacheProperties.concat("points"),initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._setPositionDimensions(e)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(t){var e,i=this._calcDimensions(t),r=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-r,this.height=i.height-r,t.fromSVG||(e=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+r/2,y:i.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),void 0===t.left&&(this.left=t.fromSVG?i.left:e.x),void 0===t.top&&(this.top=t.fromSVG?i.top:e.y),this.pathOffset={x:i.left+this.width/2+r/2,y:i.top+this.height/2+r/2}},_calcDimensions:function(){var t=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,e=r(t,"x")||0,i=r(t,"y")||0;return{left:e,top:i,width:(n(t,"x")||0)-e,height:(n(t,"y")||0)-i}},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},_toSVG:function(){for(var t=[],i=this.pathOffset.x,r=this.pathOffset.y,n=e.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(t){var e,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-r,this.points[0].y-n);for(var s=0;s"},toObject:function(t){return n(this.callSuper("toObject",t),{path:this.path.map((function(t){return t.slice()}))})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=e.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,t)+", "+o(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var t,n,s=[],o=[],a=0,h=0,l=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(t){var i=!!this.group;return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(i&&e.util.removeTransformFromObject(t,this.group.calcTransformMatrix()),this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,i){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(t,i);if("canvas"===t)for(;r--;)this._objects[r]._set(t,i);e.Object.prototype._set.call(this,t,i)},toObject:function(t){var i=this.includeDefaultValues,r=this._objects.filter((function(t){return!t.excludeFromExport})).map((function(e){var r=e.includeDefaultValues;e.includeDefaultValues=i;var n=e.toObject(t);return e.includeDefaultValues=r,n})),n=e.Object.prototype.toObject.call(this,t);return n.objects=r,n},toDatalessObject:function(t){var i,r=this.sourcePath;if(r)i=r;else{var n=this.includeDefaultValues;i=this._objects.map((function(e){var i=e.includeDefaultValues;e.includeDefaultValues=n;var r=e.toDatalessObject(t);return e.includeDefaultValues=i,r}))}var s=e.Object.prototype.toDatalessObject.call(this,t);return s.objects=i,s},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=e.Object.prototype.shouldCache.call(this);if(t)for(var i=0,r=this._objects.length;i\n"],i=0,r=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+h+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var l=this.fill;this.fill=null,t=["\t\n'],this.fill=l}return"fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return T.util.loadImage(t,(function(t,r){this.setElement(t,i),this._setWidthHeight(),e&&e(this,r)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||r>e&&n>e)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=n);T.filterBackend||(T.filterBackend=T.initFilterBackend());var o=T.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,h=s.width,l=s.height;o.width=h,o.height=l,this._element=o,this._lastScaleX=t.scaleX=r,this._lastScaleY=t.scaleY=n,T.filterBackend.applyFilters([t],s,h,l,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(t){if(t=(t=t||this.filters||[]).filter((function(t){return t&&!t.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===t.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var e=this._originalElement,i=e.naturalWidth||e.width,r=e.naturalHeight||e.height;if(this._element===this._originalElement){var n=T.util.createCanvasElement();n.width=i,n.height=r,this._element=n,this._filteredEl=n}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,r),this._lastScaleX=1,this._lastScaleY=1;return T.filterBackend||(T.filterBackend=T.initFilterBackend()),T.filterBackend.applyFilters(t,this._originalElement,i,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(t){T.util.setImageSmoothing(t,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)},drawCacheOnCanvas:function(t){T.util.setImageSmoothing(t,this.imageSmoothing),T.Object.prototype.drawCacheOnCanvas.call(this,t)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(t){var e=this._element;if(e){var i=this._filterScalingX,r=this._filterScalingY,n=this.width,s=this.height,o=Math.min,a=Math.max,h=a(this.cropX,0),l=a(this.cropY,0),c=e.naturalWidth||e.width,u=e.naturalHeight||e.height,d=h*i,f=l*r,g=o(n*i,c-d),_=o(s*r,u-f),p=-n/2,m=-s/2,v=o(n,c/i-h),y=o(s,u/r-l);e&&t.drawImage(e,d,f,g,_,p,m,v,y)}},_needsResize:function(){var t=this.getTotalObjectScaling();return t.scaleX!==this._lastScaleX||t.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(t,e){this.setElement(T.util.getById(t),e),T.util.addClass(this.getElement(),T.Image.CSS_CANVAS)},_initConfig:function(t){t||(t={}),this.setOptions(t),this._setWidthHeight(t)},_initFilters:function(t,e){t&&t.length?T.util.enlivenObjects(t,(function(t){e&&e(t)}),"fabric.Image.filters"):e&&e()},_setWidthHeight:function(t){t||(t={});var e=this.getElement();this.width=t.width||e.naturalWidth||e.width||0,this.height=t.height||e.naturalHeight||e.height||0},parsePreserveAspectRatioAttribute:function(){var t,e=T.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,r=this._element.height,n=1,s=1,o=0,a=0,h=0,l=0,c=this.width,u=this.height,d={width:c,height:u};return!e||"none"===e.alignX&&"none"===e.alignY?(n=c/i,s=u/r):("meet"===e.meetOrSlice&&(t=(c-i*(n=s=T.util.findScaleToFit(this._element,d)))/2,"Min"===e.alignX&&(o=-t),"Max"===e.alignX&&(o=t),t=(u-r*s)/2,"Min"===e.alignY&&(a=-t),"Max"===e.alignY&&(a=t)),"slice"===e.meetOrSlice&&(t=i-c/(n=s=T.util.findScaleToCover(this._element,d)),"Mid"===e.alignX&&(h=t/2),"Max"===e.alignX&&(h=t),t=r-u/s,"Mid"===e.alignY&&(l=t/2),"Max"===e.alignY&&(l=t),i=c/n,r=u/s)),{width:i,height:r,scaleX:n,scaleY:s,offsetLeft:o,offsetTop:a,cropX:h,cropY:l}}}),T.Image.CSS_CANVAS="canvas-img",T.Image.prototype.getSvgSrc=T.Image.prototype.getSrc,T.Image.fromObject=function(t,e){var i=T.util.object.clone(t);T.util.loadImage(i.src,(function(t,r){r?e&&e(null,!0):T.Image.prototype._initFilters.call(i,i.filters,(function(r){i.filters=r||[],T.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(r){i.resizeFilter=r[0],T.util.enlivenObjectEnlivables(i,i,(function(){var r=new T.Image(t,i);e(r,!1)}))}))}))}),null,i.crossOrigin)},T.Image.fromURL=function(t,e,i){T.util.loadImage(t,(function(t,r){e&&e(new T.Image(t,i),r)}),null,i&&i.crossOrigin)},T.Image.ATTRIBUTE_NAMES=T.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),T.Image.fromElement=function(t,i,r){var n=T.parseAttributes(t,T.Image.ATTRIBUTE_NAMES);T.Image.fromURL(n["xlink:href"],i,e(r?T.util.object.clone(r):{},n))})}(e),T.util.object.extend(T.Object.prototype,{_getAngleValueForStraighten:function(){var t=this.angle%360;return t>0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(t){var e=function(){},i=(t=t||{}).onComplete||e,r=t.onChange||e,n=this;return T.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.rotate(t),r()},onComplete:function(){n.setCoords(),i()}})}}),T.util.object.extend(T.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function t(t,e){var i="precision "+e+" float;\nvoid main(){}",r=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(r,i),t.compileShader(r),!!t.getShaderParameter(r,t.COMPILE_STATUS)}function e(t){t&&t.tileSize&&(this.tileSize=t.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}T.isWebglSupported=function(e){if(T.isLikelyNode)return!1;e=e||T.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),r=i.getContext("webgl")||i.getContext("experimental-webgl"),n=!1;if(r){T.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),n=T.maxTextureSize>=e;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(t(r,s[o])){T.webGlPrecision=s[o];break}}return this.isSupported=n,n},T.WebglFilterBackend=e,e.prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var n="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&s){var o=T.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(T.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=E);var h,l,c={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),O.call(c,this.gl,c),l=window.performance.now()-h,h=window.performance.now(),E.call(c,this.gl,c),l>window.performance.now()-h?(this.imageBuffer=a,this.copyGLTo2D=E):this.copyGLTo2D=O}},createWebGLCanvas:function(t,e){var i=T.util.createCanvasElement();i.width=t,i.height=e;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},n=i.getContext("webgl",r);n||(n=i.getContext("experimental-webgl",r)),n&&(n.clearColor(0,0,0,0),this.canvas=i,this.gl=n)},applyFilters:function(t,e,i,r,n,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,e));var h={originalWidth:e.width||e.originalWidth,originalHeight:e.height||e.originalHeight,sourceWidth:i,sourceHeight:r,destinationWidth:i,destinationHeight:r,context:a,sourceTexture:this.createTexture(a,i,r,!o&&e),targetTexture:this.createTexture(a,i,r),originalTexture:o||this.createTexture(a,i,r,!o&&e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:n},l=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,l),t.forEach((function(t){t&&t.applyTo(h)})),function(t){var e=t.targetCanvas,i=e.width,r=e.height,n=t.destinationWidth,s=t.destinationHeight;i===n&&r===s||(e.width=n,e.height=s)}(h),this.copyGLTo2D(a,h),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(h.sourceTexture),a.deleteTexture(h.targetTexture),a.deleteFramebuffer(l),n.getContext("2d").setTransform(1,0,0,1,0,0),h},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(t,e,i,r){var n=t.createTexture();return t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),r?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,i,0,t.RGBA,t.UNSIGNED_BYTE,null),n},getCachedTexture:function(t,e){if(this.textureCache[t])return this.textureCache[t];var i=this.createTexture(this.gl,e.width,e.height,e);return this.textureCache[t]=i,i},evictCachesForKey:function(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])},copyGLTo2D:O,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var t=this.gl,e={renderer:"",vendor:""};if(!t)return e;var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var r=t.getParameter(i.UNMASKED_RENDERER_WEBGL),n=t.getParameter(i.UNMASKED_VENDOR_WEBGL);r&&(e.renderer=r.toLowerCase()),n&&(e.vendor=n.toLowerCase())}return this.gpuInfo=e,e}}}(),function(){var t=function(){};function e(){}T.Canvas2dFilterBackend=e,e.prototype={evictCachesForKey:t,dispose:t,clearWebGLCaches:t,resources:{},applyFilters:function(t,e,i,r,n){var s=n.getContext("2d");s.drawImage(e,0,0,i,r);var o={sourceWidth:i,sourceHeight:r,imageData:s.getImageData(0,0,i,r),originalEl:e,originalImageData:s.getImageData(0,0,i,r),canvasEl:n,ctx:s,filterBackend:this};return t.forEach((function(t){t.applyTo(o)})),o.imageData.width===i&&o.imageData.height===r||(n.width=o.imageData.width,n.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),T.Image=T.Image||{},T.Image.filters=T.Image.filters||{},T.Image.filters.BaseFilter=T.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},createProgram:function(t,e,i){e=e||this.fragmentSource,i=i||this.vertexSource,"highp"!==T.webGlPrecision&&(e=e.replace(/precision highp float/g,"precision "+T.webGlPrecision+" float"));var r=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(r,i),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+t.getShaderInfoLog(r));var n=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(n,e),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+t.getShaderInfoLog(n));var s=t.createProgram();if(t.attachShader(s,r),t.attachShader(s,n),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+t.getProgramInfoLog(s));var o=this.getAttributeLocations(t,s),a=this.getUniformLocations(t,s)||{};return a.uStepW=t.getUniformLocation(s,"uStepW"),a.uStepH=t.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(t,e){return{aPosition:t.getAttribLocation(e,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(t,e,i){var r=e.aPosition,n=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,n),t.enableVertexAttribArray(r),t.vertexAttribPointer(r,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW)},_setupFrameBuffer:function(t){var e,i,r=t.context;t.passes>1?(e=t.destinationWidth,i=t.destinationHeight,t.sourceWidth===e&&t.sourceHeight===i||(r.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(r,e,i)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(t){t.passes--,t.pass++;var e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e},isNeutralState:function(){var t=this.mainParameter,e=T.Image.filters[this.type].prototype;if(t){if(Array.isArray(e[t])){for(var i=e[t].length;i--;)if(this[t][i]!==e[t][i])return!1;return!0}return e[t]===this[t]}return!1},applyTo:function(t){t.webgl?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)},retrieveShader:function(t){return t.programCache.hasOwnProperty(this.type)||(t.programCache[this.type]=this.createProgram(t.context)),t.programCache[this.type]},applyToWebGL:function(t){var e=t.context,i=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(i.program),this.sendAttributeData(e,i.attributeLocations,t.aPosition),e.uniform1f(i.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(i.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,i.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(t,e,i){t.activeTexture(i),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)},unbindAdditionalTexture:function(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(t){this[this.mainParameter]=t},sendUniformData:function(){},createHelpLayer:function(t){if(!t.helpLayer){var e=document.createElement("canvas");e.width=t.sourceWidth,e.height=t.sourceHeight,t.helpLayer=e}},toObject:function(){var t={type:this.type},e=this.mainParameter;return e&&(t[e]=this[e]),t},toJSON:function(){return this.toObject()}}),T.Image.filters.BaseFilter.fromObject=function(t,e){var i=new T.Image.filters[t.type](t);return e&&e(i),i},function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.ColorMatrix=r(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(t){this.callSuper("initialize",t),this.matrix=this.matrix.slice(0)},applyTo2d:function(t){var e,i,r,n,s,o=t.imageData.data,a=o.length,h=this.matrix,l=this.colorsOnly;for(s=0;s=S||o<0||o>=y||(h=4*(a*y+o),l=p[f*m+d],e+=_[h]*l,i+=_[h+1]*l,r+=_[h+2]*l,w||(n+=_[h+3]*l));b[s]=e,b[s+1]=i,b[s+2]=r,b[s+3]=w?_[s+3]:n}t.imageData=C},getUniformLocations:function(t,e){return{uMatrix:t.getUniformLocation(e,"uMatrix"),uOpaque:t.getUniformLocation(e,"uOpaque"),uHalfSize:t.getUniformLocation(e,"uHalfSize"),uSize:t.getUniformLocation(e,"uSize")}},sendUniformData:function(t,e){t.uniform1fv(e.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Grayscale=r(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(t){var e,i,r=t.imageData.data,n=r.length,s=this.mode;for(e=0;el[0]&&n>l[1]&&s>l[2]&&r 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var i,r,n,s,o,a,h,l=t.imageData.data,c=l.length,u=1-this.alpha;i=(h=new e.Color(this.color).getSource())[0]*this.alpha,r=h[1]*this.alpha,n=h[2]*this.alpha;for(var d=0;d=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;var i=(e*=Math.PI)/t;return a(e)/e*a(i)/i}},applyTo2d:function(t){var e=t.imageData,i=this.scaleX,r=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/r;var n,s=e.width,a=e.height,h=o(s*i),l=o(a*r);"sliceHack"===this.resizeType?n=this.sliceByTwo(t,s,a,h,l):"hermite"===this.resizeType?n=this.hermiteFastResize(t,s,a,h,l):"bilinear"===this.resizeType?n=this.bilinearFiltering(t,s,a,h,l):"lanczos"===this.resizeType&&(n=this.lanczosResize(t,s,a,h,l)),t.imageData=n},sliceByTwo:function(t,i,n,s,o){var a,h,l=t.imageData,c=.5,u=!1,d=!1,f=i*c,g=n*c,_=e.filterBackend.resources,p=0,m=0,v=i,y=0;for(_.sliceByTwo||(_.sliceByTwo=document.createElement("canvas")),((a=_.sliceByTwo).width<1.5*i||a.height=e)){M=r(1e3*s(T-C.x)),S[M]||(S[M]={});for(var P=b.y-y;P<=b.y+y;P++)P<0||P>=o||(L=r(1e3*s(P-C.y)),S[M][L]||(S[M][L]=f(n(i(M*p,2)+i(L*m,2))/1e3)),(x=S[M][L])>0&&(E+=x,I+=x*c[O=4*(P*e+T)],R+=x*c[O+1],A+=x*c[O+2],D+=x*c[O+3]))}d[O=4*(w*a+h)]=I/E,d[O+1]=R/E,d[O+2]=A/E,d[O+3]=D/E}return++h1&&L<-1||(y=2*L*L*L-3*L*L+1)>0&&(x+=y*f[3+(M=4*(D+E*e))],C+=y,f[M+3]<255&&(y=y*f[M+3]/250),b+=y*f[M],w+=y*f[M+1],T+=y*f[M+2],S+=y)}_[v]=b/S,_[v+1]=w/S,_[v+2]=T/S,_[v+3]=x/C}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Contrast=r(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(t){if(0!==this.contrast){var e,i=t.imageData.data,r=i.length,n=Math.floor(255*this.contrast),s=259*(n+255)/(255*(259-n));for(e=0;e1&&(e=1/this.aspectRatio):this.aspectRatio<1&&(e=this.aspectRatio),t=e*this.blur*.12,this.horizontal?i[0]=t:i[1]=t,i}}),i.Blur.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Gamma=r(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(t){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,t)},applyTo2d:function(t){var e,i=t.imageData.data,r=this.gamma,n=i.length,s=1/r[0],o=1/r[1],a=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),e=0,n=256;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){var e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){if(t.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":t.textBaseline="middle";break;case"ascender":t.textBaseline="top";break;case"descender":t.textBaseline="bottom"}t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;et&&(t=r)}return t},_renderTextLine:function(t,e,i,r,n,s){this._renderChars(t,e,i,r,n,s)},_renderTextLinesBackground:function(t){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var e,i,r,n,s,o,a,h=t.fillStyle,l=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,_=this._textLines.length;g<_;g++)if(e=this.getHeightOfLine(g),this.textBackgroundColor||this.styleHas("textBackgroundColor",g)){r=this._textLines[g],i=this._getLineLeftOffset(g),d=0,u=0,n=this.getValueOfPropertyAt(g,0,"textBackgroundColor");for(var p=0,m=r.length;p=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:h,numOfSpaces:0}},_setGraphemeOnPath:function(t,i,r){var n=t+i.kernedWidth/2,s=this.path,o=e.util.getPointOnPath(s.path,n,s.segmentsInfo);i.renderLeft=o.x-r.x,i.renderTop=o.y-r.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(t,e,i,r,n){var s,o=this.getCompleteStyleDeclaration(e,i),a=r?this.getCompleteStyleDeclaration(e,i-1):{},h=this._measureChar(t,o,r,a),l=h.kernedWidth,c=h.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),l+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:l,deltaY:o.deltaY};if(i>0&&!n){var d=this.__charBounds[e][i-1];u.left=d.left+d.width+h.kernedWidth-h.width}return u},getHeightOfLine:function(t){if(this.__lineHeights[t])return this.__lineHeights[t];for(var e=this._textLines[t],i=this.getHeightOfChar(t,0),r=1,n=e.length;r0){var E=v+s+u;"rtl"===this.direction&&(E=this.width-E-d),l&&m&&(t.fillStyle=m,t.fillRect(E,c+b*r+o,d,this.fontSize/15)),u=f.left,d=f.width,l=g,m=p,r=n,o=a}else d+=f.kernedWidth;E=v+s+u,"rtl"===this.direction&&(E=this.width-E-d),t.fillStyle=p,g&&p&&t.fillRect(E,c+b*r+o,d-C,this.fontSize/15),y+=i}else y+=i;this._removeShadow(t)}},_getFontDeclaration:function(t,i){var r=t||this,n=this.fontFamily,s=e.Text.genericFonts.indexOf(n.toLowerCase())>-1,o=void 0===n||n.indexOf("'")>-1||n.indexOf(",")>-1||n.indexOf('"')>-1||s?r.fontFamily:'"'+r.fontFamily+'"';return[e.isLikelyNode?r.fontWeight:r.fontStyle,e.isLikelyNode?r.fontStyle:r.fontWeight,i?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",o].join(" ")},render:function(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",t)))},_splitTextIntoLines:function(t){for(var i=t.split(this._reNewline),r=new Array(i.length),n=["\n"],s=[],o=0;o-1&&(t.underline=!0),t.textDecoration.indexOf("line-through")>-1&&(t.linethrough=!0),t.textDecoration.indexOf("overline")>-1&&(t.overline=!0),delete t.textDecoration)}T.IText=T.util.createClass(T.Text,T.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(t,e){this.callSuper("initialize",t,e),this.initBehavior()},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(t){this.clearContextTop(),this.callSuper("render",t),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(t){this.callSuper("_render",t)},clearContextTop:function(t){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this.canvas.contextTop,i=this.canvas.viewportTransform;e.save(),e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(e),this._clearTextArea(e),t||e.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this._getCursorBoundaries(),e=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(t,e):this.renderSelection(t,e),e.restore()}},_clearTextArea:function(t){var e=this.width+4,i=this.height+4;t.clearRect(-e/2,-i/2,e,i)},_getCursorBoundaries:function(t){void 0===t&&(t=this.selectionStart);var e=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(t);return{left:e,top:i,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(t){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var e,i,r,n,s=0,o=0,a=this.get2DCursorLocation(t);r=a.charIndex,i=a.lineIndex;for(var h=0;h0?o:0)},"rtl"===this.direction&&(n.left*=-1),this.cursorOffsetCache=n,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(r,n,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,h=t.topOffset,l=this.getValueOfPropertyAt(r,n,"deltaY");h+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(t,e),e.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,n,"fill"),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+t.leftOffset-a/2,h+t.top+l,a,s)},renderSelection:function(t,e){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,n=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(r),a=s.lineIndex,h=o.lineIndex,l=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=h;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),_=0,p=0;if(u===a&&(_=this.__charBounds[a][l].left),u>=a&&u1)&&(g/=this.lineHeight);var v=t.left+f+_,y=p-_,S=g,C=0;this.inCompositionMode?(e.fillStyle=this.compositionColor||"black",S=1,C=g):e.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),e.fillRect(v,t.top+t.topOffset+C,y,S),t.topOffset+=d}},getCurrentCharFontSize:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fontSize")},getCurrentCharColor:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fill")},_getCurrentCharIndex:function(){var t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}}),T.IText.fromObject=function(e,i){if(t(e),e.styles)for(var r in e.styles)for(var n in e.styles[r])t(e.styles[r][n]);T.Object._fromObject("IText",e,i,"text")}}(),w=T.util.object.clone,T.util.object.extend(T.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var t=this;this.on("added",(function(){var e=t.canvas;e&&(e._hasITextHandlers||(e._hasITextHandlers=!0,t._initCanvasHandlers(e)),e._iTextInstances=e._iTextInstances||[],e._iTextInstances.push(t))}))},initRemovedHandler:function(){var t=this;this.on("removed",(function(){var e=t.canvas;e&&(e._iTextInstances=e._iTextInstances||[],T.util.removeFromArray(e._iTextInstances,t),0===e._iTextInstances.length&&(e._hasITextHandlers=!1,t._removeCanvasHandlers(e)))}))},_initCanvasHandlers:function(t){t._mouseUpITextHandler=function(){t._iTextInstances&&t._iTextInstances.forEach((function(t){t.__isMousedown=!1}))},t.on("mouse:up",t._mouseUpITextHandler)},_removeCanvasHandlers:function(t){t.off("mouse:up",t._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(t,e,i,r){var n;return n={isAborted:!1,abort:function(){this.isAborted=!0}},t.animate("_currentCursorOpacity",e,{duration:i,onComplete:function(){n.isAborted||t[r]()},onChange:function(){t.canvas&&t.selectionStart===t.selectionEnd&&t.renderCursorOrSelection()},abort:function(){return n.isAborted}}),n},_onTickComplete:function(){var t=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){t._currentTickCompleteState=t._animateCursor(t,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(t){var e=this,i=t?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){e._tick()}),i)},abortCursorAnimation:function(){var t=this._currentTickState||this._currentTickCompleteState,e=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,t&&e&&e.clearContext(e.contextTop||e.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(t){var e=0,i=t-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i--;for(;/\S/.test(this._text[i])&&i>-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i++;for(;/\S/.test(this._text[i])&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this._text[i])&&i0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var r=i.slice(0,t),n=T.util.string.graphemeSplit(r).length;if(t===e)return{selectionStart:n,selectionEnd:n};var s=i.slice(t,e);return{selectionStart:n,selectionEnd:n+T.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var r=i.slice(0,t).join("").length;return t===e?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),r=i.lineIndex,n=i.charIndex,s=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},l=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/l,d=c.height/l,f=u-s,g=d-s,_=c.clientWidth/u,p=c.clientHeight/d;return h=T.util.transformPoint(h,a),(h=T.util.transformPoint(h,this.canvas.viewportTransform)).x*=_,h.y*=p,h.x<0&&(h.x=0),h.x>f&&(h.x=f),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text,e=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,r,n=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=n.lineIndex,a=n.charIndex,h=s.lineIndex,l=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;i=l&&(r[c-d]=r[u],delete r[u])}},shiftLineStyles:function(t,e){var i=w(this.styles);for(var r in this.styles){var n=parseInt(r,10);n>t&&(this.styles[n+e]=i[n],i[n-e]||delete this.styles[n])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,e,i,r){var n,s={},o=!1,a=this._unwrappedTextLines[t].length===e;for(var h in i||(i=1),this.shiftLineStyles(t,i),this.styles[t]&&(n=this.styles[t][0===e?e:e-1]),this.styles[t]){var l=parseInt(h,10);l>=e&&(o=!0,s[l-e]=this.styles[t][h],a&&0===e||delete this.styles[t][h])}var c=!1;for(o&&!a&&(this.styles[t+i]=s,c=!0),c&&i--;i>0;)r&&r[i-1]?this.styles[t+i]={0:w(r[i-1])}:n?this.styles[t+i]={0:w(n)}:delete this.styles[t+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(t,e,i,r){this.styles||(this.styles={});var n=this.styles[t],s=n?w(n):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=e&&(n[a+i]=s[a],s[a-i]||delete n[a])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][e+i]=w(r[i]));else if(n)for(var h=n[e?e-1:1];h&&i--;)this.styles[t][e+i]=w(h)},insertNewStyleBlock:function(t,e,i){for(var r=this.get2DCursorLocation(e,!0),n=[0],s=0,o=0;o0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,n[0],i),i=i&&i.slice(n[0]+1)),s&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+n[0],s),o=1;o0?this.insertCharStyleObject(r.lineIndex+o,0,n[o],i):i&&this.styles[r.lineIndex+o]&&i[0]&&(this.styles[r.lineIndex+o][0]=i[0]),i=i&&i.slice(n[o]+1);n[o]>0&&this.insertCharStyleObject(r.lineIndex+o,0,n[o],i)},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}}),T.util.object.extend(T.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(t.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i=this.getLocalPointer(t),r=0,n=0,s=0,o=0,a=0,h=0,l=this._textLines.length;h0&&(o+=this._textLines[h-1].length+this.missingNewlineOffset(h-1));n=this._getLineLeftOffset(a)*this.scaleX,e=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+n);for(var c=0,u=e.length;cs||o<0?0:1);return this.flipX&&(a=n-a),a>this._text.length&&(a=this._text.length),a}}),T.util.object.extend(T.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=T.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):T.document.body.appendChild(this.hiddenTextarea),T.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),T.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),T.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),T.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(T.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){var e="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,r,n,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,h=this._text.length,l=a.length,c=l-h,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),_=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):l0&&(r+=(i=this.__charBounds[t][e-1]).left+i.width),r},getDownCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(n===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n+1,o);return this._textLines[n].slice(s).length+a+1+this.missingNewlineOffset(n)},_getSelectionForOffset:function(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||t.metaKey||33===t.keyCode)return-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n-1,o),h=this._textLines[n].slice(0,s),l=this.missingNewlineOffset(n-1);return-this._textLines[n-1].length+a-h.length+(1-l)},_getIndexOnLine:function(t,e){for(var i,r,n=this._textLines[t],s=this._getLineLeftOffset(t),o=0,a=0,h=n.length;ae){r=!0;var l=s-i,c=s,u=Math.abs(l-e);o=Math.abs(c-e)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,r){void 0===r&&(r=i),r>i&&this.removeStyleFromTo(i,r);var n=T.util.string.graphemeSplit(t);this.insertNewStyleBlock(n,i,e),this._text=[].concat(this._text.slice(0,i),n,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var t=T.util.toFixed,e=/ +/g;T.util.object.extend(T.Text.prototype,{_toSVG:function(){var t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(t){var e=this.getSvgTextDecoration(this);return[t.textBgRects.join(""),'\t\t",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,r=[],n=[],s=t;this._setSVGBg(n);for(var o=0,a=this._textLines.length;o",T.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(t,e,i,r){var n,s,o,a,h,l=this.getHeightOfLine(e),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[e];r+=l*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,_=f.length-1;g<=_;g++)h=g===_||this.charSpacing,u+=f[g],o=this.__charBounds[e][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!h&&this._reSpaceAndTab.test(f[g])&&(h=!0),h||(n=n||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(n,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,r)),u="",n=s,i+=d,d=0)},_pushTextBgRect:function(e,i,r,n,s,o){var a=T.Object.NUM_FRACTION_DIGITS;e.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,r){for(var n,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,l=0,c=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,r=0,n={},s=0;s0?(i=0,r++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[r])&&s>0&&(i++,r++),n[s]={line:e,offset:i},r+=t.graphemeLines[s].length,i+=t.graphemeLines[s].length;return n},styleHas:function(t,i){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[i];r&&(i=r.line)}return e.Text.prototype.styleHas.call(this,t,i)},isEmptyStyles:function(t){if(!this.styles)return!0;var e,i,r=0,n=!1,s=this._styleMap[t],o=this._styleMap[t+1];for(var a in s&&(t=s.line,r=s.offset),o&&(n=o.line===t,e=o.offset),i=void 0===t?this.styles:{line:this.styles[t]})for(var h in i[a])if(h>=r&&(!n||hr&&!p?(a.push(h),h=[],s=f,p=!0):s+=m,p||o||h.push(d),h=h.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>_&&(_=f);return v&&a.push(h),_+n>this.dynamicMinWidth&&(this.dynamicMinWidth=_-m+n),a},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var i=e.Text.prototype._splitTextIntoLines.call(this,t),r=this._wrapText(i.lines,this.width),n=new Array(r.length),s=0;s{},898:()=>{},245:()=>{}},T={};function x(t){var e=T[t];if(void 0!==e)return e.exports;var i=T[t]={exports:{}};return w[t](i,i.exports,x),i.exports}x.d=(t,e)=>{for(var i in e)x.o(e,i)&&!x.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},x.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var O={};(()=>{let t;x.d(O,{R:()=>t}),t="undefined"!=typeof document&&"undefined"!=typeof window?x(653).fabric:{version:"5.2.1"}})();var E=O.R; +import{Howl as t}from"dm-howler";const e="undefined"==typeof self;let i,r,n,s,o;if("undefined"!=typeof navigator&&(i=navigator,r=i.userAgent,n=i.platform,s=i.mediaDevices),!e){const t={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(r)||this.searchVersion(i.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=r.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(t){for(let e=0;e{let t=!1;if(l)try{(await s.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===o.browser&&o.version>66||"Safari"===o.browser&&o.version>13||"OPR"===o.browser&&o.version>43||"Edge"===o.browser&&o.version;const u=(()=>{if(!e&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"})(),d=" is not allowed to change after `createInstance` or `loadWasm` is called.",f=!e&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",g=!e&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",_=t=>{if(null==t)t=[];else{t=t instanceof Array?[...t]:[t];for(let i=0;it&&"object"==typeof t&&"function"==typeof t.then;const C="iPhone"==o.OS||"Android"==o.OS||"HarmonyOS"==o.OS?2048:4096;class b{constructor(){this._instanceID=void 0,this._ifSaveOriginalImageInACanvas=!1,this.oriCanvas=null,this.oriCanvasData=null,this.canvas=null,this.bFilterRegionInJs=!1,this._region=null,this._timeStartDecode=null,this._timeEnterInnerDBR=null,this._timeGetMessage=null,this.decodeRecords={},this.bDestroyed=!1,this._lastErrorCode=0,this._lastErrorString="",this._lastInnerDecodeDuration=0,this.intervalTime=0,this._intervalGetVideoFrame=0,this.array_getFrameTimeCost=[],this.array_decodeFrameTimeCost=[],this._indexCurrentDecodingFrame=0,this._bPauseScan=!1,this._intervalDetectVideoPause=1e3,this._soundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",this.beepSound=new t({src:["data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"],onplayerror:(t,e)=>{console.warn(`Sound '${t}' playback failure: ${e}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=C,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(t){((t,e)=>{const i=t;if(!i._pLoad.isEmpty)throw new Error("`license`"+d);i._license=e})(b,t)}static get productKeys(){return this._license}static set productKeys(t){b.license=t}static get handshakeCode(){return this._license}static set handshakeCode(t){b.license=t}static get organizationID(){return this._license}static set organizationID(t){b.license=t}static set sessionPassword(t){((t,e)=>{const i=t;if(!i._pLoad.isEmpty)throw new Error("`sessionPassword`"+d);i._sessionPassword=e})(b,t)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:a,worker:h,getUserMedia:l,camera:await c(),browser:o.browser,version:o.version,OS:o.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(t){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");b._engineResourcePath=(t=>{if(null==t&&(t="./"),!e){let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(t)}static get licenseServer(){return this._licenseServer}static set licenseServer(t){((t,e)=>{const i=t;if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+d);i._licenseServer=_(e)})(b,t)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(t){((t,e)=>{const i=t;if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+d);i._deviceFriendlyName=e||""})(b,t)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(t){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");b.__bUseFullFeature=t}static isImageSource(t){return!(!t||"object"!=typeof t||Array.isArray(t))&&"getImage"in t}static isDSImage(t){return!(!t||"object"!=typeof t||Array.isArray(t))&&("data"in t&&("width"in t&&("height"in t&&"pixelFormat"in t)))}static isDCEFrame(t){return!(!t||"object"!=typeof t||Array.isArray(t))&&("data"in t&&("region"in t&&("sx"in t&&("sy"in t&&("width"in t&&("height"in t&&("colorMode"in t&&("timeSpent"in t&&("timeStamp"in t&&("isCropped"in t&&("toCanvas"in t&&("_sWidth"in t&&("_sHeight"in t&&"_bUseWebGL"in t)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(t){this._ifSaveOriginalImageInACanvas=t}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(t){this._region=t,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var t;return null===(t=b._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",b.engineResourcePath)}static set defaultUIElementURL(t){b._defaultUIElementURL=t}static _fireHTTPSWarnning(){b.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{b.onWarning&&b.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new t({src:[this._soundSource],onplayerror:(t,e)=>{console.warn(`Sound '${t}' playback failure: ${e}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(t){this.bPlaySoundOnSuccessfulRead="never"!==t&&t}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(t){this.bVibrateOnSuccessfulRead="never"!==t&&t}set dce(t){this._dce=t}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(t){this._maxCvsSideLength=t,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",t)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;b._onLog&&b._onLog("_registerDCEControler()");const t=this.dce;this._dceControler=t._createControler();const e=this._dceControler;e.register(this),e.setDisiredValue(this,"refreshInterval",200),e.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(t){"ReferenceError"===t.name&&window&&(window.ResizeObserver=void 0)}const i=t.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{i?i===e._innerSetUI&&(await t.setUIElement(`${r.engineResourcePath}dce.ui.html`),e._innerSetUI=t.getUIElement()):(await t.setUIElement(`${r.engineResourcePath}dbr.ui.html`),e._innerSetUI=t.getUIElement())}catch(e){await t.setUIElement(r.defaultUIElementURL)}else i||await t.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async t=>{let e=await this._decode_DCEFrame(t,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let t=this._cloneDecodeResults(e);this.onImageRead(t)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let t of e)this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t));const{sx:i,sy:r,width:n,height:s,_sWidth:o,_sHeight:a}=t;b.recalculateResultLocation(e,i,r,o,a,n,s),this._drawResults(e)},t.on("cameraChange",this.callbackCameraChange),t.on("resolutionChange",this.callbackResolutionChange),t.on("cameraClose",this.callbackCameraClose),t.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(b._onLog&&b._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(t,e){if(null==t)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(t&&t.isCameraEnhancer)this.dce=t,await this._registerDCEControler(),this._imgSource=null;else{if(!b.isImageSource(t))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=t}e&&e.resultsHighlightBaseShapes&&(this._drawingItemNamespace=e.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:t,l:e,ls:i,sp:r,rmk:n}=(t=>{const e=t;if(e._pLoad.isEmpty){let t,i,r=e._license||"",n=JSON.parse(JSON.stringify(e._licenseServer)),s=e._sessionPassword,o=0;if(r.startsWith("t")||r.startsWith("f"))o=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))o=1;else{o=2;const e=r.indexOf(":");if(-1!=e&&(r=r.substring(e+1)),r.startsWith("DLS2")){let e=r.substring(4);try{e=atob(e)}catch(t){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const i=JSON.parse(e);if(r=i.handshakeCode?i.handshakeCode:i.organizationID?i.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===n.length){let t=[];i.mainServerURL&&(t[0]=i.mainServerURL),i.standbyServerURL&&(t[1]=i.standbyServerURL),n=_(t)}!s&&i.sessionPassword&&(s=i.sessionPassword),t=i.remark}("200001"===r||r.startsWith("200001-"))&&(n&&n.length||(r="")),r||(o=1)}if(o&&(globalThis.crypto||(i="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(i="Require https to use online key in this browser.")),i){if(1!==o)throw new Error(i);o=0,console.warn(i),e._lastErrorCode=-1,e._lastErrorString=i}return 1===o&&(r="",console.warn("Applying for a public trial license ...")),{lt:o,l:r,ls:n,sp:s,rmk:t}}throw new Error("Can't preprocess license again"+d)})(b);this._pLoad.task=async(s,a)=>{let h=b.engineResourcePath+b._workerName;b.engineResourcePath.startsWith(location.origin)||(h=await fetch(h).then((t=>t.blob())).then((t=>URL.createObjectURL(t)))),b._dbrWorker=new Worker(h),b._dbrWorker.onerror=t=>{let e=new Error(t.message);a(e)},b._dbrWorker.onmessage=async e=>{let i=e.data?e.data:e;switch(i.type){case"log":b._onLog&&b._onLog(i.message);break;case"load":{i.message&&(i.message=i.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let e,r=!1;1===t&&(r=!0),i.success?(b._dbrWorker.onerror=null,b._version=i.version+"(JS "+b._jsVersion+"."+b._jsEditVersion+")",b._onLog&&b._onLog("load dbr worker success"),i.message&&console.warn(i.message)):(e=new Error(i.message),e.stack=i.stack+"\n"+e.stack,r||111==i.ltsErrorCode&&-1!=i.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&b.showDialog(i.success?"warn":"error",i.message),i.success?s():a(e);break}case"task":{let t=i.id,e=i.body;try{b._taskCallbackMap.get(t)(e),b._taskCallbackMap.delete(t)}catch(e){throw b._taskCallbackMap.delete(t),e}break}default:b._onLog&&b._onLog(e)}},b._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:b.engineResourcePath,bUseFullFeature:b._bUseFullFeature,bd:b._bWasmDebug,v:b._jsVersion,brtk:!!t,bptk:1===t,l:e,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:o,fn:b.deviceFriendlyName,ls:i,sp:r,rmk:n})}}await this._pLoad}static async showDialog(t,e){await(async(t,e,i)=>{if(!t._bNeverShowDialog)try{let r=await fetch(t.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let s=document.createElement("div");s.innerHTML=n;let o=[];for(let t=0;t{if(t==e.target){a.remove();for(let t of o)t.remove()}}));else if(!l&&t.classList.contains("dls-license-icon-close"))l=t,t.addEventListener("click",(()=>{a.remove();for(let t of o)t.remove()}));else if(!c&&t.classList.contains("dls-license-icon-error"))c=t,"error"!=e&&t.remove();else if(!u&&t.classList.contains("dls-license-icon-warn"))u=t,"warn"!=e&&t.remove();else if(!d&&t.classList.contains("dls-license-msg-content")){d=t;let e=i;for(;e;){let i=e.indexOf("["),r=e.indexOf("]",i),n=e.indexOf("(",r),s=e.indexOf(")",n);if(-1==i||-1==r||-1==n||-1==s){t.appendChild(new Text(e));break}i>0&&t.appendChild(new Text(e.substring(0,i)));let o=document.createElement("a"),a=e.substring(i+1,r);o.innerText=a;let h=e.substring(n+1,s);o.setAttribute("href",h),o.setAttribute("target","_blank"),t.appendChild(o),e=e.substring(s+1)}}document.body.appendChild(a)}catch(e){t._onLog&&t._onLog(e.message||e)}})(this,t,e)}static async createInstanceInWorker(t=!1){return await b.loadWasm(),await new Promise(((e,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(t=>{if(t.success)return e(t.instanceID);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),b._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:t})}))}static async createInstance(){let t=new b;return t._instanceID=await b.createInstanceInWorker(),b._fireHTTPSWarnning(),t}async clearMapDecodeRecord(){return await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success)return t();{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:i,instanceID:this._instanceID})}))}async decode(t){b._onLog&&b._onLog("decode(source: any)"),b._onLog&&(this._timeStartDecode=Date.now());{let e={};return!this.region||this.region instanceof Array||(e.region=JSON.parse(JSON.stringify(this.region))),t instanceof Blob?await this._decode_Blob(t,e):t instanceof ArrayBuffer?await this._decode_ArrayBuffer(t,e):t instanceof Uint8Array||t instanceof Uint8ClampedArray?await this._decode_Uint8Array(t,e):t instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?await this._decode_Image(t,e):t instanceof HTMLCanvasElement?await this._decode_Canvas(t,e):t instanceof HTMLVideoElement?await this._decode_Video(t,e):"string"==typeof t?"data:image/"==t.substring(0,11)?await this._decode_Base64(t,e):await this._decode_Url(t,e):b.isDCEFrame(t)?(e.bCopyData=!0,await this._decode_DCEFrame(t,e)):b.isDSImage(t)?(e.bCopyData=!0,await this._decode_DSImage(t,e)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(t){let e={};return!this.region||this.region instanceof Array||(e.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(t,e)}async decodeUrl(t){let e={};return!this.region||this.region instanceof Array||(e.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(t,e)}async _decodeBuffer_Uint8Array(t,e,i,r,n,s){return await new Promise(((o,a)=>{let h=b._nextTaskID++;b._taskCallbackMap.set(h,(t=>{if(t.success){let e,i=b._onLog?Date.now():0;b._onLog&&b._onLog("worker return result: "+i),this._lastInnerDecodeDuration=t.duration;try{e=this._handleRetJsonString(t.decodeReturn)}catch(t){return a(t)}if(b._onLog){let t=Date.now();b._onLog("DBR time get result: "+i),b._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),b._onLog("DBR worker decode image cost: "+(i-this._timeEnterInnerDBR)),b._onLog("DBR worker handle results: "+(t-i)),b._onLog("Total decode image cost: "+(t-this._timeStartDecode))}return o(e)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,a(e)}})),this._timeEnterInnerDBR=Date.now(),b._onLog&&b._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),b._dbrWorker.postMessage({type:"decodeBuffer",id:h,instanceID:this._instanceID,body:{buffer:t,width:e,height:i,stride:r,format:n,config:s}},[t.buffer]),b._onLog&&s&&s.timeStamp&&b._onLog("decode image delay: "+(this._timeEnterInnerDBR-s.timeStamp))}))}async _decodeBuffer_Blob(t,e,i,r,n,s){b._onLog&&b._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const o=t.arrayBuffer?await t.arrayBuffer():await new Promise(((e,i)=>{let r=new FileReader;r.readAsArrayBuffer(t),r.onload=()=>{e(r.result)},r.onerror=()=>{i(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(o),e,i,r,n,s)}async decodeBuffer(t,e,i,r,n,s){let o;return b._onLog&&b._onLog("decodeBuffer(buffer,width,height,stride,format)"),b._onLog&&(this._timeStartDecode=Date.now()),t instanceof Uint8Array||t instanceof Uint8ClampedArray?o=await this._decodeBuffer_Uint8Array(t,e,i,r,n,s):t instanceof ArrayBuffer?o=await this._decodeBuffer_Uint8Array(new Uint8Array(t),e,i,r,n,s):t instanceof Blob&&(o=await this._decodeBuffer_Blob(t,e,i,r,n,s)),o}async _decodeFileInMemory_Uint8Array(t){return await new Promise(((e,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(t=>{if(t.success){let r;this._lastInnerDecodeDuration=t.duration;try{r=this._handleRetJsonString(t.decodeReturn)}catch(t){return i(t)}return e(r)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),b._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:t}})}))}async getRuntimeSettings(){return await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success){let e=JSON.parse(i.results);return null!=this.userDefinedRegion&&(e.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),t(e)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"getRuntimeSettings",id:i,instanceID:this._instanceID})}))}async updateRuntimeSettings(t){let e;if("string"==typeof t)if("speed"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region,e.deblurLevel=3,e.expectedBarcodesCount=0,e.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region,e.deblurLevel=5,e.expectedBarcodesCount=512,e.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region}else if("dense"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region,e.deblurLevel=9,e.expectedBarcodesCount=0,e.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,e.region=t.region,e.deblurLevel=3,e.expectedBarcodesCount=0,e.localizationModes=[2,8,0,0,0,0,0,0]}else e=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(e=JSON.parse(JSON.stringify(t)),e.region instanceof Array){let t=e.region;[t.regionLeft,t.regionTop,t.regionLeft,t.regionBottom,t.regionMeasuredByPercentage].some((t=>void 0!==t))&&(e.region={regionLeft:t.regionLeft||0,regionTop:t.regionTop||0,regionRight:t.regionRight||0,regionBottom:t.regionBottom||0,regionMeasuredByPercentage:t.regionMeasuredByPercentage||0})}}if(!b._bUseFullFeature){if(0!=(e.barcodeFormatIds&~(y.BF_ONED|y.BF_QR_CODE|y.BF_PDF417|y.BF_DATAMATRIX))||0!=e.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=e.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let t=e.region;if(t instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(t)),(t.regionLeft||t.regionTop||t.regionRight||t.regionBottom||t.regionMeasuredByPercentage)&&(t.regionLeft||t.regionTop||100!=t.regionRight||100!=t.regionBottom||!t.regionMeasuredByPercentage)?this.region=t:this.region=null,e.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((t,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.updateReturn)}catch(t){i(t)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),b._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(e)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=C,await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success)return t();{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"resetRuntimeSettings",id:i,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!b._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success)return t(i.results);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:i,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(t){if(!b._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof t)t=t;else{if("object"!=typeof t)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");t=JSON.stringify(t)}return await new Promise(((e,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(t=>{if(t.success){try{this._handleRetJsonString(t.initReturn)}catch(t){i(t)}return e()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}})),b._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:t}})}))}async _decode_Blob(t,e){b._onLog&&b._onLog("_decode_Blob(blob: Blob)");let i=null,r=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(t)}catch(t){}i||(r=await function(t){return new Promise(((e,i)=>{let r=URL.createObjectURL(t),n=new Image;n.dbrObjUrl=r,n.src=r,n.onload=()=>{e(n)},n.onerror=t=>{i(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}}))}(t));let n=await this._decode_Image(i||r,e);return i&&i.close(),n}async _decode_ArrayBuffer(t,e){return await this._decode_Blob(new Blob([t]),e)}async _decode_Uint8Array(t,e){return await this._decode_Blob(new Blob([t]),e)}async _decode_Image(t,e){b._onLog&&b._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),e=e||{};let i,r,n=t instanceof HTMLImageElement?t.naturalWidth:t.width,s=t instanceof HTMLImageElement?t.naturalHeight:t.height,o=Math.max(n,s);if(o>this._maxCvsSideLength){let t=this._maxCvsSideLength/o;i=Math.round(n*t),r=Math.round(s*t)}else i=n,r=s;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(t,0,0,n,s,0,0,i,r),t.dbrObjUrl&&URL.revokeObjectURL(t.dbrObjUrl),await this._decode_Canvas(a,e)}async _decode_Canvas(t,e){if(b._onLog&&b._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if(0===t.width||0===t.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=t,this.oriCanvasData=null);let i=(t.ctx2d||t.getContext("2d")).getImageData(0,0,t.width,t.height).data;return await this._decodeBuffer_Uint8Array(i,t.width,t.height,4*t.width,p.IPF_ABGR_8888,e)}async _decode_Video(t,e){if(b._onLog&&b._onLog("_decode_Video(video)"),!(t instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";e=e||{};let i,r,n=t.videoWidth,s=t.videoHeight,o=Math.max(n,s);if(o>this._maxCvsSideLength){let t=this._maxCvsSideLength/o;i=Math.round(n*t),r=Math.round(s*t)}else i=n,r=s;this.canvas||(this.canvas=document.createElement("canvas"));const a=this.canvas;a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d"));return a.ctx2d.drawImage(t,0,0,n,s,0,0,i,r),await this._decode_Canvas(a,e)}async _decode_DCEFrame(t,e){if(b._onLog&&b._onLog("_decode_DCEFrame(dceFrame)"),!b.isDCEFrame(t))return[];let i=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{width:r,height:n,colorMode:s,timeStamp:o}=t;let a;a=e&&e.bCopyData?new Uint8Array(t.data):t.data;let h=null;if(e?(h=JSON.parse(JSON.stringify(e)),h.timeStamp=o):h={timeStamp:o},"grey"===s)i=await this._decodeBuffer_Uint8Array(a,r,n,r,p.IPF_GrayScaled,h);else if("rgba"===s)i=await this._decodeBuffer_Uint8Array(a,r,n,4*r,p.IPF_ABGR_8888,h);else{if("bgra"!==s)throw new Error(`Color mode '${s}' is not supported to decode.`);i=await this._decodeBuffer_Uint8Array(a,r,n,4*r,p.IPF_ARGB_8888,h)}return i}async _decode_DSImage(t,e){if(b._onLog&&b._onLog("_decode_DSImage(dsImage)"),!b.isDSImage(t))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,pixelFormat:t.pixelFormat.toLowerCase(),data:new Uint8Array(t.data),toCanvas:function(){const t=document.createElement("canvas");let e;switch(t.width=this.width,t.height=this.height,this.pixelFormat){case"grey":e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{let r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{e(r.response)},r.onerror=()=>{i(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(i,e)}}async _decode_FilePath(t,e){throw b._onLog&&b._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(t,e,i,r,n,s,o){if(t.length>0)for(let a of t){let t=a.localizationResult;2==t.resultCoordinateType&&(t.x1*=.01*s,t.x2*=.01*s,t.x3*=.01*s,t.x4*=.01*s,t.y1*=.01*o,t.y2*=.01*o,t.y3*=.01*o,t.y4*=.01*o);let h=s/r,l=o/n;t.x1=t.x1/h+e,t.x2=t.x2/h+e,t.x3=t.x3/h+e,t.x4=t.x4/h+e,t.y1=t.y1/l+i,t.y2=t.y2/l+i,t.y3=t.y3/l+i,t.y4=t.y4/l+i,2==t.resultCoordinateType&&(t.x1*=100/r,t.x2*=100/r,t.x3*=100/r,t.x4*=100/r,t.y1*=100/n,t.y2*=100/n,t.y3*=100/n,t.y4*=100/n)}}static BarcodeReaderException(t,e){let i,r=m.DBR_UNKNOWN;return"number"==typeof t?(r=t,i=new Error(e)):i=new Error(t),i.code=r,i}_handleRetJsonString(t){let e=m;if(t.textResults){for(let e=0;e{let i=e.indexOf(":");t[e.substring(0,i)]=e.substring(i+1)})),i.exception=t}}return t.decodeRecords?this.decodeRecords=t.decodeRecords:this.decodeRecords={},this._lastErrorCode=t.exception,this._lastErrorString=t.description,t.exception&&!b._setWarnnedEx.has(t.description)&&(b._setWarnnedEx.add(t.description),console.warn(t.description)),t.textResults}if(t.exception==e.DBR_SUCCESS)return t.data;throw b.BarcodeReaderException(t.exception,t.description)}async setModeArgument(t,e,i,r){return await new Promise(((n,s)=>{let o=b._nextTaskID++;b._taskCallbackMap.set(o,(t=>{if(t.success){try{this._handleRetJsonString(t.setReturn)}catch(t){return s(t)}return n()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,s(e)}})),b._dbrWorker.postMessage({type:"setModeArgument",id:o,instanceID:this._instanceID,body:{modeName:t,index:e,argumentName:i,argumentValue:r}})}))}async getModeArgument(t,e,i){return await new Promise(((r,n)=>{let s=b._nextTaskID++;b._taskCallbackMap.set(s,(t=>{if(t.success){let e;try{e=this._handleRetJsonString(t.getReturn)}catch(t){return n(t)}return r(e)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}})),b._dbrWorker.postMessage({type:"getModeArgument",id:s,instanceID:this._instanceID,body:{modeName:t,index:e,argumentName:i}})}))}async getIntermediateResults(){return await new Promise(((t,e)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success)return t(i.results);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}})),b._dbrWorker.postMessage({type:"getIntermediateResults",id:i,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let t=await this.getIntermediateResults(),e=[];for(let i of t)if(i.dataType==v.IMRDT_IMAGE)for(let t of i.results){const i=t.bytes;let r;switch(b._onLog&&b._onLog(" "+i.length+" "+i.byteLength+" "+t.width+" "+t.height+" "+t.stride+" "+t.format),t.format){case p.IPF_ABGR_8888:r=new Uint8ClampedArray(i);break;case p.IPF_RGB_888:{const t=i.length/3;r=new Uint8ClampedArray(4*t);for(let e=0;e{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(i=>{if(i.success){let e=i.results;return e.intervalTime=this.intervalTime,e.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,e.soundOnSuccessfullRead=this.soundSource,e.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,e.vibrateDuration=this.vibrateDuration,e.captureAndDecodeInParallel=this.captureAndDecodeInParallel,t(e)}{let t=new Error(i.message);return t.stack+="\n"+i.stack,e(t)}})),b._dbrWorker.postMessage({type:"getScanSettings",id:i,instanceID:this._instanceID})}))}async updateScanSettings(t){if(!t)return;const e=JSON.parse(JSON.stringify(t));return e.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(e.intervalTime,0),delete e.intervalTime),e.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=e.whenToPlaySoundforSuccessfulRead,delete e.whenToPlaySoundforSuccessfulRead),e.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=e.soundOnSuccessfullRead,delete e.soundOnSuccessfullRead),e.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=e.whenToVibrateforSuccessfulRead,delete e.whenToVibrateforSuccessfulRead),e.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=e.vibrateDuration,delete e.vibrateDuration),e.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=e.captureAndDecodeInParallel,delete e.captureAndDecodeInParallel),await new Promise(((t,i)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success)return t();{let t=new Error(e.message);return t.stack+="\n"+e.stack,i(t)}})),b._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:e}})}))}_cloneDecodeResults(t){if(t instanceof Array){let e=[];for(let i of t)e.push(this._cloneDecodeResults(i));return e}{let e=t,i=JSON.parse(JSON.stringify(e,((t,e)=>"oriVideoCanvas"==t||"searchRegionCanvas"==t?void 0:e)));return i}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return b._onLog&&b._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));b._onLog&&b._onLog("======= once read ======="),b._onLog&&(this._timeStartDecode=Date.now());let t=null,e=null;if(this.dce)t=this._getVideoFrame();else if(this._imgSource&&(e=await this._imgSource.getImage(),!b.isDSImage(e)))throw new Error("Invalid DSImage.");if(!t&&!e)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let i=[];if(t){i=await this._decode_DCEFrame(t,{bScanner:!0,bCopyData:!1});let e=null;if(i&&i.length){const{sx:r,sy:n,width:s,height:o,_sWidth:a,_sHeight:h}=t;e=i.map((t=>({localizationResult:JSON.parse(JSON.stringify(t.localizationResult))}))),b.recalculateResultLocation(e,r,n,a,h,s,o)}this._drawResults(e)}else e&&(i=await this._decode_DSImage(e,{bScanner:!0,bCopyData:!1}));return i})().then((t=>{if(b._onLog&&b._onLog(t),this.dce&&this.captureAndDecodeInParallel){let t=this.array_decodeFrameTimeCost,e=this.array_getFrameTimeCost;const i=()=>{let i=0;if(e&&e.length){let r=Math.min(...t),n=Math.max(...e);r&&n&&(i=r-n)}else i=0;return i>0?i:0};(()=>{for(;t.length>=5;)t.shift();t.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=i()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&t.length){let e=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)e=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of t)if(0==i.resultState){e=!0;break}e&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&t.length){let e=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)e=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of t)if(0==i.resultState){e=!0;break}if(e)try{navigator.vibrate(this.vibrateDuration)}catch(t){console.warn("Vibration not allowed. User interaction required: "+(t.message||t))}}if(this.onImageRead){let e=this._cloneDecodeResults(t);for(let t of e)0!=t.resultState&&1!=t.resultState||this.onImageRead(e);this.onImageRead(e)}if(this.onUniqueRead)for(let e of t)0==e.resultState&&this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((t=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),b._onLog&&b._onLog(t.message||t),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==t.message||console.warn(t.message)}))}_getVideoFrame(){if(!this.dce)return null;let t;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;t=this.dce.getFrameFromBuffer();const e=t=>{if(!t)return;let e=t.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(e)};e(t)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),t=this.dce.getFrame();return t}_drawResults(t){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const e=this._dbrDrawingLayer;if(e.clearDrawingItems(),t&&t.length)for(let i of t){const t=i.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:t.x1,y:t.y1},{x:t.x2,y:t.y2},{x:t.x3,y:t.y3},{x:t.x4,y:t.y4}]);e.addDrawingItem(r)}}async startScanning(t){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let e=null;return this.dce&&(this.dce.isOpen()?(t&&this.dce.appendAndShowUI(),e=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):e=await this.dce.open(t),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),e):void 0}stopScanning(t){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",t))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(t){if(t&&t.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(b._onLog&&b._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let t=b._nextTaskID++;b._taskCallbackMap.set(t,(t=>{if(!t.success){let e=new Error(t.message);throw e.stack=t.stack+"\n"+e.stack,e}})),b._dbrWorker.postMessage({type:"destroyContext",id:t,instanceID:this._instanceID})}}b._jsVersion="9.2.12",b._jsEditVersion="20220727",b._version=`loading...(JS ${b._jsVersion}.${b._jsEditVersion})`,b._license=f,b._sessionPassword=g,b.browserInfo=o,b._workerName=`dbr-${b._jsVersion}.browser.worker.js`,b._engineResourcePath=u,b._licenseServer=[],b._deviceFriendlyName="",b._isShowRelDecodeTimeInResults=!1,b._bWasmDebug=!1,b._bNeverShowDialog=!1,b.__bUseFullFeature=!0,b._nextTaskID=0,b._taskCallbackMap=new Map,b._pLoad=new class extends Promise{constructor(t){let e,i;super(((t,r)=>{e=t,i=r})),this._s="pending",this.resolve=t=>{this.isPending&&(S(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,S(t)?e=t:"function"==typeof t&&(e=new Promise(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}},b._lastErrorCode=0,b._lastErrorString="",b._setWarnnedEx=new Set,b._defaultUIElementURL="@engineResourcePath/dbr.ui.html";var w={653:(t,e,i)=>{var r,n,s,o,a,h,l,c,u,d,f,g,_,p,m,v,y,S,C,b,w,T=T||{version:"5.2.1"};if(e.fabric=T,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?T.document=document:T.document=document.implementation.createHTMLDocument(""),T.window=window;else{var x=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;T.document=x.document,T.jsdomImplForWrapper=i(898).implForWrapper,T.nodeCanvas=i(245).Canvas,T.window=x,DOMParser=T.window.DOMParser}function O(t,e){var i=t.canvas,r=e.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var s=i.height-r.height;n.drawImage(i,0,s,r.width,r.height,0,0,r.width,r.height)}function E(t,e){var i=e.targetCanvas.getContext("2d"),r=e.destinationWidth,n=e.destinationHeight,s=r*n*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);t.readPixels(0,0,r,n,t.RGBA,t.UNSIGNED_BYTE,o);var h=new ImageData(a,r,n);i.putImageData(h,0,0)}T.isTouchSupported="ontouchstart"in T.window||"ontouchstart"in T.document||T.window&&T.window.navigator&&T.window.navigator.maxTouchPoints>0,T.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,T.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],T.DPI=96,T.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",T.commaWsp="(?:\\s+,?\\s*|,\\s*)",T.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,T.reNonWord=/[ \n\.,;!\?\-]/,T.fontPaths={},T.iMatrix=[1,0,0,1,0,0],T.svgNS="http://www.w3.org/2000/svg",T.perfLimitSizeTotal=2097152,T.maxCacheSideLimit=4096,T.minCacheSideLimit=256,T.charWidthsCache={},T.textureSize=2048,T.disableStyleCopyPaste=!1,T.enableGLFiltering=!0,T.devicePixelRatio=T.window.devicePixelRatio||T.window.webkitDevicePixelRatio||T.window.mozDevicePixelRatio||1,T.browserShadowBlurConstant=1,T.arcToSegmentsCache={},T.boundsOfCurveCache={},T.cachesBoundsOfCurve=!0,T.forceGLPutImageData=!1,T.initFilterBackend=function(){return T.enableGLFiltering&&T.isWebglSupported&&T.isWebglSupported(T.textureSize)?(console.log("max texture size: "+T.maxTextureSize),new T.WebglFilterBackend({tileSize:T.textureSize})):T.Canvas2dFilterBackend?new T.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=T),function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:T.util.array.fill(i,!1)}}function e(t,e){var i=function(){e.apply(this,arguments),this.off(t,i)}.bind(this);this.on(t,i)}T.Observable={fire:function(t,e){if(!this.__eventListeners)return this;var i=this.__eventListeners[t];if(!i)return this;for(var r=0,n=i.length;r-1||!!e&&this._objects.some((function(e){return"function"==typeof e.contains&&e.contains(t,!0)}))},complexity:function(){return this._objects.reduce((function(t,e){return t+(e.complexity?e.complexity():0)}),0)}},T.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof T.Gradient||this.set(e,new T.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof T.Pattern?i&&i():this.set(e,new T.Pattern(t,i))},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},r=e,n=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,h=Math.PI/2,T.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/h){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},sin:function(t){if(0===t)return 0;var e=1;switch(t<0&&(e=-1),t/h){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)},removeFromArray:function(t,e){var i=t.indexOf(e);return-1!==i&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*a},radiansToDegrees:function(t){return t/a},rotatePoint:function(t,e,i){var r=new T.Point(t.x-e.x,t.y-e.y),n=T.util.rotateVector(r,i);return new T.Point(n.x,n.y).addEquals(e)},rotateVector:function(t,e){var i=T.util.sin(e),r=T.util.cos(e);return{x:t.x*r-t.y*i,y:t.x*i+t.y*r}},createVector:function(t,e){return new T.Point(e.x-t.x,e.y-t.y)},calcAngleBetweenVectors:function(t,e){return Math.acos((t.x*e.x+t.y*e.y)/(Math.hypot(t.x,t.y)*Math.hypot(e.x,e.y)))},getHatVector:function(t){return new T.Point(t.x,t.y).multiply(1/Math.hypot(t.x,t.y))},getBisector:function(t,e,i){var r=T.util.createVector(t,e),n=T.util.createVector(t,i),s=T.util.calcAngleBetweenVectors(r,n),o=s*(0===T.util.calcAngleBetweenVectors(T.util.rotateVector(r,s),n)?1:-1)/2;return{vector:T.util.getHatVector(T.util.rotateVector(r,o)),angle:s}},projectStrokeOnPoints:function(t,e,i){var r=[],n=e.strokeWidth/2,s=e.strokeUniform?new T.Point(1/e.scaleX,1/e.scaleY):new T.Point(1,1),o=function(t){var e=n/Math.hypot(t.x,t.y);return new T.Point(t.x*e*s.x,t.y*e*s.y)};return t.length<=1||t.forEach((function(a,h){var l,c,u=new T.Point(a.x,a.y);0===h?(c=t[h+1],l=i?o(T.util.createVector(c,u)).addEquals(u):t[t.length-1]):h===t.length-1?(l=t[h-1],c=i?o(T.util.createVector(l,u)).addEquals(u):t[0]):(l=t[h-1],c=t[h+1]);var d,f,g=T.util.getBisector(u,l,c),_=g.vector,p=g.angle;if("miter"===e.strokeLineJoin&&(d=-n/Math.sin(p/2),f=new T.Point(_.x*d*s.x,_.y*d*s.y),Math.hypot(f.x,f.y)/n<=e.strokeMiterLimit))return r.push(u.add(f)),void r.push(u.subtract(f));d=-n*Math.SQRT2,f=new T.Point(_.x*d*s.x,_.y*d*s.y),r.push(u.add(f)),r.push(u.subtract(f))})),r},transformPoint:function(t,e,i){return i?new T.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new T.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t,e){if(e)for(var i=0;i0&&(e>r?e-=r:e=0,i>r?i-=r:i=0);var n,s=!0,o=t.getImageData(e,i,2*r||1,2*r||1),a=o.data.length;for(n=3;n=n?s-n:2*Math.PI-(n-s)}function s(t,e,i){for(var s=i[1],o=i[2],a=i[3],h=i[4],l=i[5],c=function(t,e,i,s,o,a,h){var l=Math.PI,c=h*l/180,u=T.util.sin(c),d=T.util.cos(c),f=0,g=0,_=-d*t*.5-u*e*.5,p=-d*e*.5+u*t*.5,m=(i=Math.abs(i))*i,v=(s=Math.abs(s))*s,y=p*p,S=_*_,C=m*v-m*y-v*S,b=0;if(C<0){var w=Math.sqrt(1-C/(m*v));i*=w,s*=w}else b=(o===a?-1:1)*Math.sqrt(C/(m*y+v*S));var x=b*i*p/s,O=-b*s*_/i,E=d*x-u*O+.5*t,I=u*x+d*O+.5*e,R=n(1,0,(_-x)/i,(p-O)/s),A=n((_-x)/i,(p-O)/s,(-_-x)/i,(-p-O)/s);0===a&&A>0?A-=2*l:1===a&&A<0&&(A+=2*l);for(var D=Math.ceil(Math.abs(A/l*2)),M=[],L=A/D,P=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),F=R+L,k=0;kb)for(var x=1,O=_.length;x2;for(e=e||0,l&&(a=t[2].xt[i-2].x?1:n.x===t[i-2].x?0:-1,h=n.y>t[i-2].y?1:n.y===t[i-2].y?0:-1),r.push(["L",n.x+a*e,n.y+h*e]),r},T.util.getPathSegmentsInfo=d,T.util.getBoundsOfCurve=function(e,i,r,n,s,o,a,h){var l;if(T.cachesBoundsOfCurve&&(l=t.call(arguments),T.boundsOfCurveCache[l]))return T.boundsOfCurveCache[l];var c,u,d,f,g,_,p,m,v=Math.sqrt,y=Math.min,S=Math.max,C=Math.abs,b=[],w=[[],[]];u=6*e-12*r+6*s,c=-3*e+9*r-9*s+3*a,d=3*r-3*e;for(var x=0;x<2;++x)if(x>0&&(u=6*i-12*n+6*o,c=-3*i+9*n-9*o+3*h,d=3*n-3*i),C(c)<1e-12){if(C(u)<1e-12)continue;0<(f=-d/u)&&f<1&&b.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(m=v(p)))/(2*c))&&g<1&&b.push(g),0<(_=(-u-m)/(2*c))&&_<1&&b.push(_));for(var O,E,I,R=b.length,A=R;R--;)O=(I=1-(f=b[R]))*I*I*e+3*I*I*f*r+3*I*f*f*s+f*f*f*a,w[0][R]=O,E=I*I*I*i+3*I*I*f*n+3*I*f*f*o+f*f*f*h,w[1][R]=E;w[0][A]=e,w[1][A]=i,w[0][A+1]=a,w[1][A+1]=h;var D=[{x:y.apply(null,w[0]),y:y.apply(null,w[1])},{x:S.apply(null,w[0]),y:S.apply(null,w[1])}];return T.cachesBoundsOfCurve&&(T.boundsOfCurveCache[l]=D),D},T.util.getPointOnPath=function(t,e,i){i||(i=d(t));for(var r=0;e-i[r].length>0&&r1e-4;)i=h(s),n=s,(r=o(l.x,l.y,i.x,i.y))+a>e?(s-=c,c/=2):(l=i,s+=c,a+=r);return i.angle=u(n),i}(s,e)}},T.util.transformPath=function(t,e,i){return i&&(e=T.util.multiplyTransformMatrices(e,[1,0,0,1,-i.x,-i.y])),t.map((function(t){for(var i=t.slice(0),r={},n=1;n=e}))}}}(),function(){function t(e,i,r){if(r)if(!T.isLikelyNode&&i instanceof Element)e=i;else if(i instanceof Array){e=[];for(var n=0,s=i.length;n57343)return t.charAt(e);if(55296<=i&&i<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var r=t.charCodeAt(e+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";var n=t.charCodeAt(e-1);if(55296>n||n>56319)throw"Low surrogate without preceding high surrogate";return!1}T.util.string={camelize:function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},capitalize:function(t,e){return t.charAt(0).toUpperCase()+(e?t.slice(1):t.slice(1).toLowerCase())},escapeXml:function(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(e){var i,r=0,n=[];for(r=0;r-1?t.prototype[n]=function(t){return function(){var i=this.constructor.superclass;this.constructor.superclass=r;var n=e[t].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==t)return n}}(n):t.prototype[n]=e[n],i&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function n(){}function s(e){for(var i=null,r=this;r.constructor.superclass;){var n=r.constructor.superclass.prototype[e];if(r[e]!==n){i=n;break}r=r.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,t.call(arguments,1)):i.call(this):console.log("tried to callSuper "+e+", method not found in prototype chain",this)}T.util.createClass=function(){var i=null,o=t.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(n.prototype=i.prototype,a.prototype=new n,i.subclasses.push(a));for(var h=0,l=o.length;h-1||"touch"===t.pointerType},d="string"==typeof(u=T.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,_=function(t){return t},d?_=function(t,e){return t.style.opacity=e,t}:f&&(_=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(g,e)):i.filter+=" alpha(opacity="+100*e+")",t}),T.util.setStyle=function(t,e){var i=t.style;if(!i)return t;if("string"==typeof e)return t.style.cssText+=";"+e,e.indexOf("opacity")>-1?_(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)"opacity"===r?_(t,e[r]):i["float"===r||"cssFloat"===r?void 0===i.styleFloat?"cssFloat":"styleFloat":r]=e[r];return t},function(){var t,e,i,r,n=Array.prototype.slice,s=function(t){return n.call(t,0)};try{t=s(T.document.childNodes)instanceof Array}catch(t){}function o(t,e){var i=T.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function a(t){for(var e=0,i=0,r=T.document.documentElement,n=T.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===T.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:i}}t||(s=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e}),e=T.document.defaultView&&T.document.defaultView.getComputedStyle?function(t,e){var i=T.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},i=T.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",T.util.makeElementUnselectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=T.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t},T.util.makeElementSelectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t},T.util.setImageSmoothing=function(t,e){t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=e},T.util.getById=function(t){return"string"==typeof t?T.document.getElementById(t):t},T.util.toArray=s,T.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},T.util.makeElement=o,T.util.wrapElement=function(t,e,i){return"string"==typeof e&&(e=o(e,i)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},T.util.getScrollLeftTop=a,T.util.getElementOffset=function(t){var i,r,n=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},h={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return o;for(var l in h)o[h[l]]+=parseInt(e(t,l),10)||0;return i=n.documentElement,void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect()),r=a(t),{left:s.left+r.left-(i.clientLeft||0)+o.left,top:s.top+r.top-(i.clientTop||0)+o.top}},T.util.getNodeCanvas=function(t){var e=T.jsdomImplForWrapper(t);return e._canvas||e._image},T.util.cleanUpJsdomNode=function(t){if(T.isLikelyNode){var e=T.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}T.util.request=function(e,i){i||(i={});var r=i.method?i.method.toUpperCase():"GET",n=i.onComplete||function(){},s=new T.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(n(s),s.onreadystatechange=t)},"GET"===r&&(o=null,"string"==typeof i.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,i.parameters))),s.open(r,e,!0),"POST"!==r&&"PUT"!==r||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),T.log=console.log,T.warn=console.warn,function(){var t=T.util.object.extend,e=T.util.object.clone,i=[];function r(){return!1}function n(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e}T.util.object.extend(i,{cancelAll:function(){var t=this.splice(0);return t.forEach((function(t){t.cancel()})),t},cancelByCanvas:function(t){if(!t)return[];var e=this.filter((function(e){return"object"==typeof e.target&&e.target.canvas===t}));return e.forEach((function(t){t.cancel()})),e},cancelByTarget:function(t){var e=this.findAnimationsByTarget(t);return e.forEach((function(t){t.cancel()})),e},findAnimationIndex:function(t){return this.indexOf(this.findAnimation(t))},findAnimation:function(t){return this.find((function(e){return e.cancel===t}))},findAnimationsByTarget:function(t){return t?this.filter((function(e){return e.target===t})):[]}});var s=T.window.requestAnimationFrame||T.window.webkitRequestAnimationFrame||T.window.mozRequestAnimationFrame||T.window.oRequestAnimationFrame||T.window.msRequestAnimationFrame||function(t){return T.window.setTimeout(t,1e3/60)},o=T.window.cancelAnimationFrame||T.window.clearTimeout;function a(){return s.apply(T.window,arguments)}T.util.animate=function(i){i||(i={});var s,o=!1,h=function(){var t=T.runningAnimations.indexOf(s);return t>-1&&T.runningAnimations.splice(t,1)[0]};return s=t(e(i),{cancel:function(){return o=!0,h()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),T.runningAnimations.push(s),a((function(t){var e,l=t||+new Date,c=i.duration||500,u=l+c,d=i.onChange||r,f=i.abort||r,g=i.onComplete||r,_=i.easing||n,p="startValue"in i&&i.startValue.length>0,m="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?m.map((function(t,e){return v[e]-m[e]})):v-m);i.onStart&&i.onStart(),function t(i){var r=(e=i||+new Date)>u?c:e-l,n=r/c,S=p?m.map((function(t,e){return _(r,m[e],y[e],c)})):_(r,m,y,c),C=p?Math.abs((S[0]-m[0])/y[0]):Math.abs((S-m)/y);if(s.currentValue=p?S.slice():S,s.completionRate=C,s.durationRate=n,!o){if(!f(S,C,n))return e>u?(s.currentValue=p?v.slice():v,s.completionRate=1,s.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void h()):(d(S,C,n),void a(t));h()}}(l)})),s.cancel},T.util.requestAnimFrame=a,T.util.cancelAnimFrame=function(){return o.apply(T.window,arguments)},T.runningAnimations=i}(),function(){function t(t,e,i){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return(r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1))+")"}T.util.animateColor=function(e,i,r,n){var s=new T.Color(e).getSource(),o=new T.Color(i).getSource(),a=n.onComplete,h=n.onChange;return n=n||{},T.util.animate(T.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){return t(i,r,n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2)))},onComplete:function(e,i,r){if(a)return a(t(o,o,0),i,r)},onChange:function(e,i,r){if(h){if(Array.isArray(e))return h(t(e,e,0),i,r);h(e,i,r)}}}))}}(),function(){function t(t,e,i,r){return t-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===t||"xlink:href"===t||"font"===t)return i;if("imageSmoothing"===t)return"optimizeQuality"===i;a=h?i.map(s):s(i,n)}}else i="";return!h&&isNaN(a)?i:a}function f(t){return new RegExp("^("+t.join("|")+")\\b","i")}function g(t,e){var i,r,n,s,o=[];for(n=0,s=e.length;n1;)h.shift(),l=e.util.multiplyTransformMatrices(l,h[0]);return l}}();var v=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function y(t){if(!e.svgViewBoxElementsRegEx.test(t.nodeName))return{};var i,r,n,o,a,h,l=t.getAttribute("viewBox"),c=1,u=1,d=t.getAttribute("width"),f=t.getAttribute("height"),g=t.getAttribute("x")||0,_=t.getAttribute("y")||0,p=t.getAttribute("preserveAspectRatio")||"",m=!l||!(l=l.match(v)),y=!d||!f||"100%"===d||"100%"===f,S=m&&y,C={},b="",w=0,T=0;if(C.width=0,C.height=0,C.toBeParsed=S,m&&(g||_)&&t.parentNode&&"#document"!==t.parentNode.nodeName&&(b=" translate("+s(g)+" "+s(_)+") ",a=(t.getAttribute("transform")||"")+b,t.setAttribute("transform",a),t.removeAttribute("x"),t.removeAttribute("y")),S)return C;if(m)return C.width=s(d),C.height=s(f),C;if(i=-parseFloat(l[1]),r=-parseFloat(l[2]),n=parseFloat(l[3]),o=parseFloat(l[4]),C.minX=i,C.minY=r,C.viewBoxWidth=n,C.viewBoxHeight=o,y?(C.width=n,C.height=o):(C.width=s(d),C.height=s(f),c=C.width/n,u=C.height/o),"none"!==(p=e.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),w=C.width-n*c,T=C.height-o*c,"Mid"===p.alignX&&(w/=2),"Mid"===p.alignY&&(T/=2),"Min"===p.alignX&&(w=0),"Min"===p.alignY&&(T=0)),1===c&&1===u&&0===i&&0===r&&0===g&&0===_)return C;if((g||_)&&"#document"!==t.parentNode.nodeName&&(b=" translate("+s(g)+" "+s(_)+") "),a=b+" matrix("+c+" 0 0 "+u+" "+(i*c+w)+" "+(r*u+T)+") ","svg"===t.nodeName){for(h=t.ownerDocument.createElementNS(e.svgNS,"g");t.firstChild;)h.appendChild(t.firstChild);t.appendChild(h)}else(h=t).removeAttribute("x"),h.removeAttribute("y"),a=h.getAttribute("transform")+a;return h.setAttribute("transform",a),C}function S(t,e){var i="xlink:href",r=m(t,e.getAttribute(i).slice(1));if(r&&r.getAttribute(i)&&S(t,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(t){r&&!e.hasAttribute(t)&&r.hasAttribute(t)&&e.setAttribute(t,r.getAttribute(t))})),!e.children.length)for(var n=r.cloneNode(!0);n.firstChild;)e.appendChild(n.firstChild);e.removeAttribute(i)}e.parseSVGDocument=function(t,i,n,s){if(t){!function(t){for(var i=g(t,["use","svg:use"]),r=0;i.length&&rt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){this.status=t,this.points=[]}e.Intersection?e.warn("fabric.Intersection is already defined"):(e.Intersection=i,e.Intersection.prototype={constructor:i,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},e.Intersection.intersectLineLine=function(t,r,n,s){var o,a=(s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x),h=(r.x-t.x)*(t.y-n.y)-(r.y-t.y)*(t.x-n.x),l=(s.y-n.y)*(r.x-t.x)-(s.x-n.x)*(r.y-t.y);if(0!==l){var c=a/l,u=h/l;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new e.Point(t.x+c*(r.x-t.x),t.y+c*(r.y-t.y))):o=new i}else o=new i(0===a||0===h?"Coincident":"Parallel");return o},e.Intersection.intersectLinePolygon=function(t,e,r){var n,s,o,a,h=new i,l=r.length;for(a=0;a0&&(h.status="Intersection"),h},e.Intersection.intersectPolygonPolygon=function(t,e){var r,n=new i,s=t.length;for(r=0;r0&&(n.status="Intersection"),n},e.Intersection.intersectPolygonRectangle=function(t,r,n){var s=r.min(n),o=r.max(n),a=new e.Point(o.x,s.y),h=new e.Point(s.x,o.y),l=i.intersectLinePolygon(s,a,t),c=i.intersectLinePolygon(a,o,t),u=i.intersectLinePolygon(o,h,t),d=i.intersectLinePolygon(h,s,t),f=new i;return f.appendPoints(l.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function r(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}e.Color?e.warn("fabric.Color is already defined."):(e.Color=i,e.Color.prototype={_tryParsingColor:function(t){var e;t in i.colorNameMap&&(t=i.colorNameMap[t]),"transparent"===t&&(e=[255,255,255,0]),e||(e=i.sourceFromHex(t)),e||(e=i.sourceFromRgb(t)),e||(e=i.sourceFromHsl(t)),e||(e=[0,0,0,1]),e&&this.setSource(e)},_rgbToHsl:function(t,i,r){t/=255,i/=255,r/=255;var n,s,o,a=e.util.array.max([t,i,r]),h=e.util.array.min([t,i,r]);if(o=(a+h)/2,a===h)n=s=0;else{var l=a-h;switch(s=o>.5?l/(2-a-h):l/(a+h),a){case t:n=(i-r)/l+(i0)-(t<0)||+t};function f(t,e){var i=t.angle+u(Math.atan2(e.y,e.x))+360;return Math.round(i%360/45)}function g(t,i){var r=i.transform.target,n=r.canvas,s=e.util.object.clone(i);s.target=r,n&&n.fire("object:"+t,s),r.fire(t,i)}function _(t,e){var i=e.canvas,r=t[i.uniScaleKey];return i.uniformScaling&&!r||!i.uniformScaling&&r}function p(t){return t.originX===l&&t.originY===l}function m(t,e,i){var r=t.lockScalingX,n=t.lockScalingY;return!((!r||!n)&&(e||!r&&!n||!i)&&(!r||"x"!==e)&&(!n||"y"!==e))}function v(t,e,i,r){return{e:t,transform:e,pointer:{x:i,y:r}}}function y(t){return function(e,i,r,n){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),h=t(e,i,r,n);return s.setPositionByOrigin(a,i.originX,i.originY),h}}function S(t,e){return function(i,r,n,s){var o=e(i,r,n,s);return o&&g(t,v(i,r,n,s)),o}}function C(t,i,r,n,s){var o=t.target,a=o.controls[t.corner],h=o.canvas.getZoom(),l=o.padding/h,c=o.toLocalPoint(new e.Point(n,s),i,r);return c.x>=l&&(c.x-=l),c.x<=-l&&(c.x+=l),c.y>=l&&(c.y-=l),c.y<=l&&(c.y+=l),c.x-=a.offsetX,c.y-=a.offsetY,c}function b(t){return t.flipX!==t.flipY}function w(t,e,i,r,n){if(0!==t[e]){var s=n/t._getTransformedDimensions()[r]*t[i];t.set(i,s)}}function T(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(0,l.skewY),d=C(e,e.originX,e.originY,i,r),f=Math.abs(2*d.x)-c.x,g=l.skewX;f<2?n=0:(n=u(Math.atan2(f/l.scaleX,c.y/l.scaleY)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),b(l)&&(n=-n));var _=g!==n;if(_){var p=l._getTransformedDimensions().y;l.set("skewX",n),w(l,"skewY","scaleY","y",p)}return _}function x(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(l.skewX,0),d=C(e,e.originX,e.originY,i,r),f=Math.abs(2*d.y)-c.y,g=l.skewY;f<2?n=0:(n=u(Math.atan2(f/l.scaleY,c.x/l.scaleX)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),b(l)&&(n=-n));var _=g!==n;if(_){var p=l._getTransformedDimensions().x;l.set("skewY",n),w(l,"skewX","scaleX","x",p)}return _}function O(t,e,i,r,n){n=n||{};var s,o,a,h,l,u,f=e.target,g=f.lockScalingX,v=f.lockScalingY,y=n.by,S=_(t,f),b=m(f,y,S),w=e.gestureScale;if(b)return!1;if(w)o=e.scaleX*w,a=e.scaleY*w;else{if(s=C(e,e.originX,e.originY,i,r),l="y"!==y?d(s.x):1,u="x"!==y?d(s.y):1,e.signX||(e.signX=l),e.signY||(e.signY=u),f.lockScalingFlip&&(e.signX!==l||e.signY!==u))return!1;if(h=f._getTransformedDimensions(),S&&!y){var T=Math.abs(s.x)+Math.abs(s.y),x=e.original,O=T/(Math.abs(h.x*x.scaleX/f.scaleX)+Math.abs(h.y*x.scaleY/f.scaleY));o=x.scaleX*O,a=x.scaleY*O}else o=Math.abs(s.x*f.scaleX/h.x),a=Math.abs(s.y*f.scaleY/h.y);p(e)&&(o*=2,a*=2),e.signX!==l&&"y"!==y&&(e.originX=c[e.originX],o*=-1,e.signX=l),e.signY!==u&&"x"!==y&&(e.originY=c[e.originY],a*=-1,e.signY=u)}var E=f.scaleX,I=f.scaleY;return y?("x"===y&&f.set("scaleX",o),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!v&&f.set("scaleY",a)),E!==f.scaleX||I!==f.scaleY}n.scaleCursorStyleHandler=function(t,e,r){var n=_(t,r),s="";if(0!==e.x&&0===e.y?s="x":0===e.x&&0!==e.y&&(s="y"),m(r,s,n))return"not-allowed";var o=f(r,e);return i[o]+"-resize"},n.skewCursorStyleHandler=function(t,e,i){var n="not-allowed";if(0!==e.x&&i.lockSkewingY)return n;if(0!==e.y&&i.lockSkewingX)return n;var s=f(i,e)%4;return r[s]+"-resize"},n.scaleSkewCursorStyleHandler=function(t,e,i){return t[i.canvas.altActionKey]?n.skewCursorStyleHandler(t,e,i):n.scaleCursorStyleHandler(t,e,i)},n.rotationWithSnapping=S("rotating",y((function(t,e,i,r){var n=e,s=n.target,o=s.translateToOriginPoint(s.getCenterPoint(),n.originX,n.originY);if(s.lockRotation)return!1;var a,h=Math.atan2(n.ey-o.y,n.ex-o.x),l=Math.atan2(r-o.y,i-o.x),c=u(l-h+n.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,_=Math.floor(c/d)*d;Math.abs(c-_)0?s:a:(c>0&&(n=u===o?s:a),c<0&&(n=u===o?a:s),b(h)&&(n=n===s?a:s)),e.originX=n,S("skewing",y(T))(t,e,i,r))},n.skewHandlerY=function(t,e,i,r){var n,a=e.target,c=a.skewY,u=e.originX;return!a.lockSkewingY&&(0===c?n=C(e,l,l,i,r).y>0?o:h:(c>0&&(n=u===s?o:h),c<0&&(n=u===s?h:o),b(a)&&(n=n===o?h:o)),e.originY=n,S("skewing",y(x))(t,e,i,r))},n.dragHandler=function(t,e,i,r){var n=e.target,s=i-e.offsetX,o=r-e.offsetY,a=!n.get("lockMovementX")&&n.left!==s,h=!n.get("lockMovementY")&&n.top!==o;return a&&n.set("left",s),h&&n.set("top",o),(a||h)&&g("moving",v(t,e,i,r)),a||h},n.scaleOrSkewActionName=function(t,e,i){var r=t[i.canvas.altActionKey];return 0===e.x?r?"skewX":"scaleY":0===e.y?r?"skewY":"scaleX":void 0},n.rotationStyleHandler=function(t,e,i){return i.lockRotation?"not-allowed":e.cursorStyle},n.fireEvent=g,n.wrapWithFixedAnchor=y,n.wrapWithFireEvent=S,n.getLocalPoint=C,e.controlsUtils=n}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians,r=e.controlsUtils;r.renderCircleControl=function(t,e,i,r,n){r=r||{};var s,o=this.sizeX||r.cornerSize||n.cornerSize,a=this.sizeY||r.cornerSize||n.cornerSize,h=void 0!==r.transparentCorners?r.transparentCorners:n.transparentCorners,l=h?"stroke":"fill",c=!h&&(r.cornerStrokeColor||n.cornerStrokeColor),u=e,d=i;t.save(),t.fillStyle=r.cornerColor||n.cornerColor,t.strokeStyle=r.cornerStrokeColor||n.cornerStrokeColor,o>a?(s=o,t.scale(1,a/o),d=i*o/a):a>o?(s=a,t.scale(o/a,1),u=e*a/o):s=o,t.lineWidth=1,t.beginPath(),t.arc(u,d,s/2,0,2*Math.PI,!1),t[l](),c&&t.stroke(),t.restore()},r.renderSquareControl=function(t,e,r,n,s){n=n||{};var o=this.sizeX||n.cornerSize||s.cornerSize,a=this.sizeY||n.cornerSize||s.cornerSize,h=void 0!==n.transparentCorners?n.transparentCorners:s.transparentCorners,l=h?"stroke":"fill",c=!h&&(n.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;t.save(),t.fillStyle=n.cornerColor||s.cornerColor,t.strokeStyle=n.cornerStrokeColor||s.cornerStrokeColor,t.lineWidth=1,t.translate(e,r),t.rotate(i(s.angle)),t[l+"Rect"](-u,-d,o,a),c&&t.strokeRect(-u,-d,o,a),t.restore()}}(e),function(t){var e=t.fabric||(t.fabric={});e.Control=function(t){for(var e in t)this[e]=t[e]},e.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(t,e){return e.cursorStyle},getActionName:function(t,e){return e.actionName},getVisibility:function(t,e){var i=t._controlsVisibility;return i&&void 0!==i[e]?i[e]:this.visible},setVisibility:function(t){this.visible=t},positionHandler:function(t,i){return e.util.transformPoint({x:this.x*t.x+this.offsetX,y:this.y*t.y+this.offsetY},i)},calcCornerCoords:function(t,i,r,n,s){var o,a,h,l,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-e.util.degreesToRadians(t),_=Math.PI/2-d-e.util.degreesToRadians(t);o=f*e.util.cos(g),a=f*e.util.sin(g),h=f*e.util.cos(_),l=f*e.util.sin(_)}else f=.7071067812*(c&&u?c:i),g=e.util.degreesToRadians(45-t),o=h=f*e.util.cos(g),a=l=f*e.util.sin(g);return{tl:{x:r-l,y:n-h},tr:{x:r+o,y:n-a},bl:{x:r-o,y:n+a},br:{x:r+l,y:n+h}}},render:function(t,i,r,n,s){"circle"===((n=n||{}).cornerStyle||s.cornerStyle)?e.controlsUtils.renderCircleControl.call(this,t,i,r,n,s):e.controlsUtils.renderSquareControl.call(this,t,i,r,n,s)}}}(e),function(){function t(t,e){var i,r,n,s,o=t.getAttribute("style"),a=t.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var h=o.split(/\s*;\s*/);for(""===h[h.length-1]&&h.pop(),s=h.length;s--;){var l=h[s].split(/\s*:\s*/),c=l[0].trim(),u=l[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(n=u)}}return i||(i=t.getAttribute("stop-color")||"rgb(0,0,0)"),n||(n=t.getAttribute("stop-opacity")),r=(i=new T.Color(i)).getAlpha(),n=isNaN(parseFloat(n))?1:parseFloat(n),n*=r*e,{offset:a,color:i.toRgb(),opacity:n}}var e=T.util.object.clone;T.Gradient=T.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(t){t||(t={}),t.coords||(t.coords={});var e,i=this;Object.keys(t).forEach((function(e){i[e]=t[e]})),this.id?this.id+="_"+T.Object.__uid++:this.id=T.Object.__uid++,e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice()},addColorStop:function(t){for(var e in t){var i=new T.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return T.util.populateWithProperties(this,e,t),e},toSVG:function(t,i){var r,n,s,o,a=e(this.coords,!0),h=(i=i||{},e(this.colorStops,!0)),l=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():T.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(h.sort((function(t,e){return t.offset-e.offset})),"objectBoundingBox"===g?(u/=t.width,d/=t.height):(u+=t.width/2,d+=t.height/2),"path"===t.type&&"percentage"!==this.gradientUnits&&(u-=t.pathOffset.x,d-=t.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+T.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(l)for((h=h.concat()).reverse(),r=0,n=h.length;r0){var p=_/Math.max(a.r1,a.r2);for(r=0,n=h.length;r\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(t){var e,i,r,n=T.util.object.clone(this.coords);if(this.type){for("linear"===this.type?e=t.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(e=t.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2)),i=0,r=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,h,l,c=e.getElementsByTagName("stop"),u="userSpaceOnUse"===e.getAttribute("gradientUnits")?"pixels":"percentage",d=e.getAttribute("gradientTransform")||"",f=[],g=0,_=0;for("linearGradient"===e.nodeName||"LINEARGRADIENT"===e.nodeName?(o="linear",a=function(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}(e)):(o="radial",a=function(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}(e)),h=c.length;h--;)f.push(t(c[h],s));return l=T.parseTransformAttribute(d),function(t,e,i,r){var n,s;Object.keys(e).forEach((function(t){"Infinity"===(n=e[t])?s=1:"-Infinity"===n?s=0:(s=parseFloat(e[t],10),"string"==typeof n&&/^(\d+\.\d+)%|(\d+)%$/.test(n)&&(s*=.01,"pixels"===r&&("x1"!==t&&"x2"!==t&&"r2"!==t||(s*=i.viewBoxWidth||i.width),"y1"!==t&&"y2"!==t||(s*=i.viewBoxHeight||i.height)))),e[t]=s}))}(0,a,n,u),"pixels"===u&&(g=-i.left,_=-i.top),new T.Gradient({id:e.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:l,offsetX:g,offsetY:_})}})}(),m=T.util.toFixed,T.Pattern=T.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(t,e){if(t||(t={}),this.id=T.Object.__uid++,this.setOptions(t),!t.source||t.source&&"string"!=typeof t.source)e&&e(this);else{var i=this;this.source=T.util.createImage(),T.util.loadImage(t.source,(function(t,r){i.source=t,e&&e(i,r)}),null,this.crossOrigin)}},toObject:function(t){var e,i,r=T.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?e=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(e=this.source.toDataURL()),i={type:"pattern",source:e,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:m(this.offsetX,r),offsetY:m(this.offsetY,r),patternTransform:this.patternTransform?this.patternTransform.concat():null},T.util.populateWithProperties(this,i,t),i},toSVG:function(t){var e="function"==typeof this.source?this.source():this.source,i=e.width/t.width,r=e.height/t.height,n=this.offsetX/t.width,s=this.offsetY/t.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,s&&(r+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,n&&(i+=Math.abs(n))),e.src?o=e.src:e.toDataURL&&(o=e.toDataURL()),'\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e=this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.toFixed;e.Shadow?e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var i in"string"==typeof t&&(t=this._parseShadow(t)),t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var r=40,n=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=new e.Color(this.color);return t.width&&t.height&&(r=100*i((Math.abs(o.x)+this.blur)/t.width,s)+20,n=100*i((Math.abs(o.y)+this.blur)/t.height,s)+20),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(e){this[e]!==i[e]&&(t[e]=this[e])}),this),t}}),e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(e),function(){if(T.StaticCanvas)T.warn("fabric.StaticCanvas is already defined.");else{var t=T.util.object.extend,e=T.util.getElementOffset,i=T.util.removeFromArray,r=T.util.toFixed,n=T.util.transformPoint,s=T.util.invertTransform,o=T.util.getNodeCanvas,a=T.util.createCanvasElement,h=new Error("Could not initialize `canvas` element");T.StaticCanvas=T.util.createClass(T.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:T.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return T.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,T.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=T.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},__setBgOverlayImage:function(t,e,i,r){return"string"==typeof e?T.util.loadImage(e,(function(e,n){if(e){var s=new T.Image(e,r);this[t]=s,s.canvas=this}i&&i(e,n)}),this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,e&&(e.canvas=this),i&&i(e,!1)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=a();if(!t)throw h;if(t.style||(t.style={}),void 0===t.getContext)throw h;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=T.util.getById(t)||this._createCanvasElement(),T.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var r in e=e||{},t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,r,n=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=t,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,n=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=T.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",T.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+T.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var t=this;return["background","overlay"].map((function(e){var i=t[e+"Color"];if(i&&i.toLive){var r=t[e+"Vpt"],n=t.viewportTransform,s={width:t.width/(r?n[0]:1),height:t.height/(r?n[3]:1)};return i.toSVG(s,{additionalTransform:r?T.util.matrixToSVG(n):""})}})).join("")},createSVGFontFacesMarkup:function(){var t,e,i,r,n,s,o,a,h="",l={},c=T.fontPaths,u=[];for(this._objects.forEach((function t(e){u.push(e),e._objects&&e._objects.forEach(t)})),o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,r,n,s=this._objects;for(r=0,n=s.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(e=(n=s._objects).length;e--;)r=n[e],i(this._objects,r),this._objects.unshift(r);else i(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(n=s._objects,e=0;e0+l&&(o=s-1,i(this._objects,n),this._objects.splice(o,0,n)),l++;else 0!==(s=this._objects.indexOf(t))&&(o=this._findNewLowerIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(t,e,i){var r,n;if(i){for(r=e,n=e-1;n>=0;--n)if(t.intersectsWithObject(this._objects[n])||t.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(t)){r=n;break}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,n,s,o,a,h=this._activeObject,l=0;if(t===h&&"activeSelection"===t.type)for(r=(a=h._objects).length;r--;)n=a[r],(s=this._objects.indexOf(n))"}}),t(T.StaticCanvas.prototype,T.Observable),t(T.StaticCanvas.prototype,T.Collection),t(T.StaticCanvas.prototype,T.DataURLExporter),t(T.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=a();if(!e||!e.getContext)return null;var i=e.getContext("2d");return i&&"setLineDash"===t?void 0!==i.setLineDash:null}}),T.StaticCanvas.prototype.toJSON=T.StaticCanvas.prototype.toObject,T.isLikelyNode&&(T.StaticCanvas.prototype.createPNGStream=function(){var t=o(this.lowerCanvasEl);return t&&t.createPNGStream()},T.StaticCanvas.prototype.createJPEGStream=function(t){var e=o(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),T.BaseBrush=T.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,r=t.getZoom();t&&t._isRetinaScaling()&&(r*=T.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*r,i.shadowOffsetX=e.offsetX*r,i.shadowOffsetY=e.offsetY*r}},needsFullRender:function(){return new T.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0},_isOutSideCanvas:function(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}),T.PencilBrush=T.util.createClass(T.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(t){this.canvas=t,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(t,e,i){var r=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,r.x,r.y),r},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._captureDrawingPath(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,r=i.length,n=this.canvas.contextTop;this._saveAndTransform(n),this.oldEnd&&(n.beginPath(),n.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(n,i[r-2],i[r-1],!0),n.stroke(),n.restore()}},onMouseUp:function(t){return!this.canvas._isMainEvent(t.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(t){var e=new T.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(t){var e=new T.Point(t.x,t.y);return this._addPoint(e)},_render:function(t){var e,i,r=this._points[0],n=this._points[1];if(t=t||this.canvas.contextTop,this._saveAndTransform(t),t.beginPath(),2===this._points.length&&r.x===n.x&&r.y===n.y){var s=this.width/1e3;r=new T.Point(r.x,r.y),n=new T.Point(n.x,n.y),r.x-=s,n.x+=s}for(t.moveTo(r.x,r.y),e=1,i=this._points.length;e=n&&(o=t[i],a.push(o));return a.push(t[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var t=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(t))this.canvas.requestRenderAll();else{var e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:e})}}}),T.CircleBrush=T.util.createClass(T.BaseBrush,{width:10,initialize:function(t){this.canvas=t,this.points=[]},drawDot:function(t){var e=this.addPoint(t),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,e),i.restore()},dot:function(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()},onMouseDown:function(t){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)},_render:function(){var t,e,i=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(i),t=0,e=r.length;t0&&!this.preserveObjectStacking){e=[],i=[];for(var n=0,s=this._objects.length;n1&&(this._activeObject._objects=i),e.push.apply(e,i)}else e=this._objects;return e},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var t=this.contextContainer;return this.renderCanvas(t,this._chooseObjectsToRender()),this},renderTopLayer:function(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()},renderTop:function(){var t=this.contextTop;return this.clearContext(t),this.renderTopLayer(t),this.fire("after:render"),this},_normalizePointer:function(t,e){var i=t.calcTransformMatrix(),r=T.util.invertTransform(i),n=this.restorePointerVpt(e);return T.util.transformPoint(n,r)},isTargetTransparent:function(t,e,i){if(t.shouldCache()&&t._cacheCanvas&&t!==this._activeObject){var r=this._normalizePointer(t,{x:e,y:i}),n=Math.max(t.cacheTranslationX+r.x*t.zoomX,0),s=Math.max(t.cacheTranslationY+r.y*t.zoomY,0);return T.util.isTransparent(t._cacheContext,Math.round(n),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=t.selectionBackgroundColor,h=this.viewportTransform;return t.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(h[0],h[1],h[2],h[3],h[4],h[5]),t.render(o),o.restore(),t.selectionBackgroundColor=a,T.util.isTransparent(o,e,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(t){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(e){return!0===t[e]})):t[this.selectionKey]},_shouldClearSelection:function(t,e){var i=this.getActiveObjects(),r=this._activeObject;return!e||e&&r&&i.length>1&&-1===i.indexOf(e)&&r!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&r&&r!==e},_shouldCenterTransform:function(t,e,i){var r;if(t)return"scale"===e||"scaleX"===e||"scaleY"===e||"resizing"===e?r=this.centeredScaling||t.centeredScaling:"rotate"===e&&(r=this.centeredRotation||t.centeredRotation),r?!i:i},_getOriginFromCorner:function(t,e){var i={x:t.originX,y:t.originY};return"ml"===e||"tl"===e||"bl"===e?i.x="right":"mr"!==e&&"tr"!==e&&"br"!==e||(i.x="left"),"tl"===e||"mt"===e||"tr"===e?i.y="bottom":"bl"!==e&&"mb"!==e&&"br"!==e||(i.y="top"),i},_getActionFromCorner:function(t,e,i,r){if(!e||!t)return"drag";var n=r.controls[e];return n.getActionName(i,n,r)},_setupCurrentTransform:function(t,i,r){if(i){var n=this.getPointer(t),s=i.__corner,o=i.controls[s],a=r&&s?o.getActionHandler(t,i,o):T.controlsUtils.dragHandler,h=this._getActionFromCorner(r,s,t,i),l=this._getOriginFromCorner(i,s),c=t[this.centeredKey],u={target:i,action:h,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:n.x-i.left,offsetY:n.y-i.top,originX:l.x,originY:l.y,ex:n.x,ey:n.y,lastX:n.x,lastY:n.y,theta:e(i.angle),width:i.width*i.scaleX,shiftKey:t.shiftKey,altKey:c,original:T.util.saveObjectTransform(i)};this._shouldCenterTransform(i,h,c)&&(u.originX="center",u.originY="center"),u.original.originX=l.x,u.original.originY=l.y,this._currentTransform=u,this._beforeTransform(t)}},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_drawSelection:function(t){var e=this._groupSelector,i=new T.Point(e.ex,e.ey),r=T.util.transformPoint(i,this.viewportTransform),n=new T.Point(e.ex+e.left,e.ey+e.top),s=T.util.transformPoint(n,this.viewportTransform),o=Math.min(r.x,s.x),a=Math.min(r.y,s.y),h=Math.max(r.x,s.x),l=Math.max(r.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(o,a,h-o,l-a)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,o+=c,a+=c,h-=c,l-=c,T.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(o,a,h-o,l-a))},findTarget:function(t,e){if(!this.skipTargetFind){var r,n,s=this.getPointer(t,!0),o=this._activeObject,a=this.getActiveObjects(),h=i(t),l=a.length>1&&!e||1===a.length;if(this.targets=[],l&&o._findTargetCorner(s,h))return o;if(a.length>1&&!e&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;r=o,n=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return t[this.altSelectionKey]&&c&&r&&c!==r&&(c=r,this.targets=n),c}},_checkTarget:function(t,e,i){if(e&&e.visible&&e.evented&&e.containsPoint(t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;if(!this.isTargetTransparent(e,i.x,i.y))return!0}},_searchPossibleTargets:function(t,e){for(var i,r,n=t.length;n--;){var s=t[n],o=s.group?this._normalizePointer(s.group,e):e;if(this._checkTarget(o,s,e)){(i=t[n]).subTargetCheck&&i instanceof T.Group&&(r=this._searchPossibleTargets(i._objects,e))&&this.targets.push(r);break}}return i},restorePointerVpt:function(t){return T.util.transformPoint(t,T.util.invertTransform(this.viewportTransform))},getPointer:function(e,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var r,n=t(e),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,h=o.height||0;a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,i||(n=this.restorePointerVpt(n));var l=this.getRetinaScaling();return 1!==l&&(n.x/=l,n.y/=l),r=0===a||0===h?{width:1,height:1}:{width:s.width/a,height:s.height/h},{x:n.x*r.width,y:n.y*r.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),e=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),T.util.addClass(i,"upper-canvas "+t),this.wrapperEl.appendChild(i),this._copyCanvasStyle(e,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=T.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),T.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),T.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.width||t.width,i=this.height||t.height;T.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),t.width=e,t.height=i,T.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var t=this._activeObject;return t?"activeSelection"===t.type&&t._objects?t._objects.slice(0):[t]:[]},_onObjectRemoved:function(t){t===this._activeObject&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),t===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",t)},_fireSelectionEvents:function(t,e){var i=!1,r=this.getActiveObjects(),n=[],s=[];t.forEach((function(t){-1===r.indexOf(t)&&(i=!0,t.fire("deselected",{e,target:t}),s.push(t))})),r.forEach((function(r){-1===t.indexOf(r)&&(i=!0,r.fire("selected",{e,target:r}),n.push(r))})),t.length>0&&r.length>0?i&&this.fire("selection:updated",{e,selected:n,deselected:s}):r.length>0?this.fire("selection:created",{e,selected:n}):t.length>0&&this.fire("selection:cleared",{e,deselected:s})},setActiveObject:function(t,e){var i=this.getActiveObjects();return this._setActiveObject(t,e),this._fireSelectionEvents(i,e),this},_setActiveObject:function(t,e){return this._activeObject!==t&&!!this._discardActiveObject(e,t)&&!t.onSelect({e})&&(this._activeObject=t,!0)},_discardActiveObject:function(t,e){var i=this._activeObject;if(i){if(i.onDeselect({e:t,object:e}))return!1;this._activeObject=null}return!0},discardActiveObject:function(t){var e=this.getActiveObjects(),i=this.getActiveObject();return e.length&&this.fire("before:selection:cleared",{target:i,e:t}),this._discardActiveObject(t),this._fireSelectionEvents(e,t),this},dispose:function(){var t=this.wrapperEl;return this.removeListeners(),t.removeChild(this.upperCanvasEl),t.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(t){T.util.cleanUpJsdomNode(this[t]),this[t]=void 0}.bind(this)),t.parentNode&&t.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,T.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(t){var e=this._activeObject;e&&e._renderControls(t)},_toObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(t),n=this.callSuper("_toObject",t,e,i);return this._unwindGroupTransformOnObject(t,r),n},_realizeGroupTransformOnObject:function(t){if(t.group&&"activeSelection"===t.group.type&&this._activeObject===t.group){var e={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){e[i]=t[i]})),T.util.addTransformToObject(t,this._activeObject.calcOwnMatrix()),e}return null},_unwindGroupTransformOnObject:function(t,e){e&&t.set(e)},_setSVGObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(e);this.callSuper("_setSVGObject",t,e,i),this._unwindGroupTransformOnObject(e,r)},setViewportTransform:function(t){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),T.StaticCanvas.prototype.setViewportTransform.call(this,t)}}),T.StaticCanvas)"prototype"!==r&&(T.Canvas[r]=T.StaticCanvas[r])}(),function(){var t=T.util.addListener,e=T.util.removeListener,i={passive:!1};function r(t,e){return t.button&&t.button===e-1}T.util.object.extend(T.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(t,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(t,e){var r=this.upperCanvasEl,n=this._getEventPrefix();t(T.window,"resize",this._onResize),t(r,n+"down",this._onMouseDown),t(r,n+"move",this._onMouseMove,i),t(r,n+"out",this._onMouseOut),t(r,n+"enter",this._onMouseEnter),t(r,"wheel",this._onMouseWheel),t(r,"contextmenu",this._onContextMenu),t(r,"dblclick",this._onDoubleClick),t(r,"dragover",this._onDragOver),t(r,"dragenter",this._onDragEnter),t(r,"dragleave",this._onDragLeave),t(r,"drop",this._onDrop),this.enablePointerEvents||t(r,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&e in eventjs&&(eventjs[e](r,"gesture",this._onGesture),eventjs[e](r,"drag",this._onDrag),eventjs[e](r,"orientation",this._onOrientationChange),eventjs[e](r,"shake",this._onShake),eventjs[e](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(e,"remove");var t=this._getEventPrefix();e(T.document,t+"up",this._onMouseUp),e(T.document,"touchend",this._onTouchEnd,i),e(T.document,t+"move",this._onMouseMove,i),e(T.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t});var i=this;this._hoveredTargets.forEach((function(r){i.fire("mouse:out",{target:e,e:t}),r&&e.fire("mouseout",{e:t})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(t){t.isEditing&&t.hiddenTextarea.focus()}))},_onMouseEnter:function(t){this._currentTransform||this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onDragOver:function(t){t.preventDefault();var e=this._simpleEventHandler("dragover",t);this._fireEnterLeaveEvents(e,t)},_onDrop:function(t){return this._simpleEventHandler("drop:before",t),this._simpleEventHandler("drop",t)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onDoubleClick:function(t){this._cacheTransformEventData(t),this._handleEvent(t,"dblclick"),this._resetTransformEventData(t)},getPointerId:function(t){var e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1},_isMainEvent:function(t){return!0===t.isPrimary||!1!==t.isPrimary&&("touchend"===t.type&&0===t.touches.length||!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();t(T.document,"touchend",this._onTouchEnd,i),t(T.document,"touchmove",this._onMouseMove,i),e(n,s+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();e(n,s+"move",this._onMouseMove,i),t(T.document,s+"up",this._onMouseUp),t(T.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var n=this._getEventPrefix();e(T.document,"touchend",this._onTouchEnd,i),e(T.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){t(s.upperCanvasEl,n+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(r)&&(e(T.document,s+"up",this._onMouseUp),e(T.document,s+"move",this._onMouseMove,i),t(n,s+"move",this._onMouseMove,i))},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t){var e=this._activeObject;return!!(!!e!=!!t||e&&t&&e!==t)||(e&&e.isEditing,!1)},__onMouseUp:function(t){var e,i=this._currentTransform,n=this._groupSelector,s=!1,o=!n||0===n.left&&0===n.top;if(this._cacheTransformEventData(t),e=this._target,this._handleEvent(t,"up:before"),r(t,3))this.fireRightClick&&this._handleEvent(t,"up",3,o);else{if(r(t,2))return this.fireMiddleClick&&this._handleEvent(t,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(t);else if(this._isMainEvent(t)){if(i&&(this._finalizeCurrentTransform(t),s=i.actionPerformed),!o){var a=e===this._activeObject;this._maybeGroupObjects(t),s||(s=this._shouldRender(e)||!a&&e===this._activeObject)}var h,l;if(e){if(h=e._findTargetCorner(this.getPointer(t,!0),T.util.isTouchEvent(t)),e.selectable&&e!==this._activeObject&&"up"===e.activeOn)this.setActiveObject(e,t),s=!0;else{var c=e.controls[h],u=c&&c.getMouseUpHandler(t,e,c);u&&u(t,i,(l=this.getPointer(t)).x,l.y)}e.isMoving=!1}if(i&&(i.target!==e||i.corner!==h)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(t,e,c);l=l||this.getPointer(t),f&&f(t,i,l.x,l.y)}this._setCursorFromEvent(t,e),this._handleEvent(t,"up",1,o),this._groupSelector=null,this._currentTransform=null,e&&(e.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(t,e){var i=this.findTarget(e),r=this.targets,n={e,target:i,subTargets:r};if(this.fire(t,n),i&&i.fire(t,n),!r)return i;for(var s=0;s1&&(e=new T.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(e,t))},_collectObjects:function(t){for(var e,i=[],r=this._groupSelector.ex,n=this._groupSelector.ey,s=r+this._groupSelector.left,o=n+this._groupSelector.top,a=new T.Point(v(r,s),v(n,o)),h=new T.Point(y(r,s),y(n,o)),l=!this.selectionFullyContained,c=r===s&&n===o,u=this._objects.length;u--&&!((e=this._objects[u])&&e.selectable&&e.visible&&(l&&e.intersectsWithRect(a,h,!0)||e.isContainedWithinRect(a,h,!0)||l&&e.containsPoint(a,null,!0)||l&&e.containsPoint(h,null,!0))&&(i.push(e),c)););return i.length>1&&(i=i.filter((function(e){return!e.onSelect({e:t})}))),i},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t),this.setCursor(this.defaultCursor),this._groupSelector=null}}),T.util.object.extend(T.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,r=(t.multiplier||1)*(t.enableRetinaScaling?this.getRetinaScaling():1),n=this.toCanvasElement(r,t);return T.util.toDataURL(n,e,i)},toCanvasElement:function(t,e){t=t||1;var i=((e=e||{}).width||this.width)*t,r=(e.height||this.height)*t,n=this.getZoom(),s=this.width,o=this.height,a=n*t,h=this.viewportTransform,l=(h[4]-(e.left||0))*t,c=(h[5]-(e.top||0))*t,u=this.interactive,d=[a,0,0,a,l,c],f=this.enableRetinaScaling,g=T.util.createCanvasElement(),_=this.contextTop;return g.width=i,g.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=h,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=_,g}}),T.util.object.extend(T.StaticCanvas.prototype,{loadFromJSON:function(t,e,i){if(t){var r="string"==typeof t?JSON.parse(t):T.util.object.clone(t),n=this,s=r.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(t){n.clear(),n._setBgOverlay(r,(function(){s?n._enlivenObjects([s],(function(i){n.clipPath=i[0],n.__setupCanvas.call(n,r,t,o,e)})):n.__setupCanvas.call(n,r,t,o,e)}))}),i),this}},__setupCanvas:function(t,e,i,r){var n=this;e.forEach((function(t,e){n.insertAt(t,e)})),this.renderOnAddRemove=i,delete t.objects,delete t.backgroundImage,delete t.overlayImage,delete t.background,delete t.overlay,this._setOptions(t),this.renderAll(),r&&r()},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(t.backgroundImage||t.overlayImage||t.background||t.overlay){var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,r),this.__setBgOverlay("overlayImage",t.overlayImage,i,r),this.__setBgOverlay("backgroundColor",t.background,i,r),this.__setBgOverlay("overlayColor",t.overlay,i,r)}else e&&e()},__setBgOverlay:function(t,e,i,r){var n=this;if(!e)return i[t]=!0,void(r&&r());"backgroundImage"===t||"overlayImage"===t?T.util.enlivenObjects([e],(function(e){n[t]=e[0],i[t]=!0,r&&r()})):this["set"+T.util.string.capitalize(t,!0)](e,(function(){i[t]=!0,r&&r()}))},_enlivenObjects:function(t,e,i){t&&0!==t.length?T.util.enlivenObjects(t,(function(t){e&&e(t)}),null,i):e&&e([])},_toDataURL:function(t,e){this.clone((function(i){e(i.toDataURL(t))}))},_toDataURLWithMultiplier:function(t,e,i){this.clone((function(r){i(r.toDataURLWithMultiplier(t,e))}))},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData((function(e){e.loadFromJSON(i,(function(){t&&t(e)}))}))},cloneWithoutData:function(t){var e=T.util.createCanvasElement();e.width=this.width,e.height=this.height;var i=new T.Canvas(e);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),t&&t(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(t){t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,r=t.width,n=t.height,s=e.maxCacheSideLimit,o=e.minCacheSideLimit;if(r<=s&&n<=s&&r*n<=i)return rc&&(t.zoomX/=r/c,t.width=c,t.capped=!0),n>u&&(t.zoomY/=n/u,t.height=u,t.capped=!0),t},_getCacheCanvasDimensions:function(){var t=this.getTotalObjectScaling(),e=this._getTransformedDimensions(0,0),i=e.x*t.scaleX/this.scaleX,r=e.y*t.scaleY/this.scaleY;return{width:i+2,height:r+2,zoomX:t.scaleX,zoomY:t.scaleY,x:i,y:r}},_updateCacheCanvas:function(){var t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){var i=t._currentTransform.target,r=t._currentTransform.action;if(this===i&&r.slice&&"scale"===r.slice(0,5))return!1}var n,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),h=e.minCacheSideLimit,l=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=l!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,_=f||g,p=0,m=0,v=!1;if(f){var y=this._cacheCanvas.width,S=this._cacheCanvas.height,C=l>y||c>S;v=C||(l<.9*y||c<.9*S)&&y>h&&S>h,C&&!a.capped&&(l>h||c>h)&&(p=.1*l,m=.1*c)}return this instanceof e.Text&&this.path&&(_=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,m+=this.getHeightOfLine(0)*this.zoomY),!!_&&(v?(o.width=Math.ceil(l+p),o.height=Math.ceil(c+m)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),n=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-n)+n,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=l,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t){var e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,i=this.calcTransformMatrix(!e);t.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:e.version,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(t),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype;return i.stateProperties.forEach((function(e){"left"!==e&&"top"!==e&&(t[e]===i[e]&&delete t[e],Array.isArray(t[e])&&Array.isArray(i[e])&&0===t[e].length&&0===i[e].length&&delete t[e])})),t},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var t=e.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(t.scaleX),scaleY:Math.abs(t.scaleY)}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();e*=r*n,i*=r*n}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,i){var r="scaleX"===t||"scaleY"===t,n=this[t]!==i,s=!1;return r&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,n&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(t)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(t),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),t.restore())},renderCache:function(t){t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,t.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(t,i){if(t.save(),i.inverted?t.globalCompositeOperation="destination-out":t.globalCompositeOperation="destination-in",i.absolutePositioned){var r=e.util.invertTransform(this.calcTransformMatrix());t.transform(r[0],r[1],r[2],r[3],r[4],r[5])}i.transform(t),t.scale(1/i.zoomX,1/i.zoomY),t.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),t.restore()},drawObject:function(t,e){var i=this.fill,r=this.stroke;e?(this.fill="black",this.stroke="",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath),this.fill=i,this.stroke=r},_drawClipPath:function(t,e){e&&(e.canvas=this.canvas,e.shouldCache(),e._transformDone=!0,e.renderCache({forClipping:!0}),this.drawClipPathOnCache(t,e))},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity},_setStrokeStyles:function(t,e){var i=e.stroke;i&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(t,i):(t.strokeStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,i)):t.strokeStyle=e.stroke)},_setFillStyles:function(t,e){var i=e.fill;i&&(i.toLive?(t.fillStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,e.fill)):t.fillStyle=i)},_setClippingProperties:function(t){t.globalAlpha=1,t.strokeStyle="transparent",t.fillStyle="#000000"},_setLineDash:function(t,e){e&&0!==e.length&&(1&e.length&&e.push.apply(e,e),t.setLineDash(e))},_renderControls:function(t,i){var r,n,s,a=this.getViewportTransform(),h=this.calcTransformMatrix();n=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,h=e.util.multiplyTransformMatrices(a,h),r=e.util.qrDecompose(h),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),t.rotate(o(this.group?r.angle:this.angle)),i.forActiveSelection||this.group?n&&this.drawBordersInGroup(t,r,i):n&&this.drawBorders(t,i),s&&this.drawControls(t,i),t.restore()},_setShadow:function(t){if(this.shadow){var i,r=this.shadow,n=this.canvas,s=n&&n.viewportTransform[0]||1,o=n&&n.viewportTransform[3]||1;i=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),n&&n._isRetinaScaling()&&(s*=e.devicePixelRatio,o*=e.devicePixelRatio),t.shadowColor=r.color,t.shadowBlur=r.blur*e.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,t.shadowOffsetX=r.offsetX*s*i.scaleX,t.shadowOffsetY=r.offsetY*o*i.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(!e||!e.toLive)return{offsetX:0,offsetY:0};var i=e.gradientTransform||e.patternTransform,r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;return"percentage"===e.gradientUnits?t.transform(this.width,0,0,this.height,r,n):t.transform(1,0,0,1,r,n),i&&t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:r,offsetY:n}},_renderPaintInOrder:function(t){"stroke"===this.paintFirst?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))},_render:function(){},_renderFill:function(t){this.fill&&(t.save(),this._setFillStyles(t,this),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform&&this.group){var e=this.getObjectScaling();t.scale(1/e.scaleX,1/e.scaleY)}else this.strokeUniform&&t.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}},_applyPatternForTransformedGradient:function(t,i){var r,n=this._limitCacheSize(this._getCacheCanvasDimensions()),s=e.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=n.x/this.scaleX/o,h=n.y/this.scaleY/o;s.width=a,s.height=h,(r=s.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(a,0),r.lineTo(a,h),r.lineTo(0,h),r.closePath(),r.translate(a/2,h/2),r.scale(n.zoomX/this.scaleX/o,n.zoomY/this.scaleY/o),this._applyPatternGradientTransform(r,i),r.fillStyle=i.toLive(t),r.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(o*this.scaleX/n.zoomX,o*this.scaleY/n.zoomY),t.strokeStyle=r.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var t=e.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",t.scaleX),this.set("scaleY",t.scaleY),this.angle=t.angle,this.skewX=t.skewX,this.skewY=0}},_removeTransformMatrix:function(t){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=e.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,t&&(this.scaleX*=t.scaleX,this.scaleY*=t.scaleY,this.cropX=t.cropX,this.cropY=t.cropY,i.x+=t.offsetLeft,i.y+=t.offsetTop,this.width=t.width,this.height=t.height),this.setPositionByOrigin(i,"center","center")},clone:function(t,i){var r=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(r,t):e.Object._fromObject("Object",r,t)},cloneAsImage:function(t,i){var r=this.toCanvasElement(i);return t&&t(new e.Image(r)),this},toCanvasElement:function(t){t||(t={});var i=e.util,r=i.saveObjectTransform(this),n=this.group,s=this.shadow,o=Math.abs,a=(t.multiplier||1)*(t.enableRetinaScaling?e.devicePixelRatio:1);delete this.group,t.withoutTransform&&i.resetObjectTransform(this),t.withoutShadow&&(this.shadow=null);var h,l,c,u,d=e.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,_={x:0,y:0};g&&(l=g.blur,h=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),_.x=2*Math.round(o(g.offsetX)+l)*o(h.scaleX),_.y=2*Math.round(o(g.offsetY)+l)*o(h.scaleY)),c=f.width+_.x,u=f.height+_.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new e.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===t.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new e.Point(p.width/2,p.height/2),"center","center");var m=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,t);return this.shadow=s,this.set("canvas",m),n&&(this.group=n),this.set(r).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(t){return t||(t={}),e.util.toDataURL(this.toCanvasElement(t),t.format||"png",t.quality||1)},isType:function(t){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},rotate:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var r=new e.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){e.runningAnimations&&e.runningAnimations.cancelByTarget(this)}}),e.util.createAccessors&&e.util.createAccessors(e.Object),i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.ENLIVEN_PROPS=["clipPath"],e.Object._fromObject=function(t,i,n,s){var o=e[t];i=r(i,!0),e.util.enlivenPatterns([i.fill,i.stroke],(function(t){void 0!==t[0]&&(i.fill=t[0]),void 0!==t[1]&&(i.stroke=t[1]),e.util.enlivenObjectEnlivables(i,i,(function(){var t=s?new o(i[s],i):new o(i);n&&n(t)}))}))},e.Object.__uid=0)}(e),S=T.util.degreesToRadians,C={left:-.5,center:0,right:.5},b={top:-.5,center:0,bottom:.5},T.util.object.extend(T.Object.prototype,{translateToGivenOrigin:function(t,e,i,r,n){var s,o,a,h=t.x,l=t.y;return"string"==typeof e?e=C[e]:e-=.5,"string"==typeof r?r=C[r]:r-=.5,"string"==typeof i?i=b[i]:i-=.5,"string"==typeof n?n=b[n]:n-=.5,o=n-i,((s=r-e)||o)&&(a=this._getTransformedDimensions(),h=t.x+s*a.x,l=t.y+o*a.y),new T.Point(h,l)},translateToCenterPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,e,i,"center","center");return this.angle?T.util.rotatePoint(r,t,S(this.angle)):r},translateToOriginPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,"center","center",e,i);return this.angle?T.util.rotatePoint(r,t,S(this.angle)):r},getCenterPoint:function(){var t=new T.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(t,e,i){var r,n,s=this.getCenterPoint();return r=void 0!==e&&void 0!==i?this.translateToGivenOrigin(s,"center","center",e,i):new T.Point(this.left,this.top),n=new T.Point(t.x,t.y),this.angle&&(n=T.util.rotatePoint(n,s,-S(this.angle))),n.subtractEquals(r)},setPositionByOrigin:function(t,e,i){var r=this.translateToCenterPoint(t,e,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(t){var e,i,r=S(this.angle),n=this.getScaledWidth(),s=T.util.cos(r)*n,o=T.util.sin(r)*n;e="string"==typeof this.originX?C[this.originX]:this.originX-.5,i="string"==typeof t?C[t]:t-.5,this.left+=s*(i-e),this.top+=o*(i-e),this.setCoords(),this.originX=t},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var t=T.util,e=t.degreesToRadians,i=t.multiplyTransformMatrices,r=t.transformPoint;t.object.extend(T.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(t,e){return e?t?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),t?this.aCoords:this.lineCoords)},getCoords:function(t,e){return i=this._getCoords(t,e),[new T.Point(i.tl.x,i.tl.y),new T.Point(i.tr.x,i.tr.y),new T.Point(i.br.x,i.br.y),new T.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r);return"Intersection"===T.Intersection.intersectPolygonRectangle(n,t,e).status},intersectsWithObject:function(t,e,i){return"Intersection"===T.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i)).status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=e?t.aCoords:t.lineCoords,s=0,o=t._getImageLines(n);s<4;s++)if(!t.containsPoint(r[s],o))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var n=this._getCoords(i,r),s=(e=e||this._getImageLines(n),this._findCrossPoints(t,e));return 0!==s&&s%2==1},isOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,t).some((function(t){return t.x<=i.x&&t.x>=e.x&&t.y<=i.y&&t.y>=e.y}))||!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_containsCenterOfCanvas:function(t,e,i){var r={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this.getCoords(!0,t).every((function(t){return(t.x>=i.x||t.x<=e.x)&&(t.y>=i.y||t.y<=e.y)}))&&this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s=0;for(var o in e)if(!((n=e[o]).o.y=t.y&&n.d.y>=t.y||(n.o.x===n.d.x&&n.o.x>=t.x?r=n.o.x:(i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(t.y-0*t.x-(n.o.y-i*n.o.x))/(0-i)),r>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(e,i){var r=this.getCoords(e,i);return t.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,r=e.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=n,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,r,n=(e=e||{}).noStyle,s=e.reviver,o=n?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,l=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=h&&h.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],_=t.indexOf("COMMON_PARTS"),p=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+T.Object.__uid++,r='\n'+h.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,l,n?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),t[_]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),h&&g.push(r),g.push(t.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var t=T.util.object.extend,e="stateProperties";function i(e,i,r){var n={};r.forEach((function(t){n[t]=e[t]})),t(e[i],n,!0)}function r(t,e,i){if(t===e)return!0;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var n=0,s=t.length;n=0;h--)if(n=a[h],this.isControlVisible(n)&&(r=this._getImageLines(e?this.oCoords[n].touchCorner:this.oCoords[n].corner),0!==(i=this._findCrossPoints({x:s,y:o},r))&&i%2==1))return this.__corner=n,n;return!1},forEachControl:function(t){for(var e in this.controls)t(this.controls[e],e,this)},_setCornerCoords:function(){var t=this.oCoords;for(var e in t){var i=this.controls[e];t[e].corner=i.calcCornerCoords(this.angle,this.cornerSize,t[e].x,t[e].y,!1),t[e].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,t[e].x,t[e].y,!0)}},drawSelectionBackground:function(e){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;e.save();var i=this.getCenterPoint(),r=this._calculateCurrentDimensions(),n=this.canvas.viewportTransform;return e.translate(i.x,i.y),e.scale(1/n[0],1/n[3]),e.rotate(t(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-r.x/2,-r.y/2,r.x,r.y),e.restore(),this},drawBorders:function(t,e){e=e||{};var i=this._calculateCurrentDimensions(),r=this.borderScaleFactor,n=i.x+r,s=i.y+r,o=void 0!==e.hasControls?e.hasControls:this.hasControls,a=!1;return t.save(),t.strokeStyle=e.borderColor||this.borderColor,this._setLineDash(t,e.borderDashArray||this.borderDashArray),t.strokeRect(-n/2,-s/2,n,s),o&&(t.beginPath(),this.forEachControl((function(e,i,r){e.withConnection&&e.getVisibility(r,i)&&(a=!0,t.moveTo(e.x*n,e.y*s),t.lineTo(e.x*n+e.offsetX,e.y*s+e.offsetY))})),a&&t.stroke()),t.restore(),this},drawBordersInGroup:function(t,e,i){i=i||{};var r=T.util.sizeAfterTransform(this.width,this.height,e),n=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=r.x+n*(s?this.canvas.getZoom():e.scaleX)+o,h=r.y+n*(s?this.canvas.getZoom():e.scaleY)+o;return t.save(),this._setLineDash(t,i.borderDashArray||this.borderDashArray),t.strokeStyle=i.borderColor||this.borderColor,t.strokeRect(-a/2,-h/2,a,h),t.restore(),this},drawControls:function(t,e){e=e||{},t.save();var i,r,n=this.canvas.getRetinaScaling();return t.setTransform(n,0,0,n,0,0),t.strokeStyle=t.fillStyle=e.cornerColor||this.cornerColor,this.transparentCorners||(t.strokeStyle=e.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(t,e.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(n,s,o){r=o.oCoords[s],n.getVisibility(o,s)&&(i&&(r=T.util.transformPoint(r,i)),n.render(t,r.x,r.y,e,o))})),t.restore(),this},isControlVisible:function(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)},setControlVisible:function(t,e){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e,this},setControlsVisibility:function(t){for(var e in t||(t={}),t)this.setControlVisible(e,t[e]);return this},onDeselect:function(){},onSelect:function(){}})}(),T.util.object.extend(T.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(e){t.set("left",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxCenterObjectV:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(e){t.set("top",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxRemove:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(e){t.set("opacity",e),s.requestRenderAll(),n()},onComplete:function(){s.remove(t),r()}})}}),T.util.object.extend(T.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var t,e,i=[],r=[];for(t in arguments[0])i.push(t);for(var n=0,s=i.length;n-1||n&&s.colorProperties.indexOf(n[1])>-1,a=n?this.get(n[0])[n[1]]:this.get(t);"from"in i||(i.from=a),o||(e=~e.indexOf("=")?a+parseFloat(e.replace("=","")):parseFloat(e));var h={target:this,startValue:i.from,endValue:e,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(t,e,r){return i.abort.call(s,t,e,r)},onChange:function(e,o,a){n?s[n[0]][n[1]]=e:s.set(t,e),r||i.onChange&&i.onChange(e,o,a)},onComplete:function(t,e,n){r||(s.setCoords(),i.onComplete&&i.onComplete(t,e,n))}};return o?T.util.animateColor(h.startValue,h.endValue,h.duration,h):T.util.animate(h)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n={x1:1,x2:1,y1:1,y2:1};function s(t,e){var i=t.origin,r=t.axis1,n=t.axis2,s=t.dimension,o=e.nearest,a=e.center,h=e.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(r),this.get(n));case a:return Math.min(this.get(r),this.get(n))+.5*this.get(s);case h:return Math.max(this.get(r),this.get(n))}}}e.Line?e.warn("fabric.Line is already defined"):(e.Line=e.util.createClass(e.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:e.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(t,e){t||(t=[0,0,0,0]),this.callSuper("initialize",e),this.set("x1",t[0]),this.set("y1",t[1]),this.set("x2",t[2]),this.set("y2",t[3]),this._setWidthHeight(e)},_setWidthHeight:function(t){t||(t={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in t?t.left:this._getLeftToOriginX(),this.top="top"in t?t.top:this._getTopToOriginY()},_set:function(t,e){return this.callSuper("_set",t,e),void 0!==n[t]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(t){t.beginPath();var e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;var i=t.strokeStyle;t.strokeStyle=this.stroke||t.fillStyle,this.stroke&&this._renderStroke(t),t.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(t){return i(this.callSuper("toObject",t),this.calcLinePoints())},_getNonTransformedDimensions:function(){var t=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t},calcLinePoints:function(){var t=this.x1<=this.x2?-1:1,e=this.y1<=this.y2?-1:1,i=t*this.width*.5,r=e*this.height*.5;return{x1:i,x2:t*this.width*-.5,y1:r,y2:e*this.height*-.5}},_toSVG:function(){var t=this.calcLinePoints();return["\n']}}),e.Line.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),e.Line.fromElement=function(t,r,n){n=n||{};var s=e.parseAttributes(t,e.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];r(new e.Line(o,i(s,n)))},e.Line.fromObject=function(t,i){var n=r(t,!0);n.points=[t.x1,t.y1,t.x2,t.y2],e.Object._fromObject("Line",n,(function(t){delete t.points,i&&i(t)}),"points")})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians;e.Circle?e.warn("fabric.Circle is already defined."):(e.Circle=e.util.createClass(e.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:e.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,r=(this.endAngle-this.startAngle)%360;if(0===r)t=["\n'];else{var n=i(this.startAngle),s=i(this.endAngle),o=this.radius;t=['180?"1":"0")+" 1"," "+e.util.cos(s)*o+" "+e.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),e.Circle.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),e.Circle.fromElement=function(t,i){var r,n=e.parseAttributes(t,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=n)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");n.left=(n.left||0)-n.radius,n.top=(n.top||0)-n.radius,i(new e.Circle(n))},e.Circle.fromObject=function(t,i){e.Object._fromObject("Circle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={});e.Triangle?e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),e.Triangle.fromObject=function(t,i){return e.Object._fromObject("Triangle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=2*Math.PI;e.Ellipse?e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,i,!1),t.restore(),this._renderPaintInOrder(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){var r=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,i(new e.Ellipse(r))},e.Ellipse.fromObject=function(t,i){e.Object._fromObject("Ellipse",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Rect?e.warn("fabric.Rect is already defined"):(e.Rect=e.util.createClass(e.Object,{stateProperties:e.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+r-e,o),a&&t.bezierCurveTo(s+r-h*e,o,s+r,o+h*i,s+r,o+i),t.lineTo(s+r,o+n-i),a&&t.bezierCurveTo(s+r,o+n-h*i,s+r-h*e,o+n,s+r-e,o+n),t.lineTo(s+e,o+n),a&&t.bezierCurveTo(s+h*e,o+n,s,o+n-h*i,s,o+n-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r,n){if(!t)return r(null);n=n||{};var s=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new e.Rect(i(n?e.util.object.clone(n):{},s));o.visible=o.visible&&o.width>0&&o.height>0,r(o)},e.Rect.fromObject=function(t,i){return e.Object._fromObject("Rect",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.toFixed,o=e.util.projectStrokeOnPoints;e.Polyline?e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:e.Object.prototype.cacheProperties.concat("points"),initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._setPositionDimensions(e)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(t){var e,i=this._calcDimensions(t),r=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-r,this.height=i.height-r,t.fromSVG||(e=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+r/2,y:i.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),void 0===t.left&&(this.left=t.fromSVG?i.left:e.x),void 0===t.top&&(this.top=t.fromSVG?i.top:e.y),this.pathOffset={x:i.left+this.width/2+r/2,y:i.top+this.height/2+r/2}},_calcDimensions:function(){var t=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,e=r(t,"x")||0,i=r(t,"y")||0;return{left:e,top:i,width:(n(t,"x")||0)-e,height:(n(t,"y")||0)-i}},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},_toSVG:function(){for(var t=[],i=this.pathOffset.x,r=this.pathOffset.y,n=e.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(t){var e,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-r,this.points[0].y-n);for(var s=0;s"},toObject:function(t){return n(this.callSuper("toObject",t),{path:this.path.map((function(t){return t.slice()}))})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=e.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,t)+", "+o(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var t,n,s=[],o=[],a=0,h=0,l=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(t){var i=!!this.group;return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(i&&e.util.removeTransformFromObject(t,this.group.calcTransformMatrix()),this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,i){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(t,i);if("canvas"===t)for(;r--;)this._objects[r]._set(t,i);e.Object.prototype._set.call(this,t,i)},toObject:function(t){var i=this.includeDefaultValues,r=this._objects.filter((function(t){return!t.excludeFromExport})).map((function(e){var r=e.includeDefaultValues;e.includeDefaultValues=i;var n=e.toObject(t);return e.includeDefaultValues=r,n})),n=e.Object.prototype.toObject.call(this,t);return n.objects=r,n},toDatalessObject:function(t){var i,r=this.sourcePath;if(r)i=r;else{var n=this.includeDefaultValues;i=this._objects.map((function(e){var i=e.includeDefaultValues;e.includeDefaultValues=n;var r=e.toDatalessObject(t);return e.includeDefaultValues=i,r}))}var s=e.Object.prototype.toDatalessObject.call(this,t);return s.objects=i,s},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=e.Object.prototype.shouldCache.call(this);if(t)for(var i=0,r=this._objects.length;i\n"],i=0,r=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+h+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var l=this.fill;this.fill=null,t=["\t\n'],this.fill=l}return"fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return T.util.loadImage(t,(function(t,r){this.setElement(t,i),this._setWidthHeight(),e&&e(this,r)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||r>e&&n>e)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=n);T.filterBackend||(T.filterBackend=T.initFilterBackend());var o=T.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,h=s.width,l=s.height;o.width=h,o.height=l,this._element=o,this._lastScaleX=t.scaleX=r,this._lastScaleY=t.scaleY=n,T.filterBackend.applyFilters([t],s,h,l,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(t){if(t=(t=t||this.filters||[]).filter((function(t){return t&&!t.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===t.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var e=this._originalElement,i=e.naturalWidth||e.width,r=e.naturalHeight||e.height;if(this._element===this._originalElement){var n=T.util.createCanvasElement();n.width=i,n.height=r,this._element=n,this._filteredEl=n}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,r),this._lastScaleX=1,this._lastScaleY=1;return T.filterBackend||(T.filterBackend=T.initFilterBackend()),T.filterBackend.applyFilters(t,this._originalElement,i,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(t){T.util.setImageSmoothing(t,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)},drawCacheOnCanvas:function(t){T.util.setImageSmoothing(t,this.imageSmoothing),T.Object.prototype.drawCacheOnCanvas.call(this,t)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(t){var e=this._element;if(e){var i=this._filterScalingX,r=this._filterScalingY,n=this.width,s=this.height,o=Math.min,a=Math.max,h=a(this.cropX,0),l=a(this.cropY,0),c=e.naturalWidth||e.width,u=e.naturalHeight||e.height,d=h*i,f=l*r,g=o(n*i,c-d),_=o(s*r,u-f),p=-n/2,m=-s/2,v=o(n,c/i-h),y=o(s,u/r-l);e&&t.drawImage(e,d,f,g,_,p,m,v,y)}},_needsResize:function(){var t=this.getTotalObjectScaling();return t.scaleX!==this._lastScaleX||t.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(t,e){this.setElement(T.util.getById(t),e),T.util.addClass(this.getElement(),T.Image.CSS_CANVAS)},_initConfig:function(t){t||(t={}),this.setOptions(t),this._setWidthHeight(t)},_initFilters:function(t,e){t&&t.length?T.util.enlivenObjects(t,(function(t){e&&e(t)}),"fabric.Image.filters"):e&&e()},_setWidthHeight:function(t){t||(t={});var e=this.getElement();this.width=t.width||e.naturalWidth||e.width||0,this.height=t.height||e.naturalHeight||e.height||0},parsePreserveAspectRatioAttribute:function(){var t,e=T.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,r=this._element.height,n=1,s=1,o=0,a=0,h=0,l=0,c=this.width,u=this.height,d={width:c,height:u};return!e||"none"===e.alignX&&"none"===e.alignY?(n=c/i,s=u/r):("meet"===e.meetOrSlice&&(t=(c-i*(n=s=T.util.findScaleToFit(this._element,d)))/2,"Min"===e.alignX&&(o=-t),"Max"===e.alignX&&(o=t),t=(u-r*s)/2,"Min"===e.alignY&&(a=-t),"Max"===e.alignY&&(a=t)),"slice"===e.meetOrSlice&&(t=i-c/(n=s=T.util.findScaleToCover(this._element,d)),"Mid"===e.alignX&&(h=t/2),"Max"===e.alignX&&(h=t),t=r-u/s,"Mid"===e.alignY&&(l=t/2),"Max"===e.alignY&&(l=t),i=c/n,r=u/s)),{width:i,height:r,scaleX:n,scaleY:s,offsetLeft:o,offsetTop:a,cropX:h,cropY:l}}}),T.Image.CSS_CANVAS="canvas-img",T.Image.prototype.getSvgSrc=T.Image.prototype.getSrc,T.Image.fromObject=function(t,e){var i=T.util.object.clone(t);T.util.loadImage(i.src,(function(t,r){r?e&&e(null,!0):T.Image.prototype._initFilters.call(i,i.filters,(function(r){i.filters=r||[],T.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(r){i.resizeFilter=r[0],T.util.enlivenObjectEnlivables(i,i,(function(){var r=new T.Image(t,i);e(r,!1)}))}))}))}),null,i.crossOrigin)},T.Image.fromURL=function(t,e,i){T.util.loadImage(t,(function(t,r){e&&e(new T.Image(t,i),r)}),null,i&&i.crossOrigin)},T.Image.ATTRIBUTE_NAMES=T.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),T.Image.fromElement=function(t,i,r){var n=T.parseAttributes(t,T.Image.ATTRIBUTE_NAMES);T.Image.fromURL(n["xlink:href"],i,e(r?T.util.object.clone(r):{},n))})}(e),T.util.object.extend(T.Object.prototype,{_getAngleValueForStraighten:function(){var t=this.angle%360;return t>0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(t){var e=function(){},i=(t=t||{}).onComplete||e,r=t.onChange||e,n=this;return T.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.rotate(t),r()},onComplete:function(){n.setCoords(),i()}})}}),T.util.object.extend(T.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function t(t,e){var i="precision "+e+" float;\nvoid main(){}",r=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(r,i),t.compileShader(r),!!t.getShaderParameter(r,t.COMPILE_STATUS)}function e(t){t&&t.tileSize&&(this.tileSize=t.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}T.isWebglSupported=function(e){if(T.isLikelyNode)return!1;e=e||T.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),r=i.getContext("webgl")||i.getContext("experimental-webgl"),n=!1;if(r){T.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),n=T.maxTextureSize>=e;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(t(r,s[o])){T.webGlPrecision=s[o];break}}return this.isSupported=n,n},T.WebglFilterBackend=e,e.prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var n="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&s){var o=T.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(T.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=E);var h,l,c={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),O.call(c,this.gl,c),l=window.performance.now()-h,h=window.performance.now(),E.call(c,this.gl,c),l>window.performance.now()-h?(this.imageBuffer=a,this.copyGLTo2D=E):this.copyGLTo2D=O}},createWebGLCanvas:function(t,e){var i=T.util.createCanvasElement();i.width=t,i.height=e;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},n=i.getContext("webgl",r);n||(n=i.getContext("experimental-webgl",r)),n&&(n.clearColor(0,0,0,0),this.canvas=i,this.gl=n)},applyFilters:function(t,e,i,r,n,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,e));var h={originalWidth:e.width||e.originalWidth,originalHeight:e.height||e.originalHeight,sourceWidth:i,sourceHeight:r,destinationWidth:i,destinationHeight:r,context:a,sourceTexture:this.createTexture(a,i,r,!o&&e),targetTexture:this.createTexture(a,i,r),originalTexture:o||this.createTexture(a,i,r,!o&&e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:n},l=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,l),t.forEach((function(t){t&&t.applyTo(h)})),function(t){var e=t.targetCanvas,i=e.width,r=e.height,n=t.destinationWidth,s=t.destinationHeight;i===n&&r===s||(e.width=n,e.height=s)}(h),this.copyGLTo2D(a,h),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(h.sourceTexture),a.deleteTexture(h.targetTexture),a.deleteFramebuffer(l),n.getContext("2d").setTransform(1,0,0,1,0,0),h},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(t,e,i,r){var n=t.createTexture();return t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),r?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,i,0,t.RGBA,t.UNSIGNED_BYTE,null),n},getCachedTexture:function(t,e){if(this.textureCache[t])return this.textureCache[t];var i=this.createTexture(this.gl,e.width,e.height,e);return this.textureCache[t]=i,i},evictCachesForKey:function(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])},copyGLTo2D:O,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var t=this.gl,e={renderer:"",vendor:""};if(!t)return e;var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var r=t.getParameter(i.UNMASKED_RENDERER_WEBGL),n=t.getParameter(i.UNMASKED_VENDOR_WEBGL);r&&(e.renderer=r.toLowerCase()),n&&(e.vendor=n.toLowerCase())}return this.gpuInfo=e,e}}}(),function(){var t=function(){};function e(){}T.Canvas2dFilterBackend=e,e.prototype={evictCachesForKey:t,dispose:t,clearWebGLCaches:t,resources:{},applyFilters:function(t,e,i,r,n){var s=n.getContext("2d");s.drawImage(e,0,0,i,r);var o={sourceWidth:i,sourceHeight:r,imageData:s.getImageData(0,0,i,r),originalEl:e,originalImageData:s.getImageData(0,0,i,r),canvasEl:n,ctx:s,filterBackend:this};return t.forEach((function(t){t.applyTo(o)})),o.imageData.width===i&&o.imageData.height===r||(n.width=o.imageData.width,n.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),T.Image=T.Image||{},T.Image.filters=T.Image.filters||{},T.Image.filters.BaseFilter=T.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},createProgram:function(t,e,i){e=e||this.fragmentSource,i=i||this.vertexSource,"highp"!==T.webGlPrecision&&(e=e.replace(/precision highp float/g,"precision "+T.webGlPrecision+" float"));var r=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(r,i),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+t.getShaderInfoLog(r));var n=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(n,e),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+t.getShaderInfoLog(n));var s=t.createProgram();if(t.attachShader(s,r),t.attachShader(s,n),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+t.getProgramInfoLog(s));var o=this.getAttributeLocations(t,s),a=this.getUniformLocations(t,s)||{};return a.uStepW=t.getUniformLocation(s,"uStepW"),a.uStepH=t.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(t,e){return{aPosition:t.getAttribLocation(e,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(t,e,i){var r=e.aPosition,n=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,n),t.enableVertexAttribArray(r),t.vertexAttribPointer(r,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW)},_setupFrameBuffer:function(t){var e,i,r=t.context;t.passes>1?(e=t.destinationWidth,i=t.destinationHeight,t.sourceWidth===e&&t.sourceHeight===i||(r.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(r,e,i)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(t){t.passes--,t.pass++;var e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e},isNeutralState:function(){var t=this.mainParameter,e=T.Image.filters[this.type].prototype;if(t){if(Array.isArray(e[t])){for(var i=e[t].length;i--;)if(this[t][i]!==e[t][i])return!1;return!0}return e[t]===this[t]}return!1},applyTo:function(t){t.webgl?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)},retrieveShader:function(t){return t.programCache.hasOwnProperty(this.type)||(t.programCache[this.type]=this.createProgram(t.context)),t.programCache[this.type]},applyToWebGL:function(t){var e=t.context,i=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(i.program),this.sendAttributeData(e,i.attributeLocations,t.aPosition),e.uniform1f(i.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(i.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,i.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(t,e,i){t.activeTexture(i),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)},unbindAdditionalTexture:function(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(t){this[this.mainParameter]=t},sendUniformData:function(){},createHelpLayer:function(t){if(!t.helpLayer){var e=document.createElement("canvas");e.width=t.sourceWidth,e.height=t.sourceHeight,t.helpLayer=e}},toObject:function(){var t={type:this.type},e=this.mainParameter;return e&&(t[e]=this[e]),t},toJSON:function(){return this.toObject()}}),T.Image.filters.BaseFilter.fromObject=function(t,e){var i=new T.Image.filters[t.type](t);return e&&e(i),i},function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.ColorMatrix=r(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(t){this.callSuper("initialize",t),this.matrix=this.matrix.slice(0)},applyTo2d:function(t){var e,i,r,n,s,o=t.imageData.data,a=o.length,h=this.matrix,l=this.colorsOnly;for(s=0;s=S||o<0||o>=y||(h=4*(a*y+o),l=p[f*m+d],e+=_[h]*l,i+=_[h+1]*l,r+=_[h+2]*l,w||(n+=_[h+3]*l));b[s]=e,b[s+1]=i,b[s+2]=r,b[s+3]=w?_[s+3]:n}t.imageData=C},getUniformLocations:function(t,e){return{uMatrix:t.getUniformLocation(e,"uMatrix"),uOpaque:t.getUniformLocation(e,"uOpaque"),uHalfSize:t.getUniformLocation(e,"uHalfSize"),uSize:t.getUniformLocation(e,"uSize")}},sendUniformData:function(t,e){t.uniform1fv(e.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Grayscale=r(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(t){var e,i,r=t.imageData.data,n=r.length,s=this.mode;for(e=0;el[0]&&n>l[1]&&s>l[2]&&r 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var i,r,n,s,o,a,h,l=t.imageData.data,c=l.length,u=1-this.alpha;i=(h=new e.Color(this.color).getSource())[0]*this.alpha,r=h[1]*this.alpha,n=h[2]*this.alpha;for(var d=0;d=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;var i=(e*=Math.PI)/t;return a(e)/e*a(i)/i}},applyTo2d:function(t){var e=t.imageData,i=this.scaleX,r=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/r;var n,s=e.width,a=e.height,h=o(s*i),l=o(a*r);"sliceHack"===this.resizeType?n=this.sliceByTwo(t,s,a,h,l):"hermite"===this.resizeType?n=this.hermiteFastResize(t,s,a,h,l):"bilinear"===this.resizeType?n=this.bilinearFiltering(t,s,a,h,l):"lanczos"===this.resizeType&&(n=this.lanczosResize(t,s,a,h,l)),t.imageData=n},sliceByTwo:function(t,i,n,s,o){var a,h,l=t.imageData,c=.5,u=!1,d=!1,f=i*c,g=n*c,_=e.filterBackend.resources,p=0,m=0,v=i,y=0;for(_.sliceByTwo||(_.sliceByTwo=document.createElement("canvas")),((a=_.sliceByTwo).width<1.5*i||a.height=e)){M=r(1e3*s(T-C.x)),S[M]||(S[M]={});for(var P=b.y-y;P<=b.y+y;P++)P<0||P>=o||(L=r(1e3*s(P-C.y)),S[M][L]||(S[M][L]=f(n(i(M*p,2)+i(L*m,2))/1e3)),(x=S[M][L])>0&&(E+=x,I+=x*c[O=4*(P*e+T)],R+=x*c[O+1],A+=x*c[O+2],D+=x*c[O+3]))}d[O=4*(w*a+h)]=I/E,d[O+1]=R/E,d[O+2]=A/E,d[O+3]=D/E}return++h1&&L<-1||(y=2*L*L*L-3*L*L+1)>0&&(x+=y*f[3+(M=4*(D+E*e))],C+=y,f[M+3]<255&&(y=y*f[M+3]/250),b+=y*f[M],w+=y*f[M+1],T+=y*f[M+2],S+=y)}_[v]=b/S,_[v+1]=w/S,_[v+2]=T/S,_[v+3]=x/C}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Contrast=r(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(t){if(0!==this.contrast){var e,i=t.imageData.data,r=i.length,n=Math.floor(255*this.contrast),s=259*(n+255)/(255*(259-n));for(e=0;e1&&(e=1/this.aspectRatio):this.aspectRatio<1&&(e=this.aspectRatio),t=e*this.blur*.12,this.horizontal?i[0]=t:i[1]=t,i}}),i.Blur.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Gamma=r(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(t){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,t)},applyTo2d:function(t){var e,i=t.imageData.data,r=this.gamma,n=i.length,s=1/r[0],o=1/r[1],a=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),e=0,n=256;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){var e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){if(t.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":t.textBaseline="middle";break;case"ascender":t.textBaseline="top";break;case"descender":t.textBaseline="bottom"}t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;et&&(t=r)}return t},_renderTextLine:function(t,e,i,r,n,s){this._renderChars(t,e,i,r,n,s)},_renderTextLinesBackground:function(t){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var e,i,r,n,s,o,a,h=t.fillStyle,l=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,_=this._textLines.length;g<_;g++)if(e=this.getHeightOfLine(g),this.textBackgroundColor||this.styleHas("textBackgroundColor",g)){r=this._textLines[g],i=this._getLineLeftOffset(g),d=0,u=0,n=this.getValueOfPropertyAt(g,0,"textBackgroundColor");for(var p=0,m=r.length;p=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:h,numOfSpaces:0}},_setGraphemeOnPath:function(t,i,r){var n=t+i.kernedWidth/2,s=this.path,o=e.util.getPointOnPath(s.path,n,s.segmentsInfo);i.renderLeft=o.x-r.x,i.renderTop=o.y-r.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(t,e,i,r,n){var s,o=this.getCompleteStyleDeclaration(e,i),a=r?this.getCompleteStyleDeclaration(e,i-1):{},h=this._measureChar(t,o,r,a),l=h.kernedWidth,c=h.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),l+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:l,deltaY:o.deltaY};if(i>0&&!n){var d=this.__charBounds[e][i-1];u.left=d.left+d.width+h.kernedWidth-h.width}return u},getHeightOfLine:function(t){if(this.__lineHeights[t])return this.__lineHeights[t];for(var e=this._textLines[t],i=this.getHeightOfChar(t,0),r=1,n=e.length;r0){var E=v+s+u;"rtl"===this.direction&&(E=this.width-E-d),l&&m&&(t.fillStyle=m,t.fillRect(E,c+b*r+o,d,this.fontSize/15)),u=f.left,d=f.width,l=g,m=p,r=n,o=a}else d+=f.kernedWidth;E=v+s+u,"rtl"===this.direction&&(E=this.width-E-d),t.fillStyle=p,g&&p&&t.fillRect(E,c+b*r+o,d-C,this.fontSize/15),y+=i}else y+=i;this._removeShadow(t)}},_getFontDeclaration:function(t,i){var r=t||this,n=this.fontFamily,s=e.Text.genericFonts.indexOf(n.toLowerCase())>-1,o=void 0===n||n.indexOf("'")>-1||n.indexOf(",")>-1||n.indexOf('"')>-1||s?r.fontFamily:'"'+r.fontFamily+'"';return[e.isLikelyNode?r.fontWeight:r.fontStyle,e.isLikelyNode?r.fontStyle:r.fontWeight,i?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",o].join(" ")},render:function(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",t)))},_splitTextIntoLines:function(t){for(var i=t.split(this._reNewline),r=new Array(i.length),n=["\n"],s=[],o=0;o-1&&(t.underline=!0),t.textDecoration.indexOf("line-through")>-1&&(t.linethrough=!0),t.textDecoration.indexOf("overline")>-1&&(t.overline=!0),delete t.textDecoration)}T.IText=T.util.createClass(T.Text,T.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(t,e){this.callSuper("initialize",t,e),this.initBehavior()},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(t){this.clearContextTop(),this.callSuper("render",t),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(t){this.callSuper("_render",t)},clearContextTop:function(t){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this.canvas.contextTop,i=this.canvas.viewportTransform;e.save(),e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(e),this._clearTextArea(e),t||e.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this._getCursorBoundaries(),e=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(t,e):this.renderSelection(t,e),e.restore()}},_clearTextArea:function(t){var e=this.width+4,i=this.height+4;t.clearRect(-e/2,-i/2,e,i)},_getCursorBoundaries:function(t){void 0===t&&(t=this.selectionStart);var e=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(t);return{left:e,top:i,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(t){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var e,i,r,n,s=0,o=0,a=this.get2DCursorLocation(t);r=a.charIndex,i=a.lineIndex;for(var h=0;h0?o:0)},"rtl"===this.direction&&(n.left*=-1),this.cursorOffsetCache=n,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(r,n,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,h=t.topOffset,l=this.getValueOfPropertyAt(r,n,"deltaY");h+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(t,e),e.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,n,"fill"),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+t.leftOffset-a/2,h+t.top+l,a,s)},renderSelection:function(t,e){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,n=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(r),a=s.lineIndex,h=o.lineIndex,l=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=h;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),_=0,p=0;if(u===a&&(_=this.__charBounds[a][l].left),u>=a&&u1)&&(g/=this.lineHeight);var v=t.left+f+_,y=p-_,S=g,C=0;this.inCompositionMode?(e.fillStyle=this.compositionColor||"black",S=1,C=g):e.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),e.fillRect(v,t.top+t.topOffset+C,y,S),t.topOffset+=d}},getCurrentCharFontSize:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fontSize")},getCurrentCharColor:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fill")},_getCurrentCharIndex:function(){var t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}}),T.IText.fromObject=function(e,i){if(t(e),e.styles)for(var r in e.styles)for(var n in e.styles[r])t(e.styles[r][n]);T.Object._fromObject("IText",e,i,"text")}}(),w=T.util.object.clone,T.util.object.extend(T.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var t=this;this.on("added",(function(){var e=t.canvas;e&&(e._hasITextHandlers||(e._hasITextHandlers=!0,t._initCanvasHandlers(e)),e._iTextInstances=e._iTextInstances||[],e._iTextInstances.push(t))}))},initRemovedHandler:function(){var t=this;this.on("removed",(function(){var e=t.canvas;e&&(e._iTextInstances=e._iTextInstances||[],T.util.removeFromArray(e._iTextInstances,t),0===e._iTextInstances.length&&(e._hasITextHandlers=!1,t._removeCanvasHandlers(e)))}))},_initCanvasHandlers:function(t){t._mouseUpITextHandler=function(){t._iTextInstances&&t._iTextInstances.forEach((function(t){t.__isMousedown=!1}))},t.on("mouse:up",t._mouseUpITextHandler)},_removeCanvasHandlers:function(t){t.off("mouse:up",t._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(t,e,i,r){var n;return n={isAborted:!1,abort:function(){this.isAborted=!0}},t.animate("_currentCursorOpacity",e,{duration:i,onComplete:function(){n.isAborted||t[r]()},onChange:function(){t.canvas&&t.selectionStart===t.selectionEnd&&t.renderCursorOrSelection()},abort:function(){return n.isAborted}}),n},_onTickComplete:function(){var t=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){t._currentTickCompleteState=t._animateCursor(t,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(t){var e=this,i=t?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){e._tick()}),i)},abortCursorAnimation:function(){var t=this._currentTickState||this._currentTickCompleteState,e=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,t&&e&&e.clearContext(e.contextTop||e.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(t){var e=0,i=t-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i--;for(;/\S/.test(this._text[i])&&i>-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i++;for(;/\S/.test(this._text[i])&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this._text[i])&&i0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var r=i.slice(0,t),n=T.util.string.graphemeSplit(r).length;if(t===e)return{selectionStart:n,selectionEnd:n};var s=i.slice(t,e);return{selectionStart:n,selectionEnd:n+T.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var r=i.slice(0,t).join("").length;return t===e?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),r=i.lineIndex,n=i.charIndex,s=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},l=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/l,d=c.height/l,f=u-s,g=d-s,_=c.clientWidth/u,p=c.clientHeight/d;return h=T.util.transformPoint(h,a),(h=T.util.transformPoint(h,this.canvas.viewportTransform)).x*=_,h.y*=p,h.x<0&&(h.x=0),h.x>f&&(h.x=f),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text,e=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,r,n=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=n.lineIndex,a=n.charIndex,h=s.lineIndex,l=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;i=l&&(r[c-d]=r[u],delete r[u])}},shiftLineStyles:function(t,e){var i=w(this.styles);for(var r in this.styles){var n=parseInt(r,10);n>t&&(this.styles[n+e]=i[n],i[n-e]||delete this.styles[n])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,e,i,r){var n,s={},o=!1,a=this._unwrappedTextLines[t].length===e;for(var h in i||(i=1),this.shiftLineStyles(t,i),this.styles[t]&&(n=this.styles[t][0===e?e:e-1]),this.styles[t]){var l=parseInt(h,10);l>=e&&(o=!0,s[l-e]=this.styles[t][h],a&&0===e||delete this.styles[t][h])}var c=!1;for(o&&!a&&(this.styles[t+i]=s,c=!0),c&&i--;i>0;)r&&r[i-1]?this.styles[t+i]={0:w(r[i-1])}:n?this.styles[t+i]={0:w(n)}:delete this.styles[t+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(t,e,i,r){this.styles||(this.styles={});var n=this.styles[t],s=n?w(n):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=e&&(n[a+i]=s[a],s[a-i]||delete n[a])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][e+i]=w(r[i]));else if(n)for(var h=n[e?e-1:1];h&&i--;)this.styles[t][e+i]=w(h)},insertNewStyleBlock:function(t,e,i){for(var r=this.get2DCursorLocation(e,!0),n=[0],s=0,o=0;o0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,n[0],i),i=i&&i.slice(n[0]+1)),s&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+n[0],s),o=1;o0?this.insertCharStyleObject(r.lineIndex+o,0,n[o],i):i&&this.styles[r.lineIndex+o]&&i[0]&&(this.styles[r.lineIndex+o][0]=i[0]),i=i&&i.slice(n[o]+1);n[o]>0&&this.insertCharStyleObject(r.lineIndex+o,0,n[o],i)},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}}),T.util.object.extend(T.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(t.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i=this.getLocalPointer(t),r=0,n=0,s=0,o=0,a=0,h=0,l=this._textLines.length;h0&&(o+=this._textLines[h-1].length+this.missingNewlineOffset(h-1));n=this._getLineLeftOffset(a)*this.scaleX,e=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+n);for(var c=0,u=e.length;cs||o<0?0:1);return this.flipX&&(a=n-a),a>this._text.length&&(a=this._text.length),a}}),T.util.object.extend(T.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=T.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):T.document.body.appendChild(this.hiddenTextarea),T.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),T.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),T.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),T.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(T.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){var e="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,r,n,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,h=this._text.length,l=a.length,c=l-h,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),_=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):l0&&(r+=(i=this.__charBounds[t][e-1]).left+i.width),r},getDownCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(n===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n+1,o);return this._textLines[n].slice(s).length+a+1+this.missingNewlineOffset(n)},_getSelectionForOffset:function(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||t.metaKey||33===t.keyCode)return-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n-1,o),h=this._textLines[n].slice(0,s),l=this.missingNewlineOffset(n-1);return-this._textLines[n-1].length+a-h.length+(1-l)},_getIndexOnLine:function(t,e){for(var i,r,n=this._textLines[t],s=this._getLineLeftOffset(t),o=0,a=0,h=n.length;ae){r=!0;var l=s-i,c=s,u=Math.abs(l-e);o=Math.abs(c-e)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,r){void 0===r&&(r=i),r>i&&this.removeStyleFromTo(i,r);var n=T.util.string.graphemeSplit(t);this.insertNewStyleBlock(n,i,e),this._text=[].concat(this._text.slice(0,i),n,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var t=T.util.toFixed,e=/ +/g;T.util.object.extend(T.Text.prototype,{_toSVG:function(){var t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(t){var e=this.getSvgTextDecoration(this);return[t.textBgRects.join(""),'\t\t",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,r=[],n=[],s=t;this._setSVGBg(n);for(var o=0,a=this._textLines.length;o",T.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(t,e,i,r){var n,s,o,a,h,l=this.getHeightOfLine(e),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[e];r+=l*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,_=f.length-1;g<=_;g++)h=g===_||this.charSpacing,u+=f[g],o=this.__charBounds[e][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!h&&this._reSpaceAndTab.test(f[g])&&(h=!0),h||(n=n||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(n,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,r)),u="",n=s,i+=d,d=0)},_pushTextBgRect:function(e,i,r,n,s,o){var a=T.Object.NUM_FRACTION_DIGITS;e.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,r){for(var n,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,l=0,c=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,r=0,n={},s=0;s0?(i=0,r++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[r])&&s>0&&(i++,r++),n[s]={line:e,offset:i},r+=t.graphemeLines[s].length,i+=t.graphemeLines[s].length;return n},styleHas:function(t,i){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[i];r&&(i=r.line)}return e.Text.prototype.styleHas.call(this,t,i)},isEmptyStyles:function(t){if(!this.styles)return!0;var e,i,r=0,n=!1,s=this._styleMap[t],o=this._styleMap[t+1];for(var a in s&&(t=s.line,r=s.offset),o&&(n=o.line===t,e=o.offset),i=void 0===t?this.styles:{line:this.styles[t]})for(var h in i[a])if(h>=r&&(!n||hr&&!p?(a.push(h),h=[],s=f,p=!0):s+=m,p||o||h.push(d),h=h.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>_&&(_=f);return v&&a.push(h),_+n>this.dynamicMinWidth&&(this.dynamicMinWidth=_-m+n),a},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var i=e.Text.prototype._splitTextIntoLines.call(this,t),r=this._wrapText(i.lines,this.width),n=new Array(r.length),s=0;s{},898:()=>{},245:()=>{}},T={};function x(t){var e=T[t];if(void 0!==e)return e.exports;var i=T[t]={exports:{}};return w[t](i,i.exports,x),i.exports}x.d=(t,e)=>{for(var i in e)x.o(e,i)&&!x.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},x.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var O={};(()=>{let t;x.d(O,{R:()=>t}),t="undefined"!=typeof document&&"undefined"!=typeof window?x(653).fabric:{version:"5.2.1"}})();var E=O.R; /*! * Dynamsoft JavaScript Library * @product Dynamsoft Camera Enhancer JS Edition * @website https://www.dynamsoft.com * @copyright Copyright 2022, Dynamsoft Corporation * @author Dynamsoft - * @version 3.0.0 (js 20220726) + * @version 3.0.1 (js 20220803) * @fileoverview Dynamsoft JavaScript Library for Camera Enhancer * More info on DCE JS: https://www.dynamsoft.com/camera-enhancer/docs/programming/javascript/?ver=latest - */function I(t,e,i,r){return new(i||(i=Promise))((function(n,s){function o(t){try{h(r.next(t))}catch(t){s(t)}}function a(t){try{h(r.throw(t))}catch(t){s(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,a)}h((r=r.apply(t,e||[])).next())}))}const R="undefined"==typeof self;let A,D,M,L,P;if("undefined"!=typeof navigator&&(A=navigator,D=A.userAgent,M=A.platform,L=A.mediaDevices),!R){const t={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(D)||this.searchVersion(A.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=D.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(t){for(let e=0;e{let t=!1;if(B)try{(await L.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===P.browser&&P.version>66||"Safari"===P.browser&&P.version>13||"OPR"===P.browser&&P.version>43||"Edge"===P.browser&&P.version;const N=(()=>{if(!R&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"})();class V{constructor(t,e){this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapStyle=new Map,this.mapEvents=new Map([["select",[]],["deselect",[]]]),this.isDrawingItem=!0,this._setFabricObject(t),this._mediaType=t.type,this.styleSelector="default",this.styleId=e;for(let t of V.arrStyleSelectors)this._mapStyle.set(t,null)}get mediaType(){return this._mediaType}get drawingLayerId(){return this._drawingLayerId}_setFabricObject(t){this._fabricObject=t;const e=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const t=this.mapEvents.get("select");for(let e of t)e&&e.apply(this)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const t=e.get("deselect");for(let e of t)e&&e.apply(this)},t.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}on(t,e,i){const r=this.mapEvents.get(t);r.includes(e)||r.push(e)}off(t,e){const i=this.mapEvents.get(t),r=i.indexOf(e);-1!==r&&i.splice(r,1)}_setEditable(t){const e=this._fabricObject;t?(e.selectable=!0,e.evented=!0,e.hasControls=!0):(e.selectable=!1,e.evented=!1,e.hasControls=!1)}_extendSet(t,e){return!1}_extendGet(t){}set(t,e){this._extendSet(t,e)||("x"===t?this._fabricObject.set("left",e):"y"===t?this._fabricObject.set("top",e):this._fabricObject.set(t,e)),["vertices","left","top","width","height","scaleX","scaleY","skewX","skewY","padding","angle","strokeWidth"].includes(t)&&this._fabricObject.setCoords()}get(t){let e=this._extendGet(t);return void 0===e&&(e="x"===t?this._fabricObject.get("left"):"y"===t?this._fabricObject.get("top"):this._fabricObject.get(t)),e}}function U(t,e,i){let r=i.points[this.pointIndex].x-i.pathOffset.x,n=i.points[this.pointIndex].y-i.pathOffset.y;return E.util.transformPoint({x:r,y:n},E.util.multiplyTransformMatrices(i.canvas.viewportTransform,i.calcTransformMatrix()))}function G(t){let e=new E.Point(t.strokeUniform?1/t.scaleX:1,t.strokeUniform?1/t.scaleY:1).multiply(t.strokeWidth);return new E.Point(t.width+e.x,t.height+e.y)}function W(t,e,i,r){let n=e.target,s=n.controls[n.__corner],o=n.toLocalPoint(new E.Point(i,r),"center","center"),a=G(n),h=n._getTransformedDimensions(0,0),l={x:o.x*a.x/h.x+n.pathOffset.x,y:o.y*a.y/h.y+n.pathOffset.y};return n.points[s.pointIndex]=l,!0}function H(t,e){return function(i,r,n,s){let o=r.target,a=E.util.transformPoint({x:o.points[t].x-o.pathOffset.x,y:o.points[t].y-o.pathOffset.y},o.calcTransformMatrix()),h=e(i,r,n,s);o._setPositionDimensions({});let l=G(o),c=(o.points[t].x-o.pathOffset.x)/l.x,u=(o.points[t].y-o.pathOffset.y)/l.y;return o.setPositionByOrigin(a,c+.5,u+.5),h}}V.arrMediaTypes=["rect","arc","polygon","image","text","line","path"],V.arrStyleSelectors=["default","selected"],"undefined"!=typeof document&&"undefined"!=typeof window&&(E.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(E.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(t){t.dispose&&t.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),E.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},E.Object.prototype.transparentCorners=!1,E.Object.prototype.cornerSize=20,E.Object.prototype.touchCornerSize=100,E.Object.prototype.cornerColor="rgb(254,142,20)",E.Object.prototype.cornerStyle="circle",E.Object.prototype.strokeUniform=!0,E.Object.prototype.hasBorders=!1,E.ActiveSelection.prototype.onDeselect=function(){return this.getObjects().forEach((t=>{setTimeout(t.onDeselect,0)})),this.destroy(),!1},E.Canvas.prototype.containerClass="",E.Canvas.prototype.getPointer=function(t,e){if(this._absolutePointer&&!e)return this._absolutePointer;if(this._pointer&&e)return this._pointer;var i,r=this.upperCanvasEl,n=E.util.getPointer(t,r),s=r.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,e||(n=this.restorePointerVpt(n));var h=this.getRetinaScaling();if(1!==h&&(n.x/=h,n.y/=h),0!==o&&0!==a){var l=window.getComputedStyle(r).objectFit,c=r.width,u=r.height,d=o,f=a;i={width:c/d,height:u/f};var g,_,p=c/u,m=d/f;return"contain"===l?p>m?(g=d,_=d/p,{x:n.x*i.width,y:(n.y-(f-_)/2)*i.width}):(g=f*p,_=f,{x:(n.x-(d-g)/2)*i.height,y:n.y*i.height}):"cover"===l?p>m?{x:(c-i.height*d)/2+n.x*i.height,y:n.y*i.height}:{x:n.x*i.width,y:(u-i.width*f)/2+n.y*i.width}:{x:n.x*i.width,y:n.y*i.height}}return i={width:1,height:1},{x:n.x*i.width,y:n.y*i.height}});class Y{constructor(t,e,i,r){let n,s;switch(this.mapMediaType_Style=new Map,this.mode="viewer",this.onSelectionChange=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,t.hasOwnProperty("getFabricCanvas")?this.fabricCanvas=t.getFabricCanvas():(this.fabricCanvas=new E.Canvas(t,r),this.fabricCanvas.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),this.fabricCanvas.lowerCanvasEl.className="",this.fabricCanvas.upperCanvasEl.className="",this.fabricCanvas.on("selection:created",(function(t){const e=t.selected,i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{t.onSelectionChange&&t.onSelectionChange(i,[])}),0)}})),this.fabricCanvas.on("before:selection:cleared",(function(t){const e=this.getActiveObjects(),i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{const e=[];for(let r of i)t.hasDrawingItem(r)&&e.push(r);e.length>0&&t.onSelectionChange&&t.onSelectionChange([],e)}),0)}})),this.fabricCanvas.on("selection:updated",(function(t){const e=t.selected,i=t.deselected,r=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of i){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of r){const r=[],n=[];for(let i of e){const e=i.getDrawingItem();e._drawingLayer===t&&r.push(e)}for(let e of i){const i=e.getDrawingItem();i._drawingLayer===t&&n.push(i)}setTimeout((()=>{t.onSelectionChange&&t.onSelectionChange(r,n)}),0)}})),this.fabricCanvas.wrapperEl.style.position="absolute",t.getFabricCanvas=()=>this.fabricCanvas),this.id=e,this._mapDrawingStyles=i,e){case 1:n=i.get(1),s=i.get(5);break;case 2:n=i.get(2),s=i.get(6);break;case 3:n=i.get(3),s=i.get(7);break;default:n=i.get(4),s=i.get(8)}for(let t of V.arrMediaTypes)this.mapMediaType_Style.set(t,{default:n,selected:s})}getId(){return this.id}_getDrawingStyle(t,e){if("number"!=typeof t)throw new Error("Invalid style id.");const i=this._mapDrawingStyles.get(t);return i?e?JSON.parse(JSON.stringify(i)):i:null}setVisible(t){if(t){for(let t of this._arrFabricObject)t.visible=!0;this._visible=!0}else{for(let t of this._arrFabricObject)t.visible=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyleId(t){return t.styleId?t.styleId:this.mapMediaType_Style.get(t._mediaType)[t.styleSelector].styleId}_getItemCurrentStyle(t){if(t.styleId)return this._getDrawingStyle(t.styleId);return t._mapStyle.get(t.styleSelector)||null}_changeMediaTypeCurStyleInStyleSelector(t,e,i,r){let n;switch(t){case"rect":n=this.fabricCanvas.getObjects("rect");break;case"arc":n=this.fabricCanvas.getObjects("circle");break;case"polygon":n=this.fabricCanvas.getObjects("polygon");break;case"image":n=this.fabricCanvas.getObjects("image");break;case"text":n=this.fabricCanvas.getObjects("text");break;case"line":n=this.fabricCanvas.getObjects("line");break;case"path":n=this.fabricCanvas.getObjects("path")}for(let t of n){if(!this._arrFabricObject.includes(t))continue;const r=t.getDrawingItem();r.styleSelector===e&&this._changeItemStyle(r,i,!0)}r||this.fabricCanvas.renderAll()}_changeItemStyle(t,e,i){if(!t||!e)return;const r=t._getFabricObject();"number"==typeof t.styleId&&(e=this._getDrawingStyle(t.styleId)),r.strokeWidth=e.lineWidth,"fill"===e.paintMode?(r.fill=e.fillStyle,r.stroke=e.fillStyle):"stroke"===e.paintMode?(r.fill="transparent",r.stroke=e.strokeStyle):"strokeAndFill"===e.paintMode&&(r.fill=e.fillStyle,r.stroke=e.strokeStyle),r.fontFamily&&(r.fontFamily=e.fontFamily),r.fontSize&&(r.fontSize=e.fontSize),r.group||(r.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(t,e,i){if(!t||!e)return;const r=t.getChildItems();if("add"===i){if(r.includes(e))return;const i=e._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");e._zIndex=null}else{let i;if(e.styleId)i=this._getDrawingStyle(e.styleId);else{i=this.mapMediaType_Style.get(e._mediaType)[t.styleSelector];const r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected,!0)},n=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default,!0)};e.on("select",r),e.on("deselect",n),e._funcChangeStyleToSelected=r,e._funcChangeStyleToDefault=n}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,i,!0)}t._fabricObject.addWithUpdate(e._getFabricObject())}else{if("remove"!==i)return;if(!r.includes(e))return;e._zIndex=null,e._drawingLayer=null,e._drawingLayerId=null,e.off("select",e._funcChangeStyleToSelected),e.off("deselect",e._funcChangeStyleToDefault),e._funcChangeStyleToSelected=null,e._funcChangeStyleToDefault=null,t._fabricObject.removeWithUpdate(e._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(t,e){let i=t._getFabricObject();const r=this.fabricCanvas.getObjects();let n,s;if(r.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===t._mediaType){n=t.getChildItems();for(let t of n)if(t._drawingLayer&&t._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(e&&"object"==typeof e&&!Array.isArray(e))for(let t in e)i.set(t,e[t]);if(n){for(let t of n){if(t.styleId)s=this._getDrawingStyle(t.styleId);else{const e=this.mapMediaType_Style.get(t._mediaType);for(let i of V.arrStyleSelectors)t._mapStyle.set(i,e[i]);s=e.default;const i=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).selected,!0)},r=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).default,!0)};t.on("select",i),t.on("deselect",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{if(t.styleId)s=this._getDrawingStyle(t.styleId);else{const e=this.mapMediaType_Style.get(t._mediaType);for(let i of V.arrStyleSelectors)t._mapStyle.set(i,e[i]);s=e.default;const i=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).selected)},r=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).default)};t.on("select",i),t.on("deselect",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}this._changeItemStyle(t,s)}t._zIndex=this.id,t._drawingLayer=this,t._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=r.length;if(o)a=r.indexOf(this._arrFabricObject[o-1])+1;else for(let e=0;e{for(let e of this._arrDrawingLayer)if(e.getId()===t)return!0;return!1};if(void 0===e){for(let t=100;;t++)if(!i(t)){e=t;break}}else if(i(e))throw new Error("Existed drawing layer id.");const r=new Y(t,e,this._mapDrawingStyles,{enableRetinaScaling:!1});return r._manager=this,this._arrDrawingLayer.push(r),this._switchPointerEvent(),r}deleteDrwaingLayer(t){const e=this.getDrawingLayer(t);if(!e)return;const i=this._arrDrawingLayer;e.dispose(),i.splice(i.indexOf(e),1),this._switchPointerEvent()}clearDrawingLayers(){for(let t of this._arrDrawingLayer)t.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(t){for(let e of this._arrDrawingLayer)if(e.getId()===t)return e;return null}getDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const t=this._arrDrawingLayer[0].fabricCanvas.getActiveObjects(),e=[];for(let i of t)e.push(i.getDrawingItem());return e}setDimensions(t,e){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(t,e)}setObjectFit(t){for(let e of this._arrDrawingLayer)e&&e._setObjectFit(t)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(t){this._arrDrawingLayer.length&&(this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.display=t?"block":"none")}_switchPointerEvent(){if(!this._arrDrawingLayer.length)return;let t=!1;for(let e of this._arrDrawingLayer)"editor"===e.getMode()&&(t=!0);this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.pointerEvents=t?"":"none"}}class z{constructor(t){this._controlTarget=null,this._arrUsers=[],this._mapAction_UserArgs=new Map,this._mapProperty_UserValue=new Map,this._mapAction_Callbacks=new Map,this._controlTarget=t}setControlTarget(t){this._controlTarget=t}getControlTarget(){return this._controlTarget}register(t){this._arrUsers.includes(t)||this._arrUsers.push(t)}logout(t){const e=this._arrUsers.indexOf(t);-1!==e&&(this.clearUserDisiredAction({user:t}),this.clearUserDisiredValue({user:t}),this._arrUsers.splice(e,1))}getRegisteredUsers(){return this._arrUsers}ifUserExisted(t){return this._arrUsers.includes(t)}setDisiredValue(t,e,i,r){if(!this._arrUsers.includes(t))throw new Error("Unregistered user.");r&&(this._controlTarget[e]=i),this._mapProperty_UserValue.get(e)?this._mapProperty_UserValue.get(e).set(t,i):this._mapProperty_UserValue.set(e,new Map([[t,i]]))}clearUserDisiredValue(t){if(t&&(t.user||t.property)){if(t.property&&t.user){const e=this._mapProperty_UserValue.get(t.property);if(!e)return;e.delete(t.user)}else if(t.property)this._mapProperty_UserValue.delete(t.property);else if(t.user)for(let e of this._mapProperty_UserValue.values())e.delete(t.user)}else this._mapProperty_UserValue=new Map}getValue(t){if(!this._controlTarget)throw new Error("Control target is not set.");return this._controlTarget[t]}getPropertyDisiredValue(t){if(this._mapProperty_UserValue.get(t)){const e=[],i=this._mapProperty_UserValue.get(t);for(let t of i.values())e.push(t);return e}return null}setDisiredAction(t,e,i,r){if(!this._arrUsers.includes(t))throw new Error("Unregistered user.");return i||(i=[]),r?this._controlTarget[e](...i):(this._mapAction_UserArgs.get(e)?this._mapAction_UserArgs.get(e).set(t,i):this._mapAction_UserArgs.set(e,new Map([[t,i]])),this._render(e))}clearUserDisiredAction(t){if(t&&(t.user||t.actionName)){if(t.actionName&&t.user){const e=this._mapAction_UserArgs.get(t.actionName);if(!e)return;e.delete(t.user)}else if(t.actionName)this._mapAction_UserArgs.delete(t.actionName);else if(t.user)for(let e of this._mapAction_UserArgs.values())e.delete(t.user);this.render()}else this._mapAction_UserArgs=new Map}addCallback(t,e){const i=this._mapAction_Callbacks.get(t);i?i.push(e):this._mapAction_Callbacks.set(t,[e])}removeCallback(t,e){const i=this._mapAction_Callbacks.get(t);if(!i)return;const r=i.indexOf(e);-1!==r&&i.splice(r,1)}clearCallback(t){t?this._mapAction_Callbacks.delete(t):this._mapAction_Callbacks.clear()}_fireCallback(t){const e=this._mapAction_Callbacks.get(t);if(e)for(let t of e){if(!t)return;setTimeout(t.bind(this._controlTarget),0)}}_render(t){const e=this._mapAction_UserArgs.get(t);if(!e)throw new Error("Unrecorded action.");if(e.size===this._arrUsers.length){let i=[];for(let t of e.values())t.length>0&&(i=t);if(this._controlTarget[t]){const e=this._controlTarget[t](...i);return this._mapAction_UserArgs.delete(t),this._fireCallback(t),e}}}render(t){if(t)return this._render(t);for(let t of this._mapAction_UserArgs.keys())this._render(t)}}class K{constructor(){this._maxCvsSideLength=void 0,this._defaultMaxCvsSideLength=null,this._predefinedResolutions=[{width:160,height:120},{width:320,height:240},{width:480,height:360},{width:640,height:480},{width:800,height:600},{width:960,height:720},{width:1280,height:720},{width:1920,height:1080},{width:2560,height:1440},{width:3840,height:2160}],this._mapCameraResolutions=new Map,this._bWebGLSupported=!0,this.extraBindings=[],this._singleFrameMode=!(navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia),this._cvsSingleFrameMode=null,this._cvsOriginalImage=null,this._imgWidth=0,this._imgHeight=0,this._singleFrameModeIpt=null,this._clickIptSingleFrameMode=()=>{if(this.singleFrameMode){if(!this._singleFrameModeIpt){const t=document.createElement("input");this._singleFrameModeIpt=t,t.setAttribute("type","file"),t.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),t.setAttribute("capture",""),t.addEventListener("change",(()=>I(this,void 0,void 0,(function*(){const e=t.files[0];t.value="";const i=yield(t=>I(this,void 0,void 0,(function*(){let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=yield createImageBitmap(t),e)return e}catch(t){}var r;return e||(i=yield(r=t,new Promise(((t,e)=>{let i=URL.createObjectURL(r),n=new Image;n.dbrObjUrl=i,n.src=i,n.onload=()=>{t(n)},n.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i})))(e),r=i instanceof HTMLImageElement?i.naturalWidth:i.width,n=i instanceof HTMLImageElement?i.naturalHeight:i.height;this._imgWidth=r,this._imgHeight=n;const s=t=>{const e=Date.now();if(0===r||0===n)return null;const i=this._scanRegion,s=this.getFrameSize(r,n,i,this.maxCvsSideLength);if(!s)return null;let o,a;o=r!==s.sWidth||n!==s.sHeight,a=s.sWidth!==s.dWidth||s.sHeight!==s.dHeight;const h=(()=>!(!this._bWebGLSupported||a))(),l={data:null,region:i?JSON.parse(JSON.stringify(i)):null,sx:s.sx,sy:s.sy,width:s.dWidth,height:s.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:o,toCanvas:this._toCanvas,_sWidth:s.sWidth,_sHeight:s.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(t,r,n,s,null,{targetColorMode:this.frameColorMode,bUseWebGL:h})}catch(e){if("WebGLError"!==e.name)throw e;c=this._getImageData(t,r,n,s,null,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return K._onLog&&K._onLog("DCE: _getVideoFrame(region?) END: "+u),l.data=c.data,l.colorMode=c.colorMode,l._bUseWebGL=c._bUseWebGL,l.timeSpent=u-e,l.timeStamp=u,l};(t=>{let e=this._cvsSingleFrameMode;if(!e){if(e=document.createElement("canvas"),e.style.pointerEvents="none",!this._video)throw new Error("'video' is null.");this._video.after(e),e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.left="0",e.style.top="0",e.style.objectFit="contain",this._cvsSingleFrameMode=e}e.width==r&&e.height==n||(e.width=r,e.height=n);const i=e.getContext("2d");i.clearRect(0,0,e.width,e.height),i.drawImage(t,0,0)})(i),this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let t of this._arrScanRegionOverlays)t&&this._updateScanRegionOverlay(t);let o;this._updateDrawingLayersSize();try{o=s(i)}catch(t){throw t}const a=this.mapCameraEvents.get("singleFrameAcquired");for(let t of a)if(t)try{const e={data:new Uint8Array(o.data),region:JSON.parse(JSON.stringify(o.region)),sx:o.sx,sy:o.sy,width:o.width,height:o.height,colorMode:o.colorMode,timeSpent:o.timeSpent,timeStamp:o.timeStamp,isCropped:o.isCropped,toCanvas:o.toCanvas,_sWidth:o._sWidth,_sHeight:o._sHeight,_bUseWebGL:o._bUseWebGL};yield t.apply(this,[e])}catch(t){console.error(t)}})))),t.style.position="fixed",t.style.left="-1px",t.style.top="-1px",t.style.width="1px",t.style.height="1px",t.style.backgroundColor="transparent",t.style.color="transparent",document.body.appendChild(t)}this._singleFrameModeIpt.click()}},this.styleEls=[],this._frameColorMode=void 0,this._defaultFrameColorMode="RGBA",this.currentFSColorMode="rgba",this.ifReuseArrayBufferView=!1,this.maxVideoCvsLength=3,this._reusedCvs=null,this._reusedWebGLCvs=null,this._reusedWebGLCtx=null,this._reusedDataContainer=null,this._webGLTexture=null,this._webGLProgramInfo=null,this._webGLBuffers=null,this._recordedStates={},this._toCanvas=function(){const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,"grey"===this.colorMode){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;tI(this,void 0,void 0,(function*(){yield this.selectCamera(this._selCam.value),this._bOpen||this.stop()})),this._onResolutionSelChange=()=>I(this,void 0,void 0,(function*(){let t,e;if(this._selRsl&&-1!=this._selRsl.selectedIndex){let i=this._selRsl.options[this._selRsl.selectedIndex];t=i.getAttribute("data-width"),e=i.getAttribute("data-height")}yield this.setResolution(t,e),this._bOpen||this.stop()})),this._onCloseBtnClick=()=>{this.close(!0)},this._bOpen=!1,this.isCameraEnhancer=!0,this.isDisposed=!1,this.videoSrc=null,this.videoSettings={video:{width:{ideal:1280},height:{ideal:720},facingMode:{ideal:"environment"}}},this.iPlayRound=0,this.promisePlay=null,this._ifSaveLastUsedCamera=!1,this.ifSkipCameraInspection=!1,this._allCameras=[],this._currentCamera=null,this._videoTrack=null,this._lastDeviceId=void 0,this._vc_bPlayingVideoBeforeHide=!1,this._ev_documentHideEvent=()=>{"visible"===document.visibilityState?this._vc_bPlayingVideoBeforeHide&&("Firefox"==P.browser?this.play():this._video.play(),this._vc_bPlayingVideoBeforeHide=!1):this._video&&!this._video.paused&&(this._vc_bPlayingVideoBeforeHide=!0,this._video.pause())},this._divVideoContainer=null,this._video=null,this.videoFit="contain",this._cvsScanRegion=null,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=2,this._bShowScanRegionMask=!0,this._bShowScanRegionLaser=void 0,this._defaultBShowScanRegionLaser=!1,this._scanRegion=null,this._arrScanRegionOverlays=[],this._layerBaseCvs=null,this._cvsViewDecorator=null,this._decoratorType=[],this._decoratorArea=null,this._viewDecoratorInfo={rectangle:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},focus:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},crossline:{lineWidth:2,strokeStyle:"rgb(254,142,20)"},crosshair:{lineWidth:4,strokeStyle:"rgb(254,142,20)"}},this._croppingRegions=void 0,this._defaultCroppingRegions=[null],this.bIncreaseRegionIndexAuto=!0,this._croppingRegionIndex=0,this._loopInterval=void 0,this._defaultLoopInterval=0,this._maxNumberOfFramesInBuffer=void 0,this._defaultMaxNumberOfFramesInBuffer=1,this._frameQueue=[],this._bFetchingLoopStarted=!1,this._refreshInterval=void 0,this._defaultRefreshInterval=-1,this._updateLayersTimeout=0,this._updateLayers=()=>{this._resizeTimeoutId&&clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout((()=>{if(!this.isDisposed){this._updateScanAreaDiv(),this._updateViewDecorator();for(let t of this._arrScanRegionOverlays)t&&this._updateScanRegionOverlay(t)}}),this._updateLayersTimeout)},this.mapCameraEvents=new Map([["cameraOpen",[]],["cameraClose",[]],["cameraChange",[]],["resolutionChange",[]],["played",[]],["singleFrameAcquired",[]],["frameAddedToBuffer",[]]]),this._controler=null}static getVersion(){return this._version}static detectEnvironment(){return I(this,void 0,void 0,(function*(){return yield(async()=>({wasm:F,worker:k,getUserMedia:B,camera:await j(),browser:P.browser,version:P.version,OS:P.OS}))()}))}static set engineResourcePath(t){if(this._hasEngineResourceLoaded)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` is called.");K._engineResourcePath=(t=>{if(null==t&&(t="./"),!R){let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(t)}static get engineResourcePath(){return this._engineResourcePath}static isStorageAvailable(t){let e;try{e=window[t];const i="__storage_test__";return e.setItem(i,i),e.removeItem(i),!0}catch(t){return t instanceof DOMException&&(22===t.code||1014===t.code||"QuotaExceededError"===t.name||"NS_ERROR_DOM_QUOTA_REACHED"===t.name)&&e&&0!==e.length}}static isDCEFrame(t){return!(!t||"object"!=typeof t||Array.isArray(t))&&"data"in t&&"region"in t&&"sx"in t&&"sy"in t&&"width"in t&&"height"in t&&"colorMode"in t&&"timeSpent"in t&&"timeStamp"in t&&"isCropped"in t&&"toCanvas"in t&&"_sWidth"in t&&"_sHeight"in t&&"_bUseWebGL"in t}set maxCvsSideLength(t){if(t<=0)throw new Error("Invalid value.");this._maxCvsSideLength=t}get maxCvsSideLength(){if(void 0!==this._maxCvsSideLength)return this._maxCvsSideLength;if(this._controler){const t=this._controler.getPropertyDisiredValue("maxCvsSideLength");if(t&&1===t.length)return t[0]}return this._defaultMaxCvsSideLength}static set defaultUIElementURL(t){K._defaultUIElementURL=t}static get defaultUIElementURL(){var t;return null===(t=K._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",K.engineResourcePath)}getUIElement(){return this.UIElement}setUIElement(t){return I(this,void 0,void 0,(function*(){if(this._bOpen)throw new Error("It is not allowed to change the UIElement when the camera is open.");if("string"==typeof t||t instanceof String){if(!t.trim().startsWith("<")){let e=yield fetch(t);if(!e.ok)throw Error("setUIElement(elementOrUrl): Network Error: "+e.statusText);t=yield e.text()}if(!t.trim().startsWith("<"))throw Error("setUIElement(elementOrUrl): Can't get valid HTMLElement.");let e=document.createElement("div");e.innerHTML=t;for(let t=0;t100||t.regionTop>100||t.regionRight>100||t.regionBottom>100)))}set scanRegion(t){if(!this._checkValidRegion(t))throw new Error("Invalid region.");this._scanRegion=JSON.parse(JSON.stringify(t)),this._updateScanRegionCanvas(),this._updateScanAreaDiv();for(let t of this._arrScanRegionOverlays)t&&this._updateScanRegionOverlay(t)}setScanRegion(t){this.scanRegion=t}getScanRegion(){return JSON.parse(JSON.stringify(this._scanRegion))}_calculateCvsSize(){if(!this._bOpen)return null;let t,e,i;if(this.singleFrameMode)t=this._imgWidth,e=this._imgHeight,i="contain";else{if(!this._video)return null;t=this._video.videoWidth,e=this._video.videoHeight,i=this.getVideoFit()}return{width:t,height:e,objectFit:i}}addScanRegionOverlayCanvas(){this._assertOpen();const t=document.createElement("canvas");if(this._updateScanRegionOverlay(t),!this._scanRegionOverlayContainer){const t=document.createElement("div");if(this._scanRegionOverlayContainer=t,t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.overflow="hidden",t.style.pointerEvents="none",this._layerBaseCvs)this._layerBaseCvs.parentElement.after(t);else if(this._cvsScanRegion)this._cvsScanRegion.before(t);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(t);else{if(!this._video)throw new Error("'video' is null.");this._video.after(t)}this._recordedStates.overlayShow=!0}return this._scanRegionOverlayContainer.append(t),this._arrScanRegionOverlays.push(t),t}removeScanRegionOverlayCanvas(t){const e=this._arrScanRegionOverlays.indexOf(t);-1!==e&&(t.remove(),this._arrScanRegionOverlays.splice(e,1))}_updateScanRegionOverlay(t){if(!t)return;const e=this._calculateCvsSize();if(!e)return;const{width:i,height:r,objectFit:n}=e;if(i<=0||r<=0)return t.width=0,void(t.height=0);const s=this._getRegionInPixels(i,r,this._scanRegion),o=this.getFrameSize(i,r,this._scanRegion,this.maxCvsSideLength),a=o.dWidth,h=o.dHeight;t.width==a&&t.height==h||(t.width=a,t.height=h);const l=window.getComputedStyle(this._video),c=parseFloat(l.width),u=parseFloat(l.height),d=c/u,f=i/r;let g,_,p,m,v=1;"contain"===n?(dd?(v=u/r,g=s.regionLeft*v-(i*v-c)/2,_=s.regionTop*v):(v=c/i,g=s.regionLeft*v,_=s.regionTop*v-(r*v-u)/2),p=(s.regionRight-s.regionLeft)*v,m=(s.regionBottom-s.regionTop)*v):(g=0,_=0,p=0,m=0),t.style.position="absolute",t.style.left=g+"px",t.style.top=_+"px",t.style.width=p+"px",t.style.height=m+"px"}showScanRegionOverlays(){this._scanRegionOverlayContainer&&("none"==this._scanRegionOverlayContainer.style.display&&(this._scanRegionOverlayContainer.style.display=""),this._recordedStates.overlayShow=!0)}hideScanRegionOverlays(){this._scanRegionOverlayContainer&&(this._scanRegionOverlayContainer.style.display="none",this._recordedStates.overlayShow=!1)}setViewDecorator(t,e){if(!t)return void(this._cvsViewDecorator&&(this._cvsViewDecorator.remove(),this._cvsViewDecorator=null));this._assertOpen();let i=[];if("string"==typeof t?i.push(t):Array.isArray(t)&&(i=JSON.parse(JSON.stringify(t))),!this._cvsViewDecorator){if(this._cvsViewDecorator=document.createElement("canvas"),this._cvsViewDecorator.style.pointerEvents="none",this._cvsScanRegion)this._cvsScanRegion.after(this._cvsViewDecorator);else if(this._scanRegionOverlayContainer)this._scanRegionOverlayContainer.after(this._cvsViewDecorator);else if(this._layerBaseCvs)this._layerBaseCvs.parentElement.after(this._cvsViewDecorator);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(this._cvsViewDecorator);else{if(!this._video)throw new Error("'video' is null.");this._video.after(this._cvsViewDecorator)}this._recordedStates.decoratorShow=!0}this._decoratorArea=JSON.parse(JSON.stringify(e)),this._decoratorType.length=0;const r=["rectangle","focus"],n=["crossline","crosshair"];let s=!1,o=!1;for(let t of i)t=t.toLowerCase(),r.includes(t)&&!s&&(s=!0,this._decoratorType.push(t)),n.includes(t)&&!o&&(o=!0,!this._decoratorType.includes(t)&&this._decoratorType.push(t));this._updateViewDecorator()}getViewDecorator(){return{type:JSON.parse(JSON.stringify(this._decoratorType)),area:JSON.parse(JSON.stringify(this._decoratorArea)),canvas:this._cvsViewDecorator}}showViewDecorator(){this._cvsViewDecorator&&("none"==this._cvsViewDecorator.style.display&&(this._cvsViewDecorator.style.display=""),this._recordedStates.decoratorShow=!0)}hideViewDecorator(){this._cvsViewDecorator&&(this._cvsViewDecorator.style.display="none",this._recordedStates.decoratorShow=!1)}setViewDecoratorLineWidth(t,e){if("string"!=typeof t)throw new Error("The 'type' should be a string.");if(t=t.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(t))throw new Error(`The type of '${t}' doesn't exist.`);if(!this._viewDecoratorInfo[t].hasOwnProperty("lineWidth"))throw new Error(`It is not allowed to change the property 'lineWidth' when the decorator type is '${t}'.`);this._viewDecoratorInfo[t].lineWidth=e,this._updateViewDecorator()}setViewDecoratorStrokeStyle(t,e){if("string"!=typeof t)throw new Error("The 'type' should be a string.");if(t=t.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(t))throw new Error(`The type of '${t}' doesn't exist.`);if(!this._viewDecoratorInfo[t].hasOwnProperty("strokeStyle"))throw new Error(`It is not allowed to change the property 'strokeStyle' when the decorator type is '${t}'.`);this._viewDecoratorInfo[t].strokeStyle=e,this._updateViewDecorator()}setViewDecoratorFillStyle(t,e){if("string"!=typeof t)throw new Error("The 'type' should be a string.");if(t=t.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(t))throw new Error(`The type of '${t}' doesn't exist.`);if(!this._viewDecoratorInfo[t].hasOwnProperty("fillStyle"))throw new Error(`It is not allowed to change the property 'fillStyle' when the decorator type is '${t}'.`);this._viewDecoratorInfo[t].fillStyle=e,this._updateViewDecorator()}setViewDecoratorMaskFillStyle(t,e){if("string"!=typeof t)throw new Error("The 'type' should be a string.");if(t=t.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(t))throw new Error(`The type of '${t}' doesn't exist.`);if(!this._viewDecoratorInfo[t].hasOwnProperty("maskFillStyle"))throw new Error(`It is not allowed to change the property 'maskFillStyle' when the decorator type is '${t}'.`);this._viewDecoratorInfo[t].maskFillStyle=e,this._updateViewDecorator()}_updateViewDecorator(){if(!this._bOpen)return;if(!this._cvsViewDecorator||!this._decoratorArea)return;let t;if(this.singleFrameMode)t="contain";else{if(!this._video)return;t=this.getVideoFit()}const e=this._cvsViewDecorator;e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.left="0",e.style.top="0",e.style.objectFit=t;const i=this.getVisibleRegion(!0),r=i.regionRight-i.regionLeft,n=i.regionBottom-i.regionTop;if(e.width==r&&e.height==n||(e.width=r,e.height=n),r<=0||n<=0)return;const s=e.getContext("2d");s.clearRect(0,0,e.width,e.height);const o=this._decoratorArea.x/100*r,a=this._decoratorArea.y/100*n,h=this._decoratorArea.width/100*r,l=this._decoratorArea.height/100*n;for(let t of this._decoratorType){if("rectangle"===t){s.fillStyle=this._viewDecoratorInfo.rectangle.maskFillStyle,s.fillRect(0,0,e.width,e.height),s.clearRect(Math.round(o),Math.round(a),Math.round(h),Math.round(l)),s.fillStyle=this._viewDecoratorInfo.rectangle.fillStyle,s.fillRect(Math.round(o),Math.round(a),Math.round(h),Math.round(l)),s.lineWidth=this._viewDecoratorInfo.rectangle.lineWidth,s.strokeStyle=this._viewDecoratorInfo.rectangle.strokeStyle;const t=s.lineWidth/2;s.strokeRect(Math.round(o-t),Math.round(a-t),Math.round(h+s.lineWidth),Math.round(l+s.lineWidth))}if("focus"===t){s.fillStyle=this._viewDecoratorInfo.focus.maskFillStyle,s.fillRect(0,0,e.width,e.height),s.clearRect(Math.round(o),Math.round(a),Math.round(h),Math.round(l)),s.fillStyle=this._viewDecoratorInfo.focus.fillStyle,s.fillRect(Math.round(o),Math.round(a),Math.round(h),Math.round(l)),s.lineWidth=this._viewDecoratorInfo.focus.lineWidth,s.strokeStyle=this._viewDecoratorInfo.focus.strokeStyle;const t=s.lineWidth/2,i=[0,.25,.75,1],r=[0,.25,.75,1];s.beginPath();for(let t=0;t{const t=parseFloat(window.getComputedStyle(this._video).width),e=parseFloat(window.getComputedStyle(this._video).height);let s,o={regionBottom:r,regionRight:i,regionLeft:0,regionTop:0,regionMeasuredByPercentage:!1};return"cover"===n?t/ethis.maxNumberOfFramesInBuffer;)this._frameQueue.shift()}get maxNumberOfFramesInBuffer(){if(void 0!==this._maxNumberOfFramesInBuffer)return this._maxNumberOfFramesInBuffer;if(this._controler){const t=this._controler.getPropertyDisiredValue("maxNumberOfFramesInBuffer");if(t&&1===t.length)return t[0]}return this._defaultMaxNumberOfFramesInBuffer}get numberOfFramesInBuffer(){return this._frameQueue.length}set refreshInterval(t){this._refreshInterval=t}get refreshInterval(){if(void 0!==this._refreshInterval)return this._refreshInterval;if(this._controler){const t=this._controler.getPropertyDisiredValue("refreshInterval");if(t&&1===t.length)return t[0]}return this._defaultRefreshInterval}static createInstance(t){return I(this,void 0,void 0,(function*(){let e=new K;("string"==typeof t||t instanceof String)&&(t=JSON.parse(t));for(let i in t)e[i]=t[i];return this._hasEngineResourceLoaded=!0,K.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{K.onWarning&&K.onWarning({id:1,message:"Not using HTTP protocol, the SDK may not work correctly."})}),0):location&&"https:"!==location.protocol&&setTimeout((()=>{K.onWarning&&K.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)),e._drawingLayersManager=new X,e}))}play(t,e,i,r){return I(this,void 0,void 0,(function*(){if(this._video&&this.videoSrc){yield new Promise(((t,e)=>{this._video.onloadedmetadata=()=>I(this,void 0,void 0,(function*(){this._video&&(this._video.onloadedmetadata=null,yield this._video.play(),t())})),"string"==typeof this.videoSrc||this.videoSrc instanceof String?this._video.src=this.videoSrc:this._video.srcObject=this.videoSrc,setTimeout((()=>e(new Error("Failed to play video. Timeout."))),4e3)}));const t={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};this.playCallbackInfo=JSON.parse(JSON.stringify(t));const e=this.mapCameraEvents.get("played");for(let i of e){if(!i)continue;const e=JSON.parse(JSON.stringify(t));setTimeout((()=>i.apply(this,[e])),0)}return this._recordedStates.videoPlaying=!0,t}if(this.singleFrameMode)return r&&r.notTriggerSingleFrameClick||this._clickIptSingleFrameMode(),this.playCallbackInfo={width:0,height:0,deviceId:null},JSON.parse(JSON.stringify(this.playCallbackInfo));if(!this._video)return this.playCallbackInfo=null,null;const n=++this.iPlayRound;let s=null,o=0,a=0;if(this._currentCamera&&(s=this._currentCamera.deviceId),this._video&&(o=this._video.videoWidth,a=this._video.videoHeight),this.promisePlay&&(yield this.promisePlay,nI(this,void 0,void 0,(function*(){var r;try{this._video&&this._video.srcObject&&this.stop(),K._onLog&&K._onLog("DCE: ======before video========");const n=()=>{if(!this._video)throw d&&d.getTracks().forEach((t=>{t.stop()})),this._videoTrack=null,this._currentCamera=null,new Error("'video' is null.")},h=this.getVideoSettings();let l;"boolean"==typeof h.video&&(h.video={});const c=["rear","back","rück","arrière","trasera","trás","traseira","posteriore","后面","後面","背面","后置","後置","背置","задней","الخلفية","후","arka","achterzijde","หลัง","baksidan","bagside","sau","bak","tylny","takakamera","belakang","אחורית","πίσω","spate","hátsó","zadní","darrere","zadná","задня","stražnja","belakang","बैक"],u=()=>{for(let t of this._allCameras){let e=t.label.toLowerCase();if(e&&c.some((t=>-1!=e.indexOf(t)))&&/\b0(\b)?/.test(e)){delete h.video.facingMode,h.video.deviceId={ideal:t.deviceId};break}}h.video.deviceId||-1==["Android","HarmonyOS"].indexOf(P.OS)||(delete h.video.facingMode,h.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})};if(t)delete h.video.facingMode,h.video.deviceId={exact:t};else if(h.video.deviceId);else if(this._lastDeviceId)delete h.video.facingMode,h.video.deviceId={exact:this._lastDeviceId};else if(this.ifSaveLastUsedCamera&&K.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete h.video.facingMode,h.video.deviceId={exact:window.localStorage.getItem("dce_last_camera_id")};const w=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),T=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));w&&T&&(h.video.width=w,h.video.height=T)}else if(this.ifSkipCameraInspection);else if(h.video.facingMode){if("iPhone"!==P.OS&&"Mac"!==P.OS&&(yield this.getAllCameras(!0)),!this._video)return null;let x=h.video.facingMode;x instanceof Array&&x.length&&(x=x[0]),x=x.exact||x.ideal||x,"environment"===x&&(l=!!h.video.facingMode,u())}let d;e&&(h.video.width={ideal:e}),i&&(h.video.height={ideal:i}),K._onLog&&K._onLog("DCE: ======try getUserMedia========");let f,g=[0,500],_=null,p=null;function m(t){return I(this,void 0,void 0,(function*(){for(let e of g){n(),e&&(yield new Promise((t=>setTimeout(t,e)))),n();{const e=t.video.deviceId;p=e?e.exact||e.ideal||e:null}try{K._onLog&&K._onLog("DCE: ask "+JSON.stringify(t)),d=yield navigator.mediaDevices.getUserMedia(t),n();break}catch(t){_=t,K._onLog&&K._onLog("DCE: "+t.message||t)}}}))}if(yield m(h),d||(K._onLog&&K._onLog("DCE: ======try getUserMedia again========"),f=JSON.parse(JSON.stringify(h)),"object"==typeof f.video&&("iPhone"==P.OS?(e>=1280||i>=1280?f.video.width=1280:e>=640||i>=640?f.video.width=640:(e<640||i<640)&&(f.video.width=320),delete f.video.height):l&&!h.video.deviceId?(delete f.video.facingMode,this._allCameras.length&&(f.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})):f.video=!0),K._onLog&&K._onLog("DCE: "+f),yield m(f)),d||(g=[1e3,2e3],yield m(h)),d||(yield m(f)),!d)throw _;const v=()=>{const t=d.getVideoTracks();let e,i;if(t.length&&(e=this._videoTrack=t[0]),this._video&&e){const t=e.getSettings();if(t)for(let r of this._allCameras)if(t.deviceId===r.deviceId){r._checked=!0,r.label=e.label,i=r;break}if(!i&&p)for(let t of this._allCameras)if(p==t.deviceId){e.label&&(t._checked=!0,t.label=e.label),i=t;break}}this._currentCamera=i};if(yield this.getAllCameras(!0),n(),l){v(),u();let O=h.video.deviceId;O&&(O=O.exact||O.ideal||O);let E=null===(r=this._currentCamera)||void 0===r?void 0:r.deviceId;!O||E&&O==E||(d.getTracks().forEach((t=>{t.stop()})),g=[0,500,1e3,2e3],yield m(h))}n();const y=()=>I(this,void 0,void 0,(function*(){K._onLog&&K._onLog("======play video========"),yield new Promise(((t,e)=>{n(),this._video.onloadedmetadata=()=>I(this,void 0,void 0,(function*(){n(),this._video.onloadedmetadata=null,yield this._video.play(),t()})),this._video.srcObject=d,setTimeout((()=>e(new Error("Failed to play video. Timeout."))),4e3)}))}));yield y(),n(),K._onLog&&K._onLog("DCE: ======played video========"),this._bgLoading&&(this._bgLoading.style.animationPlayState="paused");const S=this._video.videoWidth+"x"+this._video.videoHeight;this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",this._video.videoWidth),this._optGotRsl.setAttribute("data-height",this._video.videoHeight),this._optGotRsl.innerText=S,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got")),K._onLog&&K._onLog("DCE: got "+S),v(),n(),this._renderSelCameraInfo();const C={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};C.deviceId&&(this._lastDeviceId=C.deviceId,this.ifSaveLastUsedCamera&&K.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",this._lastDeviceId),h.video.width&&h.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(h.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(h.video.height)))));const b=this.mapCameraEvents.get("played");for(let R of b){if(!R)continue;const A=JSON.parse(JSON.stringify(C));setTimeout((()=>R.apply(this,[A])),0)}if(s&&s!=C.deviceId){const D=this.mapCameraEvents.get("cameraChange");for(let M of D){if(!M)continue;const L=JSON.parse(JSON.stringify(C));setTimeout((()=>M.apply(this,[L])),0)}}if(o&&a&&(o!=C.width||a!=C.height)){this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let k of this._arrScanRegionOverlays)k&&this._updateScanRegionOverlay(k);this._cvsOriginalImage||this._updateDrawingLayersSize();const F=this.mapCameraEvents.get("resolutionChange");for(let B of F){if(!B)continue;const j=JSON.parse(JSON.stringify(C));setTimeout((()=>B.apply(this,[j])),0)}}return this.promisePlay=null,C}catch(N){throw this.promisePlay=null,this._bgLoading&&(this._bgLoading.style.display="none"),"NotFoundError"===N.name&&(DOMException?N=new DOMException("No camera available, please use a device with an accessible camera.",N.name):(N=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),N}})))();const h=yield this.promisePlay;return this.playCallbackInfo=JSON.parse(JSON.stringify(h)),this._recordedStates.videoPlaying=!0,h}))}resume(){return I(this,void 0,void 0,(function*(){this._assertOpen(),yield this.play(),this.ifShowScanRegionLaser&&this.showScanRegionLaser()}))}pause(){this._assertOpen(),this._video&&(this._video.pause(),this._recordedStates.videoPlaying=!1),this.ifShowScanRegionLaser&&this.hideScanRegionLaser()}_bindUI(){if(!this.UIElement)throw new Error("Need to define `UIElement` before opening.");const t=[this.UIElement];for(let e=0;e','','',''].join(""),this._optGotRsl=this._optGotRsl||this._selRsl.options[0])):!this._optGotRsl&&e.classList.contains("dce-opt-gotResolution")?this._optGotRsl=e:!this._btnClose&&e.classList.contains("dce-btn-close")?this._btnClose=e:!this._selMinLtr&&e.classList.contains("dlr-sel-minletter")?(this._selMinLtr=e,this._selMinLtr.options.length||(this._selMinLtr.innerHTML=[this._optGotMinLtr?"":'','','','','','','','','','',''].join(""),this._optGotMinLtr=this._optGotMinLtr||this._selMinLtr.options[0])):!this._optGotMinLtr&&e.classList.contains("dlr-opt-gotMinLtr")&&(this._optGotMinLtr=e);if(this.extraBindings&&this.extraBindings.length)for(let i of this.extraBindings)try{i(e)}catch(t){}}if(!this._video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'");this.singleFrameMode?(this._video&&(this._video.addEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="pointer",this._video.setAttribute("title","Take a photo")),this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none"),this._bgCamera&&(this._bgCamera.style.display="block")):(this._selCam&&(this._selCam.style.display="block",this._selCam.addEventListener("change",this._onCameraSelChange)),this._selRsl&&(this._selRsl.style.display="block",this._selRsl.addEventListener("change",this._onResolutionSelChange)),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._bgLoading&&(this._bgLoading.style.display="block")),this._btnClose&&this._btnClose.addEventListener("click",this._onCloseBtnClick),document.addEventListener("visibilitychange",this._ev_documentHideEvent),ResizeObserver?(this._resizeObserver||(this._resizeObserver=new ResizeObserver((t=>{for(let e of t)e.target===this._divVideoContainer&&this._updateLayers()}))),this._divVideoContainer&&this._resizeObserver.observe(this._divVideoContainer)):window.addEventListener("resize",this._updateLayers)}_unbindUI(){this.singleFrameMode?(this._video&&(this._video.removeEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="",this._video.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._bgLoading&&(this._bgLoading.style.display="none"),this._selCam&&this._selCam.removeEventListener("change",this._onCameraSelChange),this._selRsl&&this._selRsl.removeEventListener("change",this._onResolutionSelChange),this._btnClose&&this._btnClose.removeEventListener("click",this._onCloseBtnClick),this.hideScanRegionLaser(),this.hideViewDecorator(),this.hideScanRegionOverlays(),this._drawingLayersManager.setVisible(!1),this._hideOriginalImageCvs(),this._video&&(this._video.onloadedmetadata=null,this._video.remove()),this._divVideoContainer=null,this._video=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._cvsScanRegion&&(this._cvsScanRegion.remove(),this._cvsScanRegion=null),this._singleFrameModeIpt&&(this._singleFrameModeIpt.remove(),this._singleFrameModeIpt=null),this._cvsSingleFrameMode&&(this._cvsSingleFrameMode.remove(),this._cvsSingleFrameMode=null),document.removeEventListener("visibilitychange",this._ev_documentHideEvent),ResizeObserver?this._resizeObserver&&this._resizeObserver.disconnect():window.removeEventListener("resize",this._updateLayers)}_assertOpen(){if(!this._bOpen)throw Error("The camera is not open.")}open(t){return I(this,void 0,void 0,(function*(){this.UIElement||(yield this.setUIElement(K.defaultUIElementURL)),this._bindUI(),t&&this.appendAndShowUI();let e=yield this.play();this.bOpen=!0;const i=this.mapCameraEvents.get("cameraOpen");for(let t of i){if(!t)continue;const i=JSON.parse(JSON.stringify(e));setTimeout((()=>t.apply(this,[i])),0)}return e}))}close(t){if(!this._video)return;this.stop(),this._hideOriginalImage(!1),this._unbindUI(),t&&this.hideUI(),this.stopFetchingLoop(),this.bOpen=!1;const e=this.mapCameraEvents.get("cameraClose");for(let t of e){if(!t)continue;const e={width:0,height:0,deviceId:null};setTimeout((()=>t.apply(this,[e])),0)}}stop(){this._video&&this._video.srcObject&&(K._onLog&&K._onLog("DCE: ======stop video========"),this._video.srcObject.getTracks().forEach((t=>{t.stop()})),this._video.srcObject=null,this._videoTrack=null,this._currentCamera=null),this._video&&this.videoSrc&&(K._onLog&&K._onLog("DCE: ======stop existing video========"),this._video.pause(),this._video.currentTime=0),this._bgLoading&&(this._bgLoading.style.animationPlayState=""),this._frameQueue.length=0,this._reusedCvs&&this._reusedCvs.ctx2d&&this._reusedCvs.ctx2d.clearRect(0,0,this._reusedCvs.width,this._reusedCvs.height),this.forceLoseContext()}getAllCameras(t){return I(this,void 0,void 0,(function*(){let e=yield navigator.mediaDevices.enumerateDevices();if(!t&&e&&e.length&&!e[0].deviceId){let t=yield navigator.mediaDevices.getUserMedia({video:!0});e=yield navigator.mediaDevices.enumerateDevices(),t.getTracks().forEach((t=>{t.stop()})),t=null}const i=[],r=[];if(this._allCameras)for(let t of this._allCameras)t._checked&&r.push(t);for(let t=0;t{const i=this._mapCameraResolutions.get(t);if(!i||!i.length)return!1;for(let t of i)if(t[0]===e.width&&t[1]===e.height)return!0;return!1},r=(t,e,i)=>I(this,void 0,void 0,(function*(){const r={video:{deviceId:{exact:t},width:{ideal:e},height:{ideal:i}}};let n=null;try{n=yield navigator.mediaDevices.getUserMedia(r)}catch(t){return null}if(!n)return null;const s=n.getVideoTracks();let o=null;try{const t=s[0].getSettings();o={width:t.width,height:t.height}}catch(t){const e=document.createElement("video");e.srcObject=n,o={width:e.videoWidth,height:e.videoHeight},e.srcObject=null}return s.forEach((t=>{t.stop()})),o}));if(!this._bOpen){const n=this.videoSettings.video.deviceId;if(!n)return null;if(e=n.hasOwnProperty("exact")?this.videoSettings.video.deviceId.exact:n.hasOwnProperty("ideal")?this.videoSettings.video.deviceId.ideal:this.videoSettings.video.deviceId,!e)return null;let s=this._mapCameraResolutions.get(e);if(s&&!t)return this._mapCameraResolutions.get(e);this._mapCameraResolutions.set(e,[]),s=this._mapCameraResolutions.get(e);for(let t of this._predefinedResolutions){const n=yield r(e,t.width,t.height);n&&!i(e,n)&&s.push([n.width,n.height])}return s}if(this._currentCamera){e=this._currentCamera.deviceId;let r=this._mapCameraResolutions.get(e);if(r&&!t)return this._mapCameraResolutions.get(e);this._mapCameraResolutions.set(e,[]),r=this._mapCameraResolutions.get(e);const n=this.getConstraints();for(let t of this._predefinedResolutions){yield this._videoTrack.applyConstraints({width:{ideal:t.width},height:{ideal:t.height}});const n=this._videoTrack.getSettings(),s={width:n.width,height:n.height};i(e,s)||r.push([s.width,s.height])}return yield this._videoTrack.applyConstraints(n),r}return null}))}on(t,e){if(!this.mapCameraEvents.has(t))throw new Error(`Event '${t}' is not exists.`);const i=this.mapCameraEvents.get(t);i.includes(e)||i.push(e)}off(t,e){if(!this.mapCameraEvents.has(t))throw new Error(`Event '${t}' is not exists.`);const i=this.mapCameraEvents.get(t),r=i.indexOf(e);-1!==r&&i.splice(r,1)}offAll(t){if(t){if("string"==typeof t){const e=this.mapCameraEvents.get(t);e&&(e.length=0)}}else for(let t of this.mapCameraEvents.values())t&&(t.length=0)}getVideoSettings(){return JSON.parse(JSON.stringify(this.videoSettings))}updateVideoSettings(t){return this.videoSettings=JSON.parse(JSON.stringify(t)),this._lastDeviceId=null,this._bOpen?this.play():Promise.resolve()}isOpen(){return this._bOpen}getCapabilities(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCapabilities()' is unavailable in singleFrameMode.");return this._videoTrack&&this._videoTrack.getCapabilities?this._videoTrack.getCapabilities():{}}getCameraSettings(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCameraSettings()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getSettings():null}getConstraints(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getConstraints()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getConstraints():null}applyConstraints(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'applyConstraints()' is unavailable in singleFrameMode.");if(!this._videoTrack)throw new Error('"_videoTrack" is null.');if(!this._videoTrack.applyConstraints)throw Error("Not supported.");return yield this._videoTrack.applyConstraints(t)}))}turnOnTorch(){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOnTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!0}]});throw Error("Not supported.")}))}turnOffTorch(){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOffTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!1}]});throw Error("Not supported.")}))}setColorTemperature(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setColorTemperature()' is unavailable in singleFrameMode.");let e=this.getCapabilities().colorTemperature;if(!e)throw Error("Not supported.");return te.max&&(t=e.max),yield this._videoTrack.applyConstraints({advanced:[{colorTemperature:t}]})}))}setExposureCompensation(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setExposureCompensation()' is unavailable in singleFrameMode.");let e=this.getCapabilities().exposureCompensation;if(!e)throw Error("Not supported.");return te.max&&(t=e.max),yield this._videoTrack.applyConstraints({advanced:[{exposureCompensation:t}]})}))}setZoom(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setZoom()' is unavailable in singleFrameMode.");let e=this.getCapabilities().zoom;if(!e)throw Error("Not supported.");return te.max&&(t=e.max),yield this._videoTrack.applyConstraints({advanced:[{zoom:t}]})}))}setFrameRate(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFrameRate()' is unavailable in singleFrameMode.");let e=this.getCapabilities().frameRate;if(!e)throw Error("Not supported.");return te.max&&(t=e.max),yield this._videoTrack.applyConstraints({width:{ideal:Math.max(this._video.videoWidth,this._video.videoHeight)},frameRate:t})}))}getFrameRate(){return this.getCameraSettings().frameRate}setFocus(t,e){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFocus()' is unavailable in singleFrameMode.");const i=this.getCapabilities().focusMode,r=this.getCapabilities().focusDistance;if(!i||!i.includes(t)||!r)throw Error("Not supported.");return e?(er.max&&(e=r.max),yield this._videoTrack.applyConstraints({advanced:[{focusMode:t,focusDistance:e}]})):yield this._videoTrack.applyConstraints({advanced:[{focusMode:t}]})}))}getFocus(){const t=this.getCameraSettings().focusMode;return"continuous"===t?{mode:t}:{mode:t,distance:this.getCameraSettings().focusDistance}}getFrameSize(t,e,i,r){if(!t||!e)return null;let n,s,o,a,h=t,l=e;const c={regionLeft:0,regionTop:0,regionRight:h,regionBottom:l,regionMeasuredByPercentage:!1};i?(i.regionMeasuredByPercentage?(c.regionLeft=i.regionLeft*h/100,c.regionTop=i.regionTop*l/100,c.regionRight=i.regionRight*h/100,c.regionBottom=i.regionBottom*l/100):(c.regionLeft=i.regionLeft,c.regionTop=i.regionTop,c.regionRight=i.regionRight,c.regionBottom=i.regionBottom),n=c.regionLeft,s=c.regionTop,h=Math.round(c.regionRight-c.regionLeft),l=Math.round(c.regionBottom-c.regionTop)):(n=0,s=0);const u=Math.max(h,l);if(r&&r>0&&u>r){const t=r/u;h>l?(o=r,a=Math.round(l*t)):(o=Math.round(h*t),a=r)}else o=h,a=l;return o<=0||a<=0?null:{sx:n,sy:s,sWidth:h,sHeight:l,dWidth:o,dHeight:a}}getFrame(){if(this.singleFrameMode)throw Error("'getFrame()' is unavailable in singleFrameMode.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'getFrame()' is unavailable in singleFrameMode.");return this._getVideoFrame(this._scanRegion)}getImage(){const t=this.getFrame();return t.pixelFormat=t.colorMode,Object.assign(Object.assign({},t),{pixelFormat:t.colorMode})}_getVideoFrame(t,e){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'_getVideoFrame()' is unavailable in singleFrameMode.");const i=Date.now();K._onLog&&K._onLog("DCE: _getVideoFrame(region?) START: "+i);const r=this._video.videoWidth,n=this._video.videoHeight;if(0===r||0===n)return null;const s=this.getFrameSize(r,n,t,this.maxCvsSideLength);if(!s)return null;let o,a;o=r!==s.sWidth||n!==s.sHeight,a=s.sWidth!==s.dWidth||s.sHeight!==s.dHeight;const h=(()=>!(!this._bWebGLSupported||a))(),l={data:null,region:t?JSON.parse(JSON.stringify(t)):null,sx:s.sx,sy:s.sy,width:s.dWidth,height:s.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:o,toCanvas:this._toCanvas,_sWidth:s.sWidth,_sHeight:s.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(this._video,r,n,s,e,{targetColorMode:this.frameColorMode,bUseWebGL:h})}catch(t){if("WebGLError"!==t.name)throw t;c=this._getImageData(this._video,r,n,s,e,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return K._onLog&&K._onLog("DCE: _getVideoFrame(region?) END: "+u),l.data=c.data,l.colorMode=c.colorMode,l._bUseWebGL=c._bUseWebGL,l.timeSpent=u-i,l.timeStamp=u,l}_getImageData(t,e,i,r,n,s){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(!e||!i)return null;K._onLog&&K._onLog("DCE: _getImageData() START: "+Date.now());const{sx:o,sy:a,sWidth:h,sHeight:l,dWidth:c,dHeight:u}=r;let d;if(d=s&&s.targetColorMode?s.targetColorMode.toLowerCase():"rgba",s&&s.bUseWebGL){this._reusedWebGLCvs||(this._reusedWebGLCvs=document.createElement("canvas"));const r=this._reusedWebGLCvs;r.width==e&&r.height==i||(r.width=e,r.height=i,this._reusedWebGLCtx&&this._reusedWebGLCtx.viewport(0,0,e,i));const s=this._reusedWebGLCtx||r.getContext("webgl",{antialias:!1})||r.getContext("experimental-webgl",{antialias:!1});if(!s){this._reusedWebGLCtx=null,this._bWebGLSupported=!1;const t=new Error("WebGL error: unable to initialize WebGL. Your browser or machine may not support it.");throw t.name="WebGLError",t}if(s.enable(s.SCISSOR_TEST),s.scissor(o,a,c,u),!this._reusedWebGLCtx||d!==this.currentFSColorMode){this._reusedWebGLCtx=s;const t=t=>{const e=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,e),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,1,1,-1,1]),t.STATIC_DRAW);const i=t.createBuffer();return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,i),t.bufferData(t.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),t.STATIC_DRAW),{position:e,indices:i}},e=t=>{const e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e},i=(t,e,i)=>{const n=r(t,t.VERTEX_SHADER,e),s=r(t,t.FRAGMENT_SHADER,i),o=t.createProgram();return t.attachShader(o,n),t.attachShader(o,s),t.linkProgram(o),t.getProgramParameter(o,t.LINK_STATUS)?o:(alert("Unable to initialize the shader program: "+t.getProgramInfoLog(o)),null)},r=(t,e,i)=>{const r=t.createShader(e);return t.shaderSource(r,i),t.compileShader(r),t.getShaderParameter(r,t.COMPILE_STATUS)?r:(alert("An error occurred compiling the shaders: "+t.getShaderInfoLog(r)),t.deleteShader(r),null)},n="\n attribute mediump vec2 aVertexPosition;\n varying mediump vec2 vDirection;\n \n void main( void )\n {\n gl_Position = vec4(aVertexPosition, 1.0, 1.0) * 2.0;\n vDirection = aVertexPosition;\n }\n ";let o;o=["rgba","rbga","grba","gbra","brga","bgra"].includes(d)?d.slice(0,3):"rgb";const a=i(s,n,`\n precision mediump float;\n\n varying mediump vec2 vDirection;\n uniform sampler2D uSampler;\n uniform lowp float uColorFactor;\n \n void main(void)\n {\n vec4 sample = texture2D(uSampler, vec2(vDirection.x * 0.5 + 0.5, vDirection.y * 0.5 + 0.5));\n lowp float grey = 0.21 * sample.r + 0.71 * sample.g + 0.07 * sample.b;\n gl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n }\n `);this._webGLProgramInfo={program:a,attribLocations:{vertexPosition:s.getAttribLocation(a,"aVertexPosition")},uniformLocations:{uSampler:s.getUniformLocation(a,"uSampler"),uColorFactor:s.getUniformLocation(a,"uColorFactor")}},this._webGLBuffers=t(s),this._webGLTexture=e(s),this.currentFSColorMode=d}const h=(t,e,i)=>{const r=t.RGBA,n=t.RGBA,s=t.UNSIGNED_BYTE;t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,r,n,s,i)},l=(t,e,i,r)=>{t.clearColor(0,0,0,1),t.clearDepth(1),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,i.indices),t.useProgram(e.program);{const r=2,n=t.FLOAT,s=!1,o=0,a=0;t.bindBuffer(t.ARRAY_BUFFER,i.position),t.vertexAttribPointer(e.attribLocations.vertexPosition,r,n,s,o,a),t.enableVertexAttribArray(e.attribLocations.vertexPosition)}t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,r),t.uniform1i(e.uniformLocations.uSampler,0),t.uniform1f(e.uniformLocations.uColorFactor,"grey"===d||"grey32"===d?1:0);const n=t.UNSIGNED_SHORT;t.drawElements(t.TRIANGLES,6,n,0)};let f;if(h(s,this._webGLTexture,t),l(s,this._webGLProgramInfo,this._webGLBuffers,this._webGLTexture),n){if(n.length=this.croppingRegions.length||this._croppingRegionIndex<0)throw new Error("The 'croppingRegionIndex' is out of bounds.");t=this.croppingRegions[this._croppingRegionIndex],this.bIncreaseRegionIndexAuto&&++this._croppingRegionIndex>=this.croppingRegions.length&&(this._croppingRegionIndex=0)}return t}_fetchingLoop(t){if(this.isDisposed)return;if(!this._bOpen||!this.isFetchingLoopStarted())return void this.stopFetchingLoop();const e=()=>{K._onLog&&K._onLog("DCE: start fetching a frame: "+Date.now());const t=this.getCurrentRegion();let e=this._getVideoFrame(t);if(!e)return void(K._onLog&&K._onLog("DCE: get a invalid frame, abandon it: "+Date.now()));for(;this._frameQueue&&this._frameQueue.length>=this.maxNumberOfFramesInBuffer;)this._frameQueue.shift();this._frameQueue.push(e),K._onLog&&K._onLog("DCE: finish fetching a frame: "+Date.now());const i=this.mapCameraEvents.get("frameAddedToBuffer");for(let t of i)t&&setTimeout(t.bind(this),0)},i=()=>{this.isDisposed||(this._frameLoopTimeoutId2&&clearTimeout(this._frameLoopTimeoutId2),this.refreshInterval<=0||(this._frameLoopTimeoutId2=setTimeout((()=>{this.isDisposed||(this._bOpen&&this.isFetchingLoopStarted()?(K._onLog&&K._onLog("DCE: second timeout executes: "+Date.now()),e(),i()):this.stopFetchingLoop())}),this.refreshInterval)))};t&&(this._frameQueue.length0&&i()):this.refreshInterval>0?(e(),i()):0===this.refreshInterval?e():this.refreshInterval),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameLoopTimeoutId=setTimeout((()=>{this.isDisposed||this._fetchingLoop(!0)}),this.loopInterval)}startFetchingLoop(){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw Error("'startFetchingLoop()' is unavailable in singleFrameMode.");this.isFetchingLoopStarted()||(this._bFetchingLoopStarted=!0,this._recordedStates.fetchingLoopStart=!0,K._onLog&&K._onLog("start fetching loop: "+Date.now()),this._fetchingLoop(!0))}isFetchingLoopStarted(){return this._bFetchingLoopStarted}stopFetchingLoop(){this._bFetchingLoopStarted&&(K._onLog&&K._onLog("stop fetching loop: "+Date.now()),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameQueue.length=0,this._bFetchingLoopStarted=!1,this._recordedStates.fetchingLoopStart=!1)}getFrameFromBuffer(t){return this._frameQueue&&this._frameQueue.length?t?t0?i-1:r,W),actionName:"modifyPolygon",pointIndex:i}),t}),{})}_extendSet(t,e){if("vertices"===t){const t=this._fabricObject;t.points=e;const i=t.points.length-1;return t.controls=t.points.reduce((function(t,e,r){return t["p"+r]=new E.Control({positionHandler:U,actionHandler:H(r>0?r-1:i,W),actionName:"modifyPolygon",pointIndex:r}),t}),{}),t._setPositionDimensions({}),!0}}_extendGet(t){if("vertices"===t){const t=[],e=this._fabricObject;if(e.selectable)for(let i in e.oCoords)t.push({x:e.oCoords[i].x,y:e.oCoords[i].y});else for(let i in e.getCoords())t.push({x:e.getCoords()[i].x,y:e.getCoords()[i].y});return t}}},DT_Rect:class extends V{constructor(t,e,i,r,n){super(new E.Rect({left:t,top:e,width:i,height:r}),n)}},DT_Image:class extends V{constructor(t,e,i,r){super(new E.Image(t,{left:e,top:i}),r),this.image=t}_extendSet(t,e){if("image"===t){if(e instanceof HTMLImageElement)return this._fabricObject.setElement(e),this.image=e,!0;if(e instanceof HTMLCanvasElement){const t=new Image;return t.src=e.toDataURL(),this._fabricObject.setElement(t),this.image=e,!0}throw new Error("Unsupported value.")}}_extendGet(t){if("image"===t)return this.image}},DT_Text:class extends V{constructor(t,e,i,r){super(new E.IText(t,{left:e,top:i}),r),this._mediaType="text"}},DT_Line:class extends V{constructor(t,e,i){super(new E.Line([t.x,t.y,e.x,e.y]),i)}_extendSet(t,e){return"startPoint"===t?(this._fabricObject.set("x1",e.x),this._fabricObject.set("y1",e.y),!0):"endPoint"===t?(this._fabricObject.set("x2",e.x),this._fabricObject.set("y2",e.y),!0):void 0}_extendGet(t){return"startPoint"===t?{x:this._fabricObject.get("x1"),y:this._fabricObject.get("y1")}:"endPoint"===t?{x:this._fabricObject.get("x2"),y:this._fabricObject.get("y2")}:void 0}},DT_Group:class extends V{constructor(t){super(new E.Group(t.map((t=>t._getFabricObject()))));const e=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const t=this.mapEvents.get("select");for(let e of t)e&&e.apply(this);const e=this._fabricObject._objects;for(let t of e)setTimeout((()=>{t.onSelect&&t.onSelect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const t=e.get("deselect");for(let e of t)e&&e.apply(this);const i=this._fabricObject._objects;for(let t of i)setTimeout((()=>{t.onDeselect&&t.onDeselect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)}}getChildItems(){return this._fabricObject._objects.map((t=>t.getDrawingItem()))}addChildItem(t){if(!t||!t.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"add"):this._fabricObject.addWithUpdate(t._getFabricObject())}removeChildItem(t){t&&t.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"remove"):this._fabricObject.removeWithUpdate(t._getFabricObject()))}}};class q extends b{constructor(){super(),this.bFilterRegionInJs=!0,this._onCameraSelChange=()=>{},this._onResolutionSelChange=()=>{},this._onCloseBtnClick=()=>{},this._onPlayed=null}static get version(){return this._version+`(DCE ${K.getVersion()})`}static _fireHTTPSWarnning(){q.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{q.onWarning&&q.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}_fireResolutionWarning(){if(!this.singleFrameMode&&this.onWarning){const t=this.dce.getConstraints();t&&t.width<1280&&t.height<720&&setTimeout((()=>{this.onWarning&&this.onWarning({id:3,message:"Camera resolution too low, please use a higher resolution (720P or better)."})}),0)}}getUIElement(){return this.dce.getUIElement()}async setUIElement(t){await this.dce.setUIElement(t)}get singleFrameMode(){return this.dce.singleFrameMode}set singleFrameMode(t){this.dce.singleFrameMode=t,t&&(this.dce.ifShowScanRegionLaser=!1,(async()=>{let t=await this.getScanSettings();t.oneDTrustFrameCount=1,await this.updateScanSettings(t)})())}get onUnduplicatedRead(){return this.onUniqueRead}set onUnduplicatedRead(t){this.onUniqueRead=t}get video(){return this.dce&&this.dce.video}set videoSrc(t){this.dce&&(this.dce.videoSrc=t)}get videoSrc(){return this.dce&&this.dce.videoSrc}_assertOpen(){if(!this.dce.isOpen())throw Error("The scanner is not open.")}set regionMaskFillStyle(t){this.dce.setScanRegionMaskStyle({fillStyle:t})}get regionMaskFillStyle(){return this.dce.regionMaskFillStyle}set regionMaskStrokeStyle(t){this.dce.setScanRegionMaskStyle({strokeStyle:t})}get regionMaskStrokeStyle(){return this.dce.regionMaskStrokeStyle}set regionMaskLineWidth(t){this.dce.setScanRegionMaskStyle({lineWidth:t})}get regionMaskLineWidth(){return this.dce.regionMaskLineWidth}set region(t){this._region=t,this.dce&&(t?t instanceof Array||this.dce.setScanRegion(t):this.dce.setScanRegion(null)),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}set ifSaveOriginalImageInACanvas(t){this._ifSaveOriginalImageInACanvas=t,this.dce.frameColorMode=t?"rgba":"grey"}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}async createDCEInstance(){if(!this.dce){b._onLog&&b._onLog("createDCEInstance()");try{ResizeObserver}catch(t){"ReferenceError"===t.name&&window&&(window.ResizeObserver=void 0)}K.defaultUIElementURL=null,this.dce=await K.createInstance(),this.dce.refreshInterval=200,this.dce.frameColorMode="grey",this.dce.maxCvsSideLength=this.maxCvsSideLength,this._drawingItemNamespace=J,"iPhone"!==b.browserInfo.OS&&"Android"!==b.browserInfo.OS&&"HarmonyOS"!==b.browserInfo.OS&&this.dce.setResolution(1920,1080),this.dce.on("cameraChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("resolutionChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("cameraClose",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1})),this.dce.on("singleFrameAcquired",(async t=>{if(!t)return;if(!t.data)return;let e;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{data:i,sx:r,sy:n,width:s,height:o,colorMode:a,timeStamp:h,_sWidth:l,_sHeight:c}=t,u={timeStamp:h};if("grey"===a)e=await this._decodeBuffer_Uint8Array(i,s,o,s,p.IPF_GrayScaled,u);else if("rgba"===a)e=await this._decodeBuffer_Uint8Array(i,s,o,4*s,p.IPF_ABGR_8888,u);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported.`);e=await this._decodeBuffer_Uint8Array(i,s,o,4*s,p.IPF_ARGB_8888,u)}if(await this.clearMapDecodeRecord(),b.recalculateResultLocation(e,r,n,l,c,s,o),this._drawResults(e),this.onFrameRead&&this.isOpen()&&!this._bPauseScan){let t=this._cloneDecodeResults(e);this.onFrameRead(t)}if(this.onUniqueRead&&this.isOpen()&&!this._bPauseScan)for(let t of e)this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))}))}}set maxCvsSideLength(t){this._maxCvsSideLength=t,this.dce.maxCvsSideLength=t}get maxCvsSideLength(){return this._maxCvsSideLength}static async createInstance(t){let e=new q;e._instanceID=await q.createInstanceInWorker(!0),await e.createDCEInstance(),"string"==typeof t&&(t=JSON.parse(t));for(let i in t)e[i]=t[i];return await e.dce.setUIElement(q.defaultUIElementURL),e.singleFrameMode&&console.warn("The `navigator.mediaDevices.getUserMedia` is unavailable. automatically change to `singleFrameMode`."),q._fireHTTPSWarnning(),e.singleFrameMode||await e.updateRuntimeSettings("single"),e}async decodeCurrentFrame(t){this._assertOpen();let e=null;t&&t.region&&(e=t.region);const i=this.dce._getVideoFrame(e);return this._decode_DCEFrame(i)}static isRegionNormalPreset(t){return 0==t.regionLeft&&0==t.regionTop&&0==t.regionRight&&0==t.regionBottom&&0==t.regionMeasuredByPercentage}async updateRuntimeSettings(t){let e;if("string"==typeof t)if("speed"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region)}else if("balance"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region),e.deblurLevel=3,e.expectedBarcodesCount=512,e.localizationModes=[2,16,0,0,0,0,0,0],e.timeout=1e5}else if("coverage"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region),e.deblurLevel=5,e.expectedBarcodesCount=512,e.scaleDownThreshold=1e5,e.localizationModes=[2,16,4,8,0,0,0,0],e.timeout=1e5}else if("single"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,q.isRegionNormalPreset(t.region)?e.region=null:e.region=t.region,e.expectedBarcodesCount=1,e.localizationModes=[16,2,0,0,0,0,0,0],e.barcodeZoneMinDistanceToImageBorders=0}else if("dense"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region),e.deblurLevel=7,e.scaleDownThreshold=1e5,e.localizationModes=[2,8,0,0,0,0,0,0],e.minResultConfidence=0,e.timeout=1e5}else if("distance"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region),e.scaleDownThreshold=1e5,e.localizationModes=[2,8,0,0,0,0,0,0],e.timeout=1e5}else e=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(e=JSON.parse(JSON.stringify(t)),e.region instanceof Array){let i=t.region;[i.regionLeft,i.regionTop,i.regionLeft,i.regionBottom,i.regionMeasuredByPercentage].some((t=>void 0!==t))&&(e.region={regionLeft:i.regionLeft||0,regionTop:i.regionTop||0,regionRight:i.regionRight||0,regionBottom:i.regionBottom||0,regionMeasuredByPercentage:i.regionMeasuredByPercentage||0})}}if(!b._bUseFullFeature){if(0!=(e.barcodeFormatIds&~(y.BF_ONED|y.BF_QR_CODE|y.BF_PDF417|y.BF_DATAMATRIX))||0!=e.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=e.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}{let t=e.region;if(this.bFilterRegionInJs?this.userDefinedRegion=JSON.parse(JSON.stringify(t)):this.userDefinedRegion=null,t instanceof Array)if(t.length){for(let e=0;e{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.updateReturn)}catch(t){i(t)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),b._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(e)}})})),"single"==t&&(await this.setModeArgument("BinarizationModes",0,"EnableFillBinaryVacancy","0"),await this.setModeArgument("LocalizationModes",0,"ScanDirection","2"),await this.setModeArgument("BinarizationModes",0,"BlockSizeX","71"),await this.setModeArgument("BinarizationModes",0,"BlockSizeY","71"))}_bindUI(){if(!this.getUIElement())throw new Error("Need to define `UIElement` before opening.");if(this.dce._bindUI(),!this.dce.video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'")}_unbindUI(){this.dce._unbindUI()}set onPlayed(t){this.dce.off("played",this._onPlayed),this._onPlayed=t,this.dce.on("played",this._onPlayed)}get onPlayed(){return this._onPlayed}async getAllCameras(){return this.dce.getAllCameras()}async getCurrentCamera(){return this.dce.getSelectedCamera()}async setCurrentCamera(t){const e=await this.dce.selectCamera(t);return this._fireResolutionWarning(),e}getResolution(){return this.dce.getResolution()}async setResolution(t,e){const i=await this.dce.setResolution(t,e);return this._fireResolutionWarning(),i}getVideoSettings(){return this.dce.getVideoSettings()}updateVideoSettings(t){return this.dce.updateVideoSettings(t)}isOpen(){return this.dce&&this.dce.isOpen()}setVideoFit(t){return this.dce&&this.dce.setVideoFit(t)}set ifShowScanRegionMask(t){this.dce&&(this.dce.ifShowScanRegionMask=t)}get ifShowScanRegionMask(){return this.dce&&this.dce.ifShowScanRegionMask}set ifSaveLastUsedCamera(t){this.dce&&(this.dce.ifSaveLastUsedCamera=t)}get ifSaveLastUsedCamera(){return this.dce&&this.dce.ifSaveLastUsedCamera}set ifSkipCameraInspection(t){this.dce&&(this.dce.ifSkipCameraInspection=t)}get ifSkipCameraInspection(){return this.dce&&this.dce.ifSkipCameraInspection}stop(){this._drawResults(null),this.dce.stop(),this.dce.ifShowScanRegionLaser=!1,this.dce.hideViewDecorator(),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}pause(){this.dce.pause()}async play(t,e,i){this.dce.ifShowScanRegionLaser=!0;const r=await this.dce.play(t,e,i);return this._fireResolutionWarning(),r}pauseScan(t){this._assertOpen(),t&&t.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce.ifShowScanRegionLaser=!1,this.dce.stopFetchingLoop()}resumeScan(){this._assertOpen(),this._bPauseScan=!1,this.dce.ifShowScanRegionLaser=!0}getCapabilities(){return this.dce.getCapabilities()}getCameraSettings(){return this.dce.getCameraSettings()}getConstraints(){return this.dce.getConstraints()}async applyConstraints(t){return this.dce.applyConstraints(t)}async turnOnTorch(){return this.dce.turnOnTorch()}async turnOffTorch(){return this.dce.turnOffTorch()}async setColorTemperature(t){return this.dce.setColorTemperature(t)}async setExposureCompensation(t){return this.dce.setExposureCompensation(t)}async setZoom(t){return this.dce.setZoom(t)}async setFrameRate(t){return this.dce.setFrameRate(t)}getFrameRate(){return this.dce.getFrameRate()}async setFocus(t,e){return this.dce.setFocus(t,e)}getFocus(){return this.dce.getFocus()}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this.dce.stopFetchingLoop(),void this._drawResults(null);if(!this.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce.video||this.dce.video.paused||this._bPauseScan)return b._onLog&&b._onLog("Video or scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));b._onLog&&b._onLog("======= once read ======="),b._onLog&&(this._timeStartDecode=Date.now());const t=this._getVideoFrame();if(!t)return this._drawResults(null),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{t._bUseWebGL||"grey"!==t.colorMode||(this.dce.frameColorMode="rgba");let e=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{data:i,sx:r,sy:n,width:s,height:o,colorMode:a,timeStamp:h,_sWidth:l,_sHeight:c}=t,u={timeStamp:h};if("grey"===a)e=await this._decodeBuffer_Uint8Array(i,s,o,s,p.IPF_GrayScaled,u);else if("rgba"===a)e=await this._decodeBuffer_Uint8Array(i,s,o,4*s,p.IPF_ABGR_8888,u);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported.`);e=await this._decodeBuffer_Uint8Array(i,s,o,4*s,p.IPF_ARGB_8888,u)}return b.recalculateResultLocation(e,r,n,l,c,s,o),e})().then((t=>{if(b._onLog&&b._onLog(t),this.captureAndDecodeInParallel){let t=this.array_decodeFrameTimeCost,e=this.array_getFrameTimeCost,i=this._indexCurrentDecodingFrame;const r=()=>{let r=0;if(this.region instanceof Array){let n=0,s=0;n=i+1>=this.region.length?0:i+1,s=n+1>=this.region.length?0:n+1,r=t[n]&&t[n].length&&e[s]&&e[s].length?Math.min(...t[n])-Math.max(...e[s]):0}else if(e&&e.length){let i=Math.min(...t),n=Math.max(...e);i&&n&&(r=i-n)}else r=0;return r>0?r:0};(()=>{if(this.region instanceof Array){for(t[i]&&t[i]instanceof Array||(t[i]=[]);t[i].length>=5;)t[i].shift();t[i].push(this._lastInnerDecodeDuration)}else{for(;t.length>=5;)t.shift();t.push(this._lastInnerDecodeDuration)}})(),this._intervalGetVideoFrame=r()+this.intervalTime}if(this.isOpen()&&this.dce.video&&!this.dce.video.paused&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&t.length){let e=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)e=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of t)if(0==i.resultsType){e=!0;break}e&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&t.length){let e=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)e=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of t)if(0==i.resultsType){e=!0;break}if(e)try{navigator.vibrate(this.vibrateDuration)}catch(t){console.warn("Vibration not allowed. User interaction required: "+(t.message||t))}}if(this.onFrameRead){let e=this._cloneDecodeResults(t);for(let t of e)0!=t.resultsType&&1!=t.resultsType||this.onFrameRead(e)}if(this.onUniqueRead)for(let e of t)0==e.resultsType&&this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));this._drawResults(t)}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((t=>{this.dce.stopFetchingLoop(),b._onLog&&b._onLog(t.message||t),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==t.message||console.warn(t.message)}))}_getVideoFrame(){if(!this.dce)return null;let t;if(this.captureAndDecodeInParallel){let e=this.dce.isFetchingLoopStarted();if(this.dce.loopInterval=this._intervalGetVideoFrame,e||this.dce.startFetchingLoop(),!this.dce.numberOfFramesInBuffer)return this.dce.loopInterval=0,null;t=this.dce.getFrameFromBuffer();const i=t=>{if(!t)return;let e=t.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(e)};i(t)}else this.dce.stopFetchingLoop(),t=this.dce.getFrame();return t}async open(){this._bindUI();const t=await this.dce.open();return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),t}async openVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const t=await this.dce.open();return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),t}close(){this.dce.close(),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}async show(){this._bindUI();const t=await this.dce.open(!0);return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),t}async showVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const t=await this.dce.open(!0);return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),t}hide(){this.dce.close(!0),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}destroyContext(){this.close(),this.bDestroyed||super.destroyContext()}}var Q,Z,$,tt,et,it,rt,nt,st,ot,at,ht,lt,ct,ut,dt,ft,gt,_t,pt,mt,vt,yt,St,Ct,bt,wt;!function(t){t[t.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",t[t.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",t[t.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",t[t.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",t[t.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",t[t.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",t[t.BICM_SKIP=0]="BICM_SKIP",t[t.BICM_REV=2147483648]="BICM_REV"}(Q||(Q={})),function(t){t[t.BCM_AUTO=1]="BCM_AUTO",t[t.BCM_GENERAL=2]="BCM_GENERAL",t[t.BCM_SKIP=0]="BCM_SKIP",t[t.BCM_REV=2147483648]="BCM_REV"}(Z||(Z={})),function(t){t[t.BF2_NULL=0]="BF2_NULL",t[t.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",t[t.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",t[t.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",t[t.BF2_POSTNET=2097152]="BF2_POSTNET",t[t.BF2_PLANET=4194304]="BF2_PLANET",t[t.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",t[t.BF2_RM4SCC=16777216]="BF2_RM4SCC",t[t.BF2_DOTCODE=2]="BF2_DOTCODE",t[t.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",t[t.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",t[t.BF2_PHARMACODE=12]="BF2_PHARMACODE"}($||($={})),function(t){t[t.BM_AUTO=1]="BM_AUTO",t[t.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",t[t.BM_SKIP=0]="BM_SKIP",t[t.BM_THRESHOLD=4]="BM_THRESHOLD",t[t.BM_REV=2147483648]="BM_REV"}(tt||(tt={})),function(t){t[t.ECCM_CONTRAST=1]="ECCM_CONTRAST"}(et||(et={})),function(t){t[t.CFM_GENERAL=1]="CFM_GENERAL"}(it||(it={})),function(t){t[t.CCM_AUTO=1]="CCM_AUTO",t[t.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",t[t.CCM_SKIP=0]="CCM_SKIP",t[t.CCM_REV=2147483648]="CCM_REV"}(rt||(rt={})),function(t){t[t.CICM_GENERAL=1]="CICM_GENERAL",t[t.CICM_SKIP=0]="CICM_SKIP",t[t.CICM_REV=2147483648]="CICM_REV"}(nt||(nt={})),function(t){t[t.CM_IGNORE=1]="CM_IGNORE",t[t.CM_OVERWRITE=2]="CM_OVERWRITE"}(st||(st={})),function(t){t[t.DM_SKIP=0]="DM_SKIP",t[t.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",t[t.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",t[t.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",t[t.DM_SMOOTHING=8]="DM_SMOOTHING",t[t.DM_MORPHING=16]="DM_MORPHING",t[t.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",t[t.DM_SHARPENING=64]="DM_SHARPENING",t[t.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",t[t.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING"}(ot||(ot={})),function(t){t[t.DRM_AUTO=1]="DRM_AUTO",t[t.DRM_GENERAL=2]="DRM_GENERAL",t[t.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",t[t.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",t[t.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",t[t.DRM_SKIP=0]="DRM_SKIP",t[t.DRM_REV=2147483648]="DRM_REV"}(at||(at={})),function(t){t[t.DPMCRM_AUTO=1]="DPMCRM_AUTO",t[t.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",t[t.DPMCRM_SKIP=0]="DPMCRM_SKIP",t[t.DPMCRM_REV=2147483648]="DPMCRM_REV"}(ht||(ht={})),function(t){t[t.GTM_INVERTED=1]="GTM_INVERTED",t[t.GTM_ORIGINAL=2]="GTM_ORIGINAL",t[t.GTM_SKIP=0]="GTM_SKIP",t[t.GTM_REV=2147483648]="GTM_REV"}(lt||(lt={})),function(t){t[t.IPM_AUTO=1]="IPM_AUTO",t[t.IPM_GENERAL=2]="IPM_GENERAL",t[t.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",t[t.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",t[t.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",t[t.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",t[t.IPM_SKIP=0]="IPM_SKIP",t[t.IPM_REV=2147483648]="IPM_REV"}(ct||(ct={})),function(t){t[t.IRSM_MEMORY=1]="IRSM_MEMORY",t[t.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",t[t.IRSM_BOTH=4]="IRSM_BOTH"}(ut||(ut={})),function(t){t[t.IRT_NO_RESULT=0]="IRT_NO_RESULT",t[t.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",t[t.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",t[t.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",t[t.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",t[t.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",t[t.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",t[t.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",t[t.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",t[t.IRT_CONTOUR=256]="IRT_CONTOUR",t[t.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",t[t.IRT_FORM=1024]="IRT_FORM",t[t.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",t[t.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",t[t.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL"}(dt||(dt={})),function(t){t[t.LM_SKIP=0]="LM_SKIP",t[t.LM_AUTO=1]="LM_AUTO",t[t.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",t[t.LM_LINES=8]="LM_LINES",t[t.LM_STATISTICS=4]="LM_STATISTICS",t[t.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",t[t.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",t[t.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",t[t.LM_CENTRE=128]="LM_CENTRE",t[t.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",t[t.LM_REV=2147483648]="LM_REV"}(ft||(ft={})),function(t){t[t.PDFRM_RASTER=1]="PDFRM_RASTER",t[t.PDFRM_AUTO=2]="PDFRM_AUTO",t[t.PDFRM_VECTOR=4]="PDFRM_VECTOR",t[t.PDFRM_REV=2147483648]="PDFRM_REV"}(gt||(gt={})),function(t){t[t.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",t[t.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",t[t.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",t[t.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(_t||(_t={})),function(t){t[t.RPM_AUTO=1]="RPM_AUTO",t[t.RPM_GENERAL=2]="RPM_GENERAL",t[t.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",t[t.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",t[t.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",t[t.RPM_SKIP=0]="RPM_SKIP",t[t.RPM_REV=2147483648]="RPM_REV"}(pt||(pt={})),function(t){t[t.RCT_PIXEL=1]="RCT_PIXEL",t[t.RCT_PERCENTAGE=2]="RCT_PERCENTAGE"}(mt||(mt={})),function(t){t[t.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",t[t.RT_RAW_TEXT=1]="RT_RAW_TEXT",t[t.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",t[t.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT"}(vt||(vt={})),function(t){t[t.SUM_AUTO=1]="SUM_AUTO",t[t.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",t[t.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",t[t.SUM_SKIP=0]="SUM_SKIP",t[t.SUM_REV=2147483648]="SUM_REV"}(yt||(yt={})),function(t){t[t.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",t[t.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",t[t.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",t[t.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",t[t.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",t[t.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED"}(St||(St={})),function(t){t[t.TFM_AUTO=1]="TFM_AUTO",t[t.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",t[t.TFM_SKIP=0]="TFM_SKIP",t[t.TFM_REV=2147483648]="TFM_REV"}(Ct||(Ct={})),function(t){t[t.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",t[t.TROM_POSITION=2]="TROM_POSITION",t[t.TROM_FORMAT=4]="TROM_FORMAT",t[t.TROM_SKIP=0]="TROM_SKIP",t[t.TROM_REV=2147483648]="TROM_REV"}(bt||(bt={})),function(t){t[t.TDM_AUTO=1]="TDM_AUTO",t[t.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",t[t.TDM_SKIP=0]="TDM_SKIP",t[t.TDM_REV=2147483648]="TDM_REV"}(wt||(wt={}));export{b as BarcodeReader,q as BarcodeScanner,Q as EnumBarcodeColourMode,Z as EnumBarcodeComplementMode,y as EnumBarcodeFormat,$ as EnumBarcodeFormat_2,tt as EnumBinarizationMode,et as EnumClarityCalculationMethod,it as EnumClarityFilterMode,rt as EnumColourClusteringMode,nt as EnumColourConversionMode,st as EnumConflictMode,ht as EnumDPMCodeReadingMode,ot as EnumDeblurMode,at as EnumDeformationResistingMode,m as EnumErrorCode,lt as EnumGrayscaleTransformationMode,v as EnumIMResultDataType,p as EnumImagePixelFormat,ct as EnumImagePreprocessingMode,ut as EnumIntermediateResultSavingMode,dt as EnumIntermediateResultType,ft as EnumLocalizationMode,gt as EnumPDFReadingMode,_t as EnumQRCodeErrorCorrectionLevel,pt as EnumRegionPredetectionMode,mt as EnumResultCoordinateType,vt as EnumResultType,yt as EnumScaleUpMode,St as EnumTerminatePhase,Ct as EnumTextFilterMode,bt as EnumTextResultOrderMode,wt as EnumTextureDetectionMode}; + */function I(t,e,i,r){return new(i||(i=Promise))((function(n,s){function o(t){try{h(r.next(t))}catch(t){s(t)}}function a(t){try{h(r.throw(t))}catch(t){s(t)}}function h(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,a)}h((r=r.apply(t,e||[])).next())}))}const R="undefined"==typeof self;let A,D,M,L,P;if("undefined"!=typeof navigator&&(A=navigator,D=A.userAgent,M=A.platform,L=A.mediaDevices),!R){const t={init:function(){this.browser=this.searchString(this.dataBrowser)||"unknownBrowser",this.version=this.searchVersion(D)||this.searchVersion(A.appVersion)||0,this.OS=this.searchString(this.dataOS)||"unknownOS","Linux"==this.OS&&-1!=D.indexOf("Windows NT")&&(this.OS="HarmonyOS")},searchString:function(t){for(let e=0;e{let t=!1;if(B)try{(await L.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===P.browser&&P.version>66||"Safari"===P.browser&&P.version>13||"OPR"===P.browser&&P.version>43||"Edge"===P.browser&&P.version;const N=(()=>{if(!R&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"})();class V{constructor(t,e){this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapStyle=new Map,this.mapEvents=new Map([["select",[]],["deselect",[]]]),this.isDrawingItem=!0,this._setFabricObject(t),this._mediaType=t.type,this.styleSelector="default",this.styleId=e;for(let t of V.arrStyleSelectors)this._mapStyle.set(t,null)}get mediaType(){return this._mediaType}get drawingLayerId(){return this._drawingLayerId}_setFabricObject(t){this._fabricObject=t;const e=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const t=this.mapEvents.get("select");for(let e of t)e&&e.apply(this)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const t=e.get("deselect");for(let e of t)e&&e.apply(this)},t.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}on(t,e,i){const r=this.mapEvents.get(t);r.includes(e)||r.push(e)}off(t,e){const i=this.mapEvents.get(t),r=i.indexOf(e);-1!==r&&i.splice(r,1)}_setEditable(t){const e=this._fabricObject;t?(e.selectable=!0,e.evented=!0,e.hasControls=!0):(e.selectable=!1,e.evented=!1,e.hasControls=!1)}_extendSet(t,e){return!1}_extendGet(t){}set(t,e){this._extendSet(t,e)||("x"===t?this._fabricObject.set("left",e):"y"===t?this._fabricObject.set("top",e):this._fabricObject.set(t,e)),["vertices","left","top","width","height","scaleX","scaleY","skewX","skewY","padding","angle","strokeWidth"].includes(t)&&this._fabricObject.setCoords()}get(t){let e=this._extendGet(t);return void 0===e&&(e="x"===t?this._fabricObject.get("left"):"y"===t?this._fabricObject.get("top"):this._fabricObject.get(t)),e}}function U(t,e,i){let r=i.points[this.pointIndex].x-i.pathOffset.x,n=i.points[this.pointIndex].y-i.pathOffset.y;return E.util.transformPoint({x:r,y:n},E.util.multiplyTransformMatrices(i.canvas.viewportTransform,i.calcTransformMatrix()))}function G(t){let e=new E.Point(t.strokeUniform?1/t.scaleX:1,t.strokeUniform?1/t.scaleY:1).multiply(t.strokeWidth);return new E.Point(t.width+e.x,t.height+e.y)}function W(t,e,i,r){let n=e.target,s=n.controls[n.__corner],o=n.toLocalPoint(new E.Point(i,r),"center","center"),a=G(n),h=n._getTransformedDimensions(0,0),l={x:o.x*a.x/h.x+n.pathOffset.x,y:o.y*a.y/h.y+n.pathOffset.y};return n.points[s.pointIndex]=l,!0}function H(t,e){return function(i,r,n,s){let o=r.target,a=E.util.transformPoint({x:o.points[t].x-o.pathOffset.x,y:o.points[t].y-o.pathOffset.y},o.calcTransformMatrix()),h=e(i,r,n,s);o._setPositionDimensions({});let l=G(o),c=(o.points[t].x-o.pathOffset.x)/l.x,u=(o.points[t].y-o.pathOffset.y)/l.y;return o.setPositionByOrigin(a,c+.5,u+.5),h}}V.arrMediaTypes=["rect","arc","polygon","image","text","line","path"],V.arrStyleSelectors=["default","selected"],"undefined"!=typeof document&&"undefined"!=typeof window&&(E.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(E.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(t){t.dispose&&t.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),E.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},E.Object.prototype.transparentCorners=!1,E.Object.prototype.cornerSize=20,E.Object.prototype.touchCornerSize=100,E.Object.prototype.cornerColor="rgb(254,142,20)",E.Object.prototype.cornerStyle="circle",E.Object.prototype.strokeUniform=!0,E.Object.prototype.hasBorders=!1,E.ActiveSelection.prototype.onDeselect=function(){return this.getObjects().forEach((t=>{setTimeout(t.onDeselect,0)})),this.destroy(),!1},E.Canvas.prototype.containerClass="",E.Canvas.prototype.getPointer=function(t,e){if(this._absolutePointer&&!e)return this._absolutePointer;if(this._pointer&&e)return this._pointer;var i,r=this.upperCanvasEl,n=E.util.getPointer(t,r),s=r.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,e||(n=this.restorePointerVpt(n));var h=this.getRetinaScaling();if(1!==h&&(n.x/=h,n.y/=h),0!==o&&0!==a){var l=window.getComputedStyle(r).objectFit,c=r.width,u=r.height,d=o,f=a;i={width:c/d,height:u/f};var g,_,p=c/u,m=d/f;return"contain"===l?p>m?(g=d,_=d/p,{x:n.x*i.width,y:(n.y-(f-_)/2)*i.width}):(g=f*p,_=f,{x:(n.x-(d-g)/2)*i.height,y:n.y*i.height}):"cover"===l?p>m?{x:(c-i.height*d)/2+n.x*i.height,y:n.y*i.height}:{x:n.x*i.width,y:(u-i.width*f)/2+n.y*i.width}:{x:n.x*i.width,y:n.y*i.height}}return i={width:1,height:1},{x:n.x*i.width,y:n.y*i.height}});class Y{constructor(t,e,i,r){let n,s;switch(this.mapMediaType_Style=new Map,this.mode="viewer",this.onSelectionChange=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,t.hasOwnProperty("getFabricCanvas")?this.fabricCanvas=t.getFabricCanvas():(this.fabricCanvas=new E.Canvas(t,r),this.fabricCanvas.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),this.fabricCanvas.lowerCanvasEl.className="",this.fabricCanvas.upperCanvasEl.className="",this.fabricCanvas.on("selection:created",(function(t){const e=t.selected,i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{t.onSelectionChange&&t.onSelectionChange(i,[])}),0)}})),this.fabricCanvas.on("before:selection:cleared",(function(t){const e=this.getActiveObjects(),i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{const e=[];for(let r of i)t.hasDrawingItem(r)&&e.push(r);e.length>0&&t.onSelectionChange&&t.onSelectionChange([],e)}),0)}})),this.fabricCanvas.on("selection:updated",(function(t){const e=t.selected,i=t.deselected,r=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of i){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of r){const r=[],n=[];for(let i of e){const e=i.getDrawingItem();e._drawingLayer===t&&r.push(e)}for(let e of i){const i=e.getDrawingItem();i._drawingLayer===t&&n.push(i)}setTimeout((()=>{t.onSelectionChange&&t.onSelectionChange(r,n)}),0)}})),this.fabricCanvas.wrapperEl.style.position="absolute",t.getFabricCanvas=()=>this.fabricCanvas),this.id=e,this._mapDrawingStyles=i,e){case 1:n=i.get(1),s=i.get(5);break;case 2:n=i.get(2),s=i.get(6);break;case 3:n=i.get(3),s=i.get(7);break;default:n=i.get(4),s=i.get(8)}for(let t of V.arrMediaTypes)this.mapMediaType_Style.set(t,{default:n,selected:s})}getId(){return this.id}_getDrawingStyle(t,e){if("number"!=typeof t)throw new Error("Invalid style id.");const i=this._mapDrawingStyles.get(t);return i?e?JSON.parse(JSON.stringify(i)):i:null}setVisible(t){if(t){for(let t of this._arrFabricObject)t.visible=!0;this._visible=!0}else{for(let t of this._arrFabricObject)t.visible=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyleId(t){return t.styleId?t.styleId:this.mapMediaType_Style.get(t._mediaType)[t.styleSelector].styleId}_getItemCurrentStyle(t){if(t.styleId)return this._getDrawingStyle(t.styleId);return t._mapStyle.get(t.styleSelector)||null}_changeMediaTypeCurStyleInStyleSelector(t,e,i,r){let n;switch(t){case"rect":n=this.fabricCanvas.getObjects("rect");break;case"arc":n=this.fabricCanvas.getObjects("circle");break;case"polygon":n=this.fabricCanvas.getObjects("polygon");break;case"image":n=this.fabricCanvas.getObjects("image");break;case"text":n=this.fabricCanvas.getObjects("text");break;case"line":n=this.fabricCanvas.getObjects("line");break;case"path":n=this.fabricCanvas.getObjects("path")}for(let t of n){if(!this._arrFabricObject.includes(t))continue;const r=t.getDrawingItem();r.styleSelector===e&&this._changeItemStyle(r,i,!0)}r||this.fabricCanvas.renderAll()}_changeItemStyle(t,e,i){if(!t||!e)return;const r=t._getFabricObject();"number"==typeof t.styleId&&(e=this._getDrawingStyle(t.styleId)),r.strokeWidth=e.lineWidth,"fill"===e.paintMode?(r.fill=e.fillStyle,r.stroke=e.fillStyle):"stroke"===e.paintMode?(r.fill="transparent",r.stroke=e.strokeStyle):"strokeAndFill"===e.paintMode&&(r.fill=e.fillStyle,r.stroke=e.strokeStyle),r.fontFamily&&(r.fontFamily=e.fontFamily),r.fontSize&&(r.fontSize=e.fontSize),r.group||(r.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(t,e,i){if(!t||!e)return;const r=t.getChildItems();if("add"===i){if(r.includes(e))return;const i=e._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");e._zIndex=null}else{let i;if(e.styleId)i=this._getDrawingStyle(e.styleId);else{i=this.mapMediaType_Style.get(e._mediaType)[t.styleSelector];const r=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).selected,!0)},n=()=>{this._changeItemStyle(e,this.mapMediaType_Style.get(e._mediaType).default,!0)};e.on("select",r),e.on("deselect",n),e._funcChangeStyleToSelected=r,e._funcChangeStyleToDefault=n}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,i,!0)}t._fabricObject.addWithUpdate(e._getFabricObject())}else{if("remove"!==i)return;if(!r.includes(e))return;e._zIndex=null,e._drawingLayer=null,e._drawingLayerId=null,e.off("select",e._funcChangeStyleToSelected),e.off("deselect",e._funcChangeStyleToDefault),e._funcChangeStyleToSelected=null,e._funcChangeStyleToDefault=null,t._fabricObject.removeWithUpdate(e._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(t,e){let i=t._getFabricObject();const r=this.fabricCanvas.getObjects();let n,s;if(r.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===t._mediaType){n=t.getChildItems();for(let t of n)if(t._drawingLayer&&t._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(e&&"object"==typeof e&&!Array.isArray(e))for(let t in e)i.set(t,e[t]);if(n){for(let t of n){if(t.styleId)s=this._getDrawingStyle(t.styleId);else{const e=this.mapMediaType_Style.get(t._mediaType);for(let i of V.arrStyleSelectors)t._mapStyle.set(i,e[i]);s=e.default;const i=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).selected,!0)},r=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).default,!0)};t.on("select",i),t.on("deselect",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{if(t.styleId)s=this._getDrawingStyle(t.styleId);else{const e=this.mapMediaType_Style.get(t._mediaType);for(let i of V.arrStyleSelectors)t._mapStyle.set(i,e[i]);s=e.default;const i=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).selected)},r=()=>{this._changeItemStyle(t,this.mapMediaType_Style.get(t._mediaType).default)};t.on("select",i),t.on("deselect",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}this._changeItemStyle(t,s)}t._zIndex=this.id,t._drawingLayer=this,t._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=r.length;if(o)a=r.indexOf(this._arrFabricObject[o-1])+1;else for(let e=0;e{for(let e of this._arrDrawingLayer)if(e.getId()===t)return!0;return!1};if(void 0===e){for(let t=100;;t++)if(!i(t)){e=t;break}}else if(i(e))throw new Error("Existed drawing layer id.");const r=new Y(t,e,this._mapDrawingStyles,{enableRetinaScaling:!1});return r._manager=this,this._arrDrawingLayer.push(r),this._switchPointerEvent(),r}deleteDrwaingLayer(t){const e=this.getDrawingLayer(t);if(!e)return;const i=this._arrDrawingLayer;e.dispose(),i.splice(i.indexOf(e),1),this._switchPointerEvent()}clearDrawingLayers(){for(let t of this._arrDrawingLayer)t.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(t){for(let e of this._arrDrawingLayer)if(e.getId()===t)return e;return null}getDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const t=this._arrDrawingLayer[0].fabricCanvas.getActiveObjects(),e=[];for(let i of t)e.push(i.getDrawingItem());return e}setDimensions(t,e){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(t,e)}setObjectFit(t){for(let e of this._arrDrawingLayer)e&&e._setObjectFit(t)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(t){this._arrDrawingLayer.length&&(this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.display=t?"block":"none")}_switchPointerEvent(){if(!this._arrDrawingLayer.length)return;let t=!1;for(let e of this._arrDrawingLayer)"editor"===e.getMode()&&(t=!0);this._arrDrawingLayer[0].fabricCanvas.wrapperEl.style.pointerEvents=t?"":"none"}}class z{constructor(t){this._controlTarget=null,this._arrUsers=[],this._mapAction_UserArgs=new Map,this._mapProperty_UserValue=new Map,this._mapAction_Callbacks=new Map,this._controlTarget=t}setControlTarget(t){this._controlTarget=t}getControlTarget(){return this._controlTarget}register(t){this._arrUsers.includes(t)||this._arrUsers.push(t)}logout(t){const e=this._arrUsers.indexOf(t);-1!==e&&(this.clearUserDisiredAction({user:t}),this.clearUserDisiredValue({user:t}),this._arrUsers.splice(e,1))}getRegisteredUsers(){return this._arrUsers}ifUserExisted(t){return this._arrUsers.includes(t)}setDisiredValue(t,e,i,r){if(!this._arrUsers.includes(t))throw new Error("Unregistered user.");r&&(this._controlTarget[e]=i),this._mapProperty_UserValue.get(e)?this._mapProperty_UserValue.get(e).set(t,i):this._mapProperty_UserValue.set(e,new Map([[t,i]]))}clearUserDisiredValue(t){if(t&&(t.user||t.property)){if(t.property&&t.user){const e=this._mapProperty_UserValue.get(t.property);if(!e)return;e.delete(t.user)}else if(t.property)this._mapProperty_UserValue.delete(t.property);else if(t.user)for(let e of this._mapProperty_UserValue.values())e.delete(t.user)}else this._mapProperty_UserValue=new Map}getValue(t){if(!this._controlTarget)throw new Error("Control target is not set.");return this._controlTarget[t]}getPropertyDisiredValue(t){if(this._mapProperty_UserValue.get(t)){const e=[],i=this._mapProperty_UserValue.get(t);for(let t of i.values())e.push(t);return e}return null}setDisiredAction(t,e,i,r){if(!this._arrUsers.includes(t))throw new Error("Unregistered user.");return i||(i=[]),r?this._controlTarget[e](...i):(this._mapAction_UserArgs.get(e)?this._mapAction_UserArgs.get(e).set(t,i):this._mapAction_UserArgs.set(e,new Map([[t,i]])),this._render(e))}clearUserDisiredAction(t){if(t&&(t.user||t.actionName)){if(t.actionName&&t.user){const e=this._mapAction_UserArgs.get(t.actionName);if(!e)return;e.delete(t.user)}else if(t.actionName)this._mapAction_UserArgs.delete(t.actionName);else if(t.user)for(let e of this._mapAction_UserArgs.values())e.delete(t.user);this.render()}else this._mapAction_UserArgs=new Map}addCallback(t,e){const i=this._mapAction_Callbacks.get(t);i?i.push(e):this._mapAction_Callbacks.set(t,[e])}removeCallback(t,e){const i=this._mapAction_Callbacks.get(t);if(!i)return;const r=i.indexOf(e);-1!==r&&i.splice(r,1)}clearCallback(t){t?this._mapAction_Callbacks.delete(t):this._mapAction_Callbacks.clear()}_fireCallback(t){const e=this._mapAction_Callbacks.get(t);if(e)for(let t of e){if(!t)return;setTimeout(t.bind(this._controlTarget),0)}}_render(t){const e=this._mapAction_UserArgs.get(t);if(!e)throw new Error("Unrecorded action.");if(e.size===this._arrUsers.length){let i=[];for(let t of e.values())t.length>0&&(i=t);if(this._controlTarget[t]){const e=this._controlTarget[t](...i);return this._mapAction_UserArgs.delete(t),this._fireCallback(t),e}}}render(t){if(t)return this._render(t);for(let t of this._mapAction_UserArgs.keys())this._render(t)}}class K{constructor(){this._maxCvsSideLength=void 0,this._defaultMaxCvsSideLength=null,this._predefinedResolutions=[{width:160,height:120},{width:320,height:240},{width:480,height:360},{width:640,height:480},{width:800,height:600},{width:960,height:720},{width:1280,height:720},{width:1920,height:1080},{width:2560,height:1440},{width:3840,height:2160}],this._mapCameraResolutions=new Map,this._bWebGLSupported=!0,this.extraBindings=[],this._singleFrameMode=!(navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia),this._cvsSingleFrameMode=null,this._cvsOriginalImage=null,this._imgWidth=0,this._imgHeight=0,this._singleFrameModeIpt=null,this._clickIptSingleFrameMode=()=>{if(this.singleFrameMode){if(!this._singleFrameModeIpt){const t=document.createElement("input");this._singleFrameModeIpt=t,t.setAttribute("type","file"),t.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),t.setAttribute("capture",""),t.addEventListener("change",(()=>I(this,void 0,void 0,(function*(){const e=t.files[0];t.value="";const i=yield(t=>I(this,void 0,void 0,(function*(){let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=yield createImageBitmap(t),e)return e}catch(t){}var r;return e||(i=yield(r=t,new Promise(((t,e)=>{let i=URL.createObjectURL(r),n=new Image;n.dbrObjUrl=i,n.src=i,n.onload=()=>{t(n)},n.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i})))(e),r=i instanceof HTMLImageElement?i.naturalWidth:i.width,n=i instanceof HTMLImageElement?i.naturalHeight:i.height;this._imgWidth=r,this._imgHeight=n;const s=t=>{const e=Date.now();if(0===r||0===n)return null;const i=this._scanRegion,s=this.getFrameSize(r,n,i,this.maxCvsSideLength);if(!s)return null;let o,a;o=r!==s.sWidth||n!==s.sHeight,a=s.sWidth!==s.dWidth||s.sHeight!==s.dHeight;const h=(()=>!(!this._bWebGLSupported||a))(),l={data:null,region:i?JSON.parse(JSON.stringify(i)):null,sx:s.sx,sy:s.sy,width:s.dWidth,height:s.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:o,toCanvas:this._toCanvas,_sWidth:s.sWidth,_sHeight:s.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(t,r,n,s,null,{targetColorMode:this.frameColorMode,bUseWebGL:h})}catch(e){if("WebGLError"!==e.name)throw e;c=this._getImageData(t,r,n,s,null,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return K._onLog&&K._onLog("DCE: _getVideoFrame(region?) END: "+u),l.data=c.data,l.colorMode=c.colorMode,l._bUseWebGL=c._bUseWebGL,l.timeSpent=u-e,l.timeStamp=u,l};(t=>{let e=this._cvsSingleFrameMode;if(!e){if(e=document.createElement("canvas"),e.style.pointerEvents="none",!this._video)throw new Error("'video' is null.");this._video.after(e),e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.left="0",e.style.top="0",e.style.objectFit="contain",this._cvsSingleFrameMode=e}e.width==r&&e.height==n||(e.width=r,e.height=n);const i=e.getContext("2d");i.clearRect(0,0,e.width,e.height),i.drawImage(t,0,0)})(i),this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let t of this._arrScanRegionOverlays)t&&this._updateScanRegionOverlay(t);let o;this._updateDrawingLayersSize();try{o=s(i)}catch(t){throw t}const a=this.mapCameraEvents.get("singleFrameAcquired");for(let t of a)if(t)try{const e={data:new Uint8Array(o.data),region:JSON.parse(JSON.stringify(o.region)),sx:o.sx,sy:o.sy,width:o.width,height:o.height,colorMode:o.colorMode,timeSpent:o.timeSpent,timeStamp:o.timeStamp,isCropped:o.isCropped,toCanvas:o.toCanvas,_sWidth:o._sWidth,_sHeight:o._sHeight,_bUseWebGL:o._bUseWebGL};yield t.apply(this,[e])}catch(t){console.error(t)}})))),t.style.position="fixed",t.style.left="-1px",t.style.top="-1px",t.style.width="1px",t.style.height="1px",t.style.backgroundColor="transparent",t.style.color="transparent",document.body.appendChild(t)}this._singleFrameModeIpt.click()}},this.styleEls=[],this._frameColorMode=void 0,this._defaultFrameColorMode="RGBA",this.currentFSColorMode="rgba",this.ifReuseArrayBufferView=!1,this.maxVideoCvsLength=3,this._reusedCvs=null,this._reusedWebGLCvs=null,this._reusedWebGLCtx=null,this._reusedDataContainer=null,this._webGLTexture=null,this._webGLProgramInfo=null,this._webGLBuffers=null,this._recordedStates={},this._toCanvas=function(){const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,"grey"===this.colorMode){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;tI(this,void 0,void 0,(function*(){yield this.selectCamera(this._selCam.value),this._bOpen||this.stop()})),this._onResolutionSelChange=()=>I(this,void 0,void 0,(function*(){let t,e;if(this._selRsl&&-1!=this._selRsl.selectedIndex){let i=this._selRsl.options[this._selRsl.selectedIndex];t=i.getAttribute("data-width"),e=i.getAttribute("data-height")}yield this.setResolution(t,e),this._bOpen||this.stop()})),this._onCloseBtnClick=()=>{this.close(!0)},this._bOpen=!1,this.isCameraEnhancer=!0,this.isDisposed=!1,this.videoSrc=null,this.videoSettings={video:{width:{ideal:1280},height:{ideal:720},facingMode:{ideal:"environment"}}},this.iPlayRound=0,this.promisePlay=null,this._ifSaveLastUsedCamera=!1,this.ifSkipCameraInspection=!1,this._allCameras=[],this._currentCamera=null,this._videoTrack=null,this._lastDeviceId=void 0,this._vc_bPlayingVideoBeforeHide=!1,this._ev_documentHideEvent=()=>{"visible"===document.visibilityState?this._vc_bPlayingVideoBeforeHide&&("Firefox"==P.browser?this.play():this._video.play(),this._vc_bPlayingVideoBeforeHide=!1):this._video&&!this._video.paused&&(this._vc_bPlayingVideoBeforeHide=!0,this._video.pause())},this._divVideoContainer=null,this._video=null,this.videoFit="contain",this._cvsScanRegion=null,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=2,this._bShowScanRegionMask=!0,this._bShowScanRegionLaser=void 0,this._defaultBShowScanRegionLaser=!1,this._scanRegion=null,this._arrScanRegionOverlays=[],this._layerBaseCvs=null,this._cvsViewDecorator=null,this._decoratorType=[],this._decoratorArea=null,this._viewDecoratorInfo={rectangle:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},focus:{lineWidth:4,strokeStyle:"rgb(254,142,20)",fillStyle:"transparent",maskFillStyle:"transparent"},crossline:{lineWidth:2,strokeStyle:"rgb(254,142,20)"},crosshair:{lineWidth:4,strokeStyle:"rgb(254,142,20)"}},this._croppingRegions=void 0,this._defaultCroppingRegions=[null],this.bIncreaseRegionIndexAuto=!0,this._croppingRegionIndex=0,this._loopInterval=void 0,this._defaultLoopInterval=0,this._maxNumberOfFramesInBuffer=void 0,this._defaultMaxNumberOfFramesInBuffer=1,this._frameQueue=[],this._bFetchingLoopStarted=!1,this._refreshInterval=void 0,this._defaultRefreshInterval=-1,this._updateLayersTimeout=100,this._updateLayers=()=>{this._resizeTimeoutId&&clearTimeout(this._resizeTimeoutId),this._resizeTimeoutId=setTimeout((()=>{if(!this.isDisposed){this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let t of this._arrScanRegionOverlays)t&&this._updateScanRegionOverlay(t);this._updateDrawingLayersSize()}}),this._updateLayersTimeout)},this.mapCameraEvents=new Map([["cameraOpen",[]],["cameraClose",[]],["cameraChange",[]],["resolutionChange",[]],["played",[]],["singleFrameAcquired",[]],["frameAddedToBuffer",[]]]),this._controler=null}static getVersion(){return this._version}static detectEnvironment(){return I(this,void 0,void 0,(function*(){return yield(async()=>({wasm:F,worker:k,getUserMedia:B,camera:await j(),browser:P.browser,version:P.version,OS:P.OS}))()}))}static set engineResourcePath(t){if(this._hasEngineResourceLoaded)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` is called.");K._engineResourcePath=(t=>{if(null==t&&(t="./"),!R){let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(t)}static get engineResourcePath(){return this._engineResourcePath}static isStorageAvailable(t){let e;try{e=window[t];const i="__storage_test__";return e.setItem(i,i),e.removeItem(i),!0}catch(t){return t instanceof DOMException&&(22===t.code||1014===t.code||"QuotaExceededError"===t.name||"NS_ERROR_DOM_QUOTA_REACHED"===t.name)&&e&&0!==e.length}}static isDCEFrame(t){return!(!t||"object"!=typeof t||Array.isArray(t))&&"data"in t&&"region"in t&&"sx"in t&&"sy"in t&&"width"in t&&"height"in t&&"colorMode"in t&&"timeSpent"in t&&"timeStamp"in t&&"isCropped"in t&&"toCanvas"in t&&"_sWidth"in t&&"_sHeight"in t&&"_bUseWebGL"in t}set maxCvsSideLength(t){if(t<=0)throw new Error("Invalid value.");this._maxCvsSideLength=t}get maxCvsSideLength(){if(void 0!==this._maxCvsSideLength)return this._maxCvsSideLength;if(this._controler){const t=this._controler.getPropertyDisiredValue("maxCvsSideLength");if(t&&1===t.length)return t[0]}return this._defaultMaxCvsSideLength}static set defaultUIElementURL(t){K._defaultUIElementURL=t}static get defaultUIElementURL(){var t;return null===(t=K._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",K.engineResourcePath)}getUIElement(){return this.UIElement}setUIElement(t){return I(this,void 0,void 0,(function*(){if(this._bOpen)throw new Error("It is not allowed to change the UIElement when the camera is open.");if("string"==typeof t||t instanceof String){if(!t.trim().startsWith("<")){let e=yield fetch(t);if(!e.ok)throw Error("setUIElement(elementOrUrl): Network Error: "+e.statusText);t=yield e.text()}if(!t.trim().startsWith("<"))throw Error("setUIElement(elementOrUrl): Can't get valid HTMLElement.");let e=document.createElement("div");e.innerHTML=t;for(let t=0;t100||t.regionTop>100||t.regionRight>100||t.regionBottom>100)))}set scanRegion(t){if(!this._checkValidRegion(t))throw new Error("Invalid region.");this._scanRegion=JSON.parse(JSON.stringify(t)),this._updateScanRegionCanvas(),this._updateScanAreaDiv();for(let t of this._arrScanRegionOverlays)t&&this._updateScanRegionOverlay(t)}setScanRegion(t){this.scanRegion=t}getScanRegion(){return JSON.parse(JSON.stringify(this._scanRegion))}_calculateCvsSize(){if(!this._bOpen)return null;let t,e,i;if(this.singleFrameMode)t=this._imgWidth,e=this._imgHeight,i="contain";else{if(!this._video)return null;t=this._video.videoWidth,e=this._video.videoHeight,i=this.getVideoFit()}return{width:t,height:e,objectFit:i}}addScanRegionOverlayCanvas(){this._assertOpen();const t=document.createElement("canvas");if(this._updateScanRegionOverlay(t),!this._scanRegionOverlayContainer){const t=document.createElement("div");if(this._scanRegionOverlayContainer=t,t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.overflow="hidden",t.style.pointerEvents="none",this._layerBaseCvs)this._layerBaseCvs.parentElement.after(t);else if(this._cvsScanRegion)this._cvsScanRegion.before(t);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(t);else{if(!this._video)throw new Error("'video' is null.");this._video.after(t)}this._recordedStates.overlayShow=!0}return this._scanRegionOverlayContainer.append(t),this._arrScanRegionOverlays.push(t),t}removeScanRegionOverlayCanvas(t){const e=this._arrScanRegionOverlays.indexOf(t);-1!==e&&(t.remove(),this._arrScanRegionOverlays.splice(e,1))}_updateScanRegionOverlay(t){if(!t)return;const e=this._calculateCvsSize();if(!e)return;const{width:i,height:r,objectFit:n}=e;if(i<=0||r<=0)return t.width=0,void(t.height=0);const s=this._getRegionInPixels(i,r,this._scanRegion),o=this.getFrameSize(i,r,this._scanRegion,this.maxCvsSideLength),a=o.dWidth,h=o.dHeight;t.width==a&&t.height==h||(t.width=a,t.height=h);const l=window.getComputedStyle(this._video),c=parseFloat(l.width),u=parseFloat(l.height),d=c/u,f=i/r;let g,_,p,m,v=1;"contain"===n?(dd?(v=u/r,g=s.regionLeft*v-(i*v-c)/2,_=s.regionTop*v):(v=c/i,g=s.regionLeft*v,_=s.regionTop*v-(r*v-u)/2),p=(s.regionRight-s.regionLeft)*v,m=(s.regionBottom-s.regionTop)*v):(g=0,_=0,p=0,m=0),t.style.position="absolute",t.style.left=g+"px",t.style.top=_+"px",t.style.width=p+"px",t.style.height=m+"px"}showScanRegionOverlays(){this._scanRegionOverlayContainer&&("none"==this._scanRegionOverlayContainer.style.display&&(this._scanRegionOverlayContainer.style.display=""),this._recordedStates.overlayShow=!0)}hideScanRegionOverlays(){this._scanRegionOverlayContainer&&(this._scanRegionOverlayContainer.style.display="none",this._recordedStates.overlayShow=!1)}setViewDecorator(t,e){if(!t)return void(this._cvsViewDecorator&&(this._cvsViewDecorator.remove(),this._cvsViewDecorator=null));this._assertOpen();let i=[];if("string"==typeof t?i.push(t):Array.isArray(t)&&(i=JSON.parse(JSON.stringify(t))),!this._cvsViewDecorator){if(this._cvsViewDecorator=document.createElement("canvas"),this._cvsViewDecorator.style.pointerEvents="none",this._cvsScanRegion)this._cvsScanRegion.after(this._cvsViewDecorator);else if(this._scanRegionOverlayContainer)this._scanRegionOverlayContainer.after(this._cvsViewDecorator);else if(this._layerBaseCvs)this._layerBaseCvs.parentElement.after(this._cvsViewDecorator);else if(this._cvsSingleFrameMode)this._cvsSingleFrameMode.after(this._cvsViewDecorator);else{if(!this._video)throw new Error("'video' is null.");this._video.after(this._cvsViewDecorator)}this._recordedStates.decoratorShow=!0}this._decoratorArea=JSON.parse(JSON.stringify(e)),this._decoratorType.length=0;const r=["rectangle","focus"],n=["crossline","crosshair"];let s=!1,o=!1;for(let t of i)t=t.toLowerCase(),r.includes(t)&&!s&&(s=!0,this._decoratorType.push(t)),n.includes(t)&&!o&&(o=!0,!this._decoratorType.includes(t)&&this._decoratorType.push(t));this._updateViewDecorator()}getViewDecorator(){return{type:JSON.parse(JSON.stringify(this._decoratorType)),area:JSON.parse(JSON.stringify(this._decoratorArea)),canvas:this._cvsViewDecorator}}showViewDecorator(){this._cvsViewDecorator&&("none"==this._cvsViewDecorator.style.display&&(this._cvsViewDecorator.style.display=""),this._recordedStates.decoratorShow=!0)}hideViewDecorator(){this._cvsViewDecorator&&(this._cvsViewDecorator.style.display="none",this._recordedStates.decoratorShow=!1)}setViewDecoratorLineWidth(t,e){if("string"!=typeof t)throw new Error("The 'type' should be a string.");if(t=t.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(t))throw new Error(`The type of '${t}' doesn't exist.`);if(!this._viewDecoratorInfo[t].hasOwnProperty("lineWidth"))throw new Error(`It is not allowed to change the property 'lineWidth' when the decorator type is '${t}'.`);this._viewDecoratorInfo[t].lineWidth=e,this._updateViewDecorator()}setViewDecoratorStrokeStyle(t,e){if("string"!=typeof t)throw new Error("The 'type' should be a string.");if(t=t.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(t))throw new Error(`The type of '${t}' doesn't exist.`);if(!this._viewDecoratorInfo[t].hasOwnProperty("strokeStyle"))throw new Error(`It is not allowed to change the property 'strokeStyle' when the decorator type is '${t}'.`);this._viewDecoratorInfo[t].strokeStyle=e,this._updateViewDecorator()}setViewDecoratorFillStyle(t,e){if("string"!=typeof t)throw new Error("The 'type' should be a string.");if(t=t.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(t))throw new Error(`The type of '${t}' doesn't exist.`);if(!this._viewDecoratorInfo[t].hasOwnProperty("fillStyle"))throw new Error(`It is not allowed to change the property 'fillStyle' when the decorator type is '${t}'.`);this._viewDecoratorInfo[t].fillStyle=e,this._updateViewDecorator()}setViewDecoratorMaskFillStyle(t,e){if("string"!=typeof t)throw new Error("The 'type' should be a string.");if(t=t.toLowerCase(),!this._viewDecoratorInfo.hasOwnProperty(t))throw new Error(`The type of '${t}' doesn't exist.`);if(!this._viewDecoratorInfo[t].hasOwnProperty("maskFillStyle"))throw new Error(`It is not allowed to change the property 'maskFillStyle' when the decorator type is '${t}'.`);this._viewDecoratorInfo[t].maskFillStyle=e,this._updateViewDecorator()}_updateViewDecorator(){if(!this._bOpen)return;if(!this._cvsViewDecorator||!this._decoratorArea)return;let t;if(this.singleFrameMode)t="contain";else{if(!this._video)return;t=this.getVideoFit()}const e=this._cvsViewDecorator;e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.left="0",e.style.top="0",e.style.objectFit=t;const i=this.getVisibleRegion(!0),r=i.regionRight-i.regionLeft,n=i.regionBottom-i.regionTop;if(e.width==r&&e.height==n||(e.width=r,e.height=n),r<=0||n<=0)return;const s=e.getContext("2d");s.clearRect(0,0,e.width,e.height);const o=this._decoratorArea.x/100*r,a=this._decoratorArea.y/100*n,h=this._decoratorArea.width/100*r,l=this._decoratorArea.height/100*n;for(let t of this._decoratorType){if("rectangle"===t){s.fillStyle=this._viewDecoratorInfo.rectangle.maskFillStyle,s.fillRect(0,0,e.width,e.height),s.clearRect(Math.round(o),Math.round(a),Math.round(h),Math.round(l)),s.fillStyle=this._viewDecoratorInfo.rectangle.fillStyle,s.fillRect(Math.round(o),Math.round(a),Math.round(h),Math.round(l)),s.lineWidth=this._viewDecoratorInfo.rectangle.lineWidth,s.strokeStyle=this._viewDecoratorInfo.rectangle.strokeStyle;const t=s.lineWidth/2;s.strokeRect(Math.round(o-t),Math.round(a-t),Math.round(h+s.lineWidth),Math.round(l+s.lineWidth))}if("focus"===t){s.fillStyle=this._viewDecoratorInfo.focus.maskFillStyle,s.fillRect(0,0,e.width,e.height),s.clearRect(Math.round(o),Math.round(a),Math.round(h),Math.round(l)),s.fillStyle=this._viewDecoratorInfo.focus.fillStyle,s.fillRect(Math.round(o),Math.round(a),Math.round(h),Math.round(l)),s.lineWidth=this._viewDecoratorInfo.focus.lineWidth,s.strokeStyle=this._viewDecoratorInfo.focus.strokeStyle;const t=s.lineWidth/2,i=[0,.25,.75,1],r=[0,.25,.75,1];s.beginPath();for(let t=0;t{const t=parseFloat(window.getComputedStyle(this._video).width),e=parseFloat(window.getComputedStyle(this._video).height);let s,o={regionBottom:r,regionRight:i,regionLeft:0,regionTop:0,regionMeasuredByPercentage:!1};return"cover"===n?t/ethis.maxNumberOfFramesInBuffer;)this._frameQueue.shift()}get maxNumberOfFramesInBuffer(){if(void 0!==this._maxNumberOfFramesInBuffer)return this._maxNumberOfFramesInBuffer;if(this._controler){const t=this._controler.getPropertyDisiredValue("maxNumberOfFramesInBuffer");if(t&&1===t.length)return t[0]}return this._defaultMaxNumberOfFramesInBuffer}get numberOfFramesInBuffer(){return this._frameQueue.length}set refreshInterval(t){this._refreshInterval=t}get refreshInterval(){if(void 0!==this._refreshInterval)return this._refreshInterval;if(this._controler){const t=this._controler.getPropertyDisiredValue("refreshInterval");if(t&&1===t.length)return t[0]}return this._defaultRefreshInterval}static createInstance(t){return I(this,void 0,void 0,(function*(){let e=new K;("string"==typeof t||t instanceof String)&&(t=JSON.parse(t));for(let i in t)e[i]=t[i];return this._hasEngineResourceLoaded=!0,K.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{K.onWarning&&K.onWarning({id:1,message:"Not using HTTP protocol, the SDK may not work correctly."})}),0):location&&"https:"!==location.protocol&&setTimeout((()=>{K.onWarning&&K.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)),e._drawingLayersManager=new X,e}))}play(t,e,i,r){return I(this,void 0,void 0,(function*(){if(this._video&&this.videoSrc){yield new Promise(((t,e)=>{this._video.onloadedmetadata=()=>I(this,void 0,void 0,(function*(){this._video&&(this._video.onloadedmetadata=null,yield this._video.play(),t())})),"string"==typeof this.videoSrc||this.videoSrc instanceof String?this._video.src=this.videoSrc:this._video.srcObject=this.videoSrc,setTimeout((()=>e(new Error("Failed to play video. Timeout."))),4e3)}));const t={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};this.playCallbackInfo=JSON.parse(JSON.stringify(t));const e=this.mapCameraEvents.get("played");for(let i of e){if(!i)continue;const e=JSON.parse(JSON.stringify(t));setTimeout((()=>i.apply(this,[e])),0)}return this._recordedStates.videoPlaying=!0,t}if(this.singleFrameMode)return r&&r.notTriggerSingleFrameClick||this._clickIptSingleFrameMode(),this.playCallbackInfo={width:0,height:0,deviceId:null},JSON.parse(JSON.stringify(this.playCallbackInfo));if(!this._video)return this.playCallbackInfo=null,null;const n=++this.iPlayRound;let s=null,o=0,a=0;if(this._currentCamera&&(s=this._currentCamera.deviceId),this._video&&(o=this._video.videoWidth,a=this._video.videoHeight),this.promisePlay&&(yield this.promisePlay,nI(this,void 0,void 0,(function*(){var r;try{this._video&&this._video.srcObject&&this.stop(),K._onLog&&K._onLog("DCE: ======before video========");const n=()=>{if(!this._video)throw d&&d.getTracks().forEach((t=>{t.stop()})),this._videoTrack=null,this._currentCamera=null,new Error("'video' is null.")},h=this.getVideoSettings();let l;"boolean"==typeof h.video&&(h.video={});const c=["rear","back","rück","arrière","trasera","trás","traseira","posteriore","后面","後面","背面","后置","後置","背置","задней","الخلفية","후","arka","achterzijde","หลัง","baksidan","bagside","sau","bak","tylny","takakamera","belakang","אחורית","πίσω","spate","hátsó","zadní","darrere","zadná","задня","stražnja","belakang","बैक"],u=()=>{for(let t of this._allCameras){let e=t.label.toLowerCase();if(e&&c.some((t=>-1!=e.indexOf(t)))&&/\b0(\b)?/.test(e)){delete h.video.facingMode,h.video.deviceId={ideal:t.deviceId};break}}h.video.deviceId||-1==["Android","HarmonyOS"].indexOf(P.OS)||(delete h.video.facingMode,h.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})};if(t)delete h.video.facingMode,h.video.deviceId={exact:t};else if(h.video.deviceId);else if(this._lastDeviceId)delete h.video.facingMode,h.video.deviceId={exact:this._lastDeviceId};else if(this.ifSaveLastUsedCamera&&K.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete h.video.facingMode,h.video.deviceId={exact:window.localStorage.getItem("dce_last_camera_id")};const w=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),T=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));w&&T&&(h.video.width=w,h.video.height=T)}else if(this.ifSkipCameraInspection);else if(h.video.facingMode){if("iPhone"!==P.OS&&"Mac"!==P.OS&&(yield this.getAllCameras(!0)),!this._video)return null;let x=h.video.facingMode;x instanceof Array&&x.length&&(x=x[0]),x=x.exact||x.ideal||x,"environment"===x&&(l=!!h.video.facingMode,u())}let d;e&&(h.video.width={ideal:e}),i&&(h.video.height={ideal:i}),K._onLog&&K._onLog("DCE: ======try getUserMedia========");let f,g=[0,500],_=null,p=null;function m(t){return I(this,void 0,void 0,(function*(){for(let e of g){n(),e&&(yield new Promise((t=>setTimeout(t,e)))),n();{const e=t.video.deviceId;p=e?e.exact||e.ideal||e:null}try{K._onLog&&K._onLog("DCE: ask "+JSON.stringify(t)),d=yield navigator.mediaDevices.getUserMedia(t),n();break}catch(t){_=t,K._onLog&&K._onLog("DCE: "+t.message||t)}}}))}if(yield m(h),d||(K._onLog&&K._onLog("DCE: ======try getUserMedia again========"),f=JSON.parse(JSON.stringify(h)),"object"==typeof f.video&&("iPhone"==P.OS?(e>=1280||i>=1280?f.video.width=1280:e>=640||i>=640?f.video.width=640:(e<640||i<640)&&(f.video.width=320),delete f.video.height):l&&!h.video.deviceId?(delete f.video.facingMode,this._allCameras.length&&(f.video.deviceId={ideal:this._allCameras[this._allCameras.length-1].deviceId})):f.video=!0),K._onLog&&K._onLog("DCE: "+f),yield m(f)),d||(g=[1e3,2e3],yield m(h)),d||(yield m(f)),!d)throw _;const v=()=>{const t=d.getVideoTracks();let e,i;if(t.length&&(e=this._videoTrack=t[0]),this._video&&e){const t=e.getSettings();if(t)for(let r of this._allCameras)if(t.deviceId===r.deviceId){r._checked=!0,r.label=e.label,i=r;break}if(!i&&p)for(let t of this._allCameras)if(p==t.deviceId){e.label&&(t._checked=!0,t.label=e.label),i=t;break}}this._currentCamera=i};if(yield this.getAllCameras(!0),n(),l){v(),u();let O=h.video.deviceId;O&&(O=O.exact||O.ideal||O);let E=null===(r=this._currentCamera)||void 0===r?void 0:r.deviceId;!O||E&&O==E||(d.getTracks().forEach((t=>{t.stop()})),g=[0,500,1e3,2e3],yield m(h))}n();const y=()=>I(this,void 0,void 0,(function*(){K._onLog&&K._onLog("======play video========"),yield new Promise(((t,e)=>{n(),this._video.onloadedmetadata=()=>I(this,void 0,void 0,(function*(){n(),this._video.onloadedmetadata=null,yield this._video.play(),t()})),this._video.srcObject=d,setTimeout((()=>e(new Error("Failed to play video. Timeout."))),4e3)}))}));yield y(),n(),K._onLog&&K._onLog("DCE: ======played video========"),this._bgLoading&&(this._bgLoading.style.animationPlayState="paused");const S=this._video.videoWidth+"x"+this._video.videoHeight;this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",this._video.videoWidth),this._optGotRsl.setAttribute("data-height",this._video.videoHeight),this._optGotRsl.innerText=S,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got")),K._onLog&&K._onLog("DCE: got "+S),v(),n(),this._renderSelCameraInfo();const C={width:this._video.videoWidth,height:this._video.videoHeight,deviceId:this._currentCamera&&this._currentCamera.deviceId};C.deviceId&&(this._lastDeviceId=C.deviceId,this.ifSaveLastUsedCamera&&K.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",this._lastDeviceId),h.video.width&&h.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(h.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(h.video.height)))));const b=this.mapCameraEvents.get("played");for(let R of b){if(!R)continue;const A=JSON.parse(JSON.stringify(C));setTimeout((()=>R.apply(this,[A])),0)}if(s&&s!=C.deviceId){const D=this.mapCameraEvents.get("cameraChange");for(let M of D){if(!M)continue;const L=JSON.parse(JSON.stringify(C));setTimeout((()=>M.apply(this,[L])),0)}}if(o&&a&&(o!=C.width||a!=C.height)){this._updateScanRegionCanvas(),this._updateScanAreaDiv(),this._updateViewDecorator();for(let k of this._arrScanRegionOverlays)k&&this._updateScanRegionOverlay(k);this._cvsOriginalImage||this._updateDrawingLayersSize();const F=this.mapCameraEvents.get("resolutionChange");for(let B of F){if(!B)continue;const j=JSON.parse(JSON.stringify(C));setTimeout((()=>B.apply(this,[j])),0)}}return this.promisePlay=null,C}catch(N){throw this.promisePlay=null,this._bgLoading&&(this._bgLoading.style.display="none"),"NotFoundError"===N.name&&(DOMException?N=new DOMException("No camera available, please use a device with an accessible camera.",N.name):(N=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),N}})))();const h=yield this.promisePlay;return this.playCallbackInfo=JSON.parse(JSON.stringify(h)),this._recordedStates.videoPlaying=!0,h}))}resume(){return I(this,void 0,void 0,(function*(){this._assertOpen(),yield this.play(),this.ifShowScanRegionLaser&&this.showScanRegionLaser()}))}pause(){this._assertOpen(),this._video&&(this._video.pause(),this._recordedStates.videoPlaying=!1),this.ifShowScanRegionLaser&&this.hideScanRegionLaser()}_bindUI(){if(!this.UIElement)throw new Error("Need to define `UIElement` before opening.");const t=[this.UIElement];for(let e=0;e','','',''].join(""),this._optGotRsl=this._optGotRsl||this._selRsl.options[0])):!this._optGotRsl&&e.classList.contains("dce-opt-gotResolution")?this._optGotRsl=e:!this._btnClose&&e.classList.contains("dce-btn-close")?this._btnClose=e:!this._selMinLtr&&e.classList.contains("dlr-sel-minletter")?(this._selMinLtr=e,this._selMinLtr.options.length||(this._selMinLtr.innerHTML=[this._optGotMinLtr?"":'','','','','','','','','','',''].join(""),this._optGotMinLtr=this._optGotMinLtr||this._selMinLtr.options[0])):!this._optGotMinLtr&&e.classList.contains("dlr-opt-gotMinLtr")&&(this._optGotMinLtr=e);if(this.extraBindings&&this.extraBindings.length)for(let i of this.extraBindings)try{i(e)}catch(t){}}if(!this._video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'");this.singleFrameMode?(this._video&&(this._video.addEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="pointer",this._video.setAttribute("title","Take a photo")),this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none"),this._bgCamera&&(this._bgCamera.style.display="block")):(this._selCam&&(this._selCam.style.display="block",this._selCam.addEventListener("change",this._onCameraSelChange)),this._selRsl&&(this._selRsl.style.display="block",this._selRsl.addEventListener("change",this._onResolutionSelChange)),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._bgLoading&&(this._bgLoading.style.display="block")),this._btnClose&&this._btnClose.addEventListener("click",this._onCloseBtnClick),document.addEventListener("visibilitychange",this._ev_documentHideEvent),window.ResizeObserver?(this._resizeObserver||(this._resizeObserver=new ResizeObserver((t=>{for(let e of t)e.target===this._divVideoContainer&&this._updateLayers()}))),this._divVideoContainer&&this._resizeObserver.observe(this._divVideoContainer)):window.addEventListener("resize",this._updateLayers)}_unbindUI(){this.singleFrameMode?(this._video&&(this._video.removeEventListener("click",this._clickIptSingleFrameMode),this._video.style.cursor="",this._video.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._bgLoading&&(this._bgLoading.style.display="none"),this._selCam&&this._selCam.removeEventListener("change",this._onCameraSelChange),this._selRsl&&this._selRsl.removeEventListener("change",this._onResolutionSelChange),this._btnClose&&this._btnClose.removeEventListener("click",this._onCloseBtnClick),this.hideScanRegionLaser(),this.hideViewDecorator(),this.hideScanRegionOverlays(),this._drawingLayersManager.setVisible(!1),this._hideOriginalImageCvs(),this._video&&(this._video.onloadedmetadata=null,this._video.remove()),this._divVideoContainer=null,this._video=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._cvsScanRegion&&(this._cvsScanRegion.remove(),this._cvsScanRegion=null),this._singleFrameModeIpt&&(this._singleFrameModeIpt.remove(),this._singleFrameModeIpt=null),this._cvsSingleFrameMode&&(this._cvsSingleFrameMode.remove(),this._cvsSingleFrameMode=null),document.removeEventListener("visibilitychange",this._ev_documentHideEvent),window.ResizeObserver?this._resizeObserver&&this._resizeObserver.disconnect():window.removeEventListener("resize",this._updateLayers)}_assertOpen(){if(!this._bOpen)throw Error("The camera is not open.")}open(t){return I(this,void 0,void 0,(function*(){this.UIElement||(yield this.setUIElement(K.defaultUIElementURL)),this._bindUI(),t&&this.appendAndShowUI();let e=yield this.play();this.bOpen=!0;const i=this.mapCameraEvents.get("cameraOpen");for(let t of i){if(!t)continue;const i=JSON.parse(JSON.stringify(e));setTimeout((()=>t.apply(this,[i])),0)}return e}))}close(t){if(!this._video)return;this.stop(),this._hideOriginalImage(!1),this._unbindUI(),t&&this.hideUI(),this.stopFetchingLoop(),this.bOpen=!1;const e=this.mapCameraEvents.get("cameraClose");for(let t of e){if(!t)continue;const e={width:0,height:0,deviceId:null};setTimeout((()=>t.apply(this,[e])),0)}}stop(){this._video&&this._video.srcObject&&(K._onLog&&K._onLog("DCE: ======stop video========"),this._video.srcObject.getTracks().forEach((t=>{t.stop()})),this._video.srcObject=null,this._videoTrack=null,this._currentCamera=null),this._video&&this.videoSrc&&(K._onLog&&K._onLog("DCE: ======stop existing video========"),this._video.pause(),this._video.currentTime=0),this._bgLoading&&(this._bgLoading.style.animationPlayState=""),this._frameQueue.length=0,this._reusedCvs&&this._reusedCvs.ctx2d&&this._reusedCvs.ctx2d.clearRect(0,0,this._reusedCvs.width,this._reusedCvs.height),this.forceLoseContext()}getAllCameras(t){return I(this,void 0,void 0,(function*(){let e=yield navigator.mediaDevices.enumerateDevices();if(!t&&e&&e.length&&!e[0].deviceId){let t=yield navigator.mediaDevices.getUserMedia({video:!0});e=yield navigator.mediaDevices.enumerateDevices(),t.getTracks().forEach((t=>{t.stop()})),t=null}const i=[],r=[];if(this._allCameras)for(let t of this._allCameras)t._checked&&r.push(t);for(let t=0;t{const i=this._mapCameraResolutions.get(t);if(!i||!i.length)return!1;for(let t of i)if(t[0]===e.width&&t[1]===e.height)return!0;return!1},r=(t,e,i)=>I(this,void 0,void 0,(function*(){const r={video:{deviceId:{exact:t},width:{ideal:e},height:{ideal:i}}};let n=null;try{n=yield navigator.mediaDevices.getUserMedia(r)}catch(t){return null}if(!n)return null;const s=n.getVideoTracks();let o=null;try{const t=s[0].getSettings();o={width:t.width,height:t.height}}catch(t){const e=document.createElement("video");e.srcObject=n,o={width:e.videoWidth,height:e.videoHeight},e.srcObject=null}return s.forEach((t=>{t.stop()})),o}));if(!this._bOpen){const n=this.videoSettings.video.deviceId;if(!n)return null;if(e=n.hasOwnProperty("exact")?this.videoSettings.video.deviceId.exact:n.hasOwnProperty("ideal")?this.videoSettings.video.deviceId.ideal:this.videoSettings.video.deviceId,!e)return null;let s=this._mapCameraResolutions.get(e);if(s&&!t)return this._mapCameraResolutions.get(e);this._mapCameraResolutions.set(e,[]),s=this._mapCameraResolutions.get(e);for(let t of this._predefinedResolutions){const n=yield r(e,t.width,t.height);n&&!i(e,n)&&s.push([n.width,n.height])}return s}if(this._currentCamera){e=this._currentCamera.deviceId;let r=this._mapCameraResolutions.get(e);if(r&&!t)return this._mapCameraResolutions.get(e);this._mapCameraResolutions.set(e,[]),r=this._mapCameraResolutions.get(e);const n=this.getConstraints();for(let t of this._predefinedResolutions){yield this._videoTrack.applyConstraints({width:{ideal:t.width},height:{ideal:t.height}});const n=this._videoTrack.getSettings(),s={width:n.width,height:n.height};i(e,s)||r.push([s.width,s.height])}return yield this._videoTrack.applyConstraints(n),r}return null}))}on(t,e){if(!this.mapCameraEvents.has(t))throw new Error(`Event '${t}' is not exists.`);const i=this.mapCameraEvents.get(t);i.includes(e)||i.push(e)}off(t,e){if(!this.mapCameraEvents.has(t))throw new Error(`Event '${t}' is not exists.`);const i=this.mapCameraEvents.get(t),r=i.indexOf(e);-1!==r&&i.splice(r,1)}offAll(t){if(t){if("string"==typeof t){const e=this.mapCameraEvents.get(t);e&&(e.length=0)}}else for(let t of this.mapCameraEvents.values())t&&(t.length=0)}getVideoSettings(){return JSON.parse(JSON.stringify(this.videoSettings))}updateVideoSettings(t){return this.videoSettings=JSON.parse(JSON.stringify(t)),this._lastDeviceId=null,this._bOpen?this.play():Promise.resolve()}isOpen(){return this._bOpen}getCapabilities(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCapabilities()' is unavailable in singleFrameMode.");return this._videoTrack&&this._videoTrack.getCapabilities?this._videoTrack.getCapabilities():{}}getCameraSettings(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getCameraSettings()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getSettings():null}getConstraints(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'getConstraints()' is unavailable in singleFrameMode.");return this._videoTrack?this._videoTrack.getConstraints():null}applyConstraints(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'applyConstraints()' is unavailable in singleFrameMode.");if(!this._videoTrack)throw new Error('"_videoTrack" is null.');if(!this._videoTrack.applyConstraints)throw Error("Not supported.");return yield this._videoTrack.applyConstraints(t)}))}turnOnTorch(){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOnTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!0}]});throw Error("Not supported.")}))}turnOffTorch(){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'turnOffTorch()' is unavailable in singleFrameMode.");if(this.getCapabilities().torch)return yield this._videoTrack.applyConstraints({advanced:[{torch:!1}]});throw Error("Not supported.")}))}setColorTemperature(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setColorTemperature()' is unavailable in singleFrameMode.");let e=this.getCapabilities().colorTemperature;if(!e)throw Error("Not supported.");return te.max&&(t=e.max),yield this._videoTrack.applyConstraints({advanced:[{colorTemperature:t}]})}))}setExposureCompensation(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setExposureCompensation()' is unavailable in singleFrameMode.");let e=this.getCapabilities().exposureCompensation;if(!e)throw Error("Not supported.");return te.max&&(t=e.max),yield this._videoTrack.applyConstraints({advanced:[{exposureCompensation:t}]})}))}setZoom(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setZoom()' is unavailable in singleFrameMode.");let e=this.getCapabilities().zoom;if(!e)throw Error("Not supported.");return te.max&&(t=e.max),yield this._videoTrack.applyConstraints({advanced:[{zoom:t}]})}))}setFrameRate(t){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFrameRate()' is unavailable in singleFrameMode.");let e=this.getCapabilities().frameRate;if(!e)throw Error("Not supported.");return te.max&&(t=e.max),yield this._videoTrack.applyConstraints({width:{ideal:Math.max(this._video.videoWidth,this._video.videoHeight)},frameRate:t})}))}getFrameRate(){return this.getCameraSettings().frameRate}setFocus(t,e){return I(this,void 0,void 0,(function*(){if(this._assertOpen(),this.singleFrameMode)throw new Error("'setFocus()' is unavailable in singleFrameMode.");const i=this.getCapabilities().focusMode,r=this.getCapabilities().focusDistance;if(!i||!i.includes(t)||!r)throw Error("Not supported.");return e?(er.max&&(e=r.max),yield this._videoTrack.applyConstraints({advanced:[{focusMode:t,focusDistance:e}]})):yield this._videoTrack.applyConstraints({advanced:[{focusMode:t}]})}))}getFocus(){const t=this.getCameraSettings().focusMode;return"continuous"===t?{mode:t}:{mode:t,distance:this.getCameraSettings().focusDistance}}getFrameSize(t,e,i,r){if(!t||!e)return null;let n,s,o,a,h=t,l=e;const c={regionLeft:0,regionTop:0,regionRight:h,regionBottom:l,regionMeasuredByPercentage:!1};i?(i.regionMeasuredByPercentage?(c.regionLeft=i.regionLeft*h/100,c.regionTop=i.regionTop*l/100,c.regionRight=i.regionRight*h/100,c.regionBottom=i.regionBottom*l/100):(c.regionLeft=i.regionLeft,c.regionTop=i.regionTop,c.regionRight=i.regionRight,c.regionBottom=i.regionBottom),n=c.regionLeft,s=c.regionTop,h=Math.round(c.regionRight-c.regionLeft),l=Math.round(c.regionBottom-c.regionTop)):(n=0,s=0);const u=Math.max(h,l);if(r&&r>0&&u>r){const t=r/u;h>l?(o=r,a=Math.round(l*t)):(o=Math.round(h*t),a=r)}else o=h,a=l;return o<=0||a<=0?null:{sx:n,sy:s,sWidth:h,sHeight:l,dWidth:o,dHeight:a}}getFrame(){if(this.singleFrameMode)throw Error("'getFrame()' is unavailable in singleFrameMode.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'getFrame()' is unavailable in singleFrameMode.");return this._getVideoFrame(this._scanRegion)}getImage(){const t=this.getFrame();return t.pixelFormat=t.colorMode,Object.assign(Object.assign({},t),{pixelFormat:t.colorMode})}_getVideoFrame(t,e){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw new Error("'_getVideoFrame()' is unavailable in singleFrameMode.");const i=Date.now();K._onLog&&K._onLog("DCE: _getVideoFrame() START: "+i);const r=this._video.videoWidth,n=this._video.videoHeight;if(0===r||0===n)return null;const s=this.getFrameSize(r,n,t,this.maxCvsSideLength);if(!s)return null;let o,a;o=r!==s.sWidth||n!==s.sHeight,a=s.sWidth!==s.dWidth||s.sHeight!==s.dHeight;const h=(()=>!(!this._bWebGLSupported||a))(),l={data:null,region:t?JSON.parse(JSON.stringify(t)):null,sx:s.sx,sy:s.sy,width:s.dWidth,height:s.dHeight,colorMode:null,timeSpent:null,timeStamp:null,isCropped:o,toCanvas:this._toCanvas,_sWidth:s.sWidth,_sHeight:s.sHeight,_bUseWebGL:null};let c;try{c=this._getImageData(this._video,r,n,s,e,{targetColorMode:this.frameColorMode,bUseWebGL:h})}catch(t){if("WebGLError"!==t.name)throw t;K._onLog&&K._onLog("DCE: get WebGLError, try again in canvas."),c=this._getImageData(this._video,r,n,s,e,{targetColorMode:this.frameColorMode,bUseWebGL:!1})}if(!c)return null;const u=Date.now();return K._onLog&&K._onLog("DCE: _getVideoFrame() END: "+u),l.data=c.data,l.colorMode=c.colorMode,l._bUseWebGL=c._bUseWebGL,l.timeSpent=u-i,l.timeStamp=u,l}_getImageData(t,e,i,r,n,s){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(!e||!i)return null;K._onLog&&K._onLog("DCE: _getImageData(), START: "+Date.now());const{sx:o,sy:a,sWidth:h,sHeight:l,dWidth:c,dHeight:u}=r;let d;if(d=s&&s.targetColorMode?s.targetColorMode.toLowerCase():"rgba",s&&s.bUseWebGL){K._onLog&&K._onLog("DCE: _getImageData() in WebGL."),this._reusedWebGLCvs||(this._reusedWebGLCvs=document.createElement("canvas"));const r=this._reusedWebGLCvs;r.width==e&&r.height==i||(r.width=e,r.height=i,this._reusedWebGLCtx&&this._reusedWebGLCtx.viewport(0,0,e,i));const s=this._reusedWebGLCtx||r.getContext("webgl",{antialias:!1})||r.getContext("experimental-webgl",{antialias:!1});if(!s){K._onLog&&K._onLog("DCE: WebGL unavailable."),this._reusedWebGLCtx=null,this._bWebGLSupported=!1;const t=new Error("WebGL error: unable to initialize WebGL. Your browser or machine may not support it.");throw t.name="WebGLError",t}if(s.enable(s.SCISSOR_TEST),s.scissor(o,a,c,u),!this._reusedWebGLCtx||d!==this.currentFSColorMode){this._reusedWebGLCtx=s;const t=t=>{const e=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,e),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,1,1,-1,1]),t.STATIC_DRAW);const i=t.createBuffer();return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,i),t.bufferData(t.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),t.STATIC_DRAW),{position:e,indices:i}},e=t=>{const e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e},i=(t,e,i)=>{const n=r(t,t.VERTEX_SHADER,e),s=r(t,t.FRAGMENT_SHADER,i),o=t.createProgram();return t.attachShader(o,n),t.attachShader(o,s),t.linkProgram(o),t.getProgramParameter(o,t.LINK_STATUS)?o:(alert("Unable to initialize the shader program: "+t.getProgramInfoLog(o)),null)},r=(t,e,i)=>{const r=t.createShader(e);return t.shaderSource(r,i),t.compileShader(r),t.getShaderParameter(r,t.COMPILE_STATUS)?r:(alert("An error occurred compiling the shaders: "+t.getShaderInfoLog(r)),t.deleteShader(r),null)},n="\n attribute mediump vec2 aVertexPosition;\n varying mediump vec2 vDirection;\n \n void main( void )\n {\n gl_Position = vec4(aVertexPosition, 1.0, 1.0) * 2.0;\n vDirection = aVertexPosition;\n }\n ";let o;o=["rgba","rbga","grba","gbra","brga","bgra"].includes(d)?d.slice(0,3):"rgb";const a=i(s,n,`\n precision mediump float;\n\n varying mediump vec2 vDirection;\n uniform sampler2D uSampler;\n uniform lowp float uColorFactor;\n \n void main(void)\n {\n vec4 sample = texture2D(uSampler, vec2(vDirection.x * 0.5 + 0.5, vDirection.y * 0.5 + 0.5));\n lowp float grey = 0.21 * sample.r + 0.71 * sample.g + 0.07 * sample.b;\n gl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n }\n `);this._webGLProgramInfo={program:a,attribLocations:{vertexPosition:s.getAttribLocation(a,"aVertexPosition")},uniformLocations:{uSampler:s.getUniformLocation(a,"uSampler"),uColorFactor:s.getUniformLocation(a,"uColorFactor")}},this._webGLBuffers=t(s),this._webGLTexture=e(s),this.currentFSColorMode=d}const h=(t,e,i)=>{const r=t.RGBA,n=t.RGBA,s=t.UNSIGNED_BYTE;t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,r,n,s,i)},l=(t,e,i,r)=>{t.clearColor(0,0,0,1),t.clearDepth(1),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,i.indices),t.useProgram(e.program);{const r=2,n=t.FLOAT,s=!1,o=0,a=0;t.bindBuffer(t.ARRAY_BUFFER,i.position),t.vertexAttribPointer(e.attribLocations.vertexPosition,r,n,s,o,a),t.enableVertexAttribArray(e.attribLocations.vertexPosition)}t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,r),t.uniform1i(e.uniformLocations.uSampler,0),t.uniform1f(e.uniformLocations.uColorFactor,"grey"===d||"grey32"===d?1:0);const n=t.UNSIGNED_SHORT;t.drawElements(t.TRIANGLES,6,n,0)};let f;if(h(s,this._webGLTexture,t),l(s,this._webGLProgramInfo,this._webGLBuffers,this._webGLTexture),n){if(n.length=this.croppingRegions.length||this._croppingRegionIndex<0)throw new Error("The 'croppingRegionIndex' is out of bounds.");t=this.croppingRegions[this._croppingRegionIndex],this.bIncreaseRegionIndexAuto&&++this._croppingRegionIndex>=this.croppingRegions.length&&(this._croppingRegionIndex=0)}return t}_fetchingLoop(t){if(this.isDisposed)return;if(!this._bOpen||!this.isFetchingLoopStarted())return void this.stopFetchingLoop();const e=()=>{K._onLog&&K._onLog("DCE: start fetching a frame: "+Date.now());const t=this.getCurrentRegion();let e=this._getVideoFrame(t);if(!e)return void(K._onLog&&K._onLog("DCE: get a invalid frame, abandon it: "+Date.now()));for(;this._frameQueue&&this._frameQueue.length>=this.maxNumberOfFramesInBuffer;)this._frameQueue.shift();this._frameQueue.push(e),K._onLog&&K._onLog("DCE: finish fetching a frame: "+Date.now());const i=this.mapCameraEvents.get("frameAddedToBuffer");for(let t of i)t&&setTimeout(t.bind(this),0)},i=()=>{this.isDisposed||(this._frameLoopTimeoutId2&&clearTimeout(this._frameLoopTimeoutId2),this.refreshInterval<=0||(this._frameLoopTimeoutId2=setTimeout((()=>{this.isDisposed||(this._bOpen&&this.isFetchingLoopStarted()?(K._onLog&&K._onLog("DCE: second timeout executes: "+Date.now()),e(),i()):this.stopFetchingLoop())}),this.refreshInterval)))};t&&(this._frameQueue.length0&&i()):this.refreshInterval>0?(e(),i()):0===this.refreshInterval?e():this.refreshInterval),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameLoopTimeoutId=setTimeout((()=>{this.isDisposed||this._fetchingLoop(!0)}),this.loopInterval)}startFetchingLoop(){if(this.isDisposed)throw Error("The 'CameraEnhancer' instance has been disposed.");if(this._assertOpen(),this.singleFrameMode)throw Error("'startFetchingLoop()' is unavailable in singleFrameMode.");this.isFetchingLoopStarted()||(this._bFetchingLoopStarted=!0,this._recordedStates.fetchingLoopStart=!0,K._onLog&&K._onLog("start fetching loop: "+Date.now()),this._fetchingLoop(!0))}isFetchingLoopStarted(){return this._bFetchingLoopStarted}stopFetchingLoop(){this._bFetchingLoopStarted&&(K._onLog&&K._onLog("stop fetching loop: "+Date.now()),this._frameLoopTimeoutId&&clearTimeout(this._frameLoopTimeoutId),this._frameQueue.length=0,this._bFetchingLoopStarted=!1,this._recordedStates.fetchingLoopStart=!1)}getFrameFromBuffer(t){return this._frameQueue&&this._frameQueue.length?t?t0?i-1:r,W),actionName:"modifyPolygon",pointIndex:i}),t}),{})}_extendSet(t,e){if("vertices"===t){const t=this._fabricObject;t.points=e;const i=t.points.length-1;return t.controls=t.points.reduce((function(t,e,r){return t["p"+r]=new E.Control({positionHandler:U,actionHandler:H(r>0?r-1:i,W),actionName:"modifyPolygon",pointIndex:r}),t}),{}),t._setPositionDimensions({}),!0}}_extendGet(t){if("vertices"===t){const t=[],e=this._fabricObject;if(e.selectable)for(let i in e.oCoords)t.push({x:e.oCoords[i].x,y:e.oCoords[i].y});else for(let i in e.getCoords())t.push({x:e.getCoords()[i].x,y:e.getCoords()[i].y});return t}}},DT_Rect:class extends V{constructor(t,e,i,r,n){super(new E.Rect({left:t,top:e,width:i,height:r}),n)}},DT_Image:class extends V{constructor(t,e,i,r){super(new E.Image(t,{left:e,top:i}),r),this.image=t}_extendSet(t,e){if("image"===t){if(e instanceof HTMLImageElement)return this._fabricObject.setElement(e),this.image=e,!0;if(e instanceof HTMLCanvasElement){const t=new Image;return t.src=e.toDataURL(),this._fabricObject.setElement(t),this.image=e,!0}throw new Error("Unsupported value.")}}_extendGet(t){if("image"===t)return this.image}},DT_Text:class extends V{constructor(t,e,i,r){super(new E.IText(t,{left:e,top:i}),r),this._mediaType="text"}},DT_Line:class extends V{constructor(t,e,i){super(new E.Line([t.x,t.y,e.x,e.y]),i)}_extendSet(t,e){return"startPoint"===t?(this._fabricObject.set("x1",e.x),this._fabricObject.set("y1",e.y),!0):"endPoint"===t?(this._fabricObject.set("x2",e.x),this._fabricObject.set("y2",e.y),!0):void 0}_extendGet(t){return"startPoint"===t?{x:this._fabricObject.get("x1"),y:this._fabricObject.get("y1")}:"endPoint"===t?{x:this._fabricObject.get("x2"),y:this._fabricObject.get("y2")}:void 0}},DT_Group:class extends V{constructor(t){super(new E.Group(t.map((t=>t._getFabricObject()))));const e=this.mapEvents;this._fabricObject.onSelect=()=>{this.styleSelector="selected";const t=this.mapEvents.get("select");for(let e of t)e&&e.apply(this);const e=this._fabricObject._objects;for(let t of e)setTimeout((()=>{t.onSelect&&t.onSelect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)},this._fabricObject.onDeselect=()=>{this.styleSelector="default";const t=e.get("deselect");for(let e of t)e&&e.apply(this);const i=this._fabricObject._objects;for(let t of i)setTimeout((()=>{t.onDeselect&&t.onDeselect()}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)}}getChildItems(){return this._fabricObject._objects.map((t=>t.getDrawingItem()))}addChildItem(t){if(!t||!t.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"add"):this._fabricObject.addWithUpdate(t._getFabricObject())}removeChildItem(t){t&&t.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"remove"):this._fabricObject.removeWithUpdate(t._getFabricObject()))}}};class q extends b{constructor(){super(),this.bFilterRegionInJs=!0,this._onCameraSelChange=()=>{},this._onResolutionSelChange=()=>{},this._onCloseBtnClick=()=>{},this._onPlayed=null}static get version(){return this._version+`(DCE ${K.getVersion()})`}static _fireHTTPSWarnning(){q.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{q.onWarning&&q.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}_fireResolutionWarning(){if(!this.singleFrameMode&&this.onWarning){const t=this.dce.getConstraints();t&&t.width<1280&&t.height<720&&setTimeout((()=>{this.onWarning&&this.onWarning({id:3,message:"Camera resolution too low, please use a higher resolution (720P or better)."})}),0)}}getUIElement(){return this.dce.getUIElement()}async setUIElement(t){await this.dce.setUIElement(t)}get singleFrameMode(){return this.dce.singleFrameMode}set singleFrameMode(t){this.dce.singleFrameMode=t,t&&(this.dce.ifShowScanRegionLaser=!1,(async()=>{let t=await this.getScanSettings();t.oneDTrustFrameCount=1,await this.updateScanSettings(t)})())}get onUnduplicatedRead(){return this.onUniqueRead}set onUnduplicatedRead(t){this.onUniqueRead=t}get video(){return this.dce&&this.dce.video}set videoSrc(t){this.dce&&(this.dce.videoSrc=t)}get videoSrc(){return this.dce&&this.dce.videoSrc}_assertOpen(){if(!this.dce.isOpen())throw Error("The scanner is not open.")}set regionMaskFillStyle(t){this.dce.setScanRegionMaskStyle({fillStyle:t})}get regionMaskFillStyle(){return this.dce.regionMaskFillStyle}set regionMaskStrokeStyle(t){this.dce.setScanRegionMaskStyle({strokeStyle:t})}get regionMaskStrokeStyle(){return this.dce.regionMaskStrokeStyle}set regionMaskLineWidth(t){this.dce.setScanRegionMaskStyle({lineWidth:t})}get regionMaskLineWidth(){return this.dce.regionMaskLineWidth}set region(t){this._region=t,this.dce&&(t?t instanceof Array||this.dce.setScanRegion(t):this.dce.setScanRegion(null)),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}set ifSaveOriginalImageInACanvas(t){this._ifSaveOriginalImageInACanvas=t,this.dce.frameColorMode=t?"rgba":"grey"}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}async createDCEInstance(){this.dce||(b._onLog&&b._onLog("createDCEInstance()"),K.defaultUIElementURL=null,this.dce=await K.createInstance(),this.dce.refreshInterval=200,this.dce.frameColorMode="grey",this.dce.maxCvsSideLength=this.maxCvsSideLength,this._drawingItemNamespace=J,"iPhone"!==b.browserInfo.OS&&"Android"!==b.browserInfo.OS&&"HarmonyOS"!==b.browserInfo.OS&&this.dce.setResolution(1920,1080),this.dce.on("cameraChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("resolutionChange",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0})),this.dce.on("cameraClose",(()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1})),this.dce.on("singleFrameAcquired",(async t=>{if(!t)return;if(!t.data)return;let e;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{data:i,sx:r,sy:n,width:s,height:o,colorMode:a,timeStamp:h,_sWidth:l,_sHeight:c}=t,u={timeStamp:h};if("grey"===a)e=await this._decodeBuffer_Uint8Array(i,s,o,s,p.IPF_GrayScaled,u);else if("rgba"===a)e=await this._decodeBuffer_Uint8Array(i,s,o,4*s,p.IPF_ABGR_8888,u);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported.`);e=await this._decodeBuffer_Uint8Array(i,s,o,4*s,p.IPF_ARGB_8888,u)}if(await this.clearMapDecodeRecord(),b.recalculateResultLocation(e,r,n,l,c,s,o),this._drawResults(e),this.onFrameRead&&this.isOpen()&&!this._bPauseScan){let t=this._cloneDecodeResults(e);this.onFrameRead(t)}if(this.onUniqueRead&&this.isOpen()&&!this._bPauseScan)for(let t of e)this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))})))}set maxCvsSideLength(t){this._maxCvsSideLength=t,this.dce.maxCvsSideLength=t}get maxCvsSideLength(){return this._maxCvsSideLength}static async createInstance(t){let e=new q;e._instanceID=await q.createInstanceInWorker(!0),await e.createDCEInstance(),"string"==typeof t&&(t=JSON.parse(t));for(let i in t)e[i]=t[i];return await e.dce.setUIElement(q.defaultUIElementURL),e.singleFrameMode&&console.warn("The `navigator.mediaDevices.getUserMedia` is unavailable. automatically change to `singleFrameMode`."),q._fireHTTPSWarnning(),e.singleFrameMode||await e.updateRuntimeSettings("single"),e}async decodeCurrentFrame(t){this._assertOpen();let e=null;t&&t.region&&(e=t.region);const i=this.dce._getVideoFrame(e);return this._decode_DCEFrame(i)}static isRegionNormalPreset(t){return 0==t.regionLeft&&0==t.regionTop&&0==t.regionRight&&0==t.regionBottom&&0==t.regionMeasuredByPercentage}async updateRuntimeSettings(t){let e;if("string"==typeof t)if("speed"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region)}else if("balance"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region),e.deblurLevel=3,e.expectedBarcodesCount=512,e.localizationModes=[2,16,0,0,0,0,0,0],e.timeout=1e5}else if("coverage"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region),e.deblurLevel=5,e.expectedBarcodesCount=512,e.scaleDownThreshold=1e5,e.localizationModes=[2,16,4,8,0,0,0,0],e.timeout=1e5}else if("single"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,q.isRegionNormalPreset(t.region)?e.region=null:e.region=t.region,e.expectedBarcodesCount=1,e.localizationModes=[16,2,0,0,0,0,0,0],e.barcodeZoneMinDistanceToImageBorders=0}else if("dense"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region),e.deblurLevel=7,e.scaleDownThreshold=1e5,e.localizationModes=[2,8,0,0,0,0,0,0],e.minResultConfidence=0,e.timeout=1e5}else if("distance"==t){let t=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,e=await this.getRuntimeSettings(),e.barcodeFormatIds=t.barcodeFormatIds,e.barcodeFormatIds_2=t.barcodeFormatIds_2,t.region&&(e.region=t.region),e.scaleDownThreshold=1e5,e.localizationModes=[2,8,0,0,0,0,0,0],e.timeout=1e5}else e=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(e=JSON.parse(JSON.stringify(t)),e.region instanceof Array){let i=t.region;[i.regionLeft,i.regionTop,i.regionLeft,i.regionBottom,i.regionMeasuredByPercentage].some((t=>void 0!==t))&&(e.region={regionLeft:i.regionLeft||0,regionTop:i.regionTop||0,regionRight:i.regionRight||0,regionBottom:i.regionBottom||0,regionMeasuredByPercentage:i.regionMeasuredByPercentage||0})}}if(!b._bUseFullFeature){if(0!=(e.barcodeFormatIds&~(y.BF_ONED|y.BF_QR_CODE|y.BF_PDF417|y.BF_DATAMATRIX))||0!=e.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=e.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}{let t=e.region;if(this.bFilterRegionInJs?this.userDefinedRegion=JSON.parse(JSON.stringify(t)):this.userDefinedRegion=null,t instanceof Array)if(t.length){for(let e=0;e{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.updateReturn)}catch(t){i(t)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),b._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(e)}})})),"single"==t&&(await this.setModeArgument("BinarizationModes",0,"EnableFillBinaryVacancy","0"),await this.setModeArgument("LocalizationModes",0,"ScanDirection","2"),await this.setModeArgument("BinarizationModes",0,"BlockSizeX","71"),await this.setModeArgument("BinarizationModes",0,"BlockSizeY","71"))}_bindUI(){if(!this.getUIElement())throw new Error("Need to define `UIElement` before opening.");if(this.dce._bindUI(),!this.dce.video)throw this._unbindUI(),Error("Can not find the video container element with class 'dce-video-container'")}_unbindUI(){this.dce._unbindUI()}set onPlayed(t){this.dce.off("played",this._onPlayed),this._onPlayed=t,this.dce.on("played",this._onPlayed)}get onPlayed(){return this._onPlayed}async getAllCameras(){return this.dce.getAllCameras()}async getCurrentCamera(){return this.dce.getSelectedCamera()}async setCurrentCamera(t){const e=await this.dce.selectCamera(t);return this._fireResolutionWarning(),e}getResolution(){return this.dce.getResolution()}async setResolution(t,e){const i=await this.dce.setResolution(t,e);return this._fireResolutionWarning(),i}getVideoSettings(){return this.dce.getVideoSettings()}updateVideoSettings(t){return this.dce.updateVideoSettings(t)}isOpen(){return this.dce&&this.dce.isOpen()}setVideoFit(t){return this.dce&&this.dce.setVideoFit(t)}set ifShowScanRegionMask(t){this.dce&&(this.dce.ifShowScanRegionMask=t)}get ifShowScanRegionMask(){return this.dce&&this.dce.ifShowScanRegionMask}set ifSaveLastUsedCamera(t){this.dce&&(this.dce.ifSaveLastUsedCamera=t)}get ifSaveLastUsedCamera(){return this.dce&&this.dce.ifSaveLastUsedCamera}set ifSkipCameraInspection(t){this.dce&&(this.dce.ifSkipCameraInspection=t)}get ifSkipCameraInspection(){return this.dce&&this.dce.ifSkipCameraInspection}stop(){this._drawResults(null),this.dce.stop(),this.dce.ifShowScanRegionLaser=!1,this.dce.hideViewDecorator(),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}pause(){this.dce.pause()}async play(t,e,i){this.dce.ifShowScanRegionLaser=!0;const r=await this.dce.play(t,e,i);return this._fireResolutionWarning(),r}pauseScan(t){this._assertOpen(),t&&t.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce.ifShowScanRegionLaser=!1,this.dce.stopFetchingLoop()}resumeScan(){this._assertOpen(),this._bPauseScan=!1,this.dce.ifShowScanRegionLaser=!0}getCapabilities(){return this.dce.getCapabilities()}getCameraSettings(){return this.dce.getCameraSettings()}getConstraints(){return this.dce.getConstraints()}async applyConstraints(t){return this.dce.applyConstraints(t)}async turnOnTorch(){return this.dce.turnOnTorch()}async turnOffTorch(){return this.dce.turnOffTorch()}async setColorTemperature(t){return this.dce.setColorTemperature(t)}async setExposureCompensation(t){return this.dce.setExposureCompensation(t)}async setZoom(t){return this.dce.setZoom(t)}async setFrameRate(t){return this.dce.setFrameRate(t)}getFrameRate(){return this.dce.getFrameRate()}async setFocus(t,e){return this.dce.setFocus(t,e)}getFocus(){return this.dce.getFocus()}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this.dce.stopFetchingLoop(),void this._drawResults(null);if(!this.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce.video||this.dce.video.paused||this._bPauseScan)return b._onLog&&b._onLog("Video or scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));b._onLog&&b._onLog("======= once read ======="),b._onLog&&(this._timeStartDecode=Date.now());const t=this._getVideoFrame();if(!t)return this._drawResults(null),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{t._bUseWebGL||"grey"!==t.colorMode||(this.dce.frameColorMode="rgba");let e=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{data:i,sx:r,sy:n,width:s,height:o,colorMode:a,timeStamp:h,_sWidth:l,_sHeight:c}=t,u={timeStamp:h};if("grey"===a)e=await this._decodeBuffer_Uint8Array(i,s,o,s,p.IPF_GrayScaled,u);else if("rgba"===a)e=await this._decodeBuffer_Uint8Array(i,s,o,4*s,p.IPF_ABGR_8888,u);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported.`);e=await this._decodeBuffer_Uint8Array(i,s,o,4*s,p.IPF_ARGB_8888,u)}return b.recalculateResultLocation(e,r,n,l,c,s,o),e})().then((t=>{if(b._onLog&&b._onLog(t),this.captureAndDecodeInParallel){let t=this.array_decodeFrameTimeCost,e=this.array_getFrameTimeCost,i=this._indexCurrentDecodingFrame;const r=()=>{let r=0;if(this.region instanceof Array){let n=0,s=0;n=i+1>=this.region.length?0:i+1,s=n+1>=this.region.length?0:n+1,r=t[n]&&t[n].length&&e[s]&&e[s].length?Math.min(...t[n])-Math.max(...e[s]):0}else if(e&&e.length){let i=Math.min(...t),n=Math.max(...e);i&&n&&(r=i-n)}else r=0;return r>0?r:0};(()=>{if(this.region instanceof Array){for(t[i]&&t[i]instanceof Array||(t[i]=[]);t[i].length>=5;)t[i].shift();t[i].push(this._lastInnerDecodeDuration)}else{for(;t.length>=5;)t.shift();t.push(this._lastInnerDecodeDuration)}})(),this._intervalGetVideoFrame=r()+this.intervalTime}if(this.isOpen()&&this.dce.video&&!this.dce.video.paused&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&t.length){let e=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)e=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let i of t)if(0==i.resultState){e=!0;break}e&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&t.length){let e=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)e=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let i of t)if(0==i.resultState){e=!0;break}if(e)try{navigator.vibrate(this.vibrateDuration)}catch(t){console.warn("Vibration not allowed. User interaction required: "+(t.message||t))}}if(this.onFrameRead){let e=this._cloneDecodeResults(t);for(let t of e)0!=t.resultState&&1!=t.resultState||this.onFrameRead(e)}if(this.onUniqueRead)for(let e of t)0==e.resultState&&this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));this._drawResults(t)}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((t=>{this.dce.stopFetchingLoop(),b._onLog&&b._onLog(t.message||t),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==t.message||console.warn(t.message)}))}_getVideoFrame(){if(!this.dce)return null;let t;if(this.captureAndDecodeInParallel){let e=this.dce.isFetchingLoopStarted();if(this.dce.loopInterval=this._intervalGetVideoFrame,e||this.dce.startFetchingLoop(),!this.dce.numberOfFramesInBuffer)return this.dce.loopInterval=0,null;t=this.dce.getFrameFromBuffer();const i=t=>{if(!t)return;let e=t.timeSpent,i=this.array_getFrameTimeCost;for(;i.length>=5;)i.shift();i.push(e)};i(t)}else this.dce.stopFetchingLoop(),t=this.dce.getFrame();return t}async open(){this._bindUI();const t=await this.dce.open();return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),t}async openVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const t=await this.dce.open();return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),t}close(){this.dce.close(),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}async show(){this._bindUI();const t=await this.dce.open(!0);return this._bPauseScan=!1,this.singleFrameMode||(this.dce&&(this.dce.ifShowScanRegionLaser=!0),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),t}async showVideo(){this._bindUI(),this.dce.ifShowScanRegionLaser=!1;const t=await this.dce.open(!0);return this._bPauseScan=!0,this.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0)),this._fireResolutionWarning(),this.keepAlive(),t}hide(){this.dce.close(!0),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId)}destroyContext(){this.close(),this.bDestroyed||super.destroyContext()}}var Q,Z,$,tt,et,it,rt,nt,st,ot,at,ht,lt,ct,ut,dt,ft,gt,_t,pt,mt,vt,yt,St,Ct,bt,wt;!function(t){t[t.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",t[t.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",t[t.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",t[t.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",t[t.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",t[t.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",t[t.BICM_SKIP=0]="BICM_SKIP",t[t.BICM_REV=2147483648]="BICM_REV"}(Q||(Q={})),function(t){t[t.BCM_AUTO=1]="BCM_AUTO",t[t.BCM_GENERAL=2]="BCM_GENERAL",t[t.BCM_SKIP=0]="BCM_SKIP",t[t.BCM_REV=2147483648]="BCM_REV"}(Z||(Z={})),function(t){t[t.BF2_NULL=0]="BF2_NULL",t[t.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",t[t.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",t[t.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",t[t.BF2_POSTNET=2097152]="BF2_POSTNET",t[t.BF2_PLANET=4194304]="BF2_PLANET",t[t.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",t[t.BF2_RM4SCC=16777216]="BF2_RM4SCC",t[t.BF2_DOTCODE=2]="BF2_DOTCODE",t[t.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",t[t.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",t[t.BF2_PHARMACODE=12]="BF2_PHARMACODE"}($||($={})),function(t){t[t.BM_AUTO=1]="BM_AUTO",t[t.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",t[t.BM_SKIP=0]="BM_SKIP",t[t.BM_THRESHOLD=4]="BM_THRESHOLD",t[t.BM_REV=2147483648]="BM_REV"}(tt||(tt={})),function(t){t[t.ECCM_CONTRAST=1]="ECCM_CONTRAST"}(et||(et={})),function(t){t[t.CFM_GENERAL=1]="CFM_GENERAL"}(it||(it={})),function(t){t[t.CCM_AUTO=1]="CCM_AUTO",t[t.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",t[t.CCM_SKIP=0]="CCM_SKIP",t[t.CCM_REV=2147483648]="CCM_REV"}(rt||(rt={})),function(t){t[t.CICM_GENERAL=1]="CICM_GENERAL",t[t.CICM_SKIP=0]="CICM_SKIP",t[t.CICM_REV=2147483648]="CICM_REV"}(nt||(nt={})),function(t){t[t.CM_IGNORE=1]="CM_IGNORE",t[t.CM_OVERWRITE=2]="CM_OVERWRITE"}(st||(st={})),function(t){t[t.DM_SKIP=0]="DM_SKIP",t[t.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",t[t.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",t[t.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",t[t.DM_SMOOTHING=8]="DM_SMOOTHING",t[t.DM_MORPHING=16]="DM_MORPHING",t[t.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",t[t.DM_SHARPENING=64]="DM_SHARPENING",t[t.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",t[t.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING"}(ot||(ot={})),function(t){t[t.DRM_AUTO=1]="DRM_AUTO",t[t.DRM_GENERAL=2]="DRM_GENERAL",t[t.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",t[t.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",t[t.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",t[t.DRM_SKIP=0]="DRM_SKIP",t[t.DRM_REV=2147483648]="DRM_REV"}(at||(at={})),function(t){t[t.DPMCRM_AUTO=1]="DPMCRM_AUTO",t[t.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",t[t.DPMCRM_SKIP=0]="DPMCRM_SKIP",t[t.DPMCRM_REV=2147483648]="DPMCRM_REV"}(ht||(ht={})),function(t){t[t.GTM_INVERTED=1]="GTM_INVERTED",t[t.GTM_ORIGINAL=2]="GTM_ORIGINAL",t[t.GTM_SKIP=0]="GTM_SKIP",t[t.GTM_REV=2147483648]="GTM_REV"}(lt||(lt={})),function(t){t[t.IPM_AUTO=1]="IPM_AUTO",t[t.IPM_GENERAL=2]="IPM_GENERAL",t[t.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",t[t.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",t[t.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",t[t.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",t[t.IPM_SKIP=0]="IPM_SKIP",t[t.IPM_REV=2147483648]="IPM_REV"}(ct||(ct={})),function(t){t[t.IRSM_MEMORY=1]="IRSM_MEMORY",t[t.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",t[t.IRSM_BOTH=4]="IRSM_BOTH"}(ut||(ut={})),function(t){t[t.IRT_NO_RESULT=0]="IRT_NO_RESULT",t[t.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",t[t.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",t[t.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",t[t.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",t[t.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",t[t.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",t[t.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",t[t.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",t[t.IRT_CONTOUR=256]="IRT_CONTOUR",t[t.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",t[t.IRT_FORM=1024]="IRT_FORM",t[t.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",t[t.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",t[t.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL"}(dt||(dt={})),function(t){t[t.LM_SKIP=0]="LM_SKIP",t[t.LM_AUTO=1]="LM_AUTO",t[t.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",t[t.LM_LINES=8]="LM_LINES",t[t.LM_STATISTICS=4]="LM_STATISTICS",t[t.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",t[t.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",t[t.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",t[t.LM_CENTRE=128]="LM_CENTRE",t[t.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",t[t.LM_REV=2147483648]="LM_REV"}(ft||(ft={})),function(t){t[t.PDFRM_RASTER=1]="PDFRM_RASTER",t[t.PDFRM_AUTO=2]="PDFRM_AUTO",t[t.PDFRM_VECTOR=4]="PDFRM_VECTOR",t[t.PDFRM_REV=2147483648]="PDFRM_REV"}(gt||(gt={})),function(t){t[t.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",t[t.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",t[t.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",t[t.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(_t||(_t={})),function(t){t[t.RPM_AUTO=1]="RPM_AUTO",t[t.RPM_GENERAL=2]="RPM_GENERAL",t[t.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",t[t.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",t[t.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",t[t.RPM_SKIP=0]="RPM_SKIP",t[t.RPM_REV=2147483648]="RPM_REV"}(pt||(pt={})),function(t){t[t.RCT_PIXEL=1]="RCT_PIXEL",t[t.RCT_PERCENTAGE=2]="RCT_PERCENTAGE"}(mt||(mt={})),function(t){t[t.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",t[t.RT_RAW_TEXT=1]="RT_RAW_TEXT",t[t.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",t[t.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT"}(vt||(vt={})),function(t){t[t.SUM_AUTO=1]="SUM_AUTO",t[t.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",t[t.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",t[t.SUM_SKIP=0]="SUM_SKIP",t[t.SUM_REV=2147483648]="SUM_REV"}(yt||(yt={})),function(t){t[t.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",t[t.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",t[t.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",t[t.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",t[t.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",t[t.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED"}(St||(St={})),function(t){t[t.TFM_AUTO=1]="TFM_AUTO",t[t.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",t[t.TFM_SKIP=0]="TFM_SKIP",t[t.TFM_REV=2147483648]="TFM_REV"}(Ct||(Ct={})),function(t){t[t.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",t[t.TROM_POSITION=2]="TROM_POSITION",t[t.TROM_FORMAT=4]="TROM_FORMAT",t[t.TROM_SKIP=0]="TROM_SKIP",t[t.TROM_REV=2147483648]="TROM_REV"}(bt||(bt={})),function(t){t[t.TDM_AUTO=1]="TDM_AUTO",t[t.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",t[t.TDM_SKIP=0]="TDM_SKIP",t[t.TDM_REV=2147483648]="TDM_REV"}(wt||(wt={}));export{b as BarcodeReader,q as BarcodeScanner,Q as EnumBarcodeColourMode,Z as EnumBarcodeComplementMode,y as EnumBarcodeFormat,$ as EnumBarcodeFormat_2,tt as EnumBinarizationMode,et as EnumClarityCalculationMethod,it as EnumClarityFilterMode,rt as EnumColourClusteringMode,nt as EnumColourConversionMode,st as EnumConflictMode,ht as EnumDPMCodeReadingMode,ot as EnumDeblurMode,at as EnumDeformationResistingMode,m as EnumErrorCode,lt as EnumGrayscaleTransformationMode,v as EnumIMResultDataType,p as EnumImagePixelFormat,ct as EnumImagePreprocessingMode,ut as EnumIntermediateResultSavingMode,dt as EnumIntermediateResultType,ft as EnumLocalizationMode,gt as EnumPDFReadingMode,_t as EnumQRCodeErrorCorrectionLevel,pt as EnumRegionPredetectionMode,mt as EnumResultCoordinateType,vt as EnumResultType,yt as EnumScaleUpMode,St as EnumTerminatePhase,Ct as EnumTextFilterMode,bt as EnumTextResultOrderMode,wt as EnumTextureDetectionMode}; diff --git a/dist/dbr.pure.js b/dist/dbr.pure.js index 9c706e5..a341f6b 100644 --- a/dist/dbr.pure.js +++ b/dist/dbr.pure.js @@ -4,8 +4,8 @@ * @website http://www.dynamsoft.com * @copyright Copyright 2022, Dynamsoft Corporation * @author Dynamsoft - * @version 9.2.11 (js 20220727) + * @version 9.2.12 (js 20220727) * @fileoverview Dynamsoft JavaScript Library for Barcode Reader * More info on DBR JS: https://www.dynamsoft.com/barcode-reader/sdk-javascript/ */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Dynamsoft=e.Dynamsoft||{},e.Dynamsoft.DBR={}))}(this,(function(e){"use strict";var t=function(){this.init()};t.prototype={init:function(){var e=this||n;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var t=this||n;if(e=parseFloat(e),t.ctx||u(),void 0!==e&&e>=0&&e<=1){if(t._volume=e,t._muted)return t;t.usingWebAudio&&t.masterGain.gain.setValueAtTime(e,n.ctx.currentTime);for(var r=0;r=0;t--)e._howls[t].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,u()),e},codecs:function(e){return(this||n)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||n;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||n,t=null;try{t="undefined"!=typeof Audio?new Audio:null}catch(t){return e}if(!t||"function"!=typeof t.canPlayType)return e;var r=t.canPlayType("audio/mpeg;").replace(/^no$/,""),o=e._navigator?e._navigator.userAgent:"",i=o.match(/OPR\/([0-6].)/g),a=i&&parseInt(i[0].split("/")[1],10)<33,s=-1!==o.indexOf("Safari")&&-1===o.indexOf("Chrome"),_=o.match(/Version\/(.*?) /),d=s&&_&&parseInt(_[1],10)<15;return e._codecs={mp3:!(a||!r&&!t.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!r,opus:!!t.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(t.canPlayType('audio/wav; codecs="1"')||t.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!t.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!t.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(t.canPlayType("audio/x-m4a;")||t.canPlayType("audio/m4a;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(t.canPlayType("audio/x-m4b;")||t.canPlayType("audio/m4b;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(t.canPlayType("audio/x-mp4;")||t.canPlayType("audio/mp4;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(d||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(d||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!t.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(t.canPlayType("audio/x-flac;")||t.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||n;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var t=function(n){for(;e._html5AudioPool.length0?s._seek:r._sprite[e][0]/1e3),u=Math.max(0,(r._sprite[e][0]+r._sprite[e][1])/1e3-d),c=1e3*u/Math.abs(s._rate),l=r._sprite[e][0]/1e3,h=(r._sprite[e][0]+r._sprite[e][1])/1e3;s._sprite=e,s._ended=!1;var A=function(){s._paused=!1,s._seek=d,s._start=l,s._stop=h,s._loop=!(!s._loop&&!r._sprite[e][2])};if(!(d>=h)){var m=s._node;if(r._webAudio){var f=function(){r._playLock=!1,A(),r._refreshBuffer(s);var e=s._muted||r._muted?0:s._volume;m.gain.setValueAtTime(e,n.ctx.currentTime),s._playStart=n.ctx.currentTime,void 0===m.bufferSource.start?s._loop?m.bufferSource.noteGrainOn(0,d,86400):m.bufferSource.noteGrainOn(0,d,u):s._loop?m.bufferSource.start(0,d,86400):m.bufferSource.start(0,d,u),c!==1/0&&(r._endTimers[s._id]=setTimeout(r._ended.bind(r,s),c)),t||setTimeout((function(){r._emit("play",s._id),r._loadQueue()}),0)};"running"===n.state&&"interrupted"!==n.ctx.state?f():(r._playLock=!0,r.once("resume",f),r._clearTimer(s._id))}else{var g=function(){m.currentTime=d,m.muted=s._muted||r._muted||n._muted||m.muted,m.volume=s._volume*n.volume(),m.playbackRate=s._rate;try{var o=m.play();if(o&&"undefined"!=typeof Promise&&(o instanceof Promise||"function"==typeof o.then)?(r._playLock=!0,A(),o.then((function(){r._playLock=!1,m._unlocked=!0,t?r._loadQueue():r._emit("play",s._id)})).catch((function(){r._playLock=!1,r._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),s._ended=!0,s._paused=!0}))):t||(r._playLock=!1,A(),r._emit("play",s._id)),m.playbackRate=s._rate,m.paused)return void r._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||s._loop?r._endTimers[s._id]=setTimeout(r._ended.bind(r,s),c):(r._endTimers[s._id]=function(){r._ended(s),m.removeEventListener("ended",r._endTimers[s._id],!1)},m.addEventListener("ended",r._endTimers[s._id],!1))}catch(e){r._emit("playerror",s._id,e)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===m.src&&(m.src=r._src,m.load());var p=window&&window.ejecta||!m.readyState&&n._navigator.isCocoonJS;if(m.readyState>=3||p)g();else{r._playLock=!0,r._state="loading";var E=function(){r._state="loaded",g(),m.removeEventListener(n._canPlayEvent,E,!1)};m.addEventListener(n._canPlayEvent,E,!1),r._clearTimer(s._id)}}return s._id}r._ended(s)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var n=t._getSoundIds(e),r=0;r=0?t=parseInt(i[0],10):e=parseFloat(i[0])}else i.length>=2&&(e=parseFloat(i[0]),t=parseInt(i[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(r=t?o._soundById(t):o._sounds[0])?r._volume:0;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"volume",action:function(){o.volume.apply(o,i)}}),o;void 0===t&&(o._volume=e),t=o._getSoundIds(t);for(var _=0;_0?r/d:r),c=Date.now();e._fadeTo=n,e._interval=setInterval((function(){var o=(Date.now()-c)/r;c=Date.now(),s+=_*o,s=Math.round(100*s)/100,s=_<0?Math.max(n,s):Math.min(n,s),a._webAudio?e._volume=s:a.volume(s,e._id,!0),i&&(a._volume=s),(nt&&s>=n)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,a.volume(n,e._id),a._emit("fade",e._id))}),u)},_stopFade:function(e){var t=this,r=t._soundById(e);return r&&r._interval&&(t._webAudio&&r._node.gain.cancelScheduledValues(n.ctx.currentTime),clearInterval(r._interval),r._interval=null,t.volume(r._fadeTo,e),r._fadeTo=null,t._emit("fade",e)),t},loop:function(){var e,t,n,r=this,o=arguments;if(0===o.length)return r._loop;if(1===o.length){if("boolean"!=typeof o[0])return!!(n=r._soundById(parseInt(o[0],10)))&&n._loop;e=o[0],r._loop=e}else 2===o.length&&(e=o[0],t=parseInt(o[1],10));for(var i=r._getSoundIds(t),a=0;a=0?t=parseInt(i[0],10):e=parseFloat(i[0])}else 2===i.length&&(e=parseFloat(i[0]),t=parseInt(i[1],10));if("number"!=typeof e)return(r=o._soundById(t))?r._rate:o._rate;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"rate",action:function(){o.rate.apply(o,i)}}),o;void 0===t&&(o._rate=e),t=o._getSoundIds(t);for(var _=0;_=0?t=parseInt(o[0],10):r._sounds.length&&(t=r._sounds[0]._id,e=parseFloat(o[0]))}else 2===o.length&&(e=parseFloat(o[0]),t=parseInt(o[1],10));if(void 0===t)return 0;if("number"==typeof e&&("loaded"!==r._state||r._playLock))return r._queue.push({event:"seek",action:function(){r.seek.apply(r,o)}}),r;var s=r._soundById(t);if(s){if(!("number"==typeof e&&e>=0)){if(r._webAudio){var _=r.playing(t)?n.ctx.currentTime-s._playStart:0,d=s._rateSeek?s._rateSeek-s._seek:0;return s._seek+(d+_*Math.abs(s._rate))}return s._node.currentTime}var u=r.playing(t);u&&r.pause(t,!0),s._seek=e,s._ended=!1,r._clearTimer(t),r._webAudio||!s._node||isNaN(s._node.duration)||(s._node.currentTime=e);var c=function(){u&&r.play(t,!0),r._emit("seek",t)};if(u&&!r._webAudio){var l=function(){r._playLock?setTimeout(l,0):c()};setTimeout(l,0)}else c()}return r},playing:function(e){var t=this;if("number"==typeof e){var n=t._soundById(e);return!!n&&!n._paused}for(var r=0;r=0&&n._howls.splice(o,1);var a=!0;for(r=0;r=0){a=!1;break}return i&&a&&delete i[e._src],n.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,n,r){var o=this["_on"+e];return"function"==typeof t&&o.push(r?{id:n,fn:t,once:r}:{id:n,fn:t}),this},off:function(e,t,n){var r=this,o=r["_on"+e],i=0;if("number"==typeof t&&(n=t,t=null),t||n)for(i=0;i=0;i--)o[i].id&&o[i].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,n)}.bind(r,o[i].fn),0),o[i].once&&r.off(e,o[i].fn,o[i].id));return r._loadQueue(e),r},_loadQueue:function(e){var t=this;if(t._queue.length>0){var n=t._queue[0];n.event===e&&(t._queue.shift(),t._loadQueue()),e||n.action()}return t},_ended:function(e){var t=this,r=e._sprite;if(!t._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;r--){if(n<=t)return;e._sounds[r]._ended&&(e._webAudio&&e._sounds[r]._node&&e._sounds[r]._node.disconnect(0),e._sounds.splice(r,1),n--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],n=0;n=0;if(!e.bufferSource)return this;if(n._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),t))try{e.bufferSource.buffer=n._scratchBuffer}catch(e){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(n._navigator&&n._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var o=function(e){this._parent=e,this.init()};o.prototype={init:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++n._counter,t._sounds.push(e),e.create(),e},create:function(){var e=this,t=e._parent,r=n._muted||e._muted||e._parent._muted?0:e._volume;return t._webAudio?(e._node=void 0===n.ctx.createGain?n.ctx.createGainNode():n.ctx.createGain(),e._node.gain.setValueAtTime(r,n.ctx.currentTime),e._node.paused=!0,e._node.connect(n.masterGain)):n.noAudio||(e._node=n._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(n._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=t._src,e._node.preload=!0===t._preload?"auto":t._preload,e._node.volume=r*n.volume(),e._node.load()),e},reset:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++n._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,t=e._parent;t._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(t._sprite).length&&(t._sprite={__default:[0,1e3*t._duration]}),"loaded"!==t._state&&(t._state="loaded",t._emit("load"),t._loadQueue()),e._node.removeEventListener(n._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var i={},a=function(e){var t=e._src;if(i[t])return e._duration=i[t].duration,void d(e);if(/^data:[^;]+;base64,/.test(t)){for(var n=atob(t.split(",")[1]),r=new Uint8Array(n.length),o=0;o0?(i[t._src]=e,d(t,e)):r()};"undefined"!=typeof Promise&&1===n.ctx.decodeAudioData.length?n.ctx.decodeAudioData(e).then(o).catch(r):n.ctx.decodeAudioData(e,o,r)},d=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},u=function(){if(n.usingWebAudio){try{"undefined"!=typeof AudioContext?n.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?n.ctx=new webkitAudioContext:n.usingWebAudio=!1}catch(e){n.usingWebAudio=!1}n.ctx||(n.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(n._navigator&&n._navigator.platform),t=n._navigator&&n._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),r=t?parseInt(t[1],10):null;if(e&&r&&r<9){var o=/safari/.test(n._navigator&&n._navigator.userAgent.toLowerCase());n._navigator&&!o&&(n.usingWebAudio=!1)}n.usingWebAudio&&(n.masterGain=void 0===n.ctx.createGain?n.ctx.createGainNode():n.ctx.createGain(),n.masterGain.gain.setValueAtTime(n._muted?0:n._volume,n.ctx.currentTime),n.masterGain.connect(n.ctx.destination)),n._setup()}};!function(e,t,n,r){var o;e.prototype._pos=[0,0,0],e.prototype._orientation=[0,0,-1,0,1,0],e.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var n=t._howls.length-1;n>=0;n--)t._howls[n].stereo(e);return t},e.prototype.pos=function(e,n,r){var o=this;return o.ctx&&o.ctx.listener?(n="number"!=typeof n?o._pos[1]:n,r="number"!=typeof r?o._pos[2]:r,"number"!=typeof e?o._pos:(o._pos=[e,n,r],void 0!==o.ctx.listener.positionX?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],t.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],t.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],t.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]),o)):o},e.prototype.orientation=function(e,n,r,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var _=s._orientation;return n="number"!=typeof n?_[1]:n,r="number"!=typeof r?_[2]:r,o="number"!=typeof o?_[3]:o,i="number"!=typeof i?_[4]:i,a="number"!=typeof a?_[5]:a,"number"!=typeof e?_:(s._orientation=[e,n,r,o,i,a],void 0!==s.ctx.listener.forwardX?(s.ctx.listener.forwardX.setTargetAtTime(e,t.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(n,t.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(r,t.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,t.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,t.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,t.ctx.currentTime,.1)):s.ctx.listener.setOrientation(e,n,r,o,i,a),s)},n.prototype.init=(o=n.prototype.init,function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],o.call(this,e)}),n.prototype.stereo=function(e,n){var r=this;if(!r._webAudio)return r;if("loaded"!==r._state)return r._queue.push({event:"stereo",action:function(){r.stereo(e,n)}}),r;var o=void 0===t.ctx.createStereoPanner?"spatial":"stereo";if(void 0===n){if("number"!=typeof e)return r._stereo;r._stereo=e,r._pos=[e,0,0]}for(var a=r._getSoundIds(n),s=0;s{let e=!1;if(E)try{(await m.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===f.browser&&f.version>66||"Safari"===f.browser&&f.version>13||"OPR"===f.browser&&f.version>43||"Edge"===f.browser&&f.version;const I=(()=>{if(!c&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})(),T=" is not allowed to change after `createInstance` or `loadWasm` is called.",D=!c&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",S=!c&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",C=e=>{if(null==e)e=[];else{e=e instanceof Array?[...e]:[e];for(let t=0;te&&"object"==typeof e&&"function"==typeof e.then;const w="iPhone"==f.OS||"Android"==f.OS||"HarmonyOS"==f.OS?2048:4096;class b{constructor(){this._instanceID=void 0,this._ifSaveOriginalImageInACanvas=!1,this.oriCanvas=null,this.oriCanvasData=null,this.canvas=null,this.bFilterRegionInJs=!1,this._region=null,this._timeStartDecode=null,this._timeEnterInnerDBR=null,this._timeGetMessage=null,this.decodeRecords={},this.bDestroyed=!1,this._lastErrorCode=0,this._lastErrorString="",this._lastInnerDecodeDuration=0,this.intervalTime=0,this._intervalGetVideoFrame=0,this.array_getFrameTimeCost=[],this.array_decodeFrameTimeCost=[],this._indexCurrentDecodingFrame=0,this._bPauseScan=!1,this._intervalDetectVideoPause=1e3,this._soundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",this.beepSound=new r({src:["data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=w,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`license`"+T);n._license=t})(b,e)}static get productKeys(){return this._license}static set productKeys(e){b.license=e}static get handshakeCode(){return this._license}static set handshakeCode(e){b.license=e}static get organizationID(){return this._license}static set organizationID(e){b.license=e}static set sessionPassword(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`sessionPassword`"+T);n._sessionPassword=t})(b,e)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:g,worker:p,getUserMedia:E,camera:await R(),browser:f.browser,version:f.version,OS:f.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(e){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");b._engineResourcePath=(e=>{if(null==e&&(e="./"),!c){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`licenseServer`"+T);n._licenseServer=C(t)})(b,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+T);n._deviceFriendlyName=t||""})(b,e)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(e){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");b.__bUseFullFeature=e}static isImageSource(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"getImage"in e}static isDSImage(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("width"in e&&("height"in e&&"pixelFormat"in e)))}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("region"in e&&("sx"in e&&("sy"in e&&("width"in e&&("height"in e&&("colorMode"in e&&("timeSpent"in e&&("timeStamp"in e&&("isCropped"in e&&("toCanvas"in e&&("_sWidth"in e&&("_sHeight"in e&&"_bUseWebGL"in e)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(e){this._region=e,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var e;return null===(e=b._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",b.engineResourcePath)}static set defaultUIElementURL(e){b._defaultUIElementURL=e}static _fireHTTPSWarnning(){b.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{b.onWarning&&b.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new r({src:[this._soundSource],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(e){this.bPlaySoundOnSuccessfulRead="never"!==e&&e}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(e){this.bVibrateOnSuccessfulRead="never"!==e&&e}set dce(e){this._dce=e}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(e){this._maxCvsSideLength=e,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",e)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;b._onLog&&b._onLog("_registerDCEControler()");const e=this.dce;this._dceControler=e._createControler();const t=this._dceControler;t.register(this),t.setDisiredValue(this,"refreshInterval",200),t.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}const n=e.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{n?n===t._innerSetUI&&(await e.setUIElement(`${r.engineResourcePath}dce.ui.html`),t._innerSetUI=e.getUIElement()):(await e.setUIElement(`${r.engineResourcePath}dbr.ui.html`),t._innerSetUI=e.getUIElement())}catch(t){await e.setUIElement(r.defaultUIElementURL)}else n||await e.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async e=>{let t=await this._decode_DCEFrame(e,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onImageRead(e)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));const{sx:n,sy:r,width:o,height:i,_sWidth:a,_sHeight:s}=e;b.recalculateResultLocation(t,n,r,a,s,o,i),this._drawResults(t)},e.on("cameraChange",this.callbackCameraChange),e.on("resolutionChange",this.callbackResolutionChange),e.on("cameraClose",this.callbackCameraClose),e.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(b._onLog&&b._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(e,t){if(null==e)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(e&&e.isCameraEnhancer)this.dce=e,await this._registerDCEControler(),this._imgSource=null;else{if(!b.isImageSource(e))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=e}t&&t.resultsHighlightBaseShapes&&(this._drawingItemNamespace=t.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:e,l:t,ls:n,sp:r,rmk:o}=(e=>{const t=e;if(t._pLoad.isEmpty){let e,n,r=t._license||"",o=JSON.parse(JSON.stringify(t._licenseServer)),i=t._sessionPassword,a=0;if(r.startsWith("t")||r.startsWith("f"))a=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))a=1;else{a=2;const t=r.indexOf(":");if(-1!=t&&(r=r.substring(t+1)),r.startsWith("DLS2")){let t=r.substring(4);try{t=atob(t)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const n=JSON.parse(t);if(r=n.handshakeCode?n.handshakeCode:n.organizationID?n.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===o.length){let e=[];n.mainServerURL&&(e[0]=n.mainServerURL),n.standbyServerURL&&(e[1]=n.standbyServerURL),o=C(e)}!i&&n.sessionPassword&&(i=n.sessionPassword),e=n.remark}("200001"===r||r.startsWith("200001-"))&&(o&&o.length||(r="")),r||(a=1)}if(a&&(globalThis.crypto||(n="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(n="Require https to use online key in this browser.")),n){if(1!==a)throw new Error(n);a=0,console.warn(n),t._lastErrorCode=-1,t._lastErrorString=n}return 1===a&&(r="",console.warn("Applying for a public trial license ...")),{lt:a,l:r,ls:o,sp:i,rmk:e}}throw new Error("Can't preprocess license again"+T)})(b);this._pLoad.task=async(i,a)=>{let s=b.engineResourcePath+b._workerName;b.engineResourcePath.startsWith(location.origin)||(s=await fetch(s).then((e=>e.blob())).then((e=>URL.createObjectURL(e)))),b._dbrWorker=new Worker(s),b._dbrWorker.onerror=e=>{let t=new Error(e.message);a(t)},b._dbrWorker.onmessage=async t=>{let n=t.data?t.data:t;switch(n.type){case"log":b._onLog&&b._onLog(n.message);break;case"load":{n.message&&(n.message=n.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let t,r=!1;1===e&&(r=!0),n.success?(b._dbrWorker.onerror=null,b._version=n.version+"(JS "+b._jsVersion+"."+b._jsEditVersion+")",b._onLog&&b._onLog("load dbr worker success"),n.message&&console.warn(n.message)):(t=new Error(n.message),t.stack=n.stack+"\n"+t.stack,r||111==n.ltsErrorCode&&-1!=n.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&b.showDialog(n.success?"warn":"error",n.message),n.success?i():a(t);break}case"task":{let e=n.id,t=n.body;try{b._taskCallbackMap.get(e)(t),b._taskCallbackMap.delete(e)}catch(t){throw b._taskCallbackMap.delete(e),t}break}default:b._onLog&&b._onLog(t)}},b._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:b.engineResourcePath,bUseFullFeature:b._bUseFullFeature,bd:b._bWasmDebug,v:b._jsVersion,brtk:!!e,bptk:1===e,l:t,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:f,fn:b.deviceFriendlyName,ls:n,sp:r,rmk:o})}}await this._pLoad}static async showDialog(e,t){await(async(e,t,n)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let o=await r.text();if(!o.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let i=document.createElement("div");i.innerHTML=o;let a=[];for(let e=0;e{if(e==t.target){s.remove();for(let e of a)e.remove()}}));else if(!d&&e.classList.contains("dls-license-icon-close"))d=e,e.addEventListener("click",(()=>{s.remove();for(let e of a)e.remove()}));else if(!u&&e.classList.contains("dls-license-icon-error"))u=e,"error"!=t&&e.remove();else if(!c&&e.classList.contains("dls-license-icon-warn"))c=e,"warn"!=t&&e.remove();else if(!l&&e.classList.contains("dls-license-msg-content")){l=e;let t=n;for(;t;){let n=t.indexOf("["),r=t.indexOf("]",n),o=t.indexOf("(",r),i=t.indexOf(")",o);if(-1==n||-1==r||-1==o||-1==i){e.appendChild(new Text(t));break}n>0&&e.appendChild(new Text(t.substring(0,n)));let a=document.createElement("a"),s=t.substring(n+1,r);a.innerText=s;let _=t.substring(o+1,i);a.setAttribute("href",_),a.setAttribute("target","_blank"),e.appendChild(a),t=t.substring(i+1)}}document.body.appendChild(s)}catch(t){e._onLog&&e._onLog(t.message||t)}})(this,e,t)}static async createInstanceInWorker(e=!1){return await b.loadWasm(),await new Promise(((t,n)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success)return t(e.instanceID);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),b._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:e})}))}static async createInstance(){let e=new b;return e._instanceID=await b.createInstanceInWorker(),b._fireHTTPSWarnning(),e}async clearMapDecodeRecord(){return await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success)return e();{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:n,instanceID:this._instanceID})}))}async decode(e){b._onLog&&b._onLog("decode(source: any)"),b._onLog&&(this._timeStartDecode=Date.now());{let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),e instanceof Blob?await this._decode_Blob(e,t):e instanceof ArrayBuffer?await this._decode_ArrayBuffer(e,t):e instanceof Uint8Array||e instanceof Uint8ClampedArray?await this._decode_Uint8Array(e,t):e instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?await this._decode_Image(e,t):e instanceof HTMLCanvasElement?await this._decode_Canvas(e,t):e instanceof HTMLVideoElement?await this._decode_Video(e,t):"string"==typeof e?"data:image/"==e.substring(0,11)?await this._decode_Base64(e,t):await this._decode_Url(e,t):b.isDCEFrame(e)?(t.bCopyData=!0,await this._decode_DCEFrame(e,t)):b.isDSImage(e)?(t.bCopyData=!0,await this._decode_DSImage(e,t)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(e,t)}async decodeUrl(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(e,t)}async _decodeBuffer_Uint8Array(e,t,n,r,o,i){return await new Promise(((a,s)=>{let _=b._nextTaskID++;b._taskCallbackMap.set(_,(e=>{if(e.success){let t,n=b._onLog?Date.now():0;b._onLog&&b._onLog("worker return result: "+n),this._lastInnerDecodeDuration=e.duration;try{t=this._handleRetJsonString(e.decodeReturn)}catch(e){return s(e)}if(b._onLog){let e=Date.now();b._onLog("DBR time get result: "+n),b._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),b._onLog("DBR worker decode image cost: "+(n-this._timeEnterInnerDBR)),b._onLog("DBR worker handle results: "+(e-n)),b._onLog("Total decode image cost: "+(e-this._timeStartDecode))}return a(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,s(t)}})),this._timeEnterInnerDBR=Date.now(),b._onLog&&b._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),b._dbrWorker.postMessage({type:"decodeBuffer",id:_,instanceID:this._instanceID,body:{buffer:e,width:t,height:n,stride:r,format:o,config:i}},[e.buffer]),b._onLog&&i&&i.timeStamp&&b._onLog("decode image delay: "+(this._timeEnterInnerDBR-i.timeStamp))}))}async _decodeBuffer_Blob(e,t,n,r,o,i){b._onLog&&b._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const a=e.arrayBuffer?await e.arrayBuffer():await new Promise(((t,n)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onload=()=>{t(r.result)},r.onerror=()=>{n(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(a),t,n,r,o,i)}async decodeBuffer(e,t,n,r,o,i){let a;return b._onLog&&b._onLog("decodeBuffer(buffer,width,height,stride,format)"),b._onLog&&(this._timeStartDecode=Date.now()),e instanceof Uint8Array||e instanceof Uint8ClampedArray?a=await this._decodeBuffer_Uint8Array(e,t,n,r,o,i):e instanceof ArrayBuffer?a=await this._decodeBuffer_Uint8Array(new Uint8Array(e),t,n,r,o,i):e instanceof Blob&&(a=await this._decodeBuffer_Blob(e,t,n,r,o,i)),a}async _decodeFileInMemory_Uint8Array(e){return await new Promise(((t,n)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success){let r;this._lastInnerDecodeDuration=e.duration;try{r=this._handleRetJsonString(e.decodeReturn)}catch(e){return n(e)}return t(r)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),b._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:e}})}))}async getRuntimeSettings(){return await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success){let t=JSON.parse(n.results);return null!=this.userDefinedRegion&&(t.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),e(t)}{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"getRuntimeSettings",id:n,instanceID:this._instanceID})}))}async updateRuntimeSettings(t){let n;if("string"==typeof t)if("speed"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region,n.deblurLevel=3,n.expectedBarcodesCount=0,n.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region,n.deblurLevel=5,n.expectedBarcodesCount=512,n.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region}else if("dense"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region,n.deblurLevel=9,n.expectedBarcodesCount=0,n.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region,n.deblurLevel=3,n.expectedBarcodesCount=0,n.localizationModes=[2,8,0,0,0,0,0,0]}else n=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(n=JSON.parse(JSON.stringify(t)),n.region instanceof Array){let e=n.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(n.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!b._bUseFullFeature){if(0!=(n.barcodeFormatIds&~(e.EnumBarcodeFormat.BF_ONED|e.EnumBarcodeFormat.BF_QR_CODE|e.EnumBarcodeFormat.BF_PDF417|e.EnumBarcodeFormat.BF_DATAMATRIX))||0!=n.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=n.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let e=n.region;if(e instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(e)),(e.regionLeft||e.regionTop||e.regionRight||e.regionBottom||e.regionMeasuredByPercentage)&&(e.regionLeft||e.regionTop||100!=e.regionRight||100!=e.regionBottom||!e.regionMeasuredByPercentage)?this.region=e:this.region=null,n.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((e,t)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(n=>{if(n.success){try{this._handleRetJsonString(n.updateReturn)}catch(e){t(e)}return e()}{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(n)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=w,await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success)return e();{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"resetRuntimeSettings",id:n,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!b._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success)return e(n.results);{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:n,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(e){if(!b._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof e)e=e;else{if("object"!=typeof e)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");e=JSON.stringify(e)}return await new Promise(((t,n)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.initReturn)}catch(e){n(e)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),b._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:e}})}))}async _decode_Blob(e,t){b._onLog&&b._onLog("_decode_Blob(blob: Blob)");let n=null,r=null;if("undefined"!=typeof createImageBitmap)try{n=await createImageBitmap(e)}catch(e){}n||(r=await function(e){return new Promise(((t,n)=>{let r=URL.createObjectURL(e),o=new Image;o.dbrObjUrl=r,o.src=r,o.onload=()=>{t(o)},o.onerror=e=>{n(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}}))}(e));let o=await this._decode_Image(n||r,t);return n&&n.close(),o}async _decode_ArrayBuffer(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Uint8Array(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Image(e,t){b._onLog&&b._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),t=t||{};let n,r,o=e instanceof HTMLImageElement?e.naturalWidth:e.width,i=e instanceof HTMLImageElement?e.naturalHeight:e.height,a=Math.max(o,i);if(a>this._maxCvsSideLength){let e=this._maxCvsSideLength/a;n=Math.round(o*e),r=Math.round(i*e)}else n=o,r=i;this.canvas||(this.canvas=document.createElement("canvas"));const s=this.canvas;s.width===n&&s.height===r||(s.width=n,s.height=r),s.ctx2d||(s.ctx2d=s.getContext("2d"));return s.ctx2d.drawImage(e,0,0,o,i,0,0,n,r),e.dbrObjUrl&&URL.revokeObjectURL(e.dbrObjUrl),await this._decode_Canvas(s,t)}async _decode_Canvas(t,n){if(b._onLog&&b._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if(0===t.width||0===t.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=t,this.oriCanvasData=null);let r=(t.ctx2d||t.getContext("2d")).getImageData(0,0,t.width,t.height).data;return await this._decodeBuffer_Uint8Array(r,t.width,t.height,4*t.width,e.EnumImagePixelFormat.IPF_ABGR_8888,n)}async _decode_Video(e,t){if(b._onLog&&b._onLog("_decode_Video(video)"),!(e instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";t=t||{};let n,r,o=e.videoWidth,i=e.videoHeight,a=Math.max(o,i);if(a>this._maxCvsSideLength){let e=this._maxCvsSideLength/a;n=Math.round(o*e),r=Math.round(i*e)}else n=o,r=i;this.canvas||(this.canvas=document.createElement("canvas"));const s=this.canvas;s.width===n&&s.height===r||(s.width=n,s.height=r),s.ctx2d||(s.ctx2d=s.getContext("2d"));return s.ctx2d.drawImage(e,0,0,o,i,0,0,n,r),await this._decode_Canvas(s,t)}async _decode_DCEFrame(t,n){if(b._onLog&&b._onLog("_decode_DCEFrame(dceFrame)"),!b.isDCEFrame(t))return[];let r=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{width:o,height:i,colorMode:a,timeStamp:s}=t;let _;_=n&&n.bCopyData?new Uint8Array(t.data):t.data;let d=null;if(n?(d=JSON.parse(JSON.stringify(n)),d.timeStamp=s):d={timeStamp:s},"grey"===a)r=await this._decodeBuffer_Uint8Array(_,o,i,o,e.EnumImagePixelFormat.IPF_GrayScaled,d);else if("rgba"===a)r=await this._decodeBuffer_Uint8Array(_,o,i,4*o,e.EnumImagePixelFormat.IPF_ABGR_8888,d);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported to decode.`);r=await this._decodeBuffer_Uint8Array(_,o,i,4*o,e.EnumImagePixelFormat.IPF_ARGB_8888,d)}return r}async _decode_DSImage(t,n){if(b._onLog&&b._onLog("_decode_DSImage(dsImage)"),!b.isDSImage(t))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,pixelFormat:t.pixelFormat.toLowerCase(),data:new Uint8Array(t.data),toCanvas:function(){const e=document.createElement("canvas");let t;switch(e.width=this.width,e.height=this.height,this.pixelFormat){case"grey":t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;e{let r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{t(r.response)},r.onerror=()=>{n(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(n,t)}}async _decode_FilePath(e,t){throw b._onLog&&b._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(e,t,n,r,o,i,a){if(e.length>0)for(let s of e){let e=s.localizationResult;2==e.resultCoordinateType&&(e.x1*=.01*i,e.x2*=.01*i,e.x3*=.01*i,e.x4*=.01*i,e.y1*=.01*a,e.y2*=.01*a,e.y3*=.01*a,e.y4*=.01*a);let _=i/r,d=a/o;e.x1=e.x1/_+t,e.x2=e.x2/_+t,e.x3=e.x3/_+t,e.x4=e.x4/_+t,e.y1=e.y1/d+n,e.y2=e.y2/d+n,e.y3=e.y3/d+n,e.y4=e.y4/d+n,2==e.resultCoordinateType&&(e.x1*=100/r,e.x2*=100/r,e.x3*=100/r,e.x4*=100/r,e.y1*=100/o,e.y2*=100/o,e.y3*=100/o,e.y4*=100/o)}}static BarcodeReaderException(t,n){let r,o=e.EnumErrorCode.DBR_UNKNOWN;return"number"==typeof t?(o=t,r=new Error(n)):r=new Error(t),r.code=o,r}_handleRetJsonString(t){let n=e.EnumErrorCode;if(t.textResults){for(let e=0;e{let n=t.indexOf(":");e[t.substring(0,n)]=t.substring(n+1)})),n.exception=e}}return t.decodeRecords?this.decodeRecords=t.decodeRecords:this.decodeRecords={},this._lastErrorCode=t.exception,this._lastErrorString=t.description,t.exception&&!b._setWarnnedEx.has(t.description)&&(b._setWarnnedEx.add(t.description),console.warn(t.description)),t.textResults}if(t.exception==n.DBR_SUCCESS)return t.data;throw b.BarcodeReaderException(t.exception,t.description)}async setModeArgument(e,t,n,r){return await new Promise(((o,i)=>{let a=b._nextTaskID++;b._taskCallbackMap.set(a,(e=>{if(e.success){try{this._handleRetJsonString(e.setReturn)}catch(e){return i(e)}return o()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),b._dbrWorker.postMessage({type:"setModeArgument",id:a,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:n,argumentValue:r}})}))}async getModeArgument(e,t,n){return await new Promise(((r,o)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(e=>{if(e.success){let t;try{t=this._handleRetJsonString(e.getReturn)}catch(e){return o(e)}return r(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,o(t)}})),b._dbrWorker.postMessage({type:"getModeArgument",id:i,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:n}})}))}async getIntermediateResults(){return await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success)return e(n.results);{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"getIntermediateResults",id:n,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let t=await this.getIntermediateResults(),n=[];for(let r of t)if(r.dataType==e.EnumIMResultDataType.IMRDT_IMAGE)for(let t of r.results){const r=t.bytes;let o;switch(b._onLog&&b._onLog(" "+r.length+" "+r.byteLength+" "+t.width+" "+t.height+" "+t.stride+" "+t.format),t.format){case e.EnumImagePixelFormat.IPF_ABGR_8888:o=new Uint8ClampedArray(r);break;case e.EnumImagePixelFormat.IPF_RGB_888:{const e=r.length/3;o=new Uint8ClampedArray(4*e);for(let t=0;t{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success){let t=n.results;return t.intervalTime=this.intervalTime,t.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,t.soundOnSuccessfullRead=this.soundSource,t.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,t.vibrateDuration=this.vibrateDuration,t.captureAndDecodeInParallel=this.captureAndDecodeInParallel,e(t)}{let e=new Error(n.message);return e.stack+="\n"+n.stack,t(e)}})),b._dbrWorker.postMessage({type:"getScanSettings",id:n,instanceID:this._instanceID})}))}async updateScanSettings(e){if(!e)return;const t=JSON.parse(JSON.stringify(e));return t.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(t.intervalTime,0),delete t.intervalTime),t.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=t.whenToPlaySoundforSuccessfulRead,delete t.whenToPlaySoundforSuccessfulRead),t.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=t.soundOnSuccessfullRead,delete t.soundOnSuccessfullRead),t.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=t.whenToVibrateforSuccessfulRead,delete t.whenToVibrateforSuccessfulRead),t.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=t.vibrateDuration,delete t.vibrateDuration),t.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=t.captureAndDecodeInParallel,delete t.captureAndDecodeInParallel),await new Promise(((e,n)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack+="\n"+t.stack,n(e)}})),b._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:t}})}))}_cloneDecodeResults(e){if(e instanceof Array){let t=[];for(let n of e)t.push(this._cloneDecodeResults(n));return t}{let t=e;return JSON.parse(JSON.stringify(t,((e,t)=>"oriVideoCanvas"==e||"searchRegionCanvas"==e?void 0:t)))}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return b._onLog&&b._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));b._onLog&&b._onLog("======= once read ======="),b._onLog&&(this._timeStartDecode=Date.now());let e=null,t=null;if(this.dce)e=this._getVideoFrame();else if(this._imgSource&&(t=await this._imgSource.getImage(),!b.isDSImage(t)))throw new Error("Invalid DSImage.");if(!e&&!t)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let n=[];if(e){n=await this._decode_DCEFrame(e,{bScanner:!0,bCopyData:!1});let t=null;if(n&&n.length){const{sx:r,sy:o,width:i,height:a,_sWidth:s,_sHeight:_}=e;t=n.map((e=>({localizationResult:JSON.parse(JSON.stringify(e.localizationResult))}))),b.recalculateResultLocation(t,r,o,s,_,i,a)}this._drawResults(t)}else t&&(n=await this._decode_DSImage(t,{bScanner:!0,bCopyData:!1}));return n})().then((e=>{if(b._onLog&&b._onLog(e),this.dce&&this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost;const n=()=>{let n=0;if(t&&t.length){let r=Math.min(...e),o=Math.max(...t);r&&o&&(n=r-o)}else n=0;return n>0?n:0};(()=>{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=n()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let n of e)if(0==n.resultsType){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let n of e)if(0==n.resultsType){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onImageRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultsType&&1!=e.resultsType||this.onImageRead(t);this.onImageRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultsType&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),b._onLog&&b._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;e=this.dce.getFrameFromBuffer();const t=e=>{if(!e)return;let t=e.timeSpent,n=this.array_getFrameTimeCost;for(;n.length>=5;)n.shift();n.push(t)};t(e)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),e=this.dce.getFrame();return e}_drawResults(e){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const t=this._dbrDrawingLayer;if(t.clearDrawingItems(),e&&e.length)for(let n of e){const e=n.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:e.x1,y:e.y1},{x:e.x2,y:e.y2},{x:e.x3,y:e.y3},{x:e.x4,y:e.y4}]);t.addDrawingItem(r)}}async startScanning(e){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let t=null;return this.dce&&(this.dce.isOpen()?(e&&this.dce.appendAndShowUI(),t=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):t=await this.dce.open(e),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),t):void 0}stopScanning(e){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",e))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(e){if(e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(b._onLog&&b._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let e=b._nextTaskID++;b._taskCallbackMap.set(e,(e=>{if(!e.success){let t=new Error(e.message);throw t.stack=e.stack+"\n"+t.stack,t}})),b._dbrWorker.postMessage({type:"destroyContext",id:e,instanceID:this._instanceID})}}var B,N,P,F,V,x,k,U,G,H,K,W,Y,Q,J,X,Z,j,q,$,z,ee,te,ne,re,oe,ie;b._jsVersion="9.2.11",b._jsEditVersion="20220727",b._version=`loading...(JS ${b._jsVersion}.${b._jsEditVersion})`,b._license=D,b._sessionPassword=S,b.browserInfo=f,b._workerName=`dbr-${b._jsVersion}.browser.worker.js`,b._engineResourcePath=I,b._licenseServer=[],b._deviceFriendlyName="",b._isShowRelDecodeTimeInResults=!1,b._bWasmDebug=!1,b._bNeverShowDialog=!1,b.__bUseFullFeature=!0,b._nextTaskID=0,b._taskCallbackMap=new Map,b._pLoad=new class extends Promise{constructor(e){let t,n;super(((e,r)=>{t=e,n=r})),this._s="pending",this.resolve=e=>{this.isPending&&(L(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",n(e))},this.task=e}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,L(e)?t=e:"function"==typeof e&&(t=new Promise(e)),t&&(async()=>{try{const n=await t;e===this._task&&this.resolve(n)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}},b._lastErrorCode=0,b._lastErrorString="",b._setWarnnedEx=new Set,b._defaultUIElementURL="@engineResourcePath/dbr.ui.html",e.EnumBarcodeColourMode=void 0,(B=e.EnumBarcodeColourMode||(e.EnumBarcodeColourMode={}))[B.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",B[B.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",B[B.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",B[B.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",B[B.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",B[B.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",B[B.BICM_SKIP=0]="BICM_SKIP",B[B.BICM_REV=2147483648]="BICM_REV",e.EnumBarcodeComplementMode=void 0,(N=e.EnumBarcodeComplementMode||(e.EnumBarcodeComplementMode={}))[N.BCM_AUTO=1]="BCM_AUTO",N[N.BCM_GENERAL=2]="BCM_GENERAL",N[N.BCM_SKIP=0]="BCM_SKIP",N[N.BCM_REV=2147483648]="BCM_REV",e.EnumBarcodeFormat_2=void 0,(P=e.EnumBarcodeFormat_2||(e.EnumBarcodeFormat_2={}))[P.BF2_NULL=0]="BF2_NULL",P[P.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",P[P.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",P[P.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",P[P.BF2_POSTNET=2097152]="BF2_POSTNET",P[P.BF2_PLANET=4194304]="BF2_PLANET",P[P.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",P[P.BF2_RM4SCC=16777216]="BF2_RM4SCC",P[P.BF2_DOTCODE=2]="BF2_DOTCODE",P[P.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",P[P.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",P[P.BF2_PHARMACODE=12]="BF2_PHARMACODE",e.EnumBinarizationMode=void 0,(F=e.EnumBinarizationMode||(e.EnumBinarizationMode={}))[F.BM_AUTO=1]="BM_AUTO",F[F.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",F[F.BM_SKIP=0]="BM_SKIP",F[F.BM_THRESHOLD=4]="BM_THRESHOLD",F[F.BM_REV=2147483648]="BM_REV",e.EnumClarityCalculationMethod=void 0,(V=e.EnumClarityCalculationMethod||(e.EnumClarityCalculationMethod={}))[V.ECCM_CONTRAST=1]="ECCM_CONTRAST",e.EnumClarityFilterMode=void 0,(x=e.EnumClarityFilterMode||(e.EnumClarityFilterMode={}))[x.CFM_GENERAL=1]="CFM_GENERAL",e.EnumColourClusteringMode=void 0,(k=e.EnumColourClusteringMode||(e.EnumColourClusteringMode={}))[k.CCM_AUTO=1]="CCM_AUTO",k[k.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",k[k.CCM_SKIP=0]="CCM_SKIP",k[k.CCM_REV=2147483648]="CCM_REV",e.EnumColourConversionMode=void 0,(U=e.EnumColourConversionMode||(e.EnumColourConversionMode={}))[U.CICM_GENERAL=1]="CICM_GENERAL",U[U.CICM_SKIP=0]="CICM_SKIP",U[U.CICM_REV=2147483648]="CICM_REV",e.EnumConflictMode=void 0,(G=e.EnumConflictMode||(e.EnumConflictMode={}))[G.CM_IGNORE=1]="CM_IGNORE",G[G.CM_OVERWRITE=2]="CM_OVERWRITE",e.EnumDeblurMode=void 0,(H=e.EnumDeblurMode||(e.EnumDeblurMode={}))[H.DM_SKIP=0]="DM_SKIP",H[H.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",H[H.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",H[H.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",H[H.DM_SMOOTHING=8]="DM_SMOOTHING",H[H.DM_MORPHING=16]="DM_MORPHING",H[H.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",H[H.DM_SHARPENING=64]="DM_SHARPENING",H[H.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",H[H.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",e.EnumDeformationResistingMode=void 0,(K=e.EnumDeformationResistingMode||(e.EnumDeformationResistingMode={}))[K.DRM_AUTO=1]="DRM_AUTO",K[K.DRM_GENERAL=2]="DRM_GENERAL",K[K.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",K[K.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",K[K.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",K[K.DRM_SKIP=0]="DRM_SKIP",K[K.DRM_REV=2147483648]="DRM_REV",e.EnumDPMCodeReadingMode=void 0,(W=e.EnumDPMCodeReadingMode||(e.EnumDPMCodeReadingMode={}))[W.DPMCRM_AUTO=1]="DPMCRM_AUTO",W[W.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",W[W.DPMCRM_SKIP=0]="DPMCRM_SKIP",W[W.DPMCRM_REV=2147483648]="DPMCRM_REV",e.EnumGrayscaleTransformationMode=void 0,(Y=e.EnumGrayscaleTransformationMode||(e.EnumGrayscaleTransformationMode={}))[Y.GTM_INVERTED=1]="GTM_INVERTED",Y[Y.GTM_ORIGINAL=2]="GTM_ORIGINAL",Y[Y.GTM_SKIP=0]="GTM_SKIP",Y[Y.GTM_REV=2147483648]="GTM_REV",e.EnumImagePreprocessingMode=void 0,(Q=e.EnumImagePreprocessingMode||(e.EnumImagePreprocessingMode={}))[Q.IPM_AUTO=1]="IPM_AUTO",Q[Q.IPM_GENERAL=2]="IPM_GENERAL",Q[Q.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",Q[Q.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",Q[Q.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",Q[Q.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",Q[Q.IPM_SKIP=0]="IPM_SKIP",Q[Q.IPM_REV=2147483648]="IPM_REV",e.EnumIntermediateResultSavingMode=void 0,(J=e.EnumIntermediateResultSavingMode||(e.EnumIntermediateResultSavingMode={}))[J.IRSM_MEMORY=1]="IRSM_MEMORY",J[J.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",J[J.IRSM_BOTH=4]="IRSM_BOTH",e.EnumIntermediateResultType=void 0,(X=e.EnumIntermediateResultType||(e.EnumIntermediateResultType={}))[X.IRT_NO_RESULT=0]="IRT_NO_RESULT",X[X.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",X[X.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",X[X.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",X[X.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",X[X.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",X[X.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",X[X.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",X[X.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",X[X.IRT_CONTOUR=256]="IRT_CONTOUR",X[X.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",X[X.IRT_FORM=1024]="IRT_FORM",X[X.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",X[X.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",X[X.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL",e.EnumLocalizationMode=void 0,(Z=e.EnumLocalizationMode||(e.EnumLocalizationMode={}))[Z.LM_SKIP=0]="LM_SKIP",Z[Z.LM_AUTO=1]="LM_AUTO",Z[Z.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",Z[Z.LM_LINES=8]="LM_LINES",Z[Z.LM_STATISTICS=4]="LM_STATISTICS",Z[Z.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",Z[Z.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",Z[Z.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",Z[Z.LM_CENTRE=128]="LM_CENTRE",Z[Z.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",Z[Z.LM_REV=2147483648]="LM_REV",e.EnumPDFReadingMode=void 0,(j=e.EnumPDFReadingMode||(e.EnumPDFReadingMode={}))[j.PDFRM_RASTER=1]="PDFRM_RASTER",j[j.PDFRM_AUTO=2]="PDFRM_AUTO",j[j.PDFRM_VECTOR=4]="PDFRM_VECTOR",j[j.PDFRM_REV=2147483648]="PDFRM_REV",e.EnumQRCodeErrorCorrectionLevel=void 0,(q=e.EnumQRCodeErrorCorrectionLevel||(e.EnumQRCodeErrorCorrectionLevel={}))[q.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",q[q.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",q[q.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",q[q.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q",e.EnumRegionPredetectionMode=void 0,($=e.EnumRegionPredetectionMode||(e.EnumRegionPredetectionMode={}))[$.RPM_AUTO=1]="RPM_AUTO",$[$.RPM_GENERAL=2]="RPM_GENERAL",$[$.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",$[$.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",$[$.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",$[$.RPM_SKIP=0]="RPM_SKIP",$[$.RPM_REV=2147483648]="RPM_REV",e.EnumResultCoordinateType=void 0,(z=e.EnumResultCoordinateType||(e.EnumResultCoordinateType={}))[z.RCT_PIXEL=1]="RCT_PIXEL",z[z.RCT_PERCENTAGE=2]="RCT_PERCENTAGE",e.EnumResultType=void 0,(ee=e.EnumResultType||(e.EnumResultType={}))[ee.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",ee[ee.RT_RAW_TEXT=1]="RT_RAW_TEXT",ee[ee.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",ee[ee.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT",e.EnumScaleUpMode=void 0,(te=e.EnumScaleUpMode||(e.EnumScaleUpMode={}))[te.SUM_AUTO=1]="SUM_AUTO",te[te.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",te[te.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",te[te.SUM_SKIP=0]="SUM_SKIP",te[te.SUM_REV=2147483648]="SUM_REV",e.EnumTerminatePhase=void 0,(ne=e.EnumTerminatePhase||(e.EnumTerminatePhase={}))[ne.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",ne[ne.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",ne[ne.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",ne[ne.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",ne[ne.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",ne[ne.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED",e.EnumTextFilterMode=void 0,(re=e.EnumTextFilterMode||(e.EnumTextFilterMode={}))[re.TFM_AUTO=1]="TFM_AUTO",re[re.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",re[re.TFM_SKIP=0]="TFM_SKIP",re[re.TFM_REV=2147483648]="TFM_REV",e.EnumTextResultOrderMode=void 0,(oe=e.EnumTextResultOrderMode||(e.EnumTextResultOrderMode={}))[oe.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",oe[oe.TROM_POSITION=2]="TROM_POSITION",oe[oe.TROM_FORMAT=4]="TROM_FORMAT",oe[oe.TROM_SKIP=0]="TROM_SKIP",oe[oe.TROM_REV=2147483648]="TROM_REV",e.EnumTextureDetectionMode=void 0,(ie=e.EnumTextureDetectionMode||(e.EnumTextureDetectionMode={}))[ie.TDM_AUTO=1]="TDM_AUTO",ie[ie.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",ie[ie.TDM_SKIP=0]="TDM_SKIP",ie[ie.TDM_REV=2147483648]="TDM_REV",e.BarcodeReader=b,Object.defineProperty(e,"__esModule",{value:!0})})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Dynamsoft=e.Dynamsoft||{},e.Dynamsoft.DBR={}))}(this,(function(e){"use strict";var t=function(){this.init()};t.prototype={init:function(){var e=this||n;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var t=this||n;if(e=parseFloat(e),t.ctx||u(),void 0!==e&&e>=0&&e<=1){if(t._volume=e,t._muted)return t;t.usingWebAudio&&t.masterGain.gain.setValueAtTime(e,n.ctx.currentTime);for(var r=0;r=0;t--)e._howls[t].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,u()),e},codecs:function(e){return(this||n)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||n;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||n,t=null;try{t="undefined"!=typeof Audio?new Audio:null}catch(t){return e}if(!t||"function"!=typeof t.canPlayType)return e;var r=t.canPlayType("audio/mpeg;").replace(/^no$/,""),o=e._navigator?e._navigator.userAgent:"",i=o.match(/OPR\/([0-6].)/g),a=i&&parseInt(i[0].split("/")[1],10)<33,s=-1!==o.indexOf("Safari")&&-1===o.indexOf("Chrome"),_=o.match(/Version\/(.*?) /),d=s&&_&&parseInt(_[1],10)<15;return e._codecs={mp3:!(a||!r&&!t.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!r,opus:!!t.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!t.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(t.canPlayType('audio/wav; codecs="1"')||t.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!t.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!t.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(t.canPlayType("audio/x-m4a;")||t.canPlayType("audio/m4a;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(t.canPlayType("audio/x-m4b;")||t.canPlayType("audio/m4b;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(t.canPlayType("audio/x-mp4;")||t.canPlayType("audio/mp4;")||t.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(d||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(d||!t.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!t.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(t.canPlayType("audio/x-flac;")||t.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||n;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var t=function(n){for(;e._html5AudioPool.length0?s._seek:r._sprite[e][0]/1e3),u=Math.max(0,(r._sprite[e][0]+r._sprite[e][1])/1e3-d),c=1e3*u/Math.abs(s._rate),l=r._sprite[e][0]/1e3,h=(r._sprite[e][0]+r._sprite[e][1])/1e3;s._sprite=e,s._ended=!1;var A=function(){s._paused=!1,s._seek=d,s._start=l,s._stop=h,s._loop=!(!s._loop&&!r._sprite[e][2])};if(!(d>=h)){var m=s._node;if(r._webAudio){var f=function(){r._playLock=!1,A(),r._refreshBuffer(s);var e=s._muted||r._muted?0:s._volume;m.gain.setValueAtTime(e,n.ctx.currentTime),s._playStart=n.ctx.currentTime,void 0===m.bufferSource.start?s._loop?m.bufferSource.noteGrainOn(0,d,86400):m.bufferSource.noteGrainOn(0,d,u):s._loop?m.bufferSource.start(0,d,86400):m.bufferSource.start(0,d,u),c!==1/0&&(r._endTimers[s._id]=setTimeout(r._ended.bind(r,s),c)),t||setTimeout((function(){r._emit("play",s._id),r._loadQueue()}),0)};"running"===n.state&&"interrupted"!==n.ctx.state?f():(r._playLock=!0,r.once("resume",f),r._clearTimer(s._id))}else{var g=function(){m.currentTime=d,m.muted=s._muted||r._muted||n._muted||m.muted,m.volume=s._volume*n.volume(),m.playbackRate=s._rate;try{var o=m.play();if(o&&"undefined"!=typeof Promise&&(o instanceof Promise||"function"==typeof o.then)?(r._playLock=!0,A(),o.then((function(){r._playLock=!1,m._unlocked=!0,t?r._loadQueue():r._emit("play",s._id)})).catch((function(){r._playLock=!1,r._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),s._ended=!0,s._paused=!0}))):t||(r._playLock=!1,A(),r._emit("play",s._id)),m.playbackRate=s._rate,m.paused)return void r._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||s._loop?r._endTimers[s._id]=setTimeout(r._ended.bind(r,s),c):(r._endTimers[s._id]=function(){r._ended(s),m.removeEventListener("ended",r._endTimers[s._id],!1)},m.addEventListener("ended",r._endTimers[s._id],!1))}catch(e){r._emit("playerror",s._id,e)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===m.src&&(m.src=r._src,m.load());var p=window&&window.ejecta||!m.readyState&&n._navigator.isCocoonJS;if(m.readyState>=3||p)g();else{r._playLock=!0,r._state="loading";var E=function(){r._state="loaded",g(),m.removeEventListener(n._canPlayEvent,E,!1)};m.addEventListener(n._canPlayEvent,E,!1),r._clearTimer(s._id)}}return s._id}r._ended(s)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var n=t._getSoundIds(e),r=0;r=0?t=parseInt(i[0],10):e=parseFloat(i[0])}else i.length>=2&&(e=parseFloat(i[0]),t=parseInt(i[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(r=t?o._soundById(t):o._sounds[0])?r._volume:0;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"volume",action:function(){o.volume.apply(o,i)}}),o;void 0===t&&(o._volume=e),t=o._getSoundIds(t);for(var _=0;_0?r/d:r),c=Date.now();e._fadeTo=n,e._interval=setInterval((function(){var o=(Date.now()-c)/r;c=Date.now(),s+=_*o,s=Math.round(100*s)/100,s=_<0?Math.max(n,s):Math.min(n,s),a._webAudio?e._volume=s:a.volume(s,e._id,!0),i&&(a._volume=s),(nt&&s>=n)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,a.volume(n,e._id),a._emit("fade",e._id))}),u)},_stopFade:function(e){var t=this,r=t._soundById(e);return r&&r._interval&&(t._webAudio&&r._node.gain.cancelScheduledValues(n.ctx.currentTime),clearInterval(r._interval),r._interval=null,t.volume(r._fadeTo,e),r._fadeTo=null,t._emit("fade",e)),t},loop:function(){var e,t,n,r=this,o=arguments;if(0===o.length)return r._loop;if(1===o.length){if("boolean"!=typeof o[0])return!!(n=r._soundById(parseInt(o[0],10)))&&n._loop;e=o[0],r._loop=e}else 2===o.length&&(e=o[0],t=parseInt(o[1],10));for(var i=r._getSoundIds(t),a=0;a=0?t=parseInt(i[0],10):e=parseFloat(i[0])}else 2===i.length&&(e=parseFloat(i[0]),t=parseInt(i[1],10));if("number"!=typeof e)return(r=o._soundById(t))?r._rate:o._rate;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"rate",action:function(){o.rate.apply(o,i)}}),o;void 0===t&&(o._rate=e),t=o._getSoundIds(t);for(var _=0;_=0?t=parseInt(o[0],10):r._sounds.length&&(t=r._sounds[0]._id,e=parseFloat(o[0]))}else 2===o.length&&(e=parseFloat(o[0]),t=parseInt(o[1],10));if(void 0===t)return 0;if("number"==typeof e&&("loaded"!==r._state||r._playLock))return r._queue.push({event:"seek",action:function(){r.seek.apply(r,o)}}),r;var s=r._soundById(t);if(s){if(!("number"==typeof e&&e>=0)){if(r._webAudio){var _=r.playing(t)?n.ctx.currentTime-s._playStart:0,d=s._rateSeek?s._rateSeek-s._seek:0;return s._seek+(d+_*Math.abs(s._rate))}return s._node.currentTime}var u=r.playing(t);u&&r.pause(t,!0),s._seek=e,s._ended=!1,r._clearTimer(t),r._webAudio||!s._node||isNaN(s._node.duration)||(s._node.currentTime=e);var c=function(){u&&r.play(t,!0),r._emit("seek",t)};if(u&&!r._webAudio){var l=function(){r._playLock?setTimeout(l,0):c()};setTimeout(l,0)}else c()}return r},playing:function(e){var t=this;if("number"==typeof e){var n=t._soundById(e);return!!n&&!n._paused}for(var r=0;r=0&&n._howls.splice(o,1);var a=!0;for(r=0;r=0){a=!1;break}return i&&a&&delete i[e._src],n.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,n,r){var o=this["_on"+e];return"function"==typeof t&&o.push(r?{id:n,fn:t,once:r}:{id:n,fn:t}),this},off:function(e,t,n){var r=this,o=r["_on"+e],i=0;if("number"==typeof t&&(n=t,t=null),t||n)for(i=0;i=0;i--)o[i].id&&o[i].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,n)}.bind(r,o[i].fn),0),o[i].once&&r.off(e,o[i].fn,o[i].id));return r._loadQueue(e),r},_loadQueue:function(e){var t=this;if(t._queue.length>0){var n=t._queue[0];n.event===e&&(t._queue.shift(),t._loadQueue()),e||n.action()}return t},_ended:function(e){var t=this,r=e._sprite;if(!t._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;r--){if(n<=t)return;e._sounds[r]._ended&&(e._webAudio&&e._sounds[r]._node&&e._sounds[r]._node.disconnect(0),e._sounds.splice(r,1),n--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],n=0;n=0;if(!e.bufferSource)return this;if(n._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),t))try{e.bufferSource.buffer=n._scratchBuffer}catch(e){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(n._navigator&&n._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var o=function(e){this._parent=e,this.init()};o.prototype={init:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++n._counter,t._sounds.push(e),e.create(),e},create:function(){var e=this,t=e._parent,r=n._muted||e._muted||e._parent._muted?0:e._volume;return t._webAudio?(e._node=void 0===n.ctx.createGain?n.ctx.createGainNode():n.ctx.createGain(),e._node.gain.setValueAtTime(r,n.ctx.currentTime),e._node.paused=!0,e._node.connect(n.masterGain)):n.noAudio||(e._node=n._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(n._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=t._src,e._node.preload=!0===t._preload?"auto":t._preload,e._node.volume=r*n.volume(),e._node.load()),e},reset:function(){var e=this,t=e._parent;return e._muted=t._muted,e._loop=t._loop,e._volume=t._volume,e._rate=t._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++n._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,t=e._parent;t._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(t._sprite).length&&(t._sprite={__default:[0,1e3*t._duration]}),"loaded"!==t._state&&(t._state="loaded",t._emit("load"),t._loadQueue()),e._node.removeEventListener(n._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var i={},a=function(e){var t=e._src;if(i[t])return e._duration=i[t].duration,void d(e);if(/^data:[^;]+;base64,/.test(t)){for(var n=atob(t.split(",")[1]),r=new Uint8Array(n.length),o=0;o0?(i[t._src]=e,d(t,e)):r()};"undefined"!=typeof Promise&&1===n.ctx.decodeAudioData.length?n.ctx.decodeAudioData(e).then(o).catch(r):n.ctx.decodeAudioData(e,o,r)},d=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},u=function(){if(n.usingWebAudio){try{"undefined"!=typeof AudioContext?n.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?n.ctx=new webkitAudioContext:n.usingWebAudio=!1}catch(e){n.usingWebAudio=!1}n.ctx||(n.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(n._navigator&&n._navigator.platform),t=n._navigator&&n._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),r=t?parseInt(t[1],10):null;if(e&&r&&r<9){var o=/safari/.test(n._navigator&&n._navigator.userAgent.toLowerCase());n._navigator&&!o&&(n.usingWebAudio=!1)}n.usingWebAudio&&(n.masterGain=void 0===n.ctx.createGain?n.ctx.createGainNode():n.ctx.createGain(),n.masterGain.gain.setValueAtTime(n._muted?0:n._volume,n.ctx.currentTime),n.masterGain.connect(n.ctx.destination)),n._setup()}};!function(e,t,n,r){var o;e.prototype._pos=[0,0,0],e.prototype._orientation=[0,0,-1,0,1,0],e.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var n=t._howls.length-1;n>=0;n--)t._howls[n].stereo(e);return t},e.prototype.pos=function(e,n,r){var o=this;return o.ctx&&o.ctx.listener?(n="number"!=typeof n?o._pos[1]:n,r="number"!=typeof r?o._pos[2]:r,"number"!=typeof e?o._pos:(o._pos=[e,n,r],void 0!==o.ctx.listener.positionX?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],t.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],t.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],t.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]),o)):o},e.prototype.orientation=function(e,n,r,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var _=s._orientation;return n="number"!=typeof n?_[1]:n,r="number"!=typeof r?_[2]:r,o="number"!=typeof o?_[3]:o,i="number"!=typeof i?_[4]:i,a="number"!=typeof a?_[5]:a,"number"!=typeof e?_:(s._orientation=[e,n,r,o,i,a],void 0!==s.ctx.listener.forwardX?(s.ctx.listener.forwardX.setTargetAtTime(e,t.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(n,t.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(r,t.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,t.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,t.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,t.ctx.currentTime,.1)):s.ctx.listener.setOrientation(e,n,r,o,i,a),s)},n.prototype.init=(o=n.prototype.init,function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],o.call(this,e)}),n.prototype.stereo=function(e,n){var r=this;if(!r._webAudio)return r;if("loaded"!==r._state)return r._queue.push({event:"stereo",action:function(){r.stereo(e,n)}}),r;var o=void 0===t.ctx.createStereoPanner?"spatial":"stereo";if(void 0===n){if("number"!=typeof e)return r._stereo;r._stereo=e,r._pos=[e,0,0]}for(var a=r._getSoundIds(n),s=0;s{let e=!1;if(E)try{(await m.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===f.browser&&f.version>66||"Safari"===f.browser&&f.version>13||"OPR"===f.browser&&f.version>43||"Edge"===f.browser&&f.version;const I=(()=>{if(!c&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})(),T=" is not allowed to change after `createInstance` or `loadWasm` is called.",D=!c&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",S=!c&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",C=e=>{if(null==e)e=[];else{e=e instanceof Array?[...e]:[e];for(let t=0;te&&"object"==typeof e&&"function"==typeof e.then;const w="iPhone"==f.OS||"Android"==f.OS||"HarmonyOS"==f.OS?2048:4096;class b{constructor(){this._instanceID=void 0,this._ifSaveOriginalImageInACanvas=!1,this.oriCanvas=null,this.oriCanvasData=null,this.canvas=null,this.bFilterRegionInJs=!1,this._region=null,this._timeStartDecode=null,this._timeEnterInnerDBR=null,this._timeGetMessage=null,this.decodeRecords={},this.bDestroyed=!1,this._lastErrorCode=0,this._lastErrorString="",this._lastInnerDecodeDuration=0,this.intervalTime=0,this._intervalGetVideoFrame=0,this.array_getFrameTimeCost=[],this.array_decodeFrameTimeCost=[],this._indexCurrentDecodingFrame=0,this._bPauseScan=!1,this._intervalDetectVideoPause=1e3,this._soundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",this.beepSound=new r({src:["data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=w,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`license`"+T);n._license=t})(b,e)}static get productKeys(){return this._license}static set productKeys(e){b.license=e}static get handshakeCode(){return this._license}static set handshakeCode(e){b.license=e}static get organizationID(){return this._license}static set organizationID(e){b.license=e}static set sessionPassword(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`sessionPassword`"+T);n._sessionPassword=t})(b,e)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:g,worker:p,getUserMedia:E,camera:await R(),browser:f.browser,version:f.version,OS:f.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(e){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");b._engineResourcePath=(e=>{if(null==e&&(e="./"),!c){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`licenseServer`"+T);n._licenseServer=C(t)})(b,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+T);n._deviceFriendlyName=t||""})(b,e)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(e){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");b.__bUseFullFeature=e}static isImageSource(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"getImage"in e}static isDSImage(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("width"in e&&("height"in e&&"pixelFormat"in e)))}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("region"in e&&("sx"in e&&("sy"in e&&("width"in e&&("height"in e&&("colorMode"in e&&("timeSpent"in e&&("timeStamp"in e&&("isCropped"in e&&("toCanvas"in e&&("_sWidth"in e&&("_sHeight"in e&&"_bUseWebGL"in e)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(e){this._region=e,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var e;return null===(e=b._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",b.engineResourcePath)}static set defaultUIElementURL(e){b._defaultUIElementURL=e}static _fireHTTPSWarnning(){b.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{b.onWarning&&b.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new r({src:[this._soundSource],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(e){this.bPlaySoundOnSuccessfulRead="never"!==e&&e}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(e){this.bVibrateOnSuccessfulRead="never"!==e&&e}set dce(e){this._dce=e}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(e){this._maxCvsSideLength=e,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",e)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;b._onLog&&b._onLog("_registerDCEControler()");const e=this.dce;this._dceControler=e._createControler();const t=this._dceControler;t.register(this),t.setDisiredValue(this,"refreshInterval",200),t.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}const n=e.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{n?n===t._innerSetUI&&(await e.setUIElement(`${r.engineResourcePath}dce.ui.html`),t._innerSetUI=e.getUIElement()):(await e.setUIElement(`${r.engineResourcePath}dbr.ui.html`),t._innerSetUI=e.getUIElement())}catch(t){await e.setUIElement(r.defaultUIElementURL)}else n||await e.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async e=>{let t=await this._decode_DCEFrame(e,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onImageRead(e)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));const{sx:n,sy:r,width:o,height:i,_sWidth:a,_sHeight:s}=e;b.recalculateResultLocation(t,n,r,a,s,o,i),this._drawResults(t)},e.on("cameraChange",this.callbackCameraChange),e.on("resolutionChange",this.callbackResolutionChange),e.on("cameraClose",this.callbackCameraClose),e.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(b._onLog&&b._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(e,t){if(null==e)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(e&&e.isCameraEnhancer)this.dce=e,await this._registerDCEControler(),this._imgSource=null;else{if(!b.isImageSource(e))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=e}t&&t.resultsHighlightBaseShapes&&(this._drawingItemNamespace=t.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:e,l:t,ls:n,sp:r,rmk:o}=(e=>{const t=e;if(t._pLoad.isEmpty){let e,n,r=t._license||"",o=JSON.parse(JSON.stringify(t._licenseServer)),i=t._sessionPassword,a=0;if(r.startsWith("t")||r.startsWith("f"))a=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))a=1;else{a=2;const t=r.indexOf(":");if(-1!=t&&(r=r.substring(t+1)),r.startsWith("DLS2")){let t=r.substring(4);try{t=atob(t)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const n=JSON.parse(t);if(r=n.handshakeCode?n.handshakeCode:n.organizationID?n.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===o.length){let e=[];n.mainServerURL&&(e[0]=n.mainServerURL),n.standbyServerURL&&(e[1]=n.standbyServerURL),o=C(e)}!i&&n.sessionPassword&&(i=n.sessionPassword),e=n.remark}("200001"===r||r.startsWith("200001-"))&&(o&&o.length||(r="")),r||(a=1)}if(a&&(globalThis.crypto||(n="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(n="Require https to use online key in this browser.")),n){if(1!==a)throw new Error(n);a=0,console.warn(n),t._lastErrorCode=-1,t._lastErrorString=n}return 1===a&&(r="",console.warn("Applying for a public trial license ...")),{lt:a,l:r,ls:o,sp:i,rmk:e}}throw new Error("Can't preprocess license again"+T)})(b);this._pLoad.task=async(i,a)=>{let s=b.engineResourcePath+b._workerName;b.engineResourcePath.startsWith(location.origin)||(s=await fetch(s).then((e=>e.blob())).then((e=>URL.createObjectURL(e)))),b._dbrWorker=new Worker(s),b._dbrWorker.onerror=e=>{let t=new Error(e.message);a(t)},b._dbrWorker.onmessage=async t=>{let n=t.data?t.data:t;switch(n.type){case"log":b._onLog&&b._onLog(n.message);break;case"load":{n.message&&(n.message=n.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let t,r=!1;1===e&&(r=!0),n.success?(b._dbrWorker.onerror=null,b._version=n.version+"(JS "+b._jsVersion+"."+b._jsEditVersion+")",b._onLog&&b._onLog("load dbr worker success"),n.message&&console.warn(n.message)):(t=new Error(n.message),t.stack=n.stack+"\n"+t.stack,r||111==n.ltsErrorCode&&-1!=n.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&b.showDialog(n.success?"warn":"error",n.message),n.success?i():a(t);break}case"task":{let e=n.id,t=n.body;try{b._taskCallbackMap.get(e)(t),b._taskCallbackMap.delete(e)}catch(t){throw b._taskCallbackMap.delete(e),t}break}default:b._onLog&&b._onLog(t)}},b._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:b.engineResourcePath,bUseFullFeature:b._bUseFullFeature,bd:b._bWasmDebug,v:b._jsVersion,brtk:!!e,bptk:1===e,l:t,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:f,fn:b.deviceFriendlyName,ls:n,sp:r,rmk:o})}}await this._pLoad}static async showDialog(e,t){await(async(e,t,n)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let o=await r.text();if(!o.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let i=document.createElement("div");i.innerHTML=o;let a=[];for(let e=0;e{if(e==t.target){s.remove();for(let e of a)e.remove()}}));else if(!d&&e.classList.contains("dls-license-icon-close"))d=e,e.addEventListener("click",(()=>{s.remove();for(let e of a)e.remove()}));else if(!u&&e.classList.contains("dls-license-icon-error"))u=e,"error"!=t&&e.remove();else if(!c&&e.classList.contains("dls-license-icon-warn"))c=e,"warn"!=t&&e.remove();else if(!l&&e.classList.contains("dls-license-msg-content")){l=e;let t=n;for(;t;){let n=t.indexOf("["),r=t.indexOf("]",n),o=t.indexOf("(",r),i=t.indexOf(")",o);if(-1==n||-1==r||-1==o||-1==i){e.appendChild(new Text(t));break}n>0&&e.appendChild(new Text(t.substring(0,n)));let a=document.createElement("a"),s=t.substring(n+1,r);a.innerText=s;let _=t.substring(o+1,i);a.setAttribute("href",_),a.setAttribute("target","_blank"),e.appendChild(a),t=t.substring(i+1)}}document.body.appendChild(s)}catch(t){e._onLog&&e._onLog(t.message||t)}})(this,e,t)}static async createInstanceInWorker(e=!1){return await b.loadWasm(),await new Promise(((t,n)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success)return t(e.instanceID);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),b._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:e})}))}static async createInstance(){let e=new b;return e._instanceID=await b.createInstanceInWorker(),b._fireHTTPSWarnning(),e}async clearMapDecodeRecord(){return await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success)return e();{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:n,instanceID:this._instanceID})}))}async decode(e){b._onLog&&b._onLog("decode(source: any)"),b._onLog&&(this._timeStartDecode=Date.now());{let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),e instanceof Blob?await this._decode_Blob(e,t):e instanceof ArrayBuffer?await this._decode_ArrayBuffer(e,t):e instanceof Uint8Array||e instanceof Uint8ClampedArray?await this._decode_Uint8Array(e,t):e instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?await this._decode_Image(e,t):e instanceof HTMLCanvasElement?await this._decode_Canvas(e,t):e instanceof HTMLVideoElement?await this._decode_Video(e,t):"string"==typeof e?"data:image/"==e.substring(0,11)?await this._decode_Base64(e,t):await this._decode_Url(e,t):b.isDCEFrame(e)?(t.bCopyData=!0,await this._decode_DCEFrame(e,t)):b.isDSImage(e)?(t.bCopyData=!0,await this._decode_DSImage(e,t)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(e,t)}async decodeUrl(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(e,t)}async _decodeBuffer_Uint8Array(e,t,n,r,o,i){return await new Promise(((a,s)=>{let _=b._nextTaskID++;b._taskCallbackMap.set(_,(e=>{if(e.success){let t,n=b._onLog?Date.now():0;b._onLog&&b._onLog("worker return result: "+n),this._lastInnerDecodeDuration=e.duration;try{t=this._handleRetJsonString(e.decodeReturn)}catch(e){return s(e)}if(b._onLog){let e=Date.now();b._onLog("DBR time get result: "+n),b._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),b._onLog("DBR worker decode image cost: "+(n-this._timeEnterInnerDBR)),b._onLog("DBR worker handle results: "+(e-n)),b._onLog("Total decode image cost: "+(e-this._timeStartDecode))}return a(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,s(t)}})),this._timeEnterInnerDBR=Date.now(),b._onLog&&b._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),b._dbrWorker.postMessage({type:"decodeBuffer",id:_,instanceID:this._instanceID,body:{buffer:e,width:t,height:n,stride:r,format:o,config:i}},[e.buffer]),b._onLog&&i&&i.timeStamp&&b._onLog("decode image delay: "+(this._timeEnterInnerDBR-i.timeStamp))}))}async _decodeBuffer_Blob(e,t,n,r,o,i){b._onLog&&b._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const a=e.arrayBuffer?await e.arrayBuffer():await new Promise(((t,n)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onload=()=>{t(r.result)},r.onerror=()=>{n(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(a),t,n,r,o,i)}async decodeBuffer(e,t,n,r,o,i){let a;return b._onLog&&b._onLog("decodeBuffer(buffer,width,height,stride,format)"),b._onLog&&(this._timeStartDecode=Date.now()),e instanceof Uint8Array||e instanceof Uint8ClampedArray?a=await this._decodeBuffer_Uint8Array(e,t,n,r,o,i):e instanceof ArrayBuffer?a=await this._decodeBuffer_Uint8Array(new Uint8Array(e),t,n,r,o,i):e instanceof Blob&&(a=await this._decodeBuffer_Blob(e,t,n,r,o,i)),a}async _decodeFileInMemory_Uint8Array(e){return await new Promise(((t,n)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success){let r;this._lastInnerDecodeDuration=e.duration;try{r=this._handleRetJsonString(e.decodeReturn)}catch(e){return n(e)}return t(r)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),b._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:e}})}))}async getRuntimeSettings(){return await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success){let t=JSON.parse(n.results);return null!=this.userDefinedRegion&&(t.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),e(t)}{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"getRuntimeSettings",id:n,instanceID:this._instanceID})}))}async updateRuntimeSettings(t){let n;if("string"==typeof t)if("speed"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region,n.deblurLevel=3,n.expectedBarcodesCount=0,n.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region,n.deblurLevel=5,n.expectedBarcodesCount=512,n.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region}else if("dense"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region,n.deblurLevel=9,n.expectedBarcodesCount=0,n.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==t){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,n=await this.getRuntimeSettings(),n.barcodeFormatIds=e.barcodeFormatIds,n.barcodeFormatIds_2=e.barcodeFormatIds_2,n.region=e.region,n.deblurLevel=3,n.expectedBarcodesCount=0,n.localizationModes=[2,8,0,0,0,0,0,0]}else n=JSON.parse(t);else{if("object"!=typeof t)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(n=JSON.parse(JSON.stringify(t)),n.region instanceof Array){let e=n.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(n.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!b._bUseFullFeature){if(0!=(n.barcodeFormatIds&~(e.EnumBarcodeFormat.BF_ONED|e.EnumBarcodeFormat.BF_QR_CODE|e.EnumBarcodeFormat.BF_PDF417|e.EnumBarcodeFormat.BF_DATAMATRIX))||0!=n.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=n.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let e=n.region;if(e instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(e)),(e.regionLeft||e.regionTop||e.regionRight||e.regionBottom||e.regionMeasuredByPercentage)&&(e.regionLeft||e.regionTop||100!=e.regionRight||100!=e.regionBottom||!e.regionMeasuredByPercentage)?this.region=e:this.region=null,n.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((e,t)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(n=>{if(n.success){try{this._handleRetJsonString(n.updateReturn)}catch(e){t(e)}return e()}{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(n)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=w,await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success)return e();{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"resetRuntimeSettings",id:n,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!b._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success)return e(n.results);{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:n,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(e){if(!b._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof e)e=e;else{if("object"!=typeof e)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");e=JSON.stringify(e)}return await new Promise(((t,n)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.initReturn)}catch(e){n(e)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),b._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:e}})}))}async _decode_Blob(e,t){b._onLog&&b._onLog("_decode_Blob(blob: Blob)");let n=null,r=null;if("undefined"!=typeof createImageBitmap)try{n=await createImageBitmap(e)}catch(e){}n||(r=await function(e){return new Promise(((t,n)=>{let r=URL.createObjectURL(e),o=new Image;o.dbrObjUrl=r,o.src=r,o.onload=()=>{t(o)},o.onerror=e=>{n(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}}))}(e));let o=await this._decode_Image(n||r,t);return n&&n.close(),o}async _decode_ArrayBuffer(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Uint8Array(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Image(e,t){b._onLog&&b._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),t=t||{};let n,r,o=e instanceof HTMLImageElement?e.naturalWidth:e.width,i=e instanceof HTMLImageElement?e.naturalHeight:e.height,a=Math.max(o,i);if(a>this._maxCvsSideLength){let e=this._maxCvsSideLength/a;n=Math.round(o*e),r=Math.round(i*e)}else n=o,r=i;this.canvas||(this.canvas=document.createElement("canvas"));const s=this.canvas;s.width===n&&s.height===r||(s.width=n,s.height=r),s.ctx2d||(s.ctx2d=s.getContext("2d"));return s.ctx2d.drawImage(e,0,0,o,i,0,0,n,r),e.dbrObjUrl&&URL.revokeObjectURL(e.dbrObjUrl),await this._decode_Canvas(s,t)}async _decode_Canvas(t,n){if(b._onLog&&b._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if(0===t.width||0===t.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=t,this.oriCanvasData=null);let r=(t.ctx2d||t.getContext("2d")).getImageData(0,0,t.width,t.height).data;return await this._decodeBuffer_Uint8Array(r,t.width,t.height,4*t.width,e.EnumImagePixelFormat.IPF_ABGR_8888,n)}async _decode_Video(e,t){if(b._onLog&&b._onLog("_decode_Video(video)"),!(e instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";t=t||{};let n,r,o=e.videoWidth,i=e.videoHeight,a=Math.max(o,i);if(a>this._maxCvsSideLength){let e=this._maxCvsSideLength/a;n=Math.round(o*e),r=Math.round(i*e)}else n=o,r=i;this.canvas||(this.canvas=document.createElement("canvas"));const s=this.canvas;s.width===n&&s.height===r||(s.width=n,s.height=r),s.ctx2d||(s.ctx2d=s.getContext("2d"));return s.ctx2d.drawImage(e,0,0,o,i,0,0,n,r),await this._decode_Canvas(s,t)}async _decode_DCEFrame(t,n){if(b._onLog&&b._onLog("_decode_DCEFrame(dceFrame)"),!b.isDCEFrame(t))return[];let r=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,colorMode:t.colorMode,data:new Uint8Array(t.data),toCanvas:t.toCanvas});const{width:o,height:i,colorMode:a,timeStamp:s}=t;let _;_=n&&n.bCopyData?new Uint8Array(t.data):t.data;let d=null;if(n?(d=JSON.parse(JSON.stringify(n)),d.timeStamp=s):d={timeStamp:s},"grey"===a)r=await this._decodeBuffer_Uint8Array(_,o,i,o,e.EnumImagePixelFormat.IPF_GrayScaled,d);else if("rgba"===a)r=await this._decodeBuffer_Uint8Array(_,o,i,4*o,e.EnumImagePixelFormat.IPF_ABGR_8888,d);else{if("bgra"!==a)throw new Error(`Color mode '${a}' is not supported to decode.`);r=await this._decodeBuffer_Uint8Array(_,o,i,4*o,e.EnumImagePixelFormat.IPF_ARGB_8888,d)}return r}async _decode_DSImage(t,n){if(b._onLog&&b._onLog("_decode_DSImage(dsImage)"),!b.isDSImage(t))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:t.width,height:t.height,pixelFormat:t.pixelFormat.toLowerCase(),data:new Uint8Array(t.data),toCanvas:function(){const e=document.createElement("canvas");let t;switch(e.width=this.width,e.height=this.height,this.pixelFormat){case"grey":t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;e{let r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{t(r.response)},r.onerror=()=>{n(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(n,t)}}async _decode_FilePath(e,t){throw b._onLog&&b._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(e,t,n,r,o,i,a){if(e.length>0)for(let s of e){let e=s.localizationResult;2==e.resultCoordinateType&&(e.x1*=.01*i,e.x2*=.01*i,e.x3*=.01*i,e.x4*=.01*i,e.y1*=.01*a,e.y2*=.01*a,e.y3*=.01*a,e.y4*=.01*a);let _=i/r,d=a/o;e.x1=e.x1/_+t,e.x2=e.x2/_+t,e.x3=e.x3/_+t,e.x4=e.x4/_+t,e.y1=e.y1/d+n,e.y2=e.y2/d+n,e.y3=e.y3/d+n,e.y4=e.y4/d+n,2==e.resultCoordinateType&&(e.x1*=100/r,e.x2*=100/r,e.x3*=100/r,e.x4*=100/r,e.y1*=100/o,e.y2*=100/o,e.y3*=100/o,e.y4*=100/o)}}static BarcodeReaderException(t,n){let r,o=e.EnumErrorCode.DBR_UNKNOWN;return"number"==typeof t?(o=t,r=new Error(n)):r=new Error(t),r.code=o,r}_handleRetJsonString(t){let n=e.EnumErrorCode;if(t.textResults){for(let e=0;e{let n=t.indexOf(":");e[t.substring(0,n)]=t.substring(n+1)})),n.exception=e}}return t.decodeRecords?this.decodeRecords=t.decodeRecords:this.decodeRecords={},this._lastErrorCode=t.exception,this._lastErrorString=t.description,t.exception&&!b._setWarnnedEx.has(t.description)&&(b._setWarnnedEx.add(t.description),console.warn(t.description)),t.textResults}if(t.exception==n.DBR_SUCCESS)return t.data;throw b.BarcodeReaderException(t.exception,t.description)}async setModeArgument(e,t,n,r){return await new Promise(((o,i)=>{let a=b._nextTaskID++;b._taskCallbackMap.set(a,(e=>{if(e.success){try{this._handleRetJsonString(e.setReturn)}catch(e){return i(e)}return o()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),b._dbrWorker.postMessage({type:"setModeArgument",id:a,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:n,argumentValue:r}})}))}async getModeArgument(e,t,n){return await new Promise(((r,o)=>{let i=b._nextTaskID++;b._taskCallbackMap.set(i,(e=>{if(e.success){let t;try{t=this._handleRetJsonString(e.getReturn)}catch(e){return o(e)}return r(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,o(t)}})),b._dbrWorker.postMessage({type:"getModeArgument",id:i,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:n}})}))}async getIntermediateResults(){return await new Promise(((e,t)=>{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success)return e(n.results);{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),b._dbrWorker.postMessage({type:"getIntermediateResults",id:n,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let t=await this.getIntermediateResults(),n=[];for(let r of t)if(r.dataType==e.EnumIMResultDataType.IMRDT_IMAGE)for(let t of r.results){const r=t.bytes;let o;switch(b._onLog&&b._onLog(" "+r.length+" "+r.byteLength+" "+t.width+" "+t.height+" "+t.stride+" "+t.format),t.format){case e.EnumImagePixelFormat.IPF_ABGR_8888:o=new Uint8ClampedArray(r);break;case e.EnumImagePixelFormat.IPF_RGB_888:{const e=r.length/3;o=new Uint8ClampedArray(4*e);for(let t=0;t{let n=b._nextTaskID++;b._taskCallbackMap.set(n,(n=>{if(n.success){let t=n.results;return t.intervalTime=this.intervalTime,t.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,t.soundOnSuccessfullRead=this.soundSource,t.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,t.vibrateDuration=this.vibrateDuration,t.captureAndDecodeInParallel=this.captureAndDecodeInParallel,e(t)}{let e=new Error(n.message);return e.stack+="\n"+n.stack,t(e)}})),b._dbrWorker.postMessage({type:"getScanSettings",id:n,instanceID:this._instanceID})}))}async updateScanSettings(e){if(!e)return;const t=JSON.parse(JSON.stringify(e));return t.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(t.intervalTime,0),delete t.intervalTime),t.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=t.whenToPlaySoundforSuccessfulRead,delete t.whenToPlaySoundforSuccessfulRead),t.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=t.soundOnSuccessfullRead,delete t.soundOnSuccessfullRead),t.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=t.whenToVibrateforSuccessfulRead,delete t.whenToVibrateforSuccessfulRead),t.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=t.vibrateDuration,delete t.vibrateDuration),t.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=t.captureAndDecodeInParallel,delete t.captureAndDecodeInParallel),await new Promise(((e,n)=>{let r=b._nextTaskID++;b._taskCallbackMap.set(r,(t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack+="\n"+t.stack,n(e)}})),b._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:t}})}))}_cloneDecodeResults(e){if(e instanceof Array){let t=[];for(let n of e)t.push(this._cloneDecodeResults(n));return t}{let t=e;return JSON.parse(JSON.stringify(t,((e,t)=>"oriVideoCanvas"==e||"searchRegionCanvas"==e?void 0:t)))}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return b._onLog&&b._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));b._onLog&&b._onLog("======= once read ======="),b._onLog&&(this._timeStartDecode=Date.now());let e=null,t=null;if(this.dce)e=this._getVideoFrame();else if(this._imgSource&&(t=await this._imgSource.getImage(),!b.isDSImage(t)))throw new Error("Invalid DSImage.");if(!e&&!t)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let n=[];if(e){n=await this._decode_DCEFrame(e,{bScanner:!0,bCopyData:!1});let t=null;if(n&&n.length){const{sx:r,sy:o,width:i,height:a,_sWidth:s,_sHeight:_}=e;t=n.map((e=>({localizationResult:JSON.parse(JSON.stringify(e.localizationResult))}))),b.recalculateResultLocation(t,r,o,s,_,i,a)}this._drawResults(t)}else t&&(n=await this._decode_DSImage(t,{bScanner:!0,bCopyData:!1}));return n})().then((e=>{if(b._onLog&&b._onLog(e),this.dce&&this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost;const n=()=>{let n=0;if(t&&t.length){let r=Math.min(...e),o=Math.max(...t);r&&o&&(n=r-o)}else n=0;return n>0?n:0};(()=>{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=n()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let n of e)if(0==n.resultState){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let n of e)if(0==n.resultState){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onImageRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultState&&1!=e.resultState||this.onImageRead(t);this.onImageRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultState&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),b._onLog&&b._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;e=this.dce.getFrameFromBuffer();const t=e=>{if(!e)return;let t=e.timeSpent,n=this.array_getFrameTimeCost;for(;n.length>=5;)n.shift();n.push(t)};t(e)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),e=this.dce.getFrame();return e}_drawResults(e){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const t=this._dbrDrawingLayer;if(t.clearDrawingItems(),e&&e.length)for(let n of e){const e=n.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:e.x1,y:e.y1},{x:e.x2,y:e.y2},{x:e.x3,y:e.y3},{x:e.x4,y:e.y4}]);t.addDrawingItem(r)}}async startScanning(e){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let t=null;return this.dce&&(this.dce.isOpen()?(e&&this.dce.appendAndShowUI(),t=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):t=await this.dce.open(e),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),t):void 0}stopScanning(e){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",e))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(e){if(e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(b._onLog&&b._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let e=b._nextTaskID++;b._taskCallbackMap.set(e,(e=>{if(!e.success){let t=new Error(e.message);throw t.stack=e.stack+"\n"+t.stack,t}})),b._dbrWorker.postMessage({type:"destroyContext",id:e,instanceID:this._instanceID})}}var B,N,P,F,V,x,k,U,G,H,K,W,Y,Q,J,X,Z,j,q,$,z,ee,te,ne,re,oe,ie;b._jsVersion="9.2.12",b._jsEditVersion="20220727",b._version=`loading...(JS ${b._jsVersion}.${b._jsEditVersion})`,b._license=D,b._sessionPassword=S,b.browserInfo=f,b._workerName=`dbr-${b._jsVersion}.browser.worker.js`,b._engineResourcePath=I,b._licenseServer=[],b._deviceFriendlyName="",b._isShowRelDecodeTimeInResults=!1,b._bWasmDebug=!1,b._bNeverShowDialog=!1,b.__bUseFullFeature=!0,b._nextTaskID=0,b._taskCallbackMap=new Map,b._pLoad=new class extends Promise{constructor(e){let t,n;super(((e,r)=>{t=e,n=r})),this._s="pending",this.resolve=e=>{this.isPending&&(L(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",n(e))},this.task=e}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,L(e)?t=e:"function"==typeof e&&(t=new Promise(e)),t&&(async()=>{try{const n=await t;e===this._task&&this.resolve(n)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}},b._lastErrorCode=0,b._lastErrorString="",b._setWarnnedEx=new Set,b._defaultUIElementURL="@engineResourcePath/dbr.ui.html",e.EnumBarcodeColourMode=void 0,(B=e.EnumBarcodeColourMode||(e.EnumBarcodeColourMode={}))[B.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",B[B.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",B[B.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",B[B.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",B[B.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",B[B.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",B[B.BICM_SKIP=0]="BICM_SKIP",B[B.BICM_REV=2147483648]="BICM_REV",e.EnumBarcodeComplementMode=void 0,(N=e.EnumBarcodeComplementMode||(e.EnumBarcodeComplementMode={}))[N.BCM_AUTO=1]="BCM_AUTO",N[N.BCM_GENERAL=2]="BCM_GENERAL",N[N.BCM_SKIP=0]="BCM_SKIP",N[N.BCM_REV=2147483648]="BCM_REV",e.EnumBarcodeFormat_2=void 0,(P=e.EnumBarcodeFormat_2||(e.EnumBarcodeFormat_2={}))[P.BF2_NULL=0]="BF2_NULL",P[P.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",P[P.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",P[P.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",P[P.BF2_POSTNET=2097152]="BF2_POSTNET",P[P.BF2_PLANET=4194304]="BF2_PLANET",P[P.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",P[P.BF2_RM4SCC=16777216]="BF2_RM4SCC",P[P.BF2_DOTCODE=2]="BF2_DOTCODE",P[P.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",P[P.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",P[P.BF2_PHARMACODE=12]="BF2_PHARMACODE",e.EnumBinarizationMode=void 0,(F=e.EnumBinarizationMode||(e.EnumBinarizationMode={}))[F.BM_AUTO=1]="BM_AUTO",F[F.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",F[F.BM_SKIP=0]="BM_SKIP",F[F.BM_THRESHOLD=4]="BM_THRESHOLD",F[F.BM_REV=2147483648]="BM_REV",e.EnumClarityCalculationMethod=void 0,(V=e.EnumClarityCalculationMethod||(e.EnumClarityCalculationMethod={}))[V.ECCM_CONTRAST=1]="ECCM_CONTRAST",e.EnumClarityFilterMode=void 0,(x=e.EnumClarityFilterMode||(e.EnumClarityFilterMode={}))[x.CFM_GENERAL=1]="CFM_GENERAL",e.EnumColourClusteringMode=void 0,(k=e.EnumColourClusteringMode||(e.EnumColourClusteringMode={}))[k.CCM_AUTO=1]="CCM_AUTO",k[k.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",k[k.CCM_SKIP=0]="CCM_SKIP",k[k.CCM_REV=2147483648]="CCM_REV",e.EnumColourConversionMode=void 0,(U=e.EnumColourConversionMode||(e.EnumColourConversionMode={}))[U.CICM_GENERAL=1]="CICM_GENERAL",U[U.CICM_SKIP=0]="CICM_SKIP",U[U.CICM_REV=2147483648]="CICM_REV",e.EnumConflictMode=void 0,(G=e.EnumConflictMode||(e.EnumConflictMode={}))[G.CM_IGNORE=1]="CM_IGNORE",G[G.CM_OVERWRITE=2]="CM_OVERWRITE",e.EnumDeblurMode=void 0,(H=e.EnumDeblurMode||(e.EnumDeblurMode={}))[H.DM_SKIP=0]="DM_SKIP",H[H.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",H[H.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",H[H.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",H[H.DM_SMOOTHING=8]="DM_SMOOTHING",H[H.DM_MORPHING=16]="DM_MORPHING",H[H.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",H[H.DM_SHARPENING=64]="DM_SHARPENING",H[H.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",H[H.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",e.EnumDeformationResistingMode=void 0,(K=e.EnumDeformationResistingMode||(e.EnumDeformationResistingMode={}))[K.DRM_AUTO=1]="DRM_AUTO",K[K.DRM_GENERAL=2]="DRM_GENERAL",K[K.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",K[K.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",K[K.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",K[K.DRM_SKIP=0]="DRM_SKIP",K[K.DRM_REV=2147483648]="DRM_REV",e.EnumDPMCodeReadingMode=void 0,(W=e.EnumDPMCodeReadingMode||(e.EnumDPMCodeReadingMode={}))[W.DPMCRM_AUTO=1]="DPMCRM_AUTO",W[W.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",W[W.DPMCRM_SKIP=0]="DPMCRM_SKIP",W[W.DPMCRM_REV=2147483648]="DPMCRM_REV",e.EnumGrayscaleTransformationMode=void 0,(Y=e.EnumGrayscaleTransformationMode||(e.EnumGrayscaleTransformationMode={}))[Y.GTM_INVERTED=1]="GTM_INVERTED",Y[Y.GTM_ORIGINAL=2]="GTM_ORIGINAL",Y[Y.GTM_SKIP=0]="GTM_SKIP",Y[Y.GTM_REV=2147483648]="GTM_REV",e.EnumImagePreprocessingMode=void 0,(Q=e.EnumImagePreprocessingMode||(e.EnumImagePreprocessingMode={}))[Q.IPM_AUTO=1]="IPM_AUTO",Q[Q.IPM_GENERAL=2]="IPM_GENERAL",Q[Q.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",Q[Q.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",Q[Q.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",Q[Q.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",Q[Q.IPM_SKIP=0]="IPM_SKIP",Q[Q.IPM_REV=2147483648]="IPM_REV",e.EnumIntermediateResultSavingMode=void 0,(J=e.EnumIntermediateResultSavingMode||(e.EnumIntermediateResultSavingMode={}))[J.IRSM_MEMORY=1]="IRSM_MEMORY",J[J.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",J[J.IRSM_BOTH=4]="IRSM_BOTH",e.EnumIntermediateResultType=void 0,(X=e.EnumIntermediateResultType||(e.EnumIntermediateResultType={}))[X.IRT_NO_RESULT=0]="IRT_NO_RESULT",X[X.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",X[X.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",X[X.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",X[X.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",X[X.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",X[X.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",X[X.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",X[X.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",X[X.IRT_CONTOUR=256]="IRT_CONTOUR",X[X.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",X[X.IRT_FORM=1024]="IRT_FORM",X[X.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",X[X.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",X[X.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL",e.EnumLocalizationMode=void 0,(Z=e.EnumLocalizationMode||(e.EnumLocalizationMode={}))[Z.LM_SKIP=0]="LM_SKIP",Z[Z.LM_AUTO=1]="LM_AUTO",Z[Z.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",Z[Z.LM_LINES=8]="LM_LINES",Z[Z.LM_STATISTICS=4]="LM_STATISTICS",Z[Z.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",Z[Z.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",Z[Z.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",Z[Z.LM_CENTRE=128]="LM_CENTRE",Z[Z.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",Z[Z.LM_REV=2147483648]="LM_REV",e.EnumPDFReadingMode=void 0,(j=e.EnumPDFReadingMode||(e.EnumPDFReadingMode={}))[j.PDFRM_RASTER=1]="PDFRM_RASTER",j[j.PDFRM_AUTO=2]="PDFRM_AUTO",j[j.PDFRM_VECTOR=4]="PDFRM_VECTOR",j[j.PDFRM_REV=2147483648]="PDFRM_REV",e.EnumQRCodeErrorCorrectionLevel=void 0,(q=e.EnumQRCodeErrorCorrectionLevel||(e.EnumQRCodeErrorCorrectionLevel={}))[q.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",q[q.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",q[q.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",q[q.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q",e.EnumRegionPredetectionMode=void 0,($=e.EnumRegionPredetectionMode||(e.EnumRegionPredetectionMode={}))[$.RPM_AUTO=1]="RPM_AUTO",$[$.RPM_GENERAL=2]="RPM_GENERAL",$[$.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",$[$.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",$[$.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",$[$.RPM_SKIP=0]="RPM_SKIP",$[$.RPM_REV=2147483648]="RPM_REV",e.EnumResultCoordinateType=void 0,(z=e.EnumResultCoordinateType||(e.EnumResultCoordinateType={}))[z.RCT_PIXEL=1]="RCT_PIXEL",z[z.RCT_PERCENTAGE=2]="RCT_PERCENTAGE",e.EnumResultType=void 0,(ee=e.EnumResultType||(e.EnumResultType={}))[ee.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",ee[ee.RT_RAW_TEXT=1]="RT_RAW_TEXT",ee[ee.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",ee[ee.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT",e.EnumScaleUpMode=void 0,(te=e.EnumScaleUpMode||(e.EnumScaleUpMode={}))[te.SUM_AUTO=1]="SUM_AUTO",te[te.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",te[te.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",te[te.SUM_SKIP=0]="SUM_SKIP",te[te.SUM_REV=2147483648]="SUM_REV",e.EnumTerminatePhase=void 0,(ne=e.EnumTerminatePhase||(e.EnumTerminatePhase={}))[ne.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",ne[ne.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",ne[ne.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",ne[ne.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",ne[ne.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",ne[ne.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED",e.EnumTextFilterMode=void 0,(re=e.EnumTextFilterMode||(e.EnumTextFilterMode={}))[re.TFM_AUTO=1]="TFM_AUTO",re[re.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",re[re.TFM_SKIP=0]="TFM_SKIP",re[re.TFM_REV=2147483648]="TFM_REV",e.EnumTextResultOrderMode=void 0,(oe=e.EnumTextResultOrderMode||(e.EnumTextResultOrderMode={}))[oe.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",oe[oe.TROM_POSITION=2]="TROM_POSITION",oe[oe.TROM_FORMAT=4]="TROM_FORMAT",oe[oe.TROM_SKIP=0]="TROM_SKIP",oe[oe.TROM_REV=2147483648]="TROM_REV",e.EnumTextureDetectionMode=void 0,(ie=e.EnumTextureDetectionMode||(e.EnumTextureDetectionMode={}))[ie.TDM_AUTO=1]="TDM_AUTO",ie[ie.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",ie[ie.TDM_SKIP=0]="TDM_SKIP",ie[ie.TDM_REV=2147483648]="TDM_REV",e.BarcodeReader=b,Object.defineProperty(e,"__esModule",{value:!0})})); diff --git a/dist/dbr.pure.mjs b/dist/dbr.pure.mjs index 73a145a..49ccf90 100644 --- a/dist/dbr.pure.mjs +++ b/dist/dbr.pure.mjs @@ -4,8 +4,8 @@ * @website http://www.dynamsoft.com * @copyright Copyright 2022, Dynamsoft Corporation * @author Dynamsoft - * @version 9.2.11 (js 20220727) + * @version 9.2.12 (js 20220727) * @fileoverview Dynamsoft JavaScript Library for Barcode Reader * More info on DBR JS: https://www.dynamsoft.com/barcode-reader/sdk-javascript/ */ -var e=function(){this.init()};e.prototype={init:function(){var e=this||t;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var n=this||t;if(e=parseFloat(e),n.ctx||d(),void 0!==e&&e>=0&&e<=1){if(n._volume=e,n._muted)return n;n.usingWebAudio&&n.masterGain.gain.setValueAtTime(e,t.ctx.currentTime);for(var r=0;r=0;n--)e._howls[n].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,d()),e},codecs:function(e){return(this||t)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||t;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||t,n=null;try{n="undefined"!=typeof Audio?new Audio:null}catch(t){return e}if(!n||"function"!=typeof n.canPlayType)return e;var r=n.canPlayType("audio/mpeg;").replace(/^no$/,""),o=e._navigator?e._navigator.userAgent:"",i=o.match(/OPR\/([0-6].)/g),a=i&&parseInt(i[0].split("/")[1],10)<33,s=-1!==o.indexOf("Safari")&&-1===o.indexOf("Chrome"),_=o.match(/Version\/(.*?) /),d=s&&_&&parseInt(_[1],10)<15;return e._codecs={mp3:!(a||!r&&!n.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!r,opus:!!n.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(n.canPlayType('audio/wav; codecs="1"')||n.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!n.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!n.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(n.canPlayType("audio/x-m4a;")||n.canPlayType("audio/m4a;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(n.canPlayType("audio/x-m4b;")||n.canPlayType("audio/m4b;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(n.canPlayType("audio/x-mp4;")||n.canPlayType("audio/mp4;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(d||!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(d||!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!n.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(n.canPlayType("audio/x-flac;")||n.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||t;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var n=function(t){for(;e._html5AudioPool.length0?s._seek:r._sprite[e][0]/1e3),c=Math.max(0,(r._sprite[e][0]+r._sprite[e][1])/1e3-d),u=1e3*c/Math.abs(s._rate),l=r._sprite[e][0]/1e3,h=(r._sprite[e][0]+r._sprite[e][1])/1e3;s._sprite=e,s._ended=!1;var A=function(){s._paused=!1,s._seek=d,s._start=l,s._stop=h,s._loop=!(!s._loop&&!r._sprite[e][2])};if(!(d>=h)){var f=s._node;if(r._webAudio){var g=function(){r._playLock=!1,A(),r._refreshBuffer(s);var e=s._muted||r._muted?0:s._volume;f.gain.setValueAtTime(e,t.ctx.currentTime),s._playStart=t.ctx.currentTime,void 0===f.bufferSource.start?s._loop?f.bufferSource.noteGrainOn(0,d,86400):f.bufferSource.noteGrainOn(0,d,c):s._loop?f.bufferSource.start(0,d,86400):f.bufferSource.start(0,d,c),u!==1/0&&(r._endTimers[s._id]=setTimeout(r._ended.bind(r,s),u)),n||setTimeout((function(){r._emit("play",s._id),r._loadQueue()}),0)};"running"===t.state&&"interrupted"!==t.ctx.state?g():(r._playLock=!0,r.once("resume",g),r._clearTimer(s._id))}else{var p=function(){f.currentTime=d,f.muted=s._muted||r._muted||t._muted||f.muted,f.volume=s._volume*t.volume(),f.playbackRate=s._rate;try{var o=f.play();if(o&&"undefined"!=typeof Promise&&(o instanceof Promise||"function"==typeof o.then)?(r._playLock=!0,A(),o.then((function(){r._playLock=!1,f._unlocked=!0,n?r._loadQueue():r._emit("play",s._id)})).catch((function(){r._playLock=!1,r._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),s._ended=!0,s._paused=!0}))):n||(r._playLock=!1,A(),r._emit("play",s._id)),f.playbackRate=s._rate,f.paused)return void r._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||s._loop?r._endTimers[s._id]=setTimeout(r._ended.bind(r,s),u):(r._endTimers[s._id]=function(){r._ended(s),f.removeEventListener("ended",r._endTimers[s._id],!1)},f.addEventListener("ended",r._endTimers[s._id],!1))}catch(e){r._emit("playerror",s._id,e)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===f.src&&(f.src=r._src,f.load());var m=window&&window.ejecta||!f.readyState&&t._navigator.isCocoonJS;if(f.readyState>=3||m)p();else{r._playLock=!0,r._state="loading";var R=function(){r._state="loaded",p(),f.removeEventListener(t._canPlayEvent,R,!1)};f.addEventListener(t._canPlayEvent,R,!1),r._clearTimer(s._id)}}return s._id}r._ended(s)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var n=t._getSoundIds(e),r=0;r=0?n=parseInt(i[0],10):e=parseFloat(i[0])}else i.length>=2&&(e=parseFloat(i[0]),n=parseInt(i[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(r=n?o._soundById(n):o._sounds[0])?r._volume:0;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"volume",action:function(){o.volume.apply(o,i)}}),o;void 0===n&&(o._volume=e),n=o._getSoundIds(n);for(var _=0;_0?r/d:r),u=Date.now();e._fadeTo=n,e._interval=setInterval((function(){var o=(Date.now()-u)/r;u=Date.now(),s+=_*o,s=Math.round(100*s)/100,s=_<0?Math.max(n,s):Math.min(n,s),a._webAudio?e._volume=s:a.volume(s,e._id,!0),i&&(a._volume=s),(nt&&s>=n)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,a.volume(n,e._id),a._emit("fade",e._id))}),c)},_stopFade:function(e){var n=this,r=n._soundById(e);return r&&r._interval&&(n._webAudio&&r._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(r._interval),r._interval=null,n.volume(r._fadeTo,e),r._fadeTo=null,n._emit("fade",e)),n},loop:function(){var e,t,n,r=this,o=arguments;if(0===o.length)return r._loop;if(1===o.length){if("boolean"!=typeof o[0])return!!(n=r._soundById(parseInt(o[0],10)))&&n._loop;e=o[0],r._loop=e}else 2===o.length&&(e=o[0],t=parseInt(o[1],10));for(var i=r._getSoundIds(t),a=0;a=0?n=parseInt(i[0],10):e=parseFloat(i[0])}else 2===i.length&&(e=parseFloat(i[0]),n=parseInt(i[1],10));if("number"!=typeof e)return(r=o._soundById(n))?r._rate:o._rate;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"rate",action:function(){o.rate.apply(o,i)}}),o;void 0===n&&(o._rate=e),n=o._getSoundIds(n);for(var _=0;_=0?n=parseInt(o[0],10):r._sounds.length&&(n=r._sounds[0]._id,e=parseFloat(o[0]))}else 2===o.length&&(e=parseFloat(o[0]),n=parseInt(o[1],10));if(void 0===n)return 0;if("number"==typeof e&&("loaded"!==r._state||r._playLock))return r._queue.push({event:"seek",action:function(){r.seek.apply(r,o)}}),r;var s=r._soundById(n);if(s){if(!("number"==typeof e&&e>=0)){if(r._webAudio){var _=r.playing(n)?t.ctx.currentTime-s._playStart:0,d=s._rateSeek?s._rateSeek-s._seek:0;return s._seek+(d+_*Math.abs(s._rate))}return s._node.currentTime}var c=r.playing(n);c&&r.pause(n,!0),s._seek=e,s._ended=!1,r._clearTimer(n),r._webAudio||!s._node||isNaN(s._node.duration)||(s._node.currentTime=e);var u=function(){c&&r.play(n,!0),r._emit("seek",n)};if(c&&!r._webAudio){var l=function(){r._playLock?setTimeout(l,0):u()};setTimeout(l,0)}else u()}return r},playing:function(e){var t=this;if("number"==typeof e){var n=t._soundById(e);return!!n&&!n._paused}for(var r=0;r=0&&t._howls.splice(i,1);var a=!0;for(r=0;r=0){a=!1;break}return o&&a&&delete o[e._src],t.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,n,r){var o=this["_on"+e];return"function"==typeof t&&o.push(r?{id:n,fn:t,once:r}:{id:n,fn:t}),this},off:function(e,t,n){var r=this,o=r["_on"+e],i=0;if("number"==typeof t&&(n=t,t=null),t||n)for(i=0;i=0;i--)o[i].id&&o[i].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,n)}.bind(r,o[i].fn),0),o[i].once&&r.off(e,o[i].fn,o[i].id));return r._loadQueue(e),r},_loadQueue:function(e){var t=this;if(t._queue.length>0){var n=t._queue[0];n.event===e&&(t._queue.shift(),t._loadQueue()),e||n.action()}return t},_ended:function(e){var n=this,r=e._sprite;if(!n._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;r--){if(n<=t)return;e._sounds[r]._ended&&(e._webAudio&&e._sounds[r]._node&&e._sounds[r]._node.disconnect(0),e._sounds.splice(r,1),n--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],n=0;n=0;if(!e.bufferSource)return this;if(t._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),n))try{e.bufferSource.buffer=t._scratchBuffer}catch(e){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(e){this._parent=e,this.init()};r.prototype={init:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++t._counter,n._sounds.push(e),e.create(),e},create:function(){var e=this,n=e._parent,r=t._muted||e._muted||e._parent._muted?0:e._volume;return n._webAudio?(e._node=void 0===t.ctx.createGain?t.ctx.createGainNode():t.ctx.createGain(),e._node.gain.setValueAtTime(r,t.ctx.currentTime),e._node.paused=!0,e._node.connect(t.masterGain)):t.noAudio||(e._node=t._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(t._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=n._src,e._node.preload=!0===n._preload?"auto":n._preload,e._node.volume=r*t.volume(),e._node.load()),e},reset:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++t._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,n=e._parent;n._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(n._sprite).length&&(n._sprite={__default:[0,1e3*n._duration]}),"loaded"!==n._state&&(n._state="loaded",n._emit("load"),n._loadQueue()),e._node.removeEventListener(t._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var o={},i=function(e){var t=e._src;if(o[t])return e._duration=o[t].duration,void _(e);if(/^data:[^;]+;base64,/.test(t)){for(var n=atob(t.split(",")[1]),r=new Uint8Array(n.length),i=0;i0?(o[n._src]=e,_(n,e)):r()};"undefined"!=typeof Promise&&1===t.ctx.decodeAudioData.length?t.ctx.decodeAudioData(e).then(i).catch(r):t.ctx.decodeAudioData(e,i,r)},_=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},d=function(){if(t.usingWebAudio){try{"undefined"!=typeof AudioContext?t.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch(e){t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),n=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),r=n?parseInt(n[1],10):null;if(e&&r&&r<9){var o=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!o&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=void 0===t.ctx.createGain?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};!function(e,t,n,r){var o;e.prototype._pos=[0,0,0],e.prototype._orientation=[0,0,-1,0,1,0],e.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var n=t._howls.length-1;n>=0;n--)t._howls[n].stereo(e);return t},e.prototype.pos=function(e,n,r){var o=this;return o.ctx&&o.ctx.listener?(n="number"!=typeof n?o._pos[1]:n,r="number"!=typeof r?o._pos[2]:r,"number"!=typeof e?o._pos:(o._pos=[e,n,r],void 0!==o.ctx.listener.positionX?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],t.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],t.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],t.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]),o)):o},e.prototype.orientation=function(e,n,r,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var _=s._orientation;return n="number"!=typeof n?_[1]:n,r="number"!=typeof r?_[2]:r,o="number"!=typeof o?_[3]:o,i="number"!=typeof i?_[4]:i,a="number"!=typeof a?_[5]:a,"number"!=typeof e?_:(s._orientation=[e,n,r,o,i,a],void 0!==s.ctx.listener.forwardX?(s.ctx.listener.forwardX.setTargetAtTime(e,t.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(n,t.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(r,t.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,t.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,t.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,t.ctx.currentTime,.1)):s.ctx.listener.setOrientation(e,n,r,o,i,a),s)},n.prototype.init=(o=n.prototype.init,function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],o.call(this,e)}),n.prototype.stereo=function(e,n){var r=this;if(!r._webAudio)return r;if("loaded"!==r._state)return r._queue.push({event:"stereo",action:function(){r.stereo(e,n)}}),r;var o=void 0===t.ctx.createStereoPanner?"spatial":"stereo";if(void 0===n){if("number"!=typeof e)return r._stereo;r._stereo=e,r._pos=[e,0,0]}for(var a=r._getSoundIds(n),s=0;s{let e=!1;if(m)try{(await A.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===f.browser&&f.version>66||"Safari"===f.browser&&f.version>13||"OPR"===f.browser&&f.version>43||"Edge"===f.browser&&f.version;const I=(()=>{if(!c&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})(),E=" is not allowed to change after `createInstance` or `loadWasm` is called.",T=!c&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",D=!c&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",S=e=>{if(null==e)e=[];else{e=e instanceof Array?[...e]:[e];for(let t=0;te&&"object"==typeof e&&"function"==typeof e.then;const v="iPhone"==f.OS||"Android"==f.OS||"HarmonyOS"==f.OS?2048:4096;class w{constructor(){this._instanceID=void 0,this._ifSaveOriginalImageInACanvas=!1,this.oriCanvas=null,this.oriCanvasData=null,this.canvas=null,this.bFilterRegionInJs=!1,this._region=null,this._timeStartDecode=null,this._timeEnterInnerDBR=null,this._timeGetMessage=null,this.decodeRecords={},this.bDestroyed=!1,this._lastErrorCode=0,this._lastErrorString="",this._lastInnerDecodeDuration=0,this.intervalTime=0,this._intervalGetVideoFrame=0,this.array_getFrameTimeCost=[],this.array_decodeFrameTimeCost=[],this._indexCurrentDecodingFrame=0,this._bPauseScan=!1,this._intervalDetectVideoPause=1e3,this._soundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",this.beepSound=new n({src:["data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=v,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`license`"+E);n._license=t})(w,e)}static get productKeys(){return this._license}static set productKeys(e){w.license=e}static get handshakeCode(){return this._license}static set handshakeCode(e){w.license=e}static get organizationID(){return this._license}static set organizationID(e){w.license=e}static set sessionPassword(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`sessionPassword`"+E);n._sessionPassword=t})(w,e)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:g,worker:p,getUserMedia:m,camera:await R(),browser:f.browser,version:f.version,OS:f.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(e){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");w._engineResourcePath=(e=>{if(null==e&&(e="./"),!c){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`licenseServer`"+E);n._licenseServer=S(t)})(w,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+E);n._deviceFriendlyName=t||""})(w,e)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(e){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");w.__bUseFullFeature=e}static isImageSource(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"getImage"in e}static isDSImage(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("width"in e&&("height"in e&&"pixelFormat"in e)))}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("region"in e&&("sx"in e&&("sy"in e&&("width"in e&&("height"in e&&("colorMode"in e&&("timeSpent"in e&&("timeStamp"in e&&("isCropped"in e&&("toCanvas"in e&&("_sWidth"in e&&("_sHeight"in e&&"_bUseWebGL"in e)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(e){this._region=e,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var e;return null===(e=w._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",w.engineResourcePath)}static set defaultUIElementURL(e){w._defaultUIElementURL=e}static _fireHTTPSWarnning(){w.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{w.onWarning&&w.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new n({src:[this._soundSource],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(e){this.bPlaySoundOnSuccessfulRead="never"!==e&&e}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(e){this.bVibrateOnSuccessfulRead="never"!==e&&e}set dce(e){this._dce=e}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(e){this._maxCvsSideLength=e,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",e)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;w._onLog&&w._onLog("_registerDCEControler()");const e=this.dce;this._dceControler=e._createControler();const t=this._dceControler;t.register(this),t.setDisiredValue(this,"refreshInterval",200),t.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}const n=e.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{n?n===t._innerSetUI&&(await e.setUIElement(`${r.engineResourcePath}dce.ui.html`),t._innerSetUI=e.getUIElement()):(await e.setUIElement(`${r.engineResourcePath}dbr.ui.html`),t._innerSetUI=e.getUIElement())}catch(t){await e.setUIElement(r.defaultUIElementURL)}else n||await e.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async e=>{let t=await this._decode_DCEFrame(e,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onImageRead(e)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));const{sx:n,sy:r,width:o,height:i,_sWidth:a,_sHeight:s}=e;w.recalculateResultLocation(t,n,r,a,s,o,i),this._drawResults(t)},e.on("cameraChange",this.callbackCameraChange),e.on("resolutionChange",this.callbackResolutionChange),e.on("cameraClose",this.callbackCameraClose),e.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(w._onLog&&w._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(e,t){if(null==e)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(e&&e.isCameraEnhancer)this.dce=e,await this._registerDCEControler(),this._imgSource=null;else{if(!w.isImageSource(e))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=e}t&&t.resultsHighlightBaseShapes&&(this._drawingItemNamespace=t.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:e,l:t,ls:n,sp:r,rmk:o}=(e=>{const t=e;if(t._pLoad.isEmpty){let e,n,r=t._license||"",o=JSON.parse(JSON.stringify(t._licenseServer)),i=t._sessionPassword,a=0;if(r.startsWith("t")||r.startsWith("f"))a=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))a=1;else{a=2;const t=r.indexOf(":");if(-1!=t&&(r=r.substring(t+1)),r.startsWith("DLS2")){let t=r.substring(4);try{t=atob(t)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const n=JSON.parse(t);if(r=n.handshakeCode?n.handshakeCode:n.organizationID?n.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===o.length){let e=[];n.mainServerURL&&(e[0]=n.mainServerURL),n.standbyServerURL&&(e[1]=n.standbyServerURL),o=S(e)}!i&&n.sessionPassword&&(i=n.sessionPassword),e=n.remark}("200001"===r||r.startsWith("200001-"))&&(o&&o.length||(r="")),r||(a=1)}if(a&&(globalThis.crypto||(n="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(n="Require https to use online key in this browser.")),n){if(1!==a)throw new Error(n);a=0,console.warn(n),t._lastErrorCode=-1,t._lastErrorString=n}return 1===a&&(r="",console.warn("Applying for a public trial license ...")),{lt:a,l:r,ls:o,sp:i,rmk:e}}throw new Error("Can't preprocess license again"+E)})(w);this._pLoad.task=async(i,a)=>{let s=w.engineResourcePath+w._workerName;w.engineResourcePath.startsWith(location.origin)||(s=await fetch(s).then((e=>e.blob())).then((e=>URL.createObjectURL(e)))),w._dbrWorker=new Worker(s),w._dbrWorker.onerror=e=>{let t=new Error(e.message);a(t)},w._dbrWorker.onmessage=async t=>{let n=t.data?t.data:t;switch(n.type){case"log":w._onLog&&w._onLog(n.message);break;case"load":{n.message&&(n.message=n.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let t,r=!1;1===e&&(r=!0),n.success?(w._dbrWorker.onerror=null,w._version=n.version+"(JS "+w._jsVersion+"."+w._jsEditVersion+")",w._onLog&&w._onLog("load dbr worker success"),n.message&&console.warn(n.message)):(t=new Error(n.message),t.stack=n.stack+"\n"+t.stack,r||111==n.ltsErrorCode&&-1!=n.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&w.showDialog(n.success?"warn":"error",n.message),n.success?i():a(t);break}case"task":{let e=n.id,t=n.body;try{w._taskCallbackMap.get(e)(t),w._taskCallbackMap.delete(e)}catch(t){throw w._taskCallbackMap.delete(e),t}break}default:w._onLog&&w._onLog(t)}},w._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:w.engineResourcePath,bUseFullFeature:w._bUseFullFeature,bd:w._bWasmDebug,v:w._jsVersion,brtk:!!e,bptk:1===e,l:t,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:f,fn:w.deviceFriendlyName,ls:n,sp:r,rmk:o})}}await this._pLoad}static async showDialog(e,t){await(async(e,t,n)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let o=await r.text();if(!o.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let i=document.createElement("div");i.innerHTML=o;let a=[];for(let e=0;e{if(e==t.target){s.remove();for(let e of a)e.remove()}}));else if(!d&&e.classList.contains("dls-license-icon-close"))d=e,e.addEventListener("click",(()=>{s.remove();for(let e of a)e.remove()}));else if(!c&&e.classList.contains("dls-license-icon-error"))c=e,"error"!=t&&e.remove();else if(!u&&e.classList.contains("dls-license-icon-warn"))u=e,"warn"!=t&&e.remove();else if(!l&&e.classList.contains("dls-license-msg-content")){l=e;let t=n;for(;t;){let n=t.indexOf("["),r=t.indexOf("]",n),o=t.indexOf("(",r),i=t.indexOf(")",o);if(-1==n||-1==r||-1==o||-1==i){e.appendChild(new Text(t));break}n>0&&e.appendChild(new Text(t.substring(0,n)));let a=document.createElement("a"),s=t.substring(n+1,r);a.innerText=s;let _=t.substring(o+1,i);a.setAttribute("href",_),a.setAttribute("target","_blank"),e.appendChild(a),t=t.substring(i+1)}}document.body.appendChild(s)}catch(t){e._onLog&&e._onLog(t.message||t)}})(this,e,t)}static async createInstanceInWorker(e=!1){return await w.loadWasm(),await new Promise(((t,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(e=>{if(e.success)return t(e.instanceID);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),w._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:e})}))}static async createInstance(){let e=new w;return e._instanceID=await w.createInstanceInWorker(),w._fireHTTPSWarnning(),e}async clearMapDecodeRecord(){return await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success)return e();{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:n,instanceID:this._instanceID})}))}async decode(e){w._onLog&&w._onLog("decode(source: any)"),w._onLog&&(this._timeStartDecode=Date.now());{let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),e instanceof Blob?await this._decode_Blob(e,t):e instanceof ArrayBuffer?await this._decode_ArrayBuffer(e,t):e instanceof Uint8Array||e instanceof Uint8ClampedArray?await this._decode_Uint8Array(e,t):e instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?await this._decode_Image(e,t):e instanceof HTMLCanvasElement?await this._decode_Canvas(e,t):e instanceof HTMLVideoElement?await this._decode_Video(e,t):"string"==typeof e?"data:image/"==e.substring(0,11)?await this._decode_Base64(e,t):await this._decode_Url(e,t):w.isDCEFrame(e)?(t.bCopyData=!0,await this._decode_DCEFrame(e,t)):w.isDSImage(e)?(t.bCopyData=!0,await this._decode_DSImage(e,t)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(e,t)}async decodeUrl(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(e,t)}async _decodeBuffer_Uint8Array(e,t,n,r,o,i){return await new Promise(((a,s)=>{let _=w._nextTaskID++;w._taskCallbackMap.set(_,(e=>{if(e.success){let t,n=w._onLog?Date.now():0;w._onLog&&w._onLog("worker return result: "+n),this._lastInnerDecodeDuration=e.duration;try{t=this._handleRetJsonString(e.decodeReturn)}catch(e){return s(e)}if(w._onLog){let e=Date.now();w._onLog("DBR time get result: "+n),w._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),w._onLog("DBR worker decode image cost: "+(n-this._timeEnterInnerDBR)),w._onLog("DBR worker handle results: "+(e-n)),w._onLog("Total decode image cost: "+(e-this._timeStartDecode))}return a(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,s(t)}})),this._timeEnterInnerDBR=Date.now(),w._onLog&&w._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),w._dbrWorker.postMessage({type:"decodeBuffer",id:_,instanceID:this._instanceID,body:{buffer:e,width:t,height:n,stride:r,format:o,config:i}},[e.buffer]),w._onLog&&i&&i.timeStamp&&w._onLog("decode image delay: "+(this._timeEnterInnerDBR-i.timeStamp))}))}async _decodeBuffer_Blob(e,t,n,r,o,i){w._onLog&&w._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const a=e.arrayBuffer?await e.arrayBuffer():await new Promise(((t,n)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onload=()=>{t(r.result)},r.onerror=()=>{n(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(a),t,n,r,o,i)}async decodeBuffer(e,t,n,r,o,i){let a;return w._onLog&&w._onLog("decodeBuffer(buffer,width,height,stride,format)"),w._onLog&&(this._timeStartDecode=Date.now()),e instanceof Uint8Array||e instanceof Uint8ClampedArray?a=await this._decodeBuffer_Uint8Array(e,t,n,r,o,i):e instanceof ArrayBuffer?a=await this._decodeBuffer_Uint8Array(new Uint8Array(e),t,n,r,o,i):e instanceof Blob&&(a=await this._decodeBuffer_Blob(e,t,n,r,o,i)),a}async _decodeFileInMemory_Uint8Array(e){return await new Promise(((t,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(e=>{if(e.success){let r;this._lastInnerDecodeDuration=e.duration;try{r=this._handleRetJsonString(e.decodeReturn)}catch(e){return n(e)}return t(r)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),w._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:e}})}))}async getRuntimeSettings(){return await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success){let t=JSON.parse(n.results);return null!=this.userDefinedRegion&&(t.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),e(t)}{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"getRuntimeSettings",id:n,instanceID:this._instanceID})}))}async updateRuntimeSettings(e){let t;if("string"==typeof e)if("speed"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=3,t.expectedBarcodesCount=0,t.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=5,t.expectedBarcodesCount=512,t.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region}else if("dense"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=9,t.expectedBarcodesCount=0,t.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=3,t.expectedBarcodesCount=0,t.localizationModes=[2,8,0,0,0,0,0,0]}else t=JSON.parse(e);else{if("object"!=typeof e)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(t=JSON.parse(JSON.stringify(e)),t.region instanceof Array){let e=t.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(t.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!w._bUseFullFeature){if(0!=(t.barcodeFormatIds&~(L.BF_ONED|L.BF_QR_CODE|L.BF_PDF417|L.BF_DATAMATRIX))||0!=t.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=t.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let e=t.region;if(e instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(e)),(e.regionLeft||e.regionTop||e.regionRight||e.regionBottom||e.regionMeasuredByPercentage)&&(e.regionLeft||e.regionTop||100!=e.regionRight||100!=e.regionBottom||!e.regionMeasuredByPercentage)?this.region=e:this.region=null,t.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((e,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(t=>{if(t.success){try{this._handleRetJsonString(t.updateReturn)}catch(e){n(e)}return e()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}})),w._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(t)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=v,await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success)return e();{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"resetRuntimeSettings",id:n,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!w._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success)return e(n.results);{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:n,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(e){if(!w._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof e)e=e;else{if("object"!=typeof e)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");e=JSON.stringify(e)}return await new Promise(((t,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.initReturn)}catch(e){n(e)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),w._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:e}})}))}async _decode_Blob(e,t){w._onLog&&w._onLog("_decode_Blob(blob: Blob)");let n=null,r=null;if("undefined"!=typeof createImageBitmap)try{n=await createImageBitmap(e)}catch(e){}n||(r=await function(e){return new Promise(((t,n)=>{let r=URL.createObjectURL(e),o=new Image;o.dbrObjUrl=r,o.src=r,o.onload=()=>{t(o)},o.onerror=e=>{n(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}}))}(e));let o=await this._decode_Image(n||r,t);return n&&n.close(),o}async _decode_ArrayBuffer(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Uint8Array(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Image(e,t){w._onLog&&w._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),t=t||{};let n,r,o=e instanceof HTMLImageElement?e.naturalWidth:e.width,i=e instanceof HTMLImageElement?e.naturalHeight:e.height,a=Math.max(o,i);if(a>this._maxCvsSideLength){let e=this._maxCvsSideLength/a;n=Math.round(o*e),r=Math.round(i*e)}else n=o,r=i;this.canvas||(this.canvas=document.createElement("canvas"));const s=this.canvas;s.width===n&&s.height===r||(s.width=n,s.height=r),s.ctx2d||(s.ctx2d=s.getContext("2d"));return s.ctx2d.drawImage(e,0,0,o,i,0,0,n,r),e.dbrObjUrl&&URL.revokeObjectURL(e.dbrObjUrl),await this._decode_Canvas(s,t)}async _decode_Canvas(e,t){if(w._onLog&&w._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";if(0===e.width||0===e.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=e,this.oriCanvasData=null);let n=(e.ctx2d||e.getContext("2d")).getImageData(0,0,e.width,e.height).data;return await this._decodeBuffer_Uint8Array(n,e.width,e.height,4*e.width,C.IPF_ABGR_8888,t)}async _decode_Video(e,t){if(w._onLog&&w._onLog("_decode_Video(video)"),!(e instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";t=t||{};let n,r,o=e.videoWidth,i=e.videoHeight,a=Math.max(o,i);if(a>this._maxCvsSideLength){let e=this._maxCvsSideLength/a;n=Math.round(o*e),r=Math.round(i*e)}else n=o,r=i;this.canvas||(this.canvas=document.createElement("canvas"));const s=this.canvas;s.width===n&&s.height===r||(s.width=n,s.height=r),s.ctx2d||(s.ctx2d=s.getContext("2d"));return s.ctx2d.drawImage(e,0,0,o,i,0,0,n,r),await this._decode_Canvas(s,t)}async _decode_DCEFrame(e,t){if(w._onLog&&w._onLog("_decode_DCEFrame(dceFrame)"),!w.isDCEFrame(e))return[];let n=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,colorMode:e.colorMode,data:new Uint8Array(e.data),toCanvas:e.toCanvas});const{width:r,height:o,colorMode:i,timeStamp:a}=e;let s;s=t&&t.bCopyData?new Uint8Array(e.data):e.data;let _=null;if(t?(_=JSON.parse(JSON.stringify(t)),_.timeStamp=a):_={timeStamp:a},"grey"===i)n=await this._decodeBuffer_Uint8Array(s,r,o,r,C.IPF_GrayScaled,_);else if("rgba"===i)n=await this._decodeBuffer_Uint8Array(s,r,o,4*r,C.IPF_ABGR_8888,_);else{if("bgra"!==i)throw new Error(`Color mode '${i}' is not supported to decode.`);n=await this._decodeBuffer_Uint8Array(s,r,o,4*r,C.IPF_ARGB_8888,_)}return n}async _decode_DSImage(e,t){if(w._onLog&&w._onLog("_decode_DSImage(dsImage)"),!w.isDSImage(e))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,pixelFormat:e.pixelFormat.toLowerCase(),data:new Uint8Array(e.data),toCanvas:function(){const e=document.createElement("canvas");let t;switch(e.width=this.width,e.height=this.height,this.pixelFormat){case"grey":t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;e{let r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{t(r.response)},r.onerror=()=>{n(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(n,t)}}async _decode_FilePath(e,t){throw w._onLog&&w._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(e,t,n,r,o,i,a){if(e.length>0)for(let s of e){let e=s.localizationResult;2==e.resultCoordinateType&&(e.x1*=.01*i,e.x2*=.01*i,e.x3*=.01*i,e.x4*=.01*i,e.y1*=.01*a,e.y2*=.01*a,e.y3*=.01*a,e.y4*=.01*a);let _=i/r,d=a/o;e.x1=e.x1/_+t,e.x2=e.x2/_+t,e.x3=e.x3/_+t,e.x4=e.x4/_+t,e.y1=e.y1/d+n,e.y2=e.y2/d+n,e.y3=e.y3/d+n,e.y4=e.y4/d+n,2==e.resultCoordinateType&&(e.x1*=100/r,e.x2*=100/r,e.x3*=100/r,e.x4*=100/r,e.y1*=100/o,e.y2*=100/o,e.y3*=100/o,e.y4*=100/o)}}static BarcodeReaderException(e,t){let n,r=y.DBR_UNKNOWN;return"number"==typeof e?(r=e,n=new Error(t)):n=new Error(e),n.code=r,n}_handleRetJsonString(e){let t=y;if(e.textResults){for(let t=0;t{let n=t.indexOf(":");e[t.substring(0,n)]=t.substring(n+1)})),n.exception=e}}return e.decodeRecords?this.decodeRecords=e.decodeRecords:this.decodeRecords={},this._lastErrorCode=e.exception,this._lastErrorString=e.description,e.exception&&!w._setWarnnedEx.has(e.description)&&(w._setWarnnedEx.add(e.description),console.warn(e.description)),e.textResults}if(e.exception==t.DBR_SUCCESS)return e.data;throw w.BarcodeReaderException(e.exception,e.description)}async setModeArgument(e,t,n,r){return await new Promise(((o,i)=>{let a=w._nextTaskID++;w._taskCallbackMap.set(a,(e=>{if(e.success){try{this._handleRetJsonString(e.setReturn)}catch(e){return i(e)}return o()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),w._dbrWorker.postMessage({type:"setModeArgument",id:a,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:n,argumentValue:r}})}))}async getModeArgument(e,t,n){return await new Promise(((r,o)=>{let i=w._nextTaskID++;w._taskCallbackMap.set(i,(e=>{if(e.success){let t;try{t=this._handleRetJsonString(e.getReturn)}catch(e){return o(e)}return r(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,o(t)}})),w._dbrWorker.postMessage({type:"getModeArgument",id:i,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:n}})}))}async getIntermediateResults(){return await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success)return e(n.results);{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"getIntermediateResults",id:n,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let e=await this.getIntermediateResults(),t=[];for(let n of e)if(n.dataType==O.IMRDT_IMAGE)for(let e of n.results){const n=e.bytes;let r;switch(w._onLog&&w._onLog(" "+n.length+" "+n.byteLength+" "+e.width+" "+e.height+" "+e.stride+" "+e.format),e.format){case C.IPF_ABGR_8888:r=new Uint8ClampedArray(n);break;case C.IPF_RGB_888:{const e=n.length/3;r=new Uint8ClampedArray(4*e);for(let t=0;t{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success){let t=n.results;return t.intervalTime=this.intervalTime,t.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,t.soundOnSuccessfullRead=this.soundSource,t.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,t.vibrateDuration=this.vibrateDuration,t.captureAndDecodeInParallel=this.captureAndDecodeInParallel,e(t)}{let e=new Error(n.message);return e.stack+="\n"+n.stack,t(e)}})),w._dbrWorker.postMessage({type:"getScanSettings",id:n,instanceID:this._instanceID})}))}async updateScanSettings(e){if(!e)return;const t=JSON.parse(JSON.stringify(e));return t.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(t.intervalTime,0),delete t.intervalTime),t.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=t.whenToPlaySoundforSuccessfulRead,delete t.whenToPlaySoundforSuccessfulRead),t.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=t.soundOnSuccessfullRead,delete t.soundOnSuccessfullRead),t.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=t.whenToVibrateforSuccessfulRead,delete t.whenToVibrateforSuccessfulRead),t.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=t.vibrateDuration,delete t.vibrateDuration),t.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=t.captureAndDecodeInParallel,delete t.captureAndDecodeInParallel),await new Promise(((e,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack+="\n"+t.stack,n(e)}})),w._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:t}})}))}_cloneDecodeResults(e){if(e instanceof Array){let t=[];for(let n of e)t.push(this._cloneDecodeResults(n));return t}{let t=e;return JSON.parse(JSON.stringify(t,((e,t)=>"oriVideoCanvas"==e||"searchRegionCanvas"==e?void 0:t)))}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return w._onLog&&w._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));w._onLog&&w._onLog("======= once read ======="),w._onLog&&(this._timeStartDecode=Date.now());let e=null,t=null;if(this.dce)e=this._getVideoFrame();else if(this._imgSource&&(t=await this._imgSource.getImage(),!w.isDSImage(t)))throw new Error("Invalid DSImage.");if(!e&&!t)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let n=[];if(e){n=await this._decode_DCEFrame(e,{bScanner:!0,bCopyData:!1});let t=null;if(n&&n.length){const{sx:r,sy:o,width:i,height:a,_sWidth:s,_sHeight:_}=e;t=n.map((e=>({localizationResult:JSON.parse(JSON.stringify(e.localizationResult))}))),w.recalculateResultLocation(t,r,o,s,_,i,a)}this._drawResults(t)}else t&&(n=await this._decode_DSImage(t,{bScanner:!0,bCopyData:!1}));return n})().then((e=>{if(w._onLog&&w._onLog(e),this.dce&&this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost;const n=()=>{let n=0;if(t&&t.length){let r=Math.min(...e),o=Math.max(...t);r&&o&&(n=r-o)}else n=0;return n>0?n:0};(()=>{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=n()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let n of e)if(0==n.resultsType){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let n of e)if(0==n.resultsType){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onImageRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultsType&&1!=e.resultsType||this.onImageRead(t);this.onImageRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultsType&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),w._onLog&&w._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;e=this.dce.getFrameFromBuffer();const t=e=>{if(!e)return;let t=e.timeSpent,n=this.array_getFrameTimeCost;for(;n.length>=5;)n.shift();n.push(t)};t(e)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),e=this.dce.getFrame();return e}_drawResults(e){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const t=this._dbrDrawingLayer;if(t.clearDrawingItems(),e&&e.length)for(let n of e){const e=n.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:e.x1,y:e.y1},{x:e.x2,y:e.y2},{x:e.x3,y:e.y3},{x:e.x4,y:e.y4}]);t.addDrawingItem(r)}}async startScanning(e){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let t=null;return this.dce&&(this.dce.isOpen()?(e&&this.dce.appendAndShowUI(),t=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):t=await this.dce.open(e),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),t):void 0}stopScanning(e){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",e))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(e){if(e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(w._onLog&&w._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let e=w._nextTaskID++;w._taskCallbackMap.set(e,(e=>{if(!e.success){let t=new Error(e.message);throw t.stack=e.stack+"\n"+t.stack,t}})),w._dbrWorker.postMessage({type:"destroyContext",id:e,instanceID:this._instanceID})}}var b,N,B,P,F,V,x,k,U,G,H,K,W,Y,Q,J,X,Z,j,q,$,z,ee,te,ne,re,oe;w._jsVersion="9.2.11",w._jsEditVersion="20220727",w._version=`loading...(JS ${w._jsVersion}.${w._jsEditVersion})`,w._license=T,w._sessionPassword=D,w.browserInfo=f,w._workerName=`dbr-${w._jsVersion}.browser.worker.js`,w._engineResourcePath=I,w._licenseServer=[],w._deviceFriendlyName="",w._isShowRelDecodeTimeInResults=!1,w._bWasmDebug=!1,w._bNeverShowDialog=!1,w.__bUseFullFeature=!0,w._nextTaskID=0,w._taskCallbackMap=new Map,w._pLoad=new class extends Promise{constructor(e){let t,n;super(((e,r)=>{t=e,n=r})),this._s="pending",this.resolve=e=>{this.isPending&&(M(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",n(e))},this.task=e}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,M(e)?t=e:"function"==typeof e&&(t=new Promise(e)),t&&(async()=>{try{const n=await t;e===this._task&&this.resolve(n)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}},w._lastErrorCode=0,w._lastErrorString="",w._setWarnnedEx=new Set,w._defaultUIElementURL="@engineResourcePath/dbr.ui.html",function(e){e[e.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",e[e.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",e[e.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",e[e.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",e[e.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",e[e.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",e[e.BICM_SKIP=0]="BICM_SKIP",e[e.BICM_REV=2147483648]="BICM_REV"}(b||(b={})),function(e){e[e.BCM_AUTO=1]="BCM_AUTO",e[e.BCM_GENERAL=2]="BCM_GENERAL",e[e.BCM_SKIP=0]="BCM_SKIP",e[e.BCM_REV=2147483648]="BCM_REV"}(N||(N={})),function(e){e[e.BF2_NULL=0]="BF2_NULL",e[e.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",e[e.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",e[e.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",e[e.BF2_POSTNET=2097152]="BF2_POSTNET",e[e.BF2_PLANET=4194304]="BF2_PLANET",e[e.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",e[e.BF2_RM4SCC=16777216]="BF2_RM4SCC",e[e.BF2_DOTCODE=2]="BF2_DOTCODE",e[e.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",e[e.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",e[e.BF2_PHARMACODE=12]="BF2_PHARMACODE"}(B||(B={})),function(e){e[e.BM_AUTO=1]="BM_AUTO",e[e.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",e[e.BM_SKIP=0]="BM_SKIP",e[e.BM_THRESHOLD=4]="BM_THRESHOLD",e[e.BM_REV=2147483648]="BM_REV"}(P||(P={})),function(e){e[e.ECCM_CONTRAST=1]="ECCM_CONTRAST"}(F||(F={})),function(e){e[e.CFM_GENERAL=1]="CFM_GENERAL"}(V||(V={})),function(e){e[e.CCM_AUTO=1]="CCM_AUTO",e[e.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",e[e.CCM_SKIP=0]="CCM_SKIP",e[e.CCM_REV=2147483648]="CCM_REV"}(x||(x={})),function(e){e[e.CICM_GENERAL=1]="CICM_GENERAL",e[e.CICM_SKIP=0]="CICM_SKIP",e[e.CICM_REV=2147483648]="CICM_REV"}(k||(k={})),function(e){e[e.CM_IGNORE=1]="CM_IGNORE",e[e.CM_OVERWRITE=2]="CM_OVERWRITE"}(U||(U={})),function(e){e[e.DM_SKIP=0]="DM_SKIP",e[e.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",e[e.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",e[e.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",e[e.DM_SMOOTHING=8]="DM_SMOOTHING",e[e.DM_MORPHING=16]="DM_MORPHING",e[e.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",e[e.DM_SHARPENING=64]="DM_SHARPENING",e[e.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",e[e.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING"}(G||(G={})),function(e){e[e.DRM_AUTO=1]="DRM_AUTO",e[e.DRM_GENERAL=2]="DRM_GENERAL",e[e.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",e[e.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",e[e.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",e[e.DRM_SKIP=0]="DRM_SKIP",e[e.DRM_REV=2147483648]="DRM_REV"}(H||(H={})),function(e){e[e.DPMCRM_AUTO=1]="DPMCRM_AUTO",e[e.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",e[e.DPMCRM_SKIP=0]="DPMCRM_SKIP",e[e.DPMCRM_REV=2147483648]="DPMCRM_REV"}(K||(K={})),function(e){e[e.GTM_INVERTED=1]="GTM_INVERTED",e[e.GTM_ORIGINAL=2]="GTM_ORIGINAL",e[e.GTM_SKIP=0]="GTM_SKIP",e[e.GTM_REV=2147483648]="GTM_REV"}(W||(W={})),function(e){e[e.IPM_AUTO=1]="IPM_AUTO",e[e.IPM_GENERAL=2]="IPM_GENERAL",e[e.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",e[e.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",e[e.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",e[e.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",e[e.IPM_SKIP=0]="IPM_SKIP",e[e.IPM_REV=2147483648]="IPM_REV"}(Y||(Y={})),function(e){e[e.IRSM_MEMORY=1]="IRSM_MEMORY",e[e.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",e[e.IRSM_BOTH=4]="IRSM_BOTH"}(Q||(Q={})),function(e){e[e.IRT_NO_RESULT=0]="IRT_NO_RESULT",e[e.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",e[e.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",e[e.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",e[e.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",e[e.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",e[e.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",e[e.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",e[e.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",e[e.IRT_CONTOUR=256]="IRT_CONTOUR",e[e.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",e[e.IRT_FORM=1024]="IRT_FORM",e[e.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",e[e.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",e[e.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL"}(J||(J={})),function(e){e[e.LM_SKIP=0]="LM_SKIP",e[e.LM_AUTO=1]="LM_AUTO",e[e.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",e[e.LM_LINES=8]="LM_LINES",e[e.LM_STATISTICS=4]="LM_STATISTICS",e[e.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",e[e.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",e[e.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",e[e.LM_CENTRE=128]="LM_CENTRE",e[e.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",e[e.LM_REV=2147483648]="LM_REV"}(X||(X={})),function(e){e[e.PDFRM_RASTER=1]="PDFRM_RASTER",e[e.PDFRM_AUTO=2]="PDFRM_AUTO",e[e.PDFRM_VECTOR=4]="PDFRM_VECTOR",e[e.PDFRM_REV=2147483648]="PDFRM_REV"}(Z||(Z={})),function(e){e[e.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",e[e.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",e[e.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",e[e.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(j||(j={})),function(e){e[e.RPM_AUTO=1]="RPM_AUTO",e[e.RPM_GENERAL=2]="RPM_GENERAL",e[e.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",e[e.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",e[e.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",e[e.RPM_SKIP=0]="RPM_SKIP",e[e.RPM_REV=2147483648]="RPM_REV"}(q||(q={})),function(e){e[e.RCT_PIXEL=1]="RCT_PIXEL",e[e.RCT_PERCENTAGE=2]="RCT_PERCENTAGE"}($||($={})),function(e){e[e.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",e[e.RT_RAW_TEXT=1]="RT_RAW_TEXT",e[e.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",e[e.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT"}(z||(z={})),function(e){e[e.SUM_AUTO=1]="SUM_AUTO",e[e.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",e[e.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",e[e.SUM_SKIP=0]="SUM_SKIP",e[e.SUM_REV=2147483648]="SUM_REV"}(ee||(ee={})),function(e){e[e.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",e[e.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",e[e.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",e[e.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",e[e.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",e[e.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED"}(te||(te={})),function(e){e[e.TFM_AUTO=1]="TFM_AUTO",e[e.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",e[e.TFM_SKIP=0]="TFM_SKIP",e[e.TFM_REV=2147483648]="TFM_REV"}(ne||(ne={})),function(e){e[e.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",e[e.TROM_POSITION=2]="TROM_POSITION",e[e.TROM_FORMAT=4]="TROM_FORMAT",e[e.TROM_SKIP=0]="TROM_SKIP",e[e.TROM_REV=2147483648]="TROM_REV"}(re||(re={})),function(e){e[e.TDM_AUTO=1]="TDM_AUTO",e[e.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",e[e.TDM_SKIP=0]="TDM_SKIP",e[e.TDM_REV=2147483648]="TDM_REV"}(oe||(oe={}));export{w as BarcodeReader,b as EnumBarcodeColourMode,N as EnumBarcodeComplementMode,L as EnumBarcodeFormat,B as EnumBarcodeFormat_2,P as EnumBinarizationMode,F as EnumClarityCalculationMethod,V as EnumClarityFilterMode,x as EnumColourClusteringMode,k as EnumColourConversionMode,U as EnumConflictMode,K as EnumDPMCodeReadingMode,G as EnumDeblurMode,H as EnumDeformationResistingMode,y as EnumErrorCode,W as EnumGrayscaleTransformationMode,O as EnumIMResultDataType,C as EnumImagePixelFormat,Y as EnumImagePreprocessingMode,Q as EnumIntermediateResultSavingMode,J as EnumIntermediateResultType,X as EnumLocalizationMode,Z as EnumPDFReadingMode,j as EnumQRCodeErrorCorrectionLevel,q as EnumRegionPredetectionMode,$ as EnumResultCoordinateType,z as EnumResultType,ee as EnumScaleUpMode,te as EnumTerminatePhase,ne as EnumTextFilterMode,re as EnumTextResultOrderMode,oe as EnumTextureDetectionMode}; +var e=function(){this.init()};e.prototype={init:function(){var e=this||t;return e._counter=1e3,e._html5AudioPool=[],e.html5PoolSize=10,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.autoUnlock=!0,e._setup(),e},volume:function(e){var n=this||t;if(e=parseFloat(e),n.ctx||d(),void 0!==e&&e>=0&&e<=1){if(n._volume=e,n._muted)return n;n.usingWebAudio&&n.masterGain.gain.setValueAtTime(e,t.ctx.currentTime);for(var r=0;r=0;n--)e._howls[n].unload();return e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close&&(e.ctx.close(),e.ctx=null,d()),e},codecs:function(e){return(this||t)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||t;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{void 0===(new Audio).oncanplaythrough&&(e._canPlayEvent="canplay")}catch(t){e.noAudio=!0}else e.noAudio=!0;try{(new Audio).muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||t,n=null;try{n="undefined"!=typeof Audio?new Audio:null}catch(t){return e}if(!n||"function"!=typeof n.canPlayType)return e;var r=n.canPlayType("audio/mpeg;").replace(/^no$/,""),o=e._navigator?e._navigator.userAgent:"",i=o.match(/OPR\/([0-6].)/g),a=i&&parseInt(i[0].split("/")[1],10)<33,s=-1!==o.indexOf("Safari")&&-1===o.indexOf("Chrome"),_=o.match(/Version\/(.*?) /),d=s&&_&&parseInt(_[1],10)<15;return e._codecs={mp3:!(a||!r&&!n.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!r,opus:!!n.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(n.canPlayType('audio/wav; codecs="1"')||n.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!n.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!n.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(n.canPlayType("audio/x-m4a;")||n.canPlayType("audio/m4a;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(n.canPlayType("audio/x-m4b;")||n.canPlayType("audio/m4b;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(n.canPlayType("audio/x-mp4;")||n.canPlayType("audio/mp4;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!(d||!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!(d||!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!n.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(n.canPlayType("audio/x-flac;")||n.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||t;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1,e.autoUnlock=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var n=function(t){for(;e._html5AudioPool.length0?s._seek:r._sprite[e][0]/1e3),c=Math.max(0,(r._sprite[e][0]+r._sprite[e][1])/1e3-d),u=1e3*c/Math.abs(s._rate),l=r._sprite[e][0]/1e3,h=(r._sprite[e][0]+r._sprite[e][1])/1e3;s._sprite=e,s._ended=!1;var A=function(){s._paused=!1,s._seek=d,s._start=l,s._stop=h,s._loop=!(!s._loop&&!r._sprite[e][2])};if(!(d>=h)){var f=s._node;if(r._webAudio){var g=function(){r._playLock=!1,A(),r._refreshBuffer(s);var e=s._muted||r._muted?0:s._volume;f.gain.setValueAtTime(e,t.ctx.currentTime),s._playStart=t.ctx.currentTime,void 0===f.bufferSource.start?s._loop?f.bufferSource.noteGrainOn(0,d,86400):f.bufferSource.noteGrainOn(0,d,c):s._loop?f.bufferSource.start(0,d,86400):f.bufferSource.start(0,d,c),u!==1/0&&(r._endTimers[s._id]=setTimeout(r._ended.bind(r,s),u)),n||setTimeout((function(){r._emit("play",s._id),r._loadQueue()}),0)};"running"===t.state&&"interrupted"!==t.ctx.state?g():(r._playLock=!0,r.once("resume",g),r._clearTimer(s._id))}else{var p=function(){f.currentTime=d,f.muted=s._muted||r._muted||t._muted||f.muted,f.volume=s._volume*t.volume(),f.playbackRate=s._rate;try{var o=f.play();if(o&&"undefined"!=typeof Promise&&(o instanceof Promise||"function"==typeof o.then)?(r._playLock=!0,A(),o.then((function(){r._playLock=!1,f._unlocked=!0,n?r._loadQueue():r._emit("play",s._id)})).catch((function(){r._playLock=!1,r._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),s._ended=!0,s._paused=!0}))):n||(r._playLock=!1,A(),r._emit("play",s._id)),f.playbackRate=s._rate,f.paused)return void r._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");"__default"!==e||s._loop?r._endTimers[s._id]=setTimeout(r._ended.bind(r,s),u):(r._endTimers[s._id]=function(){r._ended(s),f.removeEventListener("ended",r._endTimers[s._id],!1)},f.addEventListener("ended",r._endTimers[s._id],!1))}catch(e){r._emit("playerror",s._id,e)}};"data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===f.src&&(f.src=r._src,f.load());var m=window&&window.ejecta||!f.readyState&&t._navigator.isCocoonJS;if(f.readyState>=3||m)p();else{r._playLock=!0,r._state="loading";var R=function(){r._state="loaded",p(),f.removeEventListener(t._canPlayEvent,R,!1)};f.addEventListener(t._canPlayEvent,R,!1),r._clearTimer(s._id)}}return s._id}r._ended(s)},pause:function(e){var t=this;if("loaded"!==t._state||t._playLock)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var n=t._getSoundIds(e),r=0;r=0?n=parseInt(i[0],10):e=parseFloat(i[0])}else i.length>=2&&(e=parseFloat(i[0]),n=parseInt(i[1],10));if(!(void 0!==e&&e>=0&&e<=1))return(r=n?o._soundById(n):o._sounds[0])?r._volume:0;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"volume",action:function(){o.volume.apply(o,i)}}),o;void 0===n&&(o._volume=e),n=o._getSoundIds(n);for(var _=0;_0?r/d:r),u=Date.now();e._fadeTo=n,e._interval=setInterval((function(){var o=(Date.now()-u)/r;u=Date.now(),s+=_*o,s=Math.round(100*s)/100,s=_<0?Math.max(n,s):Math.min(n,s),a._webAudio?e._volume=s:a.volume(s,e._id,!0),i&&(a._volume=s),(nt&&s>=n)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,a.volume(n,e._id),a._emit("fade",e._id))}),c)},_stopFade:function(e){var n=this,r=n._soundById(e);return r&&r._interval&&(n._webAudio&&r._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(r._interval),r._interval=null,n.volume(r._fadeTo,e),r._fadeTo=null,n._emit("fade",e)),n},loop:function(){var e,t,n,r=this,o=arguments;if(0===o.length)return r._loop;if(1===o.length){if("boolean"!=typeof o[0])return!!(n=r._soundById(parseInt(o[0],10)))&&n._loop;e=o[0],r._loop=e}else 2===o.length&&(e=o[0],t=parseInt(o[1],10));for(var i=r._getSoundIds(t),a=0;a=0?n=parseInt(i[0],10):e=parseFloat(i[0])}else 2===i.length&&(e=parseFloat(i[0]),n=parseInt(i[1],10));if("number"!=typeof e)return(r=o._soundById(n))?r._rate:o._rate;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"rate",action:function(){o.rate.apply(o,i)}}),o;void 0===n&&(o._rate=e),n=o._getSoundIds(n);for(var _=0;_=0?n=parseInt(o[0],10):r._sounds.length&&(n=r._sounds[0]._id,e=parseFloat(o[0]))}else 2===o.length&&(e=parseFloat(o[0]),n=parseInt(o[1],10));if(void 0===n)return 0;if("number"==typeof e&&("loaded"!==r._state||r._playLock))return r._queue.push({event:"seek",action:function(){r.seek.apply(r,o)}}),r;var s=r._soundById(n);if(s){if(!("number"==typeof e&&e>=0)){if(r._webAudio){var _=r.playing(n)?t.ctx.currentTime-s._playStart:0,d=s._rateSeek?s._rateSeek-s._seek:0;return s._seek+(d+_*Math.abs(s._rate))}return s._node.currentTime}var c=r.playing(n);c&&r.pause(n,!0),s._seek=e,s._ended=!1,r._clearTimer(n),r._webAudio||!s._node||isNaN(s._node.duration)||(s._node.currentTime=e);var u=function(){c&&r.play(n,!0),r._emit("seek",n)};if(c&&!r._webAudio){var l=function(){r._playLock?setTimeout(l,0):u()};setTimeout(l,0)}else u()}return r},playing:function(e){var t=this;if("number"==typeof e){var n=t._soundById(e);return!!n&&!n._paused}for(var r=0;r=0&&t._howls.splice(i,1);var a=!0;for(r=0;r=0){a=!1;break}return o&&a&&delete o[e._src],t.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,t,n,r){var o=this["_on"+e];return"function"==typeof t&&o.push(r?{id:n,fn:t,once:r}:{id:n,fn:t}),this},off:function(e,t,n){var r=this,o=r["_on"+e],i=0;if("number"==typeof t&&(n=t,t=null),t||n)for(i=0;i=0;i--)o[i].id&&o[i].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,n)}.bind(r,o[i].fn),0),o[i].once&&r.off(e,o[i].fn,o[i].id));return r._loadQueue(e),r},_loadQueue:function(e){var t=this;if(t._queue.length>0){var n=t._queue[0];n.event===e&&(t._queue.shift(),t._loadQueue()),e||n.action()}return t},_ended:function(e){var n=this,r=e._sprite;if(!n._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;r--){if(n<=t)return;e._sounds[r]._ended&&(e._webAudio&&e._sounds[r]._node&&e._sounds[r]._node.disconnect(0),e._sounds.splice(r,1),n--)}}},_getSoundIds:function(e){if(void 0===e){for(var t=[],n=0;n=0;if(!e.bufferSource)return this;if(t._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),n))try{e.bufferSource.buffer=t._scratchBuffer}catch(e){}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(e){this._parent=e,this.init()};r.prototype={init:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++t._counter,n._sounds.push(e),e.create(),e},create:function(){var e=this,n=e._parent,r=t._muted||e._muted||e._parent._muted?0:e._volume;return n._webAudio?(e._node=void 0===t.ctx.createGain?t.ctx.createGainNode():t.ctx.createGain(),e._node.gain.setValueAtTime(r,t.ctx.currentTime),e._node.paused=!0,e._node.connect(t.masterGain)):t.noAudio||(e._node=t._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(t._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=n._src,e._node.preload=!0===n._preload?"auto":n._preload,e._node.volume=r*t.volume(),e._node.load()),e},reset:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++t._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,n=e._parent;n._duration=Math.ceil(10*e._node.duration)/10,0===Object.keys(n._sprite).length&&(n._sprite={__default:[0,1e3*n._duration]}),"loaded"!==n._state&&(n._state="loaded",n._emit("load"),n._loadQueue()),e._node.removeEventListener(t._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,t=e._parent;t._duration===1/0&&(t._duration=Math.ceil(10*e._node.duration)/10,t._sprite.__default[1]===1/0&&(t._sprite.__default[1]=1e3*t._duration),t._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var o={},i=function(e){var t=e._src;if(o[t])return e._duration=o[t].duration,void _(e);if(/^data:[^;]+;base64,/.test(t)){for(var n=atob(t.split(",")[1]),r=new Uint8Array(n.length),i=0;i0?(o[n._src]=e,_(n,e)):r()};"undefined"!=typeof Promise&&1===t.ctx.decodeAudioData.length?t.ctx.decodeAudioData(e).then(i).catch(r):t.ctx.decodeAudioData(e,i,r)},_=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},d=function(){if(t.usingWebAudio){try{"undefined"!=typeof AudioContext?t.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch(e){t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),n=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),r=n?parseInt(n[1],10):null;if(e&&r&&r<9){var o=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!o&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=void 0===t.ctx.createGain?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};!function(e,t,n,r){var o;e.prototype._pos=[0,0,0],e.prototype._orientation=[0,0,-1,0,1,0],e.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var n=t._howls.length-1;n>=0;n--)t._howls[n].stereo(e);return t},e.prototype.pos=function(e,n,r){var o=this;return o.ctx&&o.ctx.listener?(n="number"!=typeof n?o._pos[1]:n,r="number"!=typeof r?o._pos[2]:r,"number"!=typeof e?o._pos:(o._pos=[e,n,r],void 0!==o.ctx.listener.positionX?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],t.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],t.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],t.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]),o)):o},e.prototype.orientation=function(e,n,r,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var _=s._orientation;return n="number"!=typeof n?_[1]:n,r="number"!=typeof r?_[2]:r,o="number"!=typeof o?_[3]:o,i="number"!=typeof i?_[4]:i,a="number"!=typeof a?_[5]:a,"number"!=typeof e?_:(s._orientation=[e,n,r,o,i,a],void 0!==s.ctx.listener.forwardX?(s.ctx.listener.forwardX.setTargetAtTime(e,t.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(n,t.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(r,t.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,t.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,t.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,t.ctx.currentTime,.1)):s.ctx.listener.setOrientation(e,n,r,o,i,a),s)},n.prototype.init=(o=n.prototype.init,function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._pannerAttr={coneInnerAngle:void 0!==e.coneInnerAngle?e.coneInnerAngle:360,coneOuterAngle:void 0!==e.coneOuterAngle?e.coneOuterAngle:360,coneOuterGain:void 0!==e.coneOuterGain?e.coneOuterGain:0,distanceModel:void 0!==e.distanceModel?e.distanceModel:"inverse",maxDistance:void 0!==e.maxDistance?e.maxDistance:1e4,panningModel:void 0!==e.panningModel?e.panningModel:"HRTF",refDistance:void 0!==e.refDistance?e.refDistance:1,rolloffFactor:void 0!==e.rolloffFactor?e.rolloffFactor:1},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],o.call(this,e)}),n.prototype.stereo=function(e,n){var r=this;if(!r._webAudio)return r;if("loaded"!==r._state)return r._queue.push({event:"stereo",action:function(){r.stereo(e,n)}}),r;var o=void 0===t.ctx.createStereoPanner?"spatial":"stereo";if(void 0===n){if("number"!=typeof e)return r._stereo;r._stereo=e,r._pos=[e,0,0]}for(var a=r._getSoundIds(n),s=0;s{let e=!1;if(m)try{(await A.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===f.browser&&f.version>66||"Safari"===f.browser&&f.version>13||"OPR"===f.browser&&f.version>43||"Edge"===f.browser&&f.version;const I=(()=>{if(!c&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"})(),E=" is not allowed to change after `createInstance` or `loadWasm` is called.",T=!c&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",S=!c&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword")||"",D=e=>{if(null==e)e=[];else{e=e instanceof Array?[...e]:[e];for(let t=0;te&&"object"==typeof e&&"function"==typeof e.then;const v="iPhone"==f.OS||"Android"==f.OS||"HarmonyOS"==f.OS?2048:4096;class w{constructor(){this._instanceID=void 0,this._ifSaveOriginalImageInACanvas=!1,this.oriCanvas=null,this.oriCanvasData=null,this.canvas=null,this.bFilterRegionInJs=!1,this._region=null,this._timeStartDecode=null,this._timeEnterInnerDBR=null,this._timeGetMessage=null,this.decodeRecords={},this.bDestroyed=!1,this._lastErrorCode=0,this._lastErrorString="",this._lastInnerDecodeDuration=0,this.intervalTime=0,this._intervalGetVideoFrame=0,this.array_getFrameTimeCost=[],this.array_decodeFrameTimeCost=[],this._indexCurrentDecodingFrame=0,this._bPauseScan=!1,this._intervalDetectVideoPause=1e3,this._soundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",this.beepSound=new n({src:["data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}}),this.bPlaySoundOnSuccessfulRead=!1,this.bVibrateOnSuccessfulRead=!1,this.vibrateDuration=300,this.captureAndDecodeInParallel=!0,this.barcodeFillStyle="rgba(254,180,32,0.3)",this.barcodeStrokeStyle="rgba(254,180,32,0.9)",this.barcodeLineWidth=1,this._dce=null,this._imgSource=null,this._maxCvsSideLength=v,this._tempSolutionStatus="closed"}static get version(){return this._version}static get license(){return this._license}static set license(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`license`"+E);n._license=t})(w,e)}static get productKeys(){return this._license}static set productKeys(e){w.license=e}static get handshakeCode(){return this._license}static set handshakeCode(e){w.license=e}static get organizationID(){return this._license}static set organizationID(e){w.license=e}static set sessionPassword(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`sessionPassword`"+E);n._sessionPassword=t})(w,e)}static get sessionPassword(){return this._sessionPassword}static async detectEnvironment(){return await(async()=>({wasm:g,worker:p,getUserMedia:m,camera:await R(),browser:f.browser,version:f.version,OS:f.OS}))()}static get engineResourcePath(){return this._engineResourcePath}static set engineResourcePath(e){if(!this._pLoad.isEmpty)throw new Error("`engineResourcePath` is not allowed to change after `createInstance` or `loadWasm` is called.");w._engineResourcePath=(e=>{if(null==e&&(e="./"),!c){let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e})(e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`licenseServer`"+E);n._licenseServer=D(t)})(w,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){((e,t)=>{const n=e;if(!n._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+E);n._deviceFriendlyName=t||""})(w,e)}static get _bUseFullFeature(){return this.__bUseFullFeature}static set _bUseFullFeature(e){if(!this._pLoad.isEmpty)throw new Error("`_bUseFullFeature` is not allowed to change after `createInstance` or `loadWasm` is called.");w.__bUseFullFeature=e}static isImageSource(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&"getImage"in e}static isDSImage(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("width"in e&&("height"in e&&"pixelFormat"in e)))}static isDCEFrame(e){return!(!e||"object"!=typeof e||Array.isArray(e))&&("data"in e&&("region"in e&&("sx"in e&&("sy"in e&&("width"in e&&("height"in e&&("colorMode"in e&&("timeSpent"in e&&("timeStamp"in e&&("isCropped"in e&&("toCanvas"in e&&("_sWidth"in e&&("_sHeight"in e&&"_bUseWebGL"in e)))))))))))))}get ifSaveOriginalImageInACanvas(){return this._ifSaveOriginalImageInACanvas}set ifSaveOriginalImageInACanvas(e){this._ifSaveOriginalImageInACanvas=e}getOriginalImageInACanvas(){return!this.oriCanvas&&this.oriCanvasData?this.oriCanvasData.toCanvas():this.oriCanvas}set region(e){this._region=e,this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0}get region(){return this._region}static isWasmLoaded(){return this._pLoad.isFulfilled}isContextDestroyed(){return this.bDestroyed}static get lastErrorCode(){return this._lastErrorCode}static get lastErrorString(){return this._lastErrorString}get lastErrorCode(){return this._lastErrorCode}get lastErrorString(){return this._lastErrorString}static get defaultUIElementURL(){var e;return null===(e=w._defaultUIElementURL)||void 0===e?void 0:e.replace("@engineResourcePath/",w.engineResourcePath)}static set defaultUIElementURL(e){w._defaultUIElementURL=e}static _fireHTTPSWarnning(){w.onWarning&&location&&"https:"!==location.protocol&&setTimeout((()=>{w.onWarning&&w.onWarning({id:2,message:"Not connected via SSL (HTTPS), the SDK may not work correctly."})}),0)}get soundSource(){return this._soundSource}set soundSource(e){this._soundSource=e,this.beepSound=new n({src:[this._soundSource],onplayerror:(e,t)=>{console.warn(`Sound '${e}' playback failure: ${t}`)}})}get whenToPlaySoundforSuccessfulRead(){return!0===this.bPlaySoundOnSuccessfulRead?"frame":this.bPlaySoundOnSuccessfulRead?this.bPlaySoundOnSuccessfulRead:"never"}set whenToPlaySoundforSuccessfulRead(e){this.bPlaySoundOnSuccessfulRead="never"!==e&&e}get whenToVibrateforSuccessfulRead(){return!0===this.bVibrateOnSuccessfulRead?"frame":this.bVibrateOnSuccessfulRead?this.bVibrateOnSuccessfulRead:"never"}set whenToVibrateforSuccessfulRead(e){this.bVibrateOnSuccessfulRead="never"!==e&&e}set dce(e){this._dce=e}get dce(){return!this._dce||this._dce.isDisposed?null:this._dce}set maxCvsSideLength(e){this._maxCvsSideLength=e,this._dceControler&&this._dceControler.setDisiredValue(this,"maxCvsSideLength",e)}get maxCvsSideLength(){return this._maxCvsSideLength}async _registerDCEControler(){if(!this.dce)return;w._onLog&&w._onLog("_registerDCEControler()");const e=this.dce;this._dceControler=e._createControler();const t=this._dceControler;t.register(this),t.setDisiredValue(this,"refreshInterval",200),t.setDisiredValue(this,"maxCvsSideLength",this._maxCvsSideLength);try{ResizeObserver}catch(e){"ReferenceError"===e.name&&window&&(window.ResizeObserver=void 0)}const n=e.getUIElement(),r=this.dce.constructor;if("@engineResourcePath/dce.ui.html"===r._defaultUIElementURL)try{n?n===t._innerSetUI&&(await e.setUIElement(`${r.engineResourcePath}dce.ui.html`),t._innerSetUI=e.getUIElement()):(await e.setUIElement(`${r.engineResourcePath}dbr.ui.html`),t._innerSetUI=e.getUIElement())}catch(t){await e.setUIElement(r.defaultUIElementURL)}else n||await e.setUIElement(r.defaultUIElementURL);this.callbackCameraChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackResolutionChange=()=>{this._drawResults(null),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0},this.callbackCameraClose=()=>{this.stopScanning(!0),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._bPauseScan=!1},this.callbackSingleFrameAcquired=async e=>{let t=await this._decode_DCEFrame(e,{bCopyData:!1});if(await this.clearMapDecodeRecord(),this.onImageRead&&this.dce.isOpen()&&!this._bPauseScan){let e=this._cloneDecodeResults(t);this.onImageRead(e)}if(this.onUniqueRead&&this.dce.isOpen()&&!this._bPauseScan)for(let e of t)this.onUniqueRead(e.barcodeText,this._cloneDecodeResults(e));const{sx:n,sy:r,width:o,height:i,_sWidth:a,_sHeight:s}=e;w.recalculateResultLocation(t,n,r,a,s,o,i),this._drawResults(t)},e.on("cameraChange",this.callbackCameraChange),e.on("resolutionChange",this.callbackResolutionChange),e.on("cameraClose",this.callbackCameraClose),e.on("singleFrameAcquired",this.callbackSingleFrameAcquired)}_logoutDCEControler(){this.dce&&this._dceControler&&(w._onLog&&w._onLog("_logoutDCEControler()"),this._dceControler.logout(this),this.dce.off("cameraChange",this.callbackCameraChange),this.dce.off("resolutionChange",this.callbackResolutionChange),this.dce.off("cameraClose",this.callbackCameraClose),this.dce.off("singleFrameAcquired",this.callbackSingleFrameAcquired),this._dceControler=null,this.dce=null)}async setImageSource(e,t){if(null==e)return this._imgSource=null,this._logoutDCEControler(),void(this._drawingItemNamespace=null);if(e&&e.isCameraEnhancer)this.dce=e,await this._registerDCEControler(),this._imgSource=null;else{if(!w.isImageSource(e))throw new Error("Invalid value.");this._logoutDCEControler(),this._imgSource=e}t&&t.resultsHighlightBaseShapes&&(this._drawingItemNamespace=t.resultsHighlightBaseShapes)}static async loadWasm(){if(this._pLoad.isEmpty){let{lt:e,l:t,ls:n,sp:r,rmk:o}=(e=>{const t=e;if(t._pLoad.isEmpty){let e,n,r=t._license||"",o=JSON.parse(JSON.stringify(t._licenseServer)),i=t._sessionPassword,a=0;if(r.startsWith("t")||r.startsWith("f"))a=0;else if(0===r.length||r.startsWith("P")||r.startsWith("L")||r.startsWith("Y")||r.startsWith("A"))a=1;else{a=2;const t=r.indexOf(":");if(-1!=t&&(r=r.substring(t+1)),r.startsWith("DLS2")){let t=r.substring(4);try{t=atob(t)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}const n=JSON.parse(t);if(r=n.handshakeCode?n.handshakeCode:n.organizationID?n.organizationID:"","number"==typeof r&&(r=JSON.stringify(r)),0===o.length){let e=[];n.mainServerURL&&(e[0]=n.mainServerURL),n.standbyServerURL&&(e[1]=n.standbyServerURL),o=D(e)}!i&&n.sessionPassword&&(i=n.sessionPassword),e=n.remark}("200001"===r||r.startsWith("200001-"))&&(o&&o.length||(r="")),r||(a=1)}if(a&&(globalThis.crypto||(n="Please upgrade your browser to support online key."),globalThis.crypto.subtle||(n="Require https to use online key in this browser.")),n){if(1!==a)throw new Error(n);a=0,console.warn(n),t._lastErrorCode=-1,t._lastErrorString=n}return 1===a&&(r="",console.warn("Applying for a public trial license ...")),{lt:a,l:r,ls:o,sp:i,rmk:e}}throw new Error("Can't preprocess license again"+E)})(w);this._pLoad.task=async(i,a)=>{let s=w.engineResourcePath+w._workerName;w.engineResourcePath.startsWith(location.origin)||(s=await fetch(s).then((e=>e.blob())).then((e=>URL.createObjectURL(e)))),w._dbrWorker=new Worker(s),w._dbrWorker.onerror=e=>{let t=new Error(e.message);a(t)},w._dbrWorker.onmessage=async t=>{let n=t.data?t.data:t;switch(n.type){case"log":w._onLog&&w._onLog(n.message);break;case"load":{n.message&&(n.message=n.message.replace("(https://www.dynamsoft.com/purchase-center/)","(https://www.dynamsoft.com/store/dynamsoft-barcode-reader/#javascript)"));let t,r=!1;1===e&&(r=!0),n.success?(w._dbrWorker.onerror=null,w._version=n.version+"(JS "+w._jsVersion+"."+w._jsEditVersion+")",w._onLog&&w._onLog("load dbr worker success"),n.message&&console.warn(n.message)):(t=new Error(n.message),t.stack=n.stack+"\n"+t.stack,r||111==n.ltsErrorCode&&-1!=n.message.toLowerCase().indexOf("trial license")&&(r=!0)),r&&w.showDialog(n.success?"warn":"error",n.message),n.success?i():a(t);break}case"task":{let e=n.id,t=n.body;try{w._taskCallbackMap.get(e)(t),w._taskCallbackMap.delete(e)}catch(t){throw w._taskCallbackMap.delete(e),t}break}default:w._onLog&&w._onLog(t)}},w._dbrWorker.postMessage({type:"loadWasm",engineResourcePath:w.engineResourcePath,bUseFullFeature:w._bUseFullFeature,bd:w._bWasmDebug,v:w._jsVersion,brtk:!!e,bptk:1===e,l:t,dm:location.origin.startsWith("http")?location.origin:"https://localhost",os:f,fn:w.deviceFriendlyName,ls:n,sp:r,rmk:o})}}await this._pLoad}static async showDialog(e,t){await(async(e,t,n)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let o=await r.text();if(!o.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let i=document.createElement("div");i.innerHTML=o;let a=[];for(let e=0;e{if(e==t.target){s.remove();for(let e of a)e.remove()}}));else if(!d&&e.classList.contains("dls-license-icon-close"))d=e,e.addEventListener("click",(()=>{s.remove();for(let e of a)e.remove()}));else if(!c&&e.classList.contains("dls-license-icon-error"))c=e,"error"!=t&&e.remove();else if(!u&&e.classList.contains("dls-license-icon-warn"))u=e,"warn"!=t&&e.remove();else if(!l&&e.classList.contains("dls-license-msg-content")){l=e;let t=n;for(;t;){let n=t.indexOf("["),r=t.indexOf("]",n),o=t.indexOf("(",r),i=t.indexOf(")",o);if(-1==n||-1==r||-1==o||-1==i){e.appendChild(new Text(t));break}n>0&&e.appendChild(new Text(t.substring(0,n)));let a=document.createElement("a"),s=t.substring(n+1,r);a.innerText=s;let _=t.substring(o+1,i);a.setAttribute("href",_),a.setAttribute("target","_blank"),e.appendChild(a),t=t.substring(i+1)}}document.body.appendChild(s)}catch(t){e._onLog&&e._onLog(t.message||t)}})(this,e,t)}static async createInstanceInWorker(e=!1){return await w.loadWasm(),await new Promise(((t,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(e=>{if(e.success)return t(e.instanceID);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),w._dbrWorker.postMessage({type:"createInstance",id:r,bScanner:e})}))}static async createInstance(){let e=new w;return e._instanceID=await w.createInstanceInWorker(),w._fireHTTPSWarnning(),e}async clearMapDecodeRecord(){return await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success)return e();{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"clearMapDecodeRecord",id:n,instanceID:this._instanceID})}))}async decode(e){w._onLog&&w._onLog("decode(source: any)"),w._onLog&&(this._timeStartDecode=Date.now());{let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),e instanceof Blob?await this._decode_Blob(e,t):e instanceof ArrayBuffer?await this._decode_ArrayBuffer(e,t):e instanceof Uint8Array||e instanceof Uint8ClampedArray?await this._decode_Uint8Array(e,t):e instanceof HTMLImageElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?await this._decode_Image(e,t):e instanceof HTMLCanvasElement?await this._decode_Canvas(e,t):e instanceof HTMLVideoElement?await this._decode_Video(e,t):"string"==typeof e?"data:image/"==e.substring(0,11)?await this._decode_Base64(e,t):await this._decode_Url(e,t):w.isDCEFrame(e)?(t.bCopyData=!0,await this._decode_DCEFrame(e,t)):w.isDSImage(e)?(t.bCopyData=!0,await this._decode_DSImage(e,t)):await Promise.reject(TypeError("'_decode(source, config)': Type of 'source' should be 'Blob', 'ArrayBuffer', 'Uint8Array', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement', 'String(base64 with image mime)' or 'String(url)'."))}}async decodeBase64String(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Base64(e,t)}async decodeUrl(e){let t={};return!this.region||this.region instanceof Array||(t.region=JSON.parse(JSON.stringify(this.region))),this._decode_Url(e,t)}async _decodeBuffer_Uint8Array(e,t,n,r,o,i){return await new Promise(((a,s)=>{let _=w._nextTaskID++;w._taskCallbackMap.set(_,(e=>{if(e.success){let t,n=w._onLog?Date.now():0;w._onLog&&w._onLog("worker return result: "+n),this._lastInnerDecodeDuration=e.duration;try{t=this._handleRetJsonString(e.decodeReturn)}catch(e){return s(e)}if(w._onLog){let e=Date.now();w._onLog("DBR time get result: "+n),w._onLog("Handle image cost: "+(this._timeEnterInnerDBR-this._timeStartDecode)),w._onLog("DBR worker decode image cost: "+(n-this._timeEnterInnerDBR)),w._onLog("DBR worker handle results: "+(e-n)),w._onLog("Total decode image cost: "+(e-this._timeStartDecode))}return a(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,s(t)}})),this._timeEnterInnerDBR=Date.now(),w._onLog&&w._onLog("Send buffer to worker:"+this._timeEnterInnerDBR),w._dbrWorker.postMessage({type:"decodeBuffer",id:_,instanceID:this._instanceID,body:{buffer:e,width:t,height:n,stride:r,format:o,config:i}},[e.buffer]),w._onLog&&i&&i.timeStamp&&w._onLog("decode image delay: "+(this._timeEnterInnerDBR-i.timeStamp))}))}async _decodeBuffer_Blob(e,t,n,r,o,i){w._onLog&&w._onLog("_decodeBuffer_Blob(buffer,width,height,stride,format)");const a=e.arrayBuffer?await e.arrayBuffer():await new Promise(((t,n)=>{let r=new FileReader;r.readAsArrayBuffer(e),r.onload=()=>{t(r.result)},r.onerror=()=>{n(r.error)}}));return await this._decodeBuffer_Uint8Array(new Uint8Array(a),t,n,r,o,i)}async decodeBuffer(e,t,n,r,o,i){let a;return w._onLog&&w._onLog("decodeBuffer(buffer,width,height,stride,format)"),w._onLog&&(this._timeStartDecode=Date.now()),e instanceof Uint8Array||e instanceof Uint8ClampedArray?a=await this._decodeBuffer_Uint8Array(e,t,n,r,o,i):e instanceof ArrayBuffer?a=await this._decodeBuffer_Uint8Array(new Uint8Array(e),t,n,r,o,i):e instanceof Blob&&(a=await this._decodeBuffer_Blob(e,t,n,r,o,i)),a}async _decodeFileInMemory_Uint8Array(e){return await new Promise(((t,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(e=>{if(e.success){let r;this._lastInnerDecodeDuration=e.duration;try{r=this._handleRetJsonString(e.decodeReturn)}catch(e){return n(e)}return t(r)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),w._dbrWorker.postMessage({type:"decodeFileInMemory",id:r,instanceID:this._instanceID,body:{bytes:e}})}))}async getRuntimeSettings(){return await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success){let t=JSON.parse(n.results);return null!=this.userDefinedRegion&&(t.region=JSON.parse(JSON.stringify(this.userDefinedRegion))),e(t)}{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"getRuntimeSettings",id:n,instanceID:this._instanceID})}))}async updateRuntimeSettings(e){let t;if("string"==typeof e)if("speed"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=3,t.expectedBarcodesCount=0,t.localizationModes=[2,0,0,0,0,0,0,0]}else if("balance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=5,t.expectedBarcodesCount=512,t.localizationModes=[2,16,0,0,0,0,0,0]}else if("coverage"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region}else if("dense"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=9,t.expectedBarcodesCount=0,t.localizationModes=[2,8,0,0,0,0,0,0]}else if("distance"==e){let e=await this.getRuntimeSettings();await this.resetRuntimeSettings(),this.maxCvsSideLength=4096,t=await this.getRuntimeSettings(),t.barcodeFormatIds=e.barcodeFormatIds,t.barcodeFormatIds_2=e.barcodeFormatIds_2,t.region=e.region,t.deblurLevel=3,t.expectedBarcodesCount=0,t.localizationModes=[2,8,0,0,0,0,0,0]}else t=JSON.parse(e);else{if("object"!=typeof e)throw TypeError("'UpdateRuntimeSettings(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");if(t=JSON.parse(JSON.stringify(e)),t.region instanceof Array){let e=t.region;[e.regionLeft,e.regionTop,e.regionLeft,e.regionBottom,e.regionMeasuredByPercentage].some((e=>void 0!==e))&&(t.region={regionLeft:e.regionLeft||0,regionTop:e.regionTop||0,regionRight:e.regionRight||0,regionBottom:e.regionBottom||0,regionMeasuredByPercentage:e.regionMeasuredByPercentage||0})}}if(!w._bUseFullFeature){if(0!=(t.barcodeFormatIds&~(L.BF_ONED|L.BF_QR_CODE|L.BF_PDF417|L.BF_DATAMATRIX))||0!=t.barcodeFormatIds_2)throw Error("Some of the specified barcode formats are not supported in the compact version. Please try the full-featured version.");if(0!=t.intermediateResultTypes)throw Error("Intermediate results is not supported in the compact version. Please try the full-featured version.")}if(this.bFilterRegionInJs){let e=t.region;if(e instanceof Array)throw Error("The `region` of type `Array` is only allowed in `BarcodeScanner`.");this.userDefinedRegion=JSON.parse(JSON.stringify(e)),(e.regionLeft||e.regionTop||e.regionRight||e.regionBottom||e.regionMeasuredByPercentage)&&(e.regionLeft||e.regionTop||100!=e.regionRight||100!=e.regionBottom||!e.regionMeasuredByPercentage)?this.region=e:this.region=null,t.region={regionLeft:0,regionTop:0,regionRight:0,regionBottom:0,regionMeasuredByPercentage:0}}else this.userDefinedRegion=null,this.region=null;return await new Promise(((e,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(t=>{if(t.success){try{this._handleRetJsonString(t.updateReturn)}catch(e){n(e)}return e()}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}})),w._dbrWorker.postMessage({type:"updateRuntimeSettings",id:r,instanceID:this._instanceID,body:{settings:JSON.stringify(t)}})}))}async resetRuntimeSettings(){return this.userDefinedRegion=null,this.region=null,this.maxCvsSideLength=v,await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success)return e();{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"resetRuntimeSettings",id:n,instanceID:this._instanceID})}))}async outputRuntimeSettingsToString(){if(!w._bUseFullFeature)throw Error("outputRuntimeSettingsToString() is not supported in the compact version. Please try the full-featured version.");return await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success)return e(n.results);{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"outputRuntimeSettingsToString",id:n,instanceID:this._instanceID})}))}async initRuntimeSettingsWithString(e){if(!w._bUseFullFeature)throw Error("initRuntimeSettingsWithString() is not supported in the compact version. Please try the full-featured version.");if("string"==typeof e)e=e;else{if("object"!=typeof e)throw TypeError("'initRuntimeSettingstWithString(settings)': Type of 'settings' should be 'string' or 'PlainObject'.");e=JSON.stringify(e)}return await new Promise(((t,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(e=>{if(e.success){try{this._handleRetJsonString(e.initReturn)}catch(e){n(e)}return t()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}})),w._dbrWorker.postMessage({type:"initRuntimeSettingsWithString",id:r,instanceID:this._instanceID,body:{settings:e}})}))}async _decode_Blob(e,t){w._onLog&&w._onLog("_decode_Blob(blob: Blob)");let n=null,r=null;if("undefined"!=typeof createImageBitmap)try{n=await createImageBitmap(e)}catch(e){}n||(r=await function(e){return new Promise(((t,n)=>{let r=URL.createObjectURL(e),o=new Image;o.dbrObjUrl=r,o.src=r,o.onload=()=>{t(o)},o.onerror=e=>{n(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}}))}(e));let o=await this._decode_Image(n||r,t);return n&&n.close(),o}async _decode_ArrayBuffer(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Uint8Array(e,t){return await this._decode_Blob(new Blob([e]),t)}async _decode_Image(e,t){w._onLog&&w._onLog("_decode_Image(image: HTMLImageElement|ImageBitmap)"),t=t||{};let n,r,o=e instanceof HTMLImageElement?e.naturalWidth:e.width,i=e instanceof HTMLImageElement?e.naturalHeight:e.height,a=Math.max(o,i);if(a>this._maxCvsSideLength){let e=this._maxCvsSideLength/a;n=Math.round(o*e),r=Math.round(i*e)}else n=o,r=i;this.canvas||(this.canvas=document.createElement("canvas"));const s=this.canvas;s.width===n&&s.height===r||(s.width=n,s.height=r),s.ctx2d||(s.ctx2d=s.getContext("2d"));return s.ctx2d.drawImage(e,0,0,o,i,0,0,n,r),e.dbrObjUrl&&URL.revokeObjectURL(e.dbrObjUrl),await this._decode_Canvas(s,t)}async _decode_Canvas(e,t){if(w._onLog&&w._onLog("_decode_Canvas(canvas:HTMLCanvasElement)"),e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";if(0===e.width||0===e.height)throw Error("The width or height of the 'canvas' is 0.");this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=e,this.oriCanvasData=null);let n=(e.ctx2d||e.getContext("2d")).getImageData(0,0,e.width,e.height).data;return await this._decodeBuffer_Uint8Array(n,e.width,e.height,4*e.width,C.IPF_ABGR_8888,t)}async _decode_Video(e,t){if(w._onLog&&w._onLog("_decode_Video(video)"),!(e instanceof HTMLVideoElement))throw TypeError("'_decode_Video(video [, config] )': Type of 'video' should be 'HTMLVideoElement'.");if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";t=t||{};let n,r,o=e.videoWidth,i=e.videoHeight,a=Math.max(o,i);if(a>this._maxCvsSideLength){let e=this._maxCvsSideLength/a;n=Math.round(o*e),r=Math.round(i*e)}else n=o,r=i;this.canvas||(this.canvas=document.createElement("canvas"));const s=this.canvas;s.width===n&&s.height===r||(s.width=n,s.height=r),s.ctx2d||(s.ctx2d=s.getContext("2d"));return s.ctx2d.drawImage(e,0,0,o,i,0,0,n,r),await this._decode_Canvas(s,t)}async _decode_DCEFrame(e,t){if(w._onLog&&w._onLog("_decode_DCEFrame(dceFrame)"),!w.isDCEFrame(e))return[];let n=[];this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,colorMode:e.colorMode,data:new Uint8Array(e.data),toCanvas:e.toCanvas});const{width:r,height:o,colorMode:i,timeStamp:a}=e;let s;s=t&&t.bCopyData?new Uint8Array(e.data):e.data;let _=null;if(t?(_=JSON.parse(JSON.stringify(t)),_.timeStamp=a):_={timeStamp:a},"grey"===i)n=await this._decodeBuffer_Uint8Array(s,r,o,r,C.IPF_GrayScaled,_);else if("rgba"===i)n=await this._decodeBuffer_Uint8Array(s,r,o,4*r,C.IPF_ABGR_8888,_);else{if("bgra"!==i)throw new Error(`Color mode '${i}' is not supported to decode.`);n=await this._decodeBuffer_Uint8Array(s,r,o,4*r,C.IPF_ARGB_8888,_)}return n}async _decode_DSImage(e,t){if(w._onLog&&w._onLog("_decode_DSImage(dsImage)"),!w.isDSImage(e))return null;this.ifSaveOriginalImageInACanvas&&(this.oriCanvas=null,this.oriCanvasData={width:e.width,height:e.height,pixelFormat:e.pixelFormat.toLowerCase(),data:new Uint8Array(e.data),toCanvas:function(){const e=document.createElement("canvas");let t;switch(e.width=this.width,e.height=this.height,this.pixelFormat){case"grey":t=new Uint8ClampedArray(this.width*this.height*4);for(let e=0;e{let r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="blob",r.send(),r.onloadend=async()=>{t(r.response)},r.onerror=()=>{n(new Error("Network Error: "+r.statusText))}}));return await this._decode_Blob(n,t)}}async _decode_FilePath(e,t){throw w._onLog&&w._onLog("_decode_FilePath(path)"),Error("'_decode_FilePath(path, config)': The method is only supported in node environment.")}static recalculateResultLocation(e,t,n,r,o,i,a){if(e.length>0)for(let s of e){let e=s.localizationResult;2==e.resultCoordinateType&&(e.x1*=.01*i,e.x2*=.01*i,e.x3*=.01*i,e.x4*=.01*i,e.y1*=.01*a,e.y2*=.01*a,e.y3*=.01*a,e.y4*=.01*a);let _=i/r,d=a/o;e.x1=e.x1/_+t,e.x2=e.x2/_+t,e.x3=e.x3/_+t,e.x4=e.x4/_+t,e.y1=e.y1/d+n,e.y2=e.y2/d+n,e.y3=e.y3/d+n,e.y4=e.y4/d+n,2==e.resultCoordinateType&&(e.x1*=100/r,e.x2*=100/r,e.x3*=100/r,e.x4*=100/r,e.y1*=100/o,e.y2*=100/o,e.y3*=100/o,e.y4*=100/o)}}static BarcodeReaderException(e,t){let n,r=y.DBR_UNKNOWN;return"number"==typeof e?(r=e,n=new Error(t)):n=new Error(e),n.code=r,n}_handleRetJsonString(e){let t=y;if(e.textResults){for(let t=0;t{let n=t.indexOf(":");e[t.substring(0,n)]=t.substring(n+1)})),n.exception=e}}return e.decodeRecords?this.decodeRecords=e.decodeRecords:this.decodeRecords={},this._lastErrorCode=e.exception,this._lastErrorString=e.description,e.exception&&!w._setWarnnedEx.has(e.description)&&(w._setWarnnedEx.add(e.description),console.warn(e.description)),e.textResults}if(e.exception==t.DBR_SUCCESS)return e.data;throw w.BarcodeReaderException(e.exception,e.description)}async setModeArgument(e,t,n,r){return await new Promise(((o,i)=>{let a=w._nextTaskID++;w._taskCallbackMap.set(a,(e=>{if(e.success){try{this._handleRetJsonString(e.setReturn)}catch(e){return i(e)}return o()}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}})),w._dbrWorker.postMessage({type:"setModeArgument",id:a,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:n,argumentValue:r}})}))}async getModeArgument(e,t,n){return await new Promise(((r,o)=>{let i=w._nextTaskID++;w._taskCallbackMap.set(i,(e=>{if(e.success){let t;try{t=this._handleRetJsonString(e.getReturn)}catch(e){return o(e)}return r(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,o(t)}})),w._dbrWorker.postMessage({type:"getModeArgument",id:i,instanceID:this._instanceID,body:{modeName:e,index:t,argumentName:n}})}))}async getIntermediateResults(){return await new Promise(((e,t)=>{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success)return e(n.results);{let e=new Error(n.message);return e.stack=n.stack+"\n"+e.stack,t(e)}})),w._dbrWorker.postMessage({type:"getIntermediateResults",id:n,instanceID:this._instanceID})}))}async getIntermediateCanvas(){let e=await this.getIntermediateResults(),t=[];for(let n of e)if(n.dataType==O.IMRDT_IMAGE)for(let e of n.results){const n=e.bytes;let r;switch(w._onLog&&w._onLog(" "+n.length+" "+n.byteLength+" "+e.width+" "+e.height+" "+e.stride+" "+e.format),e.format){case C.IPF_ABGR_8888:r=new Uint8ClampedArray(n);break;case C.IPF_RGB_888:{const e=n.length/3;r=new Uint8ClampedArray(4*e);for(let t=0;t{let n=w._nextTaskID++;w._taskCallbackMap.set(n,(n=>{if(n.success){let t=n.results;return t.intervalTime=this.intervalTime,t.whenToPlaySoundforSuccessfulRead=this.whenToPlaySoundforSuccessfulRead,t.soundOnSuccessfullRead=this.soundSource,t.whenToVibrateforSuccessfulRead=this.whenToVibrateforSuccessfulRead,t.vibrateDuration=this.vibrateDuration,t.captureAndDecodeInParallel=this.captureAndDecodeInParallel,e(t)}{let e=new Error(n.message);return e.stack+="\n"+n.stack,t(e)}})),w._dbrWorker.postMessage({type:"getScanSettings",id:n,instanceID:this._instanceID})}))}async updateScanSettings(e){if(!e)return;const t=JSON.parse(JSON.stringify(e));return t.hasOwnProperty("intervalTime")&&(this.intervalTime=Math.max(t.intervalTime,0),delete t.intervalTime),t.hasOwnProperty("whenToPlaySoundforSuccessfulRead")&&(this.whenToPlaySoundforSuccessfulRead=t.whenToPlaySoundforSuccessfulRead,delete t.whenToPlaySoundforSuccessfulRead),t.hasOwnProperty("soundOnSuccessfullRead")&&(this.soundSource=t.soundOnSuccessfullRead,delete t.soundOnSuccessfullRead),t.hasOwnProperty("whenToVibrateforSuccessfulRead")&&(this.whenToVibrateforSuccessfulRead=t.whenToVibrateforSuccessfulRead,delete t.whenToVibrateforSuccessfulRead),t.hasOwnProperty("vibrateDuration")&&(this.vibrateDuration=t.vibrateDuration,delete t.vibrateDuration),t.hasOwnProperty("captureAndDecodeInParallel")&&(this.captureAndDecodeInParallel=t.captureAndDecodeInParallel,delete t.captureAndDecodeInParallel),await new Promise(((e,n)=>{let r=w._nextTaskID++;w._taskCallbackMap.set(r,(t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack+="\n"+t.stack,n(e)}})),w._dbrWorker.postMessage({type:"updateScanSettings",id:r,instanceID:this._instanceID,body:{settings:t}})}))}_cloneDecodeResults(e){if(e instanceof Array){let t=[];for(let n of e)t.push(this._cloneDecodeResults(n));return t}{let t=e;return JSON.parse(JSON.stringify(t,((e,t)=>"oriVideoCanvas"==e||"searchRegionCanvas"==e?void 0:t)))}}async _loopReadVideo(){if(this.bDestroyed)return this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),void this._drawResults(null);if(this.dce&&!this.dce.isOpen())return this._drawResults(null),void await this.clearMapDecodeRecord();if(!this.dce&&!this._imgSource||this._bPauseScan)return w._onLog&&w._onLog("Scan is paused. Ask in 1s."),await this.clearMapDecodeRecord(),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this._intervalDetectVideoPause));w._onLog&&w._onLog("======= once read ======="),w._onLog&&(this._timeStartDecode=Date.now());let e=null,t=null;if(this.dce)e=this._getVideoFrame();else if(this._imgSource&&(t=await this._imgSource.getImage(),!w.isDSImage(t)))throw new Error("Invalid DSImage.");if(!e&&!t)return this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),void(this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),0));(async()=>{let n=[];if(e){n=await this._decode_DCEFrame(e,{bScanner:!0,bCopyData:!1});let t=null;if(n&&n.length){const{sx:r,sy:o,width:i,height:a,_sWidth:s,_sHeight:_}=e;t=n.map((e=>({localizationResult:JSON.parse(JSON.stringify(e.localizationResult))}))),w.recalculateResultLocation(t,r,o,s,_,i,a)}this._drawResults(t)}else t&&(n=await this._decode_DSImage(t,{bScanner:!0,bCopyData:!1}));return n})().then((e=>{if(w._onLog&&w._onLog(e),this.dce&&this.captureAndDecodeInParallel){let e=this.array_decodeFrameTimeCost,t=this.array_getFrameTimeCost;const n=()=>{let n=0;if(t&&t.length){let r=Math.min(...e),o=Math.max(...t);r&&o&&(n=r-o)}else n=0;return n>0?n:0};(()=>{for(;e.length>=5;)e.shift();e.push(this._lastInnerDecodeDuration)})(),this._intervalGetVideoFrame=n()+this.intervalTime}if((this.dce&&this.dce.isOpen()||this._imgSource)&&!this._bPauseScan){if(this.bPlaySoundOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bPlaySoundOnSuccessfulRead||"frame"===this.bPlaySoundOnSuccessfulRead)t=!0;else if("unique"===this.bPlaySoundOnSuccessfulRead)for(let n of e)if(0==n.resultState){t=!0;break}t&&(this.beepSound.stop(),this.beepSound.play())}if(navigator.vibrate&&this.bVibrateOnSuccessfulRead&&e.length){let t=!1;if(!0===this.bVibrateOnSuccessfulRead||"frame"===this.bVibrateOnSuccessfulRead)t=!0;else if("unique"===this.bVibrateOnSuccessfulRead)for(let n of e)if(0==n.resultState){t=!0;break}if(t)try{navigator.vibrate(this.vibrateDuration)}catch(e){console.warn("Vibration not allowed. User interaction required: "+(e.message||e))}}if(this.onImageRead){let t=this._cloneDecodeResults(e);for(let e of t)0!=e.resultState&&1!=e.resultState||this.onImageRead(t);this.onImageRead(t)}if(this.onUniqueRead)for(let t of e)0==t.resultState&&this.onUniqueRead(t.barcodeText,this._cloneDecodeResults(t))}this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.intervalTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo()}),this.intervalTime):this._loopReadVideo()})).catch((e=>{this.dce&&this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),w._onLog&&w._onLog(e.message||e),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),Math.max(this.intervalTime,1e3)),"platform error"==e.message||console.warn(e.message)}))}_getVideoFrame(){if(!this.dce)return null;let e;if(this.captureAndDecodeInParallel){if(this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",this._intervalGetVideoFrame),!this.dce.numberOfFramesInBuffer)return this._dceControler&&this._dceControler.setDisiredValue(this,"loopInterval",0),null;e=this.dce.getFrameFromBuffer();const t=e=>{if(!e)return;let t=e.timeSpent,n=this.array_getFrameTimeCost;for(;n.length>=5;)n.shift();n.push(t)};t(e)}else this._dceControler&&this._dceControler.setDisiredAction(this,"stopFetchingLoop"),e=this.dce.getFrame();return e}_drawResults(e){if(!this.dce||this._bPauseScan||!this._drawingItemNamespace||!this._drawingItemNamespace.DT_Polygon)return;if(!this._dbrDrawingLayer){if(!this.dce.isOpen())return;this._dbrDrawingLayer=this.dce.getDrawingLayer(3)}const t=this._dbrDrawingLayer;if(t.clearDrawingItems(),e&&e.length)for(let n of e){const e=n.localizationResult,r=new this._drawingItemNamespace.DT_Polygon([{x:e.x1,y:e.y1},{x:e.x2,y:e.y2},{x:e.x3,y:e.y3},{x:e.x4,y:e.y4}]);t.addDrawingItem(r)}}async startScanning(e){if(!this.dce&&!this._imgSource)throw new Error("'imageSource' is not set. call 'setImageSource()' before 'startScanning()'.");if("closed"!=this._tempSolutionStatus)return;if(this._tempSolutionStatus="opening","opening"!=this._tempSolutionStatus)return;let t=null;return this.dce&&(this.dce.isOpen()?(e&&this.dce.appendAndShowUI(),t=JSON.parse(JSON.stringify(this.dce.playCallbackInfo))):t=await this.dce.open(e),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"close"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())),"opening"==this._tempSolutionStatus?(this._bPauseScan=!1,this.dce&&this.dce.singleFrameMode||(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this.dce&&(this.dce.startFetchingLoop(),this._dceControler&&this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"})),this._loopReadVideo()}),0)),this._tempSolutionStatus="opened",this.keepAlive(),t):void 0}stopScanning(e){this.dce&&(this._drawResults(null),this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"close",e))),this._bPauseScan=!0,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this.array_decodeFrameTimeCost.length=0,this.array_getFrameTimeCost.length=0,this._intervalGetVideoFrame=0,this._tempSolutionStatus="closed"}pauseScanning(e){if(e&&e.keepResultsHighlighted||this._drawResults(null),this._bPauseScan=!0,this.dce){if(this.dce.singleFrameMode)throw new Error("'pauseScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this._dceControler&&(this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!1),this.dce.ifShowScanRegionLaser||this.dce.hideScanRegionLaser(),this._dceControler.setDisiredAction(this,"stopFetchingLoop"))}}resumeScanning(){if(this._bPauseScan=!1,this.dce){if(this.dce.singleFrameMode)throw new Error("'resumeScanning()' is unavailable when property 'singleFrameMode' of the 'CameraEnhancer' instance is true.");this.dce.startFetchingLoop(),this._dceControler&&(this._dceControler.clearUserDisiredAction({user:this,actionName:"stopFetchingLoop"}),this._dceControler.clearUserDisiredValue({property:"ifShowScanRegionLaser"}),this._dceControler.setDisiredValue(this,"ifShowScanRegionLaser",!0),this.dce.ifShowScanRegionLaser&&this.dce.showScanRegionLaser())}}destroyContext(){if(w._onLog&&w._onLog("destroyContext()"),this.bDestroyed)return;this.bDestroyed=!0,(this.dce||"opening"===this._tempSolutionStatus)&&this.stopScanning(),this.setImageSource(null);let e=w._nextTaskID++;w._taskCallbackMap.set(e,(e=>{if(!e.success){let t=new Error(e.message);throw t.stack=e.stack+"\n"+t.stack,t}})),w._dbrWorker.postMessage({type:"destroyContext",id:e,instanceID:this._instanceID})}}var b,N,B,P,F,V,x,k,U,G,H,K,W,Y,Q,J,X,Z,j,q,$,z,ee,te,ne,re,oe;w._jsVersion="9.2.12",w._jsEditVersion="20220727",w._version=`loading...(JS ${w._jsVersion}.${w._jsEditVersion})`,w._license=T,w._sessionPassword=S,w.browserInfo=f,w._workerName=`dbr-${w._jsVersion}.browser.worker.js`,w._engineResourcePath=I,w._licenseServer=[],w._deviceFriendlyName="",w._isShowRelDecodeTimeInResults=!1,w._bWasmDebug=!1,w._bNeverShowDialog=!1,w.__bUseFullFeature=!0,w._nextTaskID=0,w._taskCallbackMap=new Map,w._pLoad=new class extends Promise{constructor(e){let t,n;super(((e,r)=>{t=e,n=r})),this._s="pending",this.resolve=e=>{this.isPending&&(M(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",n(e))},this.task=e}get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,M(e)?t=e:"function"==typeof e&&(t=new Promise(e)),t&&(async()=>{try{const n=await t;e===this._task&&this.resolve(n)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}},w._lastErrorCode=0,w._lastErrorString="",w._setWarnnedEx=new Set,w._defaultUIElementURL="@engineResourcePath/dbr.ui.html",function(e){e[e.BICM_DARK_ON_LIGHT=1]="BICM_DARK_ON_LIGHT",e[e.BICM_LIGHT_ON_DARK=2]="BICM_LIGHT_ON_DARK",e[e.BICM_DARK_ON_DARK=4]="BICM_DARK_ON_DARK",e[e.BICM_LIGHT_ON_LIGHT=8]="BICM_LIGHT_ON_LIGHT",e[e.BICM_DARK_LIGHT_MIXED=16]="BICM_DARK_LIGHT_MIXED",e[e.BICM_DARK_ON_LIGHT_DARK_SURROUNDING=32]="BICM_DARK_ON_LIGHT_DARK_SURROUNDING",e[e.BICM_SKIP=0]="BICM_SKIP",e[e.BICM_REV=2147483648]="BICM_REV"}(b||(b={})),function(e){e[e.BCM_AUTO=1]="BCM_AUTO",e[e.BCM_GENERAL=2]="BCM_GENERAL",e[e.BCM_SKIP=0]="BCM_SKIP",e[e.BCM_REV=2147483648]="BCM_REV"}(N||(N={})),function(e){e[e.BF2_NULL=0]="BF2_NULL",e[e.BF2_POSTALCODE=32505856]="BF2_POSTALCODE",e[e.BF2_NONSTANDARD_BARCODE=1]="BF2_NONSTANDARD_BARCODE",e[e.BF2_USPSINTELLIGENTMAIL=1048576]="BF2_USPSINTELLIGENTMAIL",e[e.BF2_POSTNET=2097152]="BF2_POSTNET",e[e.BF2_PLANET=4194304]="BF2_PLANET",e[e.BF2_AUSTRALIANPOST=8388608]="BF2_AUSTRALIANPOST",e[e.BF2_RM4SCC=16777216]="BF2_RM4SCC",e[e.BF2_DOTCODE=2]="BF2_DOTCODE",e[e.BF2_PHARMACODE_ONE_TRACK=4]="BF2_PHARMACODE_ONE_TRACK",e[e.BF2_PHARMACODE_TWO_TRACK=8]="BF2_PHARMACODE_TWO_TRACK",e[e.BF2_PHARMACODE=12]="BF2_PHARMACODE"}(B||(B={})),function(e){e[e.BM_AUTO=1]="BM_AUTO",e[e.BM_LOCAL_BLOCK=2]="BM_LOCAL_BLOCK",e[e.BM_SKIP=0]="BM_SKIP",e[e.BM_THRESHOLD=4]="BM_THRESHOLD",e[e.BM_REV=2147483648]="BM_REV"}(P||(P={})),function(e){e[e.ECCM_CONTRAST=1]="ECCM_CONTRAST"}(F||(F={})),function(e){e[e.CFM_GENERAL=1]="CFM_GENERAL"}(V||(V={})),function(e){e[e.CCM_AUTO=1]="CCM_AUTO",e[e.CCM_GENERAL_HSV=2]="CCM_GENERAL_HSV",e[e.CCM_SKIP=0]="CCM_SKIP",e[e.CCM_REV=2147483648]="CCM_REV"}(x||(x={})),function(e){e[e.CICM_GENERAL=1]="CICM_GENERAL",e[e.CICM_SKIP=0]="CICM_SKIP",e[e.CICM_REV=2147483648]="CICM_REV"}(k||(k={})),function(e){e[e.CM_IGNORE=1]="CM_IGNORE",e[e.CM_OVERWRITE=2]="CM_OVERWRITE"}(U||(U={})),function(e){e[e.DM_SKIP=0]="DM_SKIP",e[e.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",e[e.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",e[e.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",e[e.DM_SMOOTHING=8]="DM_SMOOTHING",e[e.DM_MORPHING=16]="DM_MORPHING",e[e.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",e[e.DM_SHARPENING=64]="DM_SHARPENING",e[e.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",e[e.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING"}(G||(G={})),function(e){e[e.DRM_AUTO=1]="DRM_AUTO",e[e.DRM_GENERAL=2]="DRM_GENERAL",e[e.DRM_BROAD_WARP=4]="DRM_BROAD_WARP",e[e.DRM_LOCAL_REFERENCE=8]="DRM_LOCAL_REFERENCE",e[e.DRM_DEWRINKLE=16]="DRM_DEWRINKLE",e[e.DRM_SKIP=0]="DRM_SKIP",e[e.DRM_REV=2147483648]="DRM_REV"}(H||(H={})),function(e){e[e.DPMCRM_AUTO=1]="DPMCRM_AUTO",e[e.DPMCRM_GENERAL=2]="DPMCRM_GENERAL",e[e.DPMCRM_SKIP=0]="DPMCRM_SKIP",e[e.DPMCRM_REV=2147483648]="DPMCRM_REV"}(K||(K={})),function(e){e[e.GTM_INVERTED=1]="GTM_INVERTED",e[e.GTM_ORIGINAL=2]="GTM_ORIGINAL",e[e.GTM_SKIP=0]="GTM_SKIP",e[e.GTM_REV=2147483648]="GTM_REV"}(W||(W={})),function(e){e[e.IPM_AUTO=1]="IPM_AUTO",e[e.IPM_GENERAL=2]="IPM_GENERAL",e[e.IPM_GRAY_EQUALIZE=4]="IPM_GRAY_EQUALIZE",e[e.IPM_GRAY_SMOOTH=8]="IPM_GRAY_SMOOTH",e[e.IPM_SHARPEN_SMOOTH=16]="IPM_SHARPEN_SMOOTH",e[e.IPM_MORPHOLOGY=32]="IPM_MORPHOLOGY",e[e.IPM_SKIP=0]="IPM_SKIP",e[e.IPM_REV=2147483648]="IPM_REV"}(Y||(Y={})),function(e){e[e.IRSM_MEMORY=1]="IRSM_MEMORY",e[e.IRSM_FILESYSTEM=2]="IRSM_FILESYSTEM",e[e.IRSM_BOTH=4]="IRSM_BOTH"}(Q||(Q={})),function(e){e[e.IRT_NO_RESULT=0]="IRT_NO_RESULT",e[e.IRT_ORIGINAL_IMAGE=1]="IRT_ORIGINAL_IMAGE",e[e.IRT_COLOUR_CLUSTERED_IMAGE=2]="IRT_COLOUR_CLUSTERED_IMAGE",e[e.IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE=4]="IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE",e[e.IRT_TRANSFORMED_GRAYSCALE_IMAGE=8]="IRT_TRANSFORMED_GRAYSCALE_IMAGE",e[e.IRT_PREDETECTED_REGION=16]="IRT_PREDETECTED_REGION",e[e.IRT_PREPROCESSED_IMAGE=32]="IRT_PREPROCESSED_IMAGE",e[e.IRT_BINARIZED_IMAGE=64]="IRT_BINARIZED_IMAGE",e[e.IRT_TEXT_ZONE=128]="IRT_TEXT_ZONE",e[e.IRT_CONTOUR=256]="IRT_CONTOUR",e[e.IRT_LINE_SEGMENT=512]="IRT_LINE_SEGMENT",e[e.IRT_FORM=1024]="IRT_FORM",e[e.IRT_SEGMENTATION_BLOCK=2048]="IRT_SEGMENTATION_BLOCK",e[e.IRT_TYPED_BARCODE_ZONE=4096]="IRT_TYPED_BARCODE_ZONE",e[e.IRT_PREDETECTED_QUADRILATERAL=8192]="IRT_PREDETECTED_QUADRILATERAL"}(J||(J={})),function(e){e[e.LM_SKIP=0]="LM_SKIP",e[e.LM_AUTO=1]="LM_AUTO",e[e.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",e[e.LM_LINES=8]="LM_LINES",e[e.LM_STATISTICS=4]="LM_STATISTICS",e[e.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",e[e.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",e[e.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",e[e.LM_CENTRE=128]="LM_CENTRE",e[e.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",e[e.LM_REV=2147483648]="LM_REV"}(X||(X={})),function(e){e[e.PDFRM_RASTER=1]="PDFRM_RASTER",e[e.PDFRM_AUTO=2]="PDFRM_AUTO",e[e.PDFRM_VECTOR=4]="PDFRM_VECTOR",e[e.PDFRM_REV=2147483648]="PDFRM_REV"}(Z||(Z={})),function(e){e[e.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",e[e.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",e[e.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",e[e.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(j||(j={})),function(e){e[e.RPM_AUTO=1]="RPM_AUTO",e[e.RPM_GENERAL=2]="RPM_GENERAL",e[e.RPM_GENERAL_RGB_CONTRAST=4]="RPM_GENERAL_RGB_CONTRAST",e[e.RPM_GENERAL_GRAY_CONTRAST=8]="RPM_GENERAL_GRAY_CONTRAST",e[e.RPM_GENERAL_HSV_CONTRAST=16]="RPM_GENERAL_HSV_CONTRAST",e[e.RPM_SKIP=0]="RPM_SKIP",e[e.RPM_REV=2147483648]="RPM_REV"}(q||(q={})),function(e){e[e.RCT_PIXEL=1]="RCT_PIXEL",e[e.RCT_PERCENTAGE=2]="RCT_PERCENTAGE"}($||($={})),function(e){e[e.RT_STANDARD_TEXT=0]="RT_STANDARD_TEXT",e[e.RT_RAW_TEXT=1]="RT_RAW_TEXT",e[e.RT_CANDIDATE_TEXT=2]="RT_CANDIDATE_TEXT",e[e.RT_PARTIAL_TEXT=3]="RT_PARTIAL_TEXT"}(z||(z={})),function(e){e[e.SUM_AUTO=1]="SUM_AUTO",e[e.SUM_LINEAR_INTERPOLATION=2]="SUM_LINEAR_INTERPOLATION",e[e.SUM_NEAREST_NEIGHBOUR_INTERPOLATION=4]="SUM_NEAREST_NEIGHBOUR_INTERPOLATION",e[e.SUM_SKIP=0]="SUM_SKIP",e[e.SUM_REV=2147483648]="SUM_REV"}(ee||(ee={})),function(e){e[e.TP_REGION_PREDETECTED=1]="TP_REGION_PREDETECTED",e[e.TP_IMAGE_PREPROCESSED=2]="TP_IMAGE_PREPROCESSED",e[e.TP_IMAGE_BINARIZED=4]="TP_IMAGE_BINARIZED",e[e.TP_BARCODE_LOCALIZED=8]="TP_BARCODE_LOCALIZED",e[e.TP_BARCODE_TYPE_DETERMINED=16]="TP_BARCODE_TYPE_DETERMINED",e[e.TP_BARCODE_RECOGNIZED=32]="TP_BARCODE_RECOGNIZED"}(te||(te={})),function(e){e[e.TFM_AUTO=1]="TFM_AUTO",e[e.TFM_GENERAL_CONTOUR=2]="TFM_GENERAL_CONTOUR",e[e.TFM_SKIP=0]="TFM_SKIP",e[e.TFM_REV=2147483648]="TFM_REV"}(ne||(ne={})),function(e){e[e.TROM_CONFIDENCE=1]="TROM_CONFIDENCE",e[e.TROM_POSITION=2]="TROM_POSITION",e[e.TROM_FORMAT=4]="TROM_FORMAT",e[e.TROM_SKIP=0]="TROM_SKIP",e[e.TROM_REV=2147483648]="TROM_REV"}(re||(re={})),function(e){e[e.TDM_AUTO=1]="TDM_AUTO",e[e.TDM_GENERAL_WIDTH_CONCENTRATION=2]="TDM_GENERAL_WIDTH_CONCENTRATION",e[e.TDM_SKIP=0]="TDM_SKIP",e[e.TDM_REV=2147483648]="TDM_REV"}(oe||(oe={}));export{w as BarcodeReader,b as EnumBarcodeColourMode,N as EnumBarcodeComplementMode,L as EnumBarcodeFormat,B as EnumBarcodeFormat_2,P as EnumBinarizationMode,F as EnumClarityCalculationMethod,V as EnumClarityFilterMode,x as EnumColourClusteringMode,k as EnumColourConversionMode,U as EnumConflictMode,K as EnumDPMCodeReadingMode,G as EnumDeblurMode,H as EnumDeformationResistingMode,y as EnumErrorCode,W as EnumGrayscaleTransformationMode,O as EnumIMResultDataType,C as EnumImagePixelFormat,Y as EnumImagePreprocessingMode,Q as EnumIntermediateResultSavingMode,J as EnumIntermediateResultType,X as EnumLocalizationMode,Z as EnumPDFReadingMode,j as EnumQRCodeErrorCorrectionLevel,q as EnumRegionPredetectionMode,$ as EnumResultCoordinateType,z as EnumResultType,ee as EnumScaleUpMode,te as EnumTerminatePhase,ne as EnumTextFilterMode,re as EnumTextResultOrderMode,oe as EnumTextureDetectionMode}; diff --git a/dist/types/class/barcodereader.d.ts b/dist/types/class/barcodereader.d.ts index 86866ee..e9a8a2d 100644 --- a/dist/types/class/barcodereader.d.ts +++ b/dist/types/class/barcodereader.d.ts @@ -28,7 +28,7 @@ export default class BarcodeReader { * ``` * For convenience, you can set `license` in `script` tag instead. * ```html - * + * * ``` */ static set license(license: string); @@ -83,7 +83,7 @@ export default class BarcodeReader { * If the auto-explored engine location is incorrect, you can manually specify the engine location. * The property needs to be set before [[loadWasm]]. * ```js - * Dynamsoft.DBR.BarcodeReader.engineResourcePath = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.2.11/dist/"; + * Dynamsoft.DBR.BarcodeReader.engineResourcePath = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.2.12/dist/"; * await Dynamsoft.DBR.BarcodeReader.loadWasm(); * ``` */ @@ -229,7 +229,7 @@ export default class BarcodeReader { * The url of the default scanner UI. * Can only be changed before `createInstance`. * ```js - * Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.2.11/dist/dbr.ui.html"; + * Dynamsoft.DBR.BarcodeScanner.defaultUIElementURL = "https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.2.12/dist/dbr.ui.html"; * let pScanner = null; * (async()=>{ * let scanner = await (pScanner = pScanner || Dynamsoft.DBR.BarcodeScanner.createInstance()); diff --git a/dist/types/class/barcodescanner.d.ts b/dist/types/class/barcodescanner.d.ts index 1c1eb25..a03a87b 100644 --- a/dist/types/class/barcodescanner.d.ts +++ b/dist/types/class/barcodescanner.d.ts @@ -511,7 +511,7 @@ export default class BarcodeScanner extends BarcodeReader { /** * Bind UI, open the camera, start decoding, and remove the UIElement `display` style if the original style is `display:none;`. * ```js - * await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.2.11/dist/dbr.ui.html"); + * await scanner.setUIElement("https://cdn.jsdelivr.net/npm/dynamsoft-javascript-barcode@9.2.12/dist/dbr.ui.html"); * scanner.onUniqueRead = (txt, result) => { alert(txt); console.log(result); }; * await scanner.show(); * // await scanner.hide(); diff --git a/package.json b/package.json index 439bd58..0c15dfd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dynamsoft-javascript-barcode", - "version": "9.2.11", + "version": "9.2.12", "description": "Dynamsoft Barcode Reader JS is a recognition SDK which enables you to embed barcode reading functionality in your web, desktop, and mobile applications. With a few lines of JavaScript code, you can develop a robust application to scan a linear barcode, QR Code, DaraMatrix, PDF417, and Aztec Code.", "files": [ "/dist", @@ -85,6 +85,6 @@ }, "dependencies": { "dm-howler": "^2.2.4", - "dynamsoft-camera-enhancer": "^3.0.0" + "dynamsoft-camera-enhancer": "3.0.1" } } diff --git a/samples.url b/samples.url index 119e8f1..ca303cc 100644 --- a/samples.url +++ b/samples.url @@ -1,2 +1,2 @@ [InternetShortcut] -URL=https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/v9.2.11 \ No newline at end of file +URL=https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/v9.2.12 \ No newline at end of file