@idscan/onboarding 2.9.3 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -981,7 +981,7 @@ class RequestTimeoutError extends WrapperError {
981
981
  }
982
982
  }
983
983
  const success = { "validationResponseId": 6223, "validationRequestId": "8151f48d-bab1-4491-037d-08d9b3c5cfec", "documentType": 1, "document": { "abbr3Country": "USA", "abbrCountry": "US", "address": "25805 VAN LEUVEN ST 136", "city": "LOMA LINDA", "class": "C", "country": "United States of America", "dob": "1961-01-07", "expires": "2024-01-07", "eyes": "Brown", "familyName": "GILMER", "firstName": "DARIENNE", "fullName": "DARIENNE ELIZABETH GILMER", "gender": "Female", "hair": "Black", "height": "064 IN", "id": "C3568758", "idType": "DL", "issued": "2019-01-07", "middleName": "ELIZABETH", "postalBox": null, "privateName": "ELIZABETH", "state": "CA", "template": "09", "weight": "77", "zip": "92354-0000" }, "attemptsLeft": 0, "status": 0, "validationStatus": { "expired": false, "documentIsValid": true, "faceIsValid": true }, "invalidDataErrors": null, "faceSuccess": null, "documentSuccess": null, "documentHasNotExpired": null, "documentValidationTests": [{ "displayName": "DMV", "name": "DMVValidation", "status": 0, "statusString": "Failed", "reason": "Internal Server Error" }, { "displayName": "IdentiFraud", "name": "IdentiFraudValidation", "status": -1, "statusString": "Disabled", "reason": "Integration was turned off" }] };
