model-pulse / assets /Report-DfZBge-R.js
tardellirs's picture
Update site
cad84dd verified
Raw History Blame Contribute Delete
73.5 kB
var Ae=Object.defineProperty;var ze=(n,e,t)=>e in n?Ae(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var k=(n,e,t)=>ze(n,typeof e!="symbol"?e+"":e,t);import{T as Be,h as _e,u as Ie,n as Le}from"./index-iljbJvME.js";function K(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var z=K();function fe(n){z=n}var $={exec:()=>null};function B(n){let e=[];return t=>{let a=Math.max(0,Math.min(3,t-1)),s=e[a];return s||(s=n(a),e[a]=s),s}}function g(n,e=""){let t=typeof n=="string"?n:n.source,a={replace:(s,o)=>{let l=typeof o=="string"?o:o.source;return l=l.replace(x.caret,"$1"),t=t.replace(s,l),a},getRegex:()=>new RegExp(t,e)};return a}var Pe=((n="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+n)}catch{return!1}})(),x={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:B(n=>new RegExp(`^ {0,${n}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:B(n=>new RegExp(`^ {0,${n}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:B(n=>new RegExp(`^ {0,${n}}(?:\`\`\`|~~~)`)),headingBeginRegex:B(n=>new RegExp(`^ {0,${n}}#`)),htmlBeginRegex:B(n=>new RegExp(`^ {0,${n}}(?:</?(?:${Q})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:B(n=>new RegExp(`^ {0,${n}}>`))},Ce=/^(?:[ \t]*(?:\n|$))+/,De=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Ee=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,E=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Qe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,X=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ke=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,we=g(ke).replace(/bull/g,X).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),qe=g(ke).replace(/bull/g,X).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),V=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,He=/^[^\n]+/,Y=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Oe=g(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Y).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Ze=g(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,X).getRegex(),Q="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",ee=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Ge=g("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",ee).replace("tag",Q).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),be=n=>g(V).replace("hr",E).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",n).replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Q).getRegex(),Fe=be(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),Ne=be(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Ue=g(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ne).getRegex(),te={blockquote:Ue,code:De,def:Oe,fences:Ee,heading:Qe,hr:E,html:Ge,lheading:we,list:Ze,newline:Ce,paragraph:Fe,table:$,text:He},re=g("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",E).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Q).getRegex(),je={...te,lheading:qe,table:re,paragraph:g(V).replace("hr",E).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",re).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Q).getRegex()},We={...te,html:g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ee).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:$,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:g(V).replace("hr",E).replace("heading",` *#{1,6} *[^
]`).replace("lheading",we).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Je=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Ke=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,xe=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,Xe=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,T=/[\p{P}\p{S}]/u,_=/[\s\p{P}\p{S}]/u,q=/[^\s\p{P}\p{S}]/u,Ve=g(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,_).getRegex(),Ye=/[\p{Pi}\p{Ps}"']/u,ye=/(?!~)[\p{P}\p{S}]/u,et=/(?!~)[\s\p{P}\p{S}]/u,tt=/(?:[^\s\p{P}\p{S}]|~)/u,nt=g(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Pe?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Se=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,st=g(Se,"u").replace(/punct/g,T).getRegex(),at=g(Se,"u").replace(/punct/g,ye).getRegex(),rt=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,ot=g(rt,"u").replace(/openQuote/g,Ye).replace(/punct/g,T).getRegex(),Me="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",lt=g(Me,"gu").replace(/notPunctSpace/g,q).replace(/punctSpace/g,_).replace(/punct/g,T).getRegex(),it=g(Me,"gu").replace(/notPunctSpace/g,tt).replace(/punctSpace/g,et).replace(/punct/g,ye).getRegex(),ht="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",ct=g(ht,"gu").replace(/notPunctSpace/g,q).replace(/punctSpace/g,_).replace(/punct/g,T).getRegex(),dt=g("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,q).replace(/punctSpace/g,_).replace(/punct/g,T).getRegex(),pt="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",ut=g(pt,"gu").replace(/notPunctSpace/g,q).replace(/punctSpace/g,_).replace(/punct/g,T).getRegex(),gt=g(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,T).getRegex(),mt="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",ft=g(mt,"gu").replace(/notPunctSpace/g,q).replace(/punctSpace/g,_).replace(/punct/g,T).getRegex(),kt=g(/\\(punct)/,"gu").replace(/punct/g,T).getRegex(),wt=g(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),bt=g(ee).replace("(?:-->|$)","-->").getRegex(),xt=g("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",bt).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Te=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,Z=g(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",Te).getRegex(),yt=g(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Z).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),St=g(/^!?\[(label)\]\[(ref)\]/).replace("label",Z).replace("ref",Y).getRegex(),Mt=g(/^!?\[(ref)\](?:\[\])?/).replace("ref",Y).getRegex(),oe=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,Tt=g(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",Te).getRegex(),vt=g("reflink|nolink(?!\\()","g").replace("reflink",g(/^!?\[(label)\]\[(ref)\]/).replace("label",Tt).replace("ref",oe).getRegex()).replace("nolink",g(/^!?\[(ref)\](?:\[\])?/).replace("ref",oe).getRegex()).getRegex(),le=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Rt=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,$t=g(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,Rt).getRegex(),ne={_backpedal:$,anyPunctuation:kt,autolink:wt,blockSkip:nt,br:xe,code:Ke,del:$,delLDelim:$,delRDelim:$,emStrongLDelim:st,emStrongRDelimAst:lt,emStrongRDelimUnd:dt,escape:Je,link:yt,nolink:Mt,punctuation:Ve,reflink:St,reflinkSearch:vt,tag:xt,text:Xe,url:$},At={...ne,emStrongLDelim:ot,emStrongRDelimAst:ct,emStrongRDelimUnd:ut,link:g(/^!?\[(label)\]\((.*?)\)/).replace("label",Z).getRegex(),reflink:g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Z).getRegex()},j={...ne,emStrongRDelimAst:it,emStrongLDelim:at,delLDelim:gt,delRDelim:ft,url:g(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",$t).replace("protocol",le).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:g(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",le).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},zt={...j,br:g(xe).replace("{2,}","*").getRegex(),text:g(j.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},H={normal:te,gfm:je,pedantic:We},C={normal:ne,gfm:j,breaks:zt,pedantic:At},Bt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},ie=n=>Bt[n];function y(n,e){if(e){if(x.escapeTest.test(n))return n.replace(x.escapeReplace,ie)}else if(x.escapeTestNoEncode.test(n))return n.replace(x.escapeReplaceNoEncode,ie);return n}function _t(n){return n.replace(x.numericCharacterReference,(e,t,a)=>{let s=t===void 0?Number.parseInt(a,16):Number.parseInt(t,10);return s===0||s>1114111||s>=55296&&s<=57343?"�":String.fromCodePoint(s)})}function he(n){try{n=encodeURI(n).replace(x.percentDecode,"%")}catch{return null}return n}function ce(n,e){var o;let t=n.replace(x.findPipe,(l,i,r)=>{let d=!1,h=i;for(;--h>=0&&r[h]==="\\";)d=!d;return d?"|":" |"}),a=t.split(x.splitPipe),s=0;if(a[0].trim()||a.shift(),a.length>0&&!((o=a.at(-1))!=null&&o.trim())&&a.pop(),e)if(a.length>e)a.splice(e);else for(;a.length<e;)a.push("");for(;s<a.length;s++)a[s]=a[s].trim().replace(x.slashPipe,"|");return a}function R(n,e,t){let a=n.length;if(a===0)return"";let s=0;for(;s<a&&n.charAt(a-s-1)===e;)s++;return n.slice(0,a-s)}function de(n){let e=n.split(`
`),t=e.length-1;for(;t>=0&&x.blankLine.test(e[t]);)t--;return e.length-t<=2?n:e.slice(0,t+1).join(`
`)}function G(n){return n.trim().toLowerCase().toUpperCase().toLowerCase()}function It(n,e){if(n.indexOf(e[1])===-1)return-1;let t=0;for(let a=0;a<n.length;a++)if(n[a]==="\\")a++;else if(n[a]===e[0])t++;else if(n[a]===e[1]&&(t--,t<0))return a;return t>0?-2:-1}function pe(n,e=0){let t=e,a="";for(let s of n)if(s===" "){let o=4-t%4;a+=" ".repeat(o),t+=o}else a+=s,t++;return a}function ue(n,e,t,a,s){let o=e.href,l=e.title||null,i=n[1].replace(s.other.outputLinkReplace,"$1"),r=n[0].charAt(0)==="!";a.state.inLink=!0;let d=a.state.linkEmitted,h=a.state.inRawBlock;a.state.linkEmitted=!1;let u=a.inlineTokens(i),c=a.state.linkEmitted;if(a.state.linkEmitted=d,a.state.inLink=!1,!r){if(c){a.state.inRawBlock=h;return}a.state.linkEmitted=!0}return{type:r?"image":"link",raw:t,href:o,title:l,text:i,tokens:u}}function Lt(n,e,t){let a=n.match(t.other.indentCodeCompensation);if(a===null)return e;let s=a[1];return e.split(`
`).map(o=>{let l=o.match(t.other.beginningSpace);if(l===null)return o;let[i]=l;return o.slice(Math.min(i.length,s.length))}).join(`
`)}function ge(n,e,t,a){if(!e.includes("<"))return!1;for(let s=0;s<e.length;s++){if(e[s]==="\\"){s++;continue}if(e[s]==="`"){let i=a.inline.code.exec(e.slice(s));if(i){s+=i[0].length-1;continue}}if(e[s]!=="<")continue;let o=n.slice(t+s),l=a.inline.tag.exec(o)||a.inline.autolink.exec(o);if(l){if(l[0].length>e.length-s)return!0;s+=l[0].length-1}}return!1}var F=class{constructor(n){k(this,"options");k(this,"rules");k(this,"lexer");this.options=n||z}space(n){let e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){let e=this.rules.block.code.exec(n);if(e){let t=this.options.pedantic?e[0]:de(e[0]),a=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:a}}}fences(n){let e=this.rules.block.fences.exec(n);if(e){let t=e[0],a=Lt(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:a}}}heading(n){let e=this.rules.block.heading.exec(n);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let a=R(t,"#");(this.options.pedantic||!a||this.rules.other.endingSpaceTabChar.test(a))&&(t=a.trim())}return{type:"heading",raw:R(e[0],`
`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(n){let e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:R(e[0],`
`)}}blockquote(n){let e=this.rules.block.blockquote.exec(n);if(e){let t=R(e[0],`
`).split(`
`),a="",s="",o=[];for(;t.length>0;){let l=!1,i=[],r;for(r=0;r<t.length;r++)if(this.rules.other.blockquoteStart.test(t[r]))i.push(t[r]),l=!0;else if(!l)i.push(t[r]);else break;t=t.slice(r);let d=i.join(`
`),h=d.replace(this.rules.other.blockquoteSetextReplace,`
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");a=a?`${a}
${d}`:d,s=s?`${s}
${h}`:h;let u=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(h,o,!0),this.lexer.state.top=u,t.length===0)break;let c=o.at(-1);if((c==null?void 0:c.type)==="code")break;if((c==null?void 0:c.type)==="blockquote"){let m=c,p=t.join(`
`),b=m.raw+`
`+p.replace(this.rules.other.blockquoteSetextReplace2,""),f=this.blockquote(b);o[o.length-1]=f;let v=b.substring(f.raw.length).replace(/^\n/,""),I=v?v.split(`
`).length:0,L=I?t.slice(0,-I):t;L.length>0&&(a=`${a}
${L.join(`
`)}`),s=s.substring(0,s.length-m.text.length)+f.text;break}else if((c==null?void 0:c.type)==="list"){let m=c,p=m.raw+`
`+t.join(`
`),b=this.list(p);o[o.length-1]=b,a=a.substring(0,a.length-c.raw.length)+b.raw,s=s.substring(0,s.length-m.raw.length)+b.raw,t=p.substring(o.at(-1).raw.length).split(`
`);continue}}return{type:"blockquote",raw:a,tokens:o,text:s}}}list(n){let e=this.rules.block.list.exec(n);if(e){let t=e[1].trim(),a=t.length>1,s={type:"list",raw:"",ordered:a,start:a?+t.slice(0,-1):"",loose:!1,items:[]};t=a?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=a?t:"[*+-]");let o=this.rules.other.listItemRegex(t),l=!1;for(;n;){let r=!1,d="",h="";if(!(e=o.exec(n))||this.rules.block.hr.test(n))break;d=e[0],n=n.substring(d.length);let u=e[2].split(`
`,1)[0],c=e[1].length,m=this.options.pedantic?pe(u,c):u.replace(this.rules.other.leadingSpaceTab,v=>pe(v,c)),p=n.split(`
`,1)[0],b=!m.trim(),f=0;if(this.options.pedantic?(f=2,h=m.trimStart()):b?f=c+1:(f=m.search(this.rules.other.nonSpaceChar),f=f>4?1:f,h=m.slice(f),f+=c),b&&this.rules.other.blankLine.test(p)&&(d+=p+`
`,n=n.substring(p.length+1),r=!0),!r){let v=this.rules.other.nextBulletRegex(f),I=this.rules.other.hrRegex(f),L=this.rules.other.fencesBeginRegex(f),ae=this.rules.other.headingBeginRegex(f),ve=this.rules.other.htmlBeginRegex(f),Re=this.rules.other.blockquoteBeginRegex(f);for(;n;){let U=n.split(`
`,1)[0],P;if(p=U,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),P=p):P=p.replace(this.rules.other.leadingSpaceTab,$e=>$e.replace(this.rules.other.tabCharGlobal," ")),L.test(p)||ae.test(p)||ve.test(p)||Re.test(p)||v.test(p)||I.test(p))break;if(P.search(this.rules.other.nonSpaceChar)>=f||!p.trim())h+=`
`+P.slice(f);else{if(b||m.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||L.test(m)||ae.test(m)||I.test(m))break;h+=`
`+p}b=!p.trim(),d+=U+`
`,n=n.substring(U.length+1),m=P.slice(f)}}s.loose||(l?s.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(l=!0)),s.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(h),loose:!1,text:h,tokens:[]}),s.raw+=d}let i=s.items.at(-1);if(i)i.raw=i.raw.trimEnd(),i.text=i.text.trimEnd();else return;s.raw=s.raw.trimEnd();for(let r of s.items)if(this.lexer.state.top=!1,r.tokens=this.lexer.blockTokens(r.text,[]),!s.loose){let d=r.tokens.filter(u=>u.type==="space"),h=d.length>0&&d.some(u=>this.rules.other.anyLine.test(u.raw));s.loose=h}for(let r of s.items){let d=r.tokens[0];if(r.task&&((d==null?void 0:d.type)==="text"||(d==null?void 0:d.type)==="paragraph")){r.text=r.text.replace(this.rules.other.listReplaceTask,""),d.raw=d.raw.replace(this.rules.other.listReplaceTask,""),d.text=d.text.replace(this.rules.other.listReplaceTask,"");for(let u=this.lexer.inlineQueue.length-1;u>=0;u--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[u].src)){this.lexer.inlineQueue[u].src=this.lexer.inlineQueue[u].src.replace(this.rules.other.listReplaceTask,"");break}let h=this.rules.other.listTaskCheckbox.exec(r.raw);if(h){let u={type:"checkbox",raw:h[0]+" ",checked:h[0]!=="[ ]"};r.checked=u.checked,s.loose?r.tokens[0]&&["paragraph","text"].includes(r.tokens[0].type)&&"tokens"in r.tokens[0]&&r.tokens[0].tokens?(r.tokens[0].raw=u.raw+r.tokens[0].raw,r.tokens[0].text=u.raw+r.tokens[0].text,r.tokens[0].tokens.unshift(u)):r.tokens.unshift({type:"paragraph",raw:u.raw,text:u.raw,tokens:[u]}):r.tokens.unshift(u)}}else r.task&&(r.task=!1)}if(s.loose)for(let r of s.items){r.loose=!0;for(let d of r.tokens)d.type==="text"&&(d.type="paragraph")}return s}}html(n){let e=this.rules.block.html.exec(n);if(e){let t=de(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(n){let e=this.rules.block.def.exec(n);if(e){let t=G(e[1]).replace(this.rules.other.multipleSpaceGlobal," "),a=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",s=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:R(e[0],`
`),href:a,title:s}}}table(n){var l;let e=this.rules.block.table.exec(n);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=ce(e[1]),a=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),s=(l=e[3])!=null&&l.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(`
`):[],o={type:"table",raw:R(e[0],`
`),header:[],align:[],rows:[]};if(t.length===a.length){for(let i of a)this.rules.other.tableAlignRight.test(i)?o.align.push("right"):this.rules.other.tableAlignCenter.test(i)?o.align.push("center"):this.rules.other.tableAlignLeft.test(i)?o.align.push("left"):o.align.push(null);for(let i=0;i<t.length;i++)o.header.push({text:t[i],tokens:this.lexer.inline(t[i]),header:!0,align:o.align[i]});for(let i of s)o.rows.push(ce(i,o.header.length).map((r,d)=>({text:r,tokens:this.lexer.inline(r),header:!1,align:o.align[d]})));return o}}lheading(n){let e=this.rules.block.lheading.exec(n);if(e){let t=e[1].trim();return{type:"heading",raw:R(e[0],`
`),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(n){let e=this.rules.block.paragraph.exec(n);if(e){let t=e[1].charAt(e[1].length-1)===`
`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(n){let e=this.rules.block.text.exec(n);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(n){let e=this.rules.inline.escape.exec(n);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(n){let e=this.rules.inline.tag.exec(n);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(n){let e=this.rules.inline.link.exec(n);if(e){let t=e[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ge(n,e[1],t,this.rules))return;let a=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(a)){if(!this.rules.other.endAngleBracket.test(a))return;let l=R(a.slice(0,-1),"\\");if((a.length-l.length)%2===0)return}else{let l=It(e[2],"()");if(l===-2)return;if(l>-1){let i=(e[0].indexOf("!")===0?5:4)+e[1].length+l;e[2]=e[2].substring(0,l),e[0]=e[0].substring(0,i).trim(),e[3]=""}}let s=e[2],o="";if(this.options.pedantic){let l=this.rules.other.pedanticHrefTitle.exec(s);l&&(s=l[1],o=l[3])}else o=e[3]?e[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(a)?s=s.slice(1):s=s.slice(1,-1)),ue(e,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:o&&o.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(n,e){let t;if((t=this.rules.inline.reflink.exec(n))||(t=this.rules.inline.nolink.exec(n))){let a=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&ge(n,t[1],a,this.rules))return;let s=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),o=e[G(s)];if(!o){let l=t[0].charAt(0);return{type:"text",raw:l,text:l}}return ue(t,o,t[0],this.lexer,this.rules)}}emStrong(n,e,t=""){let a=this.rules.inline.emStrongLDelim.exec(n);if(!(!a||!a[1]&&!a[2]&&!a[3]&&!a[4]||a[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(a[1]||a[3])||!t||this.rules.inline.punctuation.exec(t))){let s=[...a[0]].length-1,o,l,i=s,r=0,d=a[0][0],h=t===d,u=d==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,e=e.slice(-1*n.length+s);(a=u.exec(e))!==null;){if(o=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!o)continue;if(l=[...o].length,a[3]||a[4]){i+=l;continue}else if(a[5]||a[6]){if(s%3&&!((s+l)%3)){r+=l;continue}if(h)break}if(i-=l,i>0)continue;l=Math.min(l,l+i+r);let c=[...a[0]][0].length,m=n.slice(0,s+a.index+c+l);if(Math.min(s,l)%2){let b=m.slice(1,-1);return{type:"em",raw:m,text:b,tokens:this.lexer.inlineTokens(b)}}let p=m.slice(2,-2);return{type:"strong",raw:m,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(n){let e=this.rules.inline.code.exec(n);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),a=this.rules.other.nonSpaceChar.test(t),s=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return a&&s&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(n){let e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n,e,t=""){let a=this.rules.inline.delLDelim.exec(n);if(a&&(!a[1]||!t||this.rules.inline.punctuation.exec(t))){let s=[...a[0]].length-1,o,l,i=s,r=this.rules.inline.delRDelim;for(r.lastIndex=0,e=e.slice(-1*n.length+s);(a=r.exec(e))!==null;){if(o=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!o||(l=[...o].length,l!==s))continue;if(a[3]||a[4]){i+=l;continue}if(i-=l,i>0)continue;l=Math.min(l,l+i);let d=[...a[0]][0].length,h=n.slice(0,s+a.index+d+l),u=h.slice(s,-s);return{type:"del",raw:h,text:u,tokens:this.lexer.inlineTokens(u)}}}}autolink(n){let e=this.rules.inline.autolink.exec(n);if(e){let t,a;return e[2]==="@"?(t=e[1],a="mailto:"+t):(t=e[1],a=t),{type:"link",raw:e[0],text:t,href:a,autolink:!0,tokens:[{type:"text",raw:t,text:t}]}}}url(n){var t;let e;if(e=this.rules.inline.url.exec(n)){let a,s;if(e[2]==="@")a=e[0],s="mailto:"+a;else{let o;do o=e[0],e[0]=((t=this.rules.inline._backpedal.exec(e[0]))==null?void 0:t[0])??"";while(o!==e[0]);a=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:a,href:s,autolink:!0,tokens:[{type:"text",raw:a,text:a}]}}}inlineText(n){let e=this.rules.inline.text.exec(n);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:t?e[0]:_t(e[0]),escaped:t}}}},S=class W{constructor(e){k(this,"tokens");k(this,"options");k(this,"state");k(this,"inlineQueue");k(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=e||z,this.options.tokenizer=this.options.tokenizer||new F,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:x,block:H.normal,inline:C.normal};this.options.pedantic?(t.block=H.pedantic,t.inline=C.pedantic):this.options.gfm&&(t.block=H.gfm,this.options.breaks?t.inline=C.breaks:t.inline=C.gfm),this.tokenizer.rules=t}static get rules(){return{block:H,inline:C}}static lex(e,t){return new W(t).lex(e)}static lexInline(e,t){return new W(t).inlineTokens(e)}lex(e){e=e.replace(x.carriageReturn,`
`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let a=this.inlineQueue[t];this.inlineTokens(a.src,a.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],a=!1){var o,l,i;this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(x.tabCharGlobal," ").replace(x.spaceLine,""));let s=1/0;for(;e;){if(e.length<s)s=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let r;if((l=(o=this.options.extensions)==null?void 0:o.block)!=null&&l.some(h=>(r=h.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let h=t.at(-1);r.raw.length===1&&h!==void 0?h.raw+=`
`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let h=t.at(-1);(h==null?void 0:h.type)==="paragraph"||(h==null?void 0:h.type)==="text"?(h.raw+=(h.raw.endsWith(`
`)?"":`
`)+r.raw,h.text+=`
`+r.text,this.inlineQueue.at(-1).src=h.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let h=t.at(-1);(h==null?void 0:h.type)==="paragraph"||(h==null?void 0:h.type)==="text"?(h.raw+=(h.raw.endsWith(`
`)?"":`
`)+r.raw,h.text+=`
`+r.raw,this.inlineQueue.at(-1).src=h.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let d=e;if((i=this.options.extensions)!=null&&i.startBlock){let h=1/0,u=e.slice(1),c;this.options.extensions.startBlock.forEach(m=>{c=m.call({lexer:this},u),typeof c=="number"&&c>=0&&(h=Math.min(h,c))}),h<1/0&&h>=0&&(d=e.substring(0,h+1))}if(this.state.top&&(r=this.tokenizer.paragraph(d))){let h=t.at(-1);a&&(h==null?void 0:h.type)==="paragraph"?(h.raw+=(h.raw.endsWith(`
`)?"":`
`)+r.raw,h.text+=`
`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=h.text):t.push(r),a=d.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let h=t.at(-1);(h==null?void 0:h.type)==="text"?(h.raw+=(h.raw.endsWith(`
`)?"":`
`)+r.raw,h.text+=`
`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=h.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes("["))return!1;let t=this.tokenizer.rules.inline.link;for(let a of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(a[0])&&e.charAt(a.index-1)!=="!")return!0;for(let a of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let s=a[0],o=s.lastIndexOf("[");if(!(s.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,G(s.slice(o+1,-1))))&&!(o>1&&this.linkInText(s.slice(1,o-1))))return!0}return!1}inlineTokens(e,t=[]){var i,r,d,h,u;this.tokenizer.lexer=this;let a=e;if(this.tokens.links&&e.includes("[")){let c=this.tokenizer.rules.inline.reflinkSearch,m=p=>{let b=p.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,G(p.slice(b+1,-1))))return p;if(b>1&&p.charAt(0)!=="!"){let f=p.slice(1,b-1);if(this.linkInText(f))return"["+f.replace(c,m)+"]["+"a".repeat(p.length-b-2)+"]"}return"["+"a".repeat(p.length-2)+"]"};a=a.replace(c,m)}a=a.replace(this.tokenizer.rules.inline.anyPunctuation,c=>"+".repeat(c.length)),a=a.replace(this.tokenizer.rules.inline.blockSkip,(c,m,p)=>{let b=p?p.length:0;return c.slice(0,b)+"["+"a".repeat(c.length-b-2)+"]"}),a=((r=(i=this.options.hooks)==null?void 0:i.emStrongMask)==null?void 0:r.call({lexer:this},a))??a;let s=!1,o="",l=1/0;for(;e;){if(e.length<l)l=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}s||(o=""),s=!1;let c;if((h=(d=this.options.extensions)==null?void 0:d.inline)!=null&&h.some(p=>(c=p.call({lexer:this},e,t))?(e=e.substring(c.raw.length),t.push(c),!0):!1))continue;if(c=this.tokenizer.escape(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.tag(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.link(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(c.raw.length);let p=t.at(-1);c.type==="text"&&(p==null?void 0:p.type)==="text"?(p.raw+=c.raw,p.text+=c.text):t.push(c);continue}if(c=this.tokenizer.emStrong(e,a,o)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.codespan(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.br(e)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.del(e,a,o)){e=e.substring(c.raw.length),t.push(c);continue}if(c=this.tokenizer.autolink(e)){e=e.substring(c.raw.length),t.push(c);continue}if(!this.state.inLink&&(c=this.tokenizer.url(e))){e=e.substring(c.raw.length),t.push(c);continue}let m=e;if((u=this.options.extensions)!=null&&u.startInline){let p=1/0,b=e.slice(1),f;this.options.extensions.startInline.forEach(v=>{f=v.call({lexer:this},b),typeof f=="number"&&f>=0&&(p=Math.min(p,f))}),p<1/0&&p>=0&&(m=e.substring(0,p+1))}if(c=this.tokenizer.inlineText(m)){e=e.substring(c.raw.length),c.raw.slice(-1)!=="_"&&(o=c.raw.slice(-1)),s=!0;let p=t.at(-1);(p==null?void 0:p.type)==="text"?(p.raw+=c.raw,p.text+=c.text):t.push(c);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},N=class{constructor(n){k(this,"options");k(this,"parser");this.options=n||z}space(n){return""}code({text:n,lang:e,escaped:t}){var o;let a=(o=(e||"").match(x.notSpaceStart))==null?void 0:o[0],s=n?n.replace(x.endingNewline,"")+`
`:"";return a?'<pre><code class="language-'+y(a)+'">'+(t?s:y(s,!0))+`</code></pre>
`:"<pre><code>"+(t?s:y(s,!0))+`</code></pre>
`}blockquote({tokens:n}){return`<blockquote>
${this.parser.parse(n)}</blockquote>
`}html({text:n}){return n}def(n){return""}heading({tokens:n,depth:e}){return`<h${e}>${this.parser.parseInline(n)}</h${e}>
`}hr(n){return`<hr>
`}list(n){let e=n.ordered,t=n.start,a="";for(let l=0;l<n.items.length;l++){let i=n.items[l];a+=this.listitem(i)}let s=e?"ol":"ul",o=e&&t!==1?' start="'+t+'"':"";return"<"+s+o+`>
`+a+"</"+s+`>
`}listitem(n){return`<li>${this.parser.parse(n.tokens)}</li>
`}checkbox({checked:n}){return"<input "+(n?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:n}){return`<p>${this.parser.parseInline(n)}</p>
`}table(n){let e="",t="";for(let s=0;s<n.header.length;s++)t+=this.tablecell(n.header[s]);e+=this.tablerow({text:t});let a="";for(let s=0;s<n.rows.length;s++){let o=n.rows[s];t="";for(let l=0;l<o.length;l++)t+=this.tablecell(o[l]);a+=this.tablerow({text:t})}return a&&(a=`<tbody>${a}</tbody>`),`<table>
<thead>
`+e+`</thead>
`+a+`</table>
`}tablerow({text:n}){return`<tr>
${n}</tr>
`}tablecell(n){let e=this.parser.parseInline(n.tokens),t=n.header?"th":"td";return(n.align?`<${t} align="${n.align}">`:`<${t}>`)+e+`</${t}>
`}strong({tokens:n}){return`<strong>${this.parser.parseInline(n)}</strong>`}em({tokens:n}){return`<em>${this.parser.parseInline(n)}</em>`}codespan({text:n}){return`<code>${y(n,!0)}</code>`}br(n){return"<br>"}del({tokens:n}){return`<del>${this.parser.parseInline(n)}</del>`}link({href:n,title:e,text:t,tokens:a,autolink:s}){let o=s?y(t,!0):this.parser.parseInline(a),l=he(n);if(l===null)return o;n=y(l,s);let i='<a href="'+n+'"';return e&&(i+=' title="'+y(e)+'"'),i+=">"+o+"</a>",i}image({href:n,title:e,text:t,tokens:a}){a&&(t=this.parser.parseInline(a,this.parser.textRenderer));let s=he(n);if(s===null)return y(t);n=s;let o=`<img src="${y(n)}" alt="${y(t)}"`;return e&&(o+=` title="${y(e)}"`),o+=">",o}text(n){return"tokens"in n&&n.tokens?this.parser.parseInline(n.tokens):"escaped"in n&&n.escaped?n.text:y(n.text)}},se=class{strong({text:n}){return n}em({text:n}){return n}codespan({text:n}){return n}del({text:n}){return n}html({text:n}){return n}text({text:n}){return n}link({text:n}){return""+n}image({text:n}){return""+n}br(){return""}checkbox({raw:n}){return n}},M=class J{constructor(e){k(this,"options");k(this,"renderer");k(this,"textRenderer");this.options=e||z,this.options.renderer=this.options.renderer||new N,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new se}static parse(e,t){return new J(t).parse(e)}static parseInline(e,t){return new J(t).parseInline(e)}parse(e){var a,s;this.renderer.parser=this;let t="";for(let o=0;o<e.length;o++){let l=e[o];if((s=(a=this.options.extensions)==null?void 0:a.renderers)!=null&&s[l.type]){let r=l,d=this.options.extensions.renderers[r.type].call({parser:this},r);if(d!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(r.type)){t+=d||"";continue}}let i=l;switch(i.type){case"space":{t+=this.renderer.space(i);break}case"hr":{t+=this.renderer.hr(i);break}case"heading":{t+=this.renderer.heading(i);break}case"code":{t+=this.renderer.code(i);break}case"table":{t+=this.renderer.table(i);break}case"blockquote":{t+=this.renderer.blockquote(i);break}case"list":{t+=this.renderer.list(i);break}case"checkbox":{t+=this.renderer.checkbox(i);break}case"html":{t+=this.renderer.html(i);break}case"def":{t+=this.renderer.def(i);break}case"paragraph":{t+=this.renderer.paragraph(i);break}case"text":{t+=this.renderer.text(i);break}default:{let r='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(r),"";throw new Error(r)}}}return t}parseInline(e,t=this.renderer){var s,o;this.renderer.parser=this;let a="";for(let l=0;l<e.length;l++){let i=e[l];if((o=(s=this.options.extensions)==null?void 0:s.renderers)!=null&&o[i.type]){let d=this.options.extensions.renderers[i.type].call({parser:this},i);if(d!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(i.type)){a+=d||"";continue}}let r=i;switch(r.type){case"escape":{a+=t.text(r);break}case"html":{a+=t.html(r);break}case"link":{a+=t.link(r);break}case"image":{a+=t.image(r);break}case"checkbox":{a+=t.checkbox(r);break}case"strong":{a+=t.strong(r);break}case"em":{a+=t.em(r);break}case"codespan":{a+=t.codespan(r);break}case"br":{a+=t.br(r);break}case"del":{a+=t.del(r);break}case"text":{a+=t.text(r);break}default:{let d='Token with "'+r.type+'" type was not found.';if(this.options.silent)return console.error(d),"";throw new Error(d)}}}return a}},O,D=(O=class{constructor(n){k(this,"options");k(this,"block");this.options=n||z}preprocess(n){return n}postprocess(n){return n}processAllTokens(n){return n}emStrongMask(n){return n}provideLexer(n=this.block){return n?S.lex:S.lexInline}provideParser(n=this.block){return n?M.parse:M.parseInline}},k(O,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),k(O,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),O),Pt=class{constructor(...n){k(this,"defaults",K());k(this,"options",this.setOptions);k(this,"parse",this.parseMarkdown(!0));k(this,"parseInline",this.parseMarkdown(!1));k(this,"Parser",M);k(this,"Renderer",N);k(this,"TextRenderer",se);k(this,"Lexer",S);k(this,"Tokenizer",F);k(this,"Hooks",D);this.use(...n)}walkTokens(n,e){var a,s;let t=[];for(let o of n)switch(t=t.concat(e.call(this,o)),o.type){case"table":{let l=o;for(let i of l.header)t=t.concat(this.walkTokens(i.tokens,e));for(let i of l.rows)for(let r of i)t=t.concat(this.walkTokens(r.tokens,e));break}case"list":{let l=o;t=t.concat(this.walkTokens(l.items,e));break}default:{let l=o;(s=(a=this.defaults.extensions)==null?void 0:a.childTokens)!=null&&s[l.type]?this.defaults.extensions.childTokens[l.type].forEach(i=>{let r=l[i].flat(1/0);t=t.concat(this.walkTokens(r,e))}):l.tokens&&(t=t.concat(this.walkTokens(l.tokens,e)))}}return t}use(...n){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return n.forEach(t=>{let a={...t};if(a.async=this.defaults.async||a.async||!1,t.extensions&&(t.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if("renderer"in s){let o=e.renderers[s.name];o?e.renderers[s.name]=function(...l){let i=s.renderer.apply(this,l);return i===!1&&(i=o.apply(this,l)),i}:e.renderers[s.name]=s.renderer}if("tokenizer"in s){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let o=e[s.level];o?o.unshift(s.tokenizer):e[s.level]=[s.tokenizer],s.start&&(s.level==="block"?e.startBlock?e.startBlock.push(s.start):e.startBlock=[s.start]:s.level==="inline"&&(e.startInline?e.startInline.push(s.start):e.startInline=[s.start]))}"childTokens"in s&&s.childTokens&&(e.childTokens[s.name]=s.childTokens)}),a.extensions=e),t.renderer){let s=this.defaults.renderer||new N(this.defaults);for(let o in t.renderer){if(!(o in s))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;let l=o,i=t.renderer[l],r=s[l];s[l]=(...d)=>{let h=i.apply(s,d);return h===!1&&(h=r.apply(s,d)),h||""}}a.renderer=s}if(t.tokenizer){let s=this.defaults.tokenizer||new F(this.defaults);for(let o in t.tokenizer){if(!(o in s))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let l=o,i=t.tokenizer[l],r=s[l];s[l]=(...d)=>{let h=i.apply(s,d);return h===!1&&(h=r.apply(s,d)),h}}a.tokenizer=s}if(t.hooks){let s=this.defaults.hooks||new D;for(let o in t.hooks){if(!(o in s))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;let l=o,i=t.hooks[l],r=s[l];D.passThroughHooks.has(o)?s[l]=d=>{if(this.defaults.async&&D.passThroughHooksRespectAsync.has(o))return(async()=>{let u=await i.call(s,d);return r.call(s,u)})();let h=i.call(s,d);return r.call(s,h)}:s[l]=(...d)=>{if(this.defaults.async)return(async()=>{let u=await i.apply(s,d);return u===!1&&(u=await r.apply(s,d)),u})();let h=i.apply(s,d);return h===!1&&(h=r.apply(s,d)),h}}a.hooks=s}if(t.walkTokens){let s=this.defaults.walkTokens,o=t.walkTokens;a.walkTokens=function(l){let i=[];return i.push(o.call(this,l)),s&&(i=i.concat(s.call(this,l))),i}}this.defaults={...this.defaults,...a}}),this}setOptions(n){return this.defaults={...this.defaults,...n},this}lexer(n,e){return S.lex(n,e??this.defaults)}parser(n,e){return M.parse(n,e??this.defaults)}parseMarkdown(n){return(e,t)=>{let a={...t},s={...this.defaults,...a},o=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&a.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=n),s.async)return(async()=>{let l=s.hooks?await s.hooks.preprocess(e):e,i=await(s.hooks?await s.hooks.provideLexer(n):n?S.lex:S.lexInline)(l,s),r=s.hooks?await s.hooks.processAllTokens(i):i;s.walkTokens&&await Promise.all(this.walkTokens(r,s.walkTokens));let d=await(s.hooks?await s.hooks.provideParser(n):n?M.parse:M.parseInline)(r,s);return s.hooks?await s.hooks.postprocess(d):d})().catch(o);try{s.hooks&&(e=s.hooks.preprocess(e));let l=(s.hooks?s.hooks.provideLexer(n):n?S.lex:S.lexInline)(e,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let i=(s.hooks?s.hooks.provideParser(n):n?M.parse:M.parseInline)(l,s);return s.hooks&&(i=s.hooks.postprocess(i)),i}catch(l){return o(l)}}}onError(n,e){return t=>{if(t.message+=`
Please report this to https://github.com/markedjs/marked.`,n){let a="<p>An error occurred:</p><pre>"+y(t.message+"",!0)+"</pre>";return e?Promise.resolve(a):a}if(e)return Promise.reject(t);throw t}}},A=new Pt;function w(n,e){return A.parse(n,e)}w.options=w.setOptions=function(n){return A.setOptions(n),w.defaults=A.defaults,fe(w.defaults),w};w.getDefaults=K;w.defaults=z;function Ct(...n){return A.use(...n),w.defaults=A.defaults,fe(w.defaults),w}w.use=Ct;w.walkTokens=function(n,e){return A.walkTokens(n,e)};w.parseInline=A.parseInline;w.Parser=M;w.parser=M.parse;w.Renderer=N;w.TextRenderer=se;w.Lexer=S;w.lexer=S.lex;w.Tokenizer=F;w.Hooks=D;w.parse=w;w.options;w.setOptions;w.walkTokens;w.parseInline;M.parse;S.lex;const me=`# What 19 months of daily downloads say about the Hugging Face Hub
Every model page on the Hub shows one number: downloads in the last 30 days. It's useful, but it's a snapshot. It can't tell you whether a model is growing or fading, how it compares with its peers, or how much of its reach comes from the quantizations and fine-tunes built on top of it.
So I rebuilt the history. [Model Pulse](https://huggingface.co/spaces/tardellirs/model-pulse) reads every daily revision of [@cfahlgren1](https://huggingface.co/cfahlgren1)'s [hub-stats](https://huggingface.co/datasets/cfahlgren1/hub-stats) dataset, back to July 2024, and turns them into a day-by-day series for 1.6 million models. Since February 2025 those snapshots include all-time totals, which makes exact daily downloads possible: 19 months of them, for every model that anyone actually uses. For the months before that, the 30-day counts still give a good monthly estimate, so the charts go back to July 2024.
This post walks through what that data shows. Every number comes from the [open dataset](https://huggingface.co/datasets/modelpulse/model-pulse-data), and every model mentioned can be looked up on Model Pulse.
## The short version
- The Hub serves about **100 million model downloads a day**, up from about 61 million a year ago.
- **Rerankers grew about 10x** and vision-language models more than 6x in that year. BERT-style fill-mask models are the only big category that shrank.
- **Qwen became the default open LLM publisher.** Its own repos went from 9% of text and vision-language model downloads in March 2025 to 30% in September 2026, after peaking at 50% in April. Meta's went from 10% to 3%.
- **43% of all downloads go to derivatives**, up from 18%. Quantizations alone went from 9% to 28%.
- **Unsloth grew 6x and LM Studio's community org 25x**, making the quantizers some of the biggest publishers on the Hub.
- **The top of the Hub is losing its grip**: the ten most downloaded models took 34% of downloads in March 2025 and 22% now.
- **Big models are the fastest-growing slice.** Downloads of 100B+ models grew 14x and of 10–35B models 8x, against 2.6x for models under 10B.
- **Old models still carry the Hub**: 10 of the 15 most downloaded models are dated 2022 or earlier.
- **A launch spikes for two weeks and then plateaus.** 40% of successful launches had their best week after their third month.
- **Likes measure excitement, not use.** Image models collect 160 times more likes per download than rerankers.
- **Dataset downloads grew 2.5x in a year**, to about 8M a day, and they're far less concentrated than model downloads.
- **Robotics is now the second most downloaded dataset category**, after text generation, up from 23rd two years ago. One in seven new datasets is robot data.
- **Fine-tuners moved from IMDb and SQuAD to reasoning traces**, now cited by 12% of the people who list their training data.
- **Spaces are being created faster than people like them.** At the peak, Spaces were created more than four times faster than in late 2024, while likes per month fell by almost half.
## 1. The Hub serves about 100 million model downloads a day
![Weekly downloads across all public models, by task](/report/01-hub.webp)
In September 2026 public models were downloaded about 103M times on a typical day, against about 61M a year earlier. The growth wasn't spread evenly across tasks:
| Task | Sep 2025, per day | Sep 2026, per day | Change |
|---|---:|---:|---:|
| Text generation | 9.2M | 19.3M | 2.1x |
| Sentence similarity | 6.7M | 16.3M | 2.5x |
| Vision-language (image-text-to-text) | 1.7M | 10.9M | 6.6x |
| Feature extraction | 2.8M | 6.1M | 2.2x |
| Automatic speech recognition | 2.4M | 4.8M | 2.0x |
| Fill-mask | 5.6M | 5.1M | 0.9x |
| Text ranking (rerankers) | 0.4M | 3.9M | 10.2x |
| Everything else | 31.7M | 36.7M | 1.2x |
Two things stand out. Rerankers went from a niche to nearly 4M downloads a day, which is what you'd expect as retrieval pipelines add a reranking step. And fill-mask, the task behind the original BERT wave, is the only large category that shrank.
Days when the Hub's counters stood still, or briefly went backwards, are spread over the days around them, keeping totals exact (see "How this was measured").
## 2. Embeddings and retrieval quietly run the Hub
Generative models get the attention, but the most downloaded models on the Hub are small encoders. These were the top 15 in September 2026:
| Model | Created | Downloads in September 2026 |
|---|---|---:|
| sentence-transformers/all-MiniLM-L6-v2 | 2022 or earlier | 253.3M |
| cross-encoder/ms-marco-MiniLM-L6-v2 | 2022 or earlier | 89.6M |
| BAAI/bge-small-en-v1.5 | 2023 | 65.9M |
| sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 | 2022 or earlier | 50.9M |
| google/electra-base-discriminator | 2022 or earlier | 48.8M |
| google-bert/bert-base-uncased | 2022 or earlier | 43.1M |
| BAAI/bge-m3 | 2024 | 37.0M |
| Qwen/Qwen3-0.6B | 2025 | 30.3M |
| google-t5/t5-small | 2022 or earlier | 25.4M |
| amazon/chronos-2 | 2025 | 23.6M |
| Comfy-Org/MiniMax-H3 | 2026 | 23.3M |
| openai/clip-vit-base-patch32 | 2022 or earlier | 22.3M |
| timm/mobilenetv3_small_100.lamb_in1k | 2022 or earlier | 22.0M |
| sentence-transformers/all-mpnet-base-v2 | 2022 or earlier | 21.1M |
| FacebookAI/xlm-roberta-base | 2022 or earlier | 17.9M |
From April to September 2026 the \`sentence-transformers\` organization served 2.28B downloads, slightly more than Qwen's 2.16B. The \`sentence-transformers\` library went from 12% of all downloads to 24%, while \`transformers\` went from 67% to 50%:
| Library | Mar 2025 | Sep 2026 |
|---|---:|---:|
| transformers | 66.7% | 49.8% |
| sentence-transformers | 12.3% | 24.3% |
| no library tag | 3.5% | 7.7% |
| timm | 5.3% | 1.7% |
| diffusers | 2.7% | 1.6% |
| gguf | 0.0% | 1.6% |
| mlx | 0.0% | 0.6% |
| transformers.js | 0.2% | 0.5% |
## 3. Qwen became the default open LLM publisher
![Share of text and vision-language model downloads, by publisher](/report/02-text-orgs.webp)
Count every download of a text-generation or vision-language model on the Hub, including every quantization and fine-tune, and ask who published the repo. Most of these downloads go to thousands of small publishers, so a single organization with a tenth of them is a giant. In July 2024 Meta's \`meta-llama\` repos took about 11% and Qwen's 6%. By March 2025 they were tied at about 9% each. Then Qwen pulled away: 27% in September 2025, a peak of 50% in April 2026, and 30% in September 2026. Since April its share has slipped while Google's rose from 1.5% to 4.3% and quantized repos kept growing. Meta's repos took 3%. NVIDIA is the riser to watch, from almost nothing to 3.4%.
The most downloaded text and vision-language models in September 2026:
| Model | Downloads in September 2026 |
|---|---:|
| Qwen/Qwen3-0.6B | 30.3M |
| Qwen/Qwen3-VL-8B-Instruct | 16.5M |
| openai-community/gpt2 | 16.2M |
| google/gemma-4-26B-A4B-it | 13.3M |
| Qwen/Qwen3-8B | 11.8M |
| trl-internal-testing/tiny-Qwen2ForCausalLM-2.5 | 11.1M |
| google/gemma-4-31B-it | 10.1M |
| Qwen/Qwen3.5-9B | 9.7M |
| unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF | 9.6M |
| Qwen/Qwen2.5-7B-Instruct | 9.6M |
Two of these are worth a second look. GPT-2, released in 2019, is still the third most downloaded text model. And a tiny test model used in TRL's CI makes the top ten, which shows how much of the Hub's traffic comes from automated pipelines.
## 4. Nearly half of all downloads go to derivatives
![Share of monthly downloads going to derivatives](/report/03-derivatives.webp)
A derivative is a model whose card declares a base model: a quantization, a fine-tune, an adapter or a merge. In July 2024 derivatives took about 8% of all downloads on the Hub, and 18% in March 2025. In September 2026 they took 43%. Quantizations drove most of it, going from 9% to 28%, and GGUF files alone went from 5% to 11%, most of that in the last three months.
Take [Qwen3-8B](https://huggingface.co/spaces/tardellirs/model-pulse?model=Qwen/Qwen3-8B). 6,283 models build on it, directly or through other derivatives, and 37% of its family's monthly downloads go to those derivatives rather than to the original. If you only look at the original repo, you miss more than a third of its reach.
Derivatives also reach scale faster. Of the models created since March 2025, 946 have passed one million downloads. Here is how long it took, by type:
| Type | Models past 1M downloads | Median days to 1M |
|---|---:|---:|
| Quantized | 297 | 100 |
| Adapter | 14 | 115 |
| Fine-tuned | 117 | 127 |
| Merge | 6 | 191 |
| Original (no declared base) | 512 | 331 |
## 5. The quantizers became some of the Hub's biggest publishers
![Monthly downloads of repackaged models, March 2025 vs September 2026](/report/04-quantizers.webp)
| Publisher | Monthly downloads, Mar 2025 | Monthly downloads, Sep 2026 | Repos with downloads, Sep 2026 |
|---|---:|---:|---:|
| unsloth | 11.1M | 66.9M | 1,440 |
| mradermacher | 7.2M | 46.7M | 70,233 |
| lmstudio-community | 1.7M | 42.1M | 750 |
| bartowski | 10.4M | 16.0M | 2,333 |
| MaziyarPanahi | 47.7M | 10.0M | 2,790 |
| mlx-community | 2.2M | 9.4M | 5,436 |
| ggml-org | 0.2M | 6.5M | 193 |
| TheBloke | 17.1M | 2.8M | 3,655 |
Unsloth grew sixfold and now ranks among the top dozen publishers on the whole Hub. LM Studio's community org grew 25-fold. mradermacher runs at a different scale altogether: more than 70,000 repos got at least one download in September. TheBloke, who defined this category in 2023, is down to 2.8M a month as people move to newer models, and MaziyarPanahi went the other way too, from 47.7M to 10.0M.
## 6. The head of the Hub is losing its grip
![Share of monthly downloads going to the top 10, 100 and 1,000 models](/report/05-concentration.webp)
| | Jul 2024 (est.) | Mar 2025 | Sep 2026 |
|---|---:|---:|---:|
| Share of downloads, top 10 models | 46.7% | 33.7% | 22.0% |
| Share of downloads, top 100 models | 76.5% | 62.9% | 47.2% |
| Share of downloads, top 1,000 models | 94.6% | 91.3% | 78.6% |
| Share of downloads, top 1% of models | 98.4% | 98.1% | 96.3% |
| Models with at least one download | 406K | 752K | 1.52M |
Demand is spreading out: the top ten took almost half of all downloads in mid-2024 and take a fifth now. The tail is still enormous, though. Of the 1.6M models tracked in September 2026, 47% got fewer than 10 downloads in the month and 88% got fewer than 100. Only 425 passed a million.
## 7. Big models are the fastest-growing slice
![Monthly text-generation downloads by model size, indexed](/report/06-model-size.webp)
Weighted by downloads, the typical text-generation model went from 3.0B parameters in March 2025 to 5.6B in September 2026, after peaking at 6.7B in July. That average hides where the growth happened. Text-generation downloads more than tripled overall, so every size band grew, but not at the same pace:
| Parameters | Mar–May 2025, per month | Jul–Sep 2026, per month | Change |
|---|---:|---:|---:|
| Under 10B | 109M | 280M | 2.6x |
| 10B to 35B | 13M | 104M | 8.2x |
| 35B to 100B | 7.7M | 18M | 2.3x |
| 100B and up | 3.1M | 42M | 14x |
Models with 10B or more parameters went from 19% of text-generation downloads to 35%, and 100B+ alone from 2% to 9%. The 35B–100B band, home of the dense 70B models, grew more slowly than the Hub. The growth went to the bands on either side of it.
These are total parameters, and that matters. The 100B+ band is mostly mixture-of-experts models that use a fraction of their weights per token: gpt-oss-120b (about 5B active), DeepSeek R1, V3 and V4, GLM-5.2, MiniMax M2.7 and Nemotron 3 Super 120B-A12B. The 10–35B band is led by NVIDIA's NVFP4 build of Qwen3.6-35B-A3B, gpt-oss-20b and Qwen3-32B. People download much bigger checkpoints, but much of that rise is mixture-of-experts.
Small models haven't gone away: anything under 2B still takes about a third of text-generation downloads, some of it from CI pipelines that pull tiny test models all day.
## 8. Old models still carry a third of the Hub
The Hub dates every repo migrated from its early days to March 2022, so "2022 or earlier" covers BERT, GPT-2, T5 and the rest of that generation. Here is the share of each month's downloads by the year the model was created:
| Created | Jul 2024 (est.) | Mar 2025 | Sep 2026 |
|---|---:|---:|---:|
| 2022 or earlier | 75.7% | 56.0% | 33.5% |
| 2023 | 16.1% | 17.6% | 11.4% |
| 2024 | 8.2% | 22.9% | 15.1% |
| 2025 | | 3.5% | 17.9% |
| 2026 | | | 22.0% |
New models win share fast, since 2026 models already take more than a fifth of all downloads, but the old guard erodes slowly: three quarters of downloads in mid-2024 went to models from 2022 or earlier, and a third still do.
## 9. A launch spikes for two weeks, then plateaus
![Average weekly share of a model's first six months of downloads](/report/07-launch-curve.webp)
I took the 2,301 models launched between March 2025 and March 2026 that passed 100K downloads in their first six months, and looked at how those downloads were spread over the 26 weeks:
- On average the first two weeks take about 8% of the six months each. After that, downloads settle at around 3% a week and stay there; they don't fade.
- For the median model, the first month accounts for only 14% of the first six months.
- Only 10% of these models had their best week at launch. The median best week is week 8 after launch, and 40% peaked after their third month.
This is a set of models that succeeded, so it says nothing about the many launches that never take off. But for the ones that do, steady use matters more than the launch spike.
The fastest to a million downloads since March 2025:
| Model | Days to 1M downloads |
|---|---:|
| openai/gpt-oss-20b | 5 |
| Comfy-Org/z_image_turbo | 5 |
| ornith-ai/Ornith-1.5-9B-GGUF | 6 |
| JonathanColetti/Qwen3.8-27B-Uncensored-GGUF | 7 |
| huihui-ai/Huihui-Qwen3.8-27B-abliterated-GGUF | 8 |
| lmstudio-community/Qwen3.8-27B-MLX-4bit | 8 |
| unsloth/Qwen3.8-27B-NVFP4 | 8 |
| Comfy-Org/Wan_2.2_ComfyUI_Repackaged | 9 |
| Qwen/Qwen3.6-35B-A3B | 10 |
A couple of niche repos also crossed a million in five days, most likely through automated pulls, and are left out of the table. Note how many community builds of Qwen3.8-27B made the list: when a popular model ships, the GGUF, MLX and abliterated variants race each other to the top.
## 10. Likes measure excitement, not use
![Likes per 100,000 monthly downloads, by task](/report/08-likes.webp)
Across models with at least 1,000 monthly downloads, likes and downloads are only moderately related (Spearman 0.42). What a model is for matters more than how much it's used. Image generation models collect 854 likes per 100K monthly downloads; rerankers collect 5.
Some of the busiest models have almost no likes:
| Model | Downloads, last 30 days | Likes |
|---|---:|---:|
| mudler/locate-anything.cpp-gguf | 9.1M | 19 |
| amazon/chronos-bolt-small | 6.9M | 49 |
| cross-encoder/ms-marco-MiniLM-L4-v2 | 6.1M | 31 |
| autogluon/chronos-2-small | 4.5M | 8 |
And some of the most loved are rarely downloaded anymore:
| Model | Likes | Downloads, last 30 days |
|---|---:|---:|
| stabilityai/stable-diffusion-3-medium | 5,058 | 2,721 |
| WarriorMama777/OrangeMixs | 3,958 | 1,584 |
| prompthero/openjourney | 3,262 | 3,644 |
| zai-org/chatglm-6b | 2,915 | 2,881 |
If you rank models by likes, you're ranking them by how exciting they were. To see what people actually run, look at downloads over time.
## 11. Datasets: a smaller market, growing faster and less concentrated
Datasets are a smaller business than models. In September 2026 they were downloaded 253M times, about 8M a day, roughly one dataset download for every twelve model downloads. They're growing faster, though: 2.5x since September 2025, against 1.7x for models. The number of datasets downloaded at least once in a month doubled, from 510K to 1.05M.
Dataset downloads are also much less concentrated. The ten most downloaded datasets take 7.3% of all dataset downloads, against 22% for models, and the top 1,000 take 49%, against 79%. Both markets are spreading out, but datasets started flatter.
Some of the most downloaded datasets in September 2026:
| Dataset | Downloads in Sep 2026 | What it is |
|---|---:|---|
| m-a-p/FineFineWeb | 4.5M | Web text for pretraining |
| huggingface/documentation-images | 2.2M | Images used in the docs and tests |
| Salesforce/wikitext | 2.0M | Evaluation (perplexity) |
| nvidia/PhysicalAI-Robotics-GR00T-X-Embodiment-Sim | 1.3M | Robot simulation data |
| openai/gsm8k | 1.2M | Math benchmark |
| allenai/c4 | 1.2M | Web text for pretraining |
| Lichess/standard-chess-games | 0.8M | Chess games |
| nyu-mll/glue | 0.8M | Classic NLP benchmark |
| allenai/ai2_arc | 0.7M | Reasoning benchmark |
| cais/mmlu | 0.7M | Knowledge benchmark |
Benchmarks are a large part of the head: evaluation harnesses download GSM8K, ARC and MMLU every time they run. And 28% of September's dataset downloads went to repos with no task, modality or size in their metadata at all. Many of those look like file storage (caches, asset bundles, model inputs) more than datasets in the ML sense.
## 12. Robotics is now the second most downloaded dataset category
![Rank of dataset task categories by monthly downloads](/report/13-robotics-rank.webp)
Among datasets that declare a task category, about a third of all dataset downloads, robotics went from 23rd in September 2024 to 2nd in September 2026, behind only text generation. It got 13.7M downloads that month, ahead of text classification (10.5M) and question answering (8.3M), up 16x from 0.9M in March 2025 and 5% of all dataset downloads. No other large category grew nearly as fast; the few that grew faster, like image-to-3d, are a tenth of its size.
![Robotics datasets created per month](/report/09-robotics.webp)
The number of datasets grew even faster. In September 2026, 6,570 new datasets were tagged robotics, 14% of all new datasets; two years earlier it was 136 a month. 46 authors created a robotics dataset in the third quarter of 2024, and 2,823 in the third quarter of 2026.
Most are LeRobot recordings. In a sample of 30 created in September, 26 carry the LeRobot tag, and most hold camera video plus joint positions from a few dozen demonstrations of a task, often pick-and-place on a low-cost SO-101 arm. They are small and personal: the median robotics dataset gets 31 downloads a month, and LeRobot tends to create one dataset per recording session, so the count overstates the activity a little. The downloads come mostly from large shared collections: NVIDIA's GR00T simulation data, the community's LeRobot conversions of Open X-Embodiment (Language Table, DROID, Kuka, Bridge), and new teleoperation sets.
## 13. Fine-tuners swapped IMDb and SQuAD for reasoning traces
![Share of model authors citing each kind of training data, by year](/report/10-training-data.webp)
Model cards can list the datasets a model was trained on, and between 10% and 20% of new models do. Counted by model, the ranking is dominated by accounts that publish thousands of near-identical models: one dataset is listed by 7,023 models, 7,020 of them from a single account. So the chart counts authors instead: the share of people who list a given kind of dataset, by the year their model was created.
In 2022, 36% of them cited a classic NLP set: IMDb, SQuAD, GLUE, CoNLL-2003, emotion. In 2026 it's 2.4%. Speech data went from 14% to 3.5%. Chat instruction sets (Alpaca, Dolly, UltraChat, OpenHermes, Orca) peaked at 10.5% in 2024 and have halved since.
Reasoning traces replaced them. Datasets of step-by-step solutions went from almost nothing to 12% of authors in 2026, the most cited kind. More and more of them are distilled from closed models: datasets with Opus, Claude, GPT-4 or Gemini in the name were cited by 4.6% of authors in 2026, up from 2.0% in 2025. Three of the eight most cited datasets this year are reasoning traces sampled from Claude Opus or Qwen3.5.
## 14. Spaces: more apps than ever, less attention each
![New Spaces per month, by SDK](/report/11-spaces-sdk.webp)
The Hub doesn't publish Space visits, but it does publish when each Space was created, its SDK and its likes. Creation took off in 2025. About 15,000 Spaces a month were created in 2024. In October 2025 the figure was 122,000, of which 86,000 were static sites, consistent with AI website builders that publish straight to a static Space. In 2026 Docker took over, with 45,000 new Docker Spaces in April alone. Then creation fell sharply from July 2026, to about 29,000 a month, with Docker down to about 2,000. This data doesn't say why. These counts include only Spaces that still exist.
![Spaces created and likes given per month, indexed](/report/12-spaces-likes.webp)
Likes didn't follow. Across all Spaces, people gave about 35,000 likes a month in late 2024 and about 20,000 a month in 2026. Attention is very concentrated:
- 104K Spaces have at least one like, and 65% of them have exactly one.
- The top 1% hold 59% of all 1.12M likes, and 137 Spaces have more than 1,000.
- The Spaces that gained the most likes in the last 30 days are mostly image and video generation and editing (Qwen-Image 2.1, Qwen-Image-Edit LoRAs, Wan 2.2), music generation and browser demos. Model downloads are mostly text. The likes on Spaces mostly go to images.
The model listed by the most Spaces isn't a frontier model. It's Xenova/detr-resnet-50, the object-detection model from the Transformers.js tutorial, which 2,759 Spaces list in their card while it gets about 16K downloads a month. Only about 3% of liked Spaces list a model or dataset in their card, so "used by" counts on Model Pulse are a lower bound.
## How this was measured
**Source.** [cfahlgren1/hub-stats](https://huggingface.co/datasets/cfahlgren1/hub-stats) publishes a fresh \`models.parquet\` with metadata for every public model on the Hub, usually daily. I read 681 of its historical revisions, from 2024-07-29 to 2026-10-02, keeping each model's 30-day downloads, all-time downloads and likes for each day. The latest snapshot adds the metadata: task, library, size, license and declared base models.
**Daily downloads.** The \`downloadsAllTime\` field exists from 2025-02-27. Daily downloads are the difference of that total between consecutive snapshots. Before that date only the rolling 30-day count exists, so Model Pulse shows that instead. Monthly figures in this post are the difference of each model's total between the first days of consecutive months, interpolated between the nearest snapshots when a boundary falls in a gap. Before March 2025 they are estimated from the 30-day count at the end of each month, scaled to the month's length; where both exist, the two agree within a few percent, and shares within about a point. Those months are shaded in the charts. The size chart starts in March 2025, because split into small size bands the estimates get noisy.
**Which models.** A model is tracked once it has 10 or more downloads in 30 days, 50 or more all-time downloads, or a like. That's 1.6M of the Hub's 3.1M models, and nearly all of its downloads.
**Datasets and Spaces.** The same snapshots include \`datasets.parquet\` (from 2024-07-29, all-time totals from 2025-02-27) and \`spaces.parquet\`. Datasets follow the same rules as models. Spaces have no downloads or visits in the data, so they're tracked by likes, for every Space with at least one. Training data and "used by" links come from the \`datasets:\` and \`models:\` lists in today's model and Space cards, dated by when the model or Space was created.
**Families.** A family is a base model plus every model that declares it as a base, directly or through other derivatives, following \`base_model\` up to six levels.
**Caveats.**
- Downloads follow the Hub's own [counting rules](https://huggingface.co/docs/hub/models-download-stats), so they include CI jobs, benchmarks and other automated pulls. That's why tiny test models rank surprisingly high.
- The source has gaps: two weeks in August 2024, most of June 2025, and parts of April to June 2026. Totals are unaffected, but daily values across a gap are averages, and monthly figures across one are interpolated.
- On some days the Hub's counters stand still and catch up a day or two later, mostly on Wednesdays and often only for newer repos while older ones keep counting. Twice, in May 2025 and June 2026, they went backwards for a large share of models and came back days later. The Hub-wide figures spread each such episode evenly over its days, which keeps totals exact, and measure across the rollbacks so a recovery isn't counted as new downloads.
- Publisher shares count downloads of an organization's own repos. A Qwen model quantized by Unsloth counts for Unsloth.
- "Created" dates come from the Hub, which dates repos migrated from its early days to March 2022.
## Explore it yourself
Every number above can be checked on [Model Pulse](https://huggingface.co/spaces/tardellirs/model-pulse):
- Open any model's daily and weekly history, with milestones such as the day it crossed a million downloads.
- Compare up to five models on one chart.
- See a model's family: how many quantizations, fine-tunes, adapters and merges build on it, and how many downloads they add up to.
- Browse the weekly rankings: most downloaded, fastest growing, new this month, most liked, biggest families and top organizations.
- Model authors can add a live badge to their model card.
The full dataset is open at [modelpulse/model-pulse-data](https://huggingface.co/datasets/modelpulse/model-pulse-data) and updated every day, so you can run your own analyses.
What would you want to know about your own models? I'd love to hear it in the comments.
*Made by [Tardelli Stekel](https://huggingface.co/tardellirs) ([stekel.ifsp.dev](https://stekel.ifsp.dev/)).*
`,Dt="October 3, 2026";function qt(){const n=Be(()=>{const t=me.split(/\s+/).length;let a=w.parse(me,{async:!1});return a=a.replace("</h1>",`</h1><p class="byline">${Dt} · ${Math.round(t/230)} min read · by <a href="https://huggingface.co/tardellirs">Tardelli Stekel</a></p>`),a=a.replace(/<table>/g,'<div class="table-scroll"><table class="list">').replace(/<\/table>/g,"</table></div>"),a=a.replace(/<img /g,'<img loading="lazy" decoding="async" width="1200" height="675" '),a},[]);return _e(()=>{document.title="What 19 months of daily downloads say about the Hub · Model Pulse",window.scrollTo({top:0})},[]),Ie("article",{class:"wrap report",onClick:t=>{const a=t.target.closest("a");if(!a)return;const s=a.getAttribute("href")||"",o=s.match(/^https:\/\/huggingface\.co\/spaces\/(?:modelpulse|tardellirs)\/model-pulse\/?(\?[^#]*)?$/);if(o){t.preventDefault();const l=new URLSearchParams((o[1]||"").slice(1)),i=l.get("model"),r=l.get("view")||void 0;Le(i||r?{model:i||void 0,view:r}:{});return}/^https?:/.test(s)&&(a.target="_blank",a.rel="noopener")},dangerouslySetInnerHTML:{__html:n}})}export{qt as Report};