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 = document.createElement('canvas');
var ctx = canvas.getContext('2d')
ctx.textBaseline = 'top';
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]))
}


delete canvas
let navigatorParams = {
    appName: navigator.appName,
    appVersion: navigator.appVersion,
    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,
}

let screenParams = {
    height: screen.height,
    width: screen.width,
    availHeight: screen.availHeight,
    availWidth: screen.availWidth,
    pixelDepth: screen.pixelDepth,
    colorDepth: screen.colorDepth,
}


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,
    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() {
    var canvas = document.createElement('canvas');
    let ctx = canvas.getContext('2d');
    canvas.width = 5;
    canvas.height = 5;
    ctx.font = '20px Arial';
    ctx.shadowOffsetX = 2;
    ctx.shadowOffsetY = 2;
    ctx.shadowBlur = 2;
    ctx.textBaseline = 'top'
    ctx.fillStyle = 'rgba(22, 22, 22, 0.08636862211354912)'
    ctx.fillText('Hel$&?6%){mZ+#@👺', 105, 105)
    return {
        data: ctx.getImageData(0, 0, 5, 5).data + '',
        url: canvas.toDataURL()
    }

}


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= {};
let webglImg = {};

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))


})

webglImg = function (){
    let canvas = document.createElement("canvas");
    canvas.width = 150;
    canvas.height = 150;
    let ctx = canvas.getContext('webgl2');
    let shader = ctx.createShader(35633);
    ctx.shaderSource(shader,'\n        attribute vec4 aPosition;\n        attribute vec4 aColor;\n        uniform vec4 anOffset;\n        varying vec4 vColor;\n        void main(void) {\n          gl_Position = aPosition + anOffset;\n          vColor = aColor;\n        }\n      ');
    ctx.compileShader(shader);
    let shaderParam1 = ctx.getShaderParameter(shader, 35713);
    let shader2 = ctx.createShader(35632);
    ctx.shaderSource(shader2,'\n        precision mediump float;\n        varying vec4 vColor;\n        void main(void) {\n          gl_FragColor = vColor;\n        }\n      ');
    ctx.compileShader(shader2);
    let shaderParam2 =  ctx.getShaderParameter(shader2, 35713);
    let program = ctx.createProgram();
    ctx.attachShader(program, shader);
    ctx.attachShader(program, shader2);
    ctx.linkProgram(program);
    let programParam1 = ctx.getProgramParameter(program, 35714);
    let buffer1 = ctx.createBuffer();
    ctx.bindBuffer(34962, buffer1);
    var bl_27 = [0, 0.5, 0.699999988079071, -0.6000000238418579, -0.4000000059604645, -0.800000011920929];

    var bl_0 = [0.30000001192092896, 0.699999988079071, 0, 1, 0.10000000149011612, 0, 0.8999999761581421, 1, 0.8999999761581421, 0, 0, 1];

    let Float32Array1 = new Float32Array(bl_27);
    ctx.bufferData(34962, Float32Array1, 35044);
    let buffer2 = ctx.createBuffer();
    ctx.bindBuffer(34962, buffer2);
    let Float32Array2 = new Float32Array(bl_0);
    ctx.bufferData(34962, Float32Array2, 35044);
    let attribLocationAPosition = ctx.getAttribLocation(program, 'aPosition');
    let attribLocationAColor = ctx.getAttribLocation(program, 'aColor');
    ctx.bindBuffer(34962, buffer1);
    ctx.vertexAttribPointer(0, 2, 5126, false, 0, 0);
    ctx.enableVertexAttribArray(0);
    ctx.bindBuffer(34962, buffer2);
    ctx.vertexAttribPointer(1, 4, 5126, false, 0, 0);
    ctx.enableVertexAttribArray(1);
    ctx.useProgram(program);
    let webglUniformLocation = ctx.getUniformLocation(program, 'anOffset');
    ctx.uniform4fv(webglUniformLocation, [0.2, 0, 0, 0])
    ctx.drawArrays(5,0,3)
    let unint8Array = new Uint8Array(90000);
    ctx.readPixels(50, 0, 100, 128, 6408, 5121, unint8Array);

    var compressString = function (S) {
        let nums = S.split(",")
        let str = ''
        let i = 0
        while (i < nums.length) {
            let j = i + 1
            while (nums[i] == nums[j]) {
                j++
            }
            if ((j - i) !== 1) {
                str = str + '|' + nums[i] + '-' + (j - i)
            }else{
                str = str + '|' + nums[i]
            }
            i = j
        }
        res = str.length >= S.length ? S : str
        return res
    };

    return {
        strs :compressString(unint8Array+''),
        url: canvas.toDataURL()
    }
}()
setTimeout(function (){
    let result = {
        windowParams: windowParams,
        screenParams: screenParams,
        navigatorParams: navigatorParams,
        featurePolicy: featurePolicy,
        plugins: plgs,
        mimeTypes: mimes,
        fontsRes: fontsRes,
        imgsRes: imgRes,
        glRes: glArgs,
        jpg: getDataUrl(),
        jpg2: getDataUrl2(),
        canPlay: canplay(),
        userAgentData: userAgentData,
        webglImg: webglImg,
    }
    let body = JSON.stringify(result);
    console.log(1, body.length)
    // body = stringToHex(encodeURIComponent(body))
    // console.log(2, body.length)

// /collect
//     fetch("http://lcc.unififi.com/env/shape", {
    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)