984
- const json = {
984
+ const json$4 = {
985
985
  success
986
986
  };
987
987
  class FaceAuthorizationError extends WrapperError {
@@ -1172,7 +1172,7 @@ class Api {
1172
1172
  }
1173
1173
  async validateApplicant(data, demoMode = false, isFaceAuth = false) {
1174
1174
  if (demoMode) {
1175
- return json.success;
1175
+ return json$4.success;
1176
1176
  }
1177
1177
  const url = `${this.baseUrl}Validation`;
1178
1178
  const response = await fetch(url, {
@@ -1743,6 +1743,565 @@ class Validation {
1743
1743
  this.modal.hide();
1744
1744
  }
1745
1745
  }
1746
+ const apiKeys$1 = ["scheduling", "userActivation", "geolocation", "webkitTemporaryStorage", "webkitPersistentStorage", "getGamepads", "javaEnabled", "sendBeacon", "vibrate", "clipboard", "credentials", "keyboard", "managed", "mediaDevices", "storage", "serviceWorker", "virtualKeyboard", "wakeLock", "ink", "hid", "locks", "mediaCapabilities", "mediaSession", "presentation", "serial", "usb", "windowControlsOverlay", "xr", "userAgentData", "canShare", "share", "clearAppBadge", "getBattery", "getUserMedia", "requestMIDIAccess", "requestMediaKeySystemAccess", "setAppBadge", "webkitGetUserMedia", "getInstalledRelatedApps", "registerProtocolHandler", "unregisterProtocolHandler"];
1747
+ const json$3 = {
1748
+ apiKeys: apiKeys$1
1749
+ };
1750
+ function getIntlInfo() {
1751
+ const locale = navigator.language;
1752
+ if (locale && window.Intl) {
1753
+ const localeDate = new Intl.DateTimeFormat(locale, { dateStyle: "full", timeStyle: "long" });
1754
+ const {
1755
+ calendar,
1756
+ numberingSystem
1757
+ } = localeDate.resolvedOptions();
1758
+ const { weekInfo, collations } = new Intl.Locale(locale);
1759
+ return {
1760
+ locale,
1761
+ calendar,
1762
+ numberingSystem,
1763
+ weekInfo,
1764
+ collations
1765
+ };
1766
+ }
1767
+ return {};
1768
+ }
1769
+ function getNavigatorInfo() {
1770
+ const {
1771
+ userAgent,
1772
+ cookieEnabled,
1773
+ platform,
1774
+ hardwareConcurrency,
1775
+ languages
1776
+ } = navigator;
1777
+ return {
1778
+ userAgent,
1779
+ cookieEnabled,
1780
+ platform,
1781
+ hardwareConcurrency,
1782
+ languages
1783
+ };
1784
+ }
1785
+ function getAvailableNavigatorApiInfo() {
1786
+ return json$3.apiKeys.reduce((res, key) => {
1787
+ res[key] = !!window.navigator[key];
1788
+ return res;
1789
+ }, {});
1790
+ }
1791
+ function getAdditionalApiInfo() {
1792
+ const additionalApiKeys = [
1793
+ "BatteryManager",
1794
+ "NetworkInformation"
1795
+ ];
1796
+ return additionalApiKeys.reduce((res, key) => {
1797
+ res[key] = !!window.navigator[key];
1798
+ return res;
1799
+ }, {});
1800
+ }
1801
+ async function getBrowserInfo() {
1802
+ return {
1803
+ internationalizationInfo: getIntlInfo(),
1804
+ navigatorInfo: getNavigatorInfo(),
1805
+ availableNavigatorApiInfo: getAvailableNavigatorApiInfo(),
1806
+ additionalApiInfo: getAdditionalApiInfo()
1807
+ };
1808
+ }
1809
+ async function getScreenResolutionInfo() {
1810
+ const {
1811
+ width,
1812
+ height,
1813
+ availWidth,
1814
+ availHeight,
1815
+ colorDepth,
1816
+ pixelDepth,
1817
+ orientation
1818
+ } = window.screen;
1819
+ const {
1820
+ innerWidth,
1821
+ innerHeight,
1822
+ outerWidth,
1823
+ outerHeight
1824
+ } = window;
1825
+ return {
1826
+ width,
1827
+ height,
1828
+ availWidth,
1829
+ availHeight,
1830
+ colorDepth,
1831
+ pixelDepth,
1832
+ orientationAngle: orientation.angle,
1833
+ orientationType: orientation.type,
1834
+ innerWidth,
1835
+ innerHeight,
1836
+ outerWidth,
1837
+ outerHeight
1838
+ };
1839
+ }
1840
+ async function getBatteryInfo() {
1841
+ if (navigator == null ? void 0 : navigator.getBattery) {
1842
+ const { charging, chargingTime, dischargingTime, level } = await navigator.getBattery();
1843
+ return {
1844
+ charging,
1845
+ chargingTime,
1846
+ dischargingTime,
1847
+ level
1848
+ };
1849
+ }
1850
+ return {};
1851
+ }
1852
+ async function getConnectionInfo() {
1853
+ if (navigator.connection) {
1854
+ const { effectiveType, downlink, rtt, saveData, type, downlinkMax } = navigator.connection;
1855
+ return {
1856
+ effectiveType,
1857
+ downlink,
1858
+ rtt,
1859
+ saveData,
1860
+ type,
1861
+ downlinkMax
1862
+ };
1863
+ }
1864
+ return {};
1865
+ }
1866
+ async function decrypt(text = "") {
1867
+ if (window.crypto) {
1868
+ const textUint8 = new TextEncoder().encode(text);
1869
+ const subtle = crypto.subtle || crypto.webkitSubtle;
1870
+ const hashBuffer = await subtle.digest("SHA-256", textUint8);
1871
+ const hashArray = Array.from(new Uint8Array(hashBuffer));
1872
+ const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
1873
+ return hashHex;
1874
+ }
1875
+ return text;
1876
+ }
1877
+ async function getCanvasInfo() {
1878
+ const canvas2 = document.createElement("canvas");
1879
+ const ctx = canvas2.getContext("2d");
1880
+ ctx.canvas.width = 500;
1881
+ ctx.fillStyle = "rgb(255,0,255)";
1882
+ ctx.beginPath();
1883
+ ctx.rect(20, 20, 150, 100);
1884
+ ctx.fill();
1885
+ ctx.stroke();
1886
+ ctx.closePath();
1887
+ ctx.beginPath();
1888
+ ctx.fillStyle = "rgb(0,255,255)";
1889
+ ctx.arc(50, 50, 50, 0, Math.PI * 2, true);
1890
+ ctx.fill();
1891
+ ctx.stroke();
1892
+ ctx.closePath();
1893
+ const txt = "i9as..$#po((^@KbXrw!~cz#$%^@£éúöüà情報çõ能的Fr<🍏🍎🍐🍊🍋";
1894
+ ctx.textBaseline = "top";
1895
+ ctx.font = "14px 'Arial'";
1896
+ ctx.textBaseline = "alphabetic";
1897
+ ctx.fillStyle = "rgb(255,5,5)";
1898
+ ctx.rotate(0.03);
1899
+ ctx.fillText(txt, 4, 17);
1900
+ ctx.fillStyle = "#069";
1901
+ ctx.fillText(txt, 2, 15);
1902
+ ctx.fillStyle = "rgba(102, 204, 0, 0.7)";
1903
+ ctx.fillText(txt, 4, 17);
1904
+ ctx.shadowBlur = 8;
1905
+ ctx.shadowColor = "red";
1906
+ ctx.fillRect(20, 12, 100, 5);
1907
+ ctx.globalCompositeOperation = "multiply";
1908
+ ctx.fillStyle = "rgb(255,0,255)";
1909
+ ctx.beginPath();
1910
+ ctx.arc(50, 50, 50, 0, Math.PI * 2, true);
1911
+ ctx.closePath();
1912
+ ctx.fill();
1913
+ ctx.fillStyle = "rgb(0,255,255)";
1914
+ ctx.beginPath();
1915
+ ctx.arc(100, 50, 50, 0, Math.PI * 2, true);
1916
+ ctx.closePath();
1917
+ ctx.fill();
1918
+ ctx.fillStyle = "rgb(255,255,0)";
1919
+ ctx.beginPath();
1920
+ ctx.arc(75, 100, 50, 0, Math.PI * 2, true);
1921
+ ctx.closePath();
1922
+ ctx.fill();
1923
+ ctx.fillStyle = "rgb(255,0,255)";
1924
+ ctx.arc(75, 75, 75, 0, Math.PI * 2, true);
1925
+ ctx.arc(75, 75, 25, 0, Math.PI * 2, true);
1926
+ ctx.fill("evenodd");
1927
+ const base64Data = canvas2.toDataURL();
1928
+ return decrypt(base64Data);
1929
+ }
1930
+ const fonts = /* @__PURE__ */ JSON.parse('[".Aqua Kana",".Helvetica LT MM",".Times LT MM","18thCentury","8514oem","AR BERKLEY","AR JULIAN","AR PL UKai CN","AR PL UMing CN","AR PL UMing HK","AR PL UMing TW","AR PL UMing TW MBE","Aakar","Abadi MT Condensed Extra Bold","Abadi MT Condensed Light","Abyssinica SIL","AcmeFont","Adobe Arabic","Agency FB","Aharoni","Aharoni Bold","Al Bayan","Al Bayan Bold","Al Bayan Plain","Al Nile","Al Tarikh","Aldhabi","Alfredo","Algerian","Alien Encounters","Almonte Snow","American Typewriter","American Typewriter Bold","American Typewriter Condensed","American Typewriter Light","Amethyst","Andale Mono","Andale Mono Version","Andalus","Angsana New","AngsanaUPC","Ani","AnjaliOldLipi","Aparajita","Apple Braille","Apple Braille Outline 6 Dot","Apple Braille Outline 8 Dot","Apple Braille Pinpoint 6 Dot","Apple Braille Pinpoint 8 Dot","Apple Chancery","Apple Color Emoji","Apple LiGothic Medium","Apple LiSung Light","Apple SD Gothic Neo","Apple SD Gothic Neo Regular","Apple SD GothicNeo ExtraBold","Apple Symbols","AppleGothic","AppleGothic Regular","AppleMyungjo","AppleMyungjo Regular","AquaKana","Arabic Transparent","Arabic Typesetting","Arial","Arial Baltic","Arial Black","Arial Bold","Arial Bold Italic","Arial CE","Arial CYR","Arial Greek","Arial Hebrew","Arial Hebrew Bold","Arial Italic","Arial Narrow","Arial Narrow Bold","Arial Narrow Bold Italic","Arial Narrow Italic","Arial Rounded Bold","Arial Rounded MT Bold","Arial TUR","Arial Unicode MS","ArialHB","Arimo","Asimov","Autumn","Avenir","Avenir Black","Avenir Book","Avenir Next","Avenir Next Bold","Avenir Next Condensed","Avenir Next Condensed Bold","Avenir Next Demi Bold","Avenir Next Heavy","Avenir Next Regular","Avenir Roman","Ayuthaya","BN Jinx","BN Machine","BOUTON International Symbols","Baby Kruffy","Baghdad","Bahnschrift","Balthazar","Bangla MN","Bangla MN Bold","Bangla Sangam MN","Bangla Sangam MN Bold","Baskerville","Baskerville Bold","Baskerville Bold Italic","Baskerville Old Face","Baskerville SemiBold","Baskerville SemiBold Italic","Bastion","Batang","BatangChe","Bauhaus 93","Beirut","Bell MT","Bell MT Bold","Bell MT Italic","Bellerose","Berlin Sans FB","Berlin Sans FB Demi","Bernard MT Condensed","BiauKai","Big Caslon","Big Caslon Medium","Birch Std","Bitstream Charter","Bitstream Vera Sans","Blackadder ITC","Blackoak Std","Bobcat","Bodoni 72","Bodoni MT","Bodoni MT Black","Bodoni MT Poster Compressed","Bodoni Ornaments","BolsterBold","Book Antiqua","Book Antiqua Bold","Bookman Old Style","Bookman Old Style Bold","Bookshelf Symbol 7","Borealis","Bradley Hand","Bradley Hand ITC","Braggadocio","Brandish","Britannic Bold","Broadway","Browallia New","BrowalliaUPC","Brush Script","Brush Script MT","Brush Script MT Italic","Brush Script Std","Brussels","Calibri","Calibri Bold","Calibri Light","Californian FB","Calisto MT","Calisto MT Bold","Calligraphic","Calvin","Cambria","Cambria Bold","Cambria Math","Candara","Candara Bold","Candles","Carrois Gothic SC","Castellar","Centaur","Century","Century Gothic","Century Gothic Bold","Century Schoolbook","Century Schoolbook Bold","Century Schoolbook L","Chalkboard","Chalkboard Bold","Chalkboard SE","Chalkboard SE Bold","ChalkboardBold","Chalkduster","Chandas","Chaparral Pro","Chaparral Pro Light","Charlemagne Std","Charter","Chilanka","Chiller","Chinyen","Clarendon","Cochin","Cochin Bold","Colbert","Colonna MT","Comic Sans MS","Comic Sans MS Bold","Commons","Consolas","Consolas Bold","Constantia","Constantia Bold","Coolsville","Cooper Black","Cooper Std Black","Copperplate","Copperplate Bold","Copperplate Gothic Bold","Copperplate Light","Corbel","Corbel Bold","Cordia New","CordiaUPC","Corporate","Corsiva","Corsiva Hebrew","Corsiva Hebrew Bold","Courier","Courier 10 Pitch","Courier Bold","Courier New","Courier New Baltic","Courier New Bold","Courier New CE","Courier New Italic","Courier Oblique","Cracked Johnnie","Creepygirl","Curlz MT","Cursor","Cutive Mono","DFKai-SB","DIN Alternate","DIN Condensed","Damascus","Damascus Bold","Dancing Script","DaunPenh","David","Dayton","DecoType Naskh","Deja Vu","DejaVu LGC Sans","DejaVu Sans","DejaVu Sans Mono","DejaVu Serif","Deneane","Desdemona","Detente","Devanagari MT","Devanagari MT Bold","Devanagari Sangam MN","Didot","Didot Bold","Digifit","DilleniaUPC","Dingbats","Distant Galaxy","Diwan Kufi","Diwan Kufi Regular","Diwan Thuluth","Diwan Thuluth Regular","DokChampa","Dominican","Dotum","DotumChe","Droid Sans","Droid Sans Fallback","Droid Sans Mono","Dyuthi","Ebrima","Edwardian Script ITC","Elephant","Emmett","Engravers MT","Engravers MT Bold","Enliven","Eras Bold ITC","Estrangelo Edessa","Ethnocentric","EucrosiaUPC","Euphemia","Euphemia UCAS","Euphemia UCAS Bold","Eurostile","Eurostile Bold","Expressway Rg","FangSong","Farah","Farisi","Felix Titling","Fingerpop","Fixedsys","Flubber","Footlight MT Light","Forte","FrankRuehl","Frankfurter Venetian TT","Franklin Gothic Book","Franklin Gothic Book Italic","Franklin Gothic Medium","Franklin Gothic Medium Cond","Franklin Gothic Medium Italic","FreeMono","FreeSans","FreeSerif","FreesiaUPC","Freestyle Script","French Script MT","Futura","Futura Condensed ExtraBold","Futura Medium","GB18030 Bitmap","Gabriola","Gadugi","Garamond","Garamond Bold","Gargi","Garuda","Gautami","Gazzarelli","Geeza Pro","Geeza Pro Bold","Geneva","GenevaCY","Gentium","Gentium Basic","Gentium Book Basic","GentiumAlt","Georgia","Georgia Bold","Geotype TT","Giddyup Std","Gigi","Gill","Gill Sans","Gill Sans Bold","Gill Sans MT","Gill Sans MT Bold","Gill Sans MT Condensed","Gill Sans MT Ext Condensed Bold","Gill Sans MT Italic","Gill Sans Ultra Bold","Gill Sans Ultra Bold Condensed","Gisha","Glockenspiel","Gloucester MT Extra Condensed","Good Times","Goudy","Goudy Old Style","Goudy Old Style Bold","Goudy Stout","Greek Diner Inline TT","Gubbi","Gujarati MT","Gujarati MT Bold","Gujarati Sangam MN","Gujarati Sangam MN Bold","Gulim","GulimChe","GungSeo Regular","Gungseouche","Gungsuh","GungsuhChe","Gurmukhi","Gurmukhi MN","Gurmukhi MN Bold","Gurmukhi MT","Gurmukhi Sangam MN","Gurmukhi Sangam MN Bold","Haettenschweiler","Hand Me Down S (BRK)","Hansen","Harlow Solid Italic","Harrington","Harvest","HarvestItal","Haxton Logos TT","HeadLineA Regular","HeadlineA","Heavy Heap","Hei","Hei Regular","Heiti SC","Heiti SC Light","Heiti SC Medium","Heiti TC","Heiti TC Light","Heiti TC Medium","Helvetica","Helvetica Bold","Helvetica CY Bold","Helvetica CY Plain","Helvetica LT Std","Helvetica Light","Helvetica Neue","Helvetica Neue Bold","Helvetica Neue Medium","Helvetica Oblique","HelveticaCY","HelveticaNeueLT Com 107 XBlkCn","Herculanum","High Tower Text","Highboot","Hiragino Kaku Gothic Pro W3","Hiragino Kaku Gothic Pro W6","Hiragino Kaku Gothic ProN W3","Hiragino Kaku Gothic ProN W6","Hiragino Kaku Gothic Std W8","Hiragino Kaku Gothic StdN W8","Hiragino Maru Gothic Pro W4","Hiragino Maru Gothic ProN W4","Hiragino Mincho Pro W3","Hiragino Mincho Pro W6","Hiragino Mincho ProN W3","Hiragino Mincho ProN W6","Hiragino Sans GB W3","Hiragino Sans GB W6","Hiragino Sans W0","Hiragino Sans W1","Hiragino Sans W2","Hiragino Sans W3","Hiragino Sans W4","Hiragino Sans W5","Hiragino Sans W6","Hiragino Sans W7","Hiragino Sans W8","Hiragino Sans W9","Hobo Std","Hoefler Text","Hoefler Text Black","Hoefler Text Ornaments","Hollywood Hills","Hombre","Huxley Titling","ITC Stone Serif","ITF Devanagari","ITF Devanagari Marathi","ITF Devanagari Medium","Impact","Imprint MT Shadow","InaiMathi","Induction","Informal Roman","Ink Free","IrisUPC","Iskoola Pota","Italianate","Jamrul","JasmineUPC","Javanese Text","Jokerman","Juice ITC","KacstArt","KacstBook","KacstDecorative","KacstDigital","KacstFarsi","KacstLetter","KacstNaskh","KacstOffice","KacstOne","KacstPen","KacstPoster","KacstQurn","KacstScreen","KacstTitle","KacstTitleL","Kai","Kai Regular","KaiTi","Kailasa","Kailasa Regular","Kaiti SC","Kaiti SC Black","Kalapi","Kalimati","Kalinga","Kannada MN","Kannada MN Bold","Kannada Sangam MN","Kannada Sangam MN Bold","Kartika","Karumbi","Kedage","Kefa","Kefa Bold","Keraleeyam","Keyboard","Khmer MN","Khmer MN Bold","Khmer OS","Khmer OS System","Khmer Sangam MN","Khmer UI","Kinnari","Kino MT","KodchiangUPC","Kohinoor Bangla","Kohinoor Devanagari","Kohinoor Telugu","Kokila","Kokonor","Kokonor Regular","Kozuka Gothic Pr6N B","Kristen ITC","Krungthep","KufiStandardGK","KufiStandardGK Regular","Kunstler Script","Laksaman","Lao MN","Lao Sangam MN","Lao UI","LastResort","Latha","Leelawadee","Letter Gothic Std","LetterOMatic!","Levenim MT","LiHei Pro","LiSong Pro","Liberation Mono","Liberation Sans","Liberation Sans Narrow","Liberation Serif","Likhan","LilyUPC","Limousine","Lithos Pro Regular","LittleLordFontleroy","Lohit Assamese","Lohit Bengali","Lohit Devanagari","Lohit Gujarati","Lohit Gurmukhi","Lohit Hindi","Lohit Kannada","Lohit Malayalam","Lohit Odia","Lohit Punjabi","Lohit Tamil","Lohit Tamil Classical","Lohit Telugu","Loma","Lucida Blackletter","Lucida Bright","Lucida Bright Demibold","Lucida Bright Demibold Italic","Lucida Bright Italic","Lucida Calligraphy","Lucida Calligraphy Italic","Lucida Console","Lucida Fax","Lucida Fax Demibold","Lucida Fax Regular","Lucida Grande","Lucida Grande Bold","Lucida Handwriting","Lucida Handwriting Italic","Lucida Sans","Lucida Sans Demibold Italic","Lucida Sans Typewriter","Lucida Sans Typewriter Bold","Lucida Sans Unicode","Luminari","Luxi Mono","MS Gothic","MS Mincho","MS Outlook","MS PGothic","MS PMincho","MS Reference Sans Serif","MS Reference Specialty","MS Sans Serif","MS Serif","MS UI Gothic","MT Extra","MV Boli","Mael","Magneto","Maiandra GD","Malayalam MN","Malayalam MN Bold","Malayalam Sangam MN","Malayalam Sangam MN Bold","Malgun Gothic","Mallige","Mangal","Manorly","Marion","Marion Bold","Marker Felt","Marker Felt Thin","Marlett","Martina","Matura MT Script Capitals","Meera","Meiryo","Meiryo Bold","Meiryo UI","MelodBold","Menlo","Menlo Bold","Mesquite Std","Microsoft","Microsoft Himalaya","Microsoft JhengHei","Microsoft JhengHei UI","Microsoft New Tai Lue","Microsoft PhagsPa","Microsoft Sans Serif","Microsoft Tai Le","Microsoft Tai Le Bold","Microsoft Uighur","Microsoft YaHei","Microsoft YaHei UI","Microsoft Yi Baiti","Minerva","MingLiU","MingLiU-ExtB","MingLiU_HKSCS","Minion Pro","Miriam","Mishafi","Mishafi Gold","Mistral","Modern","Modern No. 20","Monaco","Mongolian Baiti","Monospace","Monotype Corsiva","Monotype Sorts","MoolBoran","Moonbeam","MotoyaLMaru","Mshtakan","Mshtakan Bold","Mukti Narrow","Muna","Myanmar MN","Myanmar MN Bold","Myanmar Sangam MN","Myanmar Text","Mycalc","Myriad Arabic","Myriad Hebrew","Myriad Pro","NISC18030","NSimSun","Nadeem","Nadeem Regular","Nakula","Nanum Barun Gothic","Nanum Gothic","Nanum Myeongjo","NanumBarunGothic","NanumGothic","NanumGothic Bold","NanumGothicCoding","NanumMyeongjo","NanumMyeongjo Bold","Narkisim","Nasalization","Navilu","Neon Lights","New Peninim MT","New Peninim MT Bold","News Gothic MT","News Gothic MT Bold","Niagara Engraved","Niagara Solid","Nimbus Mono L","Nimbus Roman No9 L","Nimbus Sans L","Nimbus Sans L Condensed","Nina","Nirmala UI","Nirmala.ttf","Norasi","Noteworthy","Noteworthy Bold","Noto Color Emoji","Noto Emoji","Noto Mono","Noto Naskh Arabic","Noto Nastaliq Urdu","Noto Sans","Noto Sans Armenian","Noto Sans Bengali","Noto Sans CJK","Noto Sans Canadian Aboriginal","Noto Sans Cherokee","Noto Sans Devanagari","Noto Sans Ethiopic","Noto Sans Georgian","Noto Sans Gujarati","Noto Sans Gurmukhi","Noto Sans Hebrew","Noto Sans JP","Noto Sans KR","Noto Sans Kannada","Noto Sans Khmer","Noto Sans Lao","Noto Sans Malayalam","Noto Sans Myanmar","Noto Sans Oriya","Noto Sans SC","Noto Sans Sinhala","Noto Sans Symbols","Noto Sans TC","Noto Sans Tamil","Noto Sans Telugu","Noto Sans Thai","Noto Sans Yi","Noto Serif","Notram","November","Nueva Std","Nueva Std Cond","Nyala","OCR A Extended","OCR A Std","Old English Text MT","OldeEnglish","Onyx","OpenSymbol","OpineHeavy","Optima","Optima Bold","Optima Regular","Orator Std","Oriya MN","Oriya MN Bold","Oriya Sangam MN","Oriya Sangam MN Bold","Osaka","Osaka-Mono","OsakaMono","PCMyungjo Regular","PCmyoungjo","PMingLiU","PMingLiU-ExtB","PR Celtic Narrow","PT Mono","PT Sans","PT Sans Bold","PT Sans Caption Bold","PT Sans Narrow Bold","PT Serif","Padauk","Padauk Book","Padmaa","Pagul","Palace Script MT","Palatino","Palatino Bold","Palatino Linotype","Palatino Linotype Bold","Papyrus","Papyrus Condensed","Parchment","Parry Hotter","PenultimateLight","Perpetua","Perpetua Bold","Perpetua Titling MT","Perpetua Titling MT Bold","Phetsarath OT","Phosphate","Phosphate Inline","Phosphate Solid","PhrasticMedium","PilGi Regular","Pilgiche","PingFang HK","PingFang SC","PingFang TC","Pirate","Plantagenet Cherokee","Playbill","Poor Richard","Poplar Std","Pothana2000","Prestige Elite Std","Pristina","Purisa","QuiverItal","Raanana","Raanana Bold","Raavi","Rachana","Rage Italic","RaghuMalayalam","Ravie","Rekha","Roboto","Rockwell","Rockwell Bold","Rockwell Condensed","Rockwell Extra Bold","Rockwell Italic","Rod","Roland","Rondalo","Rosewood Std Regular","RowdyHeavy","Russel Write TT","SF Movie Poster","STFangsong","STHeiti","STIXGeneral","STIXGeneral-Bold","STIXGeneral-Regular","STIXIntegralsD","STIXIntegralsD-Bold","STIXIntegralsSm","STIXIntegralsSm-Bold","STIXIntegralsUp","STIXIntegralsUp-Bold","STIXIntegralsUp-Regular","STIXIntegralsUpD","STIXIntegralsUpD-Bold","STIXIntegralsUpD-Regular","STIXIntegralsUpSm","STIXIntegralsUpSm-Bold","STIXNonUnicode","STIXNonUnicode-Bold","STIXSizeFiveSym","STIXSizeFiveSym-Regular","STIXSizeFourSym","STIXSizeFourSym-Bold","STIXSizeOneSym","STIXSizeOneSym-Bold","STIXSizeThreeSym","STIXSizeThreeSym-Bold","STIXSizeTwoSym","STIXSizeTwoSym-Bold","STIXVariants","STIXVariants-Bold","STKaiti","STSong","STXihei","SWGamekeys MT","Saab","Sahadeva","Sakkal Majalla","Salina","Samanata","Samyak Devanagari","Samyak Gujarati","Samyak Malayalam","Samyak Tamil","Sana","Sana Regular","Sans","Sarai","Sathu","Savoye LET Plain:1.0","Sawasdee","Script","Script MT Bold","Segoe MDL2 Assets","Segoe Print","Segoe Pseudo","Segoe Script","Segoe UI","Segoe UI Emoji","Segoe UI Historic","Segoe UI Semilight","Segoe UI Symbol","Serif","Shonar Bangla","Showcard Gothic","Shree Devanagari 714","Shruti","SignPainter-HouseScript","Silom","SimHei","SimSun","SimSun-ExtB","Simplified Arabic","Simplified Arabic Fixed","Sinhala MN","Sinhala MN Bold","Sinhala Sangam MN","Sinhala Sangam MN Bold","Sitka","Skia","Skia Regular","Skinny","Small Fonts","Snap ITC","Snell Roundhand","Snowdrift","Songti SC","Songti SC Black","Songti TC","Source Code Pro","Splash","Standard Symbols L","Stencil","Stencil Std","Stephen","Sukhumvit Set","Suruma","Sylfaen","Symbol","Symbole","System","System Font","TAMu_Kadambri","TAMu_Kalyani","TAMu_Maduram","TSCu_Comic","TSCu_Paranar","TSCu_Times","Tahoma","Tahoma Negreta","TakaoExGothic","TakaoExMincho","TakaoGothic","TakaoMincho","TakaoPGothic","TakaoPMincho","Tamil MN","Tamil MN Bold","Tamil Sangam MN","Tamil Sangam MN Bold","Tarzan","Tekton Pro","Tekton Pro Cond","Tekton Pro Ext","Telugu MN","Telugu MN Bold","Telugu Sangam MN","Telugu Sangam MN Bold","Tempus Sans ITC","Terminal","Terminator Two","Thonburi","Thonburi Bold","Tibetan Machine Uni","Times","Times Bold","Times New Roman","Times New Roman Baltic","Times New Roman Bold","Times New Roman Italic","Times Roman","Tlwg Mono","Tlwg Typewriter","Tlwg Typist","Tlwg Typo","TlwgMono","TlwgTypewriter","Toledo","Traditional Arabic","Trajan Pro","Trattatello","Trebuchet MS","Trebuchet MS Bold","Tunga","Tw Cen MT","Tw Cen MT Bold","Tw Cen MT Italic","URW Bookman L","URW Chancery L","URW Gothic L","URW Palladio L","Ubuntu","Ubuntu Condensed","Ubuntu Mono","Ukai","Ume Gothic","Ume Mincho","Ume P Gothic","Ume P Mincho","Ume UI Gothic","Uming","Umpush","UnBatang","UnDinaru","UnDotum","UnGraphic","UnGungseo","UnPilgi","Untitled1","Urdu Typesetting","Uroob","Utkal","Utopia","Utsaah","Valken","Vani","Vemana2000","Verdana","Verdana Bold","Vijaya","Viner Hand ITC","Vivaldi","Vivian","Vladimir Script","Vrinda","Waree","Waseem","Waverly","Webdings","WenQuanYi Bitmap Song","WenQuanYi Micro Hei","WenQuanYi Micro Hei Mono","WenQuanYi Zen Hei","Whimsy TT","Wide Latin","Wingdings","Wingdings 2","Wingdings 3","Woodcut","X-Files","Year supply of fairy cakes","Yu Gothic","Yu Mincho","Yuppy SC","Yuppy SC Regular","Yuppy TC","Yuppy TC Regular","Zapf Dingbats","Zapfino","Zawgyi-One","gargi","lklug","mry_KacstQurn","ori1Uni"]');
1931
+ const json$2 = {
1932
+ fonts
1933
+ };
1934
+ const FONT_SIZE = "40px";
1935
+ const TEST_STRING = "IDScan2023";
1936
+ const BASE_FONT = "sans-serif";
1937
+ const BODY_ELEM = document.body;
1938
+ const fontOffsetSizes = {};
1939
+ function initializeDefaultSpan() {
1940
+ const spanElement = document.createElement("span");
1941
+ spanElement.style.fontSize = FONT_SIZE;
1942
+ spanElement.textContent = TEST_STRING;
1943
+ spanElement.style.fontFamily = BASE_FONT;
1944
+ BODY_ELEM.appendChild(spanElement);
1945
+ fontOffsetSizes[BASE_FONT] = { width: spanElement.offsetWidth, height: spanElement.offsetHeight };
1946
+ BODY_ELEM.removeChild(spanElement);
1947
+ }
1948
+ async function getAvailableFontsInfo() {
1949
+ initializeDefaultSpan();
1950
+ const detectedFonts = new Array(json$2.fonts.length).fill(false);
1951
+ const fragment = new DocumentFragment();
1952
+ const fontEls = json$2.fonts.map(async (font) => {
1953
+ const span = document.createElement("span");
1954
+ span.style.fontSize = FONT_SIZE;
1955
+ span.textContent = TEST_STRING;
1956
+ span.style.fontFamily = `"${font}",${BASE_FONT}`;
1957
+ return span;
1958
+ });
1959
+ await Promise.all(fontEls).then((res) => {
1960
+ res.forEach((el) => fragment.appendChild(el));
1961
+ const fragmentContainer = document.createElement("div");
1962
+ BODY_ELEM.appendChild(fragmentContainer);
1963
+ fragmentContainer.append(fragment);
1964
+ Array.from(fragmentContainer.children).forEach((spanElem, index) => {
1965
+ const match = spanElem.offsetWidth !== fontOffsetSizes[BASE_FONT].width || spanElem.offsetHeight !== fontOffsetSizes[BASE_FONT].height;
1966
+ detectedFonts[index] = match;
1967
+ });
1968
+ fragmentContainer.remove();
1969
+ });
1970
+ return detectedFonts;
1971
+ }
1972
+ async function getFontsInfo() {
1973
+ return {
1974
+ availableFontsInfo: await getAvailableFontsInfo()
1975
+ };
1976
+ }
1977
+ const videoCodecs = ["video/mp4; codecs=avc1.42E01E", "video/mp4; codecs=mp4a.40.2", "video/webm; codecs=vorbis", "video/webm; codecs=vp8", "video/webm; codecs=vp9", "video/ogg; codecs=vorbis", "video/ogg; codecs=theora", "video/mp4; codecs=hev1", "application/vnd.apple.mpegurl; codecs=avc1.42E01E, mp4a.40.2"];
1978
+ const audioCodecs = ["audio/mpeg", "audio/aac", "audio/alac", "audio/flac", "audio/ogg; codecs=vorbis", "audio/ogg; codecs=opus", "audio/flac", "audio/webm; codecs=vorbis", "audio/webm; codecs=opus", "audio/mp4"];
1979
+ const apiKeys = ["history", "speechSynthesis", "webkitSpeechRecognition", "IntersectionObserver", "ResizeObserver", "PushManager", "TextTrack", "postMessage", "structuredClone", "worker", "SharedWorker", "ServiceWorker"];
1980
+ const inputTypes = ["color", "date", "datetime-local", "datetime", "email", "month", "number", "password", "search", "tel", "text", "time", "url", "week", "file", "range"];
1981
+ const inputAvailableAttributes = ["accept", "alt", "autocomplete", "autofocus", "checked", "dirname", "disabled", "form", "formaction", "formenctype", "formmethod", "formnovalidate", "formtarget", "height", "list", "max", "maxlength", "min", "minlength", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "src", "step", "value", "width"];
1982
+ const json$1 = {
1983
+ videoCodecs,
1984
+ audioCodecs,
1985
+ apiKeys,
1986
+ inputTypes,
1987
+ inputAvailableAttributes
1988
+ };
1989
+ function HTML5AudioInfo() {
1990
+ const audio = document.createElement("audio");
1991
+ return json$1.audioCodecs.reduce((res, codec) => {
1992
+ res[codec] = !!audio.canPlayType(codec);
1993
+ return res;
1994
+ }, {});
1995
+ }
1996
+ function HTML5AvailableAPIInfo() {
1997
+ return json$1.apiKeys.reduce((res, key) => {
1998
+ res[key] = !!window[key];
1999
+ return res;
2000
+ }, {});
2001
+ }
2002
+ function HTML5InputInfo() {
2003
+ const input = document.createElement("input");
2004
+ return {
2005
+ inputTypes: json$1.inputTypes.reduce((res, type) => {
2006
+ input.setAttribute("type", type);
2007
+ res[type] = input.type === type;
2008
+ return res;
2009
+ }, {}),
2010
+ inputAvailableAttributes: json$1.inputAvailableAttributes.reduce((res, attribute) => {
2011
+ res[attribute] = attribute in input;
2012
+ return res;
2013
+ }, {})
2014
+ };
2015
+ }
2016
+ async function getHTML5Info() {
2017
+ return {
2018
+ audioInfo: HTML5AudioInfo(),
2019
+ availableAPIInfo: HTML5AvailableAPIInfo(),
2020
+ inputInfo: HTML5InputInfo()
2021
+ };
2022
+ }
2023
+ async function getVideoCodecsInfo() {
2024
+ const video = document.createElement("video");
2025
+ return json$1.videoCodecs.reduce((acc, codec) => {
2026
+ acc[codec] = video.canPlayType(codec);
2027
+ return acc;
2028
+ }, {});
2029
+ }
2030
+ async function getTimeZoneInfo() {
2031
+ var _a, _b;
2032
+ if (window.Intl) {
2033
+ return (_b = (_a = Intl.DateTimeFormat()) == null ? void 0 : _a.resolvedOptions()) == null ? void 0 : _b.timeZone;
2034
+ }
2035
+ return "";
2036
+ }
2037
+ const WebGLConstants = ["ALIASED_LINE_WIDTH_RANGE", "ALIASED_POINT_SIZE_RANGE", "ALPHA_BITS", "BLUE_BITS", "DEPTH_BITS", "GREEN_BITS", "MAX_COMBINED_TEXTURE_IMAGE_UNITS", "MAX_CUBE_MAP_TEXTURE_SIZE", "MAX_FRAGMENT_UNIFORM_VECTORS", "MAX_RENDERBUFFER_SIZE", "MAX_TEXTURE_IMAGE_UNITS", "MAX_TEXTURE_SIZE", "MAX_VARYING_VECTORS", "MAX_VERTEX_ATTRIBS", "MAX_VERTEX_TEXTURE_IMAGE_UNITS", "MAX_VERTEX_UNIFORM_VECTORS", "MAX_VIEWPORT_DIMS", "RED_BITS", "RENDERER", "SHADING_LANGUAGE_VERSION", "STENCIL_BITS", "VERSION"];
2038
+ const WebGL2Constants = ["MAX_VARYING_COMPONENTS", "MAX_VERTEX_UNIFORM_COMPONENTS", "MAX_VERTEX_UNIFORM_BLOCKS", "MAX_VERTEX_OUTPUT_COMPONENTS", "MAX_PROGRAM_TEXEL_OFFSET", "MAX_3D_TEXTURE_SIZE", "MAX_ARRAY_TEXTURE_LAYERS", "MAX_COLOR_ATTACHMENTS", "MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", "MAX_COMBINED_UNIFORM_BLOCKS", "MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", "MAX_DRAW_BUFFERS", "MAX_ELEMENT_INDEX", "MAX_FRAGMENT_INPUT_COMPONENTS", "MAX_FRAGMENT_UNIFORM_COMPONENTS", "MAX_FRAGMENT_UNIFORM_BLOCKS", "MAX_SAMPLES", "MAX_SERVER_WAIT_TIMEOUT", "MAX_TEXTURE_LOD_BIAS", "MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", "MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", "MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", "MAX_UNIFORM_BLOCK_SIZE", "MAX_UNIFORM_BUFFER_BINDINGS", "MIN_PROGRAM_TEXEL_OFFSET", "UNIFORM_BUFFER_OFFSET_ALIGNMENT"];
2039
+ const Categories = { "uniformBuffers": ["MAX_UNIFORM_BUFFER_BINDINGS", "MAX_UNIFORM_BLOCK_SIZE", "UNIFORM_BUFFER_OFFSET_ALIGNMENT", "MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", "MAX_COMBINED_UNIFORM_BLOCKS", "MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS"], "debugRendererInfo": ["UNMASKED_VENDOR_WEBGL", "UNMASKED_RENDERER_WEBGL"], "fragmentShader": ["MAX_FRAGMENT_UNIFORM_VECTORS", "MAX_TEXTURE_IMAGE_UNITS", "MAX_FRAGMENT_INPUT_COMPONENTS", "MAX_FRAGMENT_UNIFORM_COMPONENTS", "MAX_FRAGMENT_UNIFORM_BLOCKS", "FRAGMENT_SHADER_BEST_FLOAT_PRECISION", "MIN_PROGRAM_TEXEL_OFFSET", "MAX_PROGRAM_TEXEL_OFFSET"], "frameBuffer": ["MAX_DRAW_BUFFERS", "MAX_COLOR_ATTACHMENTS", "MAX_SAMPLES", "RGBA_BITS", "DEPTH_STENCIL_BITS", "MAX_RENDERBUFFER_SIZE", "MAX_VIEWPORT_DIMS"], "rasterizer": ["ALIASED_LINE_WIDTH_RANGE", "ALIASED_POINT_SIZE_RANGE"], "textures": ["MAX_TEXTURE_SIZE", "MAX_CUBE_MAP_TEXTURE_SIZE", "MAX_COMBINED_TEXTURE_IMAGE_UNITS", "MAX_TEXTURE_MAX_ANISOTROPY_EXT", "MAX_3D_TEXTURE_SIZE", "MAX_ARRAY_TEXTURE_LAYERS", "MAX_TEXTURE_LOD_BIAS"], "transformFeedback": ["MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", "MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", "MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS"], "vertexShader": ["MAX_VARYING_VECTORS", "MAX_VERTEX_ATTRIBS", "MAX_VERTEX_TEXTURE_IMAGE_UNITS", "MAX_VERTEX_UNIFORM_VECTORS", "MAX_VERTEX_UNIFORM_COMPONENTS", "MAX_VERTEX_UNIFORM_BLOCKS", "MAX_VERTEX_OUTPUT_COMPONENTS", "MAX_VARYING_COMPONENTS", "VERTEX_SHADER_BEST_FLOAT_PRECISION"], "webGLContextInfo": ["CONTEXT", "ANTIALIAS", "DIRECT_3D", "MAJOR_PERFORMANCE_CAVEAT", "RENDERER", "SHADING_LANGUAGE_VERSION", "VERSION"] };
2040
+ const json = {
2041
+ WebGLConstants,
2042
+ WebGL2Constants,
2043
+ Categories
2044
+ };
2045
+ function getMaxAnisotropy(context) {
2046
+ try {
2047
+ const extension = context.getExtension("EXT_texture_filter_anisotropic") || context.getExtension("WEBKIT_EXT_texture_filter_anisotropic") || context.getExtension("MOZ_EXT_texture_filter_anisotropic");
2048
+ return context.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);
2049
+ } catch (error) {
2050
+ console.error(error);
2051
+ return void 0;
2052
+ }
2053
+ }
2054
+ function getMaxDrawBuffers(context) {
2055
+ try {
2056
+ const extension = context.getExtension("WEBGL_draw_buffers") || context.getExtension("WEBKIT_WEBGL_draw_buffers") || context.getExtension("MOZ_WEBGL_draw_buffers");
2057
+ return context.getParameter(extension.MAX_DRAW_BUFFERS_WEBGL);
2058
+ } catch (error) {
2059
+ return void 0;
2060
+ }
2061
+ }
2062
+ function getShaderData(precisionFormat) {
2063
+ const shaderData = {};
2064
+ try {
2065
+ Object.keys(precisionFormat).forEach((key) => {
2066
+ const shaderPrecisionFormat = precisionFormat[key];
2067
+ shaderData[key] = {
2068
+ precision: shaderPrecisionFormat.precision,
2069
+ rangeMax: shaderPrecisionFormat.rangeMax,
2070
+ rangeMin: shaderPrecisionFormat.rangeMin
2071
+ };
2072
+ });
2073
+ return shaderData;
2074
+ } catch (error) {
2075
+ return void 0;
2076
+ }
2077
+ }
2078
+ function getShaderPrecisionFormat(context, shaderType) {
2079
+ const precisionTypes = ["LOW_FLOAT", "MEDIUM_FLOAT", "HIGH_FLOAT"];
2080
+ const precisionFormat = {};
2081
+ try {
2082
+ precisionTypes.forEach((prop) => {
2083
+ precisionFormat[prop] = context.getShaderPrecisionFormat(context[shaderType], context[prop]);
2084
+ });
2085
+ return precisionFormat;
2086
+ } catch (error) {
2087
+ return void 0;
2088
+ }
2089
+ }
2090
+ function getUnmasked(context, constant) {
2091
+ try {
2092
+ const extension = context.getExtension("WEBGL_debug_renderer_info");
2093
+ return context.getParameter(extension[constant]);
2094
+ } catch (error) {
2095
+ return void 0;
2096
+ }
2097
+ }
2098
+ function getNumericValues(parameters) {
2099
+ if (!parameters) return [];
2100
+ return [
2101
+ ...new Set(Object.values(parameters).filter((val) => val && typeof val !== "string").flat().map((val) => Number(val) || 0))
2102
+ ].sort((a, b) => a - b);
2103
+ }
2104
+ function getGpuBrand(gpu) {
2105
+ if (!gpu) return "";
2106
+ const gpuBrandMatcher = /(adreno|amd|apple|intel|llvm|mali|microsoft|nvidia|parallels|powervr|samsung|swiftshader|virtualbox|vmware)/i;
2107
+ let brand;
2108
+ if (/radeon/i.test(gpu)) {
2109
+ brand = "AMD";
2110
+ } else if (/geforce/i.test(gpu)) {
2111
+ brand = "NVIDIA";
2112
+ } else {
2113
+ brand = (gpuBrandMatcher.exec(gpu) || [])[0] || "Other";
2114
+ }
2115
+ return brand;
2116
+ }
2117
+ function getWebGL(contextType) {
2118
+ var _a;
2119
+ const errors = [];
2120
+ let data = {};
2121
+ const isWebGL = /^webgl$/;
2122
+ const isWebGL2 = /^webgl2$/;
2123
+ const supportsWebGL = isWebGL.test(contextType) && "WebGLRenderingContext" in window;
2124
+ const supportsWebGL2 = isWebGL2.test(contextType) && "WebGLRenderingContext" in window;
2125
+ if (!supportsWebGL && !supportsWebGL2) {
2126
+ errors.push("not supported");
2127
+ return [data, errors];
2128
+ }
2129
+ let canvas2;
2130
+ let context;
2131
+ let hasMajorPerformanceCaveat;
2132
+ try {
2133
+ canvas2 = document.createElement("canvas");
2134
+ context = canvas2.getContext(contextType, { failIfMajorPerformanceCaveat: true });
2135
+ if (!context) {
2136
+ hasMajorPerformanceCaveat = true;
2137
+ context = canvas2.getContext(contextType);
2138
+ if (!context) {
2139
+ throw new Error(`context of type ${typeof context}`);
2140
+ }
2141
+ }
2142
+ } catch (err) {
2143
+ console.error(err);
2144
+ errors.push("context blocked");
2145
+ return [data, errors];
2146
+ }
2147
+ let webGLExtensions;
2148
+ try {
2149
+ webGLExtensions = context.getSupportedExtensions();
2150
+ } catch (error) {
2151
+ console.error(error);
2152
+ errors.push("extensions blocked");
2153
+ }
2154
+ let parameters = {};
2155
+ try {
2156
+ const VERTEX_SHADER = getShaderData(getShaderPrecisionFormat(context, "VERTEX_SHADER"));
2157
+ const FRAGMENT_SHADER = getShaderData(getShaderPrecisionFormat(context, "FRAGMENT_SHADER"));
2158
+ parameters = {
2159
+ ANTIALIAS: (_a = context == null ? void 0 : context.getContextAttributes()) == null ? void 0 : _a.antialias,
2160
+ CONTEXT: contextType,
2161
+ MAJOR_PERFORMANCE_CAVEAT: hasMajorPerformanceCaveat,
2162
+ MAX_TEXTURE_MAX_ANISOTROPY_EXT: getMaxAnisotropy(context),
2163
+ MAX_DRAW_BUFFERS_WEBGL: getMaxDrawBuffers(context),
2164
+ VERTEX_SHADER,
2165
+ VERTEX_SHADER_BEST_FLOAT_PRECISION: Object.values(VERTEX_SHADER == null ? void 0 : VERTEX_SHADER.HIGH_FLOAT),
2166
+ FRAGMENT_SHADER,
2167
+ FRAGMENT_SHADER_BEST_FLOAT_PRECISION: Object.values(FRAGMENT_SHADER == null ? void 0 : FRAGMENT_SHADER.HIGH_FLOAT),
2168
+ UNMASKED_VENDOR_WEBGL: getUnmasked(context, "UNMASKED_VENDOR_WEBGL"),
2169
+ UNMASKED_RENDERER_WEBGL: getUnmasked(context, "UNMASKED_RENDERER_WEBGL")
2170
+ };
2171
+ const glConstants = [...json.WebGLConstants, ...supportsWebGL2 ? json.WebGL2Constants : []];
2172
+ glConstants.forEach((key) => {
2173
+ const result = context == null ? void 0 : context.getParameter(context[key]);
2174
+ const typedArray = result && (result.constructor === Float32Array || result.constructor === Int32Array);
2175
+ parameters[key] = typedArray ? [...result] : result;
2176
+ });
2177
+ parameters.RGBA_BITS = [
2178
+ parameters.RED_BITS,
2179
+ parameters.GREEN_BITS,
2180
+ parameters.BLUE_BITS,
2181
+ parameters.ALPHA_BITS
2182
+ ];
2183
+ parameters.DEPTH_STENCIL_BITS = [
2184
+ parameters.DEPTH_BITS,
2185
+ parameters.STENCIL_BITS
2186
+ ];
2187
+ parameters.DIRECT_3D = /Direct3D|D3D(\d+)/.test(parameters.UNMASKED_RENDERER_WEBGL);
2188
+ } catch (error) {
2189
+ console.error(error);
2190
+ errors.push("parameters blocked");
2191
+ }
2192
+ const gpu = String([parameters.UNMASKED_VENDOR_WEBGL, parameters.UNMASKED_RENDERER_WEBGL]);
2193
+ const gpuBrand = getGpuBrand(gpu);
2194
+ const components = {};
2195
+ if (parameters) {
2196
+ Object.keys(json.Categories).forEach((name) => {
2197
+ const componentData = json.Categories[name].reduce((acc, key) => {
2198
+ if (parameters[key] !== void 0) {
2199
+ acc[key] = parameters[key];
2200
+ }
2201
+ return acc;
2202
+ }, {});
2203
+ if (Object.keys(componentData).length) {
2204
+ components[name] = componentData;
2205
+ }
2206
+ });
2207
+ }
2208
+ data = {
2209
+ gpuHash: !parameters ? void 0 : [gpuBrand, ...getNumericValues(parameters)].join(":"),
2210
+ gpu,
2211
+ gpuBrand,
2212
+ ...components,
2213
+ webGLExtensions
2214
+ };
2215
+ return [data, errors];
2216
+ }
2217
+ async function getWebGLInfo() {
2218
+ const result = await Promise.allSettled([
2219
+ getWebGL("webgl"),
2220
+ getWebGL("webgl2")
2221
+ ]);
2222
+ const [webGL, webGL2] = result;
2223
+ return {
2224
+ webGL: {
2225
+ result: webGL.status !== "rejected" ? webGL.value[0] : {},
2226
+ errors: webGL.status !== "rejected" ? webGL.value[1] : []
2227
+ },
2228
+ webGL2: {
2229
+ result: webGL2.status !== "rejected" ? webGL2.value[0] : {},
2230
+ errors: webGL2.status !== "rejected" ? webGL2.value[1] : []
2231
+ }
2232
+ };
2233
+ }
2234
+ const Fingerprint = {
2235
+ browserInfo: getBrowserInfo,
2236
+ screenInfo: getScreenResolutionInfo,
2237
+ batteryInfo: getBatteryInfo,
2238
+ connectionInfo: getConnectionInfo,
2239
+ canvasInfo: getCanvasInfo,
2240
+ fontsInfo: getFontsInfo,
2241
+ HTML5Info: getHTML5Info,
2242
+ videoCodecsInfo: getVideoCodecsInfo,
2243
+ timeZoneInfo: getTimeZoneInfo,
2244
+ webGLInfo: getWebGLInfo,
2245
+ utils: {
2246
+ sha256: decrypt
2247
+ }
2248
+ };
2249
+ const getBrowserMetadata = async () => {
2250
+ const [
2251
+ { value: browserInfo },
2252
+ { value: screenInfo },
2253
+ // @ts-ignore
2254
+ { value: batteryInfo },
2255
+ { value: connectionInfo }
2256
+ ] = await Promise.allSettled([
2257
+ Fingerprint.browserInfo(),
2258
+ Fingerprint.screenInfo(),
2259
+ Fingerprint.batteryInfo(),
2260
+ Fingerprint.connectionInfo()
2261
+ ]);
2262
+ const { sha256 } = Fingerprint.utils;
2263
+ const [
2264
+ { value: browserInfoSHA },
2265
+ { value: canvasInfo },
2266
+ { value: fontsInfo },
2267
+ // @ts-ignore
2268
+ { value: html5Info },
2269
+ { value: webGlInfo }
2270
+ ] = await Promise.allSettled([
2271
+ sha256(JSON.stringify(browserInfo)),
2272
+ sha256(JSON.stringify(await Fingerprint.canvasInfo())),
2273
+ sha256(JSON.stringify(await Fingerprint.fontsInfo())),
2274
+ sha256(JSON.stringify(await Fingerprint.HTML5Info())),
2275
+ sha256(JSON.stringify(await Fingerprint.webGLInfo()))
2276
+ ]);
2277
+ return {
2278
+ navigatorInfo: browserInfo.navigatorInfo,
2279
+ screenInfo,
2280
+ batteryInfo,
2281
+ connectionInfo,
2282
+ browserInfo: browserInfoSHA,
2283
+ canvasInfo,
2284
+ fontsInfo,
2285
+ html5Info,
2286
+ webGlInfo
2287
+ };
2288
+ };
2289
+ const getDeviceMetadata = async () => {
2290
+ const timeZone = await Fingerprint.timeZoneInfo();
2291
+ const userLanguage = navigator.language;
2292
+ return {
2293
+ timeZone,
2294
+ userLanguage
2295
+ };
2296
+ };
2297
+ const createFingerPrintModel = async () => {
2298
+ const browserMetadata = await getBrowserMetadata();
2299
+ const deviceMetadata = await getDeviceMetadata();
2300
+ return {
2301
+ browserMetadata,
2302
+ deviceMetadata
2303
+ };
2304
+ };
1746
2305
  const html = '<div class="qr-code-wrap">\n <button class="qr-code-wrap__button" id="qr-code-wrap__button"><span class="qr-code-wrap__content">Verify Documents by Phone<svg class="qr-code-svg" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M0 8V0H8V8H0ZM2 6H6V2H2V6ZM0 18V10H8V18H0ZM2 16H6V12H2V16ZM10 8V0H18V8H10ZM12 6H16V2H12V6ZM16 18V16H18V18H16ZM10 12V10H12V12H10ZM12 14V12H14V14H12ZM10 16V14H12V16H10ZM12 18V16H14V18H12ZM14 16V14H16V16H14ZM14 12V10H16V12H14ZM16 14V12H18V14H16Z" fill="white"/>\n </svg></span></button>\n</div>\n';
1747
2306
  var browser = {};
1748
2307
  var canPromise;
@@ -3973,7 +4532,7 @@ const checkIfMobile = () => {
3973
4532
  const isSurface = mc.isSurface();
3974
4533
  return isMobileUserAgent && isTouchable && isTouchScreen || isSurface;
3975
4534
  };
3976
- const version = "2.9.3";
4535
+ const version = "2.10.0";
3977
4536
  const packageJson = {
3978
4537
  version
3979
4538
  };
@@ -3987,6 +4546,7 @@ class Wrapper {
3987
4546
  this.config = config;
3988
4547
  this.IDVCModule = IDVCModule;
3989
4548
  this.beforeMount(config);
4549
+ this.fingerPrintData = createFingerPrintModel();
3990
4550
  }
3991
4551
  get isEmbeddedFromQR() {
3992
4552
  return getQueryParam("qrCode") === "true";
@@ -4186,10 +4746,12 @@ class Wrapper {
4186
4746
  validation.showModal();
4187
4747
  }
4188
4748
  async createPostModel(model, isFaceAuth) {
4749
+ const fingerPrintResult = await this.fingerPrintData;
4189
4750
  return {
4190
4751
  applicantId: this.configs.applicantId,
4191
4752
  ...model,
4192
4753
  ...{ documentType: isFaceAuth ? 10 : model.documentType },
4754
+ ...fingerPrintResult,
4193
4755
  clientVersion: this.lib.version,
4194
4756
  clientType: ClientType.WebLibStandalone
4195
4757
  };