@safetype/dom 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
- "use strict";var SafeType=(()=>{var oe=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var tt=Object.prototype.hasOwnProperty;var at=(e,t)=>{for(var a in t)oe(e,a,{get:t[a],enumerable:!0})},nt=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of et(t))!tt.call(e,r)&&r!==a&&oe(e,r,{get:()=>t[r],enumerable:!(n=Je(t,r))||n.enumerable});return e};var rt=e=>nt(oe({},"__esModule",{value:!0}),e);var Ha={};at(Ha,{DEFAULT_MESSAGES:()=>Se,DEFAULT_SELECTOR:()=>Q,MANAGED_EDITOR_SELECTOR:()=>X,createModerationEngine:()=>Y,createSafeType:()=>Ze,getMessageLevel:()=>ee,isEligible:()=>H,resolveMessage:()=>Ae});var it=[{id:"en.profanity.fuck",pattern:"fuck*",category:"profanity",severity:"high",replacement:"heck"},{id:"en.profanity.motherfucker",pattern:"motherfuck*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.shit",pattern:"shit*",category:"profanity",severity:"medium",replacement:"shoot"},{id:"en.profanity.bullshit",pattern:"(bullshit*|horseshit*)",category:"profanity",severity:"medium",replacement:"nonsense"},{id:"en.profanity.bitch",pattern:"bitch*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.ass",pattern:"(ass|arse)",category:"profanity",severity:"medium",replacement:"butt"},{id:"en.profanity.asshole",pattern:"(asshole*|arsehole*|jackass*|dumbass*)",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.bastard",pattern:"bastard*",category:"profanity",severity:"medium",replacement:"jerk"},{id:"en.profanity.cunt",pattern:"cunt*",category:"profanity",severity:"critical",replacement:"jerk"},{id:"en.profanity.dickhead",pattern:"dickhead*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.cocksucker",pattern:"cocksuck*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.wanker",pattern:"wank*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.twat",pattern:"twat*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.slut",pattern:"slut*",category:"profanity",severity:"high"},{id:"en.profanity.whore",pattern:"whore*",category:"profanity",severity:"high"},{id:"en.profanity.douche",pattern:"douche*",category:"profanity",severity:"medium",replacement:"jerk"},{id:"en.profanity.bollocks",pattern:"bollocks",category:"profanity",severity:"medium",replacement:"nonsense"},{id:"en.profanity.piss",pattern:"(piss|pisses|pissing)",category:"profanity",severity:"medium"},{id:"en.profanity.pissed",pattern:"pissed",category:"profanity",severity:"low",replacement:"annoyed"},{id:"en.profanity.damn",pattern:"(damn*|goddamn*)",category:"profanity",severity:"low",replacement:"darn"},{id:"en.profanity.crap",pattern:"crap*",category:"profanity",severity:"low",replacement:"junk"}],ot=[...["nigger*","faggot*","kike*","wetback*","raghead*","towelhead*"].map(e=>({id:`en.hate.slur.${e.replace("*","")}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"en.hate.group-violence",pattern:"(jews|muslims|christians|blacks|whites|asians|mexicans|immigrants|gays|lesbians|trans|women|arabs|africans|hindus|sikhs|refugees) (should|must|need|deserve) (to)? (be)? (die|burn|hang|rot|killed|exterminated|gassed|eradicated)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],ut="(idiot*|moron*|stupid|dumb|loser*|worthless|pathetic|ugly|imbecile*|retard*|trash|garbage|scum|disgusting|failure|freak|clown)",st=[{id:"en.harassment.insult",pattern:`(you|u|ur|youre|yall) (are|re|r)? (such)? (a|an)? (so|fucking|complete|total|absolute)? ${ut}`,category:"harassment",severity:"medium",confidence:.8,label:"insult",replacement:"I disagree with you"},{id:"en.harassment.piece-of",pattern:"(you|u|ur|youre) (are|re|r)? (a)? piece of (shit|crap|garbage|trash)",category:"harassment",severity:"high",confidence:.85,label:"insult",replacement:"I disagree with you"},{id:"en.harassment.you-suck",pattern:"(you|u) (suck|stink)",category:"harassment",severity:"low",confidence:.7,label:"insult"},{id:"en.harassment.self-harm",pattern:"(kill|hang) (yourself|urself|yourselves)",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"en.harassment.kys",pattern:"kys",category:"harassment",severity:"critical",confidence:.8,label:"self-harm-incitement"},{id:"en.harassment.go-die",pattern:"go (die|rot)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"en.harassment.threat",pattern:"(i|ill|imma|im) (ll|will|am|m|gonna)? (going)? (to)? (kill|murder|hurt|stab|shoot) (you|u)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"en.harassment.nobody-likes",pattern:"(nobody|noone) (likes|loves|cares|wants) (about)? (you|u)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],ct=[{id:"en.sexual.porn",pattern:"(porn*|xvideos|xhamster|xnxx|redtube|youporn)",category:"sexual",severity:"medium",confidence:.85,label:"sexual-content"},{id:"en.sexual.sex",pattern:"(sex|sexting|sext|sexts|seggs|secks)",category:"sexual",severity:"low",confidence:.7,label:"sexual-content"},{id:"en.sexual.horny",pattern:"horny",category:"sexual",severity:"low",confidence:.7,label:"sexual-content"},{id:"en.sexual.nudes",pattern:"(nudes|noods|nudez|nudies)",category:"sexual",severity:"medium",confidence:.8,label:"sexual-content"},{id:"en.sexual.nudes-request",pattern:"(send|sending|show|give|share|post|drop) (me|us)? (ur|your|some|more|the|ya|a)? (nudes|noods|nudez|nudies|nude|naked) (pics|pic|photos|photo|selfies|selfie|pictures)?",category:"sexual",severity:"high",confidence:.85,label:"solicitation"},{id:"en.sexual.dick-pic",pattern:"(dickpic*|cockpic*)",category:"sexual",severity:"high",confidence:.85,label:"sexual-content"},{id:"en.sexual.dick-pic-phrase",pattern:"(dick|cock) (pic|pics|picture|pictures|photo|photos)",category:"sexual",severity:"high",confidence:.85,label:"sexual-content"}],ue={language:"en",boundary:"word",rules:[...it,...ot,...st,...ct],allowList:["shiitake","shitake"]};var lt=[{id:"hi-latn.profanity.behenchod",pattern:"(behenchod*|behanchod*|bahenchod*|bahanchod*|bhenchod*|bhanchod*|benchod*|bhenchud*|behenchood*|bhencho|behencho)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.madarchod",pattern:"(madarchod*|maderchod*|madharchod*|maadarchod*|madarchood*|madrchod*|maderjaat|madarjaat)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.betichod",pattern:"(betichod*|betichood*)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.beti-chod",pattern:"beti (chod*|chood*)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.chut",pattern:"(chut|choot|chuth|chooth)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.loda",pattern:"(loda|lauda|lavda|lawda|laude|lavde|lawde|laudu|lavdu|lund|lundd)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.lodu",pattern:"(lodu|lodoo|loduchand|lodus)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.bhosda",pattern:"(bhosd*|bhosad*|bhosid*|bhosri*|bhosdk)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.abbreviations",pattern:"(bsdk|bkl|mkc)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.chutiya",pattern:"(chutiya*|chutiye*|chutia*|chootiya*|chutya*|chutiye)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.gandu",pattern:"(gandu|gaandu|gandoo|gaandoo|gaand*)",category:"profanity",severity:"medium"},{id:"hi-latn.profanity.randi",pattern:"(randiya|randwa|randibaaz*|randibaz*|randikhana)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.harami",pattern:"(harami|haraami|haramkhor*|haraamkhor*|haramzad*|haraamzad*|haramjad*)",category:"profanity",severity:"medium"},{id:"hi-latn.profanity.bhadwa",pattern:"(bhadwa|bhadwe|bhadva|bhadve|bhadwi|bhadwaa)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.jhaatu",pattern:"(jhaat*|jhant*|jhaant*)",category:"profanity",severity:"medium"},{id:"hi-latn.profanity.kutiya",pattern:"(kutiya|kuttiya|kutiyaa)",category:"profanity",severity:"high"}],dt="(teri|tere|tera|tumhari|tumhara|tumhare|uski|uske|iski|apni)",Re="(maa|ma|mai|behen|bahen|behan|bahan|bhen|beti)",ht=[{id:"hi-latn.harassment.family-insult",pattern:`${dt} ${Re} (ka|ki|ke|ko) (bhosd*|bhosad*|chut|choot|lund|loda|lauda|lavda|lawda)`,category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"hi-latn.harassment.family-abuse",pattern:`${Re} (ko|ki)? (chod*|chud*|chood*)`,category:"harassment",severity:"high",confidence:.85,label:"insult"}],se="(tujhe|tereko|tujhko|tumhe|tumko|tuje|tujko|tereko|aapko)",pt="(chod*|maar*|mar*|kaat*|kat*|thok*|peet*|pit*|tod*|jala*|uthwa*|khatam|khatm|phod*)",ft=[{id:"hi-latn.harassment.home-invasion",pattern:`(ghar|gher) (me|mein|main|mai|mei|pe|par|tak)? (ghus|ghuske|ghuskar|ghusk|aake|aakar|aa|aake|aaunga|aunga) (ke|kar|k)? ${pt}`,category:"harassment",severity:"high",confidence:.85,label:"threat"},{id:"hi-latn.harassment.threat",pattern:`${se} (jaan)? (se)? (maar|mar|kaat|thok|peet|tod|jala|khatam|khatm|uthwa|gaad) (kar)? (dunga|daalunga|dalunga|denge|dalenge|daalenge|dungi|doonga|lunga|lenge)`,category:"harassment",severity:"high",confidence:.8,label:"threat"},{id:"hi-latn.harassment.threat-short",pattern:`${se} (maarunga|marunga|maarenge|marenge|kaatunga|katunga|thokunga|peetunga|pitunga|todunga|chodunga|chodenge|chodega|jalaunga|phodunga)`,category:"harassment",severity:"high",confidence:.8,label:"threat"},{id:"hi-latn.harassment.wont-spare",pattern:`${se} (to|toh)? (nahi|nhi|nai|nahin) (chhodunga|chodunga|chhodenge|chodenge|chhodungi|bakshunga|bakhshunga|bachega|bachegi)`,category:"harassment",severity:"high",confidence:.75,label:"threat"},{id:"hi-latn.harassment.abusive-address",pattern:"(abe|abey|oye|oi|oyee) (saale|saala|saali|sale|kutte|kamine|kamini|harami)",category:"harassment",severity:"medium",confidence:.75,label:"insult"},{id:"hi-latn.harassment.saale-insult",pattern:"(saale|saala|saali|sale) (kutte|kutta|kutti|kamine|kamina|harami|chutiye|chutiya|gandu|bhadwe|lodu|suar|suwar|haramkhor|ullu)",category:"harassment",severity:"medium",confidence:.8,label:"insult"}],mt=[{id:"hi-latn.harassment.gaali",pattern:"(bhosd*|bhosad*|bhosid*|bhosri*|lodu|lodoo|loduchand|lodus|harami|haraami|haramkhor*|haraamkhor*|haramzad*|haraamzad*|haramjad*)",category:"harassment",severity:"high",confidence:.75,label:"insult"}],yt=[{id:"hi-latn.sexual.nudes-request",pattern:"(nangi|nanga|nangii|nude|nudes) (photo|photos|pic|pics|video|videos|selfie|tasveer) (bhej*|dikha*|send|de|do)",category:"sexual",severity:"high",confidence:.85,label:"solicitation"}],ce={language:"hi-Latn",boundary:"word",rules:[...lt,...ht,...ft,...mt,...yt],allowList:[]};var gt=[{id:"de.profanity.scheisse",pattern:"(scheiss*|scheis)",category:"profanity",severity:"medium",replacement:"Mist"},{id:"de.profanity.arsch",pattern:"arsch",category:"profanity",severity:"medium"},{id:"de.profanity.arschloch",pattern:"(arschloch*|arschloech*|arschgeige*|arschgesicht*|arschkriecher*|arschficker*)",category:"profanity",severity:"high"},{id:"de.profanity.fotze",pattern:"fotze*",category:"profanity",severity:"critical"},{id:"de.profanity.ficken",pattern:"(fick|ficke|fickt|ficken|fickst|fickte|ficktest|gefickt|ficker|fickers|fickdich)",category:"profanity",severity:"high"},{id:"de.profanity.wichser",pattern:"(wichser*|wichse|wichsen|wichst|wixer*|wixxer*)",category:"profanity",severity:"high"},{id:"de.profanity.hurensohn",pattern:"(hurensohn*|hurensoehne*|hurenkind*|hurenbock*)",category:"profanity",severity:"high"},{id:"de.profanity.hure",pattern:"(hure|huren)",category:"profanity",severity:"high"},{id:"de.profanity.schlampe",pattern:"(schlampe|schlampen)",category:"profanity",severity:"high"},{id:"de.profanity.miststueck",pattern:"(miststuck*|miststueck*|mistkerl*|mistsau)",category:"profanity",severity:"high"},{id:"de.profanity.verpiss",pattern:"verpiss*",category:"profanity",severity:"high"},{id:"de.profanity.leck-mich",pattern:"leck mich",category:"profanity",severity:"medium"},{id:"de.profanity.kacke",pattern:"(kacke|kack|kacken|kackbratze*|kackscheiss*)",category:"profanity",severity:"medium"},{id:"de.profanity.pisser",pattern:"(pisser|pissnelke*)",category:"profanity",severity:"medium"},{id:"de.profanity.dreck",pattern:"(drecksau*|dreckschwein*|drecksack*|dreckstuck*|dreckstueck*|drecksfotze*)",category:"profanity",severity:"high"},{id:"de.profanity.schwanzlutscher",pattern:"(schwanzlutscher*|pimmel|pimmelkopf*)",category:"profanity",severity:"high"}],vt=[...["(kanake*|kanacke*)","(neger|negers|negerin*)","schwuchtel*","(kummelturke*|kuemmeltuerke*)","judensau*"].map(e=>({id:`de.hate.slur.${e.replace(/[()*]/g,"").split("|")[0]}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"de.hate.group-violence",pattern:"(juden|muslime|moslems|christen|auslander|auslaender|fluchtlinge|fluechtlinge|migranten|asylanten|schwarze|turken|tuerken|araber|schwule|lesben|frauen|roma|sinti|kanaken) (sollten|sollen|mussen|muessen|gehoren|gehoeren|verdienen) (alle)? (es)? (zu)? (sterben|brennen|vergast|vernichtet|ausgerottet|erschossen|aufgehangt|aufgehaengt|abgeschlachtet|verbrannt|tot)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],Me="(idiot*|vollidiot*|depp*|trottel*|arschloch*|wichser*|dumm|dummkopf*|blod|bloed|behindert*|spast*|mongo|missgeburt*|versager*|loser*|penner*|hurensohn*|witzfigur*|lappen|opfer|abschaum|mull|muell|nichtsnutz*|hackfresse*|schwachkopf*|schwachmat*|pisser|bastard*|hund|schwein|sau|schlampe|fotze|hure|spasti)",Le="(so|echt|total|voll|wirklich|einfach)? (ein|eine|einer|n)? (verdammter|verdammte|verdammtes|dummer|dumme|dummes|kleiner|kleine|kleines|elender|elendes|scheiss)?",Et=[{id:"de.harassment.insult",pattern:`du (bist)? ${Le} ${Me}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"de.harassment.insult-formal",pattern:`(sie|ihr) (sind|seid) ${Le} ${Me}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"de.harassment.self-harm",pattern:"(bring|bringt|bringen) (dich|euch|sich) (doch|endlich)? um",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"de.harassment.self-harm-hang",pattern:"(erhang|erhaeng|toete|tote) (dich|euch)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"de.harassment.self-harm-hang-up",pattern:"(hang|haeng) (dich|euch) auf",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"de.harassment.go-die",pattern:"(geh|geht) (sterben|verrecken|krepieren)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"de.harassment.threat",pattern:"(ich|wir) (werde|werden|will|wollen)? (dich|euch) (umbringen|toten|toeten|abstechen|erschiessen|abknallen|kaltmachen|abmurksen)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"de.harassment.threat-bring-um",pattern:"(ich|wir) (bringe|bring|bringen) (dich|euch) um",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"de.harassment.nobody-likes",pattern:"(niemand|keiner) (mag|liebt|will|braucht) (dich|euch)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],le={language:"de",boundary:"word",rules:[...gt,...vt,...Et],allowList:[]};var bt=[{id:"es.profanity.puta",pattern:"(puta|putas|putita*|putada*|putazo*|putear*|puteo|putero*)",category:"profanity",severity:"high"},{id:"es.profanity.puto",pattern:"(puto|putos)",category:"profanity",severity:"high"},{id:"es.profanity.abbreviations",pattern:"(hdp|hdlgp|ctm|ptm)",category:"profanity",severity:"high"},{id:"es.profanity.mierda",pattern:"mierda*",category:"profanity",severity:"medium",replacement:"rayos"},{id:"es.profanity.joder",pattern:"(joder|jodido|jodida|jodidos|jodidas|jodete|jodanse|jodan|jodiendo|jodio)",category:"profanity",severity:"medium",replacement:"caramba"},{id:"es.profanity.cabron",pattern:"(cabron|cabrona|cabrones|cabronas|cabronazo*)",category:"profanity",severity:"high"},{id:"es.profanity.pendejo",pattern:"(pendejo*|pendeja*)",category:"profanity",severity:"high"},{id:"es.profanity.gilipollas",pattern:"(gilipolla*|gilipollez)",category:"profanity",severity:"high"},{id:"es.profanity.chingar",pattern:"(chingar*|chingad*|chingue*|chinguen|chingon*|chinga)",category:"profanity",severity:"high"},{id:"es.profanity.verga",pattern:"(verga|vergas|vergazo*)",category:"profanity",severity:"high"},{id:"es.profanity.culo",pattern:"(culo|culos|culero*|culera*)",category:"profanity",severity:"medium"},{id:"es.profanity.cagar",pattern:"(cagar|cago|cagada*|cagon|cagona|cagando)",category:"profanity",severity:"medium"},{id:"es.profanity.malparido",pattern:"(malparid*|hijueputa*|hijoputa*|hijaputa*)",category:"profanity",severity:"high"},{id:"es.profanity.concha",pattern:"(conchetumare|conchatumadre|conchesumadre|conchasumadre)",category:"profanity",severity:"high"},{id:"es.profanity.carajo",pattern:"carajo",category:"profanity",severity:"low",replacement:"caramba"}],wt=[...["(maricon|maricones|mariconazo|marica|maricas)","(sudaca|sudacas)","(negrata|negratas)","(machorra|machorras)"].map(e=>({id:`es.hate.slur.${e.slice(1).split("|")[0]}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"es.hate.group-violence",pattern:"(judios|musulmanes|cristianos|negros|blancos|gitanos|inmigrantes|migrantes|refugiados|gays|maricones|lesbianas|trans|mujeres|moros|sudacas|indios|indigenas|arabes|africanos) (deberian|deben|merecen|tienen) (que)? (ser)? (morir|arder|exterminados|exterminadas|quemados|quemadas|eliminados|eliminadas|asesinados|asesinadas|colgados|gaseados|ahorcados)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],kt="(idiota*|imbecil*|estupido*|estupida*|tonto|tonta|inutil|basura|escoria|retrasado*|retrasada*|mongolo*|mongolic*|subnormal*|patetico*|patetica*|asqueroso*|asquerosa*|payaso*|perdedor*|fracasado*|fracasada*|pendejo*|pendeja*|cabron*|gilipollas|perra|zorra|puta)",xt=[{id:"es.harassment.insult",pattern:`(eres|sos) (un|una)? (puto|puta|pinche|maldito|maldita|completo|completa|gran|tremendo|tremenda)? ${kt}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"es.harassment.family",pattern:"(concha|chinga|puta) (de)? (tu|su) (madre|hermana|vieja)",category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"es.harassment.self-harm",pattern:"(matate|suicidate|ahorcate)",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"es.harassment.go-die",pattern:"(vete|andate|anda|ve) a (morir|morirte)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"es.harassment.wish-death",pattern:"ojala (que)? te (mueras|murieras|muera)",category:"harassment",severity:"high",confidence:.8,label:"hostility"},{id:"es.harassment.threat",pattern:"te (voy|vamos) a (matar|apunalar|disparar|reventar|partir)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"es.harassment.threat-short",pattern:"te (mato|matare)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"es.harassment.nobody-likes",pattern:"nadie te (quiere|soporta|aguanta|ama)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],de={language:"es",boundary:"word",rules:[...bt,...wt,...xt],allowList:[]};var Tt=[{id:"fr.profanity.merde",pattern:"(merde*|merdique*|emmerd*)",category:"profanity",severity:"medium",replacement:"zut"},{id:"fr.profanity.putain",pattern:"(putain*|ptn)",category:"profanity",severity:"medium",replacement:"zut"},{id:"fr.profanity.pute",pattern:"(pute|putes)",category:"profanity",severity:"high"},{id:"fr.profanity.connard",pattern:"(connard*|connasse*|conasse*|conard*)",category:"profanity",severity:"high"},{id:"fr.profanity.salope",pattern:"(salope*|salaud*|salopard*)",category:"profanity",severity:"high"},{id:"fr.profanity.encule",pattern:"encul*",category:"profanity",severity:"high"},{id:"fr.profanity.niquer",pattern:"(nique|niquer|niquez|niques|niquee)",category:"profanity",severity:"high"},{id:"fr.profanity.couille",pattern:"(couille*|couillon*)",category:"profanity",severity:"medium"},{id:"fr.profanity.enfoire",pattern:"enfoire*",category:"profanity",severity:"high"},{id:"fr.profanity.batard",pattern:"batard*",category:"profanity",severity:"high"},{id:"fr.profanity.branleur",pattern:"(branleur*|branleuse*|branlette*)",category:"profanity",severity:"medium"},{id:"fr.profanity.pouffiasse",pattern:"(pouffiasse*|poufiasse*|petasse*)",category:"profanity",severity:"high"},{id:"fr.profanity.trou-du-cul",pattern:"trou (du|de) cul",category:"profanity",severity:"high"},{id:"fr.profanity.bordel",pattern:"bordel",category:"profanity",severity:"low"},{id:"fr.profanity.chier",pattern:"(chier|chiant|chiante|chiants|chiantes|chiasse)",category:"profanity",severity:"low"}],Ct=[...["(bougnoul*|bougnoule*)","(youpin*|youtre*)","(negre|negres|negresse*)","bamboula*","(tafiole*|tarlouze*|tantouze*)"].map(e=>({id:`fr.hate.slur.${e.replace(/[()*]/g,"").split("|")[0]}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"fr.hate.group-violence",pattern:"(juifs|musulmans|chretiens|noirs|blancs|arabes|immigres|migrants|refugies|gays|homos|lesbiennes|trans|femmes|africains|asiatiques|roms|gitans) (doivent|devraient|meritent) (d|de)? (etre)? (mourir|crever|bruler|extermines|gazes|brules|tues|pendus|eradiques|massacres)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],St="(idiot*|imbecile*|debile*|abruti*|cretin*|con|conne|connard*|connasse*|nul|nulle|minable*|pathetique*|attarde*|mongol|mongole|batard*|salope|ordure*|merde|dechet*|rate|ratee|loser*|bouffon*|clown*|stupide*|chienne|grosse|moche|pute)",At=[{id:"fr.harassment.insult",pattern:`(tu|t|vous) (es|etes) (vraiment|trop|qu)? (un|une)? (sale|gros|grosse|pauvre|petit|petite|vrai|vraie)? ${St}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"fr.harassment.sale",pattern:"(espece|sale) (de)? (con|conne|connard*|connasse*|pute|chienne|batard*|merde|ordure*|race|arabe|noir|juif)",category:"harassment",severity:"high",confidence:.8,label:"insult"},{id:"fr.harassment.family",pattern:"(nique|niquer|baise) (ta|sa|vos|votre) (mere|race|soeur|famille|daronne)",category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"fr.harassment.go-away",pattern:"(va|allez) (te|vous) faire (foutre|enculer|niquer|voir)",category:"harassment",severity:"high",confidence:.8,label:"hostility"},{id:"fr.harassment.shut-up",pattern:"ta gueule",category:"harassment",severity:"low",confidence:.7,label:"hostility"},{id:"fr.harassment.self-harm",pattern:"(va|vas|allez) (te|vous) (pendre|suicider|tuer)",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"fr.harassment.self-harm-imperative",pattern:"(suicide|tue|pends) (toi)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"fr.harassment.go-die",pattern:"(va|vas|allez) (crever|mourir)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"fr.harassment.threat",pattern:"(je|j) (vais|v)? (te|vous|t) (tuer|buter|planter|defoncer|tabasser|egorger|tue|bute|plante|defonce|egorge)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"fr.harassment.nobody-likes",pattern:"personne ne (t|te|vous) (aime|supporte|veut|apprecie)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],he={language:"fr",boundary:"word",rules:[...Tt,...Ct,...At],allowList:[]};var Dt=[{id:"hi.profanity.madarchod",pattern:"(\u092E\u093E\u0926\u0930\u091A\u094B\u0926*|\u092E\u093E\u0926\u0930\u091A\u094C\u0926*|\u092E\u093E\u0926\u0930\u091A\u094B\u0924|\u092E\u093E\u0926\u0930\u091C\u093E\u0924|\u092E\u093E\u0926\u0930\u091C\u093C\u093E\u0924)",category:"profanity",severity:"high"},{id:"hi.profanity.behenchod",pattern:"(\u092C\u0939\u0928\u091A\u094B\u0926*|\u092C\u0939\u0947\u0928\u091A\u094B\u0926*|\u092C\u0939\u093F\u0928\u091A\u094B\u0926*|\u092D\u0947\u0928\u091A\u094B\u0926*|\u092D\u0948\u0928\u091A\u094B\u0926*|\u092C\u0939\u0928\u091A\u094C\u0926*|\u092D\u0948\u0902\u091A\u094B\u0926*)",category:"profanity",severity:"high"},{id:"hi.profanity.betichod",pattern:"(\u092C\u0947\u091F\u0940\u091A\u094B\u0926*|\u092C\u0947\u091F\u093F\u091A\u094B\u0926*)",category:"profanity",severity:"high"},{id:"hi.profanity.chod",pattern:"(\u091A\u094B\u0926*|\u091A\u0941\u0926*)",category:"profanity",severity:"high"},{id:"hi.profanity.chutiya",pattern:"(\u091A\u0942\u0924\u093F\u092F\u093E*|\u091A\u0941\u0924\u093F\u092F\u093E*|\u091A\u0942\u0924\u093F\u092F\u0947*|\u091A\u0941\u0924\u093F\u092F\u0947*|\u091A\u0941\u0924\u094D\u092F\u093E*|\u091A\u0942\u0924\u094D\u092F\u093E*)",category:"profanity",severity:"high"},{id:"hi.profanity.chut",pattern:"(\u091A\u0942\u0924|\u091A\u0941\u0924)",category:"profanity",severity:"high"},{id:"hi.profanity.lund",pattern:"(\u0932\u0902\u0921|\u0932\u0923\u094D\u0921|\u0932\u0928\u094D\u0921|\u0932\u094C\u0921\u093C\u093E|\u0932\u094C\u0921\u093E|\u0932\u094C\u0921\u093C\u0947|\u0932\u094C\u0921\u0947|\u0932\u094B\u0921\u093C\u093E|\u0932\u094B\u0921\u093C\u0947|\u0932\u0935\u0921\u093C\u093E|\u0932\u0935\u0921\u093E|\u0932\u0935\u0921\u093C\u0947|\u0932\u094C\u0921\u093C\u0942|\u0932\u094B\u0921\u093C\u0942|\u0932\u094B\u0921\u0942)",category:"profanity",severity:"high"},{id:"hi.profanity.bhosda",pattern:"(\u092D\u094B\u0938\u0921*|\u092D\u094B\u0938\u0930\u0940*)",category:"profanity",severity:"high"},{id:"hi.profanity.gaandu",pattern:"(\u0917\u093E\u0902\u0921|\u0917\u093E\u0902\u0921\u0942|\u0917\u093E\u0902\u0921\u0941|\u0917\u093E\u0923\u094D\u0921\u0942|\u0917\u093E\u0928\u094D\u0921\u0942|\u0917\u093E\u0923\u094D\u0921|\u0917\u093E\u0928\u094D\u0921|\u0917\u093E\u0902\u0921\u092B\u091F*)",category:"profanity",severity:"medium"},{id:"hi.profanity.harami",pattern:"(\u0939\u0930\u093E\u092E\u0940|\u0939\u0930\u093E\u092E\u091C\u093C\u093E\u0926*|\u0939\u0930\u093E\u092E\u091C\u093E\u0926*|\u0939\u0930\u093E\u092E\u0916\u094B\u0930*|\u0939\u0930\u093E\u092E\u0916\u093C\u094B\u0930*)",category:"profanity",severity:"medium"},{id:"hi.profanity.randi",pattern:"(\u0930\u0902\u0921\u0940|\u0930\u0923\u094D\u0921\u0940|\u0930\u0928\u094D\u0921\u0940|\u0930\u0902\u0921\u093F\u092F\u094B\u0902|\u0930\u0902\u0921\u093F\u092F\u093E|\u0930\u0902\u0921\u0940\u092C\u093E\u091C*|\u0930\u0902\u0921\u0935\u093E|\u0930\u093E\u0902\u0921)",category:"profanity",severity:"high"},{id:"hi.profanity.bhadwa",pattern:"(\u092D\u0921\u093C\u0935\u093E|\u092D\u0921\u093C\u0935\u0947|\u092D\u0921\u093C\u0935\u0940|\u092D\u0921\u0935\u093E|\u092D\u0921\u0935\u0947|\u092D\u0921\u0935\u0940|\u092D\u0921\u093C\u0941\u0906|\u092D\u0921\u0941\u0906)",category:"profanity",severity:"high"},{id:"hi.profanity.jhaat",pattern:"(\u091D\u093E\u091F|\u091D\u093E\u0902\u091F|\u091D\u093E\u091F\u0942|\u091D\u093E\u0902\u091F\u0942)",category:"profanity",severity:"medium"},{id:"hi.profanity.kutiya",pattern:"(\u0915\u0941\u0924\u093F\u092F\u093E|\u0915\u0941\u0924\u094D\u0924\u093F\u092F\u093E)",category:"profanity",severity:"high"}],Fe="(\u092E\u0941\u0938\u0932\u092E\u093E\u0928\u094B\u0902|\u092E\u0941\u0938\u0932\u092E\u093E\u0928|\u092E\u0941\u0938\u0932\u092E\u093E\u0928\u094B|\u0939\u093F\u0902\u0926\u0941\u0913\u0902|\u0939\u093F\u0928\u094D\u0926\u0941\u0913\u0902|\u0939\u093F\u0902\u0926\u0941\u0913|\u0938\u093F\u0916\u094B\u0902|\u0908\u0938\u093E\u0907\u092F\u094B\u0902|\u0926\u0932\u093F\u0924\u094B\u0902|\u0915\u091F\u0941\u0913\u0902|\u092E\u0941\u0932\u094D\u0932\u094B\u0902|\u092C\u093F\u0939\u093E\u0930\u093F\u092F\u094B\u0902|\u0914\u0930\u0924\u094B\u0902)",Rt=[{id:"hi.hate.slur.katua",pattern:"(\u0915\u091F\u0941\u0906|\u0915\u091F\u0941\u090F|\u0915\u091F\u0941\u0913\u0902)",category:"hate",severity:"critical",confidence:.9,label:"slur"},{id:"hi.hate.group-violence",pattern:`${Fe} (\u0915\u094B)? (\u092E\u093E\u0930|\u0915\u093E\u091F|\u091C\u0932\u093E|\u0916\u0924\u094D\u092E|\u0916\u093C\u0924\u094D\u092E|\u092E\u093F\u091F\u093E|\u0938\u093E\u092B) (\u0915\u0930)? (\u0926\u094B|\u0921\u093E\u0932\u094B|\u0926\u0947\u0928\u093E)`,category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"},{id:"hi.hate.group-violence-imperative",pattern:`${Fe} (\u0915\u094B)? (\u092E\u093E\u0930\u094B|\u0915\u093E\u091F\u094B|\u091C\u0932\u093E\u0913|\u092E\u093F\u091F\u093E\u0913)`,category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],Be="(\u0924\u0942|\u0924\u0941\u092E|\u0906\u092A)",Ie="(\u090F\u0915)? (\u092C\u0939\u0941\u0924|\u092A\u0942\u0930\u093E|\u092A\u0942\u0930\u0940|\u0928\u093F\u0930\u093E|\u0938\u092C\u0938\u0947|\u090F\u0915\u0926\u092E)? (\u092C\u0921\u093C\u093E|\u092C\u0921\u093C\u0940|\u092C\u0921\u093E|\u092C\u0921\u0940)?",Mt="(\u0915\u0941\u0924\u094D\u0924\u093E|\u0915\u0941\u0924\u094D\u0924\u0947|\u0915\u0941\u0924\u094D\u0924\u0940|\u0917\u0927\u093E|\u0917\u0927\u0947|\u0909\u0932\u094D\u0932\u0942|\u0938\u0942\u0905\u0930|\u0938\u0941\u0905\u0930)",Lt="(\u092C\u0947\u0935\u0915\u0942\u092B\u093C|\u092C\u0947\u0935\u0915\u0942\u092B|\u092E\u0942\u0930\u094D\u0916|\u092E\u0942\u0930\u0916|\u0915\u092E\u0940\u0928\u093E|\u0915\u092E\u0940\u0928\u0947|\u0915\u092E\u0940\u0928\u0940|\u0918\u091F\u093F\u092F\u093E|\u0928\u093E\u0932\u093E\u092F\u0915|\u0928\u093F\u0915\u092E\u094D\u092E\u093E|\u0928\u093F\u0915\u092E\u094D\u092E\u0947|\u0928\u093F\u0915\u092E\u094D\u092E\u0940|\u0939\u0930\u093E\u092E\u0940|\u091C\u093E\u0939\u093F\u0932|\u0917\u0902\u0935\u093E\u0930|\u091A\u0942\u0924\u093F\u092F\u093E|\u091A\u0941\u0924\u093F\u092F\u093E|\u0928\u0940\u091A|\u0939\u0930\u093E\u092E\u0916\u094B\u0930|\u0915\u0941\u0924\u093F\u092F\u093E)",Ft=[{id:"hi.harassment.family-insult",pattern:"(\u0924\u0947\u0930\u0940|\u0924\u0947\u0930\u0947|\u0924\u0947\u0930\u093E|\u0924\u0941\u092E\u094D\u0939\u093E\u0930\u0940|\u0924\u0941\u092E\u094D\u0939\u093E\u0930\u0947|\u0909\u0938\u0915\u0940|\u0909\u0938\u0915\u0947|\u0907\u0938\u0915\u0940) (\u092E\u093E\u0902|\u092E\u093E|\u092E\u093E\u0908|\u092E\u0948\u092F\u093E|\u092C\u0939\u0928|\u092C\u0939\u093F\u0928|\u092C\u0947\u0939\u0928|\u092C\u0947\u091F\u0940) (\u0915\u093E|\u0915\u0940|\u0915\u0947|\u0915\u094B) (\u092D\u094B\u0938\u0921\u093C\u093E|\u092D\u094B\u0938\u0921\u093E|\u092D\u094B\u0938\u0921\u093C\u0940|\u092D\u094B\u0938\u0921\u0940|\u091A\u0942\u0924|\u091A\u0941\u0924|\u0932\u0902\u0921|\u0932\u094C\u0921\u093C\u093E|\u0932\u094C\u0921\u093E)",category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"hi.harassment.family-abuse",pattern:"(\u092E\u093E\u0902|\u092C\u0939\u0928|\u092C\u0939\u093F\u0928|\u092C\u0947\u091F\u0940) (\u0915\u094B|\u0915\u0940)? (\u091A\u094B\u0926*|\u091A\u0941\u0926*)",category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"hi.harassment.insult",pattern:`${Be} ${Ie} ${Lt}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"hi.harassment.insult-animal",pattern:`${Be} ${Ie} ${Mt} (\u0939\u0948|\u0939\u094B|\u0939\u0948\u0902)`,category:"harassment",severity:"medium",confidence:.75,label:"insult"},{id:"hi.harassment.self-harm",pattern:"(\u0916\u0941\u0926\u0915\u0941\u0936\u0940|\u0916\u093C\u0941\u0926\u0915\u0941\u0936\u0940|\u0906\u0924\u094D\u092E\u0939\u0924\u094D\u092F\u093E) (\u0915\u0930|\u0915\u0930\u094B) (\u0932\u0947|\u0932\u094B)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"hi.harassment.self-harm-joined",pattern:"(\u0916\u0941\u0926\u0915\u0941\u0936\u0940|\u0916\u093C\u0941\u0926\u0915\u0941\u0936\u0940|\u0906\u0924\u094D\u092E\u0939\u0924\u094D\u092F\u093E) (\u0915\u0930\u0932\u0947|\u0915\u0930\u0932\u094B)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"hi.harassment.self-harm-hang",pattern:"(\u092B\u093E\u0902\u0938\u0940|\u092B\u0902\u0926\u093E) (\u0932\u0917\u093E|\u0932\u0917\u093E\u0915\u0930) (\u0932\u0947|\u0932\u094B|\u092E\u0930|\u092E\u0930\u094B)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"hi.harassment.go-die",pattern:"(\u092E\u0930|\u0921\u0942\u092C) (\u091C\u093E|\u091C\u093E\u0913|\u092E\u0930|\u092E\u0930\u094B)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"hi.harassment.threat",pattern:"(\u0924\u0941\u091D\u0947|\u0924\u0941\u092E\u094D\u0939\u0947\u0902|\u0924\u0941\u092E\u094D\u0939\u0947|\u0924\u0941\u092E\u0915\u094B|\u0924\u0941\u091D\u0915\u094B) (\u091C\u093E\u0928)? (\u0938\u0947)? (\u092E\u093E\u0930|\u0915\u093E\u091F|\u0916\u0924\u094D\u092E|\u0916\u093C\u0924\u094D\u092E|\u091C\u0932\u093E) (\u0915\u0930)? (\u0926\u0942\u0902\u0917\u093E|\u0926\u0942\u0902\u0917\u0940|\u0921\u093E\u0932\u0942\u0902\u0917\u093E|\u0921\u093E\u0932\u0942\u0902\u0917\u0940|\u0926\u0947\u0902\u0917\u0947|\u0921\u093E\u0932\u0947\u0902\u0917\u0947)",category:"harassment",severity:"high",confidence:.7,label:"threat"}],Bt=[{id:"hi.harassment.home-invasion",pattern:"\u0918\u0930 (\u092E\u0947\u0902|\u092E\u0947|\u092A\u0947|\u092A\u0930|\u0924\u0915)? (\u0918\u0941\u0938|\u0918\u0941\u0938\u0915\u0947|\u0918\u0941\u0938\u0915\u0930|\u0906\u0915\u0947|\u0906\u0915\u0930|\u0906) (\u0915\u0947|\u0915\u0930)? (\u092E\u093E\u0930*|\u091A\u094B\u0926*|\u0915\u093E\u091F*|\u0924\u094B\u0921\u093C*|\u0924\u094B\u0921*|\u092A\u0940\u091F*|\u091C\u0932\u093E*|\u0909\u0920\u0935\u093E*|\u092B\u094B\u0921\u093C*)",category:"harassment",severity:"high",confidence:.85,label:"threat"},{id:"hi.harassment.threat-short",pattern:"(\u0924\u0941\u091D\u0947|\u0924\u0941\u092E\u094D\u0939\u0947\u0902|\u0924\u0941\u092E\u094D\u0939\u0947|\u0924\u0941\u092E\u0915\u094B|\u0924\u0941\u091D\u0915\u094B|\u0924\u0947\u0930\u0947) (\u092E\u093E\u0930\u0942\u0902\u0917\u093E|\u092E\u093E\u0930\u0941\u0902\u0917\u093E|\u0915\u093E\u091F\u0942\u0902\u0917\u093E|\u092A\u0940\u091F\u0942\u0902\u0917\u093E|\u0924\u094B\u0921\u093C\u0942\u0902\u0917\u093E|\u091A\u094B\u0926\u0942\u0902\u0917\u093E|\u091A\u094B\u0926\u0941\u0902\u0917\u093E|\u091C\u0932\u093E\u090A\u0902\u0917\u093E)",category:"harassment",severity:"high",confidence:.8,label:"threat"},{id:"hi.harassment.wont-spare",pattern:"(\u0924\u0941\u091D\u0947|\u0924\u0941\u092E\u094D\u0939\u0947\u0902|\u0924\u0941\u092E\u094D\u0939\u0947|\u0924\u0941\u092E\u0915\u094B|\u0924\u0941\u091D\u0915\u094B) (\u0924\u094B)? (\u0928\u0939\u0940\u0902|\u0928\u0939\u0940) (\u091B\u094B\u0921\u093C\u0942\u0902\u0917\u093E|\u091B\u094B\u0921\u0942\u0902\u0917\u093E|\u091B\u094B\u0921\u093C\u0947\u0902\u0917\u0947|\u091B\u094B\u0921\u0947\u0902\u0917\u0947|\u092C\u0916\u094D\u0936\u0942\u0902\u0917\u093E|\u092C\u091A\u0947\u0917\u093E)",category:"harassment",severity:"high",confidence:.75,label:"threat"},{id:"hi.harassment.abusive-address",pattern:"(\u0905\u092C\u0947|\u0913\u090F|\u0913\u092F\u0947) (\u0938\u093E\u0932\u0947|\u0938\u093E\u0932\u093E|\u0938\u093E\u0932\u0940|\u0915\u0941\u0924\u094D\u0924\u0947|\u0915\u092E\u0940\u0928\u0947|\u0939\u0930\u093E\u092E\u0940)",category:"harassment",severity:"medium",confidence:.75,label:"insult"},{id:"hi.harassment.saale-insult",pattern:"(\u0938\u093E\u0932\u0947|\u0938\u093E\u0932\u093E|\u0938\u093E\u0932\u0940) (\u0915\u0941\u0924\u094D\u0924\u0947|\u0915\u0941\u0924\u094D\u0924\u093E|\u0915\u092E\u0940\u0928\u0947|\u0915\u092E\u0940\u0928\u093E|\u0939\u0930\u093E\u092E\u0940|\u091A\u0942\u0924\u093F\u092F\u0947|\u091A\u0942\u0924\u093F\u092F\u093E|\u0917\u093E\u0902\u0921\u0942|\u092D\u0921\u093C\u0935\u0947|\u0938\u0942\u0905\u0930|\u0909\u0932\u094D\u0932\u0942)",category:"harassment",severity:"medium",confidence:.8,label:"insult"}],It=[{id:"hi.harassment.gaali",pattern:"(\u092D\u094B\u0938\u0921*|\u092D\u094B\u0938\u0930\u0940*|\u0939\u0930\u093E\u092E\u0940|\u0939\u0930\u093E\u092E\u091C\u093C\u093E\u0926*|\u0939\u0930\u093E\u092E\u091C\u093E\u0926*|\u0939\u0930\u093E\u092E\u0916\u094B\u0930*|\u0939\u0930\u093E\u092E\u0916\u093C\u094B\u0930*|\u0932\u094B\u0921\u0942|\u0932\u094C\u0921\u093C\u0942|\u0932\u094B\u0921\u093C\u0942)",category:"harassment",severity:"high",confidence:.75,label:"insult"}],jt=[{id:"hi.sexual.porn",pattern:"(\u092A\u094B\u0930\u094D\u0928|\u092A\u0949\u0930\u094D\u0928)",category:"sexual",severity:"medium",confidence:.85,label:"sexual-content"},{id:"hi.sexual.nudes-request",pattern:"(\u0928\u0902\u0917\u0940|\u0928\u0902\u0917\u093E) (\u092B\u094B\u091F\u094B|\u092B\u093C\u094B\u091F\u094B|\u0924\u0938\u094D\u0935\u0940\u0930|\u0935\u0940\u0921\u093F\u092F\u094B|\u092A\u093F\u0915) (\u092D\u0947\u091C*|\u0926\u093F\u0916\u093E*)",category:"sexual",severity:"high",confidence:.85,label:"solicitation"}],pe={language:"hi",boundary:"word",rules:[...Dt,...Rt,...Ft,...Bt,...It,...jt],allowList:[]};var Ot=[{id:"pt.profanity.porra",pattern:"(porra|porras)",category:"profanity",severity:"medium"},{id:"pt.profanity.caralho",pattern:"(caralho*|caraio|krl|crl)",category:"profanity",severity:"high"},{id:"pt.profanity.foder",pattern:"(foda|fodas|fodase|fodasse|foder|fodido*|fodida*|fodendo|fode|fodeu|fodam)",category:"profanity",severity:"high"},{id:"pt.profanity.puta",pattern:"(puta|putas|putaria*|putinha*)",category:"profanity",severity:"high"},{id:"pt.profanity.puto",pattern:"(puto|putos)",category:"profanity",severity:"medium"},{id:"pt.profanity.abbreviations",pattern:"(fdp|vtnc|vsf|vsfd|pqp|tnc)",category:"profanity",severity:"high"},{id:"pt.profanity.merda",pattern:"merda*",category:"profanity",severity:"medium"},{id:"pt.profanity.buceta",pattern:"(buceta*|boceta*|xoxota*|xereca*)",category:"profanity",severity:"high"},{id:"pt.profanity.cu",pattern:"(no|do|teu|seu|meu|nosso) cu",category:"profanity",severity:"medium"},{id:"pt.profanity.cuzao",pattern:"(cuzao|cuzinho|cuzona)",category:"profanity",severity:"high"},{id:"pt.profanity.arrombado",pattern:"(arrombad*)",category:"profanity",severity:"high"},{id:"pt.profanity.piroca",pattern:"(piroca*|pirocudo*)",category:"profanity",severity:"high"},{id:"pt.profanity.cacete",pattern:"cacete*",category:"profanity",severity:"medium"},{id:"pt.profanity.bosta",pattern:"bosta*",category:"profanity",severity:"medium"},{id:"pt.profanity.vadia",pattern:"(vadia|vadias)",category:"profanity",severity:"high"},{id:"pt.profanity.desgracado",pattern:"(desgracad*)",category:"profanity",severity:"medium"}],Nt=[...["(viado|viados|viadinho*|viadao)","(sapatao|sapatoes|sapatona*)","(traveco|travecos)"].map(e=>({id:`pt.hate.slur.${e.replace(/[()*]/g,"").split("|")[0]}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"pt.hate.group-violence",pattern:"(judeus|muculmanos|cristaos|negros|pretos|brancos|gays|viados|lesbicas|trans|mulheres|imigrantes|nordestinos|indios|refugiados|ciganos|baianos|africanos|arabes) (deveriam|devem|merecem|tem|teem) (que|de)? (ser)? (morrer|queimar|exterminados|exterminadas|mortos|mortas|queimados|queimadas|eliminados|eliminadas|enforcados|fuzilados)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],_t="(idiota*|imbecil*|burro|burra|estupido*|estupida*|otario*|otaria*|babaca*|lixo|inutil|retardado*|retardada*|mongoloide*|debil|corno*|vagabundo*|vagabunda*|nojento*|nojenta*|patetico*|patetica*|fracassado*|fracassada*|palhaco*|escroto*|escrota*|merda|arrombado*|arrombada*|desgracado*|desgracada*|vadia|puta|piranha|cachorra)",$t=[{id:"pt.harassment.insult",pattern:`(voce|vc|tu) (e|eh|es)? (um|uma)? (grande|completo|completa|puta|baita|bela|belo|maior)? ${_t}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"pt.harassment.self-harm",pattern:"(vai|va) se (matar|enforcar|suicidar)",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"pt.harassment.self-harm-imperative",pattern:"(mate|enforque|suicide) se",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"pt.harassment.go-die",pattern:"(morre|morra|morram) (logo|desgracado|desgracada|lixo|seu|sua|maldito|maldita)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"pt.harassment.threat",pattern:"(vou|vamos|irei) te (matar|esfaquear|furar|apagar|quebrar|encher)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"pt.harassment.threat-short",pattern:"te (mato|matarei)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"pt.harassment.nobody-likes",pattern:"ninguem (gosta|liga|quer|suporta|aguenta) (de)? (voce|vc|ti)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],fe={language:"pt",boundary:"word",rules:[...Ot,...Nt,...$t],allowList:[]};var me={allow:0,mask:1,suggest:2,warn:3,block:4},W={low:0,medium:1,high:2,critical:3},P=["profanity","hate","harassment","sexual","custom"];var zt={direct:1,quoted:.5,mention:.4},Pt=new Set(["word","words","term","slur","phrase","say","said","saying","says","spell","spelled","called","calling","means","meaning","define","definition","using","use"]),qt=[['"','"'],["\u201C","\u201D"],["\u2018","\u2019"],["\xAB","\xBB"],["\u300C","\u300D"]];function Ht(e){let t=[];for(let[a,n]of qt){let r=0;for(;r<e.length;){let i=e.indexOf(a,r);if(i===-1)break;let o=e.indexOf(n,i+1);if(o===-1)break;let c=e.indexOf(`
2
- `,i);if(c!==-1&&c<o){r=c+1;continue}t.push([i+1,o]),r=o+1}}return t}function Ut(e,t,a){if(e.tokenIndex!==void 0)for(let n=1;n<=2;n++){let r=t[e.tokenIndex-n];if(r&&Pt.has(r.value))return"mention"}for(let[n,r]of a)if(e.start>=n&&e.end<=r)return"quoted";return"direct"}var Kt=class{constructor(e){this.onListenerError=e,this.handlers=new Map}on(e,t){let a=this.handlers.get(e);return a||(a=new Set,this.handlers.set(e,a)),a.add(t),()=>{a.delete(t)}}emit(e,t){let a=this.handlers.get(e);if(a)for(let n of[...a])try{n(t)}catch(r){this.onListenerError&&this.onListenerError(r,e)}}clear(){this.handlers.clear()}},Vt=new RegExp("^[\u200B-\u200D\u2060\uFEFF\xAD\u180E]$"),Wt=/\p{M}/u;function Gt(e){let t=e.codePointAt(0);return t>=2304&&t<=3583}var Yt={\u00DF:"ss","\u0901":"\u0902"},Xt={\u0430:"a",\u0432:"b",\u0435:"e",\u0451:"e",\u043A:"k",\u043C:"m",\u043D:"h",\u043E:"o",\u0440:"p",\u0441:"c",\u0442:"t",\u0443:"y",\u0445:"x",\u0455:"s",\u0456:"i",\u0457:"i",\u0458:"j",\u04BB:"h","\u0501":"d","\u051B":"q","\u051D":"w",\u04AF:"y",\u03B1:"a",\u03B2:"b",\u03B5:"e",\u03B7:"n",\u03B9:"i",\u03BA:"k",\u03BD:"v",\u03BF:"o",\u03C1:"p",\u03C4:"t",\u03C5:"u",\u03C7:"x",\u03C9:"w"},qe={"@":"a",4:"a",$:"s",5:"s",0:"o",1:"i","!":"i","|":"i",3:"e","\u20AC":"e",7:"t"},ye=new Map;function He(e){let t=ye.get(e);if(t!==void 0)return t;let a;if(Vt.test(e))a="";else{a="";for(let n of e.toLowerCase().normalize("NFKD")){if(Wt.test(n)&&!Gt(n))continue;let r=n.toLowerCase();a+=Yt[r]??Xt[r]??r}}return ye.size<1e4&&ye.set(e,a),a}function Ue(e){let t="",a=[],n=[],r=0;for(;r<e.length;){let i=e.codePointAt(r),o=String.fromCodePoint(i),c=r+o.length,s=He(o);for(let l=0;l<s.length;l++)a.push(r),n.push(c);t+=s,r=c}return{text:t,starts:a,ends:n}}function G(e){return Ke(Ue(e).text)}var Qt=/\p{L}/u;function Ke(e){if(!Qt.test(e))return e;let t="";for(let a of e)t+=qe[a]??a;return t}function Ve(e){let t=[];for(let a of e){let n=t[t.length-1];n&&n[0]===a?n[1]++:t.push([a,1])}return t}function Zt(e){let t="";for(let[a]of e)t+=a;return t}function ke(e,t){let a=t.runs;if(t.prefix?e.length<a.length:e.length!==a.length)return!1;for(let n=0;n<a.length;n++){let r=e[n],i=a[n];if(r[0]!==i[0]||r[1]<i[1])return!1}return!0}var N=class extends Error{constructor(){super(...arguments),this.name="PatternError"}};function Jt(e,t){let a=e.endsWith("*"),n=G(a?e.slice(0,-1):e);if(!n||/\s/.test(n))throw new N(`Invalid token "${e}" in pattern "${t}"`);let r=Ve(n);return{value:n,prefix:a,runs:r,key:Zt(r)}}function ea(e){let t=e.trim().split(/\s+/).filter(Boolean);if(t.length===0)throw new N("Pattern must not be empty");return t.map((a,n)=>{let r=a,i=r.endsWith("?");if(i&&(r=r.slice(0,-1)),i&&n===0)throw new N(`First token cannot be optional in "${e}"`);if(r.startsWith("(")){if(!r.endsWith(")"))throw new N(`Unclosed group "${a}" in "${e}"`);r=r.slice(1,-1)}return{alternatives:r.split("|").map(c=>Jt(c,e)),optional:i}})}var We={custom:40,hate:30,harassment:20,sexual:15,profanity:10},ta=new Set(["profanity","hate","harassment","sexual","custom"]),aa=new Set(["low","medium","high","critical"]);function na(e,t="word"){if(!e||typeof e.id!="string"||e.id.length===0)throw new TypeError("Rule requires a non-empty id");if(typeof e.pattern!="string")throw new TypeError(`Rule "${e.id}" requires a pattern`);if(!ta.has(e.category))throw new TypeError(`Rule "${e.id}" has unknown category "${String(e.category)}"`);if(e.severity!==void 0&&!aa.has(e.severity))throw new TypeError(`Rule "${e.id}" has unknown severity "${String(e.severity)}"`);let a=e.confidence??1;if(!(a>=0&&a<=1))throw new RangeError(`Rule "${e.id}" confidence must be within [0, 1]`);let n;try{n=ea(e.pattern)}catch(r){throw r instanceof N?new N(`Rule "${e.id}": ${r.message}`):r}if(t==="substring"&&n.length!==1)throw new N(`Rule "${e.id}": substring packs support single-token patterns only`);return{id:e.id,category:e.category,severity:e.severity??"medium",confidence:a,priority:e.priority??We[e.category],replacement:e.replacement,label:e.label,boundary:t,elements:n}}var ra=class{constructor(e){this.exact=new Map,this.prefix=new Map,this.substring=[];for(let t of e){if(t.boundary==="substring"){this.substring.push(t);continue}for(let a of t.elements[0].alternatives){let n=a.prefix?this.prefix:this.exact,r=a.prefix?a.key[0]:a.key,i=n.get(r);i?i.push({rule:t,alt:a}):n.set(r,[{rule:t,alt:a}])}}}candidates(e,t){let a=[];for(let n of this.exact.get(t)??[])ke(e,n.alt)&&a.push(n);for(let n of this.prefix.get(t[0]??"")??[])ke(e,n.alt)&&a.push(n);return a}get substringRules(){return this.substring}};function je(e,t){let a=Ve(e.value),n="";for(let[r]of a)n+=r;return{runs:a,key:n,blocked:e.masked||t.has(e.value)}}function ia(e,t){return t.blocked?!1:e.alternatives.some(a=>ke(t.runs,a))}function xe(e,t,a,n){if(t===e.length)return n-1;let r=e[t],i=-1;return n<a.length&&ia(r,a[n])&&(i=xe(e,t+1,a,n+1)),r.optional&&(i=Math.max(i,xe(e,t+1,a,n))),i}function oa(e,t){let{tokens:a,spaced:n,allowList:r,normalized:i}=t,o=a.map(m=>je(m,r)),c=[],s=new Set,l=m=>{let b=`${m.rule.id}:${m.start}:${m.end}`;s.has(b)||(s.add(b),c.push(m))};for(let m=0;m<a.length;m++){let b=o[m];if(b.blocked)continue;let x=new Set;for(let{rule:C}of e.candidates(b.runs,b.key)){if(x.has(C.id))continue;x.add(C.id);let I=xe(C.elements,1,o,m+1);I<m||l({start:a[m].start,end:a[I].end,rule:C,confidence:C.confidence,tokenIndex:m})}}for(let m of n){let b=je(m,r);if(!b.blocked)for(let{rule:x}of e.candidates(b.runs,b.key))x.elements.length===1&&l({start:m.start,end:m.end,rule:x,confidence:x.confidence,tokenIndex:m.firstIndex})}let E=i.text;for(let m of e.substringRules)for(let b of m.elements[0].alternatives)for(let x=E.indexOf(b.value);x!==-1;x=E.indexOf(b.value,x+1)){let C=x+b.value.length;l({start:i.starts[x],end:i.ends[C-1],rule:m,confidence:m.confidence})}return c}var ua=new Set(["allow","mask","suggest","warn","block"]);function Te(e){if(!ua.has(e))throw new TypeError(`Unknown moderation action "${String(e)}"`)}function ge(e,t){let a=new Set(t),n=(r,i)=>({enabled:a.has(r),...i});return{profanity:n("profanity",{action:e,minConfidence:0,minSeverity:"medium"}),custom:n("custom",{action:e,minConfidence:0,minSeverity:"low"}),hate:n("hate",{action:e,minConfidence:.6,minSeverity:"low"}),harassment:n("harassment",{action:e==="mask"?"warn":e,minConfidence:.6,minSeverity:"low"}),sexual:n("sexual",{action:e==="mask"?"warn":e,minConfidence:.6,minSeverity:"low"})}}function ve(e,t){let a={...e};if(!t)return a;for(let n of P){let r=t[n];if(r){if(r.action!==void 0&&Te(r.action),r.minConfidence!==void 0&&!(r.minConfidence>=0&&r.minConfidence<=1))throw new RangeError(`minConfidence for "${n}" must be within [0, 1]`);if(r.minSeverity!==void 0&&!(r.minSeverity in W))throw new TypeError(`Unknown severity "${String(r.minSeverity)}"`);a[n]={...a[n],...sa(r)}}}return a}function sa(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function ca(e,t,a){return!e.enabled||W[t]<W[e.minSeverity]?{keep:!1,action:"allow",requiresReview:!1}:a<e.minConfidence?{keep:!0,action:"allow",requiresReview:!0}:{keep:!0,action:e.action,requiresReview:!1}}function la(e){let t="allow";for(let a of e)me[a]>me[t]&&(t=a);return t}function da(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function ha(e,t={}){let a=Math.max(0,t.debounceMs??0),n=0,r,i,o,c=()=>{n++,i!==void 0&&clearTimeout(i),i=void 0,o?.(void 0),o=void 0,r?.abort(),r=void 0};return{moderate(s){c();let l=n;return new Promise((E,m)=>{o=E;let b=()=>{i=void 0;let x=new AbortController;r=x,e(s,{signal:x.signal}).then(C=>{l===n&&(o=void 0,r=void 0,E(C))},C=>{l===n&&(o=void 0,r=void 0,da(C)?E(void 0):m(C))})};a>0?i=setTimeout(b,a):b()})},cancel:c}}var Oe=new Set(["*","!","|"]),pa=new Set([" ",".","-","_"]),Ne=new Map;function fa(e){let t=Ne.get(e);if(!t){let a=e.replace(/[\\\]^-]/g,"\\$&");t=new RegExp(`[\\p{L}\\p{M}\\p{N}@$!|*\u20AC${a}]+`,"gu"),Ne.set(e,t)}return t}function ma(e,t="*"){let{text:a,starts:n,ends:r}=e,i=[],o=fa(t);o.lastIndex=0;for(let c=o.exec(a);c!==null;c=o.exec(a)){let s=c.index,l=c.index+c[0].length;for(;s<l&&Oe.has(a[s]);)s++;for(;l>s&&Oe.has(a[l-1]);)l--;if(s===l)continue;let E=a.slice(s,l);i.push({start:n[s],end:r[l-1],nStart:s,nEnd:l,value:Ke(E),masked:E.includes(t),firstIndex:i.length})}return i}function ya(e,t){let a=[],n=0;for(;n<e.length;){let r=n;for(;r+1<e.length&&e[r].value.length===1&&e[r+1].value.length===1&&e[r+1].nStart-e[r].nEnd===1&&pa.has(t[e[r].nEnd]);)r++;if(r-n+1>=3){let i=e.slice(n,r+1);a.push({start:i[0].start,end:i[i.length-1].end,nStart:i[0].nStart,nEnd:i[i.length-1].nEnd,value:i.map(o=>o.value).join(""),masked:i.some(o=>o.masked),firstIndex:n}),n=r+1}else n++}return a}var ga=new RegExp("[\\p{L}\\p{N}@$!|\u20AC]","u"),va=/\p{M}/u,Ea=new Set(["a","e","i","o","u"]);function ba(e){return ga.test(e)}function wa(e){let t=[];for(let a of e)va.test(a)&&t.length>0?t[t.length-1]+=a:t.push(a);return t}function _e(e,t="vowels",a="*"){if(typeof t=="function")return t(e);let n=wa(e),r=n.map((s,l)=>ba(Array.from(s)[0])?l:-1).filter(s=>s>=0);if(r.length===0)return e;let i=n.slice(),o=r[0],c=r[r.length-1];if(t==="full"){for(let s of r)i[s]=a;return i.join("")}if(t==="vowels"){let s=0;for(let l of r){if(l===o)continue;let E=He(Array.from(n[l])[0]);Ea.has(qe[E]??E)&&(i[l]=a,l!==c&&s++)}if(s>0)return i.join("");for(let l of r)i[l]=n[l]}for(let s of r)s!==o&&(s===c&&r.length>2||(i[s]=a));return i.join("")}function ka(e,t){let a=e.replace(/[^\p{L}]/gu,"");if(a.length>1&&a===a.toUpperCase()&&a!==a.toLowerCase())return t.toUpperCase();let n=a[0];return n&&n!==n.toLowerCase()?t.charAt(0).toUpperCase()+t.slice(1):t}function q(e,t){let a=[...t].sort((i,o)=>i.start-o.start);for(let i=1;i<a.length;i++)if(a[i].start<a[i-1].end)throw new RangeError("Edits must not overlap");let n="",r=0;for(let i of a)n+=e.slice(r,i.start)+i.replacement,r=i.end;return n+=e.slice(r),{text:n,mapping:xa(a,e.length,n.length)}}function xa(e,t,a){let n=Object.freeze(e.map(i=>Object.freeze({...i}))),r=(i,o)=>Math.min(Math.max(0,Math.trunc(i)),o);return{edits:n,toTransformed(i){let o=r(i,t),c=0;for(let s of n){if(o<=s.start)return o+c;if(o<s.end)return s.start+c+Math.min(o-s.start,s.replacement.length);c+=s.replacement.length-(s.end-s.start)}return o+c},toOriginal(i){let o=r(i,a),c=0;for(let s of n){let l=s.start+c,E=l+s.replacement.length;if(o<=l)return o-c;if(o<E)return s.start+Math.min(o-l,s.end-s.start);c+=s.replacement.length-(s.end-s.start)}return o-c}}}var Ee={en:ue,"hi-latn":ce,hi:pe,es:de,fr:he,de:le,pt:fe},$e={en:["en","hi-latn"],hi:["hi","hi-latn"]};function Ta(e,t){let a=e.toLowerCase();return(t??(Ee[a]&&!$e[a]?[a]:$e[a.split("-")[0]]??[e])).map(r=>{let i=r.toLowerCase(),o=Ee[i]??Ee[i.split("-")[0]];if(!o)throw new Error(`No built-in dictionary pack for language "${r}". Pass one via the \`packs\` option.`);return o})}function be(e){return e?.reason!==void 0?e.reason:new DOMException("The operation was aborted.","AbortError")}function we(e){return Math.round(e*1e4)/1e4}function ze(e){return Math.min(1,Math.max(0,e))}var Pe=new Set(P);function Y(e={}){let t=e.mode??"mask";Te(t);let a=e.language??"en",n=e.categories??P;for(let u of n)if(!Pe.has(u))throw new TypeError(`Unknown category "${String(u)}"`);let r=e.maskChar??"*";if(Array.from(r).length!==1||/[\p{L}\p{N}\s]/u.test(r))throw new TypeError("maskChar must be a single non-letter, non-digit, non-space character");let i=e.maskStyle??"vowels",o=e.detectSpacedLetters??!0,c=e.classifiers??[],s=e.classifierTimeoutMs??3e3,l=new Kt((u,h)=>{h!=="error"&&l.emit("error",{error:u})});e.onModerated&&l.on("moderated",e.onModerated),e.onViolation&&l.on("violation",e.onViolation),e.onBlocked&&l.on("blocked",e.onBlocked),e.onWarning&&l.on("warning",e.onWarning),e.onError&&l.on("error",e.onError);let E=new Map,m=new Set,b=null,x=(u,h="word")=>{E.set(u.id,{source:{...u},compiled:na(u,h)}),b=null};for(let u of e.packs??Ta(a,e.languages)){for(let h of u.rules)x(h,u.boundary??"word");for(let h of u.allowList??[])m.add(G(h))}for(let u of e.customWords??[]){let h=u.replace(/[()|?]/g,"").trim().split(/\s+/).join(" ");h&&x({id:`custom.${G(h).replace(/\s+/g,"-")}`,pattern:h,category:"custom",severity:"medium"})}for(let u of e.rules??[])x(u);for(let u of e.allowList??[])m.add(G(u));let C={...e.policy},I=ve(ge(t,n),C),U=()=>(b||(b=new ra(Array.from(E.values(),u=>u.compiled))),b);function _(u){let h=Ue(u),v=ma(h,r),g=o?ya(v,h.text):[],p=oa(U(),{normalized:h,tokens:v,spaced:g,allowList:m});if(p.length===0)return[];let T=Ht(u);return p.map(S=>{let M=Ut(S,v,T);return{...S,context:M,confidence:we(S.confidence*zt[M])}})}function K(u){let h=[...u].sort((g,p)=>p.priority-g.priority||p.end-p.start-(g.end-g.start)||g.start-p.start||(g.ruleId<p.ruleId?-1:g.ruleId>p.ruleId?1:0)),v=[];for(let g of h)v.every(p=>g.end<=p.start||g.start>=p.end)&&v.push(g);return v}function j(u,h,v){let g=[];for(let f of h){let w=f.rule,B=ca(I[w.category],w.severity,f.confidence);if(!B.keep)continue;let O=v&&B.action!=="allow"?v:B.action,V=w.elements.length>1||w.elements.length===0&&/\s/.test(u.slice(f.start,f.end).trim());O==="mask"&&V&&(w.category==="hate"||w.category==="harassment"||w.category==="sexual")&&(O="warn");let d=u.slice(f.start,f.end),y={start:f.start,end:f.end,text:d,category:w.category,ruleId:w.id,severity:w.severity,confidence:f.confidence,priority:w.priority,context:f.context,action:O,requiresReview:B.requiresReview,applied:!1};w.replacement!==void 0?y.suggestedReplacement=ka(d,w.replacement):O==="suggest"&&(y.suggestedReplacement=_e(d,i,r)),w.label!==void 0&&(y.label=w.label),f.source!==void 0&&(y.source=f.source),g.push(y)}g.sort((f,w)=>f.start-w.start||f.end-w.end||w.priority-f.priority);let p=K(g.filter(f=>f.action==="mask")),T=K(g.filter(f=>f.action==="mask"||f.action==="suggest")),S=f=>({start:f.start,end:f.end,replacement:f.action==="suggest"&&f.suggestedReplacement!==void 0?f.suggestedReplacement:_e(f.text,i,r)});for(let f of p)f.applied=!0;for(let f of T)f.action==="suggest"&&(f.applied=!0);let M=q(u,p.map(S)),F=q(u,T.map(S)),L=la(g.map(f=>f.action));return{originalText:u,text:M.text,suggestedText:F.text,matches:g,allowed:L!=="block",action:L,requiresReview:g.some(f=>f.requiresReview),mapping:M.mapping}}function $(u){l.emit("moderated",u),u.matches.some(h=>h.action!=="allow")&&l.emit("violation",u),u.action==="block"&&l.emit("blocked",u),u.matches.some(h=>h.action==="warn")&&l.emit("warning",u)}async function R(u,h,v,g){let p=new AbortController,T=()=>p.abort(be(g));g?.addEventListener("abort",T,{once:!0});let S;try{return await new Promise((M,F)=>{p.signal.addEventListener("abort",()=>F(p.signal.reason),{once:!0}),S=setTimeout(()=>{let L=new Error(`Classifier "${u.name}" timed out after ${v}ms`);L.name="TimeoutError",p.abort(L)},v),Promise.resolve().then(()=>u.classify({...h,signal:p.signal})).then(M,F)})}finally{S!==void 0&&clearTimeout(S),g?.removeEventListener("abort",T)}}function z(u,h,v,g){for(let p of g.adjustments??[]){let T=h.find(S=>S.rule.id===p.ruleId&&S.start===p.start);T&&Number.isFinite(p.confidence)&&(T.confidence=we(ze(p.confidence)))}for(let p of g.matches??[]){if(!Pe.has(p.category)||!(Number.isInteger(p.start)&&Number.isInteger(p.end)&&p.start>=0&&p.end<=u.length&&p.start<p.end))continue;let T={id:`${v}:${p.label??p.category}`,category:p.category,severity:p.severity??"medium",confidence:ze(p.confidence),priority:We[p.category],replacement:p.replacement,label:p.label,boundary:"word",elements:[]};h.push({start:p.start,end:p.end,rule:T,confidence:we(T.confidence),context:"direct",source:v})}}let A={moderate(u){let h=j(u,_(u));return $(h),h},async moderateAsync(u,h={}){let{signal:v}=h;if(v?.aborted)throw be(v);let g=_(u),p=[],T=[];if(c.length>0){let M=j(u,g),F=h.timeoutMs??s,L=await Promise.all(c.map(f=>R(f,{text:u,matches:M.matches,language:a},F,v).then(w=>({classifier:f,output:w,error:void 0}),w=>({classifier:f,output:void 0,error:w}))));if(v?.aborted)throw be(v);for(let{classifier:f,output:w,error:B}of L)w?(z(u,g,f.name,w),p.push(f.name)):(T.push(f.name),l.emit("error",{error:B,provider:f.name}))}let S={...j(u,g),providers:p,failedProviders:T};return $(S),S},mask(u){return j(u,_(u),"mask").text},validate(u){let h=A.moderate(u);return{valid:h.allowed,result:h,violations:h.matches.filter(v=>v.action!=="allow")}},addRule(u){x(u)},removeRule(u){let h=E.delete(u);return h&&(b=null),h},getRules(){return Array.from(E.values(),u=>({...u.source}))},setPolicy(u){let h={...C};for(let v of P){let g=u[v];g&&(h[v]={...h[v],...g})}I=ve(ge(t,n),h),C=h},setMode(u){Te(u),t=u,I=ve(ge(t,n),C)},on(u,h){return l.on(u,h)},createSession(u){return ha((h,v)=>A.moderateAsync(h,v),u)}};return A}var Q="input, textarea, [contenteditable]",Ca=new Set(["text","search"]),Sa=new Set(["current-password","new-password","one-time-code","email","username","tel","cc-name","cc-given-name","cc-family-name","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc","cc-type"]),Aa=/pass(word|wd)?|pwd|secret|token|otp|one.?time|cvv|cvc|card.?num|cc.?num|iban|ssn|social.?sec|pin(code)?$/i,X=[".ProseMirror","[data-lexical-editor]",".ql-editor",".cm-content",".monaco-editor","[data-slate-editor]",".public-DraftEditor-content",".ck-editor__editable"].join(", ");function Z(e){return e.tagName==="INPUT"||e.tagName==="TEXTAREA"}function Ge(e){let t=e;if(typeof t.isContentEditable=="boolean")return t.isContentEditable;for(let a=e;a;a=a.parentElement){let n=a.getAttribute("contenteditable");if(n!==null)return n===""||n==="true"||n==="plaintext-only"}return!1}function Da(e){return Z(e)||!Ge(e)?!1:!e.parentElement||!Ge(e.parentElement)}function Ce(e){return(e.getAttribute("autocomplete")??"").toLowerCase().split(/\s+/).some(n=>Sa.has(n))?!0:[e.getAttribute("name"),e.id,e.getAttribute("inputmode")==="numeric"?"pin":null].some(n=>n!==null&&n!==""&&Aa.test(n))}function H(e,t){if(e.nodeType!==1||e.closest('[data-safetype="off"]'))return!1;for(let a of t)if(e.matches(a))return!1;if(e.tagName==="INPUT"){let a=e,n=(a.getAttribute("type")??"text").toLowerCase();return!Ca.has(n)||a.readOnly||a.disabled?!1:!Ce(e)}if(e.tagName==="TEXTAREA"){let a=e;return a.readOnly||a.disabled?!1:!Ce(e)}return!Da(e)||e.matches(X)||e.closest(X)?!1:!Ce(e)}var Se={warn:"This may come across as hurtful. Please consider rephrasing.",block:"This can't be sent because it contains language that breaks the community guidelines."},Ra="This may not be appropriate here. Please consider rephrasing.",Ye=`
1
+ "use strict";var SafeType=(()=>{var oe=Object.defineProperty;var et=Object.getOwnPropertyDescriptor;var tt=Object.getOwnPropertyNames;var at=Object.prototype.hasOwnProperty;var nt=(e,t)=>{for(var a in t)oe(e,a,{get:t[a],enumerable:!0})},rt=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of tt(t))!at.call(e,r)&&r!==a&&oe(e,r,{get:()=>t[r],enumerable:!(n=et(t,r))||n.enumerable});return e};var it=e=>rt(oe({},"__esModule",{value:!0}),e);var Ha={};nt(Ha,{DEFAULT_MESSAGES:()=>Se,DEFAULT_SELECTOR:()=>Q,MANAGED_EDITOR_SELECTOR:()=>X,createModerationEngine:()=>Y,createSafeType:()=>Je,getMessageLevel:()=>ee,isEligible:()=>H,resolveMessage:()=>Ae});var ot=[{id:"en.profanity.fuck",pattern:"fuck*",category:"profanity",severity:"high",replacement:"heck"},{id:"en.profanity.motherfucker",pattern:"motherfuck*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.shit",pattern:"shit*",category:"profanity",severity:"medium",replacement:"shoot"},{id:"en.profanity.bullshit",pattern:"(bullshit*|horseshit*)",category:"profanity",severity:"medium",replacement:"nonsense"},{id:"en.profanity.bitch",pattern:"bitch*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.ass",pattern:"(ass|arse)",category:"profanity",severity:"medium",replacement:"butt"},{id:"en.profanity.asshole",pattern:"(asshole*|arsehole*|jackass*|dumbass*)",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.bastard",pattern:"bastard*",category:"profanity",severity:"medium",replacement:"jerk"},{id:"en.profanity.cunt",pattern:"cunt*",category:"profanity",severity:"critical",replacement:"jerk"},{id:"en.profanity.dickhead",pattern:"dickhead*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.cocksucker",pattern:"cocksuck*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.wanker",pattern:"wank*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.twat",pattern:"twat*",category:"profanity",severity:"high",replacement:"jerk"},{id:"en.profanity.slut",pattern:"slut*",category:"profanity",severity:"high"},{id:"en.profanity.whore",pattern:"whore*",category:"profanity",severity:"high"},{id:"en.profanity.douche",pattern:"douche*",category:"profanity",severity:"medium",replacement:"jerk"},{id:"en.profanity.bollocks",pattern:"bollocks",category:"profanity",severity:"medium",replacement:"nonsense"},{id:"en.profanity.piss",pattern:"(piss|pisses|pissing)",category:"profanity",severity:"medium"},{id:"en.profanity.pissed",pattern:"pissed",category:"profanity",severity:"low",replacement:"annoyed"},{id:"en.profanity.damn",pattern:"(damn*|goddamn*)",category:"profanity",severity:"low",replacement:"darn"},{id:"en.profanity.crap",pattern:"crap*",category:"profanity",severity:"low",replacement:"junk"}],ut=[...["nigger*","faggot*","kike*","wetback*","raghead*","towelhead*"].map(e=>({id:`en.hate.slur.${e.replace("*","")}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"en.hate.group-violence",pattern:"(jews|muslims|christians|blacks|whites|asians|mexicans|immigrants|gays|lesbians|trans|women|arabs|africans|hindus|sikhs|refugees) (should|must|need|deserve) (to)? (be)? (die|burn|hang|rot|killed|exterminated|gassed|eradicated)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],st="(idiot*|moron*|stupid|dumb|loser*|worthless|pathetic|ugly|imbecile*|retard*|trash|garbage|scum|disgusting|failure|freak|clown)",ct=[{id:"en.harassment.insult",pattern:`(you|u|ur|youre|yall) (are|re|r)? (such)? (a|an)? (so|fucking|complete|total|absolute)? ${st}`,category:"harassment",severity:"medium",confidence:.8,label:"insult",replacement:"I disagree with you"},{id:"en.harassment.piece-of",pattern:"(you|u|ur|youre) (are|re|r)? (a)? piece of (shit|crap|garbage|trash)",category:"harassment",severity:"high",confidence:.85,label:"insult",replacement:"I disagree with you"},{id:"en.harassment.you-suck",pattern:"(you|u) (suck|stink)",category:"harassment",severity:"low",confidence:.7,label:"insult"},{id:"en.harassment.self-harm",pattern:"(kill|hang) (yourself|urself|yourselves)",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"en.harassment.kys",pattern:"kys",category:"harassment",severity:"critical",confidence:.8,label:"self-harm-incitement"},{id:"en.harassment.go-die",pattern:"go (die|rot)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"en.harassment.threat",pattern:"(i|ill|imma|im) (ll|will|am|m|gonna)? (going)? (to)? (kill|murder|hurt|stab|shoot) (you|u)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"en.harassment.nobody-likes",pattern:"(nobody|noone) (likes|loves|cares|wants) (about)? (you|u)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],lt=[{id:"en.sexual.porn",pattern:"(porn*|xvideos|xhamster|xnxx|redtube|youporn)",category:"sexual",severity:"medium",confidence:.85,label:"sexual-content"},{id:"en.sexual.sex",pattern:"(sex|sexting|sext|sexts|seggs|secks)",category:"sexual",severity:"low",confidence:.7,label:"sexual-content"},{id:"en.sexual.horny",pattern:"horny",category:"sexual",severity:"low",confidence:.7,label:"sexual-content"},{id:"en.sexual.nudes",pattern:"(nudes|noods|nudez|nudies)",category:"sexual",severity:"medium",confidence:.8,label:"sexual-content"},{id:"en.sexual.nudes-request",pattern:"(send|sending|show|give|share|post|drop) (me|us)? (ur|your|some|more|the|ya|a)? (nudes|noods|nudez|nudies|nude|naked) (pics|pic|photos|photo|selfies|selfie|pictures)?",category:"sexual",severity:"high",confidence:.85,label:"solicitation"},{id:"en.sexual.dick-pic",pattern:"(dickpic*|cockpic*)",category:"sexual",severity:"high",confidence:.85,label:"sexual-content"},{id:"en.sexual.dick-pic-phrase",pattern:"(dick|cock) (pic|pics|picture|pictures|photo|photos)",category:"sexual",severity:"high",confidence:.85,label:"sexual-content"}],ue={language:"en",boundary:"word",rules:[...ot,...ut,...ct,...lt],allowList:["shiitake","shitake"]};var dt=[{id:"hi-latn.profanity.behenchod",pattern:"(behenchod*|behanchod*|bahenchod*|bahanchod*|bhenchod*|bhanchod*|benchod*|bhenchud*|behenchood*|bhencho|behencho)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.madarchod",pattern:"(madarchod*|maderchod*|madharchod*|maadarchod*|madarchood*|madrchod*|maderjaat|madarjaat)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.betichod",pattern:"(betichod*|betichood*)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.beti-chod",pattern:"beti (chod*|chood*)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.chut",pattern:"(chut|choot|chuth|chooth)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.loda",pattern:"(loda|lauda|lavda|lawda|laude|lavde|lawde|laudu|lavdu|lund|lundd)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.lodu",pattern:"(lodu|lodoo|loduchand|lodus)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.bhosda",pattern:"(bhosd*|bhosad*|bhosid*|bhosri*|bhosdk)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.abbreviations",pattern:"(bsdk|bkl|mkc)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.chutiya",pattern:"(chutiya*|chutiye*|chutia*|chootiya*|chutya*|chutiye)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.gandu",pattern:"(gandu|gaandu|gandoo|gaandoo|gaand*)",category:"profanity",severity:"medium"},{id:"hi-latn.profanity.randi",pattern:"(randiya|randwa|randibaaz*|randibaz*|randikhana)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.harami",pattern:"(harami|haraami|haramkhor*|haraamkhor*|haramzad*|haraamzad*|haramjad*)",category:"profanity",severity:"medium"},{id:"hi-latn.profanity.bhadwa",pattern:"(bhadwa|bhadwe|bhadva|bhadve|bhadwi|bhadwaa)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.jhaatu",pattern:"(jhaat*|jhant*|jhaant*)",category:"profanity",severity:"medium"},{id:"hi-latn.profanity.chhinal",pattern:"(chhinal|chinal|chhinaal|chinaal|chhinar|chinar)",category:"profanity",severity:"high"},{id:"hi-latn.profanity.kutiya",pattern:"(kutiya|kuttiya|kutiyaa)",category:"profanity",severity:"high"}],ht="(teri|tere|tera|tumhari|tumhara|tumhare|uski|uske|iski|apni)",Re="(maa|ma|mai|behen|bahen|behan|bahan|bhen|beti)",pt=[{id:"hi-latn.harassment.animal-offspring",pattern:"(kutte|kutta|kuttey|suar|suwar|gadhe|haramkhor) (ki|ka|ke) (aulad|aulaad|olad|olaad)",category:"harassment",severity:"high",confidence:.8,label:"insult"},{id:"hi-latn.harassment.family-insult",pattern:`${ht} ${Re} (ka|ki|ke|ko) (bhosd*|bhosad*|chut|choot|lund|loda|lauda|lavda|lawda)`,category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"hi-latn.harassment.family-abuse",pattern:`${Re} (ko|ki)? (chod*|chud*|chood*)`,category:"harassment",severity:"high",confidence:.85,label:"insult"}],se="(tujhe|tereko|tujhko|tumhe|tumko|tuje|tujko|tereko|aapko)",ft="(chod*|maar*|mar*|kaat*|kat*|thok*|peet*|pit*|tod*|jala*|uthwa*|khatam|khatm|phod*)",mt=[{id:"hi-latn.harassment.home-invasion",pattern:`(ghar|gher) (me|mein|main|mai|mei|pe|par|tak)? (ghus|ghuske|ghuskar|ghusk|aake|aakar|aa|aake|aaunga|aunga) (ke|kar|k)? ${ft}`,category:"harassment",severity:"high",confidence:.85,label:"threat"},{id:"hi-latn.harassment.threat",pattern:`${se} (jaan)? (se)? (maar|mar|kaat|thok|peet|tod|jala|khatam|khatm|uthwa|gaad) (kar)? (dunga|daalunga|dalunga|denge|dalenge|daalenge|dungi|doonga|lunga|lenge)`,category:"harassment",severity:"high",confidence:.8,label:"threat"},{id:"hi-latn.harassment.threat-short",pattern:`${se} (maarunga|marunga|maarenge|marenge|kaatunga|katunga|thokunga|peetunga|pitunga|todunga|chodunga|chodenge|chodega|jalaunga|phodunga)`,category:"harassment",severity:"high",confidence:.8,label:"threat"},{id:"hi-latn.harassment.wont-spare",pattern:`${se} (to|toh)? (nahi|nhi|nai|nahin) (chhodunga|chodunga|chhodenge|chodenge|chhodungi|bakshunga|bakhshunga|bachega|bachegi)`,category:"harassment",severity:"high",confidence:.75,label:"threat"},{id:"hi-latn.harassment.abusive-address",pattern:"(abe|abey|oye|oi|oyee) (saale|saala|saali|sale|kutte|kamine|kamini|harami)",category:"harassment",severity:"medium",confidence:.75,label:"insult"},{id:"hi-latn.harassment.saale-insult",pattern:"(saale|saala|saali|sale) (kutte|kutta|kutti|kamine|kamina|harami|chutiye|chutiya|gandu|bhadwe|lodu|suar|suwar|haramkhor|ullu)",category:"harassment",severity:"medium",confidence:.8,label:"insult"}],yt=[{id:"hi-latn.harassment.gaali",pattern:"(bhosd*|bhosad*|bhosid*|bhosri*|lodu|lodoo|loduchand|lodus|harami|haraami|haramkhor*|haraamkhor*|haramzad*|haraamzad*|haramjad*)",category:"harassment",severity:"high",confidence:.75,label:"insult"}],gt=[{id:"hi-latn.sexual.nudes-request",pattern:"(nangi|nanga|nangii|nude|nudes) (photo|photos|pic|pics|video|videos|selfie|tasveer) (bhej*|dikha*|send|de|do)",category:"sexual",severity:"high",confidence:.85,label:"solicitation"}],ce={language:"hi-Latn",boundary:"word",rules:[...dt,...pt,...mt,...yt,...gt],allowList:[]};var vt=[{id:"de.profanity.scheisse",pattern:"(scheiss*|scheis)",category:"profanity",severity:"medium",replacement:"Mist"},{id:"de.profanity.arsch",pattern:"arsch",category:"profanity",severity:"medium"},{id:"de.profanity.arschloch",pattern:"(arschloch*|arschloech*|arschgeige*|arschgesicht*|arschkriecher*|arschficker*)",category:"profanity",severity:"high"},{id:"de.profanity.fotze",pattern:"fotze*",category:"profanity",severity:"critical"},{id:"de.profanity.ficken",pattern:"(fick|ficke|fickt|ficken|fickst|fickte|ficktest|gefickt|ficker|fickers|fickdich)",category:"profanity",severity:"high"},{id:"de.profanity.wichser",pattern:"(wichser*|wichse|wichsen|wichst|wixer*|wixxer*)",category:"profanity",severity:"high"},{id:"de.profanity.hurensohn",pattern:"(hurensohn*|hurensoehne*|hurenkind*|hurenbock*)",category:"profanity",severity:"high"},{id:"de.profanity.hure",pattern:"(hure|huren)",category:"profanity",severity:"high"},{id:"de.profanity.schlampe",pattern:"(schlampe|schlampen)",category:"profanity",severity:"high"},{id:"de.profanity.miststueck",pattern:"(miststuck*|miststueck*|mistkerl*|mistsau)",category:"profanity",severity:"high"},{id:"de.profanity.verpiss",pattern:"verpiss*",category:"profanity",severity:"high"},{id:"de.profanity.leck-mich",pattern:"leck mich",category:"profanity",severity:"medium"},{id:"de.profanity.kacke",pattern:"(kacke|kack|kacken|kackbratze*|kackscheiss*)",category:"profanity",severity:"medium"},{id:"de.profanity.oasch",pattern:"(oasch|oaschloch*|oaschgeige*|oaschkriecher*)",category:"profanity",severity:"high"},{id:"de.profanity.gschissen",pattern:"(gschissen*|gschissana|gschissane)",category:"profanity",severity:"medium"},{id:"de.profanity.beidl",pattern:"(beidl|beidln|beidlwappler*)",category:"profanity",severity:"medium"},{id:"de.profanity.huere",pattern:"(huerebueb*|huerechaib*|hueresiech*|huereseich|huerefotze*)",category:"profanity",severity:"high"},{id:"de.profanity.pisser",pattern:"(pisser|pissnelke*)",category:"profanity",severity:"medium"},{id:"de.profanity.dreck",pattern:"(drecksau*|dreckschwein*|drecksack*|dreckstuck*|dreckstueck*|drecksfotze*)",category:"profanity",severity:"high"},{id:"de.profanity.schwanzlutscher",pattern:"(schwanzlutscher*|pimmel|pimmelkopf*)",category:"profanity",severity:"high"}],Et=[...["(kanake*|kanacke*)","(neger|negers|negerin*)","schwuchtel*","(kummelturke*|kuemmeltuerke*)","judensau*"].map(e=>({id:`de.hate.slur.${e.replace(/[()*]/g,"").split("|")[0]}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"de.hate.group-violence",pattern:"(juden|muslime|moslems|christen|auslander|auslaender|fluchtlinge|fluechtlinge|migranten|asylanten|schwarze|turken|tuerken|araber|schwule|lesben|frauen|roma|sinti|kanaken) (sollten|sollen|mussen|muessen|gehoren|gehoeren|verdienen) (alle)? (es)? (zu)? (sterben|brennen|vergast|vernichtet|ausgerottet|erschossen|aufgehangt|aufgehaengt|abgeschlachtet|verbrannt|tot)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],Me="(idiot*|vollidiot*|depp*|trottel*|arschloch*|wichser*|dumm|dummkopf*|blod|bloed|behindert*|spast*|mongo|missgeburt*|versager*|loser*|penner*|hurensohn*|witzfigur*|lappen|opfer|abschaum|mull|muell|nichtsnutz*|hackfresse*|schwachkopf*|schwachmat*|pisser|bastard*|hund|schwein|sau|kuh|ziege|affe|esel|ratte|made|wappler|oaschloch*|gschissener|spacko|spacken|schlampe|fotze|hure|spasti)",Fe="(so|echt|total|voll|wirklich|einfach)? (ein|eine|einer|n)? (verdammter|verdammte|verdammtes|dummer|dumme|dummes|blode|bloede|bloder|bloeder|blodes|bloedes|alte|alter|altes|kleiner|kleine|kleines|elender|elendes|scheiss)?",bt=[{id:"de.harassment.insult",pattern:`du (bist)? ${Fe} ${Me}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"de.harassment.insult-formal",pattern:`(sie|ihr) (sind|seid) ${Fe} ${Me}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"de.harassment.self-harm",pattern:"(bring|bringt|bringen) (dich|euch|sich) (doch|endlich)? um",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"de.harassment.self-harm-hang",pattern:"(erhang|erhaeng|toete|tote) (dich|euch)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"de.harassment.self-harm-hang-up",pattern:"(hang|haeng) (dich|euch) auf",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"de.harassment.go-die",pattern:"(geh|geht) (sterben|verrecken|krepieren)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"de.harassment.threat",pattern:"(ich|wir) (werde|werden|will|wollen)? (dich|euch) (umbringen|toten|toeten|abstechen|erschiessen|abknallen|kaltmachen|abmurksen)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"de.harassment.threat-bring-um",pattern:"(ich|wir) (bringe|bring|bringen) (dich|euch) um",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"de.harassment.nobody-likes",pattern:"(niemand|keiner) (mag|liebt|will|braucht) (dich|euch)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],le={language:"de",boundary:"word",rules:[...vt,...Et,...bt],allowList:[]};var wt=[{id:"es.profanity.puta",pattern:"(puta|putas|putita*|putada*|putazo*|putear*|puteo|putero*)",category:"profanity",severity:"high"},{id:"es.profanity.puto",pattern:"(puto|putos)",category:"profanity",severity:"high"},{id:"es.profanity.abbreviations",pattern:"(hdp|hdlgp|ctm|ptm)",category:"profanity",severity:"high"},{id:"es.profanity.mierda",pattern:"mierda*",category:"profanity",severity:"medium",replacement:"rayos"},{id:"es.profanity.joder",pattern:"(joder|jodido|jodida|jodidos|jodidas|jodete|jodanse|jodan|jodiendo|jodio)",category:"profanity",severity:"medium",replacement:"caramba"},{id:"es.profanity.cabron",pattern:"(cabron|cabrona|cabrones|cabronas|cabronazo*)",category:"profanity",severity:"high"},{id:"es.profanity.pendejo",pattern:"(pendejo*|pendeja*)",category:"profanity",severity:"high"},{id:"es.profanity.gilipollas",pattern:"(gilipolla*|gilipollez)",category:"profanity",severity:"high"},{id:"es.profanity.chingar",pattern:"(chingar*|chingad*|chingue*|chinguen|chinga)",category:"profanity",severity:"high"},{id:"es.profanity.verga",pattern:"(verga|vergas|vergazo*)",category:"profanity",severity:"high"},{id:"es.profanity.culo",pattern:"(culo|culos)",category:"profanity",severity:"low"},{id:"es.profanity.culero",pattern:"(culero*|culera*)",category:"profanity",severity:"high"},{id:"es.profanity.cagar",pattern:"(cagar|cago|cagada*|cagon|cagona|cagando)",category:"profanity",severity:"medium"},{id:"es.profanity.malparido",pattern:"(malparid*|hijueputa*|hijoputa*|hijaputa*)",category:"profanity",severity:"high"},{id:"es.profanity.concha",pattern:"(conchetumare|conchatumadre|conchesumadre|conchasumadre)",category:"profanity",severity:"high"},{id:"es.profanity.pelotudo",pattern:"(pelotud*|conchud*)",category:"profanity",severity:"medium"},{id:"es.profanity.mamaguevo",pattern:"(mamaguevo*|mamaguebo*|mamahuevo*|mamagueva*)",category:"profanity",severity:"high"},{id:"es.profanity.malnacido",pattern:"malnacid*",category:"profanity",severity:"high"},{id:"es.profanity.carajo",pattern:"carajo",category:"profanity",severity:"low",replacement:"caramba"}],kt=[...["(maricon|maricones|mariconazo|marica|maricas)","(sudaca|sudacas)","(negrata|negratas)","(machorra|machorras)"].map(e=>({id:`es.hate.slur.${e.slice(1).split("|")[0]}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"es.hate.group-violence",pattern:"(judios|musulmanes|cristianos|negros|blancos|gitanos|inmigrantes|migrantes|refugiados|gays|maricones|lesbianas|trans|mujeres|moros|sudacas|indios|indigenas|arabes|africanos) (deberian|deben|merecen|tienen) (que)? (ser)? (morir|arder|exterminados|exterminadas|quemados|quemadas|eliminados|eliminadas|asesinados|asesinadas|colgados|gaseados|ahorcados)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],Le="(idiota*|imbecil*|estupido*|estupida*|tonto|tonta|inutil|basura|escoria|retrasado*|retrasada*|mongolo*|mongolic*|subnormal*|boludo*|boluda*|pelotudo*|pelotuda*|huevon*|huevona*|weon*|weona*|gueon*|wn|malnacido*|patetico*|patetica*|asqueroso*|asquerosa*|payaso*|perdedor*|fracasado*|fracasada*|pendejo*|pendeja*|cabron*|gilipollas|perra|zorra|puta)",xt=[{id:"es.harassment.insult",pattern:`(eres|sos) (un|una)? (puto|puta|pinche|maldito|maldita|completo|completa|gran|tremendo|tremenda)? ${Le}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"es.harassment.insult-subject",pattern:`(usted|tu|vos) (es|eres|sos) (un|una)? (puto|puta|pinche|maldito|maldita|completo|completa|gran|tremendo|tremenda)? ${Le}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"es.harassment.family",pattern:"(concha|chinga|puta) (de)? (tu|su) (madre|hermana|vieja)",category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"es.harassment.self-harm",pattern:"(matate|suicidate|ahorcate)",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"es.harassment.go-die",pattern:"(vete|andate|anda|ve) a (morir|morirte)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"es.harassment.wish-death",pattern:"ojala (que)? te (mueras|murieras|muera)",category:"harassment",severity:"high",confidence:.8,label:"hostility"},{id:"es.harassment.threat",pattern:"te (voy|vamos) a (matar|apunalar|disparar|reventar|partir|romper|quebrar|cagar)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"es.harassment.threat-object",pattern:"(lo|la|los|las) (voy|vamos) a (matar|apunalar|disparar)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"es.harassment.threat-short",pattern:"te (mato|matare)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"es.harassment.nobody-likes",pattern:"nadie te (quiere|soporta|aguanta|ama)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],de={language:"es",boundary:"word",rules:[...wt,...kt,...xt],allowList:[]};var Tt=[{id:"fr.profanity.merde",pattern:"(merde*|merdique*|emmerd*)",category:"profanity",severity:"medium",replacement:"zut"},{id:"fr.profanity.putain",pattern:"(putain*|ptn)",category:"profanity",severity:"medium",replacement:"zut"},{id:"fr.profanity.pute",pattern:"(pute|putes)",category:"profanity",severity:"high"},{id:"fr.profanity.connard",pattern:"(connard*|connasse*|conasse*|conard*)",category:"profanity",severity:"high"},{id:"fr.profanity.salope",pattern:"(salope*|salaud*|salopard*)",category:"profanity",severity:"high"},{id:"fr.profanity.encule",pattern:"encul*",category:"profanity",severity:"high"},{id:"fr.profanity.niquer",pattern:"(nique|niquer|niquez|niques|niquee)",category:"profanity",severity:"high"},{id:"fr.profanity.couille",pattern:"(couille*|couillon*)",category:"profanity",severity:"medium"},{id:"fr.profanity.enfoire",pattern:"enfoire*",category:"profanity",severity:"high"},{id:"fr.profanity.branleur",pattern:"(branleur*|branleuse*|branlette*)",category:"profanity",severity:"medium"},{id:"fr.profanity.pouffiasse",pattern:"(pouffiasse*|poufiasse*|petasse*)",category:"profanity",severity:"high"},{id:"fr.profanity.trou-du-cul",pattern:"trou (du|de) cul",category:"profanity",severity:"high"},{id:"fr.profanity.sms",pattern:"(ntm|ftg|fdp|tepu)",category:"profanity",severity:"high"},{id:"fr.profanity.quebec",pattern:"(tabarnak*|tabarnac*|tabarnaque*|tabernak*|calisse*|caliss|colisse*|ostie|osti|estie)",category:"profanity",severity:"medium"},{id:"fr.profanity.bordel",pattern:"bordel",category:"profanity",severity:"low"},{id:"fr.profanity.chier",pattern:"(chier|chiant|chiante|chiants|chiantes|chiasse)",category:"profanity",severity:"low"}],Ct=[...["(bougnoul*|bougnoule*)","(youpin*|youtre*)","(negre|negres|negresse*)","bamboula*","(tafiole*|tarlouze*|tantouze*)"].map(e=>({id:`fr.hate.slur.${e.replace(/[()*]/g,"").split("|")[0]}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"fr.hate.group-violence",pattern:"(juifs|musulmans|chretiens|noirs|blancs|arabes|immigres|migrants|refugies|gays|homos|lesbiennes|trans|femmes|africains|asiatiques|roms|gitans) (doivent|devraient|meritent) (d|de)? (etre)? (mourir|crever|bruler|extermines|gazes|brules|tues|pendus|eradiques|massacres)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],St="(idiot*|imbecile*|debile*|abruti*|cretin*|con|conne|connard*|connasse*|nul|nulle|minable*|pathetique*|attarde*|mongol|mongole|batard*|pede|pedes|tafiole*|teube|salope|ordure*|merde|dechet*|rate|ratee|loser*|bouffon*|clown*|stupide*|chienne|grosse|moche|pute)",At=[{id:"fr.harassment.insult",pattern:`(tu|t|vous) (es|etes) (vraiment|trop|qu)? (un|une)? (sale|gros|grosse|pauvre|petit|petite|vrai|vraie)? ${St}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"fr.harassment.sale",pattern:"(espece|sale) (de)? (con|conne|connard*|connasse*|pute|chienne|batard*|merde|ordure*|race|arabe|noir|juif|pede|pedes)",category:"harassment",severity:"high",confidence:.8,label:"insult"},{id:"fr.harassment.family",pattern:"(nique|niquer|baise) (ta|sa|vos|votre) (mere|race|soeur|famille|daronne)",category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"fr.harassment.go-away",pattern:"(va|allez) (te|vous) faire (foutre|enculer|niquer|voir)",category:"harassment",severity:"high",confidence:.8,label:"hostility"},{id:"fr.harassment.shut-up",pattern:"ta gueule",category:"harassment",severity:"low",confidence:.7,label:"hostility"},{id:"fr.harassment.self-harm",pattern:"(va|vas|allez) (te|vous) (pendre|suicider|tuer)",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"fr.harassment.self-harm-imperative",pattern:"(suicide|tue|pends) (toi)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"fr.harassment.go-die",pattern:"(va|vas|allez) (crever|mourir)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"fr.harassment.threat",pattern:"(je|j) (vais|v)? (te|vous|t) (tuer|buter|planter|defoncer|tabasser|egorger|tue|bute|plante|defonce|egorge)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"fr.harassment.nobody-likes",pattern:"personne ne (t|te|vous) (aime|supporte|veut|apprecie)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],he={language:"fr",boundary:"word",rules:[...Tt,...Ct,...At],allowList:[]};var Dt=[{id:"hi.profanity.madarchod",pattern:"(\u092E\u093E\u0926\u0930\u091A\u094B\u0926*|\u092E\u093E\u0926\u0930\u091A\u094C\u0926*|\u092E\u093E\u0926\u0930\u091A\u094B\u0924|\u092E\u093E\u0926\u0930\u091C\u093E\u0924|\u092E\u093E\u0926\u0930\u091C\u093C\u093E\u0924)",category:"profanity",severity:"high"},{id:"hi.profanity.behenchod",pattern:"(\u092C\u0939\u0928\u091A\u094B\u0926*|\u092C\u0939\u0947\u0928\u091A\u094B\u0926*|\u092C\u0939\u093F\u0928\u091A\u094B\u0926*|\u092D\u0947\u0928\u091A\u094B\u0926*|\u092D\u0948\u0928\u091A\u094B\u0926*|\u092C\u0939\u0928\u091A\u094C\u0926*|\u092D\u0948\u0902\u091A\u094B\u0926*)",category:"profanity",severity:"high"},{id:"hi.profanity.betichod",pattern:"(\u092C\u0947\u091F\u0940\u091A\u094B\u0926*|\u092C\u0947\u091F\u093F\u091A\u094B\u0926*)",category:"profanity",severity:"high"},{id:"hi.profanity.chod",pattern:"(\u091A\u094B\u0926*|\u091A\u0941\u0926*)",category:"profanity",severity:"high"},{id:"hi.profanity.chutiya",pattern:"(\u091A\u0942\u0924\u093F\u092F\u093E*|\u091A\u0941\u0924\u093F\u092F\u093E*|\u091A\u0942\u0924\u093F\u092F\u0947*|\u091A\u0941\u0924\u093F\u092F\u0947*|\u091A\u0941\u0924\u094D\u092F\u093E*|\u091A\u0942\u0924\u094D\u092F\u093E*)",category:"profanity",severity:"high"},{id:"hi.profanity.chut",pattern:"(\u091A\u0942\u0924|\u091A\u0941\u0924)",category:"profanity",severity:"high"},{id:"hi.profanity.lund",pattern:"(\u0932\u0902\u0921|\u0932\u0923\u094D\u0921|\u0932\u0928\u094D\u0921|\u0932\u094C\u0921\u093C\u093E|\u0932\u094C\u0921\u093E|\u0932\u094C\u0921\u093C\u0947|\u0932\u094C\u0921\u0947|\u0932\u094B\u0921\u093C\u093E|\u0932\u094B\u0921\u093C\u0947|\u0932\u0935\u0921\u093C\u093E|\u0932\u0935\u0921\u093E|\u0932\u0935\u0921\u093C\u0947|\u0932\u094C\u0921\u093C\u0942|\u0932\u094B\u0921\u093C\u0942|\u0932\u094B\u0921\u0942)",category:"profanity",severity:"high"},{id:"hi.profanity.bhosda",pattern:"(\u092D\u094B\u0938\u0921*|\u092D\u094B\u0938\u0930\u0940*)",category:"profanity",severity:"high"},{id:"hi.profanity.gaandu",pattern:"(\u0917\u093E\u0902\u0921|\u0917\u093E\u0902\u0921\u0942|\u0917\u093E\u0902\u0921\u0941|\u0917\u093E\u0923\u094D\u0921\u0942|\u0917\u093E\u0928\u094D\u0921\u0942|\u0917\u093E\u0923\u094D\u0921|\u0917\u093E\u0928\u094D\u0921|\u0917\u093E\u0902\u0921\u092B\u091F*)",category:"profanity",severity:"medium"},{id:"hi.profanity.harami",pattern:"(\u0939\u0930\u093E\u092E\u0940|\u0939\u0930\u093E\u092E\u091C\u093C\u093E\u0926*|\u0939\u0930\u093E\u092E\u091C\u093E\u0926*|\u0939\u0930\u093E\u092E\u0916\u094B\u0930*|\u0939\u0930\u093E\u092E\u0916\u093C\u094B\u0930*)",category:"profanity",severity:"medium"},{id:"hi.profanity.randi",pattern:"(\u0930\u0902\u0921\u0940|\u0930\u0923\u094D\u0921\u0940|\u0930\u0928\u094D\u0921\u0940|\u0930\u0902\u0921\u093F\u092F\u094B\u0902|\u0930\u0902\u0921\u093F\u092F\u093E|\u0930\u0902\u0921\u0940\u092C\u093E\u091C*|\u0930\u0902\u0921\u0935\u093E|\u0930\u093E\u0902\u0921)",category:"profanity",severity:"high"},{id:"hi.profanity.bhadwa",pattern:"(\u092D\u0921\u093C\u0935\u093E|\u092D\u0921\u093C\u0935\u0947|\u092D\u0921\u093C\u0935\u0940|\u092D\u0921\u0935\u093E|\u092D\u0921\u0935\u0947|\u092D\u0921\u0935\u0940|\u092D\u0921\u093C\u0941\u0906|\u092D\u0921\u0941\u0906)",category:"profanity",severity:"high"},{id:"hi.profanity.jhaat",pattern:"(\u091D\u093E\u091F|\u091D\u093E\u0902\u091F|\u091D\u093E\u091F\u0942|\u091D\u093E\u0902\u091F\u0942)",category:"profanity",severity:"medium"},{id:"hi.profanity.chhinal",pattern:"(\u091B\u093F\u0928\u093E\u0932|\u091B\u093F\u0928\u093E\u0930|\u091B\u093F\u0928\u093E\u0932\u0940)",category:"profanity",severity:"high"},{id:"hi.profanity.dalla",pattern:"(\u0926\u0932\u094D\u0932\u093E|\u0926\u0932\u094D\u0932\u0947|\u0926\u0932\u094D\u0932\u0940)",category:"profanity",severity:"medium"},{id:"hi.profanity.kutiya",pattern:"(\u0915\u0941\u0924\u093F\u092F\u093E|\u0915\u0941\u0924\u094D\u0924\u093F\u092F\u093E)",category:"profanity",severity:"high"}],Be="(\u092E\u0941\u0938\u0932\u092E\u093E\u0928\u094B\u0902|\u092E\u0941\u0938\u0932\u092E\u093E\u0928|\u092E\u0941\u0938\u0932\u092E\u093E\u0928\u094B|\u0939\u093F\u0902\u0926\u0941\u0913\u0902|\u0939\u093F\u0928\u094D\u0926\u0941\u0913\u0902|\u0939\u093F\u0902\u0926\u0941\u0913|\u0938\u093F\u0916\u094B\u0902|\u0908\u0938\u093E\u0907\u092F\u094B\u0902|\u0926\u0932\u093F\u0924\u094B\u0902|\u0915\u091F\u0941\u0913\u0902|\u092E\u0941\u0932\u094D\u0932\u094B\u0902|\u092C\u093F\u0939\u093E\u0930\u093F\u092F\u094B\u0902|\u0914\u0930\u0924\u094B\u0902)",Rt=[{id:"hi.hate.slur.katua",pattern:"(\u0915\u091F\u0941\u0906|\u0915\u091F\u0941\u090F|\u0915\u091F\u0941\u0913\u0902)",category:"hate",severity:"critical",confidence:.9,label:"slur"},{id:"hi.hate.group-violence",pattern:`${Be} (\u0915\u094B)? (\u092E\u093E\u0930|\u0915\u093E\u091F|\u091C\u0932\u093E|\u0916\u0924\u094D\u092E|\u0916\u093C\u0924\u094D\u092E|\u092E\u093F\u091F\u093E|\u0938\u093E\u092B) (\u0915\u0930)? (\u0926\u094B|\u0921\u093E\u0932\u094B|\u0926\u0947\u0928\u093E)`,category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"},{id:"hi.hate.group-violence-imperative",pattern:`${Be} (\u0915\u094B)? (\u092E\u093E\u0930\u094B|\u0915\u093E\u091F\u094B|\u091C\u0932\u093E\u0913|\u092E\u093F\u091F\u093E\u0913)`,category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],Ie="(\u0924\u0942|\u0924\u0941\u092E|\u0906\u092A)",je="(\u090F\u0915)? (\u092C\u0939\u0941\u0924|\u092A\u0942\u0930\u093E|\u092A\u0942\u0930\u0940|\u0928\u093F\u0930\u093E|\u0938\u092C\u0938\u0947|\u090F\u0915\u0926\u092E)? (\u092C\u0921\u093C\u093E|\u092C\u0921\u093C\u0940|\u092C\u0921\u093E|\u092C\u0921\u0940)?",Mt="(\u0915\u0941\u0924\u094D\u0924\u093E|\u0915\u0941\u0924\u094D\u0924\u0947|\u0915\u0941\u0924\u094D\u0924\u0940|\u0917\u0927\u093E|\u0917\u0927\u0947|\u0909\u0932\u094D\u0932\u0942|\u0938\u0942\u0905\u0930|\u0938\u0941\u0905\u0930|\u0939\u093F\u091C\u0921\u093C\u093E|\u0939\u093F\u091C\u0921\u093C\u0947|\u0939\u093F\u091C\u0921\u093E|\u0939\u093F\u091C\u0921\u0947)",Ft="(\u092C\u0947\u0935\u0915\u0942\u092B\u093C|\u092C\u0947\u0935\u0915\u0942\u092B|\u092E\u0942\u0930\u094D\u0916|\u092E\u0942\u0930\u0916|\u0915\u092E\u0940\u0928\u093E|\u0915\u092E\u0940\u0928\u0947|\u0915\u092E\u0940\u0928\u0940|\u0918\u091F\u093F\u092F\u093E|\u0928\u093E\u0932\u093E\u092F\u0915|\u0928\u093F\u0915\u092E\u094D\u092E\u093E|\u0928\u093F\u0915\u092E\u094D\u092E\u0947|\u0928\u093F\u0915\u092E\u094D\u092E\u0940|\u0939\u0930\u093E\u092E\u0940|\u091C\u093E\u0939\u093F\u0932|\u0917\u0902\u0935\u093E\u0930|\u091A\u0942\u0924\u093F\u092F\u093E|\u091A\u0941\u0924\u093F\u092F\u093E|\u0928\u0940\u091A|\u0939\u0930\u093E\u092E\u0916\u094B\u0930|\u0915\u0941\u0924\u093F\u092F\u093E)",Lt=[{id:"hi.harassment.family-insult",pattern:"(\u0924\u0947\u0930\u0940|\u0924\u0947\u0930\u0947|\u0924\u0947\u0930\u093E|\u0924\u0941\u092E\u094D\u0939\u093E\u0930\u0940|\u0924\u0941\u092E\u094D\u0939\u093E\u0930\u0947|\u0909\u0938\u0915\u0940|\u0909\u0938\u0915\u0947|\u0907\u0938\u0915\u0940) (\u092E\u093E\u0902|\u092E\u093E|\u092E\u093E\u0908|\u092E\u0948\u092F\u093E|\u092C\u0939\u0928|\u092C\u0939\u093F\u0928|\u092C\u0947\u0939\u0928|\u092C\u0947\u091F\u0940) (\u0915\u093E|\u0915\u0940|\u0915\u0947|\u0915\u094B) (\u092D\u094B\u0938\u0921\u093C\u093E|\u092D\u094B\u0938\u0921\u093E|\u092D\u094B\u0938\u0921\u093C\u0940|\u092D\u094B\u0938\u0921\u0940|\u091A\u0942\u0924|\u091A\u0941\u0924|\u0932\u0902\u0921|\u0932\u094C\u0921\u093C\u093E|\u0932\u094C\u0921\u093E)",category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"hi.harassment.family-abuse",pattern:"(\u092E\u093E\u0902|\u092C\u0939\u0928|\u092C\u0939\u093F\u0928|\u092C\u0947\u091F\u0940) (\u0915\u094B|\u0915\u0940)? (\u091A\u094B\u0926*|\u091A\u0941\u0926*)",category:"harassment",severity:"high",confidence:.85,label:"insult"},{id:"hi.harassment.insult",pattern:`${Ie} ${je} ${Ft}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"hi.harassment.insult-animal",pattern:`${Ie} ${je} ${Mt} (\u0939\u0948|\u0939\u094B|\u0939\u0948\u0902)`,category:"harassment",severity:"medium",confidence:.75,label:"insult"},{id:"hi.harassment.animal-offspring",pattern:"(\u0915\u0941\u0924\u094D\u0924\u0947|\u0915\u0941\u0924\u094D\u0924\u093E|\u0938\u0942\u0905\u0930|\u0938\u0941\u0905\u0930|\u0917\u0927\u0947|\u0939\u0930\u093E\u092E\u0916\u094B\u0930) (\u0915\u0940|\u0915\u093E|\u0915\u0947) (\u0914\u0932\u093E\u0926|\u0914\u0932\u093E\u0926\u0947\u0902)",category:"harassment",severity:"high",confidence:.8,label:"insult"},{id:"hi.harassment.self-harm",pattern:"(\u0916\u0941\u0926\u0915\u0941\u0936\u0940|\u0916\u093C\u0941\u0926\u0915\u0941\u0936\u0940|\u0906\u0924\u094D\u092E\u0939\u0924\u094D\u092F\u093E) (\u0915\u0930|\u0915\u0930\u094B) (\u0932\u0947|\u0932\u094B)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"hi.harassment.self-harm-joined",pattern:"(\u0916\u0941\u0926\u0915\u0941\u0936\u0940|\u0916\u093C\u0941\u0926\u0915\u0941\u0936\u0940|\u0906\u0924\u094D\u092E\u0939\u0924\u094D\u092F\u093E) (\u0915\u0930\u0932\u0947|\u0915\u0930\u0932\u094B)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"hi.harassment.self-harm-hang",pattern:"(\u092B\u093E\u0902\u0938\u0940|\u092B\u0902\u0926\u093E) (\u0932\u0917\u093E|\u0932\u0917\u093E\u0915\u0930) (\u0932\u0947|\u0932\u094B|\u092E\u0930|\u092E\u0930\u094B)",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"hi.harassment.go-die",pattern:"(\u092E\u0930|\u0921\u0942\u092C) (\u091C\u093E|\u091C\u093E\u0913|\u092E\u0930|\u092E\u0930\u094B)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"hi.harassment.threat",pattern:"(\u0924\u0941\u091D\u0947|\u0924\u0941\u092E\u094D\u0939\u0947\u0902|\u0924\u0941\u092E\u094D\u0939\u0947|\u0924\u0941\u092E\u0915\u094B|\u0924\u0941\u091D\u0915\u094B) (\u091C\u093E\u0928)? (\u0938\u0947)? (\u092E\u093E\u0930|\u0915\u093E\u091F|\u0916\u0924\u094D\u092E|\u0916\u093C\u0924\u094D\u092E|\u091C\u0932\u093E) (\u0915\u0930)? (\u0926\u0942\u0902\u0917\u093E|\u0926\u0942\u0902\u0917\u0940|\u0921\u093E\u0932\u0942\u0902\u0917\u093E|\u0921\u093E\u0932\u0942\u0902\u0917\u0940|\u0926\u0947\u0902\u0917\u0947|\u0921\u093E\u0932\u0947\u0902\u0917\u0947)",category:"harassment",severity:"high",confidence:.7,label:"threat"}],Bt=[{id:"hi.harassment.home-invasion",pattern:"\u0918\u0930 (\u092E\u0947\u0902|\u092E\u0947|\u092A\u0947|\u092A\u0930|\u0924\u0915)? (\u0918\u0941\u0938|\u0918\u0941\u0938\u0915\u0947|\u0918\u0941\u0938\u0915\u0930|\u0906\u0915\u0947|\u0906\u0915\u0930|\u0906) (\u0915\u0947|\u0915\u0930)? (\u092E\u093E\u0930*|\u091A\u094B\u0926*|\u0915\u093E\u091F*|\u0924\u094B\u0921\u093C*|\u0924\u094B\u0921*|\u092A\u0940\u091F*|\u091C\u0932\u093E*|\u0909\u0920\u0935\u093E*|\u092B\u094B\u0921\u093C*)",category:"harassment",severity:"high",confidence:.85,label:"threat"},{id:"hi.harassment.threat-short",pattern:"(\u0924\u0941\u091D\u0947|\u0924\u0941\u092E\u094D\u0939\u0947\u0902|\u0924\u0941\u092E\u094D\u0939\u0947|\u0924\u0941\u092E\u0915\u094B|\u0924\u0941\u091D\u0915\u094B|\u0924\u0947\u0930\u0947) (\u092E\u093E\u0930\u0942\u0902\u0917\u093E|\u092E\u093E\u0930\u0941\u0902\u0917\u093E|\u0915\u093E\u091F\u0942\u0902\u0917\u093E|\u092A\u0940\u091F\u0942\u0902\u0917\u093E|\u0924\u094B\u0921\u093C\u0942\u0902\u0917\u093E|\u091A\u094B\u0926\u0942\u0902\u0917\u093E|\u091A\u094B\u0926\u0941\u0902\u0917\u093E|\u091C\u0932\u093E\u090A\u0902\u0917\u093E)",category:"harassment",severity:"high",confidence:.8,label:"threat"},{id:"hi.harassment.wont-spare",pattern:"(\u0924\u0941\u091D\u0947|\u0924\u0941\u092E\u094D\u0939\u0947\u0902|\u0924\u0941\u092E\u094D\u0939\u0947|\u0924\u0941\u092E\u0915\u094B|\u0924\u0941\u091D\u0915\u094B) (\u0924\u094B)? (\u0928\u0939\u0940\u0902|\u0928\u0939\u0940) (\u091B\u094B\u0921\u093C\u0942\u0902\u0917\u093E|\u091B\u094B\u0921\u0942\u0902\u0917\u093E|\u091B\u094B\u0921\u093C\u0947\u0902\u0917\u0947|\u091B\u094B\u0921\u0947\u0902\u0917\u0947|\u092C\u0916\u094D\u0936\u0942\u0902\u0917\u093E|\u092C\u091A\u0947\u0917\u093E)",category:"harassment",severity:"high",confidence:.75,label:"threat"},{id:"hi.harassment.abusive-address",pattern:"(\u0905\u092C\u0947|\u0913\u090F|\u0913\u092F\u0947) (\u0938\u093E\u0932\u0947|\u0938\u093E\u0932\u093E|\u0938\u093E\u0932\u0940|\u0915\u0941\u0924\u094D\u0924\u0947|\u0915\u092E\u0940\u0928\u0947|\u0939\u0930\u093E\u092E\u0940)",category:"harassment",severity:"medium",confidence:.75,label:"insult"},{id:"hi.harassment.saale-insult",pattern:"(\u0938\u093E\u0932\u0947|\u0938\u093E\u0932\u093E|\u0938\u093E\u0932\u0940) (\u0915\u0941\u0924\u094D\u0924\u0947|\u0915\u0941\u0924\u094D\u0924\u093E|\u0915\u092E\u0940\u0928\u0947|\u0915\u092E\u0940\u0928\u093E|\u0939\u0930\u093E\u092E\u0940|\u091A\u0942\u0924\u093F\u092F\u0947|\u091A\u0942\u0924\u093F\u092F\u093E|\u0917\u093E\u0902\u0921\u0942|\u092D\u0921\u093C\u0935\u0947|\u0938\u0942\u0905\u0930|\u0909\u0932\u094D\u0932\u0942)",category:"harassment",severity:"medium",confidence:.8,label:"insult"}],It=[{id:"hi.harassment.gaali",pattern:"(\u092D\u094B\u0938\u0921*|\u092D\u094B\u0938\u0930\u0940*|\u0939\u0930\u093E\u092E\u0940|\u0939\u0930\u093E\u092E\u091C\u093C\u093E\u0926*|\u0939\u0930\u093E\u092E\u091C\u093E\u0926*|\u0939\u0930\u093E\u092E\u0916\u094B\u0930*|\u0939\u0930\u093E\u092E\u0916\u093C\u094B\u0930*|\u0932\u094B\u0921\u0942|\u0932\u094C\u0921\u093C\u0942|\u0932\u094B\u0921\u093C\u0942)",category:"harassment",severity:"high",confidence:.75,label:"insult"}],jt=[{id:"hi.sexual.porn",pattern:"(\u092A\u094B\u0930\u094D\u0928|\u092A\u0949\u0930\u094D\u0928)",category:"sexual",severity:"medium",confidence:.85,label:"sexual-content"},{id:"hi.sexual.nudes-request",pattern:"(\u0928\u0902\u0917\u0940|\u0928\u0902\u0917\u093E) (\u092B\u094B\u091F\u094B|\u092B\u093C\u094B\u091F\u094B|\u0924\u0938\u094D\u0935\u0940\u0930|\u0935\u0940\u0921\u093F\u092F\u094B|\u092A\u093F\u0915) (\u092D\u0947\u091C*|\u0926\u093F\u0916\u093E*)",category:"sexual",severity:"high",confidence:.85,label:"solicitation"}],pe={language:"hi",boundary:"word",rules:[...Dt,...Rt,...Lt,...Bt,...It,...jt],allowList:[]};var Ot=[{id:"pt.profanity.porra",pattern:"(porra|porras)",category:"profanity",severity:"medium"},{id:"pt.profanity.caralho",pattern:"(caralho*|caraio|krl|crl)",category:"profanity",severity:"high"},{id:"pt.profanity.foder",pattern:"(foda|fodas|fodase|fodasse|foder|fodido*|fodida*|fodendo|fode|fodeu|fodam|fuder|fudido*|fudida*|fudeu|fudendo)",category:"profanity",severity:"high"},{id:"pt.profanity.puta",pattern:"(puta|putas|putaria*|putinha*)",category:"profanity",severity:"high"},{id:"pt.profanity.abbreviations",pattern:"(fdp|vtnc|vtmnc|tmnc|vsf|vsfd|pqp|tnc|pnc)",category:"profanity",severity:"high"},{id:"pt.profanity.cona",pattern:"(cona|conas)",category:"profanity",severity:"high"},{id:"pt.profanity.cabrao",pattern:"(cabrao|cabroes|cabrona|cabronas)",category:"profanity",severity:"high"},{id:"pt.profanity.badalhoco",pattern:"(badalhoc*)",category:"profanity",severity:"medium"},{id:"pt.profanity.merda",pattern:"merda*",category:"profanity",severity:"medium"},{id:"pt.profanity.buceta",pattern:"(buceta*|boceta*|xoxota*|xereca*)",category:"profanity",severity:"high"},{id:"pt.profanity.cu",pattern:"(no|do|teu|seu|meu|nosso) cu",category:"profanity",severity:"medium"},{id:"pt.profanity.cuzao",pattern:"(cuzao|cuzinho|cuzona)",category:"profanity",severity:"high"},{id:"pt.profanity.arrombado",pattern:"(arrombad*)",category:"profanity",severity:"high"},{id:"pt.profanity.piroca",pattern:"(piroca*|pirocudo*)",category:"profanity",severity:"high"},{id:"pt.profanity.cacete",pattern:"cacete*",category:"profanity",severity:"medium"},{id:"pt.profanity.bosta",pattern:"bosta*",category:"profanity",severity:"medium"},{id:"pt.profanity.vadia",pattern:"(vadia|vadias)",category:"profanity",severity:"high"},{id:"pt.profanity.desgracado",pattern:"(desgracad*)",category:"profanity",severity:"medium"}],Nt=[...["(viado|viados|viadinho*|viadao)","(sapatao|sapatoes|sapatona*)","(traveco|travecos)","(paneleiro|paneleiros|paneleira|paneleiras|paneleirice)"].map(e=>({id:`pt.hate.slur.${e.replace(/[()*]/g,"").split("|")[0]}`,pattern:e,category:"hate",severity:"critical",confidence:.9,label:"slur"})),{id:"pt.hate.group-violence",pattern:"(judeus|muculmanos|cristaos|negros|pretos|brancos|gays|viados|lesbicas|trans|mulheres|imigrantes|nordestinos|indios|refugiados|ciganos|baianos|africanos|arabes) (deveriam|devem|merecem|tem|teem) (que|de)? (ser)? (morrer|queimar|exterminados|exterminadas|mortos|mortas|queimados|queimadas|eliminados|eliminadas|enforcados|fuzilados)",category:"hate",severity:"critical",confidence:.8,label:"dehumanizing"}],_t="(idiota*|imbecil*|burro|burra|estupido*|estupida*|otario*|otaria*|babaca*|lixo|inutil|retardado*|retardada*|mongoloide*|debil|corno*|vagabundo*|vagabunda*|nojento*|nojenta*|patetico*|patetica*|fracassado*|fracassada*|palhaco*|escroto*|escrota*|merda|cabrao|paneleiro|puto|arrombado*|arrombada*|desgracado*|desgracada*|vadia|puta|piranha|cachorra)",$t=[{id:"pt.harassment.insult",pattern:`(voce|vc|tu) (e|eh|es)? (um|uma)? (grande|completo|completa|puta|baita|bela|belo|maior)? ${_t}`,category:"harassment",severity:"medium",confidence:.8,label:"insult"},{id:"pt.harassment.self-harm",pattern:"(vai|va) se (matar|enforcar|suicidar)",category:"harassment",severity:"critical",confidence:.9,label:"self-harm-incitement"},{id:"pt.harassment.self-harm-imperative",pattern:"(mate|enforque|suicide) se",category:"harassment",severity:"critical",confidence:.85,label:"self-harm-incitement"},{id:"pt.harassment.go-die",pattern:"(morre|morra|morram) (logo|desgracado|desgracada|lixo|seu|sua|maldito|maldita)",category:"harassment",severity:"high",confidence:.75,label:"hostility"},{id:"pt.harassment.threat",pattern:"(vou|vamos|irei) te (matar|esfaquear|furar|apagar|quebrar|encher)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"pt.harassment.threat-short",pattern:"te (mato|matarei)",category:"harassment",severity:"high",confidence:.7,label:"threat"},{id:"pt.harassment.nobody-likes",pattern:"ninguem (gosta|liga|quer|suporta|aguenta) (de)? (voce|vc|ti)",category:"harassment",severity:"medium",confidence:.75,label:"exclusion"}],fe={language:"pt",boundary:"word",rules:[...Ot,...Nt,...$t],allowList:[]};var me={allow:0,mask:1,suggest:2,warn:3,block:4},W={low:0,medium:1,high:2,critical:3},q=["profanity","hate","harassment","sexual","custom"];var zt={direct:1,quoted:.5,mention:.4},qt=new Set(["word","words","term","slur","phrase","say","said","saying","says","spell","spelled","called","calling","means","meaning","define","definition","using","use"]),Pt=[['"','"'],["\u201C","\u201D"],["\u2018","\u2019"],["\xAB","\xBB"],["\u300C","\u300D"]];function Ht(e){let t=[];for(let[a,n]of Pt){let r=0;for(;r<e.length;){let i=e.indexOf(a,r);if(i===-1)break;let o=e.indexOf(n,i+1);if(o===-1)break;let c=e.indexOf(`
2
+ `,i);if(c!==-1&&c<o){r=c+1;continue}t.push([i+1,o]),r=o+1}}return t}function Ut(e,t,a){if(e.tokenIndex!==void 0)for(let n=1;n<=2;n++){let r=t[e.tokenIndex-n];if(r&&qt.has(r.value))return"mention"}for(let[n,r]of a)if(e.start>=n&&e.end<=r)return"quoted";return"direct"}var Kt=class{constructor(e){this.onListenerError=e,this.handlers=new Map}on(e,t){let a=this.handlers.get(e);return a||(a=new Set,this.handlers.set(e,a)),a.add(t),()=>{a.delete(t)}}emit(e,t){let a=this.handlers.get(e);if(a)for(let n of[...a])try{n(t)}catch(r){this.onListenerError&&this.onListenerError(r,e)}}clear(){this.handlers.clear()}},Vt=new RegExp("^[\u200B-\u200D\u2060\uFEFF\xAD\u180E]$"),Wt=/\p{M}/u;function Gt(e){let t=e.codePointAt(0);return t>=2304&&t<=3583}var Yt={\u00DF:"ss","\u0901":"\u0902"},Xt={\u0430:"a",\u0432:"b",\u0435:"e",\u0451:"e",\u043A:"k",\u043C:"m",\u043D:"h",\u043E:"o",\u0440:"p",\u0441:"c",\u0442:"t",\u0443:"y",\u0445:"x",\u0455:"s",\u0456:"i",\u0457:"i",\u0458:"j",\u04BB:"h","\u0501":"d","\u051B":"q","\u051D":"w",\u04AF:"y",\u03B1:"a",\u03B2:"b",\u03B5:"e",\u03B7:"n",\u03B9:"i",\u03BA:"k",\u03BD:"v",\u03BF:"o",\u03C1:"p",\u03C4:"t",\u03C5:"u",\u03C7:"x",\u03C9:"w"},He={"@":"a",4:"a",$:"s",5:"s",0:"o",1:"i","!":"i","|":"i",3:"e","\u20AC":"e",7:"t"},ye=new Map;function Ue(e){let t=ye.get(e);if(t!==void 0)return t;let a;if(Vt.test(e))a="";else{a="";for(let n of e.toLowerCase().normalize("NFKD")){if(Wt.test(n)&&!Gt(n))continue;let r=n.toLowerCase();a+=Yt[r]??Xt[r]??r}}return ye.size<1e4&&ye.set(e,a),a}function Ke(e){let t="",a=[],n=[],r=0;for(;r<e.length;){let i=e.codePointAt(r),o=String.fromCodePoint(i),c=r+o.length,s=Ue(o);for(let l=0;l<s.length;l++)a.push(r),n.push(c);t+=s,r=c}return{text:t,starts:a,ends:n}}function G(e){return Ve(Ke(e).text)}var Qt=/\p{L}/u;function Ve(e){if(!Qt.test(e))return e;let t="";for(let a of e)t+=He[a]??a;return t}function We(e){let t=[];for(let a of e){let n=t[t.length-1];n&&n[0]===a?n[1]++:t.push([a,1])}return t}function Zt(e){let t="";for(let[a]of e)t+=a;return t}function ke(e,t){let a=t.runs;if(t.prefix?e.length<a.length:e.length!==a.length)return!1;for(let n=0;n<a.length;n++){let r=e[n],i=a[n];if(r[0]!==i[0]||r[1]<i[1])return!1}return!0}var N=class extends Error{constructor(){super(...arguments),this.name="PatternError"}};function Jt(e,t){let a=e.endsWith("*"),n=G(a?e.slice(0,-1):e);if(!n||/\s/.test(n))throw new N(`Invalid token "${e}" in pattern "${t}"`);let r=We(n);return{value:n,prefix:a,runs:r,key:Zt(r)}}function ea(e){let t=e.trim().split(/\s+/).filter(Boolean);if(t.length===0)throw new N("Pattern must not be empty");return t.map((a,n)=>{let r=a,i=r.endsWith("?");if(i&&(r=r.slice(0,-1)),i&&n===0)throw new N(`First token cannot be optional in "${e}"`);if(r.startsWith("(")){if(!r.endsWith(")"))throw new N(`Unclosed group "${a}" in "${e}"`);r=r.slice(1,-1)}return{alternatives:r.split("|").map(c=>Jt(c,e)),optional:i}})}var Ge={custom:40,hate:30,harassment:20,sexual:15,profanity:10},ta=new Set(["profanity","hate","harassment","sexual","custom"]),aa=new Set(["low","medium","high","critical"]);function na(e,t="word"){if(!e||typeof e.id!="string"||e.id.length===0)throw new TypeError("Rule requires a non-empty id");if(typeof e.pattern!="string")throw new TypeError(`Rule "${e.id}" requires a pattern`);if(!ta.has(e.category))throw new TypeError(`Rule "${e.id}" has unknown category "${String(e.category)}"`);if(e.severity!==void 0&&!aa.has(e.severity))throw new TypeError(`Rule "${e.id}" has unknown severity "${String(e.severity)}"`);let a=e.confidence??1;if(!(a>=0&&a<=1))throw new RangeError(`Rule "${e.id}" confidence must be within [0, 1]`);let n;try{n=ea(e.pattern)}catch(r){throw r instanceof N?new N(`Rule "${e.id}": ${r.message}`):r}if(t==="substring"&&n.length!==1)throw new N(`Rule "${e.id}": substring packs support single-token patterns only`);return{id:e.id,category:e.category,severity:e.severity??"medium",confidence:a,priority:e.priority??Ge[e.category],replacement:e.replacement,label:e.label,boundary:t,elements:n}}var ra=class{constructor(e){this.exact=new Map,this.prefix=new Map,this.substring=[];for(let t of e){if(t.boundary==="substring"){this.substring.push(t);continue}for(let a of t.elements[0].alternatives){let n=a.prefix?this.prefix:this.exact,r=a.prefix?a.key[0]:a.key,i=n.get(r);i?i.push({rule:t,alt:a}):n.set(r,[{rule:t,alt:a}])}}}candidates(e,t){let a=[];for(let n of this.exact.get(t)??[])ke(e,n.alt)&&a.push(n);for(let n of this.prefix.get(t[0]??"")??[])ke(e,n.alt)&&a.push(n);return a}get substringRules(){return this.substring}};function Oe(e,t){let a=We(e.value),n="";for(let[r]of a)n+=r;return{runs:a,key:n,blocked:e.masked||t.has(e.value)}}function ia(e,t){return t.blocked?!1:e.alternatives.some(a=>ke(t.runs,a))}function xe(e,t,a,n){if(t===e.length)return n-1;let r=e[t],i=-1;return n<a.length&&ia(r,a[n])&&(i=xe(e,t+1,a,n+1)),r.optional&&(i=Math.max(i,xe(e,t+1,a,n))),i}function oa(e,t){let{tokens:a,spaced:n,allowList:r,normalized:i}=t,o=a.map(m=>Oe(m,r)),c=[],s=new Set,l=m=>{let b=`${m.rule.id}:${m.start}:${m.end}`;s.has(b)||(s.add(b),c.push(m))};for(let m=0;m<a.length;m++){let b=o[m];if(b.blocked)continue;let x=new Set;for(let{rule:C}of e.candidates(b.runs,b.key)){if(x.has(C.id))continue;x.add(C.id);let I=xe(C.elements,1,o,m+1);I<m||l({start:a[m].start,end:a[I].end,rule:C,confidence:C.confidence,tokenIndex:m})}}for(let m of n){let b=Oe(m,r);if(!b.blocked)for(let{rule:x}of e.candidates(b.runs,b.key))x.elements.length===1&&l({start:m.start,end:m.end,rule:x,confidence:x.confidence,tokenIndex:m.firstIndex})}let E=i.text;for(let m of e.substringRules)for(let b of m.elements[0].alternatives)for(let x=E.indexOf(b.value);x!==-1;x=E.indexOf(b.value,x+1)){let C=x+b.value.length;l({start:i.starts[x],end:i.ends[C-1],rule:m,confidence:m.confidence})}return c}var ua=new Set(["allow","mask","suggest","warn","block"]);function Te(e){if(!ua.has(e))throw new TypeError(`Unknown moderation action "${String(e)}"`)}function ge(e,t){let a=new Set(t),n=(r,i)=>({enabled:a.has(r),...i});return{profanity:n("profanity",{action:e,minConfidence:0,minSeverity:"medium"}),custom:n("custom",{action:e,minConfidence:0,minSeverity:"low"}),hate:n("hate",{action:e,minConfidence:.6,minSeverity:"low"}),harassment:n("harassment",{action:e==="mask"?"warn":e,minConfidence:.6,minSeverity:"low"}),sexual:n("sexual",{action:e==="mask"?"warn":e,minConfidence:.6,minSeverity:"low"})}}function ve(e,t){let a={...e};if(!t)return a;for(let n of q){let r=t[n];if(r){if(r.action!==void 0&&Te(r.action),r.minConfidence!==void 0&&!(r.minConfidence>=0&&r.minConfidence<=1))throw new RangeError(`minConfidence for "${n}" must be within [0, 1]`);if(r.minSeverity!==void 0&&!(r.minSeverity in W))throw new TypeError(`Unknown severity "${String(r.minSeverity)}"`);a[n]={...a[n],...sa(r)}}}return a}function sa(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function ca(e,t,a){return!e.enabled||W[t]<W[e.minSeverity]?{keep:!1,action:"allow",requiresReview:!1}:a<e.minConfidence?{keep:!0,action:"allow",requiresReview:!0}:{keep:!0,action:e.action,requiresReview:!1}}function la(e){let t="allow";for(let a of e)me[a]>me[t]&&(t=a);return t}function da(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function ha(e,t={}){let a=Math.max(0,t.debounceMs??0),n=0,r,i,o,c=()=>{n++,i!==void 0&&clearTimeout(i),i=void 0,o?.(void 0),o=void 0,r?.abort(),r=void 0};return{moderate(s){c();let l=n;return new Promise((E,m)=>{o=E;let b=()=>{i=void 0;let x=new AbortController;r=x,e(s,{signal:x.signal}).then(C=>{l===n&&(o=void 0,r=void 0,E(C))},C=>{l===n&&(o=void 0,r=void 0,da(C)?E(void 0):m(C))})};a>0?i=setTimeout(b,a):b()})},cancel:c}}var Ne=new Set(["*","!","|"]),pa=new Set([" ",".","-","_"]),_e=new Map;function fa(e){let t=_e.get(e);if(!t){let a=e.replace(/[\\\]^-]/g,"\\$&");t=new RegExp(`[\\p{L}\\p{M}\\p{N}@$!|*\u20AC${a}]+`,"gu"),_e.set(e,t)}return t}function ma(e,t="*"){let{text:a,starts:n,ends:r}=e,i=[],o=fa(t);o.lastIndex=0;for(let c=o.exec(a);c!==null;c=o.exec(a)){let s=c.index,l=c.index+c[0].length;for(;s<l&&Ne.has(a[s]);)s++;for(;l>s&&Ne.has(a[l-1]);)l--;if(s===l)continue;let E=a.slice(s,l);i.push({start:n[s],end:r[l-1],nStart:s,nEnd:l,value:Ve(E),masked:E.includes(t),firstIndex:i.length})}return i}function ya(e,t){let a=[],n=0;for(;n<e.length;){let r=n;for(;r+1<e.length&&e[r].value.length===1&&e[r+1].value.length===1&&e[r+1].nStart-e[r].nEnd===1&&pa.has(t[e[r].nEnd]);)r++;if(r-n+1>=3){let i=e.slice(n,r+1);a.push({start:i[0].start,end:i[i.length-1].end,nStart:i[0].nStart,nEnd:i[i.length-1].nEnd,value:i.map(o=>o.value).join(""),masked:i.some(o=>o.masked),firstIndex:n}),n=r+1}else n++}return a}var ga=new RegExp("[\\p{L}\\p{N}@$!|\u20AC]","u"),va=/\p{M}/u,Ea=new Set(["a","e","i","o","u"]);function ba(e){return ga.test(e)}function wa(e){let t=[];for(let a of e)va.test(a)&&t.length>0?t[t.length-1]+=a:t.push(a);return t}function $e(e,t="vowels",a="*"){if(typeof t=="function")return t(e);let n=wa(e),r=n.map((s,l)=>ba(Array.from(s)[0])?l:-1).filter(s=>s>=0);if(r.length===0)return e;let i=n.slice(),o=r[0],c=r[r.length-1];if(t==="full"){for(let s of r)i[s]=a;return i.join("")}if(t==="vowels"){let s=0;for(let l of r){if(l===o)continue;let E=Ue(Array.from(n[l])[0]);Ea.has(He[E]??E)&&(i[l]=a,l!==c&&s++)}if(s>0)return i.join("");for(let l of r)i[l]=n[l]}for(let s of r)s!==o&&(s===c&&r.length>2||(i[s]=a));return i.join("")}function ka(e,t){let a=e.replace(/[^\p{L}]/gu,"");if(a.length>1&&a===a.toUpperCase()&&a!==a.toLowerCase())return t.toUpperCase();let n=a[0];return n&&n!==n.toLowerCase()?t.charAt(0).toUpperCase()+t.slice(1):t}function P(e,t){let a=[...t].sort((i,o)=>i.start-o.start);for(let i=1;i<a.length;i++)if(a[i].start<a[i-1].end)throw new RangeError("Edits must not overlap");let n="",r=0;for(let i of a)n+=e.slice(r,i.start)+i.replacement,r=i.end;return n+=e.slice(r),{text:n,mapping:xa(a,e.length,n.length)}}function xa(e,t,a){let n=Object.freeze(e.map(i=>Object.freeze({...i}))),r=(i,o)=>Math.min(Math.max(0,Math.trunc(i)),o);return{edits:n,toTransformed(i){let o=r(i,t),c=0;for(let s of n){if(o<=s.start)return o+c;if(o<s.end)return s.start+c+Math.min(o-s.start,s.replacement.length);c+=s.replacement.length-(s.end-s.start)}return o+c},toOriginal(i){let o=r(i,a),c=0;for(let s of n){let l=s.start+c,E=l+s.replacement.length;if(o<=l)return o-c;if(o<E)return s.start+Math.min(o-l,s.end-s.start);c+=s.replacement.length-(s.end-s.start)}return o-c}}}var Ee={en:ue,"hi-latn":ce,hi:pe,es:de,fr:he,de:le,pt:fe},ze={en:["en","hi-latn"],hi:["hi","hi-latn"]};function Ta(e,t){let a=e.toLowerCase();return(t??(Ee[a]&&!ze[a]?[a]:ze[a.split("-")[0]]??[e])).map(r=>{let i=r.toLowerCase(),o=Ee[i]??Ee[i.split("-")[0]];if(!o)throw new Error(`No built-in dictionary pack for language "${r}". Pass one via the \`packs\` option.`);return o})}function be(e){return e?.reason!==void 0?e.reason:new DOMException("The operation was aborted.","AbortError")}function we(e){return Math.round(e*1e4)/1e4}function qe(e){return Math.min(1,Math.max(0,e))}var Pe=new Set(q);function Y(e={}){let t=e.mode??"mask";Te(t);let a=e.language??"en",n=e.categories??q;for(let u of n)if(!Pe.has(u))throw new TypeError(`Unknown category "${String(u)}"`);let r=e.maskChar??"*";if(Array.from(r).length!==1||/[\p{L}\p{N}\s]/u.test(r))throw new TypeError("maskChar must be a single non-letter, non-digit, non-space character");let i=e.maskStyle??"vowels",o=e.detectSpacedLetters??!0,c=e.classifiers??[],s=e.classifierTimeoutMs??3e3,l=new Kt((u,h)=>{h!=="error"&&l.emit("error",{error:u})});e.onModerated&&l.on("moderated",e.onModerated),e.onViolation&&l.on("violation",e.onViolation),e.onBlocked&&l.on("blocked",e.onBlocked),e.onWarning&&l.on("warning",e.onWarning),e.onError&&l.on("error",e.onError);let E=new Map,m=new Set,b=null,x=(u,h="word")=>{E.set(u.id,{source:{...u},compiled:na(u,h)}),b=null};for(let u of e.packs??Ta(a,e.languages)){for(let h of u.rules)x(h,u.boundary??"word");for(let h of u.allowList??[])m.add(G(h))}for(let u of e.customWords??[]){let h=u.replace(/[()|?]/g,"").trim().split(/\s+/).join(" ");h&&x({id:`custom.${G(h).replace(/\s+/g,"-")}`,pattern:h,category:"custom",severity:"medium"})}for(let u of e.rules??[])x(u);for(let u of e.allowList??[])m.add(G(u));let C={...e.policy},I=ve(ge(t,n),C),U=()=>(b||(b=new ra(Array.from(E.values(),u=>u.compiled))),b);function _(u){let h=Ke(u),v=ma(h,r),g=o?ya(v,h.text):[],p=oa(U(),{normalized:h,tokens:v,spaced:g,allowList:m});if(p.length===0)return[];let T=Ht(u);return p.map(S=>{let M=Ut(S,v,T);return{...S,context:M,confidence:we(S.confidence*zt[M])}})}function K(u){let h=[...u].sort((g,p)=>p.priority-g.priority||p.end-p.start-(g.end-g.start)||g.start-p.start||(g.ruleId<p.ruleId?-1:g.ruleId>p.ruleId?1:0)),v=[];for(let g of h)v.every(p=>g.end<=p.start||g.start>=p.end)&&v.push(g);return v}function j(u,h,v){let g=[];for(let f of h){let w=f.rule,B=ca(I[w.category],w.severity,f.confidence);if(!B.keep)continue;let O=v&&B.action!=="allow"?v:B.action,V=w.elements.length>1||w.elements.length===0&&/\s/.test(u.slice(f.start,f.end).trim());O==="mask"&&V&&(w.category==="hate"||w.category==="harassment"||w.category==="sexual")&&(O="warn");let d=u.slice(f.start,f.end),y={start:f.start,end:f.end,text:d,category:w.category,ruleId:w.id,severity:w.severity,confidence:f.confidence,priority:w.priority,context:f.context,action:O,requiresReview:B.requiresReview,applied:!1};w.replacement!==void 0?y.suggestedReplacement=ka(d,w.replacement):O==="suggest"&&(y.suggestedReplacement=$e(d,i,r)),w.label!==void 0&&(y.label=w.label),f.source!==void 0&&(y.source=f.source),g.push(y)}g.sort((f,w)=>f.start-w.start||f.end-w.end||w.priority-f.priority);let p=K(g.filter(f=>f.action==="mask")),T=K(g.filter(f=>f.action==="mask"||f.action==="suggest")),S=f=>({start:f.start,end:f.end,replacement:f.action==="suggest"&&f.suggestedReplacement!==void 0?f.suggestedReplacement:$e(f.text,i,r)});for(let f of p)f.applied=!0;for(let f of T)f.action==="suggest"&&(f.applied=!0);let M=P(u,p.map(S)),L=P(u,T.map(S)),F=la(g.map(f=>f.action));return{originalText:u,text:M.text,suggestedText:L.text,matches:g,allowed:F!=="block",action:F,requiresReview:g.some(f=>f.requiresReview),mapping:M.mapping}}function $(u){l.emit("moderated",u),u.matches.some(h=>h.action!=="allow")&&l.emit("violation",u),u.action==="block"&&l.emit("blocked",u),u.matches.some(h=>h.action==="warn")&&l.emit("warning",u)}async function R(u,h,v,g){let p=new AbortController,T=()=>p.abort(be(g));g?.addEventListener("abort",T,{once:!0});let S;try{return await new Promise((M,L)=>{p.signal.addEventListener("abort",()=>L(p.signal.reason),{once:!0}),S=setTimeout(()=>{let F=new Error(`Classifier "${u.name}" timed out after ${v}ms`);F.name="TimeoutError",p.abort(F)},v),Promise.resolve().then(()=>u.classify({...h,signal:p.signal})).then(M,L)})}finally{S!==void 0&&clearTimeout(S),g?.removeEventListener("abort",T)}}function z(u,h,v,g){for(let p of g.adjustments??[]){let T=h.find(S=>S.rule.id===p.ruleId&&S.start===p.start);T&&Number.isFinite(p.confidence)&&(T.confidence=we(qe(p.confidence)))}for(let p of g.matches??[]){if(!Pe.has(p.category)||!(Number.isInteger(p.start)&&Number.isInteger(p.end)&&p.start>=0&&p.end<=u.length&&p.start<p.end))continue;let T={id:`${v}:${p.label??p.category}`,category:p.category,severity:p.severity??"medium",confidence:qe(p.confidence),priority:Ge[p.category],replacement:p.replacement,label:p.label,boundary:"word",elements:[]};h.push({start:p.start,end:p.end,rule:T,confidence:we(T.confidence),context:"direct",source:v})}}let A={moderate(u){let h=j(u,_(u));return $(h),h},async moderateAsync(u,h={}){let{signal:v}=h;if(v?.aborted)throw be(v);let g=_(u),p=[],T=[];if(c.length>0){let M=j(u,g),L=h.timeoutMs??s,F=await Promise.all(c.map(f=>R(f,{text:u,matches:M.matches,language:a},L,v).then(w=>({classifier:f,output:w,error:void 0}),w=>({classifier:f,output:void 0,error:w}))));if(v?.aborted)throw be(v);for(let{classifier:f,output:w,error:B}of F)w?(z(u,g,f.name,w),p.push(f.name)):(T.push(f.name),l.emit("error",{error:B,provider:f.name}))}let S={...j(u,g),providers:p,failedProviders:T};return $(S),S},mask(u){return j(u,_(u),"mask").text},validate(u){let h=A.moderate(u);return{valid:h.allowed,result:h,violations:h.matches.filter(v=>v.action!=="allow")}},addRule(u){x(u)},removeRule(u){let h=E.delete(u);return h&&(b=null),h},getRules(){return Array.from(E.values(),u=>({...u.source}))},setPolicy(u){let h={...C};for(let v of q){let g=u[v];g&&(h[v]={...h[v],...g})}I=ve(ge(t,n),h),C=h},setMode(u){Te(u),t=u,I=ve(ge(t,n),C)},on(u,h){return l.on(u,h)},createSession(u){return ha((h,v)=>A.moderateAsync(h,v),u)}};return A}var Q="input, textarea, [contenteditable]",Ca=new Set(["text","search"]),Sa=new Set(["current-password","new-password","one-time-code","email","username","tel","cc-name","cc-given-name","cc-family-name","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc","cc-type"]),Aa=/pass(word|wd)?|pwd|secret|token|otp|one.?time|cvv|cvc|card.?num|cc.?num|iban|ssn|social.?sec|pin(code)?$/i,X=[".ProseMirror","[data-lexical-editor]",".ql-editor",".cm-content",".monaco-editor","[data-slate-editor]",".public-DraftEditor-content",".ck-editor__editable"].join(", ");function Z(e){return e.tagName==="INPUT"||e.tagName==="TEXTAREA"}function Ye(e){let t=e;if(typeof t.isContentEditable=="boolean")return t.isContentEditable;for(let a=e;a;a=a.parentElement){let n=a.getAttribute("contenteditable");if(n!==null)return n===""||n==="true"||n==="plaintext-only"}return!1}function Da(e){return Z(e)||!Ye(e)?!1:!e.parentElement||!Ye(e.parentElement)}function Ce(e){return(e.getAttribute("autocomplete")??"").toLowerCase().split(/\s+/).some(n=>Sa.has(n))?!0:[e.getAttribute("name"),e.id,e.getAttribute("inputmode")==="numeric"?"pin":null].some(n=>n!==null&&n!==""&&Aa.test(n))}function H(e,t){if(e.nodeType!==1||e.closest('[data-safetype="off"]'))return!1;for(let a of t)if(e.matches(a))return!1;if(e.tagName==="INPUT"){let a=e,n=(a.getAttribute("type")??"text").toLowerCase();return!Ca.has(n)||a.readOnly||a.disabled?!1:!Ce(e)}if(e.tagName==="TEXTAREA"){let a=e;return a.readOnly||a.disabled?!1:!Ce(e)}return!Da(e)||e.matches(X)||e.closest(X)?!1:!Ce(e)}var Se={warn:"This may come across as hurtful. Please consider rephrasing.",block:"This can't be sent because it contains language that breaks the community guidelines."},Ra="This may not be appropriate here. Please consider rephrasing.",Xe=`
3
3
  :where(.safetype-message){display:block;margin-top:4px;font-size:.875em;line-height:1.4}
4
4
  :where(.safetype-message[data-level="warn"]){color:#8a5300}
5
5
  :where(.safetype-message[data-level="block"]){color:#b42318}
6
- `;function ee(e){return e.action==="block"?"block":e.matches.some(t=>t.action==="warn")?"warn":null}function Ae(e,t,a){let n=a.matches.filter(o=>o.action==="warn"),r=e==="warn"&&n.length>0&&n.every(o=>o.category==="sexual")?Ra:Se[e],i=t?.[e]??r;return typeof i=="function"?i(a):i}var Ma=0;function La(e,t,a){let n=(e.getAttribute(t)??"").split(/\s+/).filter(Boolean);n.includes(a)||e.setAttribute(t,[...n,a].join(" "))}function Fa(e,t,a){let n=(e.getAttribute(t)??"").split(/\s+/).filter(r=>r&&r!==a);n.length?e.setAttribute(t,n.join(" ")):e.removeAttribute(t)}var J=class{constructor(t,a){this.field=t;this.texts=a;this.node=null;this.id=`safetype-message-${++Ma}`;this.setInvalid=!1}update(t,a){if(!t)return this.clear();let n=Ae(t,this.texts,a);if(!this.node){let r=this.field.ownerDocument.createElement("div");r.id=this.id,r.className="safetype-message",r.setAttribute("role","status"),r.setAttribute("aria-live","polite"),this.field.insertAdjacentElement("afterend",r),La(this.field,"aria-describedby",this.id),this.node=r}this.node.dataset.level=t,this.node.textContent!==n&&(this.node.textContent=n),t==="block"?this.field.hasAttribute("aria-invalid")||(this.field.setAttribute("aria-invalid","true"),this.setInvalid=!0):this.clearInvalid()}clearInvalid(){this.setInvalid&&this.field.removeAttribute("aria-invalid"),this.setInvalid=!1}clear(){this.clearInvalid(),this.node&&(this.node.remove(),this.node=null,Fa(this.field,"aria-describedby",this.id))}};var Ba=new Set(["insertFromPaste","insertFromPasteAsQuotation","insertFromDrop","insertReplacementText","insertFromYank"]);function Ia(e){return e.matches.filter(t=>t.action!=="allow").map(t=>`${t.ruleId}:${t.start}:${t.end}:${t.action}`).join("|")}var te=class{constructor(t,a,n){this.element=t;this.surface=a;this.ctx=n;this.applying=!1;this.composing=!1;this.attached=!1;this.lastViolationKey="";this.lastWarningKey="";this.listeners=[];this.messages=n.showMessages?new J(t,n.messages):null,this.session=n.asyncModeration?n.engine.createSession({debounceMs:n.asyncDebounceMs}):null}attach(){this.attached||(this.attached=!0,this.listen("input",t=>this.onInput(t)),this.listen("compositionstart",()=>{this.composing=!0}),this.listen("compositionend",()=>{this.composing=!1,this.safeRun("typing")}),this.listen("focusout",()=>this.safeRun("final")))}detach(){if(this.attached){this.attached=!1;for(let[t,a]of this.listeners)this.element.removeEventListener(t,a);this.listeners.length=0,this.session?.cancel(),this.messages?.clear()}}listen(t,a){this.element.addEventListener(t,a),this.listeners.push([t,a])}onInput(t){if(this.applying||this.composing||t.isComposing)return;let a=t.inputType??"";a==="historyUndo"||a==="historyRedo"?this.safeRun("observe"):Ba.has(a)?this.safeRun("final"):this.safeRun("typing")}safeRun(t){try{this.run(t)}catch(a){this.ctx.reportError(a,this.element)}}run(t){let a=this.surface.getText(),n=this.ctx.engine.moderate(a);return this.applyResult(n,t),this.session&&t!=="observe"&&this.session.moderate(a).then(r=>{r&&this.attached&&this.surface.getText()===r.originalText&&this.applyResult(r,t==="final"?"final":"typing")},r=>this.ctx.reportError(r,this.element)),n}applyResult(t,a){let n=t.originalText,r=a==="observe"?[]:t.mapping.edits.filter(i=>n.slice(i.start,i.end)!==i.replacement);if(a==="typing"&&r.length){let i=this.surface.getSelection();if(i&&i.start===i.end){let o=i.start;r=r.filter(c=>!(c.start<o&&o<=c.end))}}if(r.length){this.applying=!0;try{this.surface.apply(n,r)}finally{this.applying=!1}}this.result=t,this.updateMessages(t),this.emit(t)}updateMessages(t){this.messages&&this.messages.update(ee(t),t)}emit(t){this.ctx.dispatch("moderated",t,this.element);let a=Ia(t);a!==this.lastViolationKey&&(this.lastViolationKey=a,a&&this.ctx.dispatch("violation",t,this.element));let n=t.matches.filter(r=>r.action==="warn").map(r=>`${r.ruleId}:${r.start}`).join("|");n!==this.lastWarningKey&&(this.lastWarningKey=n,n&&this.ctx.dispatch("warning",t,this.element))}};function Xe(e){return typeof e.execCommand=="function"}function Qe(e){return[...e].sort((t,a)=>a.start-t.start)}function ja(e,t){let a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),"value");a?.set?a.set.call(e,t):e.value=t}var ae=class{constructor(t){this.el=t}getText(){return this.el.value}getSelection(){let{el:t}=this;return t.ownerDocument.activeElement!==t||t.selectionStart===null||t.selectionEnd===null?null:{start:t.selectionStart,end:t.selectionEnd}}apply(t,a){let{el:n}=this,r=n.ownerDocument,{text:i,mapping:o}=q(t,a),c=this.getSelection(),s=n.selectionDirection??void 0,{scrollTop:l,scrollLeft:E}=n,m=!1;if(c&&Xe(r)){m=!0;try{for(let b of Qe(a))if(n.setSelectionRange(b.start,b.end),!r.execCommand("insertText",!1,b.replacement)){m=!1;break}}catch{m=!1}}if((!m||n.value!==i)&&(ja(n,i),n.dispatchEvent(new Event("input",{bubbles:!0}))),c)try{n.setSelectionRange(o.toTransformed(c.start),o.toTransformed(c.end),s)}catch{}n.scrollTop=l,n.scrollLeft=E}},Oa=new Set(["ADDRESS","ARTICLE","ASIDE","BLOCKQUOTE","DD","DETAILS","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HR","LI","MAIN","NAV","OL","P","PRE","SECTION","SUMMARY","TABLE","TD","TH","TR","UL"]),Na=1,_a=4,ne=class{constructor(t){this.root=t}blockOf(t){for(let a=t.parentNode;a&&a!==this.root;a=a.parentNode)if(a.nodeType===1&&Oa.has(a.tagName))return a;return this.root}snapshot(){let a=this.root.ownerDocument.createTreeWalker(this.root,Na|_a),n="",r=[],i=null;for(let o=a.nextNode();o;o=a.nextNode()){if(o.nodeType===1){o.tagName==="BR"&&(n+=`
6
+ `;function ee(e){return e.action==="block"?"block":e.matches.some(t=>t.action==="warn")?"warn":null}function Ae(e,t,a){let n=a.matches.filter(o=>o.action==="warn"),r=e==="warn"&&n.length>0&&n.every(o=>o.category==="sexual")?Ra:Se[e],i=t?.[e]??r;return typeof i=="function"?i(a):i}var Ma=0;function Fa(e,t,a){let n=(e.getAttribute(t)??"").split(/\s+/).filter(Boolean);n.includes(a)||e.setAttribute(t,[...n,a].join(" "))}function La(e,t,a){let n=(e.getAttribute(t)??"").split(/\s+/).filter(r=>r&&r!==a);n.length?e.setAttribute(t,n.join(" ")):e.removeAttribute(t)}var J=class{constructor(t,a){this.field=t;this.texts=a;this.node=null;this.id=`safetype-message-${++Ma}`;this.setInvalid=!1}update(t,a){if(!t)return this.clear();let n=Ae(t,this.texts,a);if(!this.node){let r=this.field.ownerDocument.createElement("div");r.id=this.id,r.className="safetype-message",r.setAttribute("role","status"),r.setAttribute("aria-live","polite"),this.field.insertAdjacentElement("afterend",r),Fa(this.field,"aria-describedby",this.id),this.node=r}this.node.dataset.level=t,this.node.textContent!==n&&(this.node.textContent=n),t==="block"?this.field.hasAttribute("aria-invalid")||(this.field.setAttribute("aria-invalid","true"),this.setInvalid=!0):this.clearInvalid()}clearInvalid(){this.setInvalid&&this.field.removeAttribute("aria-invalid"),this.setInvalid=!1}clear(){this.clearInvalid(),this.node&&(this.node.remove(),this.node=null,La(this.field,"aria-describedby",this.id))}};var Ba=new Set(["insertFromPaste","insertFromPasteAsQuotation","insertFromDrop","insertReplacementText","insertFromYank"]);function Ia(e){return e.matches.filter(t=>t.action!=="allow").map(t=>`${t.ruleId}:${t.start}:${t.end}:${t.action}`).join("|")}var te=class{constructor(t,a,n){this.element=t;this.surface=a;this.ctx=n;this.applying=!1;this.composing=!1;this.attached=!1;this.lastViolationKey="";this.lastWarningKey="";this.listeners=[];this.messages=n.showMessages?new J(t,n.messages):null,this.session=n.asyncModeration?n.engine.createSession({debounceMs:n.asyncDebounceMs}):null}attach(){this.attached||(this.attached=!0,this.listen("input",t=>this.onInput(t)),this.listen("compositionstart",()=>{this.composing=!0}),this.listen("compositionend",()=>{this.composing=!1,this.safeRun("typing")}),this.listen("focusout",()=>this.safeRun("final")))}detach(){if(this.attached){this.attached=!1;for(let[t,a]of this.listeners)this.element.removeEventListener(t,a);this.listeners.length=0,this.session?.cancel(),this.messages?.clear()}}listen(t,a){this.element.addEventListener(t,a),this.listeners.push([t,a])}onInput(t){if(this.applying||this.composing||t.isComposing)return;let a=t.inputType??"";a==="historyUndo"||a==="historyRedo"?this.safeRun("observe"):Ba.has(a)?this.safeRun("final"):this.safeRun("typing")}safeRun(t){try{this.run(t)}catch(a){this.ctx.reportError(a,this.element)}}run(t){let a=this.surface.getText(),n=this.ctx.engine.moderate(a);return this.applyResult(n,t),this.session&&t!=="observe"&&this.session.moderate(a).then(r=>{r&&this.attached&&this.surface.getText()===r.originalText&&this.applyResult(r,t==="final"?"final":"typing")},r=>this.ctx.reportError(r,this.element)),n}applyResult(t,a){let n=t.originalText,r=a==="observe"?[]:t.mapping.edits.filter(i=>n.slice(i.start,i.end)!==i.replacement);if(a==="typing"&&r.length){let i=this.surface.getSelection();if(i&&i.start===i.end){let o=i.start;r=r.filter(c=>!(c.start<o&&o<=c.end))}}if(r.length){this.applying=!0;try{this.surface.apply(n,r)}finally{this.applying=!1}}this.result=t,this.updateMessages(t),this.emit(t)}updateMessages(t){this.messages&&this.messages.update(ee(t),t)}emit(t){this.ctx.dispatch("moderated",t,this.element);let a=Ia(t);a!==this.lastViolationKey&&(this.lastViolationKey=a,a&&this.ctx.dispatch("violation",t,this.element));let n=t.matches.filter(r=>r.action==="warn").map(r=>`${r.ruleId}:${r.start}`).join("|");n!==this.lastWarningKey&&(this.lastWarningKey=n,n&&this.ctx.dispatch("warning",t,this.element))}};function Qe(e){return typeof e.execCommand=="function"}function Ze(e){return[...e].sort((t,a)=>a.start-t.start)}function ja(e,t){let a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),"value");a?.set?a.set.call(e,t):e.value=t}var ae=class{constructor(t){this.el=t}getText(){return this.el.value}getSelection(){let{el:t}=this;return t.ownerDocument.activeElement!==t||t.selectionStart===null||t.selectionEnd===null?null:{start:t.selectionStart,end:t.selectionEnd}}apply(t,a){let{el:n}=this,r=n.ownerDocument,{text:i,mapping:o}=P(t,a),c=this.getSelection(),s=n.selectionDirection??void 0,{scrollTop:l,scrollLeft:E}=n,m=!1;if(c&&Qe(r)){m=!0;try{for(let b of Ze(a))if(n.setSelectionRange(b.start,b.end),!r.execCommand("insertText",!1,b.replacement)){m=!1;break}}catch{m=!1}}if((!m||n.value!==i)&&(ja(n,i),n.dispatchEvent(new Event("input",{bubbles:!0}))),c)try{n.setSelectionRange(o.toTransformed(c.start),o.toTransformed(c.end),s)}catch{}n.scrollTop=l,n.scrollLeft=E}},Oa=new Set(["ADDRESS","ARTICLE","ASIDE","BLOCKQUOTE","DD","DETAILS","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HR","LI","MAIN","NAV","OL","P","PRE","SECTION","SUMMARY","TABLE","TD","TH","TR","UL"]),Na=1,_a=4,ne=class{constructor(t){this.root=t}blockOf(t){for(let a=t.parentNode;a&&a!==this.root;a=a.parentNode)if(a.nodeType===1&&Oa.has(a.tagName))return a;return this.root}snapshot(){let a=this.root.ownerDocument.createTreeWalker(this.root,Na|_a),n="",r=[],i=null;for(let o=a.nextNode();o;o=a.nextNode()){if(o.nodeType===1){o.tagName==="BR"&&(n+=`
7
7
  `);continue}let c=o,s=this.blockOf(c);i&&s!==i&&!n.endsWith(`
8
8
  `)&&(n+=`
9
- `),i=s,r.push({node:c,start:n.length,end:n.length+c.data.length}),n+=c.data}return{text:n,segments:r}}pointFor(t,a){for(let r of a){if(t<r.start)return{node:r.node,offset:0};if(t<=r.end)return{node:r.node,offset:t-r.start}}let n=a[a.length-1];return n?{node:n.node,offset:n.node.data.length}:{node:this.root,offset:0}}offsetFor(t,a,n){let r=this.root.ownerDocument.createRange();r.setStart(this.root,0),r.setEnd(t,a);let i=0;for(let o of n){if(o.node===t)return o.start+a;if(r.comparePoint(o.node,o.node.data.length)===0)i=o.end;else break}return i}getText(){return this.snapshot().text}getSelection(){let t=this.root.ownerDocument.getSelection();if(!t||t.rangeCount===0)return null;let a=t.getRangeAt(0);if(!this.root.contains(a.startContainer)||!this.root.contains(a.endContainer))return null;let{segments:n}=this.snapshot();return{start:this.offsetFor(a.startContainer,a.startOffset,n),end:this.offsetFor(a.endContainer,a.endOffset,n)}}replaceDirect(t,a){let n=t.replacement.length===t.end-t.start,r=!0;for(let i of a){let o=Math.max(t.start,i.start),c=Math.min(t.end,i.end);if(!(o>=c)){if(n){let s=t.replacement.slice(o-t.start,c-t.start);i.node.data.slice(o-i.start,c-i.start)!==s&&i.node.replaceData(o-i.start,c-o,s)}else r?i.node.replaceData(o-i.start,c-o,t.replacement):i.node.deleteData(o-i.start,c-o);r=!1}}}apply(t,a){let n=this.root.ownerDocument,{mapping:r}=q(t,a),i=this.getSelection();for(let o of Qe(a)){let{segments:c}=this.snapshot(),s=this.pointFor(o.start,c),l=this.pointFor(o.end,c);if(i&&s.node===l.node&&s.node.nodeType===3&&Xe(n)){let E=n.createRange();E.setStart(s.node,s.offset),E.setEnd(l.node,l.offset);let m=n.getSelection();m?.removeAllRanges(),m?.addRange(E);try{if(n.execCommand("insertText",!1,o.replacement))continue}catch{}}this.replaceDirect(o,c)}if(i){let{segments:o}=this.snapshot(),c=this.pointFor(r.toTransformed(i.start),o),s=this.pointFor(r.toTransformed(i.end),o),l=n.createRange();l.setStart(c.node,c.offset),l.setEnd(s.node,s.offset);let E=n.getSelection();E?.removeAllRanges(),E?.addRange(l)}}};var $a=["type","contenteditable","data-safetype","readonly","disabled","autocomplete","name"],re=new WeakMap;function za(e){let t=re.get(e);if(t){t.count++;return}let a=e.nodeType===9?e:e.ownerDocument,n=a.createElement("style");n.setAttribute("data-safetype",""),n.textContent=Ye,(e.nodeType===9?a.head??a.documentElement:e).appendChild(n),re.set(e,{node:n,count:1})}function Pa(e){let t=re.get(e);t&&--t.count===0&&(t.node.remove(),re.delete(e))}var qa={moderated:"onModerated",violation:"onViolation",warning:"onWarning",blocked:"onBlocked"};function Ze(e={}){let{selector:t=Q,root:a,engine:n,observeDynamicElements:r=!0,excludeSelectors:i=[],showMessages:o=!0,messages:c={},injectStyles:s=!0,blockSubmit:l=!0,asyncModeration:E,asyncDebounceMs:m=300,onModerated:b,onViolation:x,onWarning:C,onBlocked:I,onError:U,..._}=e,K={onModerated:b,onViolation:x,onWarning:C,onBlocked:I},j=n??Y(_),$=(d,y)=>{U?U(d,y):console.error("[safetype]",d)};n||j.on("error",({error:d})=>$(d));let R=new Map,z=null,A=null,u=!1,h=!1,v=(d,y,k)=>{try{K[qa[d]]?.(y,k)}catch(ie){$(ie,k)}let D=k.ownerDocument.defaultView;D&&k.dispatchEvent(new D.CustomEvent(`safetype:${d}`,{bubbles:!0,composed:!0,detail:{result:y,element:k}}))},g={engine:j,showMessages:o,messages:c,asyncModeration:E??(_.classifiers?.length??0)>0,asyncDebounceMs:m,dispatch:v,reportError:$};function p(d){let y=d;if(h)return!1;if(R.has(y))return!0;if(!H(y,i))return!1;let k=Z(y)?new ae(y):new ne(y),D=new te(y,k,g);return D.attach(),R.set(y,D),!0}function T(d){let y=R.get(d);y&&(y.detach(),R.delete(d))}let S=d=>d.matches(t);function M(d){S(d)&&p(d),d.querySelectorAll(t).forEach(p)}function F(d){let y=S(d)&&H(d,i),k=R.has(d);y&&!k?p(d):!y&&k&&T(d)}function L(){for(let d of[...R.keys()])d.isConnected||T(d)}let f=d=>{let y=!1;for(let k of d)if(k.type==="childList")k.addedNodes.forEach(D=>{D.nodeType===1&&M(D)}),k.removedNodes.length&&(y=!0);else if(k.type==="attributes"&&k.target.nodeType===1){let D=k.target;F(D),D.querySelectorAll(t).forEach(F)}y&&L()},w=d=>{let y=d.target;if(!y||y.nodeType!==1)return;let k=null;for(let[D,ie]of R){if((Z(D)?D.form:null)!==y&&!y.contains(D))continue;let De=ie.run("final");De.action==="block"&&(k??(k=D),v("blocked",De,D))}k&&l&&(d.preventDefault(),d.stopImmediatePropagation(),k.focus())},B=d=>d.nodeType===1?d.ownerDocument:d,O=d=>d.nodeType===9||d.nodeType===11?d:d.ownerDocument??document,V={engine:j,get running(){return u},get elements(){return[...R.keys()]},start(){if(h)throw new Error("This SafeType instance was destroyed. Create a new one with createSafeType().");if(u)return;let d=a??(typeof document>"u"?null:document);if(!d)throw new Error("@safetype/dom needs a DOM. Pass `root` or call start() in a browser.");if(A=d,u=!0,s&&o&&za(O(A)),A.nodeType===1?M(A):A.querySelectorAll(t).forEach(p),B(A).addEventListener("submit",w,!0),r){let k=(A.nodeType===9?A:A.ownerDocument)?.defaultView?.MutationObserver??globalThis.MutationObserver;z=new k(f),z.observe(A,{childList:!0,subtree:!0,attributes:!0,attributeFilter:$a})}},stop(){if(!(!u||!A)){u=!1,z?.disconnect(),z=null,B(A).removeEventListener("submit",w,!0);for(let d of[...R.keys()])T(d);s&&o&&Pa(O(A)),A=null}},destroy(){V.stop(),h=!0},attach:p,detach:T,getResult(d){return R.get(d)?.result},validate(){L();let d=[];for(let[y,k]of R)d.push({element:y,result:k.run("final")});return{valid:d.every(y=>y.result.allowed),results:d}}};return V}return rt(Ha);})();
9
+ `),i=s,r.push({node:c,start:n.length,end:n.length+c.data.length}),n+=c.data}return{text:n,segments:r}}pointFor(t,a){for(let r of a){if(t<r.start)return{node:r.node,offset:0};if(t<=r.end)return{node:r.node,offset:t-r.start}}let n=a[a.length-1];return n?{node:n.node,offset:n.node.data.length}:{node:this.root,offset:0}}offsetFor(t,a,n){let r=this.root.ownerDocument.createRange();r.setStart(this.root,0),r.setEnd(t,a);let i=0;for(let o of n){if(o.node===t)return o.start+a;if(r.comparePoint(o.node,o.node.data.length)===0)i=o.end;else break}return i}getText(){return this.snapshot().text}getSelection(){let t=this.root.ownerDocument.getSelection();if(!t||t.rangeCount===0)return null;let a=t.getRangeAt(0);if(!this.root.contains(a.startContainer)||!this.root.contains(a.endContainer))return null;let{segments:n}=this.snapshot();return{start:this.offsetFor(a.startContainer,a.startOffset,n),end:this.offsetFor(a.endContainer,a.endOffset,n)}}replaceDirect(t,a){let n=t.replacement.length===t.end-t.start,r=!0;for(let i of a){let o=Math.max(t.start,i.start),c=Math.min(t.end,i.end);if(!(o>=c)){if(n){let s=t.replacement.slice(o-t.start,c-t.start);i.node.data.slice(o-i.start,c-i.start)!==s&&i.node.replaceData(o-i.start,c-o,s)}else r?i.node.replaceData(o-i.start,c-o,t.replacement):i.node.deleteData(o-i.start,c-o);r=!1}}}apply(t,a){let n=this.root.ownerDocument,{mapping:r}=P(t,a),i=this.getSelection();for(let o of Ze(a)){let{segments:c}=this.snapshot(),s=this.pointFor(o.start,c),l=this.pointFor(o.end,c);if(i&&s.node===l.node&&s.node.nodeType===3&&Qe(n)){let E=n.createRange();E.setStart(s.node,s.offset),E.setEnd(l.node,l.offset);let m=n.getSelection();m?.removeAllRanges(),m?.addRange(E);try{if(n.execCommand("insertText",!1,o.replacement))continue}catch{}}this.replaceDirect(o,c)}if(i){let{segments:o}=this.snapshot(),c=this.pointFor(r.toTransformed(i.start),o),s=this.pointFor(r.toTransformed(i.end),o),l=n.createRange();l.setStart(c.node,c.offset),l.setEnd(s.node,s.offset);let E=n.getSelection();E?.removeAllRanges(),E?.addRange(l)}}};var $a=["type","contenteditable","data-safetype","readonly","disabled","autocomplete","name"],re=new WeakMap;function za(e){let t=re.get(e);if(t){t.count++;return}let a=e.nodeType===9?e:e.ownerDocument,n=a.createElement("style");n.setAttribute("data-safetype",""),n.textContent=Xe,(e.nodeType===9?a.head??a.documentElement:e).appendChild(n),re.set(e,{node:n,count:1})}function qa(e){let t=re.get(e);t&&--t.count===0&&(t.node.remove(),re.delete(e))}var Pa={moderated:"onModerated",violation:"onViolation",warning:"onWarning",blocked:"onBlocked"};function Je(e={}){let{selector:t=Q,root:a,engine:n,observeDynamicElements:r=!0,excludeSelectors:i=[],showMessages:o=!0,messages:c={},injectStyles:s=!0,blockSubmit:l=!0,asyncModeration:E,asyncDebounceMs:m=300,onModerated:b,onViolation:x,onWarning:C,onBlocked:I,onError:U,..._}=e,K={onModerated:b,onViolation:x,onWarning:C,onBlocked:I},j=n??Y(_),$=(d,y)=>{U?U(d,y):console.error("[safetype]",d)};n||j.on("error",({error:d})=>$(d));let R=new Map,z=null,A=null,u=!1,h=!1,v=(d,y,k)=>{try{K[Pa[d]]?.(y,k)}catch(ie){$(ie,k)}let D=k.ownerDocument.defaultView;D&&k.dispatchEvent(new D.CustomEvent(`safetype:${d}`,{bubbles:!0,composed:!0,detail:{result:y,element:k}}))},g={engine:j,showMessages:o,messages:c,asyncModeration:E??(_.classifiers?.length??0)>0,asyncDebounceMs:m,dispatch:v,reportError:$};function p(d){let y=d;if(h)return!1;if(R.has(y))return!0;if(!H(y,i))return!1;let k=Z(y)?new ae(y):new ne(y),D=new te(y,k,g);return D.attach(),R.set(y,D),!0}function T(d){let y=R.get(d);y&&(y.detach(),R.delete(d))}let S=d=>d.matches(t);function M(d){S(d)&&p(d),d.querySelectorAll(t).forEach(p)}function L(d){let y=S(d)&&H(d,i),k=R.has(d);y&&!k?p(d):!y&&k&&T(d)}function F(){for(let d of[...R.keys()])d.isConnected||T(d)}let f=d=>{let y=!1;for(let k of d)if(k.type==="childList")k.addedNodes.forEach(D=>{D.nodeType===1&&M(D)}),k.removedNodes.length&&(y=!0);else if(k.type==="attributes"&&k.target.nodeType===1){let D=k.target;L(D),D.querySelectorAll(t).forEach(L)}y&&F()},w=d=>{let y=d.target;if(!y||y.nodeType!==1)return;let k=null;for(let[D,ie]of R){if((Z(D)?D.form:null)!==y&&!y.contains(D))continue;let De=ie.run("final");De.action==="block"&&(k??(k=D),v("blocked",De,D))}k&&l&&(d.preventDefault(),d.stopImmediatePropagation(),k.focus())},B=d=>d.nodeType===1?d.ownerDocument:d,O=d=>d.nodeType===9||d.nodeType===11?d:d.ownerDocument??document,V={engine:j,get running(){return u},get elements(){return[...R.keys()]},start(){if(h)throw new Error("This SafeType instance was destroyed. Create a new one with createSafeType().");if(u)return;let d=a??(typeof document>"u"?null:document);if(!d)throw new Error("@safetype/dom needs a DOM. Pass `root` or call start() in a browser.");if(A=d,u=!0,s&&o&&za(O(A)),A.nodeType===1?M(A):A.querySelectorAll(t).forEach(p),B(A).addEventListener("submit",w,!0),r){let k=(A.nodeType===9?A:A.ownerDocument)?.defaultView?.MutationObserver??globalThis.MutationObserver;z=new k(f),z.observe(A,{childList:!0,subtree:!0,attributes:!0,attributeFilter:$a})}},stop(){if(!(!u||!A)){u=!1,z?.disconnect(),z=null,B(A).removeEventListener("submit",w,!0);for(let d of[...R.keys()])T(d);s&&o&&qa(O(A)),A=null}},destroy(){V.stop(),h=!0},attach:p,detach:T,getResult(d){return R.get(d)?.result},validate(){F();let d=[];for(let[y,k]of R)d.push({element:y,result:k.run("final")});return{valid:d.every(y=>y.result.allowed),results:d}}};return V}return it(Ha);})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safetype/dom",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "description": "Attach SafeType.js moderation to inputs, textareas and contenteditable elements",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -32,7 +32,7 @@
32
32
  "contenteditable"
33
33
  ],
34
34
  "dependencies": {
35
- "@safetype/core": "1.12.0"
35
+ "@safetype/core": "1.13.0"
36
36
  },
37
37
  "repository": {
38
38
  "type": "git",