try {

    function connection() {
        let l = navigator
        var v = l["connection"] || l["mozConnection"] || l["webkitConnection"];
        var d = {};
        for (var p in v) {
            v["__proto__"]["hasOwnProperty"](p) && null !== v[p] && (d[p] = v[p]);
        }
        var m = {};
        m["support"] = !!v;
        m["status"] = d;
        return m

    }

    let funcs = [
        'XRHitTestResult',
        'crossOriginIsolated',
        'AbstractRange',
        'RTCDtlsTransport',
        'BarcodeDetector',
        'EventCounts',
        'SharedArrayBuffer',
        'VisualViewport',
        'FinalizationRegistry',
        'WritableStreamDefaultController',
        'HTMLMenuItemElement',
        'HID',
        'CSSCounterStyleRule',
        'FileSystemDirectoryHandle',
        'PerformancePaintTiming',
        'onbeforeinput',
        'ApplicationCache',
        'AudioData',
        'AudioTrack',
        'DOMRectList',
        'FragmentDirective',
        'Sanitizer',
        'onselectionchange',
        'onsecuritypolicyviolation',
        'structuredClone',
        'XRHand',
        'Lock',
        'EyeDropper',
        'CSSLayerBlockRule',
        'ServiceWorkerContainer',
        'IdleDetector',
        'HTMLDialogElement',
        'CSSFontPaletteValuesRule',
        'CSSMathClamp',
        'NavigationPreloadManager',
        'LaunchParams',
        'content',
        'IDBFileHandle',
        'BrowserCaptureMediaStreamTrack',
        'FontData',
        'ReadableByteStreamController',
        'OffscreenCanvas',
        'MediaSourceHandle',
        'XRCamera'
    ]


    let funcResult = funcs.map(e => {
        return window.hasOwnProperty(e) ? 1 : 0
    })
    let funcs2 = [
        "ActiveXObject",
        "ApplePaySession",
        "File",
        "MutationObserver",
        "Notification",
        "SharedWorker",
        "TouchEvent",
        "XDomainRequest",
        "_phantom",
        "attachEvent",
        "callPhantom",
        "createPopup",
        "detachEvent",
        "event",
        "external",
        "fireEvent",
        "frameElement",
        "globalStorage",
        "localStorage",
        "mozRTCPeerConnection",
        "mozRequestAnimationFrame",
        "phantom",
        "postMessage",
        "PushManager",
        "registerProtocolHandler",
        "requestAnimationFrame",
        "sessionStorage",
        "sidebar",
        "webkitRequestAnimationFrame",
        "webkitResolveLocalFileSystemURL",
        "webkitRTCPeerConnection",
        "BluetoothUUID",
        "netscape"
    ];
    let funcResult2 = funcs2.map(e => {
        return window.hasOwnProperty(e) ? 1 : 0
    })

    let matchmediaList = ["(max-aspect-ratio: 1/1)", "(max-aspect-ratio: 2/1)", "(max-aspect-ratio: 3/2)", "(max-aspect-ratio: 5/4)", "(max-aspect-ratio: 9/8)", "(max-aspect-ratio: 17/16)", "(max-aspect-ratio: 33/32)", "(max-aspect-ratio: 67/64)", "(max-aspect-ratio: 133/128)", "(max-aspect-ratio: 265/256)", "(max-aspect-ratio: 531/512)", "(max-aspect-ratio: 1063/1024)", "(max-aspect-ratio: 2127/2048)", "(max-aspect-ratio: 4255/4096)", "(max-aspect-ratio: 8511/8192)", "(max-aspect-ratio: 17023/16384)", "(max-aspect-ratio: 34047/32768)", "(max-aspect-ratio: 68095/65536)", "(max-aspect-ratio: 136191/131072)", "(max-aspect-ratio: 272383/262144)", "(max-aspect-ratio: 544767/524288)", "(max-aspect-ratio: 1089535/1048576)", "(max-aspect-ratio: 2179071/2097152)", "(max-aspect-ratio: 4358143/4194304)", "(max-aspect-ratio: 8716287/8388608)", "(max-aspect-ratio: 17432575/16777216)", "(max-aspect-ratio: 34865151/33554432)", "(max-aspect-ratio: 69730303/67108864)", "(max-aspect-ratio: 139460607/134217728)", "(max-aspect-ratio: 278921215/268435456)", "(max-aspect-ratio: 557842431/536870912)", "(max-aspect-ratio: 1115684863/1073741824)", "(max-aspect-ratio: 2231369727/2147483648)", "(max-aspect-ratio: 4462739455/4294967296)", "(max-aspect-ratio: 8925478911/8589934592)", "(max-aspect-ratio: 17850957823/17179869184)", "(max-aspect-ratio: 35701915647/34359738368)", "(max-aspect-ratio: 71403831295/68719476736)", "(max-aspect-ratio: 142807662591/137438953472)", "(max-aspect-ratio: 285615325183/274877906944)", "(max-aspect-ratio: 571230650367/549755813888)", "(max-aspect-ratio: 1142461300735/1099511627776)", "(max-aspect-ratio: 2284922601471/2199023255552)", "(max-aspect-ratio: 4569845202943/4398046511104)", "(max-aspect-ratio: 9139690405887/8796093022208)", "(max-aspect-ratio: 18279380811775/17592186044416)", "(max-aspect-ratio: 36558761623551/35184372088832)", "(max-aspect-ratio: 73117523247103/70368744177664)", "(max-aspect-ratio: 146235046494207/140737488355328)", "(max-aspect-ratio: 292470092988415/281474976710656)", "(max-aspect-ratio: 584940185976831/562949953421312)", "(max-aspect-ratio: 1169880371953663/1125899906842624)", "(min-resolution: 0.0001dpi)", "(max-resolution: 24dpi)", "(max-resolution: 48dpi)", "(max-resolution: 96dpi)", "(max-resolution: 72dpi)", "(max-resolution: 84dpi)", "(max-resolution: 90dpi)", "(max-resolution: 93dpi)", "(max-resolution: 95dpi)", "(any-hover: none)", "(any-hover: hover)", "(any-pointer: none)", "(any-pointer: coarse)", "(any-pointer: fine)", "(max-color: 8)", "(max-color: 4)", "(max-color: 6)", "(max-color: 7)", "(color-gamut: srgb)", "(color-gamut: p3)", "(color-gamut: rec2020)", "(max-color-index: 1000)", "(max-color-index: 500)", "(max-color-index: 250)", "(max-color-index: 125)", "(max-color-index: 62)", "(max-color-index: 31)", "(max-color-index: 15)", "(max-color-index: 7)", "(max-color-index: 3)", "(max-color-index: 1)", "(max-color-index: 0)", "(display-mode: fullscreen)", "(display-mode: standalone)", "(display-mode: minimal-ui)", "(display-mode: browser)", "(forced-colors: none)", "(forced-colors: active)", "(grid: 0)", "(grid: 1)", "(max-height: 600px)", "(max-height: 1200px)", "(max-height: 900px)", "(max-height: 750px)", "(max-height: 825px)", "(max-height: 863px)", "(max-height: 882px)", "(max-height: 891px)", "(max-height: 887px)", "(max-height: 889px)", "(max-height: 890px)", "(hover: none)", "(hover: hover)", "(inverted-colors: none)", "(inverted-colors: inverted)", "(light-level: normal)", "(light-level: dim)", "(light-level: washed)", "(max-monochrome: 1)", "(max-monochrome: 0)", "(orientation: landscape)", "(orientation: portrait)", "(pointer: none)", "(pointer: coarse)", "(pointer: fine)", "(overflow-inline: none)", "(overflow-inline: scroll)", "(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)", "(max-width: 600px)", "(max-width: 1200px)", "(max-width: 900px)", "(max-width: 1050px)", "(max-width: 975px)", "(max-width: 938px)", "(max-width: 919px)", "(max-width: 929px)", "(max-width: 934px)", "(max-width: 932px)", "(max-width: 931px)", "(prefers-contrast: no-preference)", "(prefers-contrast: high)", "(prefers-contrast: low)", "(overflow-block: none)", "(overflow-block: scroll)", "(overflow-block: optional-paged)", "(overflow-block: paged)", "(update: none)", "(update: slow)", "(update: fast)", "(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)", "(q: 1)", "(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)", "(prefers-color-scheme: no-preference)", "(prefers-color-scheme: light)", "(prefers-color-scheme: dark)", "(scan: interlace)", "(scan: progressive)"];
    matchmediaList.push(...["(max-aspect-ratio: 1/1)", "(max-aspect-ratio: 2/1)", "(max-aspect-ratio: 3/1)", "(max-aspect-ratio: 4/1)", "(max-aspect-ratio: 5/1)", "(max-aspect-ratio: 6/1)", "(max-aspect-ratio: 7/1)", "(max-aspect-ratio: 8/1)", "(max-aspect-ratio: 9/1)", "(max-aspect-ratio: 10/1)", "(max-aspect-ratio: 11/1)", "(max-aspect-ratio: 12/1)", "(max-aspect-ratio: 13/1)", "(max-aspect-ratio: 14/1)", "(max-aspect-ratio: 15/1)", "(max-aspect-ratio: 16/1)", "(max-aspect-ratio: 17/1)", "(max-aspect-ratio: 18/1)", "(max-aspect-ratio: 19/1)", "(max-aspect-ratio: 20/1)", "(max-aspect-ratio: 21/1)", "(max-aspect-ratio: 22/1)", "(max-aspect-ratio: 23/1)", "(max-aspect-ratio: 24/1)", "(max-aspect-ratio: 25/1)", "(max-aspect-ratio: 26/1)", "(max-aspect-ratio: 27/1)", "(max-aspect-ratio: 28/1)", "(max-aspect-ratio: 29/1)", "(max-aspect-ratio: 30/1)", "(max-aspect-ratio: 31/1)", "(max-aspect-ratio: 32/1)", "(max-aspect-ratio: 33/1)", "(max-aspect-ratio: 34/1)", "(max-aspect-ratio: 35/1)", "(max-aspect-ratio: 36/1)", "(max-aspect-ratio: 37/1)", "(max-aspect-ratio: 38/1)", "(max-aspect-ratio: 39/1)", "(max-aspect-ratio: 40/1)", "(max-aspect-ratio: 41/1)", "(max-aspect-ratio: 42/1)", "(max-aspect-ratio: 43/1)", "(max-aspect-ratio: 44/1)", "(max-aspect-ratio: 45/1)", "(max-aspect-ratio: 46/1)", "(max-aspect-ratio: 47/1)", "(max-aspect-ratio: 48/1)", "(max-aspect-ratio: 49/1)", "(max-aspect-ratio: 50/1)", "(max-aspect-ratio: 51/1)", "(max-aspect-ratio: 101/2)", "(max-aspect-ratio: 203/4)", "(max-aspect-ratio: 407/8)", "(max-aspect-ratio: 815/16)", "(max-aspect-ratio: 1631/32)", "(max-aspect-ratio: 3263/64)", "(max-aspect-ratio: 6527/128)", "(max-aspect-ratio: 13055/256)", "(max-aspect-ratio: 26111/512)", "(max-aspect-ratio: 52223/1024)", "(max-aspect-ratio: 104447/2048)", "(max-aspect-ratio: 208895/4096)", "(max-aspect-ratio: 417791/8192)", "(max-aspect-ratio: 835583/16384)", "(max-aspect-ratio: 1671167/32768)", "(max-aspect-ratio: 3342335/65536)", "(max-aspect-ratio: 6684671/131072)", "(max-aspect-ratio: 13369343/262144)", "(max-aspect-ratio: 26738687/524288)", "(max-aspect-ratio: 53477375/1048576)", "(max-aspect-ratio: 106954751/2097152)", "(max-aspect-ratio: 213909503/4194304)", "(max-aspect-ratio: 427819007/8388608)", "(max-aspect-ratio: 855638015/16777216)", "(max-aspect-ratio: 1711276031/33554432)", "(max-aspect-ratio: 3422552063/67108864)", "(max-aspect-ratio: 6845104127/134217728)", "(max-aspect-ratio: 13690208255/268435456)", "(max-aspect-ratio: 27380416511/536870912)", "(max-aspect-ratio: 54760833023/1073741824)", "(max-aspect-ratio: 109521666047/2147483648)", "(max-aspect-ratio: 219043332095/4294967296)", "(max-aspect-ratio: 438086664191/8589934592)", "(max-aspect-ratio: 876173328383/17179869184)", "(max-aspect-ratio: 1752346656767/34359738368)", "(max-aspect-ratio: 3504693313535/68719476736)", "(max-aspect-ratio: 7009386627071/137438953472)", "(max-aspect-ratio: 14018773254143/274877906944)", "(max-aspect-ratio: 28037546508287/549755813888)", "(max-aspect-ratio: 56075093016575/1099511627776)", "(max-aspect-ratio: 112150186033151/2199023255552)", "(max-aspect-ratio: 224300372066303/4398046511104)", "(max-aspect-ratio: 448600744132607/8796093022208)", "(max-aspect-ratio: 897201488265215/17592186044416)", "(max-aspect-ratio: 1794402976530431/35184372088832)", "(max-aspect-ratio: 3588805953060863/70368744177664)", "(max-aspect-ratio: 7177611906121727/140737488355328)", "(min-resolution: 0.0001dpi)", "(max-resolution: 24dpi)", "(max-resolution: 48dpi)", "(max-resolution: 96dpi)", "(max-resolution: 72dpi)", "(max-resolution: 84dpi)", "(max-resolution: 90dpi)", "(max-resolution: 93dpi)", "(max-resolution: 95dpi)", "(any-hover: none)", "(any-hover: hover)", "(any-pointer: none)", "(any-pointer: coarse)", "(any-pointer: fine)", "(max-color: 8)", "(max-color: 4)", "(max-color: 6)", "(max-color: 7)", "(color-gamut: srgb)", "(color-gamut: p3)", "(color-gamut: rec2020)", "(max-color-index: 1000)", "(max-color-index: 500)", "(max-color-index: 250)", "(max-color-index: 125)", "(max-color-index: 62)", "(max-color-index: 31)", "(max-color-index: 15)", "(max-color-index: 7)", "(max-color-index: 3)", "(max-color-index: 1)", "(max-color-index: 0)", "(display-mode: fullscreen)", "(display-mode: standalone)", "(display-mode: minimal-ui)", "(display-mode: browser)", "(forced-colors: none)", "(forced-colors: active)", "(grid: 0)", "(grid: 1)", "(max-height: 600px)", "(max-height: 1200px)", "(max-height: 900px)", "(max-height: 750px)", "(max-height: 825px)", "(max-height: 863px)", "(max-height: 844px)", "(max-height: 854px)", "(max-height: 859px)", "(max-height: 861px)", "(max-height: 862px)", "(hover: none)", "(hover: hover)", "(inverted-colors: none)", "(inverted-colors: inverted)", "(light-level: normal)", "(light-level: dim)", "(light-level: washed)", "(max-monochrome: 1)", "(max-monochrome: 0)", "(orientation: landscape)", "(orientation: portrait)", "(pointer: none)", "(pointer: coarse)", "(pointer: fine)", "(overflow-inline: none)", "(overflow-inline: scroll)", "(scripting: none)", "(scripting: initial-only)", "(scripting: enabled)", "(max-width: 600px)", "(max-width: 1200px)", "(max-width: 2400px)", "(max-width: 4800px)", "(max-width: 9600px)", "(max-width: 19200px)", "(max-width: 38400px)", "(max-width: 76800px)", "(max-width: 153600px)", "(max-width: 307200px)", "(max-width: 614400px)", "(max-width: 1228800px)", "(max-width: 2457600px)", "(max-width: 4915200px)", "(max-width: 9830400px)", "(max-width: 19660800px)", "(max-width: 39321600px)", "(max-width: 78643200px)", "(max-width: 157286400px)", "(max-width: 314572800px)", "(max-width: 629145600px)", "(max-width: 1258291200px)", "(max-width: 2516582400px)", "(max-width: 5033164800px)", "(max-width: 10066329600px)", "(max-width: 20132659200px)", "(max-width: 40265318400px)", "(max-width: 80530636800px)", "(max-width: 161061273600px)", "(max-width: 322122547200px)", "(max-width: 644245094400px)", "(max-width: 1288490188800px)", "(max-width: 2576980377600px)", "(max-width: 5153960755200px)", "(max-width: 10307921510400px)", "(max-width: 20615843020800px)", "(max-width: 41231686041600px)", "(max-width: 82463372083200px)", "(max-width: 164926744166400px)", "(max-width: 329853488332800px)", "(max-width: 659706976665600px)", "(max-width: 1319413953331200px)", "(max-width: 2638827906662400px)", "(max-width: 5277655813324800px)", "(max-width: 10555311626649600px)", "(max-width: 21110623253299200px)", "(max-width: 42221246506598400px)", "(max-width: 84442493013196800px)", "(max-width: 168884986026393600px)", "(max-width: 337769972052787200px)", "(max-width: 675539944105574400px)", "(max-width: 506654958079180800px)", "(max-width: 591097451092377600px)", "(max-width: 633318697598976000px)", "(max-width: 654429320852275200px)", "(max-width: 664984632478924800px)", "(max-width: 670262288292249600px)", "(max-width: 672901116198912000px)", "(max-width: 674220530152243200px)", "(max-width: 674880237128908800px)", "(max-width: 675210090617241600px)", "(max-width: 675375017361408000px)", "(max-width: 675457480733491200px)", "(max-width: 675498712419532800px)", "(max-width: 675519328262553600px)", "(max-width: 675529636184064000px)", "(max-width: 675534790144819200px)", "(max-width: 675537367125196800px)", "(max-width: 675538655615385600px)", "(max-width: 675539299860480000px)", "(max-width: 675539621983027200px)", "(max-width: 675539783044300800px)", "(max-width: 675539863574937600px)", "(max-width: 675539903840256000px)", "(max-width: 675539923972915200px)", "(max-width: 675539934039244800px)", "(max-width: 675539939072409600px)", "(max-width: 675539941588992000px)", "(max-width: 675539942847283200px)", "(max-width: 675539943476428800px)", "(max-width: 675539943791001600px)", "(max-width: 675539943948288000px)", "(max-width: 675539944026931200px)", "(max-width: 675539944066252800px)", "(max-width: 675539944085913600px)", "(max-width: 675539944095744000px)", "(max-width: 675539944100659200px)", "(max-width: 675539944103116800px)", "(max-width: 675539944104345600px)", "(max-width: 675539944104960000px)", "(max-width: 675539944105267200px)", "(max-width: 675539944105420800px)", "(max-width: 675539944105497600px)", "(max-width: 675539944105536000px)", "(max-width: 675539944105555200px)", "(max-width: 675539944105564800px)", "(max-width: 675539944105569500px)", "(max-width: 675539944105572000px)", "(max-width: 675539944105573100px)", "(max-width: 675539944105573800px)", "(max-width: 675539944105574100px)", "(prefers-contrast: no-preference)", "(prefers-contrast: high)", "(prefers-contrast: low)", "(overflow-block: none)", "(overflow-block: scroll)", "(overflow-block: optional-paged)", "(overflow-block: paged)", "(update: none)", "(update: slow)", "(update: fast)", "(prefers-reduced-motion: no-preference)", "(prefers-reduced-motion: reduce)", "(q: 1)", "(prefers-reduced-transparency: no-preference)", "(prefers-reduced-transparency: reduce)", "(prefers-color-scheme: no-preference)", "(prefers-color-scheme: light)", "(prefers-color-scheme: dark)", "(scan: interlace)", "(scan: progressive)"])
    let matchmedias = {}
    for (let i = 0; i < matchmediaList.length; i++) {
        let k = matchmediaList[i];
        let v = matchMedia(k).matches
        matchmedias[k] = v
    }

    let fonts = [
        {"font": "50px  sans-serif", "text": "0-_{w."}, {
            "font": "50px  serif",
            "text": "0-_{w."
        }, {"font": "50px 'Andale Mono',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Arial Narrow',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Arial Unicode MS',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Batang',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Batang',  serif", "text": "0-_{w."}, {
            "font": "50px 'Bell MT',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Bell MT',  serif", "text": "0-_{w."}, {
            "font": "50px 'Brush Script',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Brush Script',  serif", "text": "0-_{w."}, {
            "font": "50px 'Brush Script MT',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Calibri',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Calibri',  serif",
            "text": "0-_{w."
        }, {"font": "50px 'Charter',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Courier',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Courier New',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Curlz MT',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Curlz MT',  serif", "text": "0-_{w."}, {
            "font": "50px 'DejaVu Sans',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'DejaVu Sans',  serif", "text": "0-_{w."}, {
            "font": "50px 'DejaVu Sans Mono',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'DejaVu Sans Mono',  serif", "text": "0-_{w."}, {
            "font": "50px 'DejaVu Serif Condensed',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'DejaVu Serif Condensed',  serif", "text": "0-_{w."}, {
            "font": "50px 'Droid Sans',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Droid Sans',  serif", "text": "0-_{w."}, {
            "font": "50px 'Droid Sans Fallback',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Droid Sans Fallback',  serif", "text": "0-_{w."}, {
            "font": "50px 'Droid Serif',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Droid Serif',  serif", "text": "0-_{w."}, {
            "font": "50px 'Forte',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Forte',  serif", "text": "0-_{w."}, {
            "font": "50px 'Futura',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Geneva',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Hei',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Leelawadee',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Leelawadee',  serif",
            "text": "0-_{w."
        }, {"font": "50px 'Levenim MT',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Levenim MT',  serif",
            "text": "0-_{w."
        }, {"font": "50px 'Liberation Sans',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Liberation Sans',  serif",
            "text": "0-_{w."
        }, {
            "font": "50px 'Liberation Sans Narrow',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Liberation Sans Narrow',  serif", "text": "0-_{w."}, {
            "font": "50px 'Marlett',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Marlett',  serif", "text": "0-_{w."}, {
            "font": "50px 'Meiryo UI',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Meiryo UI',  serif", "text": "0-_{w."}, {
            "font": "50px 'Microsoft Uighur',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Microsoft Uighur',  serif", "text": "0-_{w."}, {
            "font": "50px 'Microsoft YaHei UI',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Microsoft YaHei UI',  serif", "text": "0-_{w."}, {
            "font": "50px 'MS Mincho',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'MS Mincho',  serif", "text": "0-_{w."}, {
            "font": "50px 'MS UI Gothic',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'MS UI Gothic',  serif", "text": "0-_{w."}, {
            "font": "50px 'NanumGothic',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Nirmala UI',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Nirmala UI',  serif",
            "text": "0-_{w."
        }, {"font": "50px 'Palatino',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Papyrus',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'PMingLiU',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'PMingLiU',  serif",
            "text": "0-_{w."
        }, {"font": "50px 'PT Serif',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'SimHei',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'SimHei',  serif", "text": "0-_{w."}, {
            "font": "50px 'STIXVariants',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'STSong',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Traditional Arabic',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Traditional Arabic',  serif", "text": "0-_{w."}, {
            "font": "50px 'Urdu Typesetting',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Urdu Typesetting',  serif", "text": "0-_{w."}, {
            "font": "50px 'Verdana',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Wingdings',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Wingdings 3',  sans-serif",
            "text": "0-_{w."
        }, {"font": "50px 'Helkevtrica',  sans-serif", "text": "0-_{w."}, {
            "font": "50px 'Helkevtrica',  serif",
            "text": "0-_{w."
        }, {"font": "1000px sans-serif", "text": "₹"}, {"font": "1000px sans-serif", "text": "▁"}, {
            "font": "1000px sans-serif",
            "text": "₺"
        }, {"font": "1000px sans-serif", "text": "ꜽ"}, {"font": "1000px sans-serif", "text": "�"}, {
            "font": "1000px sans-serif",
            "text": "₸"
        }, {"font": "1000px sans-serif", "text": "׆"}, {"font": "1000px sans-serif", "text": "ẞ"}, {
            "font": "1000px sans-serif",
            "text": "ॿ"
        }, {"font": "1000px sans-serif", "text": ""}, {"font": "1000px sans-serif", "text": "᳚"}, {
            "font": "1000px sans-serif",
            "text": "៝"
        }, {"font": "1000px sans-serif", "text": "⎮"}, {"font": "1000px sans-serif", "text": "ം"}, {
            "font": "1000px sans-serif",
            "text": "ஂ"
        }, {"font": "1000px sans-serif", "text": "ᅚ"}, {"font": "1000px sans-serif", "text": "␥"}, {
            "font": "1000px sans-serif",
            "text": "〮"
        }, {"font": "1000px sans-serif", "text": "꠰"}, {"font": "1000px sans-serif", "text": "⬆"}, {
            "font": "1000px sans-serif",
            "text": "⇤"
        }, {"font": "1000px sans-serif", "text": "₽"}, {"font": "1000px sans-serif", "text": "ⱻ"}, {
            "font": "1000px sans-serif",
            "text": "₰"
        }, {"font": "1000px sans-serif", "text": "ﯮ"}, {"font": "1000px sans-serif", "text": ""}, {
            "font": "1000px sans-serif",
            "text": ""
        }, {"font": "1000px sans-serif", "text": ""}, {"font": "1000px sans-serif", "text": "Ⴀ"}, {
            "font": "1000px sans-serif",
            "text": "𝞐"
        }, {"font": "1000px sans-serif", "text": "܀"}, {"font": "1000px sans-serif", "text": "ᥐ"}, {
            "font": "1000px sans-serif",
            "text": "ゕ"
        }, {"font": "1000px sans-serif", "text": "匭"}, {
            "font": "1000px sans-serif",
            "text": "؜"
        }, {"font": "1000px sans-serif", "text": "⃣"}, {"font": "1000px sans-serif", "text": "￹"}, {
            "font": "1000px sans-serif",
            "text": "Ș"
        }, {"font": "1000px sans-serif", "text": "֏"}, {"font": "1000px sans-serif", "text": "ࣤ"}, {
            "font": "1000px sans-serif",
            "text": "঳"
        }, {"font": "1000px sans-serif", "text": "᱐"}, {"font": "1000px sans-serif", "text": "☙"}, {
            "font": "1000px serif",
            "text": "₹"
        }, {"font": "1000px serif", "text": "▁"}, {"font": "1000px serif", "text": "₺"}, {
            "font": "1000px serif",
            "text": "ꜽ"
        }, {"font": "1000px serif", "text": "�"}, {"font": "1000px serif", "text": "₸"}, {
            "font": "1000px serif",
            "text": "׆"
        }, {"font": "1000px serif", "text": "ẞ"}, {"font": "1000px serif", "text": "ॿ"}, {
            "font": "1000px serif",
            "text": ""
        }, {"font": "1000px serif", "text": "᳚"}, {"font": "1000px serif", "text": "៝"}, {
            "font": "1000px serif",
            "text": "⎮"
        }, {"font": "1000px serif", "text": "ം"}, {"font": "1000px serif", "text": "ஂ"}, {
            "font": "1000px serif",
            "text": "ᅚ"
        }, {"font": "1000px serif", "text": "␥"}, {"font": "1000px serif", "text": "〮"}, {
            "font": "1000px serif",
            "text": "꠰"
        }, {"font": "1000px serif", "text": "⬆"}, {"font": "1000px serif", "text": "⇤"}, {
            "font": "1000px serif",
            "text": "₽"
        }, {"font": "1000px serif", "text": "ⱻ"}, {"font": "1000px serif", "text": "₰"}, {
            "font": "1000px serif",
            "text": "ﯮ"
        }, {"font": "1000px serif", "text": ""}, {"font": "1000px serif", "text": ""}, {
            "font": "1000px serif",
            "text": ""
        }, {"font": "1000px serif", "text": "Ⴀ"}, {"font": "1000px serif", "text": "𝞐"}, {
            "font": "1000px serif",
            "text": "܀"
        }, {"font": "1000px serif", "text": "ᥐ"}, {"font": "1000px serif", "text": "ゕ"}, {
            "font": "1000px serif",
            "text": "匭"
        }, {"font": "1000px serif", "text": "؜"}, {"font": "1000px serif", "text": "⃣"}, {
            "font": "1000px serif",
            "text": "￹"
        }, {"font": "1000px serif", "text": "Ș"}, {"font": "1000px serif", "text": "֏"}, {
            "font": "1000px serif",
            "text": "ࣤ"
        }, {"font": "1000px serif", "text": "঳"}, {"font": "1000px serif", "text": "᱐"}, {
            "font": "1000px serif",
            "text": "☙"
        }, {"font": "1000px monospace", "text": "₹"}, {"font": "1000px monospace", "text": "▁"}, {
            "font": "1000px monospace",
            "text": "₺"
        }, {"font": "1000px monospace", "text": "ꜽ"}, {"font": "1000px monospace", "text": "�"}, {
            "font": "1000px monospace",
            "text": "₸"
        }, {"font": "1000px monospace", "text": "׆"}, {"font": "1000px monospace", "text": "ẞ"}, {
            "font": "1000px monospace",
            "text": "ॿ"
        }, {"font": "1000px monospace", "text": ""}, {"font": "1000px monospace", "text": "᳚"}, {
            "font": "1000px monospace",
            "text": "៝"
        }, {"font": "1000px monospace", "text": "⎮"}, {"font": "1000px monospace", "text": "ം"}, {
            "font": "1000px monospace",
            "text": "ஂ"
        }, {"font": "1000px monospace", "text": "ᅚ"}, {"font": "1000px monospace", "text": "␥"}, {
            "font": "1000px monospace",
            "text": "〮"
        }, {"font": "1000px monospace", "text": "꠰"}, {"font": "1000px monospace", "text": "⬆"}, {
            "font": "1000px monospace",
            "text": "⇤"
        }, {"font": "1000px monospace", "text": "₽"}, {"font": "1000px monospace", "text": "ⱻ"}, {
            "font": "1000px monospace",
            "text": "₰"
        }, {"font": "1000px monospace", "text": "ﯮ"}, {"font": "1000px monospace", "text": ""}, {
            "font": "1000px monospace",
            "text": ""
        }, {"font": "1000px monospace", "text": ""}, {"font": "1000px monospace", "text": "Ⴀ"}, {
            "font": "1000px monospace",
            "text": "𝞐"
        }, {"font": "1000px monospace", "text": "܀"}, {"font": "1000px monospace", "text": "ᥐ"}, {
            "font": "1000px monospace",
            "text": "ゕ"
        }, {"font": "1000px monospace", "text": "匭"}, {"font": "1000px monospace", "text": "؜"}, {
            "font": "1000px monospace",
            "text": "⃣"
        }, {"font": "1000px monospace", "text": "￹"}, {"font": "1000px monospace", "text": "Ș"}, {
            "font": "1000px monospace",
            "text": "֏"
        }, {"font": "1000px monospace", "text": "ࣤ"}, {"font": "1000px monospace", "text": "঳"}, {
            "font": "1000px monospace",
            "text": "᱐"
        }, {"font": "1000px monospace", "text": "☙"}, {"font": "1000px cursive", "text": "₹"}, {
            "font": "1000px cursive",
            "text": "▁"
        }, {"font": "1000px cursive", "text": "₺"}, {"font": "1000px cursive", "text": "ꜽ"}, {
            "font": "1000px cursive",
            "text": "�"
        }, {"font": "1000px cursive", "text": "₸"}, {"font": "1000px cursive", "text": "׆"}, {
            "font": "1000px cursive",
            "text": "ẞ"
        }, {"font": "1000px cursive", "text": "ॿ"}, {"font": "1000px cursive", "text": ""}, {
            "font": "1000px cursive",
            "text": "᳚"
        }, {"font": "1000px cursive", "text": "៝"}, {"font": "1000px cursive", "text": "⎮"}, {
            "font": "1000px cursive",
            "text": "ം"
        }, {"font": "1000px cursive", "text": "ஂ"}, {"font": "1000px cursive", "text": "ᅚ"}, {
            "font": "1000px cursive",
            "text": "␥"
        }, {"font": "1000px cursive", "text": "〮"}, {"font": "1000px cursive", "text": "꠰"}, {
            "font": "1000px cursive",
            "text": "⬆"
        }, {"font": "1000px cursive", "text": "⇤"}, {"font": "1000px cursive", "text": "₽"}, {
            "font": "1000px cursive",
            "text": "ⱻ"
        }, {"font": "1000px cursive", "text": "₰"}, {"font": "1000px cursive", "text": "ﯮ"}, {
            "font": "1000px cursive",
            "text": ""
        }, {"font": "1000px cursive", "text": ""}, {"font": "1000px cursive", "text": ""}, {
            "font": "1000px cursive",
            "text": "Ⴀ"
        }, {"font": "1000px cursive", "text": "𝞐"}, {"font": "1000px cursive", "text": "܀"}, {
            "font": "1000px cursive",
            "text": "ᥐ"
        }, {"font": "1000px cursive", "text": "ゕ"}, {"font": "1000px cursive", "text": "匭"}, {
            "font": "1000px cursive",
            "text": "؜"
        }, {"font": "1000px cursive", "text": "⃣"}, {"font": "1000px cursive", "text": "￹"}, {
            "font": "1000px cursive",
            "text": "Ș"
        }, {"font": "1000px cursive", "text": "֏"}, {"font": "1000px cursive", "text": "ࣤ"}, {
            "font": "1000px cursive",
            "text": "঳"
        }, {"font": "1000px cursive", "text": "᱐"}, {"font": "1000px cursive", "text": "☙"}, {
            "font": "1000px fantasy",
            "text": "₹"
        }, {"font": "1000px fantasy", "text": "▁"}, {"font": "1000px fantasy", "text": "₺"}, {
            "font": "1000px fantasy",
            "text": "ꜽ"
        }, {"font": "1000px fantasy", "text": "�"}, {"font": "1000px fantasy", "text": "₸"}, {
            "font": "1000px fantasy",
            "text": "׆"
        }, {"font": "1000px fantasy", "text": "ẞ"}, {"font": "1000px fantasy", "text": "ॿ"}, {
            "font": "1000px fantasy",
            "text": ""
        }, {"font": "1000px fantasy", "text": "᳚"}, {"font": "1000px fantasy", "text": "៝"}, {
            "font": "1000px fantasy",
            "text": "⎮"
        }, {"font": "1000px fantasy", "text": "ം"}, {"font": "1000px fantasy", "text": "ஂ"}, {
            "font": "1000px fantasy",
            "text": "ᅚ"
        }, {"font": "1000px fantasy", "text": "␥"}, {"font": "1000px fantasy", "text": "〮"}, {
            "font": "1000px fantasy",
            "text": "꠰"
        }, {"font": "1000px fantasy", "text": "⬆"}, {"font": "1000px fantasy", "text": "⇤"}, {
            "font": "1000px fantasy",
            "text": "₽"
        }, {"font": "1000px fantasy", "text": "ⱻ"}, {"font": "1000px fantasy", "text": "₰"}, {
            "font": "1000px fantasy",
            "text": "ﯮ"
        }, {"font": "1000px fantasy", "text": ""}, {"font": "1000px fantasy", "text": ""}, {
            "font": "1000px fantasy",
            "text": ""
        }, {"font": "1000px fantasy", "text": "Ⴀ"}, {"font": "1000px fantasy", "text": "𝞐"}, {
            "font": "1000px fantasy",
            "text": "܀"
        }, {"font": "1000px fantasy", "text": "ᥐ"}, {"font": "1000px fantasy", "text": "ゕ"}, {
            "font": "1000px fantasy",
            "text": "匭"
        }, {"font": "1000px fantasy", "text": "؜"}, {"font": "1000px fantasy", "text": "⃣"}, {
            "font": "1000px fantasy",
            "text": "￹"
        }, {"font": "1000px fantasy", "text": "Ș"}, {"font": "1000px fantasy", "text": "֏"}, {
            "font": "1000px fantasy",
            "text": "ࣤ"
        }, {"font": "1000px fantasy", "text": "঳"}, {"font": "1000px fantasy", "text": "᱐"}, {
            "font": "1000px fantasy",
            "text": "☙"
        }, {"font": "72px monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px serif", "text": "mmmmmmmmlli"}, {
            "font": "72px ARNOPRO, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px ARNOPRO, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px ARNOPRO, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px AgencyFB, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px AgencyFB, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px AgencyFB, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px ArabicTypesetting, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px ArabicTypesetting, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px ArabicTypesetting, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px ArialUnicodeMS, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px ArialUnicodeMS, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px ArialUnicodeMS, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px AvantGardeBkBT, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px AvantGardeBkBT, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px AvantGardeBkBT, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px BankGothicMdBT, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px BankGothicMdBT, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px BankGothicMdBT, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Batang, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Batang, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Batang, serif",
            "text": "mmmmmmmmlli"
        }, {
            "font": "72px BitstreamVeraSansMono, monospace",
            "text": "mmmmmmmmlli"
        }, {
            "font": "72px BitstreamVeraSansMono, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px BitstreamVeraSansMono, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Calibri, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Calibri, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Calibri, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Century, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px Century, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Century, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px CenturyGothic, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px CenturyGothic, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px CenturyGothic, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Clarendon, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px Clarendon, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Clarendon, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px EUROSTILE, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px EUROSTILE, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px EUROSTILE, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px FranklinGothic, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px FranklinGothic, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px FranklinGothic, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px FuturaBkBT, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px FuturaBkBT, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px FuturaBkBT, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px FuturaMdBT, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px FuturaMdBT, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px FuturaMdBT, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px GOTHAM, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px GOTHAM, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px GOTHAM, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px GillSans, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px GillSans, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px GillSans, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px HELV, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px HELV, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px HELV, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Haettenschweiler, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px Haettenschweiler, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Haettenschweiler, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px HelveticaNeue, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px HelveticaNeue, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px HelveticaNeue, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Humanst521BT, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px Humanst521BT, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Humanst521BT, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Leelawadee, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Leelawadee, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Leelawadee, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px LetterGothic, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px LetterGothic, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px LetterGothic, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px LevenimMT, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px LevenimMT, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px LevenimMT, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px LucidaBright, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px LucidaBright, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px LucidaBright, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px LucidaSans, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px LucidaSans, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px LucidaSans, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MSMincho, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px MSMincho, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MSMincho, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MSOutlook, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MSOutlook, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MSOutlook, serif",
            "text": "mmmmmmmmlli"
        }, {
            "font": "72px MSReferenceSpecialty, monospace",
            "text": "mmmmmmmmlli"
        }, {
            "font": "72px MSReferenceSpecialty, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MSReferenceSpecialty, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MSUIGothic, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MSUIGothic, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MSUIGothic, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MTExtra, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px MTExtra, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MTExtra, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MYRIADPRO, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MYRIADPRO, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MYRIADPRO, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Marlett, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px Marlett, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Marlett, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MeiryoUI, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MeiryoUI, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MeiryoUI, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MicrosoftUighur, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px MicrosoftUighur, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MicrosoftUighur, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MinionPro, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MinionPro, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px MinionPro, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MonotypeCorsiva, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px MonotypeCorsiva, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px MonotypeCorsiva, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px PMingLiU, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px PMingLiU, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px PMingLiU, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Pristina, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px Pristina, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Pristina, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px SCRIPTINA, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px SCRIPTINA, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px SCRIPTINA, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px SegoeUILight, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px SegoeUILight, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px SegoeUILight, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Serifa, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Serifa, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Serifa, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px SimHei, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px SimHei, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px SimHei, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px SmallFonts, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px SmallFonts, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px SmallFonts, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Staccato222BT, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px Staccato222BT, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Staccato222BT, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px TRAJANPRO, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px TRAJANPRO, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px TRAJANPRO, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px UniversCE55Medium, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px UniversCE55Medium, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px UniversCE55Medium, serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Vrinda, monospace",
            "text": "mmmmmmmmlli"
        }, {"font": "72px Vrinda, sans-serif", "text": "mmmmmmmmlli"}, {
            "font": "72px Vrinda, serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px ZWAdobeF, monospace", "text": "mmmmmmmmlli"}, {
            "font": "72px ZWAdobeF, sans-serif",
            "text": "mmmmmmmmlli"
        }, {"font": "72px ZWAdobeF, serif", "text": "mmmmmmmmlli"}]

    let fontsRes = {}
    var canvas = new OffscreenCanvas(1200, 1200)
    var ctx = canvas.getContext('2d')
    for (let i = 0; i < fonts.length; i++) {
        ctx.font = fonts[i].font;
        let met = ctx.measureText(fonts[i].text)
        if (!fontsRes[fonts[i].font]) {
            fontsRes[fonts[i].font] = {}
        }
        fontsRes[fonts[i].font][fonts[i].text] = {
            width: met.width,
            actualboundingboxascent: met.actualBoundingBoxAscent,
            actualboundingboxleft: met.actualBoundingBoxLeft,
            actualboundingboxright: met.actualBoundingBoxRight,
            fontboundingboxascent: met.fontBoundingBoxAscent,
            actualboundingboxdescent: met.actualBoundingBoxDescent,
        }
    }


    let imgsRes = {};

    let sss = [
        {
            "font": "94px sans-serif",
            "fillStyle": "#000000",
            "fillText": ["😎", -1, 96],
            "imageData": [18, 90, 1, 1]
        }, {
            "font": "94px sans-serif",
            "fillStyle": "#000000",
            "fillText": ["6️⃣", -1, 96],
            "imageData": [38, 77, 1, 1]
        }, {
            "font": "94px sans-serif",
            "fillStyle": "#000000",
            "fillText": ["🍼", -1, 96],
            "imageData": [48, 28, 1, 1]
        }, {
            "font": "94px sans-serif",
            "fillStyle": "#000000",
            "fillText": ["🏴󠁧󠁢󠁥󠁮󠁧󠁿", -1, 96],
            "imageData": [94, 23, 1, 1]
        }, {
            "font": "94px sans-serif",
            "fillStyle": "#000000",
            "fillText": ["📊", -1, 96],
            "imageData": [26, 46, 1, 1]
        }, {
            "font": "94px sans-serif",
            "fillStyle": "#000000",
            "fillText": ["🏴󠁧󠁢󠁥󠁮󠁧󠁿", -1, 96],
            "imageData": [47, 23, 1, 1]
        }, {
            "font": "94px sans-serif",
            "fillStyle": "#000000",
            "fillText": ["㊗️", -1, 96],
            "imageData": [37, 17, 1, 1]
        }, {
            "font": "94px sans-serif",
            "fillStyle": "#000000",
            "fillText": ["⛎", -1, 96],
            "imageData": [62, 28, 1, 1]
        }
    ]

    let imgRes = {};
    for (let i = 0; i < sss.length; i++) {

        var a = document.createElement('canvas')
        a.width = 96
        a.height = 96
        let ctx = a.getContext('2d');
        let s = sss[i];
        ctx.font = s.font;
        ctx.fillStyle = s.fillStyle;
        ctx.fillText(...s.fillText)

        let data = ctx.getImageData(...s.imageData);
        if (!imgRes[s.font]) {
            imgRes[s.font] = {}
        }
        imgRes[s.font][s.imageData + ''] = data.data + ''

    }


    let glArgs = {
        3413: 8,
        3412: 8,
        3411: 8,
        3410: 8,
        3414: 24,
        35661: 32,
        34076: 16384,
        36349: 1024,
        34024: 16384,
        34930: 16,
        3379: 16384,
        36348: 31,
        34921: 16,
        35660: 16,
        36347: 1024,
        7937: 'WebKit WebGL',
        35724: 'WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)',
        3415: 0,
        7936: 'WebKit',
        7938: 'WebGL 1.0 (OpenGL ES 2.0 Chromium)',
        37445: 'Google Inc.',
        37446: 'ANGLE (Apple, Apple M1 Max, OpenGL 4.1)',
        34047: 16
    };


    var glARgs = Object.keys(glArgs);
    var canvas = document.createElement('canvas')
    var gl = canvas.getContext('webgl')
    gl.getExtension('WEBGL_debug_renderer_info')
    gl.getExtension('EXT_texture_filter_anisotropic')
    for (let i = 0; i < glARgs.length; i++) {
        glArgs[glARgs[i]] = gl.getParameter(parseInt(glARgs[i]))
    }


    let navigatorparams = {
        appname: navigator.appName,
        appncodename: navigator.appCodeName,
        appversion: navigator.appVersion,
        appcodename: navigator.appCodeName,
        hardwareconcurrency: navigator.hardwareConcurrency,
        maxtouchpoints: navigator.maxTouchPoints,
        platform: navigator.platform,
        product: navigator.product,
        productsub: navigator.productSub,
        useragent: navigator.userAgent,
        vendor: navigator.vendor,
        vendorsub: navigator.vendorSub,
        donottrack: navigator.doNotTrack,
        oscpu: navigator.oscpu ? navigator.oscpu : '',
        buildid: navigator.buildID ? navigator.buildID : '',
    }

    let screenparams = {
        height: screen.height,
        width: screen.width,
        availheight: screen.availHeight,
        availwidth: screen.availWidth,
        pixeldepth: screen.pixelDepth,
        colordepth: screen.colorDepth,
        availtop: screen.availTop,
        availleft: screen.availLeft,
    }


    let featurePolicy;
    if (document.featurePolicy) {
        featurePolicy = {
            features: document.featurePolicy.features(),
            allowedfeatures: document.featurePolicy.allowedFeatures(),
        }
    }
    let windowparams = {
        innerheight: window.innerHeight,
        innerwidth: window.innerWidth,
        outerheight: window.outerHeight,
        outerwidth: window.outerWidth,
        screenx: window.screenX,
        screeny: window.screenY,
        screentop: window.screenTop,
        screenleft: window.screenLeft,
        pageyoffset: window.pageYOffset,
        devicepixelratio: window.devicePixelRatio,
    }


    let plugins = navigator.plugins;

    let plgs = {}

    function getObj(r) {

        return {
            description: r.description,
            suffixes: r.suffixes,
            type: r.type,
        }

    }

    for (let i = 0; i < plugins.length; i++) {
        let p = plugins.item(i);
        let pi = {}
        let keys = ['0', '1', 'application/pdf', 'text/pdf', 'description', 'filename', 'length', 'name'];
        for (const key of keys) {
            let r = p[key];
            if (typeof r === 'object') {
                r = getObj(r)
                r.enabledPlugin = [];
            }
            pi[key] = r
        }
        plgs[i] = pi
    }

    let mimes = [];
    let mimeTypes = navigator.mimeTypes;
    for (let i = 0; i < mimeTypes.length; i++) {
        let mime = mimeTypes.item(i);
        mimes.push({
            description: mime.description,
            suffixes: mime.suffixes,
            type: mime.type,
        })
    }

    function getDataUrl() {
        var canvas = document.createElement('canvas');
        let ctx = canvas.getContext('2d');
        ctx.font = '18pt Sans';
        ctx.textBaseline = 'top'
        ctx.fillText('Hel$&?6%){mZ+#@', 2, 2)
        return canvas.toDataURL("image/png");

    }

    function getDataUrl2() {
        let A = function () {
            let d = String["fromCharCode"];
            for (var t = [], n = 0, e = "", r = 0, a = arguments["length"]; r !== a; ++r) {
                var o = +arguments[r];
                if (!(o < 1114111 && o >>> 0 === o)) {
                    throw RangeError("Invalid code point: " + o);
                }
                o <= 65535 ? n = t["push"](o) : (o -= 65536, n = t["push"](55296 + (o >> 10), o % 1024 + 56320));
                n >= 16383 && (e += d["apply"](null, t), t["length"] = 0);
            }

            return e + d["apply"](null, t);
        };

        function Ll(t, n) {
            var e = document["createElement"]("canvas");
            e["width"] = t || 2e3;
            e["height"] = n || 200;
            e["style"]["display"] = "inline";
            return e;
        }

        function f(t) {
            f = "function" == typeof Symbol && "symbol" == typeof Symbol["iterator"] ? function (t) {
                return typeof t;
            } : function (t) {
                return t && "function" == typeof Symbol && t["constructor"] === Symbol && t !== Symbol["prototype"] ? "symbol" : typeof t;
            };
            return f(t);
        }

        function jl(t) {
            var n = t && t["getContext"]("2d");
            return n && f(n["fillText"]) === "function" ? n : null;
        }

        var e = "no_fp";
        try {
            var r = Ll(860, 6);
            if (r) {
                var a = jl(r);
                e = "PX11982";
                if (a) {
                    a["font"] = "6px sans-serif";
                    var o = 1;
                    [97, 667, 917, 1050, 1344, 1488, 1575, 1808, 1931, 2342, 2476, 2583, 2711, 2825, 2980, 3108, 3221, 3374, 3517, 3524, 3652, 3749, 3926, 4121, 4325, 4877, 5091, 5123, 6017, 6190, 6682, 7070, 11612, 20206, 27721, 41352, 43415, 54620, 55295]["forEach"](function (t) {
                        a["fillText"](A("0x" + t["toString"](16)), 6 * o, 6);
                        o++;
                    });
                    for (var i = 9881; i < 9983; i++) {
                        a["fillText"](A("0x" + i["toString"](16)), 6 * o, 6);
                        o++;
                    }
                    // PX12572
                    e = a["canvas"]["toDataURL"]();
                }
            } else {
                e = "PX12423";
            }
        } catch (n) {
            e = "PX11474";
        }


        var e2 = "no_fp";
        try {
            var r = Ll(650, 12);
            if (r) {
                var a = jl(r);
                e2 = "PX11982";
                if (a) {
                    a["font"] = "8px sans-serif";
                    for (var o = 1, i = 128512; i < 128591; i++) {
                        a["fillText"](A("0x" + i["toString"](16)), 8 * o, 8);
                        o++;
                    }
                    // PX11927
                    e2 = a["canvas"]["toDataURL"]();
                }
            } else {
                e = "PX12423";
            }
        } catch (n) {
            e2 = "PX11474";
        }

        return {
            PX11927: e2,
            PX12572: e,
        }

    }
    let audioFp = {};
    (function() {
        try {
            var e;
            var r = new (window["OfflineAudioContext"] || window["webkitOfflineAudioContext"])(1, 44100, 44100);
            if (!r) {
                return {}
            }

            function f(t) {
                f = "function" == typeof Symbol && "symbol" == typeof Symbol["iterator"] ? function (t) {
                    return typeof t;
                } : function (t) {
                    return t && "function" == typeof Symbol && t["constructor"] === Symbol && t !== Symbol["prototype"] ? "symbol" : typeof t;
                };
                return f(t);
            }

            function Wl(t, n, e) {
                t && (f(t["setValueAtTime"]) === "function" ? t["setValueAtTime"](n, e) : t["value"] = n);
            }

            var a = r["createOscillator"]();
            var o = f(r["currentTime"]) === "number" && r["currentTime"] || 0;
            a["type"] = "sine";
            Wl(a["frequency"], 1e4, o);
            var c = r["createDynamicsCompressor"]();
            Wl(c["threshold"], -50, o);
            Wl(c["knee"], 40, o);
            Wl(c["ratio"], 12, o);
            Wl(c["reduction"], -20, o);
            Wl(c["attack"], 0, o);
            Wl(c["release"], .25, o);
            a["connect"](c);
            c["connect"](r["destination"]);
            a["start"](0);
            r["startRendering"]()["then"](function (t) {
                try {
                    var r;
                    var a = 0;
                    if (f(t["getChannelData"]) === "function") {
                        for (var o = 4500; o < 5e3; o++) {
                            var c = t["getChannelData"](0);
                            c && (a += Math["abs"](c[o]));
                        }
                    }
                    var h = a["toString"]();
                    var s = h ;
                    audioFp =  {
                        PX11477: h,
                        //P(h)
                        PX12109: s,
                    }
                } catch (t) {
                    var l;
                    return {};
                }
            });

            navigator.storage.estimate().then(e=>{
                audioFp.PX12362 = e.quota;
            })

            var a = function () {
             let Ju = window["speechSynthesis"]["getVoices"]();

            if (!Ju) {
              return {
                "browser": 'no_fp',
                "device": 'no_fp'
              };
            }
            for (var t = "", n = "", e = 0; e < Ju["length"]; e++) {
              var r = Ju[e];
              n += r["voiceURI"] + r["name"] + r["lang"] + r["localService"] + r["default"];
              r["name"] && -1 === r["name"]["indexOf"]("Google") && -1 === r["name"]["indexOf"]("Microsoft") && (t += r["name"]);
            }
            return {
              "browser": n,
              "device": t
            };
          }();
          audioFp["PX12525"] = a["browser"];
          audioFp["PX12526"] = a["device"];
        } catch (e) {
            var h;
            return {};
        }
    }())



    function canplay() {
        let videos = {
            "audio/aac; codecs=\"flac\"": "",
            "audio/flac": "probably",
            "audio/mpeg; codecs=\"mp3\"": "probably",
            "audio/mpeg; codecs=\"vp9\"": "",
            "audio/webm; codecs=\"vp8\"": "",
            "audio/webz": "",
            "audio/x-m4a; codecs=\"mp3\"": "",
            "audio/x-m4a; codecs=\"vp8, mp4a.40\"": "",
            "audio/x-m4a; codecs=\"vp9, mp4a.40.2\"": "",
            "video/mp4": "maybe",
            "video/mp4; codecs=\"ac-3\"": "",
            "video/mp4; codecs=\"avc1.42011E\"": "",
            "video/mp4; codecs=\"avc1.42E009\"": "maybe",
            "video/mp4; codecs=\"avc1.42E034\"": "probably",
            "video/mp4; codecs=\"avc1.42F01E\"": "probably",
            "video/mp4; codecs=\"avc1.4D001E\"": "probably",
            "video/mp4; codecs=\"avc3.42001E\"": "probably",
            "video/mp4; codecs=\"avc3.42E01E, mp4a.40.29\"": "probably",
            "video/mp4; codecs=\"flac\"": "probably",
            "video/mp4; codecs=\"hev1\"": "",
            "video/mp4; codecs=\"hvc1x\"": "",
            "video/mp4; codecs=\"lavc1337\"": "",
            "video/mp4; codecs=\"mp4a.40.02\"": "probably",
            "video/mp4; codecs=\"mp4a.40.5\"": "probably",
            "video/mp4; codecs=\"mp4a.67\"": "probably",
            "video/mp4; codecs=\"opus\"": "probably",
            "video/ogg; codecs=\"flac\"": "probably",
            "video/ogg; codecs=\"opus\"": "probably",
            "video/ogg; codecs=\"vp8\"": "probably",
            "video/webm": "maybe",
            "video/webm; codecs=\"av01.0.04M.08\"": "probably",
            "video/webm; codecs=\"vp09.02.10.08\"": "probably",
            "video/x-dv": "",
            "video/x-m4v; codecs=\"avc1.42AC23\"": "maybe"
        };
        var v = document.createElement('video');
        for (let i = 0; i < videos.length; i++) {
            videos[i] = v.canPlayType(videos[i]);
        }
        return videos;
    }

    function stringToHex(str) {
        var val = "";
        for (var i = 0; i < str.length; i++) {
            let a = (str.charCodeAt(i) - 20).toString(16);
            if (a.length == 1) {
                val += "0" + a;
            } else {
                val += a
            }
        }
        return val;
    }

    let userAgentData = {};
    navigator.userAgentData && navigator.userAgentData.getHighEntropyValues(['architecture', 'bitness', 'brands', 'mobile', 'model', 'platform',
        'platformVersion', 'uaFullVersion', 'wow64', 'fullVersionList']).then(e => {

        userAgentData['highvalue'] = e
        userAgentData['brands'] = navigator.userAgentData.brands
        userAgentData['mobile'] = navigator.userAgentData.mobile
        userAgentData['platform'] = navigator.userAgentData.platform
        // console.log(JSON.stringify(userAgentData))


    })

    let webglImg = function () {
        let canvas = document.createElement("canvas");
        canvas.width = 150;
        canvas.height = 150;
        let n = {};
        let t = canvas.getContext('webgl');
        var r;
        var a;
        var o;
        var c;
        var Gl = "no_fp";

        function Pl(t, n) {
            try {
                return t["getParameter"](n) || "no_fp";
            } catch (t) {
                return "no_fp";
            }
        }

        var u2 = function (n) {
            t["clearColor"](0, 0, 0, 1);
            t["enable"](t["DEPTH_TEST"]);
            t["depthFunc"](t["LEQUAL"]);
            t["clear"](t["COLOR_BUFFER_BIT"] | t["DEPTH_BUFFER_BIT"]);
            return "[" + n[0] + ", " + n[1] + "]";
        };
        r = t["createBuffer"]();
        t["bindBuffer"](t["ARRAY_BUFFER"], r);
        var u = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]);
        t["bufferData"](t["ARRAY_BUFFER"], u, t["STATIC_DRAW"]);
        r["itemSize"] = 3;
        r["numItems"] = 3;
        a = t["createProgram"]();
        o = t["createShader"](t["VERTEX_SHADER"]);
        t["shaderSource"](o, "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}");
        t["compileShader"](o);
        c = t["createShader"](t["FRAGMENT_SHADER"]);
        t["shaderSource"](c, "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}");
        t["compileShader"](c);
        t["attachShader"](a, o);
        t["attachShader"](a, c);
        t["linkProgram"](a);
        t["useProgram"](a);
        a["vertexPosAttrib"] = t["getAttribLocation"](a, "attrVertex");
        a["offsetUniform"] = t["getUniformLocation"](a, "uniformOffset");
        t["enableVertexAttribArray"](a["vertexPosArray"]);
        t["vertexAttribPointer"](a["vertexPosAttrib"], r["itemSize"], t["FLOAT"], !1, 0, 0);
        t["uniform2f"](a["offsetUniform"], 1, 1);
        t["drawArrays"](t["TRIANGLE_STRIP"], 0, r["numItems"]);
        n["canvasfp"] = null === t["canvas"] ? "no_fp" : t["canvas"]["toDataURL"]();
        n["extensions"] = t["getSupportedExtensions"]() || ["no_fp"];


        n["webglRenderer"] = Pl(t, t["RENDERER"]);
        n["shadingLangulageVersion"] = Pl(t, t["SHADING_LANGUAGE_VERSION"]);
        n["webglVendor"] = Pl(t, t["VENDOR"]);
        n["webGLVersion"] = Pl(t, t["VERSION"]);
        var a = t["getExtension"]("WEBGL_debug_renderer_info");
        a && (n["unmaskedVendor"] = Pl(t, a["UNMASKED_VENDOR_WEBGL"]), n["unmaskedRenderer"] = Pl(t, a["UNMASKED_RENDERER_WEBGL"]));
        n["webglParameters"] = [];
        var o = n["webglParameters"];
        o["push"](u2(Pl(t, t["ALIASED_LINE_WIDTH_RANGE"])));
        o["push"](u2(Pl(t, t["ALIASED_POINT_SIZE_RANGE"])));
        o["push"](Pl(t, t["ALPHA_BITS"]));
        o["push"](t["getContextAttributes"]()["antialias"] ? "yes" : "no");
        o["push"](Pl(t, t["BLUE_BITS"]));
        o["push"](Pl(t, t["DEPTH_BITS"]));
        o["push"](Pl(t, t["GREEN_BITS"]));
        o["push"](function (t) {
            var n;
            var e = t["getExtension"]("EXT_texture_filter_anisotropic") || t["getExtension"]("WEBKIT_EXT_texture_filter_anisotropic") || t["getExtension"]("MOZ_EXT_texture_filter_anisotropic");
            return e ? (0 === (n = t["getParameter"](e["MAX_TEXTURE_MAX_ANISOTROPY_EXT"])) && (n = 2), n) : null;
        }(t));
        o["push"](Pl(t, t["MAX_COMBINED_TEXTURE_IMAGE_UNITS"]));
        o["push"](Pl(t, t["MAX_CUBE_MAP_TEXTURE_SIZE"]));
        o["push"](Pl(t, t["MAX_FRAGMENT_UNIFORM_VECTORS"]));
        o["push"](Pl(t, t["MAX_RENDERBUFFER_SIZE"]));
        o["push"](Pl(t, t["MAX_TEXTURE_IMAGE_UNITS"]));
        o["push"](Pl(t, t["MAX_TEXTURE_SIZE"]));
        o["push"](Pl(t, t["MAX_VARYING_VECTORS"]));
        o["push"](Pl(t, t["MAX_VERTEX_ATTRIBS"]));
        o["push"](Pl(t, t["MAX_VERTEX_TEXTURE_IMAGE_UNITS"]));
        o["push"](Pl(t, t["MAX_VERTEX_UNIFORM_VECTORS"]));
        o["push"](u2(Pl(t, t["MAX_VIEWPORT_DIMS"])));
        o["push"](Pl(t, t["STENCIL_BITS"]));
        if (t["getShaderPrecisionFormat"]) {
            for (var i = ["VERTEX_SHADER", "FRAGMENT_SHADER", "VERTEX_SHADER", "FRAGMENT_SHADER"], c = ["HIGH_FLOAT", "MEDIUM_FLOAT", "LOW_FLOAT"], f = 0; f < i["length"]; f++) {
                for (var h = i[f], s = 0; s < c["length"]; s++) {
                    var l = c[s];
                    var v = t["getShaderPrecisionFormat"](t[h], t[l]);
                    o["push"](v["precision"], v["rangeMin"], v["rangeMax"]);
                }
            }
        }
        return n;
    }()
    setTimeout(function () {
        let locationprops = Object.keys(Object.create(location).__proto__);
        let documentFuncResult = [
            "_Selenium_IDE_Recorder",
            "all",
            "characterSet",
            "charset",
            "compatMode",
            "documentMode",
            "images",
            "layers"
        ].map(e => {
            return e in document ? 1 : 0
        });
        let bodyFuncResult = [
            "contextMenu",
            "innerText",
            "mozRequestFullScreen",
            "requestFullScreen",
            "webkitRequestFullScreen"
        ].map(e => {
            return e in document.body ? 1 : 0
        });
        let navigatorfuncResult = [
            "vibrate",
            "webdriver",
            "credentials",
            "storage",
            "requestMediaKeySystemAccess",
            "bluetooth"
        ].map(e => {
            return e in navigator ? 1 : 0
        });
        let windowprops = Object.getOwnPropertyNames(window);
        let lastIndex = windowprops.lastIndexOf('webkitResolveLocalFileSystemURL');
        windowprops = windowprops.slice(0, lastIndex);

        function intlDateTimeFormat() {
            return {
                spaceTime: new Intl["DateTimeFormat"]()["format"](""),
                timeZone: new window["Intl"]["DateTimeFormat"]()["resolvedOptions"]()["timeZone"]
            }
        }

        function has(a, b) {
            let res = [];
            for (let i = 0; i < b.length; i++) {
                res.push(b[i] in a ? 1 : 0)
            }
            return res;
        }

        function hasProperty() {
            var So = ["closed", "devicePixelRatio", "getSelection", "locationbar", "scrollbars", "crypto", "caches", "speechSynthesis", "menubar", "personalbar", "toolbar", "Dump", "VRDispaly", "VRDisplayCapabilities", "VRDisplayEvent", "VREyeParameters", "VRFieldOfView", "VRFrameData", "VRPose", "VRStageParameters", "mozInnerScreenX", "mozInnerScreenY", "mozRTCIceCandidate", "mozRTCPeerConnection", "mozRTCSessionDescription", "webkitMediaStream", "webkitRTCPeerConnection", "webkitSpeechGrammar", "webkitSpeechGrammarList", "webkitSpeechRecognition", "webkitSpeechRecognitionError", "webkitSpeechRecognitionEvent", "webkitURL", "scheduler", "getDefaultComputedStyle", "Yandex", "yandexAPI", "Chrome", "Opera", "onrendersubtreeactivation", "scheduler", "onactivateinvisible", "onoverscroll", "onscrollend", "ondevicemotion", "ondeviceorientation", "onabsolutedeviceorientation", "ondeviceproximity", "onuserproximity", "ondevicelight", "onvrdisplayconnect", "onvrdisplaydisconnect", "onvrdisplayactivate", "onvrdisplaydeactivate", "onvrdisplaypresentchange", "ondragexit", "onloadend", "onshow", "onelementpainted", "onmozfullscreenchange", "Onmozfullscreenerror", "Onabort", "Onafterprint", "Onanimationend", "Onanimationiteration", "Onanimationstart", "Onappinstalled", "Onauxclick", "onbeforeinstallprompt", "onbeforeprint", "onbeforeunload", "onbeforexrselect", "onblur", "oncancel", "oncanplay", "oncanplaythrough", "onchange", "onclick", "onclose", "oncontextmenu", "oncuechange", "ondblclick", "ondevicemotion", "ondeviceorientation", "ondeviceorientationabsolute", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "ondurationchange", "onemptied", "onended", "onerror", "onfocus", "onformdata", "ongotpointercapture", "onhashchange", "oninput", "oninvalid", "onkeydown", "onkeypress", "onkeyup", "onlanguagechange", "onload", "onloadeddata", "onloadedmetadata", "onloadstart", "onlostpointercapture", "onmessage", "onmessageerror", "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onoffline", "ononline", "onpagehide", "onpageshow", "onpause", "onplay", "onplaying", "onpointercancel", "onpointerdown", "onpointerenter", "onpointerleave", "onpointermove", "onpointerout", "onpointerover", "onpointerrawupdate", "onpointerup", "onpopstate", "onprogress", "onratechange", "onrejectionhandled", "onreset", "onresize", "onscroll", "onsearch", "onseeked", "onseeking", "onselect", "onselectionchange", "onselectstart", "onstalled", "onstorage", "onsubmit", "onsuspend", "ontimeupdate", "ontoggle", "ontransitioncancel", "ontransitionend", "ontransitionrun", "ontransitionstart", "onunhandledrejection", "onunload", "onvolumechange", "onwaiting", "onwebkitanimationend", "onwebkitanimationiteration", "onwebkitanimationstart", "onwebkittransitionend", "onwheel", "Math"];
            let windowRes = has(window, So);
            var go = ["onrejectionhandled", "onunhandledrejection", "getOverrideStyle", "getCSSCanvasContext", "onrendersubtreeactivation", "addressSpace", "onactivateinvisible", "onoverscroll", "onscrollend", "rootScroller", "ol_originalAddEventListener", "releaseCapture", "mozSetImageElement", "mozCancelFullScreen", "enableStyleSheetsForSet", "caretPositionFromPoint", "onbeforescriptexecute", "onafterscriptexecute", "mozFullScreen", "mozFullScreenEnabled", "selectedStyleSheetSet", "lastStyleSheetSet", "preferredStyleSheetSet", "styleSheetSets", "mozFullScreenElement", "ondragexit", "onloadend", "onshow", "onmozfullscreenchange", "onmozfullscreenerror", "registerElement", "compatMode", "contentType", "Doctype", "mozSyntheticDocument", "mozSetImageElement", "Plugins", "featurePolicy", "visibilityState", "Onafterscriptexecute", "Onbeforescriptexecute", "Oncopy", "oncut", "Onfullscreenchange", "Onpaste", "Onreadystatechange", "Onselectionchange", "Onvisibilitychange", "xmlVersion", "adoptNode", "Append", "CaptureEvents", "carePositionsFromPoint", "caretRangeFromPoint", "createAttribute", "CreateAttributeNS", "createcdatasECTION", "CREATEcOMMENT", "CREATEdOCUMENTfRAGMENT", "CREATEelement", "createElementNS", "createEntityReference", "createEvent", "createNodeIterator", "createProcessingInstruction", "createRange", "createTextNode", "createTouch", "createTouchList", "createTreeWalker", "createElementFromPoint", "createElementsFromPoint", "elementFromPoint", "elementsFromPoint", "enableStyleSheetsForSet", "exitPictureInPicture", "exitPointerLock", "getAnimatinos", "getBoxQuads", "getElementsById", "getElementsByClassName", "getElementbyTagName", "getSelection", "hasStorageAccess", "importNode", "normalizeDocument", "Prepend", "querySelector", "querySelectorAll", "releaseCapture", "RELEASEevents", "Replacechildren", "requestStorageAccess", "mozSetImageElement", "createExpression", "createNSResolver", "Evaluate", "Clear", "Close", "getElementByName", "hasFocus", "Open", "queryCommandEnabled", "queryCommandIndeterm", "queryCommandState", "queryCommandSupported", "queryCommandValue", "Write", "writeIn", "execComandShowHelp", "getBoxObjectFor", "loadOverlay", "queryCommandText", "fileSize"];
            let documentRes = has(document, go);
            var No = ["appCodeName", "appName", "Bluetooth", "Clipboard", "cookieEnabled", "Keyboard", "Locks", "mediaCapabilities", "mediaDevices", "mediaSession", "Permissions", "Presentation", "Product", "productSub (important returns the build number of the current browser)", "vendorSub (important return vendor version number)", "Serial", "vendorName", "Xr", "buildID (important return the buildID on firefox in addition to productSub)", "Securitypolicy", "Standalone", "Vibrate", "Share", "setAppBadge", "getvrdISPLAYS", "getUserMedia", "taintEnabled", "requestMediaKeySystemAccess", "registerProtocolHandler", "javaEnabled", "getBattery", "clearAppBadge"];
            let navigatorRes = has(navigator, No);
            var yo = ["ancestorOrigins", "fragmentDirective"];
            let locationRes = has(location, yo);
            return {
                window: windowRes,
                document: documentRes,
                navigator: navigatorRes,
                location: locationRes,
            }

        }

        function voiceUri() {
            let sps = speechSynthesis.getVoices()
            let res = [];
            for (let i = 0; i < sps.length; i++) {
                res.push({
                    lang: sps[i].lang,
                    name: sps[i].name,
                    uri: sps[i].voiceURI,
                    default: sps[i].default,
                    local: sps[i].localService,
                })
            }
            return res;
        }

        let result = {
            windowparams: windowparams,
            screenparams: screenparams,
            navigatorparams: navigatorparams,
            featurepolicy: featurePolicy,
            plugins: plgs,
            mimetypes: mimes,
            connection: connection(),
            voiceUri: voiceUri(),
            intldatetimeformat: intlDateTimeFormat(),
            hasProperty: hasProperty(),
            // fontsres: fontsRes,
            // imgsres: imgRes,
            glres: glArgs,
            jpg: getDataUrl(),
            jpg2: getDataUrl2(),
            // canplay: canplay(),
            useragentdata: userAgentData,
            webglimg: webglImg,
            audioFp: audioFp,
            // matchmedias: matchmedias,
            consoleprops: Object.keys(Object.getOwnPropertyDescriptors(console)).sort(),
            webglprops: WebGLRenderingContext ? Object.getOwnPropertyNames(WebGLRenderingContext.prototype).filter(e => {
                return e != 'constructor'
            }) : [],
            // windowprops: windowprops,
            locationprops: locationprops,
            mathprops: Object.getOwnPropertyNames(Math),
            funcs: funcResult,
            funcs2: funcResult2,
            documentfunc: documentFuncResult,
            bodyfunc: bodyFuncResult,
            navigatorfunc: navigatorfuncResult,
        }
        let body = JSON.stringify(result);
        // body = stringToHex(encodeURIComponent(body))
        // console.log(2, body.length)

// /collect
//         fetch("https://stage.unififi.com/env/shape", {
        fetch("/collect", {
            // fetch("http://127.0.0.1:39999/env/shape", {
            "headers": {
                "accept": "*/*",
                "accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
                "cache-control": "no-cache",
                "pragma": "no-cache",
                "sec-fetch-dest": "empty",
                "sec-fetch-mode": "cors",
                "sec-fetch-site": "cross-site"
            },
            "body": body,
            "method": "POST",
            "mode": "cors",
            "credentials": "omit"
        }).then(e => {
            console.log(e.text())
        })
    }, 2000)


} catch (e) {

}