Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/linkify/dist/ |
Upload File : |
{"version":3,"file":"linkify.bundle.js","sources":["../node_modules/linkifyjs/dist/linkify.es.js","../src/linkify.js"],"sourcesContent":["// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4vianca6w0s2x0a2z0ure5ba0by2idu3namex3narepublic11d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2ntley5rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0cast4mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dabur3d1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0ardian6cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6logistics9properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3ncaster6d0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2psy3ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2tura4vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9dnavy5lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0america6xi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0a1b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp2w2ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4finity6ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * @template A\n * @template B\n * @param {A} target\n * @param {B} properties\n * @return {A & B}\n */\nconst assign = (target, properties) => {\n for (const key in properties) {\n target[key] = properties[key];\n }\n return target;\n};\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token) {\n if (token === void 0) {\n token = null;\n }\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly) {\n if (exactOnly === void 0) {\n exactOnly = false;\n }\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL$1 = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWORD: WORD,\n\tUWORD: UWORD,\n\tLOCALHOST: LOCALHOST,\n\tTLD: TLD,\n\tUTLD: UTLD,\n\tSCHEME: SCHEME,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tNUM: NUM,\n\tWS: WS,\n\tNL: NL$1,\n\tOPENBRACE: OPENBRACE,\n\tCLOSEBRACE: CLOSEBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tCLOSEPAREN: CLOSEPAREN,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tHYPHEN: HYPHEN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tTILDE: TILDE,\n\tUNDERSCORE: UNDERSCORE,\n\tEMOJI: EMOJI$1,\n\tSYM: SYM\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tLETTER: LETTER,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tDIGIT: DIGIT,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\nconst NL = '\\n'; // New line character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes) {\n if (customSchemes === void 0) {\n customSchemes = [];\n }\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, ASCII_LETTER, Word);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, LETTER, UWord);\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, NL, NL$1, {\n [whitespace]: true\n });\n tt(Ws, NL); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender) {\n if (defaultRender === void 0) {\n defaultRender = null;\n }\n let o = assign({}, defaults);\n if (opts) {\n o = assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tdefaults: defaults,\n\tOptions: Options,\n\tassign: assign\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol) {\n if (protocol === void 0) {\n protocol = defaults.defaultProtocol;\n }\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme) {\n if (scheme === void 0) {\n scheme = defaults.defaultProtocol;\n }\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tMultiToken: MultiToken,\n\tBase: MultiToken,\n\tcreateTokenClass: createTokenClass,\n\tEmail: Email,\n\tText: Text,\n\tNl: Nl,\n\tUrl: Url\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1(_ref) {\n let {\n groups\n } = _ref;\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Final possible email states\n const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */\n ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // Closing bracket component. This character WILL be included in the URL\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL$1, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} protocol\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash) {\n if (optionalSlashSlash === void 0) {\n optionalSlashSlash = false;\n }\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type, opts) {\n if (type === void 0) {\n type = null;\n }\n if (opts === void 0) {\n opts = null;\n }\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type) {\n if (type === void 0) {\n type = null;\n }\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, tokenize };\n","import * as Linkify from 'linkifyjs';\n\nLinkify.options.defaults.defaultProtocol = 'https';\n\nexport {\n\tLinkify,\n};\n"],"names":["encodedTlds","encodedUtlds","assign","target","properties","key","numeric","ascii","alpha","asciinumeric","alphanumeric","domain","emoji","scheme","slashscheme","whitespace","registerGroup","name","groups","addToGroups","t","flags","k","group","indexOf","push","flagsForToken","result","c","State","token","j","jr","jd","prototype","accepts","go","input","state","nextState","i","length","regex","test","has","exactOnly","ta","inputs","next","tt","tr","regexp","ts","len","templateState","apply","allFlags","WORD","UWORD","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL$1","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","Object","freeze","__proto__","NL","EMOJI","ASCII_LETTER","LETTER","EMOJI_VARIATION$1","DIGIT","SPACE","EMOJI_VARIATION","EMOJI_JOINER","tlds","utlds","init$2","customSchemes","Start","decodeTlds","Num","Word","UWord","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","fastts","tld","utld","sort","a","b","sch","optionalSlashSlash","start","tokens","run$1","str","iterable","stringToArray","replace","toLowerCase","charCount","cursor","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","v","slice","s","e","index","first","charCodeAt","second","char","defaultt","encoded","words","stack","digits","popDigitCount","join","popCount","parseInt","substring","pop","defaults","defaultProtocol","events","format","noop","formatHref","nl2br","tagName","rel","validate","truncate","Infinity","className","attributes","ignoreTags","render","Options","opts","defaultRender","o","ignoredTags","uppercaseIgnoredTags","toUpperCase","ir","check","get","toString","operator","isCallable","option","getObj","obj","renderFn","val","options","MultiToken","value","isLink","toHref","toFormattedString","formatted","toFormattedHref","startIndex","endIndex","toObject","protocol","type","href","end","toFormattedObject","formattedHref","content","attrs","eventListeners","class","createTokenClass","props","Token","constructor","p","Email","Text","Nl","Url","hasProtocol","multi","Base","makeState","arg","init$1","_ref","qsAccepting","concat","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","EmailColon","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","run","multis","textTokens","secondState","multiLength","initMultiToken","Multi","subtokens","startIdx","endIdx","warn","console","warnAdvice","INIT","scanner","parser","tokenQueue","pluginQueue","initialized","reset","registerTokenPlugin","plugin","Error","registerPlugin","registerCustomProtocol","init","tokenize","find","filtered","Linkify"],"mappings":"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"}