{"version":3,"file":"static/js/main.b1eef201.js","mappings":"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,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,IAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,KAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,EAAE,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE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R90S,EAAS,SAAUsH,GACrB,OAAQA,EAAM,IAAIlP,QAAQ,4BAA6B,OACzD,EACI48S,EAAmB,SAAU/pS,GAC/B,OAAO,IAAIkB,OAAO,aAAelB,EAAIlI,IAAI/C,GAAQf,KAAK,KAAO,aAC/D,EACIg2S,EAAW,CACb,iBAAkB,CAChB,KACA,QACA,QACA,OACA,UACA,MACA,WACA,kBACA,MACA,OACA,YACA,aACA,OACA,WACA,OACA,OACA,QACA,WACA,OACA,QACA,OACA,MACA,IACA,IACA,QACA,QACA,QACA,OACA,kBACA,MACA,SACA,MACA,QACA,OACA,QACA,SACA,OACA,UACA,UACA,OACA,UACA,MACA,gBACA,WACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,QACA,UACA,YACA,OACA,QACA,OACA,SACA,gBACA,SACA,QACA,YACA,WACA,oBACA,kBACA,OACA,YACA,MACA,QACA,MACA,QACA,MACA,iBACA,WAEF,uBAAwB,CAEtB,UACA,YACA,YACA,KACA,SACA,MACA,IACA,WACA,KACA,SACA,QACA,SACA,YACA,aACA,WACA,SACA,UACA,gBACA,oBACA,YACA,UACA,mBACA,KACA,WAEA,IACA,KACA,MAEF,oBAAqB,CACnB,aACA,WACA,SACA,mBACA,SACA,aACA,aACA,YACA,mBACA,kBACA,WACA,aACA,OACA,WACA,UACA,aACA,YACA,WACA,OACA,OACA,MACA,WACA,UACA,SACA,UACA,aACA,aACA,SACA,QACA,UACA,oBACA,aACA,cACA,OACA,SACA,gBACA,oBACA,gCACA,iCACA,YACA,UACA,WACA,SACA,aACA,aACA,UACA,SACA,OACA,eACA,eACA,QACA,OACA,SACA,YACA,UACA,QACA,WACA,cACA,WACA,QACA,YACA,aACA,aACA,qBACA,SACA,SACA,WACA,eACA,UACA,aACA,OACA,UACA,QACA,SACA,SACA,OACA,aACA,WACA,YACA,MACA,aACA,UACA,aACA,SACA,cACA,YACA,OACA,YACA,SACA,YACA,iBACA,UACA,eACA,UACA,gBACA,eACA,YACA,mBACA,UACA,SACA,WACA,OACA,aACA,oBACA,YACA,UACA,UACA,YACA,WACA,WACA,aACA,OACA,cACA,iBACA,QACA,UACA,YACA,gBACA,cACA,oBACA,MACA,UACA,OACA,SACA,OACA,sBACA,aACA,aACA,mBACA,UACA,cACA,SACA,aACA,WACA,kBACA,OACA,OACA,QACA,QACA,QACA,YACA,SACA,eACA,eACA,WACA,WACA,MACA,aACA,YACA,WACA,QACA,oBACA,eACA,OACA,cACA,QACA,UACA,UACA,OACA,cACA,SACA,OACA,gBACA,YACA,eAEF,eAAgB,CACd,UACA,kBACA,MACA,cACA,iBACA,aACA,UACA,eACA,UACA,WACA,cACA,MACA,IACA,IACA,cACA,IACA,MACA,IACA,KACA,SACA,cACA,wBACA,OACA,IACA,OACA,IACA,WACA,SACA,cACA,KACA,QACA,aACA,SACA,QACA,SACA,QACA,QACA,QACA,UACA,SACA,UACA,WACA,KACA,iBACA,KACA,MACA,UACA,aACA,KACA,KACA,MACA,QACA,WACA,SACA,KACA,UACA,UACA,MACA,SACA,KACA,SACA,QACA,OACA,WACA,aACA,UACA,WACA,OACA,YACA,cACA,QACA,MACA,iBACA,YACA,yBACA,aACA,QACA,aACA,QACA,UACA,MACA,SACA,wBACA,MACA,OACA,KACA,OACA,WACA,QACA,YACA,cAKJh5S,OAAOiQ,KAAK+oS,GAAU/lS,SAAQ,SAAUgZ,GACtCtkB,EAAOskB,GAAGkqD,QAAU4iO,EAAiBC,EAAS/sR,GAChD,IAiOAtkB,EAAOmxS,YAAY3iO,QAAU4iO,EAhOX,CAEhB,MACA,QACA,OACA,MACA,OACA,QACA,QACA,OACA,QACA,UACA,MACA,MACA,OACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,SACA,KACA,UACA,YACA,MACA,OACA,YACA,QACA,OACA,QACA,OACA,QACA,UACA,KACA,QACA,OACA,SACA,aACA,aACA,WACA,QACA,UACA,OACA,KACA,OACA,SACA,QACA,OACA,SACA,MACA,OACA,SACA,MACA,WACA,YAEA,iBACA,kBACA,SACA,YACA,QACA,YACA,YACA,WACA,cACA,UACA,YACA,gBACA,mBACA,SACA,MACA,UACA,cACA,aACA,SACA,cACA,OACA,eACA,YACA,UACA,eACA,eACA,aACA,kBACA,QACA,aACA,SACA,eACA,YACA,eACA,WACA,SACA,WACA,aACA,OACA,YACA,gBACA,eACA,OACA,UACA,UACA,YACA,gBACA,iBACA,kBACA,gBACA,UACA,OACA,YACA,cACA,UACA,cACA,aACA,OACA,aACA,iBACA,aACA,OACA,eACA,cACA,WACA,gBACA,YACA,UACA,QACA,aACA,QACA,OACA,aACA,UACA,aACA,aACA,QACA,OACA,YACA,iBACA,YAEA,UACA,eACA,cACA,iBACA,YACA,oBACA,kBACA,QACA,iBACA,eACA,gBAEA,kBACA,cACA,gBACA,gBACA,kBACA,cAEA,OACA,UACA,YACA,YACA,UACA,eACA,iBACA,aACA,OACA,SACA,cACA,qBACA,SACA,mBAEA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MAEA,gBACA,cACA,iBACA,cACA,eACA,aACA,cACA,WACA,iBACA,oBACA,cACA,qBACA,WACA,eACA,mBACA,oBACA,iBACA,UACA,iBACA,iBACA,cACA,SACA,gBACA,eACA,eACA,aACA,aACA,UACA,oBACA,eACA,YACA,cACA,wBACA,oBAKFpW,EAAMC,UAAUj7R,OAASA,CAC1B,CAh6BA,CAg6BEg7R,EACL,CCl6Be,SAASsW,GAAOtW,IAC5B,SAAWA,GAMVA,EAAMC,UAAiB,MAAI,CACzBnqR,QAAS,CACP09D,QAAS,aAEX98D,OAAQ,CACN88D,QAAS,UACT2sN,QAAQ,GAEV,iBAAkB,CAChB3sN,QAAS,mBACTh+B,MAAO,UAET,iBAAkB,CAChBg+B,QAAS,OACTh+B,MAAO,aAETl8B,OAAQ,MACRvR,SAAU,sCACVq4R,YAAa,QACbmB,SAAU,QACV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QAAS,mBACT0sN,YAAY,GAEd,CACE1sN,QAAS,oBACT0sN,YAAY,IAGhBO,SAAU,CACR,CACEjtN,QAAS,0BACT0sN,YAAY,GAEd,CACE1sN,QAAS,mCACT0sN,YAAY,GAEd,qPAEF4S,SAAU,CACRt/N,QACE,8hBACFh+B,MAAO,WAET9hC,QAAS,CACP8/D,QACE,mTACFh+B,MAAO,WAETztC,SAAU,CACR,CACEyrE,QACE,2GACF0sN,YAAY,GAEd,CACE1sN,QAAS,4CACT0sN,YAAY,GAEd,CACE1sN,QAAS,sCACT0sN,YAAY,GAEd,CACE1sN,QAAS,4BACT0sN,YAAY,GAEd,CACE1sN,QAAS,yBACT0sN,YAAY,GAEd,sBAEFM,MAAO,CACLhtN,QACE,2xCACFh+B,MAAO,YAETwrP,QACE,kVACFX,QACE,sbACFhnS,KAAM,CACJm6E,QACE,6GACFh+B,MAAO,YAET+rP,SAAU,CACR/tN,QACE,+MACF0sN,YAAY,GAGlB,CC7Fe,SAAS4iB,GAAM9iB,GAC5BA,EAAMC,UAAU6iB,MAAQ,CACtBhtS,QAAS,OACTuqR,QACE,s0BACFoB,UAAW,CACTjuN,QAAS,cACTh+B,MAAO,YAET+rP,SAAU,aACVjoR,OAAQ,gBACRvR,SAAU,mBACVq4R,YAAa,wBAEjB,CCbe,SAAS2iB,GAAQ/iB,GAC9BA,EAAMM,SAASkJ,IACd,SAAWxJ,GACV,IAAIn4R,EAAY,CAEd,MACA,MACA,OACA,MACA,MACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,UACA,QACA,QACA,cACA,OACA,SACA,QACA,SACA,iBACA,aACA,QACA,cACA,OACA,aACA,QACA,gBACA,cACA,gBACA,cACA,WACA,aACA,QACA,SAEA,eACA,OACA,OACA,OACA,OACA,UACA,OACA,eACA,SACA,YACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,OAEA,aACA,UACA,cACA,aACA,SACA,aACA,SACA,WACA,eACA,SACA,cACA,SACA,qBACA,gBACA,UACA,SACA,SACA,OACA,kBACA,WACA,UACA,eACA,eACA,UACA,OACA,QACA,QACA,eACA,aACA,SACA,UACA,mBAEA,OACA,eACA,QACA,SACA,OACA,YACA,mBACA,OACA,kBACA,eACA,iBACA,QACA,SACA,QACA,SACA,SACA,OACA,cACA,YACA,QACA,OACA,UACA,gBACA,QACA,WACA,OACA,iBACA,eACA,kBACA,gBACA,cACA,aACA,aACA,oBACA,UACA,MACA,OACA,UACA,SACA,SACA,YACA,MACA,OACA,QACA,UACA,MACA,gBACA,gBACA,aACA,WACA,YACA,gBACA,WACA,eACA,QACA,QACA,OACA,WACA,MACA,OACA,SACA,MACA,OACA,SACA,OACA,OACA,gBACA,QACA,OACA,eACA,UACA,OACA,SACA,YACA,MACA,OACA,iBACA,MACA,OACA,QACA,oBACA,SACA,UACA,aACA,gBACA,cACA,cACA,cACA,gBACA,SACA,SACA,UACA,iBACA,aACA,mBACA,eACA,YACA,QACA,OACA,SACA,SACA,QACA,aACA,cACA,cACA,eACA,YACA,UACA,eACA,YACA,YACA,OACA,UACA,OACA,UACA,UACA,aACA,YACA,SACA,UACA,cACA,YACA,WACA,WACA,QACA,SACA,QACA,QACA,QACA,OACA,SACA,WACA,YACA,gBACA,aACA,YACA,QACA,cACA,YACA,cAEA,WACA,WACA,QACA,OACA,aACA,OACA,WACA,SACA,aACA,eACA,YAmBEm7S,EAAkB,OAHtBn7S,EAAYA,EAAU1D,KAAI,SAAU4D,GAClC,OAAOA,EAASvO,QAAQ,IAAK,MAC/B,KACwC6G,KAAK,KAAO,OACpD2/R,EAAMC,UAAU8iB,QAAU/iB,EAAMC,UAAUpiS,OAAO,aAAc,CAAC,GAChEmiS,EAAMC,UAAU90N,aAAa,UAAW,SAAU,CAChDh1D,SAAU,CACRq9D,QACE,oHACF2sN,QAAQ,EACRvpC,OAAQ,CACNypC,QAAS9yR,OAAO,YAAcy1S,EAAkB,iBAItDhjB,EAAMC,UAAU8iB,QAAQrsS,OAAOkgP,OAAS,CACtCn9J,IAAK,CAEHjmB,QACE,yEACF2sN,QAAQ,GAEV/0R,OAAQ,CAENooE,QACE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,SAASwqU,GAASllM,GACvB,OAOA,SAAcvuH,EAAM8+B,EAAOoiB,GACzB,OACEk3L,GAAIvtP,KAAK0jI,EAAUvuH,EAAKtK,UACxB64H,EAASvuH,EAAKtK,SAASsK,EAAM8+B,EAAOoiB,EAExC,CACF,CCpBO,MAAMgoO,GAAUuqC,GAAS,CAC9B9vQ,KAuDF,SAAclgB,EAAG3E,EAAOoiB,GACtB,MAAM31B,EAAO+nS,GAAapyQ,EAAQpiB,GAClC,OAAQvT,GAAsB,YAAdA,EAAKjnC,IACvB,EAzDEshI,KAAM8tM,GACNryU,KAsEF,SAAcoiD,EAAG3E,EAAOoiB,GACtB,MAAM31B,EAAO+nS,GAAapyQ,EAAQpiB,GAClC,OAAQvT,GAAsB,YAAdA,EAAKjnC,IACvB,EAxEEoqB,EAuFF,SAAW+0B,EAAG3E,EAAOoiB,GACnB,MAAM31B,EAAO+nS,GAAapyQ,EAAQpiB,GAClC,OAAOvT,EACW,YAAdA,EAAKjnC,OACe,YAAjBinC,EAAK71B,SACa,YAAjB61B,EAAK71B,SACY,UAAjB61B,EAAK71B,SACY,eAAjB61B,EAAK71B,SACY,YAAjB61B,EAAK71B,SACY,QAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,SACY,aAAjB61B,EAAK71B,SACY,eAAjB61B,EAAK71B,SACY,WAAjB61B,EAAK71B,SACY,WAAjB61B,EAAK71B,SACY,SAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,SACY,WAAjB61B,EAAK71B,SACY,WAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,SACY,SAAjB61B,EAAK71B,SACY,SAAjB61B,EAAK71B,SACY,QAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,SACY,MAAjB61B,EAAK71B,SACY,QAAjB61B,EAAK71B,SACY,YAAjB61B,EAAK71B,SACY,UAAjB61B,EAAK71B,SACY,OAAjB61B,EAAK71B,UACR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D,KAAM,CAAC,OAAQ,QAAS,SAAU,OAAQ,MAAO,QACjDk3K,KAAM,CAAC,OAAQ,SACf5lQ,IAAK,CAAC,OAAQ,SACd0vQ,SAAU,CAAC,OAAQ,UAErBk5D,SAAU,CACR,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,SACA,KACA,IACA,MACA,OACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,IACA,KACA,KACA,QACA,QACA,QACA,QACA,aACA,KACA,KACA,KACA,MACA,IACA,OACA,MACA,KACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,SACA,UACA,UACA,UACA,SACA,aACA,OACA,MACA,OACA,MACA,OACA,QACA,OACA,OACA,MACA,SAEFttJ,WAAY,CACV/iL,EAAG,CAAC,QACJujF,IAAK,CAAC,MAAO,YACbvxE,MAAO,CACL,CAAC,OAAQ,YACT,CAAC,YAAY,IAEfk1F,GAAI,CAAC,CAAC,YAAa,mBACnBinB,IAAK,CAAC,YAAa,YACnBu2I,WAAY,CAAC,QACb4rE,IAAK,CAAC,QACNC,IAAK,CAAC,QACN7vO,EAAG,CAAC,QACJ,IAAK,CACH,OACA,SACA,gBACA,YACA,SACA,QACA,MACA,kBACA,aACA,YACA,iBACA,OACA,SACA,cACA,cACA,OACA,UACA,UACA,UACA,QACA,OACA,UACA,QACA,UACA,SACA,WACA,MACA,WACA,UACA,UACA,QACA,UACA,SACA,WACA,SACA,QACA,KACA,QACA,OACA,YACA,QACA,SACA,WACA,OACA,SACA,UACA,SACA,OACA,SACA,WACA,MACA,MACA,OACA,UACA,QACA,QACA,WACA,QACA,OACA,OACA,QACA,UACA,WACA,SACA,QACA,OACA,SACA,SACA,QACA,SACA,QACA,aAGJo0K,SAAU,CACR9iQ,MAAO,CACLne,KAAM,WACNmrF,UAAU,KC3HV2oK,GAAM,CAAC,EAAEnvP,eAGTg4U,GAAa,CACjBpyU,KAAM,CAACsyD,SAAUr7D,IACjBsgE,QAwJF,SAAuBy9F,GACrB,OAAOA,EAAOq9K,cAAgB,CAAC98U,K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mBAEV17U,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,GAAY07U,oBC9BXnzS,ICCA,IAAI/nC,IDDUpT,OAAO8uP,OAAO,KAC5B1uP,GAAeJ,OAAO8uP,OAAO,CAAC,GEAnB,SAAArmM,GACtB7uD,EACAC,EACAa,GAEA,YAAO,IAFPA,IAAAA,EAAiE0F,IAEzDxG,EAAMy9L,QAAU38L,EAAa28L,OAASz9L,EAAMy9L,OAAUx9L,GAAiBa,EAAa28L,KAC9F,CCPA,IAwIAjrI,GAAe,IAAIh5C,IAxIF,CACf,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,IACA,KACA,MACA,MACA,QACA,MACA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,UCrIIu5F,GAAc,wCAEd55E,GAAe,WAMG,SAAAs9E,GAAOz2G,GAC7B,OAAOA,EACJuC,QAAQwwG,GAAa,KACrBxwG,QAAQ42B,GAAc,GAC3B,CCdA,IAAM+kF,GAAgB,WAIhB7rF,GAAc,GAGd5pB,GAAoB,SAACzI,GAAiB,OAAA4J,OAAOC,aAAa7J,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","sources":["../node_modules/@uiw/copy-to-clipboard/src/main.js","../node_modules/@yaireo/relative-time/relative-time.min.js","../node_modules/attr-accept/dist/es/index.js","../node_modules/boolbase/index.js","../node_modules/copy-to-clipboard/index.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-utf8.js","../node_modules/crypto-js/sha256.js","../node_modules/css-selector-parser/lib/index.js","../node_modules/css-selector-parser/lib/parser-context.js","../node_modules/css-selector-parser/lib/render.js","../node_modules/css-selector-parser/lib/utils.js","../node_modules/extend/index.js","../node_modules/fast-deep-equal/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/immutability-helper/index.js","../node_modules/inline-style-parser/index.js","../node_modules/invariant/browser.js","../node_modules/is-buffer/index.js","../node_modules/is-url/index.js","../node_modules/isarray/index.js","../node_modules/moment/min/locales.js","../node_modules/moment/moment.js","../node_modules/parse-numeric-range/index.js","../node_modules/parse5/lib/common/doctype.js","../node_modules/parse5/lib/common/error-codes.js","../node_modules/parse5/lib/common/foreign-content.js","../node_modules/parse5/lib/common/html.js","../node_modules/parse5/lib/common/unicode.js","../node_modules/parse5/lib/extensions/error-reporting/mixin-base.js","../node_modules/parse5/lib/extensions/error-reporting/parser-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/preprocessor-mixin.js","../node_modules/parse5/lib/extensions/error-reporting/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/location-info/open-element-stack-mixin.js","../node_modules/parse5/lib/extensions/location-info/parser-mixin.js","../node_modules/parse5/lib/extensions/location-info/tokenizer-mixin.js","../node_modules/parse5/lib/extensions/position-tracking/preprocessor-mixin.js","../node_modules/parse5/lib/parser/formatting-element-list.js","../node_modules/parse5/lib/parser/index.js","../node_modules/parse5/lib/parser/open-element-stack.js","../node_modules/parse5/lib/tokenizer/index.js","../node_modules/parse5/lib/tokenizer/named-entity-data.js","../node_modules/parse5/lib/tokenizer/preprocessor.js","../node_modules/parse5/lib/tree-adapters/default.js","../node_modules/parse5/lib/utils/merge-options.js","../node_modules/parse5/lib/utils/mixin.js","../node_modules/path-to-regexp/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-ga4/dist/format.js","../node_modules/react-ga4/dist/ga4.js","../node_modules/react-ga4/dist/gtag.js","../node_modules/react-ga4/dist/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-markdown/node_modules/react-is/index.js","../ReactPaginate/webpack/universalModuleDefinition","../ReactPaginate/node_modules/prop-types/factoryWithThrowingShims.js","../ReactPaginate/node_modules/prop-types/index.js","../ReactPaginate/node_modules/prop-types/lib/ReactPropTypesSecret.js","../ReactPaginate/external umd {\"root\":\"React\",\"amd\":\"react\",\"commonjs\":\"react\",\"commonjs2\":\"react\"}","../ReactPaginate/webpack/bootstrap","../ReactPaginate/webpack/runtime/compat get default export","../ReactPaginate/webpack/runtime/define property getters","../ReactPaginate/webpack/runtime/hasOwnProperty shorthand","../ReactPaginate/webpack/runtime/make namespace object","../ReactPaginate/react_components/PageView.js","../ReactPaginate/react_components/BreakView.js","../ReactPaginate/react_components/utils.js","../ReactPaginate/react_components/PaginationBoxView.js","../ReactPaginate/react_components/index.js","../node_modules/react-tagsinput/react-tagsinput.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/style-to-object/index.js","../node_modules/toggle-selection/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/warning/warning.js","../node_modules/classnames/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/jwt-decode/lib/index.js","../node_modules/oidc-client-ts/src/utils/Logger.ts","../node_modules/oidc-client-ts/src/utils/CryptoUtils.ts","../node_modules/oidc-client-ts/src/utils/Event.ts","../node_modules/oidc-client-ts/src/utils/JwtUtils.ts","../node_modules/oidc-client-ts/src/utils/PopupUtils.ts","../node_modules/oidc-client-ts/src/utils/Timer.ts","../node_modules/oidc-client-ts/src/utils/UrlUtils.ts","../node_modules/oidc-client-ts/src/errors/ErrorResponse.ts","../node_modules/oidc-client-ts/src/errors/ErrorTimeout.ts","../node_modules/oidc-client-ts/src/AccessTokenEvents.ts","../node_modules/oidc-client-ts/src/CheckSessionIFrame.ts","../node_modules/oidc-client-ts/src/InMemoryWebStorage.ts","../node_modules/oidc-client-ts/src/JsonService.ts","../node_modules/oidc-client-ts/src/MetadataService.ts","../node_modules/oidc-client-ts/src/WebStorageStateStore.ts","../node_modules/oidc-client-ts/src/OidcClientSettings.ts","../node_modules/oidc-client-ts/src/UserInfoService.ts","../node_modules/oidc-client-ts/src/TokenClient.ts","../node_modules/oidc-client-ts/src/ResponseValidator.ts","../node_modules/oidc-client-ts/src/State.ts","../node_modules/oidc-client-ts/src/SigninState.ts","../node_modules/oidc-client-ts/src/SigninRequest.ts","../node_modules/oidc-client-ts/src/SigninResponse.ts","../node_modules/oidc-client-ts/src/SignoutRequest.ts","../node_modules/oidc-client-ts/src/SignoutResponse.ts","../node_modules/oidc-client-ts/src/ClaimsService.ts","../node_modules/oidc-client-ts/src/OidcClient.ts","../node_modules/oidc-client-ts/src/SessionMonitor.ts","../node_modules/oidc-client-ts/src/User.ts","../node_modules/oidc-client-ts/src/navigators/AbstractChildWindow.ts","../node_modules/oidc-client-ts/src/UserManagerSettings.ts","../node_modules/oidc-client-ts/src/navigators/IFrameWindow.ts","../node_modules/oidc-client-ts/src/navigators/IFrameNavigator.ts","../node_modules/oidc-client-ts/src/navigators/PopupWindow.ts","../node_modules/oidc-client-ts/src/navigators/PopupNavigator.ts","../node_modules/oidc-client-ts/src/navigators/RedirectNavigator.ts","../node_modules/oidc-client-ts/src/UserManagerEvents.ts","../node_modules/oidc-client-ts/src/SilentRenewService.ts","../node_modules/oidc-client-ts/src/RefreshState.ts","lib/ApiClientBase.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","lib/DoomCentral.ts","lib/DoomCentralEventRoles.ts","lib/DoomCentralRoles.ts","lib/ForumRoles.ts","lib/NewsPostRoles.ts","utils/helpers.ts","components/api-authorization/AuthHelpers.ts","configuration.ts","components/api-authorization/LoginCallback.tsx","../node_modules/react-oidc-context/src/AuthContext.ts","../node_modules/react-oidc-context/src/AuthState.ts","../node_modules/react-oidc-context/src/utils.ts","../node_modules/react-oidc-context/src/reducer.ts","../node_modules/react-oidc-context/src/AuthProvider.tsx","../node_modules/oidc-client-ts/src/UserManager.ts","../node_modules/react-oidc-context/src/useAuth.ts","components/api-authorization/LoginRedirect.tsx","components/api-authorization/LogoutCallback.tsx","components/api-authorization/ApiAuthorizationRoutes.tsx","../node_modules/@icons-pack/react-simple-icons/icons/SiTwitter.mjs","../node_modules/@icons-pack/react-simple-icons/icons/SiInstagram.mjs","../node_modules/@icons-pack/react-simple-icons/icons/SiYoutube.mjs","../node_modules/@icons-pack/react-simple-icons/icons/SiTwitch.mjs","../node_modules/reactstrap/esm/utils.js","../node_modules/reactstrap/esm/Container.js","../node_modules/reactstrap/esm/CloseButton.js","../node_modules/reactstrap/esm/Button.js","components/footer/Footer.tsx","../node_modules/shared/src/utils.ts","../node_modules/lucide-react/src/defaultAttributes.ts","../node_modules/lucide-react/src/Icon.ts","../node_modules/lucide-react/src/createLucideIcon.ts","../node_modules/lucide-react/src/icons/x.ts","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/reactstrap/esm/Fade.js","../node_modules/reactstrap/esm/Toast.js","state.tsx","components/ErrorMessage.tsx","../node_modules/sonner/src/assets.tsx","../node_modules/sonner/src/state.ts","../node_modules/sonner/src/types.ts","../node_modules/sonner/dist/#style-inject:#style-inject","../node_modules/sonner/src/styles.css","../node_modules/sonner/src/index.tsx","../node_modules/sonner/src/hooks.tsx","components/layout/Layout.tsx","components/loading-indicator/LoadingIndicator.tsx","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/reactstrap/esm/Navbar.js","../node_modules/reactstrap/esm/NavbarBrand.js","../node_modules/reactstrap/esm/NavbarToggler.js","../node_modules/reactstrap/esm/Collapse.js","../node_modules/reactstrap/esm/Nav.js","../node_modules/reactstrap/esm/NavItem.js","../node_modules/reactstrap/esm/NavLink.js","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/reactstrap/esm/DropdownContext.js","../node_modules/reactstrap/esm/InputGroupContext.js","../node_modules/reactstrap/esm/Dropdown.js","../node_modules/reactstrap/esm/UncontrolledDropdown.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/react-popper/lib/esm/Reference.js","../node_modules/reactstrap/esm/DropdownToggle.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/react-popper/lib/esm/usePopper.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/reactstrap/esm/DropdownMenu.js","../node_modules/reactstrap/esm/DropdownItem.js","../node_modules/reactstrap/esm/Spinner.js","../node_modules/reactstrap/esm/Card.js","../node_modules/reactstrap/esm/CardHeader.js","../node_modules/reactstrap/esm/CardBody.js","../node_modules/reactstrap/esm/CardTitle.js","../node_modules/reactstrap/esm/CardFooter.js","components/notifications/NotificationPagination.tsx","components/notifications/NotificationsList.tsx","components/notifications/Notifications.tsx","components/theme-dropdown/ThemeDropdown.tsx","hooks/useTheme.tsx","components/navbar/Navbar.tsx","lib/StreamerRoles.ts","../node_modules/react-helmet-async/src/constants.js","../node_modules/react-helmet-async/src/utils.js","../node_modules/react-helmet-async/src/server.js","../node_modules/react-helmet-async/src/HelmetData.js","../node_modules/react-helmet-async/src/Provider.js","../node_modules/react-helmet-async/src/client.js","../node_modules/react-helmet-async/src/Dispatcher.js","../node_modules/react-helmet-async/src/index.js","components/helmet/HelmetPages.tsx","../node_modules/reactstrap/esm/Row.js","../node_modules/reactstrap/esm/Col.js","components/admin/AdminNav.tsx","components/admin/AdminPanel.tsx","components/admin/AdminHome.tsx","../node_modules/reactstrap/esm/FormGroup.js","../node_modules/reactstrap/esm/Label.js","../node_modules/reactstrap/esm/Input.js","components/admin/managebadges/CreateNewBadge.tsx","components/admin/managebadges/DeleteBadge.tsx","components/admin/managebadges/ManageBadges.tsx","components/admin/manageemotes/CreateNewEmote.tsx","components/admin/manageemotes/DeleteEmote.tsx","components/admin/manageemotes/ManageEmotes.tsx","components/admin/manageevents/EventOptions.tsx","components/admin/manageevents/EventPagination.tsx","../node_modules/reactstrap/esm/Table.js","components/admin/manageevents/EventTable.tsx","components/admin/manageevents/ManageEvents.tsx","components/admin/manageforum/forumgroup/ForumGroupSelect.tsx","../node_modules/reactstrap/esm/FormText.js","components/postfilesettings/DataCounter.tsx","components/postfilesettings/DataSizePresetButtons.tsx","components/postfilesettings/DataTypePresetButtons.tsx","components/postfilesettings/PostFileSettings.tsx","components/admin/manageforum/forum/CreateNewForum.tsx","components/admin/manageforum/forum/DeleteForum.tsx","components/admin/manageforum/forum/ForumSelect.tsx","components/admin/manageforum/forum/UpdateForum.tsx","components/admin/manageforum/forum/ManageForum.tsx","components/admin/manageforum/forumgroup/CreateNewForumGroup.tsx","components/admin/manageforum/forumgroup/DeleteForumGroup.tsx","components/admin/manageforum/forumgroup/UpdateForumGroup.tsx","components/admin/manageforum/forumgroup/ManageForumGroup.tsx","components/admin/manageforum/forumorder/ForumOrderComponent.tsx","components/admin/manageforum/forumorder/ManageForumOrder.tsx","components/admin/manageforum/ManageForums.tsx","../node_modules/reactstrap/esm/Alert.js","../node_modules/reactstrap/esm/InputGroup.js","../node_modules/reactstrap/esm/InputGroupText.js","components/admin/manageforumpermissiongroups/AddUserToPermissionsGroup.tsx","components/admin/manageforumpermissiongroups/ForumPermission.ts","components/admin/manageforumpermissiongroups/GrantPanel.tsx","../node_modules/react-arborist/dist/module/context.js","../node_modules/react-arborist/dist/module/utils.js","../node_modules/react-arborist/dist/module/components/default-cursor.js","../node_modules/react-arborist/dist/module/components/default-row.js","../node_modules/react-arborist/dist/module/components/default-node.js","../node_modules/react-arborist/dist/module/state/edit-slice.js","../node_modules/react-arborist/dist/module/state/focus-slice.js","../node_modules/react-arborist/dist/module/interfaces/node-api.js","../node_modules/react-arborist/dist/module/data/create-root.js","../node_modules/react-arborist/dist/module/state/open-slice.js","../node_modules/react-arborist/dist/module/state/initial.js","../node_modules/react-arborist/dist/module/state/selection-slice.js","../node_modules/react-arborist/dist/module/state/dnd-slice.js","../node_modules/react-arborist/dist/module/components/default-drag-preview.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-window/node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/react-window/src/timer.js","../node_modules/react-window/src/domHelpers.js","../node_modules/react-window/src/createGridComponent.js","../node_modules/react-window/src/createListComponent.js","../node_modules/react-window/src/FixedSizeList.js","../node_modules/react-arborist/dist/module/components/cursor.js","../node_modules/react-arborist/dist/module/components/list-outer-element.js","../node_modules/react-arborist/dist/module/components/list-inner-element.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useIsomorphicLayoutEffect.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrag/DragSourceImpl.js","../node_modules/react-arborist/node_modules/@react-dnd/invariant/src/index.ts","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/core/DndContext.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrag/useRegisteredDragSource.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrag/useDragSource.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrag/useDragType.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/internals/registration.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useOptionalFactory.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/internals/DragSourceMonitorImpl.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/internals/wrapConnectorHooks.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/internals/isRef.js","../node_modules/react-arborist/node_modules/@react-dnd/shallowequal/src/index.ts","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/internals/SourceConnector.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/getEmptyImage.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useCollector.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useMonitorOutput.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useCollectedProps.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrag/connectors.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrag/useDrag.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrag/useDragSourceMonitor.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrag/useDragSourceConnector.js","../node_modules/react-arborist/dist/module/dnd/drag-hook.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrop/DropTargetImpl.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrop/useRegisteredDropTarget.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrop/useDropTarget.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrop/useAccept.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/internals/DropTargetMonitorImpl.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/internals/TargetConnector.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrop/connectors.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrop/useDrop.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrop/useDropTargetMonitor.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDrop/useDropTargetConnector.js","../node_modules/react-arborist/dist/module/dnd/compute-drop.js","../node_modules/react-arborist/dist/module/components/row-container.js","../node_modules/react-arborist/dist/module/hooks/use-fresh-node.js","../node_modules/react-arborist/dist/module/dnd/drop-hook.js","../node_modules/react-arborist/dist/module/components/default-container.js","../node_modules/react-arborist/dist/module/data/create-list.js","../node_modules/react-arborist/dist/module/data/create-index.js","../node_modules/react-arborist/dist/module/interfaces/tree-api.js","../node_modules/redux/src/utils/formatProdErrorMessage.ts","../node_modules/redux/src/utils/symbol-observable.ts","../node_modules/redux/src/utils/actionTypes.ts","../node_modules/redux/src/utils/isPlainObject.ts","../node_modules/redux/src/createStore.ts","../node_modules/redux/src/combineReducers.ts","../node_modules/react-arborist/dist/module/state/root-reducer.js","../node_modules/react-arborist/dist/module/state/drag-slice.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js","../node_modules/react-arborist/node_modules/react-dnd-html5-backend/dist/esm/index.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/actions/dragDrop/types.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/utils/js_utils.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/utils/matchesType.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/classes/DragDropManagerImpl.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/actions/dragDrop/index.js","../node_modules/react-arborist/node_modules/dnd-core/node_modules/redux/es/redux.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/utils/equality.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/reducers/dragOffset.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/actions/registry.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/reducers/dragOperation.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/reducers/refCount.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/utils/dirtiness.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/reducers/stateId.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/reducers/index.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/utils/coords.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/classes/DragDropMonitorImpl.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/interfaces.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/contracts.js","../node_modules/react-arborist/node_modules/@react-dnd/asap/src/makeRequestCall.ts","../node_modules/react-arborist/node_modules/@react-dnd/asap/src/RawTask.ts","../node_modules/react-arborist/node_modules/@react-dnd/asap/src/asap.ts","../node_modules/react-arborist/node_modules/@react-dnd/asap/src/AsapQueue.ts","../node_modules/react-arborist/node_modules/@react-dnd/asap/src/TaskFactory.ts","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/classes/HandlerRegistryImpl.js","../node_modules/react-arborist/node_modules/dnd-core/dist/esm/createDragDropManager.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/core/DndProvider.js","../node_modules/react-arborist/dist/module/components/provider.js","../node_modules/react-arborist/dist/module/components/outer-drop.js","../node_modules/react-arborist/dist/module/dnd/outer-drop-hook.js","../node_modules/react-arborist/dist/module/components/tree-container.js","../node_modules/react-arborist/node_modules/react-dnd/dist/esm/hooks/useDragLayer.js","../node_modules/react-arborist/dist/module/components/drag-preview-container.js","../node_modules/react-arborist/dist/module/data/simple-tree.js","../node_modules/react-arborist/dist/module/hooks/use-simple-tree.js","../node_modules/react-arborist/dist/module/hooks/use-validated-props.js","../node_modules/react-arborist/dist/module/components/tree.js","components/admin/manageforumpermissiongroups/ForumPermissionTreeNode.tsx","components/admin/manageforumpermissiongroups/SelectForumAndGroup.tsx","components/admin/manageforumpermissiongroups/CreateNewForumPermissionGroup.tsx","components/admin/manageforumpermissiongroups/ForumPermissionTreeObject.ts","components/admin/manageforumpermissiongroups/ManageForumPermissionGroups.tsx","components/admin/managenews/NewsOptions.tsx","components/admin/managenews/NewsPagination.tsx","components/admin/managenews/NewsTable.tsx","components/admin/managenews/ManageNews.tsx","components/admin/managereactions/CreateNewReaction.tsx","components/admin/managereactions/DeleteReaction.tsx","components/admin/managereactions/ManageReactions.tsx","components/admin/managestreamers/CreateNewStreamer.tsx","components/admin/managestreamers/DeleteStreamer.tsx","components/admin/managestreamers/ManageStreamer.tsx","../node_modules/reactstrap/esm/Form.js","components/admin/manageusers/useractionpanel/UserBadges.tsx","components/admin/manageusers/useractionpanel/UserBan.tsx","components/admin/manageusers/useractionpanel/UserRoles.tsx","components/admin/manageusers/UserActionPanel.tsx","components/admin/manageusers/UserOptions.tsx","components/admin/manageusers/UserPagination.tsx","components/admin/manageusers/UserTable.tsx","components/admin/manageusers/ManageUsers.tsx","components/api-authorization/AccessDenied.tsx","components/api-authorization/AuthorizeRoute.tsx","components/routes/AdminRoutes.tsx","components/sidebars/Sidebars.tsx","components/managesubscriptions/SubscriptionList.tsx","components/managesubscriptions/SubscriptionOptions.tsx","components/managesubscriptions/ManageSubscriptions.tsx","components/profilepage/ProfilePage.tsx","components/routes/DoomCentralRoutes.tsx","hooks/useQueryParam.ts","../node_modules/unist-util-stringify-position/lib/index.js","../node_modules/vfile-message/lib/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/bail/index.js","../node_modules/is-plain-obj/index.js","../node_modules/trough/lib/index.js","../node_modules/unified/lib/index.js","../node_modules/mdast-util-to-string/lib/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/index.dom.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/parse.js","../node_modules/remark-parse/lib/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/unist-util-visit/lib/index.js","../node_modules/unist-util-position/lib/index.js","../node_modules/mdast-util-definitions/lib/index.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/state.js","../node_modules/unist-util-generated/lib/index.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/remark-rehype/lib/index.js","../node_modules/property-information/lib/util/schema.js","../node_modules/property-information/lib/util/merge.js","../node_modules/property-information/lib/normalize.js","../node_modules/property-information/lib/util/info.js","../node_modules/property-information/lib/util/types.js","../node_modules/property-information/lib/util/defined-info.js","../node_modules/property-information/lib/util/create.js","../node_modules/property-information/lib/xlink.js","../node_modules/property-information/lib/xml.js","../node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/property-information/lib/xmlns.js","../node_modules/property-information/lib/aria.js","../node_modules/property-information/lib/html.js","../node_modules/property-information/lib/svg.js","../node_modules/property-information/index.js","../node_modules/react-markdown/lib/rehype-filter.js","../node_modules/hast-util-whitespace/index.js","../node_modules/property-information/lib/find.js","../node_modules/property-information/lib/hast-to-react.js","../node_modules/space-separated-tokens/index.js","../node_modules/comma-separated-tokens/index.js","../node_modules/style-to-object/index.mjs","../node_modules/react-markdown/lib/uri-transformer.js","../node_modules/react-markdown/lib/ast-to-react.js","../node_modules/react-markdown/lib/react-markdown.js","../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","../node_modules/micromark-extension-gfm-footnote/lib/syntax.js","../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","../node_modules/micromark-extension-gfm-table/lib/edit-map.js","../node_modules/micromark-extension-gfm-table/lib/infer.js","../node_modules/micromark-extension-gfm-table/lib/syntax.js","../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","../node_modules/ccount/index.js","../node_modules/mdast-util-find-and-replace/lib/index.js","../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","../node_modules/mdast-util-gfm-autolink-literal/lib/index.js","../node_modules/mdast-util-to-markdown/lib/util/association.js","../node_modules/mdast-util-to-markdown/lib/util/container-flow.js","../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","../node_modules/mdast-util-to-markdown/lib/util/safe.js","../node_modules/mdast-util-to-markdown/lib/util/track.js","../node_modules/mdast-util-gfm-footnote/lib/index.js","../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","../node_modules/mdast-util-gfm-strikethrough/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","../node_modules/markdown-table/index.js","../node_modules/mdast-util-gfm-table/lib/index.js","../node_modules/mdast-util-to-markdown/lib/handle/list-item.js","../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","../node_modules/mdast-util-gfm-task-list-item/lib/index.js","../node_modules/remark-gfm/index.js","../node_modules/micromark-extension-gfm/index.js","../node_modules/mdast-util-gfm/lib/index.js","../node_modules/hast-util-parse-selector/lib/index.js","../node_modules/hastscript/lib/core.js","../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js","../node_modules/hastscript/lib/svg.js","../node_modules/hastscript/lib/html.js","../node_modules/web-namespaces/index.js","../node_modules/hast-util-from-parse5/lib/index.js","../node_modules/vfile-location/lib/index.js","../node_modules/zwitch/index.js","../node_modules/hast-util-to-parse5/lib/index.js","../node_modules/html-void-elements/index.js","../node_modules/hast-util-raw/lib/index.js","../node_modules/rehype-raw/index.js","../node_modules/@uiw/react-markdown-preview/esm/plugins/useCopied.js","../node_modules/@uiw/react-markdown-preview/esm/preview.js","../node_modules/hast-util-to-string/index.js","../node_modules/unist-util-filter/lib/index.js","../node_modules/refractor/lang/clike.js","../node_modules/refractor/lang/c.js","../node_modules/refractor/lang/cpp.js","../node_modules/refractor/lang/arduino.js","../node_modules/refractor/lang/bash.js","../node_modules/refractor/lang/csharp.js","../node_modules/refractor/lang/markup.js","../node_modules/refractor/lang/css.js","../node_modules/refractor/lang/diff.js","../node_modules/refractor/lang/go.js","../node_modules/refractor/lang/ini.js","../node_modules/refractor/lang/java.js","../node_modules/refractor/lang/regex.js","../node_modules/refractor/lang/javascript.js","../node_modules/refractor/lang/json.js","../node_modules/refractor/lang/kotlin.js","../node_modules/refractor/lang/less.js","../node_modules/refractor/lang/lua.js","../node_modules/refractor/lang/makefile.js","../node_modules/refractor/lang/yaml.js","../node_modules/refractor/lang/markdown.js","../node_modules/refractor/lang/objectivec.js","../node_modules/refractor/lang/perl.js","../node_modules/refractor/lang/markup-templating.js","../node_modules/refractor/lang/php.js","../node_modules/refractor/lang/python.js","../node_modules/refractor/lang/r.js","../node_modules/refractor/lang/ruby.js","../node_modules/refractor/lang/rust.js","../node_modules/refractor/lang/sass.js","../node_modules/refractor/lang/scss.js","../node_modules/refractor/lang/sql.js","../node_modules/refractor/lang/swift.js","../node_modules/refractor/lang/typescript.js","../node_modules/refractor/lang/basic.js","../node_modules/refractor/lang/vbnet.js","../node_modules/character-entities-legacy/index.js","../node_modules/character-reference-invalid/index.js","../node_modules/is-decimal/index.js","../node_modules/is-hexadecimal/index.js","../node_modules/is-alphanumerical/index.js","../node_modules/is-alphabetical/index.js","../node_modules/parse-entities/lib/index.js","../node_modules/refractor/lib/prism-core.js","../node_modules/refractor/lib/core.js","../node_modules/refractor/lang/abap.js","../node_modules/refractor/lang/abnf.js","../node_modules/refractor/lang/actionscript.js","../node_modules/refractor/lang/ada.js","../node_modules/refractor/lang/agda.js","../node_modules/refractor/lang/al.js","../node_modules/refractor/lang/antlr4.js","../node_modules/refractor/lang/apacheconf.js","../node_modules/refractor/lang/apex.js","../node_modules/refractor/lang/apl.js","../node_modules/refractor/lang/applescript.js","../node_modules/refractor/lang/aql.js","../node_modules/refractor/lang/arff.js","../node_modules/refractor/lang/armasm.js","../node_modules/refractor/lang/arturo.js","../node_modules/refractor/lang/asciidoc.js","../node_modules/refractor/lang/aspnet.js","../node_modules/refractor/lang/asm6502.js","../node_modules/refractor/lang/asmatmel.js","../node_modules/refractor/lang/autohotkey.js","../node_modules/refractor/lang/autoit.js","../node_modules/refractor/lang/avisynth.js","../node_modules/refractor/lang/avro-idl.js","../node_modules/refractor/lang/awk.js","../node_modules/refractor/lang/batch.js","../node_modules/refractor/lang/bbcode.js","../node_modules/refractor/lang/bbj.js","../node_modules/refractor/lang/bicep.js","../node_modules/refractor/lang/birb.js","../node_modules/refractor/lang/bison.js","../node_modules/refractor/lang/bnf.js","../node_modules/refractor/lang/bqn.js","../node_modules/refractor/lang/brainfuck.js","../node_modules/refractor/lang/brightscript.js","../node_modules/refractor/lang/bro.js","../node_modules/refractor/lang/bsl.js","../node_modules/refractor/lang/cfscript.js","../node_modules/refractor/lang/chaiscript.js","../node_modules/refractor/lang/cil.js","../node_modules/refractor/lang/cilkc.js","../node_modules/refractor/lang/cilkcpp.js","../node_modules/refractor/lang/clojure.js","../node_modules/refractor/lang/cmake.js","../node_modules/refractor/lang/cobol.js","../node_modules/refractor/lang/coffeescript.js","../node_modules/refractor/lang/concurnas.js","../node_modules/refractor/lang/csp.js","../node_modules/refractor/lang/cooklang.js","../node_modules/refractor/lang/coq.js","../node_modules/refractor/lang/crystal.js","../node_modules/refractor/lang/css-extras.js","../node_modules/refractor/lang/csv.js","../node_modules/refractor/lang/cue.js","../node_modules/refractor/lang/cypher.js","../node_modules/refractor/lang/d.js","../node_modules/refractor/lang/dart.js","../node_modules/refractor/lang/dataweave.js","../node_modules/refractor/lang/dax.js","../node_modules/refractor/lang/dhall.js","../node_modules/refractor/lang/django.js","../node_modules/refractor/lang/dns-zone-file.js","../node_modules/refractor/lang/docker.js","../node_modules/refractor/lang/dot.js","../node_modules/refractor/lang/ebnf.js","../node_modules/refractor/lang/editorconfig.js","../node_modules/refractor/lang/eiffel.js","../node_modules/refractor/lang/ejs.js","../node_modules/refractor/lang/elixir.js","../node_modules/refractor/lang/elm.js","../node_modules/refractor/lang/etlua.js","../node_modules/refractor/lang/erb.js","../node_modules/refractor/lang/erlang.js","../node_modules/refractor/lang/excel-formula.js","../node_modules/refractor/lang/fsharp.js","../node_modules/refractor/lang/factor.js","../node_modules/refractor/lang/false.js","../node_modules/refractor/lang/firestore-security-rules.js","../node_modules/refractor/lang/flow.js","../node_modules/refractor/lang/fortran.js","../node_modules/refractor/lang/ftl.js","../node_modules/refractor/lang/gml.js","../node_modules/refractor/lang/gap.js","../node_modules/refractor/lang/gcode.js","../node_modules/refractor/lang/gdscript.js","../node_modules/refractor/lang/gedcom.js","../node_modules/refractor/lang/gettext.js","../node_modules/refractor/lang/gherkin.js","../node_modules/refractor/lang/git.js","../node_modules/refractor/lang/glsl.js","../node_modules/refractor/lang/gn.js","../node_modules/refractor/lang/linker-script.js","../node_modules/refractor/lang/go-module.js","../node_modules/refractor/lang/gradle.js","../node_modules/refractor/lang/graphql.js","../node_modules/refractor/lang/groovy.js","../node_modules/refractor/lang/textile.js","../node_modules/refractor/lang/haml.js","../node_modules/refractor/lang/handlebars.js","../node_modules/refractor/lang/haskell.js","../node_modules/refractor/lang/haxe.js","../node_modules/refractor/lang/hcl.js","../node_modules/refractor/lang/hlsl.js","../node_modules/refractor/lang/hoon.js","../node_modules/refractor/lang/hpkp.js","../node_modules/refractor/lang/hsts.js","../node_modules/refractor/lang/uri.js","../node_modules/refractor/lang/http.js","../node_modules/refractor/lang/ichigojam.js","../node_modules/refractor/lang/icon.js","../node_modules/refractor/lang/icu-message-format.js","../node_modules/refractor/lang/idris.js","../node_modules/refractor/lang/ignore.js","../node_modules/refractor/lang/inform7.js","../node_modules/refractor/lang/io.js","../node_modules/refractor/lang/j.js","../node_modules/refractor/lang/javadoclike.js","../node_modules/refractor/lang/scala.js","../node_modules/refractor/lang/javadoc.js","../node_modules/refractor/lang/javastacktrace.js","../node_modules/refractor/lang/jexl.js","../node_modules/refractor/lang/jolie.js","../node_modules/refractor/lang/jq.js","../node_modules/refractor/lang/js-templates.js","../node_modules/refractor/lang/jsdoc.js","../node_modules/refractor/lang/n4js.js","../node_modules/refractor/lang/js-extras.js","../node_modules/refractor/lang/json5.js","../node_modules/refractor/lang/jsonp.js","../node_modules/refractor/lang/jsstacktrace.js","../node_modules/refractor/lang/julia.js","../node_modules/refractor/lang/keepalived.js","../node_modules/refractor/lang/keyman.js","../node_modules/refractor/lang/kumir.js","../node_modules/refractor/lang/kusto.js","../node_modules/refractor/lang/latex.js","../node_modules/refractor/lang/latte.js","../node_modules/refractor/lang/scheme.js","../node_modules/refractor/lang/lilypond.js","../node_modules/refractor/lang/liquid.js","../node_modules/refractor/lang/lisp.js","../node_modules/refractor/lang/livescript.js","../node_modules/refractor/lang/llvm.js","../node_modules/refractor/lang/log.js","../node_modules/refractor/lang/lolcode.js","../node_modules/refractor/lang/magma.js","../node_modules/refractor/lang/mata.js","../node_modules/refractor/lang/matlab.js","../node_modules/refractor/lang/maxscript.js","../node_modules/refractor/lang/mel.js","../node_modules/refractor/lang/mermaid.js","../node_modules/refractor/lang/metafont.js","../node_modules/refractor/lang/mizar.js","../node_modules/refractor/lang/mongodb.js","../node_modules/refractor/lang/monkey.js","../node_modules/refractor/lang/moonscript.js","../node_modules/refractor/lang/n1ql.js","../node_modules/refractor/lang/nand2tetris-hdl.js","../node_modules/refractor/lang/naniscript.js","../node_modules/refractor/lang/nasm.js","../node_modules/refractor/lang/neon.js","../node_modules/refractor/lang/nevod.js","../node_modules/refractor/lang/nginx.js","../node_modules/refractor/lang/nim.js","../node_modules/refractor/lang/nix.js","../node_modules/refractor/lang/nsis.js","../node_modules/refractor/lang/ocaml.js","../node_modules/refractor/lang/odin.js","../node_modules/refractor/lang/opencl.js","../node_modules/refractor/lang/openqasm.js","../node_modules/refractor/lang/oz.js","../node_modules/refractor/lang/parigp.js","../node_modules/refractor/lang/parser.js","../node_modules/refractor/lang/pascal.js","../node_modules/refractor/lang/pascaligo.js","../node_modules/refractor/lang/psl.js","../node_modules/refractor/lang/pcaxis.js","../node_modules/refractor/lang/peoplecode.js","../node_modules/refractor/lang/phpdoc.js","../node_modules/refractor/lang/php-extras.js","../node_modules/refractor/lang/plant-uml.js","../node_modules/refractor/lang/plsql.js","../node_modules/refractor/lang/powerquery.js","../node_modules/refractor/lang/powershell.js","../node_modules/refractor/lang/processing.js","../node_modules/refractor/lang/prolog.js","../node_modules/refractor/lang/promql.js","../node_modules/refractor/lang/properties.js","../node_modules/refractor/lang/protobuf.js","../node_modules/refractor/lang/stylus.js","../node_modules/refractor/lang/twig.js","../node_modules/refractor/lang/pug.js","../node_modules/refractor/lang/puppet.js","../node_modules/refractor/lang/pure.js","../node_modules/refractor/lang/purebasic.js","../node_modules/refractor/lang/purescript.js","../node_modules/refractor/lang/qsharp.js","../node_modules/refractor/lang/q.js","../node_modules/refractor/lang/qml.js","../node_modules/refractor/lang/qore.js","../node_modules/refractor/lang/racket.js","../node_modules/refractor/lang/cshtml.js","../node_modules/refractor/lang/jsx.js","../node_modules/refractor/lang/tsx.js","../node_modules/refractor/lang/reason.js","../node_modules/refractor/lang/rego.js","../node_modules/refractor/lang/renpy.js","../node_modules/refractor/lang/rescript.js","../node_modules/refractor/lang/rest.js","../node_modules/refractor/lang/rip.js","../node_modules/refractor/lang/roboconf.js","../node_modules/refractor/lang/robotframework.js","../node_modules/refractor/lang/sas.js","../node_modules/refractor/lang/shell-session.js","../node_modules/refractor/lang/smali.js","../node_modules/refractor/lang/smalltalk.js","../node_modules/refractor/lang/smarty.js","../node_modules/refractor/lang/sml.js","../node_modules/refractor/lang/solidity.js","../node_modules/refractor/lang/solution-file.js","../node_modules/refractor/lang/soy.js","../node_modules/refractor/lang/turtle.js","../node_modules/refractor/lang/sparql.js","../node_modules/refractor/lang/splunk-spl.js","../node_modules/refractor/lang/sqf.js","../node_modules/refractor/lang/squirrel.js","../node_modules/refractor/lang/stan.js","../node_modules/refractor/lang/stata.js","../node_modules/refractor/lang/iecst.js","../node_modules/refractor/lang/supercollider.js","../node_modules/refractor/lang/systemd.js","../node_modules/refractor/lang/t4-templating.js","../node_modules/refractor/lang/t4-cs.js","../node_modules/refractor/lang/t4-vb.js","../node_modules/refractor/lang/tap.js","../node_modules/refractor/lang/tcl.js","../node_modules/refractor/lang/tt2.js","../node_modules/refractor/lang/toml.js","../node_modules/refractor/lang/tremor.js","../node_modules/refractor/lang/typoscript.js","../node_modules/refractor/lang/unrealscript.js","../node_modules/refractor/lang/uorazor.js","../node_modules/refractor/lang/v.js","../node_modules/refractor/lang/vala.js","../node_modules/refractor/lang/velocity.js","../node_modules/refractor/lang/verilog.js","../node_modules/refractor/lang/vhdl.js","../node_modules/refractor/lang/vim.js","../node_modules/refractor/lang/visual-basic.js","../node_modules/refractor/lang/warpscript.js","../node_modules/refractor/lang/wasm.js","../node_modules/refractor/lang/web-idl.js","../node_modules/refractor/lang/wgsl.js","../node_modules/refractor/lang/wiki.js","../node_modules/refractor/lang/wolfram.js","../node_modules/refractor/lang/wren.js","../node_modules/refractor/lang/xeora.js","../node_modules/refractor/lang/xml-doc.js","../node_modules/refractor/lang/xojo.js","../node_modules/refractor/lang/xquery.js","../node_modules/refractor/lang/yang.js","../node_modules/refractor/lang/zig.js","../node_modules/refractor/lib/common.js","../node_modules/refractor/lib/all.js","../node_modules/rehype-prism-plus/src/generator.js","../node_modules/rehype-prism-plus/src/all.js","../node_modules/rehype-prism-plus/src/common.js","../node_modules/direction/index.js","../node_modules/hast-util-select/lib/enter-state.js","../node_modules/hast-util-has-property/lib/index.js","../node_modules/hast-util-select/lib/attribute.js","../node_modules/bcp-47-match/index.js","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/parse.ts","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/index.ts","../https:/raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/compile.ts","../node_modules/hast-util-select/lib/pseudo.js","../node_modules/hast-util-select/lib/test.js","../node_modules/hast-util-select/lib/name.js","../node_modules/hast-util-select/lib/class-name.js","../node_modules/hast-util-select/lib/id.js","../node_modules/hast-util-select/lib/walk.js","../node_modules/hast-util-select/lib/parse.js","../node_modules/hast-util-select/lib/index.js","../node_modules/rehype-rewrite/src/index.ts","../node_modules/rehype-attr/src/utils.ts","../node_modules/rehype-attr/src/index.ts","../node_modules/@uiw/react-markdown-preview/esm/plugins/reservedMeta.js","../node_modules/github-slugger/regex.js","../node_modules/github-slugger/index.js","../node_modules/hast-util-heading-rank/lib/index.js","../node_modules/rehype-slug/index.js","../node_modules/hast-util-is-element/index.js","../node_modules/rehype-autolink-headings/lib/index.js","../node_modules/rehype-ignore/src/index.ts","../node_modules/@uiw/react-markdown-preview/esm/nodes/octiconLink.js","../node_modules/@uiw/react-markdown-preview/esm/rehypePlugins.js","../node_modules/@uiw/react-markdown-preview/esm/index.js","../node_modules/@uiw/react-markdown-preview/esm/nodes/copy.js","../node_modules/@uiw/react-md-editor/esm/Context.js","../node_modules/@uiw/react-md-editor/esm/components/TextArea/shortcuts.js","../node_modules/rehype-parse/lib/errors.js","../node_modules/rehype-parse/lib/index.js","../node_modules/stringify-entities/lib/core.js","../node_modules/stringify-entities/lib/util/to-hexadecimal.js","../node_modules/stringify-entities/lib/util/to-decimal.js","../node_modules/character-entities-html4/index.js","../node_modules/stringify-entities/lib/constant/dangerous.js","../node_modules/stringify-entities/lib/util/to-named.js","../node_modules/stringify-entities/lib/util/format-smart.js","../node_modules/stringify-entities/lib/util/format-basic.js","../node_modules/stringify-entities/lib/index.js","../node_modules/hast-util-to-html/lib/omission/util/siblings.js","../node_modules/hast-util-to-html/lib/omission/omission.js","../node_modules/hast-util-to-html/lib/omission/closing.js","../node_modules/hast-util-to-html/lib/omission/opening.js","../node_modules/hast-util-to-html/lib/handle/element.js","../node_modules/hast-util-to-html/lib/handle/text.js","../node_modules/hast-util-to-html/lib/handle/index.js","../node_modules/hast-util-to-html/lib/handle/comment.js","../node_modules/hast-util-to-html/lib/handle/doctype.js","../node_modules/hast-util-to-html/lib/handle/raw.js","../node_modules/hast-util-to-html/lib/handle/root.js","../node_modules/hast-util-to-html/lib/index.js","../node_modules/rehype/index.js","../node_modules/rehype-stringify/lib/index.js","../node_modules/@uiw/react-md-editor/esm/components/TextArea/Markdown.js","../node_modules/@uiw/react-md-editor/esm/utils/InsertTextAtPosition.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js","../node_modules/@uiw/react-md-editor/esm/utils/markdownUtils.js","../node_modules/@uiw/react-md-editor/esm/commands/bold.js","../node_modules/@uiw/react-md-editor/esm/commands/code.js","../node_modules/@uiw/react-md-editor/esm/commands/comment.js","../node_modules/@uiw/react-md-editor/esm/commands/divider.js","../node_modules/@uiw/react-md-editor/esm/commands/fullscreen.js","../node_modules/@uiw/react-md-editor/esm/commands/group.js","../node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","../node_modules/@uiw/react-md-editor/esm/commands/hr.js","../node_modules/@uiw/react-md-editor/esm/commands/image.js","../node_modules/@uiw/react-md-editor/esm/commands/italic.js","../node_modules/@uiw/react-md-editor/esm/commands/link.js","../node_modules/@uiw/react-md-editor/esm/commands/list.js","../node_modules/@uiw/react-md-editor/esm/commands/preview.js","../node_modules/@uiw/react-md-editor/esm/commands/quote.js","../node_modules/@uiw/react-md-editor/esm/commands/strikeThrough.js","../node_modules/@uiw/react-md-editor/esm/commands/title1.js","../node_modules/@uiw/react-md-editor/esm/commands/title.js","../node_modules/@uiw/react-md-editor/esm/commands/title2.js","../node_modules/@uiw/react-md-editor/esm/commands/title3.js","../node_modules/@uiw/react-md-editor/esm/commands/title4.js","../node_modules/@uiw/react-md-editor/esm/commands/title5.js","../node_modules/@uiw/react-md-editor/esm/commands/title6.js","../node_modules/@uiw/react-md-editor/esm/commands/table.js","../node_modules/@uiw/react-md-editor/esm/commands/help.js","../node_modules/@uiw/react-md-editor/esm/commands/index.js","../node_modules/@uiw/react-md-editor/esm/components/TextArea/handleKeyDown.js","../node_modules/@uiw/react-md-editor/esm/components/TextArea/Textarea.js","../node_modules/@uiw/react-md-editor/esm/components/TextArea/index.js","../node_modules/@uiw/react-md-editor/esm/components/Toolbar/Child.js","../node_modules/@uiw/react-md-editor/esm/components/Toolbar/index.js","../node_modules/@uiw/react-md-editor/esm/components/DragBar/index.js","../node_modules/@uiw/react-md-editor/esm/Editor.js","../node_modules/@uiw/react-md-editor/esm/index.js","../node_modules/hast-util-sanitize/lib/schema.js","../node_modules/hast-util-sanitize/lib/index.js","../node_modules/rehype-sanitize/index.js","../node_modules/mdast-util-newline-to-break/lib/index.js","../node_modules/remark-breaks/index.js","../node_modules/micromark-extension-directive/lib/factory-attributes.js","../node_modules/micromark-extension-directive/lib/factory-label.js","../node_modules/micromark-extension-directive/lib/factory-name.js","../node_modules/micromark-extension-directive/lib/directive-container.js","../node_modules/micromark-extension-directive/lib/directive-leaf.js","../node_modules/micromark-extension-directive/lib/directive-text.js","../node_modules/mdast-util-directive/lib/index.js","../node_modules/mdast-util-to-markdown/lib/util/check-quote.js","../node_modules/remark-directive/index.js","../node_modules/micromark-extension-directive/lib/syntax.js","../node_modules/remark-images/index.js","../node_modules/remark-unwrap-images/index.js","components/newpostbox/NewPostBox.tsx","components/eventeditor/EventEditorBoxContainer.tsx","components/eventeditor/EventEditorEndDate.tsx","components/eventeditor/EventEditorPublish.tsx","components/eventeditor/EventEditorRegionOptions.tsx","components/eventeditor/EventEditorStartDate.tsx","components/eventeditor/EventEditorStreamer.tsx","components/eventeditor/EventEditorTitle.tsx","components/editevent/SubmitEditEventButton.tsx","components/editevent/EditEvent.tsx","components/eventlisting/EventAdmin.tsx","countries.js","utils/EventHelpers.tsx","components/eventlisting/EventList.tsx","components/eventlisting/EventOptions.tsx","components/eventlisting/EventPagination.tsx","components/eventlisting/EventListing.tsx","components/thread/PostPagination.tsx","components/thread/NewPostBoxContainer.tsx","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/file-selector/src/file.ts","../node_modules/file-selector/src/file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","../node_modules/styled-components/node_modules/tslib/tslib.es6.mjs","../node_modules/styled-components/node_modules/stylis/src/Enum.js","../node_modules/styled-components/node_modules/stylis/src/Utility.js","../node_modules/styled-components/node_modules/stylis/src/Tokenizer.js","../node_modules/styled-components/node_modules/stylis/src/Serializer.js","../node_modules/styled-components/node_modules/stylis/src/Prefixer.js","../node_modules/styled-components/node_modules/stylis/src/Middleware.js","../node_modules/styled-components/node_modules/stylis/src/Parser.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/styled-components/src/constants.ts","../node_modules/styled-components/src/utils/empties.ts","../node_modules/styled-components/src/utils/checkDynamicCreation.ts","../node_modules/styled-components/src/utils/determineTheme.ts","../node_modules/styled-components/src/utils/domElements.ts","../node_modules/styled-components/src/utils/escape.ts","../node_modules/styled-components/src/utils/generateAlphabeticName.ts","../node_modules/styled-components/src/utils/hash.ts","../node_modules/styled-components/src/utils/generateComponentId.ts","../node_modules/styled-components/src/utils/getComponentName.ts","../node_modules/styled-components/src/utils/isTag.ts","../node_modules/styled-components/src/utils/hoist.ts","../node_modules/styled-components/src/utils/isFunction.ts","../node_modules/styled-components/src/utils/isStyledComponent.ts","../node_modules/styled-components/src/utils/joinStrings.ts","../node_modules/styled-components/src/utils/isPlainObject.ts","../node_modules/styled-components/src/utils/mixinDeep.ts","../node_modules/styled-components/src/utils/setToString.ts","../node_modules/styled-components/src/utils/error.ts","../node_modules/styled-components/src/sheet/GroupedTag.ts","../node_modules/styled-components/src/sheet/GroupIDAllocator.ts","../node_modules/styled-components/src/sheet/Rehydration.ts","../node_modules/styled-components/src/utils/nonce.ts","../node_modules/styled-components/src/sheet/dom.ts","../node_modules/styled-components/src/sheet/Tag.ts","../node_modules/styled-components/src/sheet/Sheet.ts","../node_modules/styled-components/src/utils/stylis.ts","../node_modules/styled-components/src/models/StyleSheetManager.tsx","../node_modules/styled-components/src/models/Keyframes.ts","../node_modules/styled-components/src/utils/hyphenateStyleName.ts","../node_modules/styled-components/src/utils/flatten.ts","../node_modules/styled-components/src/utils/addUnitIfNeeded.ts","../node_modules/styled-components/src/utils/isStatelessFunction.ts","../node_modules/styled-components/src/utils/isStaticRules.ts","../node_modules/styled-components/src/models/ComponentStyle.ts","../node_modules/styled-components/src/models/ThemeProvider.tsx","../node_modules/styled-components/src/models/StyledComponent.ts","../node_modules/styled-components/src/utils/generateDisplayName.ts","../node_modules/styled-components/src/utils/interleave.ts","../node_modules/styled-components/src/constructors/css.ts","../node_modules/styled-components/src/constructors/constructWithOptions.ts","../node_modules/styled-components/src/constructors/styled.tsx","../node_modules/styled-components/src/models/GlobalStyle.ts","../node_modules/styled-components/src/models/ServerStyleSheet.tsx","../node_modules/styled-components/src/base.ts","components/thread/PostFileDropzone.tsx","../node_modules/reactstrap/esm/CardImg.js","../node_modules/reactstrap/esm/CardImgOverlay.js","../node_modules/reactstrap/esm/CardText.js","components/thread/PostFilePreview.tsx","components/thread/PostFilePreviewer.tsx","../node_modules/reactstrap/esm/List.js","components/thread/PostFileRejection.tsx","components/thread/PostFileRejections.tsx","../node_modules/reactstrap/esm/PopperContent.js","../node_modules/reactstrap/esm/TooltipPopoverWrapper.js","../node_modules/reactstrap/esm/Tooltip.js","../node_modules/reactstrap/esm/UncontrolledTooltip.js","remarkColorDirectivePlugin.ts","components/markdown-post/MarkdownPost.tsx","components/thread/QuoteBox.tsx","components/thread/SubmitPostButton.tsx","components/thread/PostStation.tsx","../node_modules/react-router-hash-link/node_modules/tslib/tslib.es6.js","../node_modules/react-router-hash-link/src/HashLink.jsx","components/editpostbox/EditPostBox.tsx","components/thread/EditPostBoxContainer.tsx","components/thread/EditReasonSubmitCancel.tsx","components/thread/EditPostStation.tsx","components/thread/PostFileDisplay.tsx","components/thread/PostFileDisplayer.tsx","components/thread/PostModeratorTools.tsx","components/thread/ThreadPost.tsx","components/thread/ThreadPostList.tsx","components/singlemediacontainer/SingleMediaContainer.tsx","components/eventpage/EventDescription.tsx","components/eventpage/EventInfo.tsx","components/eventpage/EventContent.tsx","components/eventpage/EventHeader.tsx","components/eventpage/EventPage.tsx","components/newevent/SubmitNewEventButton.tsx","components/newevent/NewEvent.tsx","components/routes/EventRoutes.tsx","components/newthread/NewThreadBoxContainer.tsx","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-43c6fea0.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/react-select/dist/react-select.esm.js","components/newthread/NewThreadOptions.tsx","components/newthread/NewThreadTitle.tsx","../node_modules/clsx/dist/clsx.mjs","utils/utils.ts","components/newthread/SubmitThreadButton.tsx","components/newthread/NewThread.tsx","components/threadlist/PagesLinks.tsx","components/threadlist/UnreadControl.tsx","components/threadlist/ThreadList.tsx","components/threadlist/ThreadOptions.tsx","components/threadlist/ThreadPagination.tsx","components/threadlisting/ThreadListing.tsx","components/columns/Columns.tsx","../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","../node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","../node_modules/@babel/runtime/helpers/esm/assertClassBrand.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@tanstack/query-core/src/notifyManager.ts","../node_modules/@tanstack/query-core/src/subscribable.ts","../node_modules/@tanstack/query-core/src/focusManager.ts","../node_modules/@tanstack/query-core/src/onlineManager.ts","../node_modules/@tanstack/query-core/src/retryer.ts","../node_modules/@tanstack/query-core/src/removable.ts","../node_modules/@tanstack/query-core/src/query.ts","../node_modules/@tanstack/query-core/src/queryObserver.ts","../node_modules/@tanstack/react-query/src/QueryErrorResetBoundary.tsx","../node_modules/@tanstack/react-query/src/QueryClientProvider.tsx","../node_modules/@tanstack/react-query/src/isRestoring.ts","../node_modules/@tanstack/react-query/src/utils.ts","../node_modules/@tanstack/react-query/src/errorBoundaryUtils.ts","../node_modules/@tanstack/react-query/src/suspense.ts","../node_modules/@tanstack/react-query/src/useQuery.ts","../node_modules/@tanstack/react-query/src/useBaseQuery.ts","hooks/useCommunityNews.tsx","components/community-news-card/CommunityNewsCard.tsx","../node_modules/lucide-react/src/icons/shield-check.ts","../node_modules/lucide-react/src/icons/shield-plus.ts","../node_modules/lucide-react/src/icons/shield.ts","../node_modules/lucide-react/src/icons/flame.ts","../node_modules/lucide-react/src/icons/eye-off.ts","../node_modules/lucide-react/src/icons/pin.ts","../node_modules/lucide-react/src/icons/pin-off.ts","../node_modules/lucide-react/src/icons/activity.ts","../node_modules/lucide-react/src/icons/radio.ts","../node_modules/lucide-react/src/icons/lock.ts","../node_modules/lucide-react/src/icons/lock-open.ts","../node_modules/lucide-react/src/icons/trash.ts","components/icons/Icons.tsx","../node_modules/reactstrap/esm/ListGroup.js","../node_modules/reactstrap/esm/ListGroupItem.js","components/events-card/EventsCard.tsx","hooks/useEvents.tsx","../node_modules/lucide-react/src/icons/flag.ts","../node_modules/lucide-react/src/icons/message-square-plus.ts","components/recent-threads-card/RecentThreadsCard.tsx","hooks/useRecentThreads.tsx","hooks/useCapabilities.tsx","hooks/useRoles.tsx","hooks/useThreads.tsx","api/getThreads.ts","../node_modules/reactstrap/esm/Badge.js","pages/forum/Forum.tsx","api/getUserUnreadPosts.ts","components/forum-list/ForumList.tsx","pages/forums/Forums.tsx","components/markdown-editor/MarkdownEditor.tsx","components/post-file-card/PostFileCard.tsx","../node_modules/reactstrap/esm/AccordionContext.js","../node_modules/reactstrap/esm/Accordion.js","../node_modules/reactstrap/esm/AccordionItem.js","../node_modules/reactstrap/esm/AccordionHeader.js","../node_modules/reactstrap/esm/AccordionBody.js","components/quoted-post/QuotedPost.tsx","hooks/useQuotedPost.tsx","contexts/ReadPostsContext.tsx","api/markPostAsRead.tsx","components/post/Post.tsx","hooks/useInView.tsx","hooks/useMarkPostsAsRead.tsx","components/postlist/PostList.tsx","api/getThreadMeta.ts","hooks/useThreadMeta.tsx","components/thread-header/ThreadHeader.tsx","hooks/usePaginatedThread.tsx","api/getPaginatedThread.ts","../node_modules/@tanstack/query-core/src/mutation.ts","../node_modules/@tanstack/query-core/src/mutationObserver.ts","../node_modules/@tanstack/react-query/src/useMutation.ts","hooks/useThreadModTools.tsx","../node_modules/lucide-react/src/icons/square-plus.ts","../node_modules/reactstrap/esm/ButtonGroup.js","pages/thread/ThreadModTools.tsx","contexts/PostStation2Context.tsx","../node_modules/lucide-react/src/icons/image.ts","components/poststation2/ImagePreviewTooltip.tsx","components/poststation2/postFileValidator.ts","components/poststation2/PostStation2.tsx","pages/thread/ReplyEditor.tsx","pages/thread/ThreadPage.tsx","hooks/useScrollToHash.tsx","components/routes/ForumRoutes.tsx","components/newseditor/NewsEditorBoxContainer.tsx","components/newseditor/NewsEditorPublish.tsx","components/newseditor/NewsEditorTitle.tsx","components/editnews/SubmitEditNewsButton.tsx","components/editnews/EditNews.tsx","components/newnews/SubmitNewNewsButton.tsx","components/newnews/NewNews.tsx","components/newslisting/NewsAdmin.tsx","components/newslisting/NewsList.tsx","components/newslisting/NewsPagination.tsx","components/newslisting/NewsListing.tsx","components/reactions/Reactions.tsx","components/newspage/NewsAuthorInfo.tsx","components/newspage/NewsContent.tsx","components/newspage/NewsHeader.tsx","components/newspage/NewsPage.tsx","components/routes/NewsRoutes.tsx","components/editpromotions/AddToCurrentPromotions.tsx","components/editpromotions/PromotionInfo.tsx","components/editpromotions/SearchForResources.tsx","components/editpromotions/SelectResource.tsx","components/editpromotions/SearchAddPromotions.tsx","../node_modules/dnd-core/node_modules/redux/es/redux.js","../node_modules/@react-dnd/invariant/src/index.ts","../node_modules/dnd-core/src/utils/js_utils.ts","../node_modules/dnd-core/src/actions/dragDrop/types.ts","../node_modules/dnd-core/src/actions/dragDrop/local/setClientOffset.ts","../node_modules/dnd-core/src/actions/dragDrop/beginDrag.ts","../node_modules/dnd-core/src/actions/dragDrop/drop.ts","../node_modules/dnd-core/src/actions/dragDrop/endDrag.ts","../node_modules/dnd-core/src/utils/matchesType.ts","../node_modules/dnd-core/src/actions/dragDrop/hover.ts","../node_modules/dnd-core/src/actions/dragDrop/publishDragSource.ts","../node_modules/dnd-core/src/classes/DragDropManagerImpl.ts","../node_modules/dnd-core/src/actions/dragDrop/index.ts","../node_modules/dnd-core/src/utils/coords.ts","../node_modules/dnd-core/src/utils/dirtiness.ts","../node_modules/dnd-core/src/classes/DragDropMonitorImpl.ts","../node_modules/@react-dnd/asap/src/makeRequestCall.ts","../node_modules/@react-dnd/asap/src/RawTask.ts","../node_modules/@react-dnd/asap/src/asap.ts","../node_modules/@react-dnd/asap/src/AsapQueue.ts","../node_modules/@react-dnd/asap/src/TaskFactory.ts","../node_modules/dnd-core/src/actions/registry.ts","../node_modules/dnd-core/src/contracts.ts","../node_modules/dnd-core/src/interfaces.ts","../node_modules/dnd-core/src/utils/getNextUniqueId.ts","../node_modules/dnd-core/src/classes/HandlerRegistryImpl.ts","../node_modules/dnd-core/src/utils/equality.ts","../node_modules/dnd-core/src/reducers/dirtyHandlerIds.ts","../node_modules/dnd-core/src/reducers/dragOffset.ts","../node_modules/dnd-core/src/reducers/dragOperation.ts","../node_modules/dnd-core/src/reducers/refCount.ts","../node_modules/dnd-core/src/reducers/stateId.ts","../node_modules/dnd-core/src/reducers/index.ts","../node_modules/dnd-core/src/createDragDropManager.ts","../node_modules/react-dnd/src/core/DndContext.ts","../node_modules/react-dnd/src/core/DndProvider.tsx","../node_modules/react-dnd-html5-backend/src/utils/js_utils.ts","../node_modules/react-dnd-html5-backend/src/EnterLeaveCounter.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/NativeDragSource.ts","../node_modules/react-dnd-html5-backend/src/NativeTypes.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/getDataFromDataTransfer.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/nativeTypesConfig.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/index.ts","../node_modules/react-dnd-html5-backend/src/BrowserDetector.ts","../node_modules/react-dnd-html5-backend/src/MonotonicInterpolant.ts","../node_modules/react-dnd-html5-backend/src/OffsetUtils.ts","../node_modules/react-dnd-html5-backend/src/OptionsReader.ts","../node_modules/react-dnd-html5-backend/src/HTML5BackendImpl.ts","../node_modules/react-dnd-html5-backend/src/index.ts","../node_modules/react-dnd/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/react-dnd/src/hooks/useMonitorOutput.ts","../node_modules/react-dnd/src/hooks/useCollector.ts","../node_modules/react-dnd/src/hooks/useCollectedProps.ts","../node_modules/react-dnd/src/hooks/useOptionalFactory.ts","../node_modules/react-dnd/src/hooks/useDrop/connectors.ts","../node_modules/@react-dnd/shallowequal/src/index.ts","../node_modules/react-dnd/src/internals/isRef.ts","../node_modules/react-dnd/src/internals/wrapConnectorHooks.ts","../node_modules/react-dnd/src/internals/TargetConnector.ts","../node_modules/react-dnd/src/hooks/useDragDropManager.ts","../node_modules/react-dnd/src/internals/DropTargetMonitorImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/DropTargetImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/useRegisteredDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useAccept.ts","../node_modules/react-dnd/src/internals/registration.ts","../node_modules/react-dnd/src/hooks/useDrop/useDrop.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetMonitor.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetConnector.ts","../node_modules/react-dnd/src/hooks/useDrag/connectors.ts","../node_modules/react-dnd/src/internals/SourceConnector.ts","../node_modules/react-dnd/src/internals/DragSourceMonitorImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/DragSourceImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/useRegisteredDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragType.ts","../node_modules/react-dnd/src/hooks/useDrag/useDrag.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceMonitor.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceConnector.ts","components/editpromotions/ItemTypes.tsx","components/editpromotions/PromotionItem.tsx","components/editpromotions/SetPromotionOrder.tsx","components/editpromotions/SubmitNewPromotions.tsx","components/editpromotions/EditPromotions.tsx","components/routes/PromotionRoutes.tsx","components/promoted/Promoted.tsx","pages/home/Home.tsx","../node_modules/@tanstack/query-core/src/queryCache.ts","../node_modules/@tanstack/query-core/src/mutationCache.ts","../node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts","../node_modules/@tanstack/query-core/src/queryClient.ts","App.tsx","registerServiceWorker.ts","reportWebVitals.ts","index.tsx"],"sourcesContent":["/**\n * *** This styling is an extra step which is likely not required. ***\n * https://github.com/w3c/clipboard-apis/blob/master/explainer.adoc#writing-to-the-clipboard\n * \n * Why is it here? To ensure:\n * \n * 1. the element is able to have focus and selection.\n * 2. if element was to flash render it has minimal visual impact.\n * 3. less flakyness with selection and copying which **might** occur if\n * the textarea element is not visible.\n *\n * The likelihood is the element won't even render, not even a flash,\n * so some of these are just precautions. However in IE the element\n * is visible whilst the popup box asking the user for permission for\n * the web page to copy to the clipboard.\n * \n * Place in top-left corner of screen regardless of scroll position.\n *\n * @typedef CopyTextToClipboard\n * @property {(text: string, method?: (isCopy: boolean) => void) => void} void\n * @returns {void}\n * \n * @param {string} text \n * @param {CopyTextToClipboard} cb \n */\nexport default function copyTextToClipboard(text, cb) {\n if (typeof document === \"undefined\") return;\n const el = document.createElement('textarea');\n el.value = text;\n el.setAttribute('readonly', '');\n el.style = {\n position: 'absolute',\n left: '-9999px',\n }\n document.body.appendChild(el);\n const selected = document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false;\n el.select();\n let isCopy = false;\n try {\n const successful = document.execCommand('copy');\n isCopy = !!successful;\n } catch (err) {\n isCopy = false;\n }\n document.body.removeChild(el);\n if (selected && document.getSelection) {\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(selected);\n }\n cb && cb(isCopy);\n};\n","/**\n * @yaireo/relative-time - javascript function to transform timestamp or date to local relative-time\n *\n * @version v1.0.4\n * @homepage https://github.com/yairEO/relative-time\n */\n\n!function(e,t){var o=o||{};\"function\"==typeof o&&o.amd?o([],t):\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"object\"==typeof exports?exports.RelativeTime=t():e.RelativeTime=t()}(this,(function(){const e={year:31536e6,month:2628e6,day:864e5,hour:36e5,minute:6e4,second:1e3},t=\"en\",o={numeric:\"auto\"};function n(e){e={locale:(e=e||{}).locale||t,options:{...o,...e.options}},this.rtf=new Intl.RelativeTimeFormat(e.locale,e.options)}return n.prototype={from(t,o){const n=t-(o||new Date);for(let t in e)if(Math.abs(n)>e[t]||\"second\"==t)return this.rtf.format(Math.round(n/e[t]),t)}},n}));","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Utf8;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar parser_context_1 = require(\"./parser-context\");\nvar render_1 = require(\"./render\");\nvar CssSelectorParser = /** @class */ (function () {\n function CssSelectorParser() {\n this.pseudos = {};\n this.attrEqualityMods = {};\n this.ruleNestingOperators = {};\n this.substitutesEnabled = false;\n }\n CssSelectorParser.prototype.registerSelectorPseudos = function () {\n var pseudos = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n pseudos[_i] = arguments[_i];\n }\n for (var _a = 0, pseudos_1 = pseudos; _a < pseudos_1.length; _a++) {\n var pseudo = pseudos_1[_a];\n this.pseudos[pseudo] = 'selector';\n }\n return this;\n };\n CssSelectorParser.prototype.unregisterSelectorPseudos = function () {\n var pseudos = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n pseudos[_i] = arguments[_i];\n }\n for (var _a = 0, pseudos_2 = pseudos; _a < pseudos_2.length; _a++) {\n var pseudo = pseudos_2[_a];\n delete this.pseudos[pseudo];\n }\n return this;\n };\n CssSelectorParser.prototype.registerNumericPseudos = function () {\n var pseudos = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n pseudos[_i] = arguments[_i];\n }\n for (var _a = 0, pseudos_3 = pseudos; _a < pseudos_3.length; _a++) {\n var pseudo = pseudos_3[_a];\n this.pseudos[pseudo] = 'numeric';\n }\n return this;\n };\n CssSelectorParser.prototype.unregisterNumericPseudos = function () {\n var pseudos = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n pseudos[_i] = arguments[_i];\n }\n for (var _a = 0, pseudos_4 = pseudos; _a < pseudos_4.length; _a++) {\n var pseudo = pseudos_4[_a];\n delete this.pseudos[pseudo];\n }\n return this;\n };\n CssSelectorParser.prototype.registerNestingOperators = function () {\n var operators = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operators[_i] = arguments[_i];\n }\n for (var _a = 0, operators_1 = operators; _a < operators_1.length; _a++) {\n var operator = operators_1[_a];\n this.ruleNestingOperators[operator] = true;\n }\n return this;\n };\n CssSelectorParser.prototype.unregisterNestingOperators = function () {\n var operators = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operators[_i] = arguments[_i];\n }\n for (var _a = 0, operators_2 = operators; _a < operators_2.length; _a++) {\n var operator = operators_2[_a];\n delete this.ruleNestingOperators[operator];\n }\n return this;\n };\n CssSelectorParser.prototype.registerAttrEqualityMods = function () {\n var mods = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n mods[_i] = arguments[_i];\n }\n for (var _a = 0, mods_1 = mods; _a < mods_1.length; _a++) {\n var mod = mods_1[_a];\n this.attrEqualityMods[mod] = true;\n }\n return this;\n };\n CssSelectorParser.prototype.unregisterAttrEqualityMods = function () {\n var mods = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n mods[_i] = arguments[_i];\n }\n for (var _a = 0, mods_2 = mods; _a < mods_2.length; _a++) {\n var mod = mods_2[_a];\n delete this.attrEqualityMods[mod];\n }\n return this;\n };\n CssSelectorParser.prototype.enableSubstitutes = function () {\n this.substitutesEnabled = true;\n return this;\n };\n CssSelectorParser.prototype.disableSubstitutes = function () {\n this.substitutesEnabled = false;\n return this;\n };\n CssSelectorParser.prototype.parse = function (str) {\n return parser_context_1.parseCssSelector(str, 0, this.pseudos, this.attrEqualityMods, this.ruleNestingOperators, this.substitutesEnabled);\n };\n CssSelectorParser.prototype.render = function (path) {\n return render_1.renderEntity(path).trim();\n };\n return CssSelectorParser;\n}());\nexports.CssSelectorParser = CssSelectorParser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nfunction parseCssSelector(str, pos, pseudos, attrEqualityMods, ruleNestingOperators, substitutesEnabled) {\n var l = str.length;\n var chr = '';\n function getStr(quote, escapeTable) {\n var result = '';\n pos++;\n chr = str.charAt(pos);\n while (pos < l) {\n if (chr === quote) {\n pos++;\n return result;\n }\n else if (chr === '\\\\') {\n pos++;\n chr = str.charAt(pos);\n var esc = void 0;\n if (chr === quote) {\n result += quote;\n }\n else if ((esc = escapeTable[chr]) !== undefined) {\n result += esc;\n }\n else if (utils_1.isHex(chr)) {\n var hex = chr;\n pos++;\n chr = str.charAt(pos);\n while (utils_1.isHex(chr)) {\n hex += chr;\n pos++;\n chr = str.charAt(pos);\n }\n if (chr === ' ') {\n pos++;\n chr = str.charAt(pos);\n }\n result += String.fromCharCode(parseInt(hex, 16));\n continue;\n }\n else {\n result += chr;\n }\n }\n else {\n result += chr;\n }\n pos++;\n chr = str.charAt(pos);\n }\n return result;\n }\n function getIdent() {\n var result = '';\n chr = str.charAt(pos);\n while (pos < l) {\n if (utils_1.isIdent(chr)) {\n result += chr;\n }\n else if (chr === '\\\\') {\n pos++;\n if (pos >= l) {\n throw Error('Expected symbol but end of file reached.');\n }\n chr = str.charAt(pos);\n if (utils_1.identSpecialChars[chr]) {\n result += chr;\n }\n else if (utils_1.isHex(chr)) {\n var hex = chr;\n pos++;\n chr = str.charAt(pos);\n while (utils_1.isHex(chr)) {\n hex += chr;\n pos++;\n chr = str.charAt(pos);\n }\n if (chr === ' ') {\n pos++;\n chr = str.charAt(pos);\n }\n result += String.fromCharCode(parseInt(hex, 16));\n continue;\n }\n else {\n result += chr;\n }\n }\n else {\n return result;\n }\n pos++;\n chr = str.charAt(pos);\n }\n return result;\n }\n function skipWhitespace() {\n chr = str.charAt(pos);\n var result = false;\n while (chr === ' ' || chr === \"\\t\" || chr === \"\\n\" || chr === \"\\r\" || chr === \"\\f\") {\n result = true;\n pos++;\n chr = str.charAt(pos);\n }\n return result;\n }\n function parse() {\n var res = parseSelector();\n if (pos < l) {\n throw Error('Rule expected but \"' + str.charAt(pos) + '\" found.');\n }\n return res;\n }\n function parseSelector() {\n var selector = parseSingleSelector();\n if (!selector) {\n return null;\n }\n var res = selector;\n chr = str.charAt(pos);\n while (chr === ',') {\n pos++;\n skipWhitespace();\n if (res.type !== 'selectors') {\n res = {\n type: 'selectors',\n selectors: [selector]\n };\n }\n selector = parseSingleSelector();\n if (!selector) {\n throw Error('Rule expected after \",\".');\n }\n res.selectors.push(selector);\n }\n return res;\n }\n function parseSingleSelector() {\n skipWhitespace();\n var selector = {\n type: 'ruleSet'\n };\n var rule = parseRule();\n if (!rule) {\n return null;\n }\n var currentRule = selector;\n while (rule) {\n rule.type = 'rule';\n currentRule.rule = rule;\n currentRule = rule;\n skipWhitespace();\n chr = str.charAt(pos);\n if (pos >= l || chr === ',' || chr === ')') {\n break;\n }\n if (ruleNestingOperators[chr]) {\n var op = chr;\n pos++;\n skipWhitespace();\n rule = parseRule();\n if (!rule) {\n throw Error('Rule expected after \"' + op + '\".');\n }\n rule.nestingOperator = op;\n }\n else {\n rule = parseRule();\n if (rule) {\n rule.nestingOperator = null;\n }\n }\n }\n return selector;\n }\n // @ts-ignore no-overlap\n function parseRule() {\n var rule = null;\n while (pos < l) {\n chr = str.charAt(pos);\n if (chr === '*') {\n pos++;\n (rule = rule || {}).tagName = '*';\n }\n else if (utils_1.isIdentStart(chr) || chr === '\\\\') {\n (rule = rule || {}).tagName = getIdent();\n }\n else if (chr === '.') {\n pos++;\n rule = rule || {};\n (rule.classNames = rule.classNames || []).push(getIdent());\n }\n else if (chr === '#') {\n pos++;\n (rule = rule || {}).id = getIdent();\n }\n else if (chr === '[') {\n pos++;\n skipWhitespace();\n var attr = {\n name: getIdent()\n };\n skipWhitespace();\n // @ts-ignore\n if (chr === ']') {\n pos++;\n }\n else {\n var operator = '';\n if (attrEqualityMods[chr]) {\n operator = chr;\n pos++;\n chr = str.charAt(pos);\n }\n if (pos >= l) {\n throw Error('Expected \"=\" but end of file reached.');\n }\n if (chr !== '=') {\n throw Error('Expected \"=\" but \"' + chr + '\" found.');\n }\n attr.operator = operator + '=';\n pos++;\n skipWhitespace();\n var attrValue = '';\n attr.valueType = 'string';\n // @ts-ignore\n if (chr === '\"') {\n attrValue = getStr('\"', utils_1.doubleQuotesEscapeChars);\n // @ts-ignore\n }\n else if (chr === '\\'') {\n attrValue = getStr('\\'', utils_1.singleQuoteEscapeChars);\n // @ts-ignore\n }\n else if (substitutesEnabled && chr === '$') {\n pos++;\n attrValue = getIdent();\n attr.valueType = 'substitute';\n }\n else {\n while (pos < l) {\n if (chr === ']') {\n break;\n }\n attrValue += chr;\n pos++;\n chr = str.charAt(pos);\n }\n attrValue = attrValue.trim();\n }\n skipWhitespace();\n if (pos >= l) {\n throw Error('Expected \"]\" but end of file reached.');\n }\n if (chr !== ']') {\n throw Error('Expected \"]\" but \"' + chr + '\" found.');\n }\n pos++;\n attr.value = attrValue;\n }\n rule = rule || {};\n (rule.attrs = rule.attrs || []).push(attr);\n }\n else if (chr === ':') {\n pos++;\n var pseudoName = getIdent();\n var pseudo = {\n name: pseudoName\n };\n // @ts-ignore\n if (chr === '(') {\n pos++;\n var value = '';\n skipWhitespace();\n if (pseudos[pseudoName] === 'selector') {\n pseudo.valueType = 'selector';\n value = parseSelector();\n }\n else {\n pseudo.valueType = pseudos[pseudoName] || 'string';\n // @ts-ignore\n if (chr === '\"') {\n value = getStr('\"', utils_1.doubleQuotesEscapeChars);\n // @ts-ignore\n }\n else if (chr === '\\'') {\n value = getStr('\\'', utils_1.singleQuoteEscapeChars);\n // @ts-ignore\n }\n else if (substitutesEnabled && chr === '$') {\n pos++;\n value = getIdent();\n pseudo.valueType = 'substitute';\n }\n else {\n while (pos < l) {\n if (chr === ')') {\n break;\n }\n value += chr;\n pos++;\n chr = str.charAt(pos);\n }\n value = value.trim();\n }\n skipWhitespace();\n }\n if (pos >= l) {\n throw Error('Expected \")\" but end of file reached.');\n }\n if (chr !== ')') {\n throw Error('Expected \")\" but \"' + chr + '\" found.');\n }\n pos++;\n pseudo.value = value;\n }\n rule = rule || {};\n (rule.pseudos = rule.pseudos || []).push(pseudo);\n }\n else {\n break;\n }\n }\n return rule;\n }\n return parse();\n}\nexports.parseCssSelector = parseCssSelector;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nfunction renderEntity(entity) {\n var res = '';\n switch (entity.type) {\n case 'ruleSet':\n var currentEntity = entity.rule;\n var parts = [];\n while (currentEntity) {\n if (currentEntity.nestingOperator) {\n parts.push(currentEntity.nestingOperator);\n }\n parts.push(renderEntity(currentEntity));\n currentEntity = currentEntity.rule;\n }\n res = parts.join(' ');\n break;\n case 'selectors':\n res = entity.selectors.map(renderEntity).join(', ');\n break;\n case 'rule':\n if (entity.tagName) {\n if (entity.tagName === '*') {\n res = '*';\n }\n else {\n res = utils_1.escapeIdentifier(entity.tagName);\n }\n }\n if (entity.id) {\n res += \"#\" + utils_1.escapeIdentifier(entity.id);\n }\n if (entity.classNames) {\n res += entity.classNames.map(function (cn) {\n return \".\" + (utils_1.escapeIdentifier(cn));\n }).join('');\n }\n if (entity.attrs) {\n res += entity.attrs.map(function (attr) {\n if ('operator' in attr) {\n if (attr.valueType === 'substitute') {\n return \"[\" + utils_1.escapeIdentifier(attr.name) + attr.operator + \"$\" + attr.value + \"]\";\n }\n else {\n return \"[\" + utils_1.escapeIdentifier(attr.name) + attr.operator + utils_1.escapeStr(attr.value) + \"]\";\n }\n }\n else {\n return \"[\" + utils_1.escapeIdentifier(attr.name) + \"]\";\n }\n }).join('');\n }\n if (entity.pseudos) {\n res += entity.pseudos.map(function (pseudo) {\n if (pseudo.valueType) {\n if (pseudo.valueType === 'selector') {\n return \":\" + utils_1.escapeIdentifier(pseudo.name) + \"(\" + renderEntity(pseudo.value) + \")\";\n }\n else if (pseudo.valueType === 'substitute') {\n return \":\" + utils_1.escapeIdentifier(pseudo.name) + \"($\" + pseudo.value + \")\";\n }\n else if (pseudo.valueType === 'numeric') {\n return \":\" + utils_1.escapeIdentifier(pseudo.name) + \"(\" + pseudo.value + \")\";\n }\n else {\n return (\":\" + utils_1.escapeIdentifier(pseudo.name) +\n \"(\" + utils_1.escapeIdentifier(pseudo.value) + \")\");\n }\n }\n else {\n return \":\" + utils_1.escapeIdentifier(pseudo.name);\n }\n }).join('');\n }\n break;\n default:\n throw Error('Unknown entity type: \"' + entity.type + '\".');\n }\n return res;\n}\nexports.renderEntity = renderEntity;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isIdentStart(c) {\n return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c === '-') || (c === '_');\n}\nexports.isIdentStart = isIdentStart;\nfunction isIdent(c) {\n return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c === '-' || c === '_';\n}\nexports.isIdent = isIdent;\nfunction isHex(c) {\n return (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') || (c >= '0' && c <= '9');\n}\nexports.isHex = isHex;\nfunction escapeIdentifier(s) {\n var len = s.length;\n var result = '';\n var i = 0;\n while (i < len) {\n var chr = s.charAt(i);\n if (exports.identSpecialChars[chr]) {\n result += '\\\\' + chr;\n }\n else {\n if (!(chr === '_' || chr === '-' ||\n (chr >= 'A' && chr <= 'Z') ||\n (chr >= 'a' && chr <= 'z') ||\n (i !== 0 && chr >= '0' && chr <= '9'))) {\n var charCode = chr.charCodeAt(0);\n if ((charCode & 0xF800) === 0xD800) {\n var extraCharCode = s.charCodeAt(i++);\n if ((charCode & 0xFC00) !== 0xD800 || (extraCharCode & 0xFC00) !== 0xDC00) {\n throw Error('UCS-2(decode): illegal sequence');\n }\n charCode = ((charCode & 0x3FF) << 10) + (extraCharCode & 0x3FF) + 0x10000;\n }\n result += '\\\\' + charCode.toString(16) + ' ';\n }\n else {\n result += chr;\n }\n }\n i++;\n }\n return result;\n}\nexports.escapeIdentifier = escapeIdentifier;\nfunction escapeStr(s) {\n var len = s.length;\n var result = '';\n var i = 0;\n var replacement;\n while (i < len) {\n var chr = s.charAt(i);\n if (chr === '\"') {\n chr = '\\\\\"';\n }\n else if (chr === '\\\\') {\n chr = '\\\\\\\\';\n }\n else if ((replacement = exports.strReplacementsRev[chr]) !== undefined) {\n chr = replacement;\n }\n result += chr;\n i++;\n }\n return \"\\\"\" + result + \"\\\"\";\n}\nexports.escapeStr = escapeStr;\nexports.identSpecialChars = {\n '!': true,\n '\"': true,\n '#': true,\n '$': true,\n '%': true,\n '&': true,\n '\\'': true,\n '(': true,\n ')': true,\n '*': true,\n '+': true,\n ',': true,\n '.': true,\n '/': true,\n ';': true,\n '<': true,\n '=': true,\n '>': true,\n '?': true,\n '@': true,\n '[': true,\n '\\\\': true,\n ']': true,\n '^': true,\n '`': true,\n '{': true,\n '|': true,\n '}': true,\n '~': true\n};\nexports.strReplacementsRev = {\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\f': '\\\\f',\n '\\v': '\\\\v'\n};\nexports.singleQuoteEscapeChars = {\n n: '\\n',\n r: '\\r',\n t: '\\t',\n f: '\\f',\n '\\\\': '\\\\',\n '\\'': '\\''\n};\nexports.doubleQuotesEscapeChars = {\n n: '\\n',\n r: '\\r',\n t: '\\t',\n f: '\\f',\n '\\\\': '\\\\',\n '\"': '\"'\n};\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stringifiable(obj) {\n // Safely stringify Object.create(null)\n /* istanbul ignore next */\n return typeof obj === 'object' && !('toString' in obj) ?\n Object.prototype.toString.call(obj).slice(8, -1) :\n obj;\n}\nvar isProduction = typeof process === 'object' && process.env.NODE_ENV === 'production';\nfunction invariant(condition, message) {\n if (!condition) {\n /* istanbul ignore next */\n if (isProduction) {\n throw new Error('Invariant failed');\n }\n throw new Error(message());\n }\n}\nexports.invariant = invariant;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar splice = Array.prototype.splice;\nvar toString = Object.prototype.toString;\nfunction type(obj) {\n return toString.call(obj).slice(8, -1);\n}\nvar assign = Object.assign || /* istanbul ignore next */ (function (target, source) {\n getAllKeys(source).forEach(function (key) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n });\n return target;\n});\nvar getAllKeys = typeof Object.getOwnPropertySymbols === 'function'\n ? function (obj) { return Object.keys(obj).concat(Object.getOwnPropertySymbols(obj)); }\n /* istanbul ignore next */\n : function (obj) { return Object.keys(obj); };\nfunction copy(object) {\n return Array.isArray(object)\n ? assign(object.constructor(object.length), object)\n : (type(object) === 'Map')\n ? new Map(object)\n : (type(object) === 'Set')\n ? new Set(object)\n : (object && typeof object === 'object')\n ? assign(Object.create(Object.getPrototypeOf(object)), object)\n /* istanbul ignore next */\n : object;\n}\nvar Context = /** @class */ (function () {\n function Context() {\n this.commands = assign({}, defaultCommands);\n this.update = this.update.bind(this);\n // Deprecated: update.extend, update.isEquals and update.newContext\n this.update.extend = this.extend = this.extend.bind(this);\n this.update.isEquals = function (x, y) { return x === y; };\n this.update.newContext = function () { return new Context().update; };\n }\n Object.defineProperty(Context.prototype, \"isEquals\", {\n get: function () {\n return this.update.isEquals;\n },\n set: function (value) {\n this.update.isEquals = value;\n },\n enumerable: true,\n configurable: true\n });\n Context.prototype.extend = function (directive, fn) {\n this.commands[directive] = fn;\n };\n Context.prototype.update = function (object, $spec) {\n var _this = this;\n var spec = (typeof $spec === 'function') ? { $apply: $spec } : $spec;\n if (!(Array.isArray(object) && Array.isArray(spec))) {\n invariant(!Array.isArray(spec), function () { return \"update(): You provided an invalid spec to update(). The spec may \" +\n \"not contain an array except as the value of $set, $push, $unshift, \" +\n \"$splice or any custom command allowing an array value.\"; });\n }\n invariant(typeof spec === 'object' && spec !== null, function () { return \"update(): You provided an invalid spec to update(). The spec and \" +\n \"every included key path must be plain objects containing one of the \" +\n (\"following commands: \" + Object.keys(_this.commands).join(', ') + \".\"); });\n var nextObject = object;\n getAllKeys(spec).forEach(function (key) {\n if (hasOwnProperty.call(_this.commands, key)) {\n var objectWasNextObject = object === nextObject;\n nextObject = _this.commands[key](spec[key], nextObject, spec, object);\n if (objectWasNextObject && _this.isEquals(nextObject, object)) {\n nextObject = object;\n }\n }\n else {\n var nextValueForKey = type(object) === 'Map'\n ? _this.update(object.get(key), spec[key])\n : _this.update(object[key], spec[key]);\n var nextObjectValue = type(nextObject) === 'Map'\n ? nextObject.get(key)\n : nextObject[key];\n if (!_this.isEquals(nextValueForKey, nextObjectValue)\n || typeof nextValueForKey === 'undefined'\n && !hasOwnProperty.call(object, key)) {\n if (nextObject === object) {\n nextObject = copy(object);\n }\n if (type(nextObject) === 'Map') {\n nextObject.set(key, nextValueForKey);\n }\n else {\n nextObject[key] = nextValueForKey;\n }\n }\n }\n });\n return nextObject;\n };\n return Context;\n}());\nexports.Context = Context;\nvar defaultCommands = {\n $push: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$push');\n return value.length ? nextObject.concat(value) : nextObject;\n },\n $unshift: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$unshift');\n return value.length ? value.concat(nextObject) : nextObject;\n },\n $splice: function (value, nextObject, spec, originalObject) {\n invariantSplices(nextObject, spec);\n value.forEach(function (args) {\n invariantSplice(args);\n if (nextObject === originalObject && args.length) {\n nextObject = copy(originalObject);\n }\n splice.apply(nextObject, args);\n });\n return nextObject;\n },\n $set: function (value, _nextObject, spec) {\n invariantSet(spec);\n return value;\n },\n $toggle: function (targets, nextObject) {\n invariantSpecArray(targets, '$toggle');\n var nextObjectCopy = targets.length ? copy(nextObject) : nextObject;\n targets.forEach(function (target) {\n nextObjectCopy[target] = !nextObject[target];\n });\n return nextObjectCopy;\n },\n $unset: function (value, nextObject, _spec, originalObject) {\n invariantSpecArray(value, '$unset');\n value.forEach(function (key) {\n if (Object.hasOwnProperty.call(nextObject, key)) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n delete nextObject[key];\n }\n });\n return nextObject;\n },\n $add: function (values, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$add');\n invariantSpecArray(values, '$add');\n if (type(nextObject) === 'Map') {\n values.forEach(function (_a) {\n var key = _a[0], value = _a[1];\n if (nextObject === originalObject && nextObject.get(key) !== value) {\n nextObject = copy(originalObject);\n }\n nextObject.set(key, value);\n });\n }\n else {\n values.forEach(function (value) {\n if (nextObject === originalObject && !nextObject.has(value)) {\n nextObject = copy(originalObject);\n }\n nextObject.add(value);\n });\n }\n return nextObject;\n },\n $remove: function (value, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$remove');\n invariantSpecArray(value, '$remove');\n value.forEach(function (key) {\n if (nextObject === originalObject && nextObject.has(key)) {\n nextObject = copy(originalObject);\n }\n nextObject.delete(key);\n });\n return nextObject;\n },\n $merge: function (value, nextObject, _spec, originalObject) {\n invariantMerge(nextObject, value);\n getAllKeys(value).forEach(function (key) {\n if (value[key] !== nextObject[key]) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n nextObject[key] = value[key];\n }\n });\n return nextObject;\n },\n $apply: function (value, original) {\n invariantApply(value);\n return value(original);\n },\n};\nvar defaultContext = new Context();\nexports.isEquals = defaultContext.update.isEquals;\nexports.extend = defaultContext.extend;\nexports.default = defaultContext.update;\n// @ts-ignore\nexports.default.default = module.exports = assign(exports.default, exports);\n// invariants\nfunction invariantPushAndUnshift(value, spec, command) {\n invariant(Array.isArray(value), function () { return \"update(): expected target of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(value) + \".\"; });\n invariantSpecArray(spec[command], command);\n}\nfunction invariantSpecArray(spec, command) {\n invariant(Array.isArray(spec), function () { return \"update(): expected spec of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(spec) + \". \" +\n \"Did you forget to wrap your parameter in an array?\"; });\n}\nfunction invariantSplices(value, spec) {\n invariant(Array.isArray(value), function () { return \"Expected $splice target to be an array; got \" + stringifiable(value); });\n invariantSplice(spec.$splice);\n}\nfunction invariantSplice(value) {\n invariant(Array.isArray(value), function () { return \"update(): expected spec of $splice to be an array of arrays; got \" + stringifiable(value) + \". \" +\n \"Did you forget to wrap your parameters in an array?\"; });\n}\nfunction invariantApply(fn) {\n invariant(typeof fn === 'function', function () { return \"update(): expected spec of $apply to be a function; got \" + stringifiable(fn) + \".\"; });\n}\nfunction invariantSet(spec) {\n invariant(Object.keys(spec).length === 1, function () { return \"Cannot have more than one key in an object with $set\"; });\n}\nfunction invariantMerge(target, specValue) {\n invariant(specValue && typeof specValue === 'object', function () { return \"update(): $merge expects a spec of type 'object'; got \" + stringifiable(specValue); });\n invariant(target && typeof target === 'object', function () { return \"update(): $merge expects a target of type 'object'; got \" + stringifiable(target); });\n}\nfunction invariantMapOrSet(target, command) {\n var typeOfTarget = type(target);\n invariant(typeOfTarget === 'Map' || typeOfTarget === 'Set', function () { return \"update(): \" + stringifiable(command) + \" expects a target of type Set or Map; got \" + stringifiable(typeOfTarget); });\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","\n/**\n * Expose `isUrl`.\n */\n\nmodule.exports = isUrl;\n\n/**\n * RegExps.\n * A URL must match #1 and then at least one of #2/#3.\n * Use two levels of REs to avoid REDOS.\n */\n\nvar protocolAndDomainRE = /^(?:\\w+:)?\\/\\/(\\S+)$/;\n\nvar localhostDomainRE = /^localhost[\\:?\\d]*(?:[^\\:?\\d]\\S*)?$/\nvar nonLocalhostDomainRE = /^[^\\s\\.]+\\.\\S{2,}$/;\n\n/**\n * Loosely validate a URL `string`.\n *\n * @param {String} string\n * @return {Boolean}\n */\n\nfunction isUrl(string){\n if (typeof string !== 'string') {\n return false;\n }\n\n var match = string.match(protocolAndDomainRE);\n if (!match) {\n return false;\n }\n\n var everythingAfterProtocol = match[1];\n if (!everythingAfterProtocol) {\n return false;\n }\n\n if (localhostDomainRE.test(everythingAfterProtocol) ||\n nonLocalhostDomainRE.test(everythingAfterProtocol)) {\n return true;\n }\n\n return false;\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n",";(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm$1 = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals$1 = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize$1 = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm$1(number),\n str = plurals$1[u][pluralForm$1(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months$1 = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n moment.defineLocale('ar-ly', {\n months: months$1,\n monthsShort: months$1,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize$1('s'),\n ss: pluralize$1('s'),\n m: pluralize$1('m'),\n mm: pluralize$1('m'),\n h: pluralize$1('h'),\n hh: pluralize$1('h'),\n d: pluralize$1('d'),\n dd: pluralize$1('d'),\n M: pluralize$1('M'),\n MM: pluralize$1('M'),\n y: pluralize$1('y'),\n yy: pluralize$1('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$1 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n moment.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n '_'\n ),\n monthsShort:\n 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .split('') // reversed since negative lookbehind not supported everywhere\n .reverse()\n .join('')\n .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n })\n .split('')\n .reverse()\n .join('')\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$1[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$2 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap$1 = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$1[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$2[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$3 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap$2 = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm$2 = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals$2 = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize$2 = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm$2(number),\n str = plurals$2[u][pluralForm$2(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months$2 = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n moment.defineLocale('ar', {\n months: months$2,\n monthsShort: months$2,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize$2('s'),\n ss: pluralize$2('s'),\n m: pluralize$2('m'),\n mm: pluralize$2('m'),\n h: pluralize$2('h'),\n hh: pluralize$2('h'),\n d: pluralize$2('d'),\n dd: pluralize$2('d'),\n M: pluralize$2('M'),\n MM: pluralize$2('M'),\n y: pluralize$2('y'),\n yy: pluralize$2('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$2[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$3[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$4 = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap$3 = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap$3[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$4[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$5 = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap$4 = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap$4[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$5[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$6 = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap$5 = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap$5[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$6[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix\n ? 'jedna minuta'\n : isFuture\n ? 'jednu minutu'\n : 'jedne minute';\n }\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jedan sat';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: processRelativeTime,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$3 = {\n standalone:\n 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse$1 = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex$1 =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural$1(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate$1(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n moment.defineLocale('cs', {\n months: months$3,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex$1,\n monthsShortRegex: monthsRegex$1,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse$1,\n longMonthsParse: monthsParse$1,\n shortMonthsParse: monthsParse$1,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate$1,\n ss: translate$1,\n m: translate$1,\n mm: translate$1,\n h: translate$1,\n hh: translate$1,\n d: translate$1,\n dd: translate$1,\n M: translate$1,\n MM: translate$1,\n y: translate$1,\n yy: translate$1,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$1(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$1,\n mm: '%d Minuten',\n h: processRelativeTime$1,\n hh: '%d Stunden',\n d: processRelativeTime$1,\n dd: processRelativeTime$1,\n w: processRelativeTime$1,\n ww: '%d Wochen',\n M: processRelativeTime$1,\n MM: processRelativeTime$1,\n y: processRelativeTime$1,\n yy: processRelativeTime$1,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$2(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$2,\n mm: '%d Minuten',\n h: processRelativeTime$2,\n hh: '%d Stunden',\n d: processRelativeTime$2,\n dd: processRelativeTime$2,\n w: processRelativeTime$2,\n ww: '%d Wochen',\n M: processRelativeTime$2,\n MM: processRelativeTime$2,\n y: processRelativeTime$2,\n yy: processRelativeTime$2,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$3(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$3,\n mm: '%d Minuten',\n h: processRelativeTime$3,\n hh: '%d Stunden',\n d: processRelativeTime$3,\n dd: processRelativeTime$3,\n w: processRelativeTime$3,\n ww: '%d Wochen',\n M: processRelativeTime$3,\n MM: processRelativeTime$3,\n y: processRelativeTime$3,\n yy: processRelativeTime$3,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$4 = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n moment.defineLocale('dv', {\n months: months$4,\n monthsShort: months$4,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$2 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$2 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$1[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex$2,\n monthsShortRegex: monthsRegex$2,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$2,\n longMonthsParse: monthsParse$2,\n shortMonthsParse: monthsParse$2,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot$1 =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$3 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$3 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot$1;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$2[m.month()];\n } else {\n return monthsShortDot$1[m.month()];\n }\n },\n monthsRegex: monthsRegex$3,\n monthsShortRegex: monthsRegex$3,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$3,\n longMonthsParse: monthsParse$3,\n shortMonthsParse: monthsParse$3,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot$2 =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$4 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$4 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot$2;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$3[m.month()];\n } else {\n return monthsShortDot$2[m.month()];\n }\n },\n monthsRegex: monthsRegex$4,\n monthsShortRegex: monthsRegex$4,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$4,\n longMonthsParse: monthsParse$4,\n shortMonthsParse: monthsParse$4,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot$3 =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$5 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$5 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot$3;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$4[m.month()];\n } else {\n return monthsShortDot$3[m.month()];\n }\n },\n monthsRegex: monthsRegex$5,\n monthsShortRegex: monthsRegex$5,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$5,\n longMonthsParse: monthsParse$5,\n shortMonthsParse: monthsParse$5,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$4(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime$4,\n ss: processRelativeTime$4,\n m: processRelativeTime$4,\n mm: processRelativeTime$4,\n h: processRelativeTime$4,\n hh: processRelativeTime$4,\n d: processRelativeTime$4,\n dd: '%d päeva',\n M: processRelativeTime$4,\n MM: processRelativeTime$4,\n y: processRelativeTime$4,\n yy: processRelativeTime$4,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$7 = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap$6 = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap$6[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$7[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate$2(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate$2,\n ss: translate$2,\n m: translate$2,\n mm: translate$2,\n h: translate$2,\n hh: translate$2,\n d: translate$2,\n dd: translate$2,\n M: translate$2,\n MM: translate$2,\n y: translate$2,\n yy: translate$2,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsStrictRegex$1 =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex$1 =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex$6 =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse$6 = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex$6,\n monthsShortRegex: monthsRegex$6,\n monthsStrictRegex: monthsStrictRegex$1,\n monthsShortStrictRegex: monthsShortStrictRegex$1,\n monthsParse: monthsParse$6,\n longMonthsParse: monthsParse$6,\n shortMonthsParse: monthsParse$6,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$5 = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort$5 = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays$1 = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n moment.defineLocale('ga', {\n months: months$5,\n monthsShort: monthsShort$5,\n monthsParseExact: true,\n weekdays: weekdays$1,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$6 = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort$6 = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays$2 = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n moment.defineLocale('gd', {\n months: months$6,\n monthsShort: monthsShort$6,\n monthsParseExact: true,\n weekdays: weekdays$2,\n weekdaysShort: weekdaysShort$1,\n weekdaysMin: weekdaysMin$1,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$5(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime$5,\n ss: processRelativeTime$5,\n m: processRelativeTime$5,\n mm: processRelativeTime$5,\n h: processRelativeTime$5,\n hh: processRelativeTime$5,\n d: processRelativeTime$5,\n dd: processRelativeTime$5,\n M: processRelativeTime$5,\n MM: processRelativeTime$5,\n y: processRelativeTime$5,\n yy: processRelativeTime$5,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$6(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime$6,\n ss: processRelativeTime$6,\n m: processRelativeTime$6,\n mm: processRelativeTime$6,\n h: processRelativeTime$6,\n hh: processRelativeTime$6,\n d: processRelativeTime$6,\n dd: processRelativeTime$6,\n M: processRelativeTime$6,\n MM: processRelativeTime$6,\n y: processRelativeTime$6,\n yy: processRelativeTime$6,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$8 = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap$7 = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap$7[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$8[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$9 = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap$8 = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse$7 = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse$7,\n longMonthsParse: monthsParse$7,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$8[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$9[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function translate$3(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate$3,\n m: translate$3,\n mm: translate$3,\n h: translate$3,\n hh: translate$3,\n d: 'dan',\n dd: translate$3,\n M: 'mjesec',\n MM: translate$3,\n y: 'godinu',\n yy: translate$3,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate$4(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate$4,\n ss: translate$4,\n m: translate$4,\n mm: translate$4,\n h: translate$4,\n hh: translate$4,\n d: translate$4,\n dd: translate$4,\n M: translate$4,\n MM: translate$4,\n y: translate$4,\n yy: translate$4,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural$2(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate$5(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural$2(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural$2(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural$2(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural$2(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural$2(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural$2(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate$5,\n ss: translate$5,\n m: translate$5,\n mm: translate$5,\n h: 'klukkustund',\n hh: translate$5,\n d: translate$5,\n dd: translate$5,\n M: translate$5,\n MM: translate$5,\n y: translate$5,\n yy: translate$5,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$1 = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$a = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap$9 = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap$9[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$a[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$b = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap$a = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap$a[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$b[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$7(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (\n !(ll == 12 || ll == 13) &&\n (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n )\n return 'yê';\n return 'ê';\n }\n\n moment.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n '_'\n ),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n },\n calendar: {\n sameDay: '[Îro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime$7,\n ss: processRelativeTime$7,\n m: processRelativeTime$7,\n mm: processRelativeTime$7,\n h: processRelativeTime$7,\n hh: processRelativeTime$7,\n d: processRelativeTime$7,\n dd: processRelativeTime$7,\n w: processRelativeTime$7,\n ww: processRelativeTime$7,\n M: processRelativeTime$7,\n MM: processRelativeTime$7,\n y: processRelativeTime$7,\n yy: processRelativeTime$7,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$c = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap$b = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months$7 = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n moment.defineLocale('ku', {\n months: months$7,\n monthsShort: months$7,\n weekdays:\n 'یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه'.split(\n '_'\n ),\n weekdaysShort:\n 'یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره|بهیانی/,\n isPM: function (input) {\n return /ئێواره/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'بهیانی';\n } else {\n return 'ئێواره';\n }\n },\n calendar: {\n sameDay: '[ئهمرۆ كاتژمێر] LT',\n nextDay: '[بهیانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له %s',\n past: '%s',\n s: 'چهند چركهیهك',\n ss: 'چركه %d',\n m: 'یهك خولهك',\n mm: '%d خولهك',\n h: 'یهك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یهك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یهك مانگ',\n MM: '%d مانگ',\n y: 'یهك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$b[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$c[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$2 = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$8(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime$8,\n mm: '%d Minutten',\n h: processRelativeTime$8,\n hh: '%d Stonnen',\n d: processRelativeTime$8,\n dd: '%d Deeg',\n M: processRelativeTime$8,\n MM: '%d Méint',\n y: processRelativeTime$8,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate$6(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate$6,\n m: translateSingular,\n mm: translate$6,\n h: translateSingular,\n hh: translate$6,\n d: translateSingular,\n dd: translate$6,\n M: translateSingular,\n MM: translate$6,\n y: translateSingular,\n yy: translate$6,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var units$1 = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural$1(number, withoutSuffix, key) {\n return number + ' ' + format(units$1[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units$1[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural$1,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural$1,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural$1,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural$1,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural$1,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural$1,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n //! moment.js locale configuration\n\n function translate$7(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate$7,\n ss: translate$7,\n m: translate$7,\n mm: translate$7,\n h: translate$7,\n hh: translate$7,\n d: translate$7,\n dd: translate$7,\n M: translate$7,\n MM: translate$7,\n y: translate$7,\n yy: translate$7,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$d = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap$c = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$c[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$d[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$e = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap$d = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap$d[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$e[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$f = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap$e = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$e[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$f[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortWithDots$1 =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots$1 =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse$8 = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex$7 =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots$1;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$1[m.month()];\n } else {\n return monthsShortWithDots$1[m.month()];\n }\n },\n\n monthsRegex: monthsRegex$7,\n monthsShortRegex: monthsRegex$7,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse$8,\n longMonthsParse: monthsParse$8,\n shortMonthsParse: monthsParse$8,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortWithDots$2 =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots$2 =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse$9 = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex$8 =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots$2;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$2[m.month()];\n } else {\n return monthsShortWithDots$2[m.month()];\n }\n },\n\n monthsRegex: monthsRegex$8,\n monthsShortRegex: monthsRegex$8,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse$9,\n longMonthsParse: monthsParse$9,\n shortMonthsParse: monthsParse$9,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$g = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap$f = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap$f[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$g[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse$a = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural$3(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate$8(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural$3(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural$3(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural$3(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural$3(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural$3(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural$3(number) ? 'lata' : 'lat');\n }\n }\n\n moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse$a,\n longMonthsParse: monthsParse$a,\n shortMonthsParse: monthsParse$a,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate$8,\n m: translate$8,\n mm: translate$8,\n h: translate$8,\n hh: translate$8,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate$8,\n M: 'miesiąc',\n MM: translate$8,\n y: 'rok',\n yy: translate$8,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural$2(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural$2,\n m: 'un minut',\n mm: relativeTimeWithPlural$2,\n h: 'o oră',\n hh: relativeTimeWithPlural$2,\n d: 'o zi',\n dd: relativeTimeWithPlural$2,\n w: 'o săptămână',\n ww: relativeTimeWithPlural$2,\n M: 'o lună',\n MM: relativeTimeWithPlural$2,\n y: 'un an',\n yy: relativeTimeWithPlural$2,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural$4(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural$3(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural$4(format[key], +number);\n }\n }\n var monthsParse$b = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse$b,\n longMonthsParse: monthsParse$b,\n shortMonthsParse: monthsParse$b,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural$3,\n m: relativeTimeWithPlural$3,\n mm: relativeTimeWithPlural$3,\n h: 'час',\n hh: relativeTimeWithPlural$3,\n d: 'день',\n dd: relativeTimeWithPlural$3,\n w: 'неделя',\n ww: relativeTimeWithPlural$3,\n M: 'месяц',\n MM: relativeTimeWithPlural$3,\n y: 'год',\n yy: relativeTimeWithPlural$3,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$8 = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n moment.defineLocale('sd', {\n months: months$8,\n monthsShort: months$8,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n //! moment.js locale configuration\n\n var months$9 =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural$5(n) {\n return n > 1 && n < 5;\n }\n function translate$9(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n moment.defineLocale('sk', {\n months: months$9,\n monthsShort: monthsShort$7,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate$9,\n ss: translate$9,\n m: translate$9,\n mm: translate$9,\n h: translate$9,\n hh: translate$9,\n d: translate$9,\n dd: translate$9,\n M: translate$9,\n MM: translate$9,\n y: translate$9,\n yy: translate$9,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$9(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime$9,\n ss: processRelativeTime$9,\n m: processRelativeTime$9,\n mm: processRelativeTime$9,\n h: processRelativeTime$9,\n hh: processRelativeTime$9,\n d: processRelativeTime$9,\n dd: processRelativeTime$9,\n M: processRelativeTime$9,\n MM: processRelativeTime$9,\n y: processRelativeTime$9,\n yy: processRelativeTime$9,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var translator$1 = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator$1.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator$1.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator$1.translate,\n m: translator$1.translate,\n mm: translator$1.translate,\n h: translator$1.translate,\n hh: translator$1.translate,\n d: translator$1.translate,\n dd: translator$1.translate,\n M: translator$1.translate,\n MM: translator$1.translate,\n y: translator$1.translate,\n yy: translator$1.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var translator$2 = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator$2.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator$2.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator$2.translate,\n m: translator$2.translate,\n mm: translator$2.translate,\n h: translator$2.translate,\n hh: translator$2.translate,\n d: translator$2.translate,\n dd: translator$2.translate,\n M: translator$2.translate,\n MM: translator$2.translate,\n y: translator$2.translate,\n yy: translator$2.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$h = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap$g = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap$g[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$h[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$3 = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$4 = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate$a(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate$a,\n m: 'wa’ tup',\n mm: translate$a,\n h: 'wa’ rep',\n hh: translate$a,\n d: 'wa’ jaj',\n dd: translate$a,\n M: 'wa’ jar',\n MM: translate$a,\n y: 'wa’ DIS',\n yy: translate$a,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$5 = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime$a,\n ss: processRelativeTime$a,\n m: processRelativeTime$a,\n mm: processRelativeTime$a,\n h: processRelativeTime$a,\n hh: processRelativeTime$a,\n d: processRelativeTime$a,\n dd: processRelativeTime$a,\n M: processRelativeTime$a,\n MM: processRelativeTime$a,\n y: processRelativeTime$a,\n yy: processRelativeTime$a,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime$a(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n //! moment.js locale configuration\n\n moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural$6(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural$4(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural$6(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural$4,\n m: relativeTimeWithPlural$4,\n mm: relativeTimeWithPlural$4,\n h: 'годину',\n hh: relativeTimeWithPlural$4,\n d: 'день',\n dd: relativeTimeWithPlural$4,\n M: 'місяць',\n MM: relativeTimeWithPlural$4,\n y: 'рік',\n yy: relativeTimeWithPlural$4,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$a = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days$1 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n moment.defineLocale('ur', {\n months: months$a,\n monthsShort: months$a,\n weekdays: days$1,\n weekdaysShort: days$1,\n weekdaysMin: days$1,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n //! moment.js locale configuration\n\n moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n moment.locale('en');\n\n return moment;\n\n})));\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/**\n * @param {string} string The string to parse\n * @returns {Array<number>} Returns an energetic array.\n */\nfunction parsePart(string) {\n let res = [];\n let m;\n\n for (let str of string.split(\",\").map((str) => str.trim())) {\n // just a number\n if (/^-?\\d+$/.test(str)) {\n res.push(parseInt(str, 10));\n } else if (\n (m = str.match(/^(-?\\d+)(-|\\.\\.\\.?|\\u2025|\\u2026|\\u22EF)(-?\\d+)$/))\n ) {\n // 1-5 or 1..5 (equivalent) or 1...5 (doesn't include 5)\n let [_, lhs, sep, rhs] = m;\n\n if (lhs && rhs) {\n lhs = parseInt(lhs);\n rhs = parseInt(rhs);\n const incr = lhs < rhs ? 1 : -1;\n\n // Make it inclusive by moving the right 'stop-point' away by one.\n if (sep === \"-\" || sep === \"..\" || sep === \"\\u2025\") rhs += incr;\n\n for (let i = lhs; i !== rhs; i += incr) res.push(i);\n }\n }\n }\n\n return res;\n}\n\nexports.default = parsePart;\nmodule.exports = parsePart;\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('./html');\n\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\n\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//'\n];\n\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\nconst QUIRKS_MODE_PUBLIC_IDS = ['-//w3o//dtd w3 html strict 3.0//en//', '-/w3c/dtd html 4.0 transitional/en', 'html'];\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\n\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//'\n]);\n\n//Utils\nfunction enquoteDoctypeId(id) {\n const quote = id.indexOf('\"') !== -1 ? \"'\" : '\"';\n\n return quote + id + quote;\n}\n\nfunction hasPrefix(publicId, prefixes) {\n for (let i = 0; i < prefixes.length; i++) {\n if (publicId.indexOf(prefixes[i]) === 0) {\n return true;\n }\n }\n\n return false;\n}\n\n//API\nexports.isConforming = function(token) {\n return (\n token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID)\n );\n};\n\nexports.getDocumentMode = function(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n const systemId = token.systemId;\n\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let publicId = token.publicId;\n\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n\n if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n\n return DOCUMENT_MODE.NO_QUIRKS;\n};\n\nexports.serializeContent = function(name, publicId, systemId) {\n let str = '!DOCTYPE ';\n\n if (name) {\n str += name;\n }\n\n if (publicId) {\n str += ' PUBLIC ' + enquoteDoctypeId(publicId);\n } else if (systemId) {\n str += ' SYSTEM';\n }\n\n if (systemId !== null) {\n str += ' ' + enquoteDoctypeId(systemId);\n }\n\n return str;\n};\n","'use strict';\n\nmodule.exports = {\n controlCharacterInInputStream: 'control-character-in-input-stream',\n noncharacterInInputStream: 'noncharacter-in-input-stream',\n surrogateInInputStream: 'surrogate-in-input-stream',\n nonVoidHtmlElementStartTagWithTrailingSolidus: 'non-void-html-element-start-tag-with-trailing-solidus',\n endTagWithAttributes: 'end-tag-with-attributes',\n endTagWithTrailingSolidus: 'end-tag-with-trailing-solidus',\n unexpectedSolidusInTag: 'unexpected-solidus-in-tag',\n unexpectedNullCharacter: 'unexpected-null-character',\n unexpectedQuestionMarkInsteadOfTagName: 'unexpected-question-mark-instead-of-tag-name',\n invalidFirstCharacterOfTagName: 'invalid-first-character-of-tag-name',\n unexpectedEqualsSignBeforeAttributeName: 'unexpected-equals-sign-before-attribute-name',\n missingEndTagName: 'missing-end-tag-name',\n unexpectedCharacterInAttributeName: 'unexpected-character-in-attribute-name',\n unknownNamedCharacterReference: 'unknown-named-character-reference',\n missingSemicolonAfterCharacterReference: 'missing-semicolon-after-character-reference',\n unexpectedCharacterAfterDoctypeSystemIdentifier: 'unexpected-character-after-doctype-system-identifier',\n unexpectedCharacterInUnquotedAttributeValue: 'unexpected-character-in-unquoted-attribute-value',\n eofBeforeTagName: 'eof-before-tag-name',\n eofInTag: 'eof-in-tag',\n missingAttributeValue: 'missing-attribute-value',\n missingWhitespaceBetweenAttributes: 'missing-whitespace-between-attributes',\n missingWhitespaceAfterDoctypePublicKeyword: 'missing-whitespace-after-doctype-public-keyword',\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:\n 'missing-whitespace-between-doctype-public-and-system-identifiers',\n missingWhitespaceAfterDoctypeSystemKeyword: 'missing-whitespace-after-doctype-system-keyword',\n missingQuoteBeforeDoctypePublicIdentifier: 'missing-quote-before-doctype-public-identifier',\n missingQuoteBeforeDoctypeSystemIdentifier: 'missing-quote-before-doctype-system-identifier',\n missingDoctypePublicIdentifier: 'missing-doctype-public-identifier',\n missingDoctypeSystemIdentifier: 'missing-doctype-system-identifier',\n abruptDoctypePublicIdentifier: 'abrupt-doctype-public-identifier',\n abruptDoctypeSystemIdentifier: 'abrupt-doctype-system-identifier',\n cdataInHtmlContent: 'cdata-in-html-content',\n incorrectlyOpenedComment: 'incorrectly-opened-comment',\n eofInScriptHtmlCommentLikeText: 'eof-in-script-html-comment-like-text',\n eofInDoctype: 'eof-in-doctype',\n nestedComment: 'nested-comment',\n abruptClosingOfEmptyComment: 'abrupt-closing-of-empty-comment',\n eofInComment: 'eof-in-comment',\n incorrectlyClosedComment: 'incorrectly-closed-comment',\n eofInCdata: 'eof-in-cdata',\n absenceOfDigitsInNumericCharacterReference: 'absence-of-digits-in-numeric-character-reference',\n nullCharacterReference: 'null-character-reference',\n surrogateCharacterReference: 'surrogate-character-reference',\n characterReferenceOutsideUnicodeRange: 'character-reference-outside-unicode-range',\n controlCharacterReference: 'control-character-reference',\n noncharacterCharacterReference: 'noncharacter-character-reference',\n missingWhitespaceBeforeDoctypeName: 'missing-whitespace-before-doctype-name',\n missingDoctypeName: 'missing-doctype-name',\n invalidCharacterSequenceAfterDoctypeName: 'invalid-character-sequence-after-doctype-name',\n duplicateAttribute: 'duplicate-attribute',\n nonConformingDoctype: 'non-conforming-doctype',\n missingDoctype: 'missing-doctype',\n misplacedDoctype: 'misplaced-doctype',\n endTagWithoutMatchingOpenElement: 'end-tag-without-matching-open-element',\n closingOfElementWithOpenChildElements: 'closing-of-element-with-open-child-elements',\n disallowedContentInNoscriptInHead: 'disallowed-content-in-noscript-in-head',\n openElementsLeftAfterEof: 'open-elements-left-after-eof',\n abandonedHeadElementChild: 'abandoned-head-element-child',\n misplacedStartTagForHeadElement: 'misplaced-start-tag-for-head-element',\n nestedNoscriptInHead: 'nested-noscript-in-head',\n eofInElementThatCanContainOnlyText: 'eof-in-element-that-can-contain-only-text'\n};\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst HTML = require('./html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml'\n};\n\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = {\n attributename: 'attributeName',\n attributetype: 'attributeType',\n basefrequency: 'baseFrequency',\n baseprofile: 'baseProfile',\n calcmode: 'calcMode',\n clippathunits: 'clipPathUnits',\n diffuseconstant: 'diffuseConstant',\n edgemode: 'edgeMode',\n filterunits: 'filterUnits',\n glyphref: 'glyphRef',\n gradienttransform: 'gradientTransform',\n gradientunits: 'gradientUnits',\n kernelmatrix: 'kernelMatrix',\n kernelunitlength: 'kernelUnitLength',\n keypoints: 'keyPoints',\n keysplines: 'keySplines',\n keytimes: 'keyTimes',\n lengthadjust: 'lengthAdjust',\n limitingconeangle: 'limitingConeAngle',\n markerheight: 'markerHeight',\n markerunits: 'markerUnits',\n markerwidth: 'markerWidth',\n maskcontentunits: 'maskContentUnits',\n maskunits: 'maskUnits',\n numoctaves: 'numOctaves',\n pathlength: 'pathLength',\n patterncontentunits: 'patternContentUnits',\n patterntransform: 'patternTransform',\n patternunits: 'patternUnits',\n pointsatx: 'pointsAtX',\n pointsaty: 'pointsAtY',\n pointsatz: 'pointsAtZ',\n preservealpha: 'preserveAlpha',\n preserveaspectratio: 'preserveAspectRatio',\n primitiveunits: 'primitiveUnits',\n refx: 'refX',\n refy: 'refY',\n repeatcount: 'repeatCount',\n repeatdur: 'repeatDur',\n requiredextensions: 'requiredExtensions',\n requiredfeatures: 'requiredFeatures',\n specularconstant: 'specularConstant',\n specularexponent: 'specularExponent',\n spreadmethod: 'spreadMethod',\n startoffset: 'startOffset',\n stddeviation: 'stdDeviation',\n stitchtiles: 'stitchTiles',\n surfacescale: 'surfaceScale',\n systemlanguage: 'systemLanguage',\n tablevalues: 'tableValues',\n targetx: 'targetX',\n targety: 'targetY',\n textlength: 'textLength',\n viewbox: 'viewBox',\n viewtarget: 'viewTarget',\n xchannelselector: 'xChannelSelector',\n ychannelselector: 'yChannelSelector',\n zoomandpan: 'zoomAndPan'\n};\n\nconst XML_ATTRS_ADJUSTMENT_MAP = {\n 'xlink:actuate': { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK },\n 'xlink:arcrole': { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK },\n 'xlink:href': { prefix: 'xlink', name: 'href', namespace: NS.XLINK },\n 'xlink:role': { prefix: 'xlink', name: 'role', namespace: NS.XLINK },\n 'xlink:show': { prefix: 'xlink', name: 'show', namespace: NS.XLINK },\n 'xlink:title': { prefix: 'xlink', name: 'title', namespace: NS.XLINK },\n 'xlink:type': { prefix: 'xlink', name: 'type', namespace: NS.XLINK },\n 'xml:base': { prefix: 'xml', name: 'base', namespace: NS.XML },\n 'xml:lang': { prefix: 'xml', name: 'lang', namespace: NS.XML },\n 'xml:space': { prefix: 'xml', name: 'space', namespace: NS.XML },\n xmlns: { prefix: '', name: 'xmlns', namespace: NS.XMLNS },\n 'xmlns:xlink': { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }\n};\n\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = (exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n altglyph: 'altGlyph',\n altglyphdef: 'altGlyphDef',\n altglyphitem: 'altGlyphItem',\n animatecolor: 'animateColor',\n animatemotion: 'animateMotion',\n animatetransform: 'animateTransform',\n clippath: 'clipPath',\n feblend: 'feBlend',\n fecolormatrix: 'feColorMatrix',\n fecomponenttransfer: 'feComponentTransfer',\n fecomposite: 'feComposite',\n feconvolvematrix: 'feConvolveMatrix',\n fediffuselighting: 'feDiffuseLighting',\n fedisplacementmap: 'feDisplacementMap',\n fedistantlight: 'feDistantLight',\n feflood: 'feFlood',\n fefunca: 'feFuncA',\n fefuncb: 'feFuncB',\n fefuncg: 'feFuncG',\n fefuncr: 'feFuncR',\n fegaussianblur: 'feGaussianBlur',\n feimage: 'feImage',\n femerge: 'feMerge',\n femergenode: 'feMergeNode',\n femorphology: 'feMorphology',\n feoffset: 'feOffset',\n fepointlight: 'fePointLight',\n fespecularlighting: 'feSpecularLighting',\n fespotlight: 'feSpotLight',\n fetile: 'feTile',\n feturbulence: 'feTurbulence',\n foreignobject: 'foreignObject',\n glyphref: 'glyphRef',\n lineargradient: 'linearGradient',\n radialgradient: 'radialGradient',\n textpath: 'textPath'\n});\n\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = {\n [$.B]: true,\n [$.BIG]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.CENTER]: true,\n [$.CODE]: true,\n [$.DD]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EM]: true,\n [$.EMBED]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HR]: true,\n [$.I]: true,\n [$.IMG]: true,\n [$.LI]: true,\n [$.LISTING]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NOBR]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PRE]: true,\n [$.RUBY]: true,\n [$.S]: true,\n [$.SMALL]: true,\n [$.SPAN]: true,\n [$.STRONG]: true,\n [$.STRIKE]: true,\n [$.SUB]: true,\n [$.SUP]: true,\n [$.TABLE]: true,\n [$.TT]: true,\n [$.U]: true,\n [$.UL]: true,\n [$.VAR]: true\n};\n\n//Check exit from foreign content\nexports.causesExit = function(startTagToken) {\n const tn = startTagToken.tagName;\n const isFontWithAttrs =\n tn === $.FONT &&\n (Tokenizer.getTokenAttr(startTagToken, ATTRS.COLOR) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.SIZE) !== null ||\n Tokenizer.getTokenAttr(startTagToken, ATTRS.FACE) !== null);\n\n return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];\n};\n\n//Token adjustments\nexports.adjustTokenMathMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n};\n\nexports.adjustTokenSVGAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrName) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n};\n\nexports.adjustTokenXMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n};\n\nexports.adjustTokenSVGTagName = function(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n\n if (adjustedTagName) {\n token.tagName = adjustedTagName;\n }\n};\n\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\n\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\n\nexports.isIntegrationPoint = function(tn, ns, attrs, foreignNS) {\n if ((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) {\n return true;\n }\n\n if ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)) {\n return true;\n }\n\n return false;\n};\n","'use strict';\n\nconst NS = (exports.NAMESPACES = {\n HTML: 'http://www.w3.org/1999/xhtml',\n MATHML: 'http://www.w3.org/1998/Math/MathML',\n SVG: 'http://www.w3.org/2000/svg',\n XLINK: 'http://www.w3.org/1999/xlink',\n XML: 'http://www.w3.org/XML/1998/namespace',\n XMLNS: 'http://www.w3.org/2000/xmlns/'\n});\n\nexports.ATTRS = {\n TYPE: 'type',\n ACTION: 'action',\n ENCODING: 'encoding',\n PROMPT: 'prompt',\n NAME: 'name',\n COLOR: 'color',\n FACE: 'face',\n SIZE: 'size'\n};\n\nexports.DOCUMENT_MODE = {\n NO_QUIRKS: 'no-quirks',\n QUIRKS: 'quirks',\n LIMITED_QUIRKS: 'limited-quirks'\n};\n\nconst $ = (exports.TAG_NAMES = {\n A: 'a',\n ADDRESS: 'address',\n ANNOTATION_XML: 'annotation-xml',\n APPLET: 'applet',\n AREA: 'area',\n ARTICLE: 'article',\n ASIDE: 'aside',\n\n B: 'b',\n BASE: 'base',\n BASEFONT: 'basefont',\n BGSOUND: 'bgsound',\n BIG: 'big',\n BLOCKQUOTE: 'blockquote',\n BODY: 'body',\n BR: 'br',\n BUTTON: 'button',\n\n CAPTION: 'caption',\n CENTER: 'center',\n CODE: 'code',\n COL: 'col',\n COLGROUP: 'colgroup',\n\n DD: 'dd',\n DESC: 'desc',\n DETAILS: 'details',\n DIALOG: 'dialog',\n DIR: 'dir',\n DIV: 'div',\n DL: 'dl',\n DT: 'dt',\n\n EM: 'em',\n EMBED: 'embed',\n\n FIELDSET: 'fieldset',\n FIGCAPTION: 'figcaption',\n FIGURE: 'figure',\n FONT: 'font',\n FOOTER: 'footer',\n FOREIGN_OBJECT: 'foreignObject',\n FORM: 'form',\n FRAME: 'frame',\n FRAMESET: 'frameset',\n\n H1: 'h1',\n H2: 'h2',\n H3: 'h3',\n H4: 'h4',\n H5: 'h5',\n H6: 'h6',\n HEAD: 'head',\n HEADER: 'header',\n HGROUP: 'hgroup',\n HR: 'hr',\n HTML: 'html',\n\n I: 'i',\n IMG: 'img',\n IMAGE: 'image',\n INPUT: 'input',\n IFRAME: 'iframe',\n\n KEYGEN: 'keygen',\n\n LABEL: 'label',\n LI: 'li',\n LINK: 'link',\n LISTING: 'listing',\n\n MAIN: 'main',\n MALIGNMARK: 'malignmark',\n MARQUEE: 'marquee',\n MATH: 'math',\n MENU: 'menu',\n META: 'meta',\n MGLYPH: 'mglyph',\n MI: 'mi',\n MO: 'mo',\n MN: 'mn',\n MS: 'ms',\n MTEXT: 'mtext',\n\n NAV: 'nav',\n NOBR: 'nobr',\n NOFRAMES: 'noframes',\n NOEMBED: 'noembed',\n NOSCRIPT: 'noscript',\n\n OBJECT: 'object',\n OL: 'ol',\n OPTGROUP: 'optgroup',\n OPTION: 'option',\n\n P: 'p',\n PARAM: 'param',\n PLAINTEXT: 'plaintext',\n PRE: 'pre',\n\n RB: 'rb',\n RP: 'rp',\n RT: 'rt',\n RTC: 'rtc',\n RUBY: 'ruby',\n\n S: 's',\n SCRIPT: 'script',\n SECTION: 'section',\n SELECT: 'select',\n SOURCE: 'source',\n SMALL: 'small',\n SPAN: 'span',\n STRIKE: 'strike',\n STRONG: 'strong',\n STYLE: 'style',\n SUB: 'sub',\n SUMMARY: 'summary',\n SUP: 'sup',\n\n TABLE: 'table',\n TBODY: 'tbody',\n TEMPLATE: 'template',\n TEXTAREA: 'textarea',\n TFOOT: 'tfoot',\n TD: 'td',\n TH: 'th',\n THEAD: 'thead',\n TITLE: 'title',\n TR: 'tr',\n TRACK: 'track',\n TT: 'tt',\n\n U: 'u',\n UL: 'ul',\n\n SVG: 'svg',\n\n VAR: 'var',\n\n WBR: 'wbr',\n\n XMP: 'xmp'\n});\n\nexports.SPECIAL_ELEMENTS = {\n [NS.HTML]: {\n [$.ADDRESS]: true,\n [$.APPLET]: true,\n [$.AREA]: true,\n [$.ARTICLE]: true,\n [$.ASIDE]: true,\n [$.BASE]: true,\n [$.BASEFONT]: true,\n [$.BGSOUND]: true,\n [$.BLOCKQUOTE]: true,\n [$.BODY]: true,\n [$.BR]: true,\n [$.BUTTON]: true,\n [$.CAPTION]: true,\n [$.CENTER]: true,\n [$.COL]: true,\n [$.COLGROUP]: true,\n [$.DD]: true,\n [$.DETAILS]: true,\n [$.DIR]: true,\n [$.DIV]: true,\n [$.DL]: true,\n [$.DT]: true,\n [$.EMBED]: true,\n [$.FIELDSET]: true,\n [$.FIGCAPTION]: true,\n [$.FIGURE]: true,\n [$.FOOTER]: true,\n [$.FORM]: true,\n [$.FRAME]: true,\n [$.FRAMESET]: true,\n [$.H1]: true,\n [$.H2]: true,\n [$.H3]: true,\n [$.H4]: true,\n [$.H5]: true,\n [$.H6]: true,\n [$.HEAD]: true,\n [$.HEADER]: true,\n [$.HGROUP]: true,\n [$.HR]: true,\n [$.HTML]: true,\n [$.IFRAME]: true,\n [$.IMG]: true,\n [$.INPUT]: true,\n [$.LI]: true,\n [$.LINK]: true,\n [$.LISTING]: true,\n [$.MAIN]: true,\n [$.MARQUEE]: true,\n [$.MENU]: true,\n [$.META]: true,\n [$.NAV]: true,\n [$.NOEMBED]: true,\n [$.NOFRAMES]: true,\n [$.NOSCRIPT]: true,\n [$.OBJECT]: true,\n [$.OL]: true,\n [$.P]: true,\n [$.PARAM]: true,\n [$.PLAINTEXT]: true,\n [$.PRE]: true,\n [$.SCRIPT]: true,\n [$.SECTION]: true,\n [$.SELECT]: true,\n [$.SOURCE]: true,\n [$.STYLE]: true,\n [$.SUMMARY]: true,\n [$.TABLE]: true,\n [$.TBODY]: true,\n [$.TD]: true,\n [$.TEMPLATE]: true,\n [$.TEXTAREA]: true,\n [$.TFOOT]: true,\n [$.TH]: true,\n [$.THEAD]: true,\n [$.TITLE]: true,\n [$.TR]: true,\n [$.TRACK]: true,\n [$.UL]: true,\n [$.WBR]: true,\n [$.XMP]: true\n },\n [NS.MATHML]: {\n [$.MI]: true,\n [$.MO]: true,\n [$.MN]: true,\n [$.MS]: true,\n [$.MTEXT]: true,\n [$.ANNOTATION_XML]: true\n },\n [NS.SVG]: {\n [$.TITLE]: true,\n [$.FOREIGN_OBJECT]: true,\n [$.DESC]: true\n }\n};\n","'use strict';\n\nconst UNDEFINED_CODE_POINTS = [\n 0xfffe,\n 0xffff,\n 0x1fffe,\n 0x1ffff,\n 0x2fffe,\n 0x2ffff,\n 0x3fffe,\n 0x3ffff,\n 0x4fffe,\n 0x4ffff,\n 0x5fffe,\n 0x5ffff,\n 0x6fffe,\n 0x6ffff,\n 0x7fffe,\n 0x7ffff,\n 0x8fffe,\n 0x8ffff,\n 0x9fffe,\n 0x9ffff,\n 0xafffe,\n 0xaffff,\n 0xbfffe,\n 0xbffff,\n 0xcfffe,\n 0xcffff,\n 0xdfffe,\n 0xdffff,\n 0xefffe,\n 0xeffff,\n 0xffffe,\n 0xfffff,\n 0x10fffe,\n 0x10ffff\n];\n\nexports.REPLACEMENT_CHARACTER = '\\uFFFD';\n\nexports.CODE_POINTS = {\n EOF: -1,\n NULL: 0x00,\n TABULATION: 0x09,\n CARRIAGE_RETURN: 0x0d,\n LINE_FEED: 0x0a,\n FORM_FEED: 0x0c,\n SPACE: 0x20,\n EXCLAMATION_MARK: 0x21,\n QUOTATION_MARK: 0x22,\n NUMBER_SIGN: 0x23,\n AMPERSAND: 0x26,\n APOSTROPHE: 0x27,\n HYPHEN_MINUS: 0x2d,\n SOLIDUS: 0x2f,\n DIGIT_0: 0x30,\n DIGIT_9: 0x39,\n SEMICOLON: 0x3b,\n LESS_THAN_SIGN: 0x3c,\n EQUALS_SIGN: 0x3d,\n GREATER_THAN_SIGN: 0x3e,\n QUESTION_MARK: 0x3f,\n LATIN_CAPITAL_A: 0x41,\n LATIN_CAPITAL_F: 0x46,\n LATIN_CAPITAL_X: 0x58,\n LATIN_CAPITAL_Z: 0x5a,\n RIGHT_SQUARE_BRACKET: 0x5d,\n GRAVE_ACCENT: 0x60,\n LATIN_SMALL_A: 0x61,\n LATIN_SMALL_F: 0x66,\n LATIN_SMALL_X: 0x78,\n LATIN_SMALL_Z: 0x7a,\n REPLACEMENT_CHARACTER: 0xfffd\n};\n\nexports.CODE_POINT_SEQUENCES = {\n DASH_DASH_STRING: [0x2d, 0x2d], //--\n DOCTYPE_STRING: [0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45], //DOCTYPE\n CDATA_START_STRING: [0x5b, 0x43, 0x44, 0x41, 0x54, 0x41, 0x5b], //[CDATA[\n SCRIPT_STRING: [0x73, 0x63, 0x72, 0x69, 0x70, 0x74], //script\n PUBLIC_STRING: [0x50, 0x55, 0x42, 0x4c, 0x49, 0x43], //PUBLIC\n SYSTEM_STRING: [0x53, 0x59, 0x53, 0x54, 0x45, 0x4d] //SYSTEM\n};\n\n//Surrogates\nexports.isSurrogate = function(cp) {\n return cp >= 0xd800 && cp <= 0xdfff;\n};\n\nexports.isSurrogatePair = function(cp) {\n return cp >= 0xdc00 && cp <= 0xdfff;\n};\n\nexports.getSurrogatePairCodePoint = function(cp1, cp2) {\n return (cp1 - 0xd800) * 0x400 + 0x2400 + cp2;\n};\n\n//NOTE: excluding NULL and ASCII whitespace\nexports.isControlCodePoint = function(cp) {\n return (\n (cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f)\n );\n};\n\nexports.isUndefinedCodePoint = function(cp) {\n return (cp >= 0xfdd0 && cp <= 0xfdef) || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;\n};\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingMixinBase extends Mixin {\n constructor(host, opts) {\n super(host);\n\n this.posTracker = null;\n this.onParseError = opts.onParseError;\n }\n\n _setErrorLocation(err) {\n err.startLine = err.endLine = this.posTracker.line;\n err.startCol = err.endCol = this.posTracker.col;\n err.startOffset = err.endOffset = this.posTracker.offset;\n }\n\n _reportError(code) {\n const err = {\n code: code,\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n\n this._setErrorLocation(err);\n this.onParseError(err);\n }\n\n _getOverriddenMethods(mxn) {\n return {\n _err(code) {\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingMixinBase;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoTokenizerMixin = require('../location-info/tokenizer-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingParserMixin extends ErrorReportingMixinBase {\n constructor(parser, opts) {\n super(parser, opts);\n\n this.opts = opts;\n this.ctLoc = null;\n this.locBeforeToken = false;\n }\n\n _setErrorLocation(err) {\n if (this.ctLoc) {\n err.startLine = this.ctLoc.startLine;\n err.startCol = this.ctLoc.startCol;\n err.startOffset = this.ctLoc.startOffset;\n\n err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;\n err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;\n err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n Mixin.install(this.tokenizer, ErrorReportingTokenizerMixin, mxn.opts);\n Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n },\n\n _processInputToken(token) {\n mxn.ctLoc = token.location;\n\n orig._processInputToken.call(this, token);\n },\n\n _err(code, options) {\n mxn.locBeforeToken = options && options.beforeToken;\n mxn._reportError(code);\n }\n };\n }\n}\n\nmodule.exports = ErrorReportingParserMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase {\n constructor(preprocessor, opts) {\n super(preprocessor, opts);\n\n this.posTracker = Mixin.install(preprocessor, PositionTrackingPreprocessorMixin);\n this.lastErrOffset = -1;\n }\n\n _reportError(code) {\n //NOTE: avoid reporting error twice on advance/retreat\n if (this.lastErrOffset !== this.posTracker.offset) {\n this.lastErrOffset = this.posTracker.offset;\n super._reportError(code);\n }\n }\n}\n\nmodule.exports = ErrorReportingPreprocessorMixin;\n","'use strict';\n\nconst ErrorReportingMixinBase = require('./mixin-base');\nconst ErrorReportingPreprocessorMixin = require('./preprocessor-mixin');\nconst Mixin = require('../../utils/mixin');\n\nclass ErrorReportingTokenizerMixin extends ErrorReportingMixinBase {\n constructor(tokenizer, opts) {\n super(tokenizer, opts);\n\n const preprocessorMixin = Mixin.install(tokenizer.preprocessor, ErrorReportingPreprocessorMixin, opts);\n\n this.posTracker = preprocessorMixin.posTracker;\n }\n}\n\nmodule.exports = ErrorReportingTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass LocationInfoOpenElementStackMixin extends Mixin {\n constructor(stack, opts) {\n super(stack);\n\n this.onItemPop = opts.onItemPop;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n pop() {\n mxn.onItemPop(this.current);\n orig.pop.call(this);\n },\n\n popAllUpToHtmlElement() {\n for (let i = this.stackTop; i > 0; i--) {\n mxn.onItemPop(this.items[i]);\n }\n\n orig.popAllUpToHtmlElement.call(this);\n },\n\n remove(element) {\n mxn.onItemPop(this.current);\n orig.remove.call(this, element);\n }\n };\n }\n}\n\nmodule.exports = LocationInfoOpenElementStackMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst LocationInfoTokenizerMixin = require('./tokenizer-mixin');\nconst LocationInfoOpenElementStackMixin = require('./open-element-stack-mixin');\nconst HTML = require('../../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\n\nclass LocationInfoParserMixin extends Mixin {\n constructor(parser) {\n super(parser);\n\n this.parser = parser;\n this.treeAdapter = this.parser.treeAdapter;\n this.posTracker = null;\n this.lastStartTagToken = null;\n this.lastFosterParentingLocation = null;\n this.currentToken = null;\n }\n\n _setStartLocation(element) {\n let loc = null;\n\n if (this.lastStartTagToken) {\n loc = Object.assign({}, this.lastStartTagToken.location);\n loc.startTag = this.lastStartTagToken.location;\n }\n\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n\n _setEndLocation(element, closingToken) {\n const loc = this.treeAdapter.getNodeSourceCodeLocation(element);\n\n if (loc) {\n if (closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n\n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n const isClosingEndTag = closingToken.type === Tokenizer.END_TAG_TOKEN && tn === closingToken.tagName;\n const endLoc = {};\n if (isClosingEndTag) {\n endLoc.endTag = Object.assign({}, ctLoc);\n endLoc.endLine = ctLoc.endLine;\n endLoc.endCol = ctLoc.endCol;\n endLoc.endOffset = ctLoc.endOffset;\n } else {\n endLoc.endLine = ctLoc.startLine;\n endLoc.endCol = ctLoc.startCol;\n endLoc.endOffset = ctLoc.startOffset;\n }\n\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document, fragmentContext) {\n orig._bootstrap.call(this, document, fragmentContext);\n\n mxn.lastStartTagToken = null;\n mxn.lastFosterParentingLocation = null;\n mxn.currentToken = null;\n\n const tokenizerMixin = Mixin.install(this.tokenizer, LocationInfoTokenizerMixin);\n\n mxn.posTracker = tokenizerMixin.posTracker;\n\n Mixin.install(this.openElements, LocationInfoOpenElementStackMixin, {\n onItemPop: function(element) {\n mxn._setEndLocation(element, mxn.currentToken);\n }\n });\n },\n\n _runParsingLoop(scriptHandler) {\n orig._runParsingLoop.call(this, scriptHandler);\n\n // NOTE: generate location info for elements\n // that remains on open element stack\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n mxn._setEndLocation(this.openElements.items[i], mxn.currentToken);\n }\n },\n\n //Token processing\n _processTokenInForeignContent(token) {\n mxn.currentToken = token;\n orig._processTokenInForeignContent.call(this, token);\n },\n\n _processToken(token) {\n mxn.currentToken = token;\n orig._processToken.call(this, token);\n\n //NOTE: <body> and <html> are never popped from the stack, so we need to updated\n //their end location explicitly.\n const requireExplicitUpdate =\n token.type === Tokenizer.END_TAG_TOKEN &&\n (token.tagName === $.HTML || (token.tagName === $.BODY && this.openElements.hasInScope($.BODY)));\n\n if (requireExplicitUpdate) {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const element = this.openElements.items[i];\n\n if (this.treeAdapter.getTagName(element) === token.tagName) {\n mxn._setEndLocation(element, token);\n break;\n }\n }\n }\n },\n\n //Doctype\n _setDocumentType(token) {\n orig._setDocumentType.call(this, token);\n\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const cnLength = documentChildren.length;\n\n for (let i = 0; i < cnLength; i++) {\n const node = documentChildren[i];\n\n if (this.treeAdapter.isDocumentTypeNode(node)) {\n this.treeAdapter.setNodeSourceCodeLocation(node, token.location);\n break;\n }\n }\n },\n\n //Elements\n _attachElementToTree(element) {\n //NOTE: _attachElementToTree is called from _appendElement, _insertElement and _insertTemplate methods.\n //So we will use token location stored in this methods for the element.\n mxn._setStartLocation(element);\n mxn.lastStartTagToken = null;\n orig._attachElementToTree.call(this, element);\n },\n\n _appendElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._appendElement.call(this, token, namespaceURI);\n },\n\n _insertElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._insertElement.call(this, token, namespaceURI);\n },\n\n _insertTemplate(token) {\n mxn.lastStartTagToken = token;\n orig._insertTemplate.call(this, token);\n\n const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n\n this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);\n },\n\n _insertFakeRootElement() {\n orig._insertFakeRootElement.call(this);\n this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);\n },\n\n //Comments\n _appendCommentNode(token, parent) {\n orig._appendCommentNode.call(this, token, parent);\n\n const children = this.treeAdapter.getChildNodes(parent);\n const commentNode = children[children.length - 1];\n\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n },\n\n //Text\n _findFosterParentingLocation() {\n //NOTE: store last foster parenting location, so we will be able to find inserted text\n //in case of foster parenting\n mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);\n\n return mxn.lastFosterParentingLocation;\n },\n\n _insertCharacters(token) {\n orig._insertCharacters.call(this, token);\n\n const hasFosterParent = this._shouldFosterParentOnInsertion();\n\n const parent =\n (hasFosterParent && mxn.lastFosterParentingLocation.parent) ||\n this.openElements.currentTmplContent ||\n this.openElements.current;\n\n const siblings = this.treeAdapter.getChildNodes(parent);\n\n const textNodeIdx =\n hasFosterParent && mxn.lastFosterParentingLocation.beforeElement\n ? siblings.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1\n : siblings.length - 1;\n\n const textNode = siblings[textNodeIdx];\n\n //NOTE: if we have location assigned by another token, then just update end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n } else {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n };\n }\n}\n\nmodule.exports = LocationInfoParserMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\nconst Tokenizer = require('../../tokenizer');\nconst PositionTrackingPreprocessorMixin = require('../position-tracking/preprocessor-mixin');\n\nclass LocationInfoTokenizerMixin extends Mixin {\n constructor(tokenizer) {\n super(tokenizer);\n\n this.tokenizer = tokenizer;\n this.posTracker = Mixin.install(tokenizer.preprocessor, PositionTrackingPreprocessorMixin);\n this.currentAttrLocation = null;\n this.ctLoc = null;\n }\n\n _getCurrentLocation() {\n return {\n startLine: this.posTracker.line,\n startCol: this.posTracker.col,\n startOffset: this.posTracker.offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n }\n\n _attachCurrentAttrLocationInfo() {\n this.currentAttrLocation.endLine = this.posTracker.line;\n this.currentAttrLocation.endCol = this.posTracker.col;\n this.currentAttrLocation.endOffset = this.posTracker.offset;\n\n const currentToken = this.tokenizer.currentToken;\n const currentAttr = this.tokenizer.currentAttr;\n\n if (!currentToken.location.attrs) {\n currentToken.location.attrs = Object.create(null);\n }\n\n currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;\n }\n\n _getOverriddenMethods(mxn, orig) {\n const methods = {\n _createStartTagToken() {\n orig._createStartTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createEndTagToken() {\n orig._createEndTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCommentToken() {\n orig._createCommentToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createDoctypeToken(initialName) {\n orig._createDoctypeToken.call(this, initialName);\n this.currentToken.location = mxn.ctLoc;\n },\n\n _createCharacterToken(type, ch) {\n orig._createCharacterToken.call(this, type, ch);\n this.currentCharacterToken.location = mxn.ctLoc;\n },\n\n _createEOFToken() {\n orig._createEOFToken.call(this);\n this.currentToken.location = mxn._getCurrentLocation();\n },\n\n _createAttr(attrNameFirstCh) {\n orig._createAttr.call(this, attrNameFirstCh);\n mxn.currentAttrLocation = mxn._getCurrentLocation();\n },\n\n _leaveAttrName(toState) {\n orig._leaveAttrName.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _leaveAttrValue(toState) {\n orig._leaveAttrValue.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n\n _emitCurrentToken() {\n const ctLoc = this.currentToken.location;\n\n //NOTE: if we have pending character token make it's end location equal to the\n //current token's start location.\n if (this.currentCharacterToken) {\n this.currentCharacterToken.location.endLine = ctLoc.startLine;\n this.currentCharacterToken.location.endCol = ctLoc.startCol;\n this.currentCharacterToken.location.endOffset = ctLoc.startOffset;\n }\n\n if (this.currentToken.type === Tokenizer.EOF_TOKEN) {\n ctLoc.endLine = ctLoc.startLine;\n ctLoc.endCol = ctLoc.startCol;\n ctLoc.endOffset = ctLoc.startOffset;\n } else {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col + 1;\n ctLoc.endOffset = mxn.posTracker.offset + 1;\n }\n\n orig._emitCurrentToken.call(this);\n },\n\n _emitCurrentCharacterToken() {\n const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;\n\n //NOTE: if we have character token and it's location wasn't set in the _emitCurrentToken(),\n //then set it's location at the current preprocessor position.\n //We don't need to increment preprocessor position, since character token\n //emission is always forced by the start of the next character token here.\n //So, we already have advanced position.\n if (ctLoc && ctLoc.endOffset === -1) {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col;\n ctLoc.endOffset = mxn.posTracker.offset;\n }\n\n orig._emitCurrentCharacterToken.call(this);\n }\n };\n\n //NOTE: patch initial states for each mode to obtain token start position\n Object.keys(Tokenizer.MODE).forEach(modeName => {\n const state = Tokenizer.MODE[modeName];\n\n methods[state] = function(cp) {\n mxn.ctLoc = mxn._getCurrentLocation();\n orig[state].call(this, cp);\n };\n });\n\n return methods;\n }\n}\n\nmodule.exports = LocationInfoTokenizerMixin;\n","'use strict';\n\nconst Mixin = require('../../utils/mixin');\n\nclass PositionTrackingPreprocessorMixin extends Mixin {\n constructor(preprocessor) {\n super(preprocessor);\n\n this.preprocessor = preprocessor;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n\n this.offset = 0;\n this.col = 0;\n this.line = 1;\n }\n\n _getOverriddenMethods(mxn, orig) {\n return {\n advance() {\n const pos = this.pos + 1;\n const ch = this.html[pos];\n\n //NOTE: LF should be in the last column of the line\n if (mxn.isEol) {\n mxn.isEol = false;\n mxn.line++;\n mxn.lineStartPos = pos;\n }\n\n if (ch === '\\n' || (ch === '\\r' && this.html[pos + 1] !== '\\n')) {\n mxn.isEol = true;\n }\n\n mxn.col = pos - mxn.lineStartPos + 1;\n mxn.offset = mxn.droppedBufferSize + pos;\n\n return orig.advance.call(this);\n },\n\n retreat() {\n orig.retreat.call(this);\n\n mxn.isEol = false;\n mxn.col = this.pos - mxn.lineStartPos + 1;\n },\n\n dropParsedChunk() {\n const prevPos = this.pos;\n\n orig.dropParsedChunk.call(this);\n\n const reduction = prevPos - this.pos;\n\n mxn.lineStartPos -= reduction;\n mxn.droppedBufferSize += reduction;\n mxn.offset = mxn.droppedBufferSize + this.pos;\n }\n };\n }\n}\n\nmodule.exports = PositionTrackingPreprocessorMixin;\n","'use strict';\n\n//Const\nconst NOAH_ARK_CAPACITY = 3;\n\n//List of formatting elements\nclass FormattingElementList {\n constructor(treeAdapter) {\n this.length = 0;\n this.entries = [];\n this.treeAdapter = treeAdapter;\n this.bookmark = null;\n }\n\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement) {\n const candidates = [];\n\n if (this.length >= NOAH_ARK_CAPACITY) {\n const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n\n const element = entry.element;\n const elementAttrs = this.treeAdapter.getAttrList(element);\n\n const isCandidate =\n this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI &&\n elementAttrs.length === neAttrsLength;\n\n if (isCandidate) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n\n return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\n }\n\n _ensureNoahArkCondition(newElement) {\n const candidates = this._getNoahArkConditionCandidates(newElement);\n let cLength = candidates.length;\n\n if (cLength) {\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const neAttrsLength = neAttrs.length;\n const neAttrsMap = Object.create(null);\n\n //NOTE: build attrs map for the new element so we can perform fast lookups\n for (let i = 0; i < neAttrsLength; i++) {\n const neAttr = neAttrs[i];\n\n neAttrsMap[neAttr.name] = neAttr.value;\n }\n\n for (let i = 0; i < neAttrsLength; i++) {\n for (let j = 0; j < cLength; j++) {\n const cAttr = candidates[j].attrs[i];\n\n if (neAttrsMap[cAttr.name] !== cAttr.value) {\n candidates.splice(j, 1);\n cLength--;\n }\n\n if (candidates.length < NOAH_ARK_CAPACITY) {\n return;\n }\n }\n }\n\n //NOTE: remove bottommost candidates until Noah's Ark condition will not be met\n for (let i = cLength - 1; i >= NOAH_ARK_CAPACITY - 1; i--) {\n this.entries.splice(candidates[i].idx, 1);\n this.length--;\n }\n }\n }\n\n //Mutations\n insertMarker() {\n this.entries.push({ type: FormattingElementList.MARKER_ENTRY });\n this.length++;\n }\n\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n\n this.entries.push({\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n insertElementAfterBookmark(element, token) {\n let bookmarkIdx = this.length - 1;\n\n for (; bookmarkIdx >= 0; bookmarkIdx--) {\n if (this.entries[bookmarkIdx] === this.bookmark) {\n break;\n }\n }\n\n this.entries.splice(bookmarkIdx + 1, 0, {\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element,\n token: token\n });\n\n this.length++;\n }\n\n removeEntry(entry) {\n for (let i = this.length - 1; i >= 0; i--) {\n if (this.entries[i] === entry) {\n this.entries.splice(i, 1);\n this.length--;\n break;\n }\n }\n }\n\n clearToLastMarker() {\n while (this.length) {\n const entry = this.entries.pop();\n\n this.length--;\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n }\n }\n\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n return null;\n }\n\n if (this.treeAdapter.getTagName(entry.element) === tagName) {\n return entry;\n }\n }\n\n return null;\n }\n\n getElementEntry(element) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n\n if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element) {\n return entry;\n }\n }\n\n return null;\n }\n}\n\n//Entry types\nFormattingElementList.MARKER_ENTRY = 'MARKER_ENTRY';\nFormattingElementList.ELEMENT_ENTRY = 'ELEMENT_ENTRY';\n\nmodule.exports = FormattingElementList;\n","'use strict';\n\nconst Tokenizer = require('../tokenizer');\nconst OpenElementStack = require('./open-element-stack');\nconst FormattingElementList = require('./formatting-element-list');\nconst LocationInfoParserMixin = require('../extensions/location-info/parser-mixin');\nconst ErrorReportingParserMixin = require('../extensions/error-reporting/parser-mixin');\nconst Mixin = require('../utils/mixin');\nconst defaultTreeAdapter = require('../tree-adapters/default');\nconst mergeOptions = require('../utils/merge-options');\nconst doctype = require('../common/doctype');\nconst foreignContent = require('../common/foreign-content');\nconst ERR = require('../common/error-codes');\nconst unicode = require('../common/unicode');\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\n\nconst DEFAULT_OPTIONS = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n onParseError: null,\n treeAdapter: defaultTreeAdapter\n};\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n\n//Insertion modes\nconst INITIAL_MODE = 'INITIAL_MODE';\nconst BEFORE_HTML_MODE = 'BEFORE_HTML_MODE';\nconst BEFORE_HEAD_MODE = 'BEFORE_HEAD_MODE';\nconst IN_HEAD_MODE = 'IN_HEAD_MODE';\nconst IN_HEAD_NO_SCRIPT_MODE = 'IN_HEAD_NO_SCRIPT_MODE';\nconst AFTER_HEAD_MODE = 'AFTER_HEAD_MODE';\nconst IN_BODY_MODE = 'IN_BODY_MODE';\nconst TEXT_MODE = 'TEXT_MODE';\nconst IN_TABLE_MODE = 'IN_TABLE_MODE';\nconst IN_TABLE_TEXT_MODE = 'IN_TABLE_TEXT_MODE';\nconst IN_CAPTION_MODE = 'IN_CAPTION_MODE';\nconst IN_COLUMN_GROUP_MODE = 'IN_COLUMN_GROUP_MODE';\nconst IN_TABLE_BODY_MODE = 'IN_TABLE_BODY_MODE';\nconst IN_ROW_MODE = 'IN_ROW_MODE';\nconst IN_CELL_MODE = 'IN_CELL_MODE';\nconst IN_SELECT_MODE = 'IN_SELECT_MODE';\nconst IN_SELECT_IN_TABLE_MODE = 'IN_SELECT_IN_TABLE_MODE';\nconst IN_TEMPLATE_MODE = 'IN_TEMPLATE_MODE';\nconst AFTER_BODY_MODE = 'AFTER_BODY_MODE';\nconst IN_FRAMESET_MODE = 'IN_FRAMESET_MODE';\nconst AFTER_FRAMESET_MODE = 'AFTER_FRAMESET_MODE';\nconst AFTER_AFTER_BODY_MODE = 'AFTER_AFTER_BODY_MODE';\nconst AFTER_AFTER_FRAMESET_MODE = 'AFTER_AFTER_FRAMESET_MODE';\n\n//Insertion mode reset map\nconst INSERTION_MODE_RESET_MAP = {\n [$.TR]: IN_ROW_MODE,\n [$.TBODY]: IN_TABLE_BODY_MODE,\n [$.THEAD]: IN_TABLE_BODY_MODE,\n [$.TFOOT]: IN_TABLE_BODY_MODE,\n [$.CAPTION]: IN_CAPTION_MODE,\n [$.COLGROUP]: IN_COLUMN_GROUP_MODE,\n [$.TABLE]: IN_TABLE_MODE,\n [$.BODY]: IN_BODY_MODE,\n [$.FRAMESET]: IN_FRAMESET_MODE\n};\n\n//Template insertion mode switch map\nconst TEMPLATE_INSERTION_MODE_SWITCH_MAP = {\n [$.CAPTION]: IN_TABLE_MODE,\n [$.COLGROUP]: IN_TABLE_MODE,\n [$.TBODY]: IN_TABLE_MODE,\n [$.TFOOT]: IN_TABLE_MODE,\n [$.THEAD]: IN_TABLE_MODE,\n [$.COL]: IN_COLUMN_GROUP_MODE,\n [$.TR]: IN_TABLE_BODY_MODE,\n [$.TD]: IN_ROW_MODE,\n [$.TH]: IN_ROW_MODE\n};\n\n//Token handlers map for insertion modes\nconst TOKEN_HANDLERS = {\n [INITIAL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: doctypeInInitialMode,\n [Tokenizer.START_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.END_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer.EOF_TOKEN]: tokenInInitialMode\n },\n [BEFORE_HTML_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHtml,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHtml,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHtml\n },\n [BEFORE_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagBeforeHead,\n [Tokenizer.END_TAG_TOKEN]: endTagBeforeHead,\n [Tokenizer.EOF_TOKEN]: tokenBeforeHead\n },\n [IN_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHead,\n [Tokenizer.END_TAG_TOKEN]: endTagInHead,\n [Tokenizer.EOF_TOKEN]: tokenInHead\n },\n [IN_HEAD_NO_SCRIPT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagInHeadNoScript,\n [Tokenizer.END_TAG_TOKEN]: endTagInHeadNoScript,\n [Tokenizer.EOF_TOKEN]: tokenInHeadNoScript\n },\n [AFTER_HEAD_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterHead,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterHead,\n [Tokenizer.EOF_TOKEN]: tokenAfterHead\n },\n [IN_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: ignoreToken,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: ignoreToken,\n [Tokenizer.END_TAG_TOKEN]: endTagInText,\n [Tokenizer.EOF_TOKEN]: eofInText\n },\n [IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_TEXT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTableText,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText,\n [Tokenizer.COMMENT_TOKEN]: tokenInTableText,\n [Tokenizer.DOCTYPE_TOKEN]: tokenInTableText,\n [Tokenizer.START_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.END_TAG_TOKEN]: tokenInTableText,\n [Tokenizer.EOF_TOKEN]: tokenInTableText\n },\n [IN_CAPTION_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCaption,\n [Tokenizer.END_TAG_TOKEN]: endTagInCaption,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_COLUMN_GROUP_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInColumnGroup,\n [Tokenizer.END_TAG_TOKEN]: endTagInColumnGroup,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTableBody,\n [Tokenizer.END_TAG_TOKEN]: endTagInTableBody,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_ROW_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInRow,\n [Tokenizer.END_TAG_TOKEN]: endTagInRow,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_CELL_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInCell,\n [Tokenizer.END_TAG_TOKEN]: endTagInCell,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelect,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelect,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_IN_TABLE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInSelectInTable,\n [Tokenizer.END_TAG_TOKEN]: endTagInSelectInTable,\n [Tokenizer.EOF_TOKEN]: eofInBody\n },\n [IN_TEMPLATE_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInTemplate,\n [Tokenizer.END_TAG_TOKEN]: endTagInTemplate,\n [Tokenizer.EOF_TOKEN]: eofInTemplate\n },\n [AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToRootHtmlElement,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterBody,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [IN_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagInFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagInFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer.COMMENT_TOKEN]: appendComment,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: endTagAfterFrameset,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_BODY_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterBody,\n [Tokenizer.END_TAG_TOKEN]: tokenAfterAfterBody,\n [Tokenizer.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_FRAMESET_MODE]: {\n [Tokenizer.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer.START_TAG_TOKEN]: startTagAfterAfterFrameset,\n [Tokenizer.END_TAG_TOKEN]: ignoreToken,\n [Tokenizer.EOF_TOKEN]: stopParsing\n }\n};\n\n//Parser\nclass Parser {\n constructor(options) {\n this.options = mergeOptions(DEFAULT_OPTIONS, options);\n\n this.treeAdapter = this.options.treeAdapter;\n this.pendingScript = null;\n\n if (this.options.sourceCodeLocationInfo) {\n Mixin.install(this, LocationInfoParserMixin);\n }\n\n if (this.options.onParseError) {\n Mixin.install(this, ErrorReportingParserMixin, { onParseError: this.options.onParseError });\n }\n }\n\n // API\n parse(html) {\n const document = this.treeAdapter.createDocument();\n\n this._bootstrap(document, null);\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n return document;\n }\n\n parseFragment(html, fragmentContext) {\n //NOTE: use <template> element as a fragment context if context element was not provided,\n //so we will parse in \"forgiving\" manner\n if (!fragmentContext) {\n fragmentContext = this.treeAdapter.createElement($.TEMPLATE, NS.HTML, []);\n }\n\n //NOTE: create fake element which will be used as 'document' for fragment parsing.\n //This is important for jsdom there 'document' can't be recreated, therefore\n //fragment parsing causes messing of the main `document`.\n const documentMock = this.treeAdapter.createElement('documentmock', NS.HTML, []);\n\n this._bootstrap(documentMock, fragmentContext);\n\n if (this.treeAdapter.getTagName(fragmentContext) === $.TEMPLATE) {\n this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n }\n\n this._initTokenizerForFragmentParsing();\n this._insertFakeRootElement();\n this._resetInsertionMode();\n this._findFormInFragmentContext();\n this.tokenizer.write(html, true);\n this._runParsingLoop(null);\n\n const rootElement = this.treeAdapter.getFirstChild(documentMock);\n const fragment = this.treeAdapter.createDocumentFragment();\n\n this._adoptNodes(rootElement, fragment);\n\n return fragment;\n }\n\n //Bootstrap parser\n _bootstrap(document, fragmentContext) {\n this.tokenizer = new Tokenizer(this.options);\n\n this.stopped = false;\n\n this.insertionMode = INITIAL_MODE;\n this.originalInsertionMode = '';\n\n this.document = document;\n this.fragmentContext = fragmentContext;\n\n this.headElement = null;\n this.formElement = null;\n\n this.openElements = new OpenElementStack(this.document, this.treeAdapter);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n\n this.tmplInsertionModeStack = [];\n this.tmplInsertionModeStackTop = -1;\n this.currentTmplInsertionMode = null;\n\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n //Parsing loop\n _runParsingLoop(scriptHandler) {\n while (!this.stopped) {\n this._setupTokenizerCDATAMode();\n\n const token = this.tokenizer.getNextToken();\n\n if (token.type === Tokenizer.HIBERNATION_TOKEN) {\n break;\n }\n\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n\n if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === '\\n') {\n if (token.chars.length === 1) {\n continue;\n }\n\n token.chars = token.chars.substr(1);\n }\n }\n\n this._processInputToken(token);\n\n if (scriptHandler && this.pendingScript) {\n break;\n }\n }\n }\n\n runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {\n this._runParsingLoop(scriptHandler);\n\n if (scriptHandler && this.pendingScript) {\n const script = this.pendingScript;\n\n this.pendingScript = null;\n\n scriptHandler(script);\n\n return;\n }\n\n if (writeCallback) {\n writeCallback();\n }\n }\n\n //Text parsing\n _setupTokenizerCDATAMode() {\n const current = this._getAdjustedCurrentElement();\n\n this.tokenizer.allowCDATA =\n current &&\n current !== this.document &&\n this.treeAdapter.getNamespaceURI(current) !== NS.HTML &&\n !this._isIntegrationPoint(current);\n }\n\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = TEXT_MODE;\n }\n\n switchToPlaintextParsing() {\n this.insertionMode = TEXT_MODE;\n this.originalInsertionMode = IN_BODY_MODE;\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n\n do {\n if (this.treeAdapter.getTagName(node) === $.FORM) {\n this.formElement = node;\n break;\n }\n\n node = this.treeAdapter.getParentNode(node);\n } while (node);\n }\n\n _initTokenizerForFragmentParsing() {\n if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\n const tn = this.treeAdapter.getTagName(this.fragmentContext);\n\n if (tn === $.TITLE || tn === $.TEXTAREA) {\n this.tokenizer.state = Tokenizer.MODE.RCDATA;\n } else if (\n tn === $.STYLE ||\n tn === $.XMP ||\n tn === $.IFRAME ||\n tn === $.NOEMBED ||\n tn === $.NOFRAMES ||\n tn === $.NOSCRIPT\n ) {\n this.tokenizer.state = Tokenizer.MODE.RAWTEXT;\n } else if (tn === $.SCRIPT) {\n this.tokenizer.state = Tokenizer.MODE.SCRIPT_DATA;\n } else if (tn === $.PLAINTEXT) {\n this.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n }\n }\n }\n\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n }\n\n _attachElementToTree(element) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.appendChild(parent, element);\n }\n }\n\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n }\n\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertFakeElement(tagName) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n\n this._attachElementToTree(element);\n this.openElements.push(element);\n }\n\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl);\n this.openElements.push(tmpl);\n }\n\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement($.HTML, NS.HTML, []);\n\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element);\n }\n\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n\n this.treeAdapter.appendChild(parent, commentNode);\n }\n\n _insertCharacters(token) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentText(token.chars);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n\n //Token processing\n _shouldProcessTokenInForeignContent(token) {\n const current = this._getAdjustedCurrentElement();\n\n if (!current || current === this.document) {\n return false;\n }\n\n const ns = this.treeAdapter.getNamespaceURI(current);\n\n if (ns === NS.HTML) {\n return false;\n }\n\n if (\n this.treeAdapter.getTagName(current) === $.ANNOTATION_XML &&\n ns === NS.MATHML &&\n token.type === Tokenizer.START_TAG_TOKEN &&\n token.tagName === $.SVG\n ) {\n return false;\n }\n\n const isCharacterToken =\n token.type === Tokenizer.CHARACTER_TOKEN ||\n token.type === Tokenizer.NULL_CHARACTER_TOKEN ||\n token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n\n const isMathMLTextStartTag =\n token.type === Tokenizer.START_TAG_TOKEN && token.tagName !== $.MGLYPH && token.tagName !== $.MALIGNMARK;\n\n if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML)) {\n return false;\n }\n\n if (\n (token.type === Tokenizer.START_TAG_TOKEN || isCharacterToken) &&\n this._isIntegrationPoint(current, NS.HTML)\n ) {\n return false;\n }\n\n return token.type !== Tokenizer.EOF_TOKEN;\n }\n\n _processToken(token) {\n TOKEN_HANDLERS[this.insertionMode][token.type](this, token);\n }\n\n _processTokenInBodyMode(token) {\n TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);\n }\n\n _processTokenInForeignContent(token) {\n if (token.type === Tokenizer.CHARACTER_TOKEN) {\n characterInForeignContent(this, token);\n } else if (token.type === Tokenizer.NULL_CHARACTER_TOKEN) {\n nullCharacterInForeignContent(this, token);\n } else if (token.type === Tokenizer.WHITESPACE_CHARACTER_TOKEN) {\n insertCharacters(this, token);\n } else if (token.type === Tokenizer.COMMENT_TOKEN) {\n appendComment(this, token);\n } else if (token.type === Tokenizer.START_TAG_TOKEN) {\n startTagInForeignContent(this, token);\n } else if (token.type === Tokenizer.END_TAG_TOKEN) {\n endTagInForeignContent(this, token);\n }\n }\n\n _processInputToken(token) {\n if (this._shouldProcessTokenInForeignContent(token)) {\n this._processTokenInForeignContent(token);\n } else {\n this._processToken(token);\n }\n\n if (token.type === Tokenizer.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {\n this._err(ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n\n //Integration points\n _isIntegrationPoint(element, foreignNS) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n\n return foreignContent.isIntegrationPoint(tn, ns, attrs, foreignNS);\n }\n\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.length;\n\n if (listLength) {\n let unopenIdx = listLength;\n let entry = null;\n\n do {\n unopenIdx--;\n entry = this.activeFormattingElements.entries[unopenIdx];\n\n if (entry.type === FormattingElementList.MARKER_ENTRY || this.openElements.contains(entry.element)) {\n unopenIdx++;\n break;\n }\n } while (unopenIdx > 0);\n\n for (let i = unopenIdx; i < listLength; i++) {\n entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = IN_ROW_MODE;\n }\n\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n\n //Insertion modes\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop, last = false; i >= 0; i--) {\n let element = this.openElements.items[i];\n\n if (i === 0) {\n last = true;\n\n if (this.fragmentContext) {\n element = this.fragmentContext;\n }\n }\n\n const tn = this.treeAdapter.getTagName(element);\n const newInsertionMode = INSERTION_MODE_RESET_MAP[tn];\n\n if (newInsertionMode) {\n this.insertionMode = newInsertionMode;\n break;\n } else if (!last && (tn === $.TD || tn === $.TH)) {\n this.insertionMode = IN_CELL_MODE;\n break;\n } else if (!last && tn === $.HEAD) {\n this.insertionMode = IN_HEAD_MODE;\n break;\n } else if (tn === $.SELECT) {\n this._resetInsertionModeForSelect(i);\n break;\n } else if (tn === $.TEMPLATE) {\n this.insertionMode = this.currentTmplInsertionMode;\n break;\n } else if (tn === $.HTML) {\n this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\n break;\n } else if (last) {\n this.insertionMode = IN_BODY_MODE;\n break;\n }\n }\n }\n\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const ancestor = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(ancestor);\n\n if (tn === $.TEMPLATE) {\n break;\n } else if (tn === $.TABLE) {\n this.insertionMode = IN_SELECT_IN_TABLE_MODE;\n return;\n }\n }\n }\n\n this.insertionMode = IN_SELECT_MODE;\n }\n\n _pushTmplInsertionMode(mode) {\n this.tmplInsertionModeStack.push(mode);\n this.tmplInsertionModeStackTop++;\n this.currentTmplInsertionMode = mode;\n }\n\n _popTmplInsertionMode() {\n this.tmplInsertionModeStack.pop();\n this.tmplInsertionModeStackTop--;\n this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\n }\n\n //Foster parenting\n _isElementCausesFosterParenting(element) {\n const tn = this.treeAdapter.getTagName(element);\n\n return tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR;\n }\n\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\n }\n\n _findFosterParentingLocation() {\n const location = {\n parent: null,\n beforeElement: null\n };\n\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(openElement);\n const ns = this.treeAdapter.getNamespaceURI(openElement);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n location.parent = this.treeAdapter.getTemplateContent(openElement);\n break;\n } else if (tn === $.TABLE) {\n location.parent = this.treeAdapter.getParentNode(openElement);\n\n if (location.parent) {\n location.beforeElement = openElement;\n } else {\n location.parent = this.openElements.items[i - 1];\n }\n\n break;\n }\n }\n\n if (!location.parent) {\n location.parent = this.openElements.items[0];\n }\n\n return location;\n }\n\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n } else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n\n _fosterParentText(chars) {\n const location = this._findFosterParentingLocation();\n\n if (location.beforeElement) {\n this.treeAdapter.insertTextBefore(location.parent, chars, location.beforeElement);\n } else {\n this.treeAdapter.insertText(location.parent, chars);\n }\n }\n\n //Special elements\n _isSpecialElement(element) {\n const tn = this.treeAdapter.getTagName(element);\n const ns = this.treeAdapter.getNamespaceURI(element);\n\n return HTML.SPECIAL_ELEMENTS[ns][tn];\n }\n}\n\nmodule.exports = Parser;\n\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n } else if (!p.openElements.hasInScope(token.tagName)) {\n formattingElementEntry = null;\n }\n } else {\n genericEndTagInBody(p, token);\n }\n\n return formattingElementEntry;\n}\n\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n\n if (element === formattingElementEntry.element) {\n break;\n }\n\n if (p._isSpecialElement(element)) {\n furthestBlock = element;\n }\n }\n\n if (!furthestBlock) {\n p.openElements.popUntilElementPopped(formattingElementEntry.element);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n\n return furthestBlock;\n}\n\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n\n p.openElements.remove(element);\n } else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n\n return lastElement;\n}\n\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n\n return newElement;\n}\n\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n if (p._isElementCausesFosterParenting(commonAncestor)) {\n p._fosterParentElement(lastElement);\n } else {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n\n if (tn === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const token = formattingElementEntry.token;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n\n p.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement);\n}\n\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n let formattingElementEntry;\n\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n formattingElementEntry = aaObtainFormattingElementEntry(p, token, formattingElementEntry);\n\n if (!formattingElementEntry) {\n break;\n }\n\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n\n if (!furthestBlock) {\n break;\n }\n\n p.activeFormattingElements.bookmark = formattingElementEntry;\n\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n\n p.treeAdapter.detachNode(lastElement);\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n\n//Generic token handlers\n//------------------------------------------------------------------\nfunction ignoreToken() {\n //NOTE: do nothing =)\n}\n\nfunction misplacedDoctype(p) {\n p._err(ERR.misplacedDoctype);\n}\n\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContent || p.openElements.current);\n}\n\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\n\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\n\nfunction insertCharacters(p, token) {\n p._insertCharacters(token);\n}\n\nfunction stopParsing(p) {\n p.stopped = true;\n}\n\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n\n const mode = token.forceQuirks ? HTML.DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n\n if (!doctype.isConforming(token)) {\n p._err(ERR.nonConformingDoctype);\n }\n\n p.treeAdapter.setDocumentMode(p.document, mode);\n\n p.insertionMode = BEFORE_HTML_MODE;\n}\n\nfunction tokenInInitialMode(p, token) {\n p._err(ERR.missingDoctype, { beforeToken: true });\n p.treeAdapter.setDocumentMode(p.document, HTML.DOCUMENT_MODE.QUIRKS);\n p.insertionMode = BEFORE_HTML_MODE;\n p._processToken(token);\n}\n\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagName === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = BEFORE_HEAD_MODE;\n } else {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\n\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = BEFORE_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.HEAD) {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n } else {\n tokenBeforeHead(p, token);\n }\n}\n\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement($.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TITLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RCDATA);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_HEAD_NO_SCRIPT_MODE;\n }\n } else if (tn === $.NOFRAMES || tn === $.STYLE) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n } else if (tn === $.SCRIPT) {\n p._switchToTextParsing(token, Tokenizer.MODE.SCRIPT_DATA);\n } else if (tn === $.TEMPLATE) {\n p._insertTemplate(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = IN_TEMPLATE_MODE;\n p._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenInHead(p, token);\n }\n}\n\nfunction endTagInHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HEAD) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n } else if (tn === $.BODY || tn === $.BR || tn === $.HTML) {\n tokenInHead(p, token);\n } else if (tn === $.TEMPLATE) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n\n if (p.openElements.currentTagName !== $.TEMPLATE) {\n p._err(ERR.closingOfElementWithOpenChildElements);\n }\n\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = AFTER_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.HEAD ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.STYLE\n ) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n p._err(ERR.nestedNoscriptInHead);\n } else {\n tokenInHeadNoScript(p, token);\n }\n}\n\nfunction endTagInHeadNoScript(p, token) {\n const tn = token.tagName;\n\n if (tn === $.NOSCRIPT) {\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n } else if (tn === $.BR) {\n tokenInHeadNoScript(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenInHeadNoScript(p, token) {\n const errCode =\n token.type === Tokenizer.EOF_TOKEN ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n\n p._err(errCode);\n p.openElements.pop();\n p.insertionMode = IN_HEAD_MODE;\n p._processToken(token);\n}\n\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.BODY) {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_BODY_MODE;\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n } else if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n p._err(ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n } else if (tn === $.HEAD) {\n p._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenAfterHead(p, token);\n }\n}\n\nfunction endTagAfterHead(p, token) {\n const tn = token.tagName;\n\n if (tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenAfterHead(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n p._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\n\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement($.BODY);\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\n\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\n\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\n\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_FRAMESET_MODE;\n }\n}\n\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n const tn = p.openElements.currentTagName;\n\n if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\n\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\n\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const element = p.openElements.items[i];\n const elementTn = p.treeAdapter.getTagName(element);\n let closeTn = null;\n\n if (tn === $.LI && elementTn === $.LI) {\n closeTn = $.LI;\n } else if ((tn === $.DD || tn === $.DT) && (elementTn === $.DD || elementTn === $.DT)) {\n closeTn = elementTn;\n }\n\n if (closeTn) {\n p.openElements.generateImpliedEndTagsWithExclusion(closeTn);\n p.openElements.popUntilTagNamePopped(closeTn);\n break;\n }\n\n if (elementTn !== $.ADDRESS && elementTn !== $.DIV && elementTn !== $.P && p._isSpecialElement(element)) {\n break;\n }\n }\n\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = Tokenizer.MODE.PLAINTEXT;\n}\n\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\n\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName($.A);\n\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\n\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\n\nfunction tableStartTagInBody(p, token) {\n if (\n p.treeAdapter.getDocumentMode(p.document) !== HTML.DOCUMENT_MODE.QUIRKS &&\n p.openElements.hasInButtonScope($.P)\n ) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = IN_TABLE_MODE;\n}\n\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE) {\n p.framesetOk = false;\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\n\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\n\nfunction imageStartTagInBody(p, token) {\n token.tagName = $.IMG;\n areaStartTagInBody(p, token);\n}\n\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = Tokenizer.MODE.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = TEXT_MODE;\n}\n\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as a rawtext.\nfunction noembedStartTagInBody(p, token) {\n p._switchToTextParsing(token, Tokenizer.MODE.RAWTEXT);\n}\n\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n\n if (\n p.insertionMode === IN_TABLE_MODE ||\n p.insertionMode === IN_CAPTION_MODE ||\n p.insertionMode === IN_TABLE_BODY_MODE ||\n p.insertionMode === IN_ROW_MODE ||\n p.insertionMode === IN_CELL_MODE\n ) {\n p.insertionMode = IN_SELECT_IN_TABLE_MODE;\n } else {\n p.insertionMode = IN_SELECT_MODE;\n }\n}\n\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction menuStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n\n p._insertElement(token, NS.HTML);\n}\n\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n } else {\n p._insertElement(token, NS.MATHML);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n } else {\n p._insertElement(token, NS.SVG);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction startTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.I || tn === $.S || tn === $.B || tn === $.U) {\n bStartTagInBody(p, token);\n } else if (tn === $.P) {\n addressStartTagInBody(p, token);\n } else if (tn === $.A) {\n aStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.OL || tn === $.UL) {\n addressStartTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderStartTagInBody(p, token);\n } else if (tn === $.LI || tn === $.DD || tn === $.DT) {\n listItemStartTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n bStartTagInBody(p, token);\n } else if (tn === $.BR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.HR) {\n hrStartTagInBody(p, token);\n } else if (tn === $.RB) {\n rbStartTagInBody(p, token);\n } else if (tn === $.RT || tn === $.RP) {\n rtStartTagInBody(p, token);\n } else if (tn !== $.TH && tn !== $.TD && tn !== $.TR) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.DIV || tn === $.DIR || tn === $.NAV) {\n addressStartTagInBody(p, token);\n } else if (tn === $.PRE) {\n preStartTagInBody(p, token);\n } else if (tn === $.BIG) {\n bStartTagInBody(p, token);\n } else if (tn === $.IMG || tn === $.WBR) {\n areaStartTagInBody(p, token);\n } else if (tn === $.XMP) {\n xmpStartTagInBody(p, token);\n } else if (tn === $.SVG) {\n svgStartTagInBody(p, token);\n } else if (tn === $.RTC) {\n rbStartTagInBody(p, token);\n } else if (tn !== $.COL) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n htmlStartTagInBody(p, token);\n } else if (tn === $.BASE || tn === $.LINK || tn === $.META) {\n startTagInHead(p, token);\n } else if (tn === $.BODY) {\n bodyStartTagInBody(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressStartTagInBody(p, token);\n } else if (tn === $.FORM) {\n formStartTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT) {\n bStartTagInBody(p, token);\n } else if (tn === $.NOBR) {\n nobrStartTagInBody(p, token);\n } else if (tn === $.AREA) {\n areaStartTagInBody(p, token);\n } else if (tn === $.MATH) {\n mathStartTagInBody(p, token);\n } else if (tn === $.MENU) {\n menuStartTagInBody(p, token);\n } else if (tn !== $.HEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.STYLE || tn === $.TITLE) {\n startTagInHead(p, token);\n } else if (tn === $.ASIDE) {\n addressStartTagInBody(p, token);\n } else if (tn === $.SMALL) {\n bStartTagInBody(p, token);\n } else if (tn === $.TABLE) {\n tableStartTagInBody(p, token);\n } else if (tn === $.EMBED) {\n areaStartTagInBody(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInBody(p, token);\n } else if (tn === $.PARAM || tn === $.TRACK) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IMAGE) {\n imageStartTagInBody(p, token);\n } else if (tn !== $.FRAME && tn !== $.TBODY && tn !== $.TFOOT && tn !== $.THEAD) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.BUTTON) {\n buttonStartTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n bStartTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletStartTagInBody(p, token);\n } else if (tn === $.KEYGEN) {\n areaStartTagInBody(p, token);\n } else if (tn === $.SOURCE) {\n paramStartTagInBody(p, token);\n } else if (tn === $.IFRAME) {\n iframeStartTagInBody(p, token);\n } else if (tn === $.SELECT) {\n selectStartTagInBody(p, token);\n } else if (tn === $.OPTION) {\n optgroupStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.BGSOUND) {\n startTagInHead(p, token);\n } else if (\n tn === $.DETAILS ||\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.SECTION ||\n tn === $.SUMMARY\n ) {\n addressStartTagInBody(p, token);\n } else if (tn === $.LISTING) {\n preStartTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletStartTagInBody(p, token);\n } else if (tn === $.NOEMBED) {\n noembedStartTagInBody(p, token);\n } else if (tn !== $.CAPTION) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.BASEFONT) {\n startTagInHead(p, token);\n } else if (tn === $.FRAMESET) {\n framesetStartTagInBody(p, token);\n } else if (tn === $.FIELDSET) {\n addressStartTagInBody(p, token);\n } else if (tn === $.TEXTAREA) {\n textareaStartTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else if (tn === $.NOSCRIPT) {\n if (p.options.scriptingEnabled) {\n noembedStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n } else if (tn === $.OPTGROUP) {\n optgroupStartTagInBody(p, token);\n } else if (tn !== $.COLGROUP) {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 9:\n if (tn === $.PLAINTEXT) {\n plaintextStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressStartTagInBody(p, token);\n } else {\n genericStartTagInBody(p, token);\n }\n\n break;\n\n default:\n genericStartTagInBody(p, token);\n }\n}\n\nfunction bodyEndTagInBody(p) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n }\n}\n\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = AFTER_BODY_MODE;\n p._processToken(token);\n }\n}\n\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const formElement = p.formElement;\n\n if (!inTemplate) {\n p.formElement = null;\n }\n\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n } else {\n p.openElements.remove(formElement);\n }\n }\n}\n\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement($.P);\n }\n\n p._closePElement();\n}\n\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\n\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\n\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\n\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagName;\n\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\n\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement($.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\n\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getTagName(element) === tn) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilElementPopped(element);\n break;\n }\n\n if (p._isSpecialElement(element)) {\n break;\n }\n }\n}\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction endTagInBody(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 1:\n if (tn === $.A || tn === $.B || tn === $.I || tn === $.S || tn === $.U) {\n callAdoptionAgency(p, token);\n } else if (tn === $.P) {\n pEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 2:\n if (tn === $.DL || tn === $.UL || tn === $.OL) {\n addressEndTagInBody(p, token);\n } else if (tn === $.LI) {\n liEndTagInBody(p, token);\n } else if (tn === $.DD || tn === $.DT) {\n ddEndTagInBody(p, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderEndTagInBody(p, token);\n } else if (tn === $.BR) {\n brEndTagInBody(p, token);\n } else if (tn === $.EM || tn === $.TT) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.BIG) {\n callAdoptionAgency(p, token);\n } else if (tn === $.DIR || tn === $.DIV || tn === $.NAV || tn === $.PRE) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.BODY) {\n bodyEndTagInBody(p, token);\n } else if (tn === $.HTML) {\n htmlEndTagInBody(p, token);\n } else if (tn === $.FORM) {\n formEndTagInBody(p, token);\n } else if (tn === $.CODE || tn === $.FONT || tn === $.NOBR) {\n callAdoptionAgency(p, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.ASIDE) {\n addressEndTagInBody(p, token);\n } else if (tn === $.SMALL) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 6:\n if (\n tn === $.CENTER ||\n tn === $.FIGURE ||\n tn === $.FOOTER ||\n tn === $.HEADER ||\n tn === $.HGROUP ||\n tn === $.DIALOG\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletEndTagInBody(p, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n callAdoptionAgency(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 7:\n if (\n tn === $.ADDRESS ||\n tn === $.ARTICLE ||\n tn === $.DETAILS ||\n tn === $.SECTION ||\n tn === $.SUMMARY ||\n tn === $.LISTING\n ) {\n addressEndTagInBody(p, token);\n } else if (tn === $.MARQUEE) {\n appletEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.FIELDSET) {\n addressEndTagInBody(p, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressEndTagInBody(p, token);\n } else {\n genericEndTagInBody(p, token);\n }\n\n break;\n\n default:\n genericEndTagInBody(p, token);\n }\n}\n\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStackTop > -1) {\n eofInTemplate(p, token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n if (token.tagName === $.SCRIPT) {\n p.pendingScript = p.openElements.current;\n }\n\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\n\nfunction eofInText(p, token) {\n p._err(ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n const curTn = p.openElements.currentTagName;\n\n if (curTn === $.TABLE || curTn === $.TBODY || curTn === $.TFOOT || curTn === $.THEAD || curTn === $.TR) {\n p.pendingCharacterTokens = [];\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = IN_TABLE_TEXT_MODE;\n p._processToken(token);\n } else {\n tokenInTable(p, token);\n }\n}\n\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CAPTION_MODE;\n}\n\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n}\n\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.COLGROUP);\n p.insertionMode = IN_COLUMN_GROUP_MODE;\n p._processToken(token);\n}\n\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_TABLE_BODY_MODE;\n}\n\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement($.TBODY);\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n}\n\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processToken(token);\n }\n}\n\nfunction inputStartTagInTable(p, token) {\n const inputType = Tokenizer.getTokenAttr(token, ATTRS.TYPE);\n\n if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE) {\n p._appendElement(token, NS.HTML);\n } else {\n tokenInTable(p, token);\n }\n\n token.ackSelfClosing = true;\n}\n\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\n\nfunction startTagInTable(p, token) {\n const tn = token.tagName;\n\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH || tn === $.TR) {\n tdStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 3:\n if (tn === $.COL) {\n colStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 4:\n if (tn === $.FORM) {\n formStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n tableStartTagInTable(p, token);\n } else if (tn === $.STYLE) {\n startTagInHead(p, token);\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n tbodyStartTagInTable(p, token);\n } else if (tn === $.INPUT) {\n inputStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 7:\n if (tn === $.CAPTION) {\n captionStartTagInTable(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n case 8:\n if (tn === $.COLGROUP) {\n colgroupStartTagInTable(p, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInTable(p, token);\n }\n\n break;\n\n default:\n tokenInTable(p, token);\n }\n}\n\nfunction endTagInTable(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (\n tn !== $.BODY &&\n tn !== $.CAPTION &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n tokenInTable(p, token);\n }\n}\n\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n\n p.fosterParentingEnabled = true;\n p._processTokenInBodyMode(token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\n\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\n\nfunction tokenInTableText(p, token) {\n let i = 0;\n\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n } else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCaption(p, token) {\n const tn = token.tagName;\n\n if (tn === $.CAPTION || tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_TABLE_MODE;\n\n if (tn === $.TABLE) {\n p._processToken(token);\n }\n }\n } else if (\n tn !== $.BODY &&\n tn !== $.COL &&\n tn !== $.COLGROUP &&\n tn !== $.HTML &&\n tn !== $.TBODY &&\n tn !== $.TD &&\n tn !== $.TFOOT &&\n tn !== $.TH &&\n tn !== $.THEAD &&\n tn !== $.TR\n ) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.COL) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p, token);\n } else {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction endTagInColumnGroup(p, token) {\n const tn = token.tagName;\n\n if (tn === $.COLGROUP) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n } else if (tn !== $.COL) {\n tokenInColumnGroup(p, token);\n }\n}\n\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagName === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n}\n\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_ROW_MODE;\n } else if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement($.TR);\n p.insertionMode = IN_ROW_MODE;\n p._processToken(token);\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD\n ) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInTableBody(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH && tn !== $.TR)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TH || tn === $.TD) {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = IN_CELL_MODE;\n p.activeFormattingElements.insertMarker();\n } else if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else {\n startTagInTable(p, token);\n }\n}\n\nfunction endTagInRow(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TR) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p.openElements.hasInTableScope(tn) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = IN_TABLE_BODY_MODE;\n p._processToken(token);\n }\n } else if (\n (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP) ||\n (tn !== $.HTML && tn !== $.TD && tn !== $.TH)\n ) {\n endTagInTable(p, token);\n }\n}\n\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.COL ||\n tn === $.COLGROUP ||\n tn === $.TBODY ||\n tn === $.TD ||\n tn === $.TFOOT ||\n tn === $.TH ||\n tn === $.THEAD ||\n tn === $.TR\n ) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else {\n startTagInBody(p, token);\n }\n}\n\nfunction endTagInCell(p, token) {\n const tn = token.tagName;\n\n if (tn === $.TD || tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = IN_ROW_MODE;\n }\n } else if (tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n p._processToken(token);\n }\n } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML) {\n endTagInBody(p, token);\n }\n}\n\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.OPTGROUP) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n p._insertElement(token, NS.HTML);\n } else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA || tn === $.SELECT) {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n\n if (tn !== $.SELECT) {\n p._processToken(token);\n }\n }\n } else if (tn === $.SCRIPT || tn === $.TEMPLATE) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInSelect(p, token) {\n const tn = token.tagName;\n\n if (tn === $.OPTGROUP) {\n const prevOpenElement = p.openElements.items[p.openElements.stackTop - 1];\n const prevOpenElementTn = prevOpenElement && p.treeAdapter.getTagName(prevOpenElement);\n\n if (p.openElements.currentTagName === $.OPTION && prevOpenElementTn === $.OPTGROUP) {\n p.openElements.pop();\n }\n\n if (p.openElements.currentTagName === $.OPTGROUP) {\n p.openElements.pop();\n }\n } else if (tn === $.OPTION) {\n if (p.openElements.currentTagName === $.OPTION) {\n p.openElements.pop();\n }\n } else if (tn === $.SELECT && p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\n//12.2.5.4.17 The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n startTagInSelect(p, token);\n }\n}\n\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH\n ) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processToken(token);\n }\n } else {\n endTagInSelect(p, token);\n }\n}\n\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n const tn = token.tagName;\n\n if (\n tn === $.BASE ||\n tn === $.BASEFONT ||\n tn === $.BGSOUND ||\n tn === $.LINK ||\n tn === $.META ||\n tn === $.NOFRAMES ||\n tn === $.SCRIPT ||\n tn === $.STYLE ||\n tn === $.TEMPLATE ||\n tn === $.TITLE\n ) {\n startTagInHead(p, token);\n } else {\n const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;\n\n p._popTmplInsertionMode();\n p._pushTmplInsertionMode(newInsertionMode);\n p.insertionMode = newInsertionMode;\n p._processToken(token);\n }\n}\n\nfunction endTagInTemplate(p, token) {\n if (token.tagName === $.TEMPLATE) {\n endTagInHead(p, token);\n }\n}\n\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p._popTmplInsertionMode();\n p._resetInsertionMode();\n p._processToken(token);\n } else {\n p.stopped = true;\n }\n}\n\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction endTagAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = AFTER_AFTER_BODY_MODE;\n }\n } else {\n tokenAfterBody(p, token);\n }\n}\n\nfunction tokenAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.FRAMESET) {\n p._insertElement(token, NS.HTML);\n } else if (tn === $.FRAME) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagInFrameset(p, token) {\n if (token.tagName === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n\n if (!p.fragmentContext && p.openElements.currentTagName !== $.FRAMESET) {\n p.insertionMode = AFTER_FRAMESET_MODE;\n }\n }\n}\n\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\nfunction endTagAfterFrameset(p, token) {\n if (token.tagName === $.HTML) {\n p.insertionMode = AFTER_AFTER_FRAMESET_MODE;\n }\n}\n\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p, token);\n } else {\n tokenAfterAfterBody(p, token);\n }\n}\n\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = IN_BODY_MODE;\n p._processToken(token);\n}\n\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n const tn = token.tagName;\n\n if (tn === $.HTML) {\n startTagInBody(p, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p, token);\n }\n}\n\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\n\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\n\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token) && !p.fragmentContext) {\n while (\n p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.current)\n ) {\n p.openElements.pop();\n }\n\n p._processToken(token);\n } else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n } else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n\n foreignContent.adjustTokenXMLAttrs(token);\n\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n } else {\n p._insertElement(token, currentNs);\n }\n\n token.ackSelfClosing = true;\n }\n}\n\nfunction endTagInForeignContent(p, token) {\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._processToken(token);\n break;\n }\n\n if (p.treeAdapter.getTagName(element).toLowerCase() === token.tagName) {\n p.openElements.popUntilElementPopped(element);\n break;\n }\n }\n}\n","'use strict';\n\nconst HTML = require('../common/html');\n\n//Aliases\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\n\n//Element utils\n\n//OPTIMIZATION: Integer comparisons are low-cost, so we can use very fast tag name length filters here.\n//It's faster than using dictionary.\nfunction isImpliedEndTagRequired(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return tn === $.RB || tn === $.RP || tn === $.RT || tn === $.DD || tn === $.DT || tn === $.LI;\n\n case 3:\n return tn === $.RTC;\n\n case 6:\n return tn === $.OPTION;\n\n case 8:\n return tn === $.OPTGROUP;\n }\n\n return false;\n}\n\nfunction isImpliedEndTagRequiredThoroughly(tn) {\n switch (tn.length) {\n case 1:\n return tn === $.P;\n\n case 2:\n return (\n tn === $.RB ||\n tn === $.RP ||\n tn === $.RT ||\n tn === $.DD ||\n tn === $.DT ||\n tn === $.LI ||\n tn === $.TD ||\n tn === $.TH ||\n tn === $.TR\n );\n\n case 3:\n return tn === $.RTC;\n\n case 5:\n return tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD;\n\n case 6:\n return tn === $.OPTION;\n\n case 7:\n return tn === $.CAPTION;\n\n case 8:\n return tn === $.OPTGROUP || tn === $.COLGROUP;\n }\n\n return false;\n}\n\nfunction isScopingElement(tn, ns) {\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH) {\n return ns === NS.HTML;\n } else if (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS) {\n return ns === NS.MATHML;\n }\n\n break;\n\n case 4:\n if (tn === $.HTML) {\n return ns === NS.HTML;\n } else if (tn === $.DESC) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 5:\n if (tn === $.TABLE) {\n return ns === NS.HTML;\n } else if (tn === $.MTEXT) {\n return ns === NS.MATHML;\n } else if (tn === $.TITLE) {\n return ns === NS.SVG;\n }\n\n break;\n\n case 6:\n return (tn === $.APPLET || tn === $.OBJECT) && ns === NS.HTML;\n\n case 7:\n return (tn === $.CAPTION || tn === $.MARQUEE) && ns === NS.HTML;\n\n case 8:\n return tn === $.TEMPLATE && ns === NS.HTML;\n\n case 13:\n return tn === $.FOREIGN_OBJECT && ns === NS.SVG;\n\n case 14:\n return tn === $.ANNOTATION_XML && ns === NS.MATHML;\n }\n\n return false;\n}\n\n//Stack of open elements\nclass OpenElementStack {\n constructor(document, treeAdapter) {\n this.stackTop = -1;\n this.items = [];\n this.current = document;\n this.currentTagName = null;\n this.currentTmplContent = null;\n this.tmplCount = 0;\n this.treeAdapter = treeAdapter;\n }\n\n //Index of element\n _indexOf(element) {\n let idx = -1;\n\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n idx = i;\n break;\n }\n }\n return idx;\n }\n\n //Update current element\n _isInTemplate() {\n return this.currentTagName === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\n\n this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\n }\n\n //Mutations\n push(element) {\n this.items[++this.stackTop] = element;\n this._updateCurrentElement();\n\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n }\n\n pop() {\n this.stackTop--;\n\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n\n this._updateCurrentElement();\n }\n\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n\n this.items[idx] = newElement;\n\n if (idx === this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n insertAfter(referenceElement, newElement) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n\n this.items.splice(insertionIdx, 0, newElement);\n\n if (insertionIdx === ++this.stackTop) {\n this._updateCurrentElement();\n }\n }\n\n popUntilTagNamePopped(tagName) {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === tagName && ns === NS.HTML) {\n break;\n }\n }\n }\n\n popUntilElementPopped(element) {\n while (this.stackTop > -1) {\n const poppedElement = this.current;\n\n this.pop();\n\n if (poppedElement === element) {\n break;\n }\n }\n }\n\n popUntilNumberedHeaderPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (\n tn === $.H1 ||\n tn === $.H2 ||\n tn === $.H3 ||\n tn === $.H4 ||\n tn === $.H5 ||\n (tn === $.H6 && ns === NS.HTML)\n ) {\n break;\n }\n }\n }\n\n popUntilTableCellPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns = this.treeAdapter.getNamespaceURI(this.current);\n\n this.pop();\n\n if (tn === $.TD || (tn === $.TH && ns === NS.HTML)) {\n break;\n }\n }\n }\n\n popAllUpToHtmlElement() {\n //NOTE: here we assume that root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.stackTop = 0;\n this._updateCurrentElement();\n }\n\n clearBackToTableContext() {\n while (\n (this.currentTagName !== $.TABLE && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableBodyContext() {\n while (\n (this.currentTagName !== $.TBODY &&\n this.currentTagName !== $.TFOOT &&\n this.currentTagName !== $.THEAD &&\n this.currentTagName !== $.TEMPLATE &&\n this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n clearBackToTableRowContext() {\n while (\n (this.currentTagName !== $.TR && this.currentTagName !== $.TEMPLATE && this.currentTagName !== $.HTML) ||\n this.treeAdapter.getNamespaceURI(this.current) !== NS.HTML\n ) {\n this.pop();\n }\n }\n\n remove(element) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element) {\n this.items.splice(i, 1);\n this.stackTop--;\n this._updateCurrentElement();\n break;\n }\n }\n }\n\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n const element = this.items[1];\n\n return element && this.treeAdapter.getTagName(element) === $.BODY ? element : null;\n }\n\n contains(element) {\n return this._indexOf(element) > -1;\n }\n\n getCommonAncestor(element) {\n let elementIdx = this._indexOf(element);\n\n return --elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.currentTagName === $.HTML;\n }\n\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (\n (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) &&\n ns === NS.HTML\n ) {\n return true;\n }\n\n if (isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n\n if ((tn === $.BUTTON && ns === NS.HTML) || isScopingElement(tn, ns)) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n return true;\n }\n\n if (tn === $.TABLE || tn === $.HTML) {\n return false;\n }\n }\n\n return true;\n }\n\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n\n if (ns !== NS.HTML) {\n continue;\n }\n\n if (tn === tagName) {\n return true;\n }\n\n if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n return false;\n }\n }\n\n return true;\n }\n\n //Implied end tags\n generateImpliedEndTags() {\n while (isImpliedEndTagRequired(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsThoroughly() {\n while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {\n this.pop();\n }\n }\n\n generateImpliedEndTagsWithExclusion(exclusionTagName) {\n while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {\n this.pop();\n }\n }\n}\n\nmodule.exports = OpenElementStack;\n","'use strict';\n\nconst Preprocessor = require('./preprocessor');\nconst unicode = require('../common/unicode');\nconst neTree = require('./named-entity-data');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\nconst $$ = unicode.CODE_POINT_SEQUENCES;\n\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = {\n 0x80: 0x20ac,\n 0x82: 0x201a,\n 0x83: 0x0192,\n 0x84: 0x201e,\n 0x85: 0x2026,\n 0x86: 0x2020,\n 0x87: 0x2021,\n 0x88: 0x02c6,\n 0x89: 0x2030,\n 0x8a: 0x0160,\n 0x8b: 0x2039,\n 0x8c: 0x0152,\n 0x8e: 0x017d,\n 0x91: 0x2018,\n 0x92: 0x2019,\n 0x93: 0x201c,\n 0x94: 0x201d,\n 0x95: 0x2022,\n 0x96: 0x2013,\n 0x97: 0x2014,\n 0x98: 0x02dc,\n 0x99: 0x2122,\n 0x9a: 0x0161,\n 0x9b: 0x203a,\n 0x9c: 0x0153,\n 0x9e: 0x017e,\n 0x9f: 0x0178\n};\n\n// Named entity tree flags\nconst HAS_DATA_FLAG = 1 << 0;\nconst DATA_DUPLET_FLAG = 1 << 1;\nconst HAS_BRANCHES_FLAG = 1 << 2;\nconst MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;\n\n//States\nconst DATA_STATE = 'DATA_STATE';\nconst RCDATA_STATE = 'RCDATA_STATE';\nconst RAWTEXT_STATE = 'RAWTEXT_STATE';\nconst SCRIPT_DATA_STATE = 'SCRIPT_DATA_STATE';\nconst PLAINTEXT_STATE = 'PLAINTEXT_STATE';\nconst TAG_OPEN_STATE = 'TAG_OPEN_STATE';\nconst END_TAG_OPEN_STATE = 'END_TAG_OPEN_STATE';\nconst TAG_NAME_STATE = 'TAG_NAME_STATE';\nconst RCDATA_LESS_THAN_SIGN_STATE = 'RCDATA_LESS_THAN_SIGN_STATE';\nconst RCDATA_END_TAG_OPEN_STATE = 'RCDATA_END_TAG_OPEN_STATE';\nconst RCDATA_END_TAG_NAME_STATE = 'RCDATA_END_TAG_NAME_STATE';\nconst RAWTEXT_LESS_THAN_SIGN_STATE = 'RAWTEXT_LESS_THAN_SIGN_STATE';\nconst RAWTEXT_END_TAG_OPEN_STATE = 'RAWTEXT_END_TAG_OPEN_STATE';\nconst RAWTEXT_END_TAG_NAME_STATE = 'RAWTEXT_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_END_TAG_OPEN_STATE = 'SCRIPT_DATA_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_END_TAG_NAME_STATE = 'SCRIPT_DATA_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_ESCAPE_START_STATE = 'SCRIPT_DATA_ESCAPE_START_STATE';\nconst SCRIPT_DATA_ESCAPE_START_DASH_STATE = 'SCRIPT_DATA_ESCAPE_START_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_STATE = 'SCRIPT_DATA_ESCAPED_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE';\nconst SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = 'SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE';\nconst SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = 'SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE';\nconst BEFORE_ATTRIBUTE_NAME_STATE = 'BEFORE_ATTRIBUTE_NAME_STATE';\nconst ATTRIBUTE_NAME_STATE = 'ATTRIBUTE_NAME_STATE';\nconst AFTER_ATTRIBUTE_NAME_STATE = 'AFTER_ATTRIBUTE_NAME_STATE';\nconst BEFORE_ATTRIBUTE_VALUE_STATE = 'BEFORE_ATTRIBUTE_VALUE_STATE';\nconst ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = 'ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE';\nconst ATTRIBUTE_VALUE_UNQUOTED_STATE = 'ATTRIBUTE_VALUE_UNQUOTED_STATE';\nconst AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = 'AFTER_ATTRIBUTE_VALUE_QUOTED_STATE';\nconst SELF_CLOSING_START_TAG_STATE = 'SELF_CLOSING_START_TAG_STATE';\nconst BOGUS_COMMENT_STATE = 'BOGUS_COMMENT_STATE';\nconst MARKUP_DECLARATION_OPEN_STATE = 'MARKUP_DECLARATION_OPEN_STATE';\nconst COMMENT_START_STATE = 'COMMENT_START_STATE';\nconst COMMENT_START_DASH_STATE = 'COMMENT_START_DASH_STATE';\nconst COMMENT_STATE = 'COMMENT_STATE';\nconst COMMENT_LESS_THAN_SIGN_STATE = 'COMMENT_LESS_THAN_SIGN_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE';\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = 'COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE';\nconst COMMENT_END_DASH_STATE = 'COMMENT_END_DASH_STATE';\nconst COMMENT_END_STATE = 'COMMENT_END_STATE';\nconst COMMENT_END_BANG_STATE = 'COMMENT_END_BANG_STATE';\nconst DOCTYPE_STATE = 'DOCTYPE_STATE';\nconst BEFORE_DOCTYPE_NAME_STATE = 'BEFORE_DOCTYPE_NAME_STATE';\nconst DOCTYPE_NAME_STATE = 'DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_NAME_STATE = 'AFTER_DOCTYPE_NAME_STATE';\nconst AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = 'AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = 'AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE';\nconst BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = 'BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE';\nconst AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = 'AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE';\nconst BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE';\nconst DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = 'DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE';\nconst AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = 'AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE';\nconst BOGUS_DOCTYPE_STATE = 'BOGUS_DOCTYPE_STATE';\nconst CDATA_SECTION_STATE = 'CDATA_SECTION_STATE';\nconst CDATA_SECTION_BRACKET_STATE = 'CDATA_SECTION_BRACKET_STATE';\nconst CDATA_SECTION_END_STATE = 'CDATA_SECTION_END_STATE';\nconst CHARACTER_REFERENCE_STATE = 'CHARACTER_REFERENCE_STATE';\nconst NAMED_CHARACTER_REFERENCE_STATE = 'NAMED_CHARACTER_REFERENCE_STATE';\nconst AMBIGUOUS_AMPERSAND_STATE = 'AMBIGUOS_AMPERSAND_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_STATE = 'NUMERIC_CHARACTER_REFERENCE_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_START_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_START_STATE = 'DECIMAL_CHARACTER_REFERENCE_START_STATE';\nconst HEXADEMICAL_CHARACTER_REFERENCE_STATE = 'HEXADEMICAL_CHARACTER_REFERENCE_STATE';\nconst DECIMAL_CHARACTER_REFERENCE_STATE = 'DECIMAL_CHARACTER_REFERENCE_STATE';\nconst NUMERIC_CHARACTER_REFERENCE_END_STATE = 'NUMERIC_CHARACTER_REFERENCE_END_STATE';\n\n//Utils\n\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\n\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\n\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\n\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\n\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\n\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\n\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\n\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\n\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\n\nfunction toAsciiLowerCodePoint(cp) {\n return cp + 0x0020;\n}\n\n//NOTE: String.fromCharCode() function can handle only characters from BMP subset.\n//So, we need to workaround this manually.\n//(see: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode#Getting_it_to_work_with_higher_values)\nfunction toChar(cp) {\n if (cp <= 0xffff) {\n return String.fromCharCode(cp);\n }\n\n cp -= 0x10000;\n return String.fromCharCode(((cp >>> 10) & 0x3ff) | 0xd800) + String.fromCharCode(0xdc00 | (cp & 0x3ff));\n}\n\nfunction toAsciiLowerChar(cp) {\n return String.fromCharCode(toAsciiLowerCodePoint(cp));\n}\n\nfunction findNamedEntityTreeBranch(nodeIx, cp) {\n const branchCount = neTree[++nodeIx];\n let lo = ++nodeIx;\n let hi = lo + branchCount - 1;\n\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midCp = neTree[mid];\n\n if (midCp < cp) {\n lo = mid + 1;\n } else if (midCp > cp) {\n hi = mid - 1;\n } else {\n return neTree[mid + branchCount];\n }\n }\n\n return -1;\n}\n\n//Tokenizer\nclass Tokenizer {\n constructor() {\n this.preprocessor = new Preprocessor();\n\n this.tokenQueue = [];\n\n this.allowCDATA = false;\n\n this.state = DATA_STATE;\n this.returnState = '';\n\n this.charRefCode = -1;\n this.tempBuff = [];\n this.lastStartTagName = '';\n\n this.consumedAfterSnapshot = -1;\n this.active = false;\n\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = null;\n }\n\n //Errors\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _errOnNextCodePoint(err) {\n this._consume();\n this._err(err);\n this._unconsume();\n }\n\n //API\n getNextToken() {\n while (!this.tokenQueue.length && this.active) {\n this.consumedAfterSnapshot = 0;\n\n const cp = this._consume();\n\n if (!this._ensureHibernation()) {\n this[this.state](cp);\n }\n }\n\n return this.tokenQueue.shift();\n }\n\n write(chunk, isLastChunk) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n }\n\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {\n this.preprocessor.retreat();\n }\n\n this.active = false;\n this.tokenQueue.push({ type: Tokenizer.HIBERNATION_TOKEN });\n\n return true;\n }\n\n return false;\n }\n\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n\n _unconsume() {\n this.consumedAfterSnapshot--;\n this.preprocessor.retreat();\n }\n\n _reconsumeInState(state) {\n this.state = state;\n this._unconsume();\n }\n\n _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {\n let consumedCount = 0;\n let isMatch = true;\n const patternLength = pattern.length;\n let patternPos = 0;\n let cp = startCp;\n let patternCp = void 0;\n\n for (; patternPos < patternLength; patternPos++) {\n if (patternPos > 0) {\n cp = this._consume();\n consumedCount++;\n }\n\n if (cp === $.EOF) {\n isMatch = false;\n break;\n }\n\n patternCp = pattern[patternPos];\n\n if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n isMatch = false;\n break;\n }\n }\n\n if (!isMatch) {\n while (consumedCount--) {\n this._unconsume();\n }\n }\n\n return isMatch;\n }\n\n //Temp buffer\n _isTempBufferEqualToScriptString() {\n if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {\n return false;\n }\n\n for (let i = 0; i < this.tempBuff.length; i++) {\n if (this.tempBuff[i] !== $$.SCRIPT_STRING[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: Tokenizer.START_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n ackSelfClosing: false,\n attrs: []\n };\n }\n\n _createEndTagToken() {\n this.currentToken = {\n type: Tokenizer.END_TAG_TOKEN,\n tagName: '',\n selfClosing: false,\n attrs: []\n };\n }\n\n _createCommentToken() {\n this.currentToken = {\n type: Tokenizer.COMMENT_TOKEN,\n data: ''\n };\n }\n\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: Tokenizer.DOCTYPE_TOKEN,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null\n };\n }\n\n _createCharacterToken(type, ch) {\n this.currentCharacterToken = {\n type: type,\n chars: ch\n };\n }\n\n _createEOFToken() {\n this.currentToken = { type: Tokenizer.EOF_TOKEN };\n }\n\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: ''\n };\n }\n\n _leaveAttrName(toState) {\n if (Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {\n this.currentToken.attrs.push(this.currentAttr);\n } else {\n this._err(ERR.duplicateAttribute);\n }\n\n this.state = toState;\n }\n\n _leaveAttrValue(toState) {\n this.state = toState;\n }\n\n //Token emission\n _emitCurrentToken() {\n this._emitCurrentCharacterToken();\n\n const ct = this.currentToken;\n\n this.currentToken = null;\n\n //NOTE: store emited start tag's tagName to determine is the following end tag token is appropriate.\n if (ct.type === Tokenizer.START_TAG_TOKEN) {\n this.lastStartTagName = ct.tagName;\n } else if (ct.type === Tokenizer.END_TAG_TOKEN) {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n }\n\n this.tokenQueue.push(ct);\n }\n\n _emitCurrentCharacterToken() {\n if (this.currentCharacterToken) {\n this.tokenQueue.push(this.currentCharacterToken);\n this.currentCharacterToken = null;\n }\n }\n\n _emitEOFToken() {\n this._createEOFToken();\n this._emitCurrentToken();\n }\n\n //Characters emission\n\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)NULL_CHARACTER_TOKEN - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken && this.currentCharacterToken.type !== type) {\n this._emitCurrentCharacterToken();\n }\n\n if (this.currentCharacterToken) {\n this.currentCharacterToken.chars += ch;\n } else {\n this._createCharacterToken(type, ch);\n }\n }\n\n _emitCodePoint(cp) {\n let type = Tokenizer.CHARACTER_TOKEN;\n\n if (isWhitespace(cp)) {\n type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n } else if (cp === $.NULL) {\n type = Tokenizer.NULL_CHARACTER_TOKEN;\n }\n\n this._appendCharToCurrentCharacterToken(type, toChar(cp));\n }\n\n _emitSeveralCodePoints(codePoints) {\n for (let i = 0; i < codePoints.length; i++) {\n this._emitCodePoint(codePoints[i]);\n }\n }\n\n //NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.\n //So we can avoid additional checks here.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n }\n\n // Character reference helpers\n _matchNamedCharacterReference(startCp) {\n let result = null;\n let excess = 1;\n let i = findNamedEntityTreeBranch(0, startCp);\n\n this.tempBuff.push(startCp);\n\n while (i > -1) {\n const current = neTree[i];\n const inNode = current < MAX_BRANCH_MARKER_VALUE;\n const nodeWithData = inNode && current & HAS_DATA_FLAG;\n\n if (nodeWithData) {\n //NOTE: we use greedy search, so we continue lookup at this point\n result = current & DATA_DUPLET_FLAG ? [neTree[++i], neTree[++i]] : [neTree[++i]];\n excess = 0;\n }\n\n const cp = this._consume();\n\n this.tempBuff.push(cp);\n excess++;\n\n if (cp === $.EOF) {\n break;\n }\n\n if (inNode) {\n i = current & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i, cp) : -1;\n } else {\n i = cp === current ? ++i : -1;\n }\n }\n\n while (excess--) {\n this.tempBuff.pop();\n this._unconsume();\n }\n\n return result;\n }\n\n _isCharacterReferenceInAttribute() {\n return (\n this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE ||\n this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE\n );\n }\n\n _isCharacterReferenceAttributeQuirk(withSemicolon) {\n if (!withSemicolon && this._isCharacterReferenceInAttribute()) {\n const nextCp = this._consume();\n\n this._unconsume();\n\n return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n }\n\n return false;\n }\n\n _flushCodePointsConsumedAsCharacterReference() {\n if (this._isCharacterReferenceInAttribute()) {\n for (let i = 0; i < this.tempBuff.length; i++) {\n this.currentAttr.value += toChar(this.tempBuff[i]);\n }\n } else {\n this._emitSeveralCodePoints(this.tempBuff);\n }\n\n this.tempBuff = [];\n }\n\n // State machine\n\n // Data state\n //------------------------------------------------------------------\n [DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = TAG_OPEN_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = DATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RCDATA state\n //------------------------------------------------------------------\n [RCDATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.AMPERSAND) {\n this.returnState = RCDATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = RCDATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // RAWTEXT state\n //------------------------------------------------------------------\n [RAWTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data state\n //------------------------------------------------------------------\n [SCRIPT_DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // PLAINTEXT state\n //------------------------------------------------------------------\n [PLAINTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n\n if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Tag open state\n //------------------------------------------------------------------\n [TAG_OPEN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.state = MARKUP_DECLARATION_OPEN_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.QUESTION_MARK) {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this._reconsumeInState(DATA_STATE);\n }\n }\n\n // End tag open state\n //------------------------------------------------------------------\n [END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingEndTagName);\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n } else {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Tag name state\n //------------------------------------------------------------------\n [TAG_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.tagName += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentToken.tagName += toChar(cp);\n }\n }\n\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n [RCDATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RCDATA_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag open state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RCDATA end tag name state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n [RAWTEXT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = RAWTEXT_END_TAG_OPEN_STATE;\n } else {\n this._emitChars('<');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n\n // Script data less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = SCRIPT_DATA_ESCAPE_START_STATE;\n this._emitChars('<!');\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n } else if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPE_START_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escape start dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPE_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else {\n this._reconsumeInState(SCRIPT_DATA_STATE);\n }\n }\n\n // Script data escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this.tempBuff = [];\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n } else {\n this._emitChars('<');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n } else {\n this._emitChars('</');\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n\n this._emitChars('</');\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE\n : SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n\n // Script data double escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this._emitChars('-');\n } else if (cp === $.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars('<');\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars('>');\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode.REPLACEMENT_CHARACTER);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n this._emitChars('/');\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Script data double escape end state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString()\n ? SCRIPT_DATA_ESCAPED_STATE\n : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n\n // Before attribute name state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.EQUALS_SIGN) {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = ATTRIBUTE_NAME_STATE;\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Attribute name state\n //------------------------------------------------------------------\n [ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN || cp === $.EOF) {\n this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n this._unconsume();\n } else if (cp === $.EQUALS_SIGN) {\n this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n } else if (isAsciiUpper(cp)) {\n this.currentAttr.name += toAsciiLowerChar(cp);\n } else if (cp === $.QUOTATION_MARK || cp === $.APOSTROPHE || cp === $.LESS_THAN_SIGN) {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += toChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentAttr.name += toChar(cp);\n }\n }\n\n // After attribute name state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $.EQUALS_SIGN) {\n this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._createAttr('');\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Before attribute value state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingAttributeValue);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n }\n }\n\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += unicode.REPLACEMENT_CHARACTER;\n } else if (\n cp === $.QUOTATION_MARK ||\n cp === $.APOSTROPHE ||\n cp === $.LESS_THAN_SIGN ||\n cp === $.EQUALS_SIGN ||\n cp === $.GRAVE_ACCENT\n ) {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += toChar(cp);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $.SOLIDUS) {\n this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Self-closing start tag state\n //------------------------------------------------------------------\n [SELF_CLOSING_START_TAG_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.currentToken.selfClosing = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedSolidusInTag);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n\n // Bogus comment state\n //------------------------------------------------------------------\n [BOGUS_COMMENT_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Markup declaration open state\n //------------------------------------------------------------------\n [MARKUP_DECLARATION_OPEN_STATE](cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {\n this._createCommentToken();\n this.state = COMMENT_START_STATE;\n } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {\n this.state = DOCTYPE_STATE;\n } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {\n if (this.allowCDATA) {\n this.state = CDATA_SECTION_STATE;\n } else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken();\n this.currentToken.data = '[CDATA[';\n this.state = BOGUS_COMMENT_STATE;\n }\n }\n\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n\n // Comment start state\n //------------------------------------------------------------------\n [COMMENT_START_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_START_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment start dash state\n //------------------------------------------------------------------\n [COMMENT_START_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment state\n //------------------------------------------------------------------\n [COMMENT_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '<';\n this.state = COMMENT_LESS_THAN_SIGN_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.data += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n\n // Comment less-than sign state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $.EXCLAMATION_MARK) {\n this.currentToken.data += '!';\n this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;\n } else if (cp === $.LESS_THAN_SIGN) {\n this.currentToken.data += '!';\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_END_DASH_STATE);\n }\n }\n\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n\n this._reconsumeInState(COMMENT_END_STATE);\n }\n\n // Comment end dash state\n //------------------------------------------------------------------\n [COMMENT_END_DASH_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '-';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end state\n //------------------------------------------------------------------\n [COMMENT_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EXCLAMATION_MARK) {\n this.state = COMMENT_END_BANG_STATE;\n } else if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '-';\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // Comment end bang state\n //------------------------------------------------------------------\n [COMMENT_END_BANG_STATE](cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.currentToken.data += '--!';\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.incorrectlyClosedComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += '--!';\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n\n // DOCTYPE state\n //------------------------------------------------------------------\n [DOCTYPE_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n }\n }\n\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(toAsciiLowerChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER);\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._createDoctypeToken(toChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n }\n }\n\n // DOCTYPE name state\n //------------------------------------------------------------------\n [DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = AFTER_DOCTYPE_NAME_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.name += toAsciiLowerChar(cp);\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.name += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.name += toChar(cp);\n }\n }\n\n // After DOCTYPE name state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;\n } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.publicId = '';\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.publicId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.QUOTATION_MARK) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.QUOTATION_MARK) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $.APOSTROPHE) {\n this.currentToken.systemId = '';\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n this.currentToken.systemId += unicode.REPLACEMENT_CHARACTER;\n } else if (cp === $.GREATER_THAN_SIGN) {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n [BOGUS_DOCTYPE_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $.NULL) {\n this._err(ERR.unexpectedNullCharacter);\n } else if (cp === $.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n }\n }\n\n // CDATA section state\n //------------------------------------------------------------------\n [CDATA_SECTION_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_BRACKET_STATE;\n } else if (cp === $.EOF) {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n\n // CDATA section bracket state\n //------------------------------------------------------------------\n [CDATA_SECTION_BRACKET_STATE](cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_END_STATE;\n } else {\n this._emitChars(']');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // CDATA section end state\n //------------------------------------------------------------------\n [CDATA_SECTION_END_STATE](cp) {\n if (cp === $.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n } else if (cp === $.RIGHT_SQUARE_BRACKET) {\n this._emitChars(']');\n } else {\n this._emitChars(']]');\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n\n // Character reference state\n //------------------------------------------------------------------\n [CHARACTER_REFERENCE_STATE](cp) {\n this.tempBuff = [$.AMPERSAND];\n\n if (cp === $.NUMBER_SIGN) {\n this.tempBuff.push(cp);\n this.state = NUMERIC_CHARACTER_REFERENCE_STATE;\n } else if (isAsciiAlphaNumeric(cp)) {\n this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Named character reference state\n //------------------------------------------------------------------\n [NAMED_CHARACTER_REFERENCE_STATE](cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n\n //NOTE: matching can be abrupted by hibernation. In that case match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n this.tempBuff = [$.AMPERSAND];\n } else if (matchResult) {\n const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $.SEMICOLON;\n\n if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {\n if (!withSemicolon) {\n this._errOnNextCodePoint(ERR.missingSemicolonAfterCharacterReference);\n }\n\n this.tempBuff = matchResult;\n }\n\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = this.returnState;\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = AMBIGUOUS_AMPERSAND_STATE;\n }\n }\n\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n [AMBIGUOUS_AMPERSAND_STATE](cp) {\n if (isAsciiAlphaNumeric(cp)) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += toChar(cp);\n } else {\n this._emitCodePoint(cp);\n }\n } else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Numeric character reference state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {\n this.charRefCode = 0;\n\n if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n this.tempBuff.push(cp);\n this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;\n } else {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);\n }\n }\n\n // Hexademical character reference start state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiHexDigit(cp)) {\n this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Decimal character reference start state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n\n // Hexademical character reference state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n } else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n } else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Decimal character reference state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n } else if (cp === $.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n\n // Numeric character reference end state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {\n if (this.charRefCode === $.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (this.charRefCode > 0x10ffff) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n } else if (unicode.isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n } else if (unicode.isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS[this.charRefCode];\n\n if (replacement) {\n this.charRefCode = replacement;\n }\n }\n\n this.tempBuff = [this.charRefCode];\n\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n}\n\n//Token types\nTokenizer.CHARACTER_TOKEN = 'CHARACTER_TOKEN';\nTokenizer.NULL_CHARACTER_TOKEN = 'NULL_CHARACTER_TOKEN';\nTokenizer.WHITESPACE_CHARACTER_TOKEN = 'WHITESPACE_CHARACTER_TOKEN';\nTokenizer.START_TAG_TOKEN = 'START_TAG_TOKEN';\nTokenizer.END_TAG_TOKEN = 'END_TAG_TOKEN';\nTokenizer.COMMENT_TOKEN = 'COMMENT_TOKEN';\nTokenizer.DOCTYPE_TOKEN = 'DOCTYPE_TOKEN';\nTokenizer.EOF_TOKEN = 'EOF_TOKEN';\nTokenizer.HIBERNATION_TOKEN = 'HIBERNATION_TOKEN';\n\n//Tokenizer initial states for different modes\nTokenizer.MODE = {\n DATA: DATA_STATE,\n RCDATA: RCDATA_STATE,\n RAWTEXT: RAWTEXT_STATE,\n SCRIPT_DATA: SCRIPT_DATA_STATE,\n PLAINTEXT: PLAINTEXT_STATE\n};\n\n//Static\nTokenizer.getTokenAttr = function(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n\n return null;\n};\n\nmodule.exports = Tokenizer;\n","'use strict';\n\n//NOTE: this file contains auto-generated array mapped radix tree that is used for the named entity references consumption\n//(details: https://github.com/inikulin/parse5/tree/master/scripts/generate-named-entity-data/README.md)\nmodule.exports = new Uint16Array([4,52,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,106,303,412,810,1432,1701,1796,1987,2114,2360,2420,2484,3170,3251,4140,4393,4575,4610,5106,5512,5728,6117,6274,6315,6345,6427,6516,7002,7910,8733,9323,9870,10170,10631,10893,11318,11386,11467,12773,13092,14474,14922,15448,15542,16419,17666,18166,18611,19004,19095,19298,19397,4,16,69,77,97,98,99,102,103,108,109,110,111,112,114,115,116,117,140,150,158,169,176,194,199,210,216,222,226,242,256,266,283,294,108,105,103,5,198,1,59,148,1,198,80,5,38,1,59,156,1,38,99,117,116,101,5,193,1,59,167,1,193,114,101,118,101,59,1,258,4,2,105,121,182,191,114,99,5,194,1,59,189,1,194,59,1,1040,114,59,3,55349,56580,114,97,118,101,5,192,1,59,208,1,192,112,104,97,59,1,913,97,99,114,59,1,256,100,59,1,10835,4,2,103,112,232,237,111,110,59,1,260,102,59,3,55349,56632,112,108,121,70,117,110,99,116,105,111,110,59,1,8289,105,110,103,5,197,1,59,264,1,197,4,2,99,115,272,277,114,59,3,55349,56476,105,103,110,59,1,8788,105,108,100,101,5,195,1,59,292,1,195,109,108,5,196,1,59,301,1,196,4,8,97,99,101,102,111,114,115,117,321,350,354,383,388,394,400,405,4,2,99,114,327,336,107,115,108,97,115,104,59,1,8726,4,2,118,119,342,345,59,1,10983,101,100,59,1,8966,121,59,1,1041,4,3,99,114,116,362,369,379,97,117,115,101,59,1,8757,110,111,117,108,108,105,115,59,1,8492,97,59,1,914,114,59,3,55349,56581,112,102,59,3,55349,56633,101,118,101,59,1,728,99,114,59,1,8492,109,112,101,113,59,1,8782,4,14,72,79,97,99,100,101,102,104,105,108,111,114,115,117,442,447,456,504,542,547,569,573,577,616,678,784,790,796,99,121,59,1,1063,80,89,5,169,1,59,454,1,169,4,3,99,112,121,464,470,497,117,116,101,59,1,262,4,2,59,105,476,478,1,8914,116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,59,1,8517,108,101,121,115,59,1,8493,4,4,97,101,105,111,514,520,530,535,114,111,110,59,1,268,100,105,108,5,199,1,59,528,1,199,114,99,59,1,264,110,105,110,116,59,1,8752,111,116,59,1,266,4,2,100,110,553,560,105,108,108,97,59,1,184,116,101,114,68,111,116,59,1,183,114,59,1,8493,105,59,1,935,114,99,108,101,4,4,68,77,80,84,591,596,603,609,111,116,59,1,8857,105,110,117,115,59,1,8854,108,117,115,59,1,8853,105,109,101,115,59,1,8855,111,4,2,99,115,623,646,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8754,101,67,117,114,108,121,4,2,68,81,658,671,111,117,98,108,101,81,117,111,116,101,59,1,8221,117,111,116,101,59,1,8217,4,4,108,110,112,117,688,701,736,753,111,110,4,2,59,101,696,698,1,8759,59,1,10868,4,3,103,105,116,709,717,722,114,117,101,110,116,59,1,8801,110,116,59,1,8751,111,117,114,73,110,116,101,103,114,97,108,59,1,8750,4,2,102,114,742,745,59,1,8450,111,100,117,99,116,59,1,8720,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8755,111,115,115,59,1,10799,99,114,59,3,55349,56478,112,4,2,59,67,803,805,1,8915,97,112,59,1,8781,4,11,68,74,83,90,97,99,101,102,105,111,115,834,850,855,860,865,888,903,916,921,1011,1415,4,2,59,111,840,842,1,8517,116,114,97,104,100,59,1,10513,99,121,59,1,1026,99,121,59,1,1029,99,121,59,1,1039,4,3,103,114,115,873,879,883,103,101,114,59,1,8225,114,59,1,8609,104,118,59,1,10980,4,2,97,121,894,900,114,111,110,59,1,270,59,1,1044,108,4,2,59,116,910,912,1,8711,97,59,1,916,114,59,3,55349,56583,4,2,97,102,927,998,4,2,99,109,933,992,114,105,116,105,99,97,108,4,4,65,68,71,84,950,957,978,985,99,117,116,101,59,1,180,111,4,2,116,117,964,967,59,1,729,98,108,101,65,99,117,116,101,59,1,733,114,97,118,101,59,1,96,105,108,100,101,59,1,732,111,110,100,59,1,8900,102,101,114,101,110,116,105,97,108,68,59,1,8518,4,4,112,116,117,119,1021,1026,1048,1249,102,59,3,55349,56635,4,3,59,68,69,1034,1036,1041,1,168,111,116,59,1,8412,113,117,97,108,59,1,8784,98,108,101,4,6,67,68,76,82,85,86,1065,1082,1101,1189,1211,1236,111,110,116,111,117,114,73,110,116,101,103,114,97,108,59,1,8751,111,4,2,116,119,1089,1092,59,1,168,110,65,114,114,111,119,59,1,8659,4,2,101,111,1107,1141,102,116,4,3,65,82,84,1117,1124,1136,114,114,111,119,59,1,8656,105,103,104,116,65,114,114,111,119,59,1,8660,101,101,59,1,10980,110,103,4,2,76,82,1149,1177,101,102,116,4,2,65,82,1158,1165,114,114,111,119,59,1,10232,105,103,104,116,65,114,114,111,119,59,1,10234,105,103,104,116,65,114,114,111,119,59,1,10233,105,103,104,116,4,2,65,84,1199,1206,114,114,111,119,59,1,8658,101,101,59,1,8872,112,4,2,65,68,1218,1225,114,114,111,119,59,1,8657,111,119,110,65,114,114,111,119,59,1,8661,101,114,116,105,99,97,108,66,97,114,59,1,8741,110,4,6,65,66,76,82,84,97,1264,1292,1299,1352,1391,1408,114,114,111,119,4,3,59,66,85,1276,1278,1283,1,8595,97,114,59,1,10515,112,65,114,114,111,119,59,1,8693,114,101,118,101,59,1,785,101,102,116,4,3,82,84,86,1310,1323,1334,105,103,104,116,86,101,99,116,111,114,59,1,10576,101,101,86,101,99,116,111,114,59,1,10590,101,99,116,111,114,4,2,59,66,1345,1347,1,8637,97,114,59,1,10582,105,103,104,116,4,2,84,86,1362,1373,101,101,86,101,99,116,111,114,59,1,10591,101,99,116,111,114,4,2,59,66,1384,1386,1,8641,97,114,59,1,10583,101,101,4,2,59,65,1399,1401,1,8868,114,114,111,119,59,1,8615,114,114,111,119,59,1,8659,4,2,99,116,1421,1426,114,59,3,55349,56479,114,111,107,59,1,272,4,16,78,84,97,99,100,102,103,108,109,111,112,113,115,116,117,120,1466,1470,1478,1489,1515,1520,1525,1536,1544,1593,1609,1617,1650,1664,1668,1677,71,59,1,330,72,5,208,1,59,1476,1,208,99,117,116,101,5,201,1,59,1487,1,201,4,3,97,105,121,1497,1503,1512,114,111,110,59,1,282,114,99,5,202,1,59,1510,1,202,59,1,1069,111,116,59,1,278,114,59,3,55349,56584,114,97,118,101,5,200,1,59,1534,1,200,101,109,101,110,116,59,1,8712,4,2,97,112,1550,1555,99,114,59,1,274,116,121,4,2,83,86,1563,1576,109,97,108,108,83,113,117,97,114,101,59,1,9723,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9643,4,2,103,112,1599,1604,111,110,59,1,280,102,59,3,55349,56636,115,105,108,111,110,59,1,917,117,4,2,97,105,1624,1640,108,4,2,59,84,1631,1633,1,10869,105,108,100,101,59,1,8770,108,105,98,114,105,117,109,59,1,8652,4,2,99,105,1656,1660,114,59,1,8496,109,59,1,10867,97,59,1,919,109,108,5,203,1,59,1675,1,203,4,2,105,112,1683,1689,115,116,115,59,1,8707,111,110,101,110,116,105,97,108,69,59,1,8519,4,5,99,102,105,111,115,1713,1717,1722,1762,1791,121,59,1,1060,114,59,3,55349,56585,108,108,101,100,4,2,83,86,1732,1745,109,97,108,108,83,113,117,97,114,101,59,1,9724,101,114,121,83,109,97,108,108,83,113,117,97,114,101,59,1,9642,4,3,112,114,117,1770,1775,1781,102,59,3,55349,56637,65,108,108,59,1,8704,114,105,101,114,116,114,102,59,1,8497,99,114,59,1,8497,4,12,74,84,97,98,99,100,102,103,111,114,115,116,1822,1827,1834,1848,1855,1877,1882,1887,1890,1896,1978,1984,99,121,59,1,1027,5,62,1,59,1832,1,62,109,109,97,4,2,59,100,1843,1845,1,915,59,1,988,114,101,118,101,59,1,286,4,3,101,105,121,1863,1869,1874,100,105,108,59,1,290,114,99,59,1,284,59,1,1043,111,116,59,1,288,114,59,3,55349,56586,59,1,8921,112,102,59,3,55349,56638,101,97,116,101,114,4,6,69,70,71,76,83,84,1915,1933,1944,1953,1959,1971,113,117,97,108,4,2,59,76,1925,1927,1,8805,101,115,115,59,1,8923,117,108,108,69,113,117,97,108,59,1,8807,114,101,97,116,101,114,59,1,10914,101,115,115,59,1,8823,108,97,110,116,69,113,117,97,108,59,1,10878,105,108,100,101,59,1,8819,99,114,59,3,55349,56482,59,1,8811,4,8,65,97,99,102,105,111,115,117,2005,2012,2026,2032,2036,2049,2073,2089,82,68,99,121,59,1,1066,4,2,99,116,2018,2023,101,107,59,1,711,59,1,94,105,114,99,59,1,292,114,59,1,8460,108,98,101,114,116,83,112,97,99,101,59,1,8459,4,2,112,114,2055,2059,102,59,1,8461,105,122,111,110,116,97,108,76,105,110,101,59,1,9472,4,2,99,116,2079,2083,114,59,1,8459,114,111,107,59,1,294,109,112,4,2,68,69,2097,2107,111,119,110,72,117,109,112,59,1,8782,113,117,97,108,59,1,8783,4,14,69,74,79,97,99,100,102,103,109,110,111,115,116,117,2144,2149,2155,2160,2171,2189,2194,2198,2209,2245,2307,2329,2334,2341,99,121,59,1,1045,108,105,103,59,1,306,99,121,59,1,1025,99,117,116,101,5,205,1,59,2169,1,205,4,2,105,121,2177,2186,114,99,5,206,1,59,2184,1,206,59,1,1048,111,116,59,1,304,114,59,1,8465,114,97,118,101,5,204,1,59,2207,1,204,4,3,59,97,112,2217,2219,2238,1,8465,4,2,99,103,2225,2229,114,59,1,298,105,110,97,114,121,73,59,1,8520,108,105,101,115,59,1,8658,4,2,116,118,2251,2281,4,2,59,101,2257,2259,1,8748,4,2,103,114,2265,2271,114,97,108,59,1,8747,115,101,99,116,105,111,110,59,1,8898,105,115,105,98,108,101,4,2,67,84,2293,2300,111,109,109,97,59,1,8291,105,109,101,115,59,1,8290,4,3,103,112,116,2315,2320,2325,111,110,59,1,302,102,59,3,55349,56640,97,59,1,921,99,114,59,1,8464,105,108,100,101,59,1,296,4,2,107,109,2347,2352,99,121,59,1,1030,108,5,207,1,59,2358,1,207,4,5,99,102,111,115,117,2372,2386,2391,2397,2414,4,2,105,121,2378,2383,114,99,59,1,308,59,1,1049,114,59,3,55349,56589,112,102,59,3,55349,56641,4,2,99,101,2403,2408,114,59,3,55349,56485,114,99,121,59,1,1032,107,99,121,59,1,1028,4,7,72,74,97,99,102,111,115,2436,2441,2446,2452,2467,2472,2478,99,121,59,1,1061,99,121,59,1,1036,112,112,97,59,1,922,4,2,101,121,2458,2464,100,105,108,59,1,310,59,1,1050,114,59,3,55349,56590,112,102,59,3,55349,56642,99,114,59,3,55349,56486,4,11,74,84,97,99,101,102,108,109,111,115,116,2508,2513,2520,2562,2585,2981,2986,3004,3011,3146,3167,99,121,59,1,1033,5,60,1,59,2518,1,60,4,5,99,109,110,112,114,2532,2538,2544,2548,2558,117,116,101,59,1,313,98,100,97,59,1,923,103,59,1,10218,108,97,99,101,116,114,102,59,1,8466,114,59,1,8606,4,3,97,101,121,2570,2576,2582,114,111,110,59,1,317,100,105,108,59,1,315,59,1,1051,4,2,102,115,2591,2907,116,4,10,65,67,68,70,82,84,85,86,97,114,2614,2663,2672,2728,2735,2760,2820,2870,2888,2895,4,2,110,114,2620,2633,103,108,101,66,114,97,99,107,101,116,59,1,10216,114,111,119,4,3,59,66,82,2644,2646,2651,1,8592,97,114,59,1,8676,105,103,104,116,65,114,114,111,119,59,1,8646,101,105,108,105,110,103,59,1,8968,111,4,2,117,119,2679,2692,98,108,101,66,114,97,99,107,101,116,59,1,10214,110,4,2,84,86,2699,2710,101,101,86,101,99,116,111,114,59,1,10593,101,99,116,111,114,4,2,59,66,2721,2723,1,8643,97,114,59,1,10585,108,111,111,114,59,1,8970,105,103,104,116,4,2,65,86,2745,2752,114,114,111,119,59,1,8596,101,99,116,111,114,59,1,10574,4,2,101,114,2766,2792,101,4,3,59,65,86,2775,2777,2784,1,8867,114,114,111,119,59,1,8612,101,99,116,111,114,59,1,10586,105,97,110,103,108,101,4,3,59,66,69,2806,2808,2813,1,8882,97,114,59,1,10703,113,117,97,108,59,1,8884,112,4,3,68,84,86,2829,2841,2852,111,119,110,86,101,99,116,111,114,59,1,10577,101,101,86,101,99,116,111,114,59,1,10592,101,99,116,111,114,4,2,59,66,2863,2865,1,8639,97,114,59,1,10584,101,99,116,111,114,4,2,59,66,2881,2883,1,8636,97,114,59,1,10578,114,114,111,119,59,1,8656,105,103,104,116,97,114,114,111,119,59,1,8660,115,4,6,69,70,71,76,83,84,2922,2936,2947,2956,2962,2974,113,117,97,108,71,114,101,97,116,101,114,59,1,8922,117,108,108,69,113,117,97,108,59,1,8806,114,101,97,116,101,114,59,1,8822,101,115,115,59,1,10913,108,97,110,116,69,113,117,97,108,59,1,10877,105,108,100,101,59,1,8818,114,59,3,55349,56591,4,2,59,101,2992,2994,1,8920,102,116,97,114,114,111,119,59,1,8666,105,100,111,116,59,1,319,4,3,110,112,119,3019,3110,3115,103,4,4,76,82,108,114,3030,3058,3070,3098,101,102,116,4,2,65,82,3039,3046,114,114,111,119,59,1,10229,105,103,104,116,65,114,114,111,119,59,1,10231,105,103,104,116,65,114,114,111,119,59,1,10230,101,102,116,4,2,97,114,3079,3086,114,114,111,119,59,1,10232,105,103,104,116,97,114,114,111,119,59,1,10234,105,103,104,116,97,114,114,111,119,59,1,10233,102,59,3,55349,56643,101,114,4,2,76,82,3123,3134,101,102,116,65,114,114,111,119,59,1,8601,105,103,104,116,65,114,114,111,119,59,1,8600,4,3,99,104,116,3154,3158,3161,114,59,1,8466,59,1,8624,114,111,107,59,1,321,59,1,8810,4,8,97,99,101,102,105,111,115,117,3188,3192,3196,3222,3227,3237,3243,3248,112,59,1,10501,121,59,1,1052,4,2,100,108,3202,3213,105,117,109,83,112,97,99,101,59,1,8287,108,105,110,116,114,102,59,1,8499,114,59,3,55349,56592,110,117,115,80,108,117,115,59,1,8723,112,102,59,3,55349,56644,99,114,59,1,8499,59,1,924,4,9,74,97,99,101,102,111,115,116,117,3271,3276,3283,3306,3422,3427,4120,4126,4137,99,121,59,1,1034,99,117,116,101,59,1,323,4,3,97,101,121,3291,3297,3303,114,111,110,59,1,327,100,105,108,59,1,325,59,1,1053,4,3,103,115,119,3314,3380,3415,97,116,105,118,101,4,3,77,84,86,3327,3340,3365,101,100,105,117,109,83,112,97,99,101,59,1,8203,104,105,4,2,99,110,3348,3357,107,83,112,97,99,101,59,1,8203,83,112,97,99,101,59,1,8203,101,114,121,84,104,105,110,83,112,97,99,101,59,1,8203,116,101,100,4,2,71,76,3389,3405,114,101,97,116,101,114,71,114,101,97,116,101,114,59,1,8811,101,115,115,76,101,115,115,59,1,8810,76,105,110,101,59,1,10,114,59,3,55349,56593,4,4,66,110,112,116,3437,3444,3460,3464,114,101,97,107,59,1,8288,66,114,101,97,107,105,110,103,83,112,97,99,101,59,1,160,102,59,1,8469,4,13,59,67,68,69,71,72,76,78,80,82,83,84,86,3492,3494,3517,3536,3578,3657,3685,3784,3823,3860,3915,4066,4107,1,10988,4,2,111,117,3500,3510,110,103,114,117,101,110,116,59,1,8802,112,67,97,112,59,1,8813,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,114,59,1,8742,4,3,108,113,120,3544,3552,3571,101,109,101,110,116,59,1,8713,117,97,108,4,2,59,84,3561,3563,1,8800,105,108,100,101,59,3,8770,824,105,115,116,115,59,1,8708,114,101,97,116,101,114,4,7,59,69,70,71,76,83,84,3600,3602,3609,3621,3631,3637,3650,1,8815,113,117,97,108,59,1,8817,117,108,108,69,113,117,97,108,59,3,8807,824,114,101,97,116,101,114,59,3,8811,824,101,115,115,59,1,8825,108,97,110,116,69,113,117,97,108,59,3,10878,824,105,108,100,101,59,1,8821,117,109,112,4,2,68,69,3666,3677,111,119,110,72,117,109,112,59,3,8782,824,113,117,97,108,59,3,8783,824,101,4,2,102,115,3692,3724,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3709,3711,3717,1,8938,97,114,59,3,10703,824,113,117,97,108,59,1,8940,115,4,6,59,69,71,76,83,84,3739,3741,3748,3757,3764,3777,1,8814,113,117,97,108,59,1,8816,114,101,97,116,101,114,59,1,8824,101,115,115,59,3,8810,824,108,97,110,116,69,113,117,97,108,59,3,10877,824,105,108,100,101,59,1,8820,101,115,116,101,100,4,2,71,76,3795,3812,114,101,97,116,101,114,71,114,101,97,116,101,114,59,3,10914,824,101,115,115,76,101,115,115,59,3,10913,824,114,101,99,101,100,101,115,4,3,59,69,83,3838,3840,3848,1,8832,113,117,97,108,59,3,10927,824,108,97,110,116,69,113,117,97,108,59,1,8928,4,2,101,105,3866,3881,118,101,114,115,101,69,108,101,109,101,110,116,59,1,8716,103,104,116,84,114,105,97,110,103,108,101,4,3,59,66,69,3900,3902,3908,1,8939,97,114,59,3,10704,824,113,117,97,108,59,1,8941,4,2,113,117,3921,3973,117,97,114,101,83,117,4,2,98,112,3933,3952,115,101,116,4,2,59,69,3942,3945,3,8847,824,113,117,97,108,59,1,8930,101,114,115,101,116,4,2,59,69,3963,3966,3,8848,824,113,117,97,108,59,1,8931,4,3,98,99,112,3981,4000,4045,115,101,116,4,2,59,69,3990,3993,3,8834,8402,113,117,97,108,59,1,8840,99,101,101,100,115,4,4,59,69,83,84,4015,4017,4025,4037,1,8833,113,117,97,108,59,3,10928,824,108,97,110,116,69,113,117,97,108,59,1,8929,105,108,100,101,59,3,8831,824,101,114,115,101,116,4,2,59,69,4056,4059,3,8835,8402,113,117,97,108,59,1,8841,105,108,100,101,4,4,59,69,70,84,4080,4082,4089,4100,1,8769,113,117,97,108,59,1,8772,117,108,108,69,113,117,97,108,59,1,8775,105,108,100,101,59,1,8777,101,114,116,105,99,97,108,66,97,114,59,1,8740,99,114,59,3,55349,56489,105,108,100,101,5,209,1,59,4135,1,209,59,1,925,4,14,69,97,99,100,102,103,109,111,112,114,115,116,117,118,4170,4176,4187,4205,4212,4217,4228,4253,4259,4292,4295,4316,4337,4346,108,105,103,59,1,338,99,117,116,101,5,211,1,59,4185,1,211,4,2,105,121,4193,4202,114,99,5,212,1,59,4200,1,212,59,1,1054,98,108,97,99,59,1,336,114,59,3,55349,56594,114,97,118,101,5,210,1,59,4226,1,210,4,3,97,101,105,4236,4241,4246,99,114,59,1,332,103,97,59,1,937,99,114,111,110,59,1,927,112,102,59,3,55349,56646,101,110,67,117,114,108,121,4,2,68,81,4272,4285,111,117,98,108,101,81,117,111,116,101,59,1,8220,117,111,116,101,59,1,8216,59,1,10836,4,2,99,108,4301,4306,114,59,3,55349,56490,97,115,104,5,216,1,59,4314,1,216,105,4,2,108,109,4323,4332,100,101,5,213,1,59,4330,1,213,101,115,59,1,10807,109,108,5,214,1,59,4344,1,214,101,114,4,2,66,80,4354,4380,4,2,97,114,4360,4364,114,59,1,8254,97,99,4,2,101,107,4372,4375,59,1,9182,101,116,59,1,9140,97,114,101,110,116,104,101,115,105,115,59,1,9180,4,9,97,99,102,104,105,108,111,114,115,4413,4422,4426,4431,4435,4438,4448,4471,4561,114,116,105,97,108,68,59,1,8706,121,59,1,1055,114,59,3,55349,56595,105,59,1,934,59,1,928,117,115,77,105,110,117,115,59,1,177,4,2,105,112,4454,4467,110,99,97,114,101,112,108,97,110,101,59,1,8460,102,59,1,8473,4,4,59,101,105,111,4481,4483,4526,4531,1,10939,99,101,100,101,115,4,4,59,69,83,84,4498,4500,4507,4519,1,8826,113,117,97,108,59,1,10927,108,97,110,116,69,113,117,97,108,59,1,8828,105,108,100,101,59,1,8830,109,101,59,1,8243,4,2,100,112,4537,4543,117,99,116,59,1,8719,111,114,116,105,111,110,4,2,59,97,4555,4557,1,8759,108,59,1,8733,4,2,99,105,4567,4572,114,59,3,55349,56491,59,1,936,4,4,85,102,111,115,4585,4594,4599,4604,79,84,5,34,1,59,4592,1,34,114,59,3,55349,56596,112,102,59,1,8474,99,114,59,3,55349,56492,4,12,66,69,97,99,101,102,104,105,111,114,115,117,4636,4642,4650,4681,4704,4763,4767,4771,5047,5069,5081,5094,97,114,114,59,1,10512,71,5,174,1,59,4648,1,174,4,3,99,110,114,4658,4664,4668,117,116,101,59,1,340,103,59,1,10219,114,4,2,59,116,4675,4677,1,8608,108,59,1,10518,4,3,97,101,121,4689,4695,4701,114,111,110,59,1,344,100,105,108,59,1,342,59,1,1056,4,2,59,118,4710,4712,1,8476,101,114,115,101,4,2,69,85,4722,4748,4,2,108,113,4728,4736,101,109,101,110,116,59,1,8715,117,105,108,105,98,114,105,117,109,59,1,8651,112,69,113,117,105,108,105,98,114,105,117,109,59,1,10607,114,59,1,8476,111,59,1,929,103,104,116,4,8,65,67,68,70,84,85,86,97,4792,4840,4849,4905,4912,4972,5022,5040,4,2,110,114,4798,4811,103,108,101,66,114,97,99,107,101,116,59,1,10217,114,111,119,4,3,59,66,76,4822,4824,4829,1,8594,97,114,59,1,8677,101,102,116,65,114,114,111,119,59,1,8644,101,105,108,105,110,103,59,1,8969,111,4,2,117,119,4856,4869,98,108,101,66,114,97,99,107,101,116,59,1,10215,110,4,2,84,86,4876,4887,101,101,86,101,99,116,111,114,59,1,10589,101,99,116,111,114,4,2,59,66,4898,4900,1,8642,97,114,59,1,10581,108,111,111,114,59,1,8971,4,2,101,114,4918,4944,101,4,3,59,65,86,4927,4929,4936,1,8866,114,114,111,119,59,1,8614,101,99,116,111,114,59,1,10587,105,97,110,103,108,101,4,3,59,66,69,4958,4960,4965,1,8883,97,114,59,1,10704,113,117,97,108,59,1,8885,112,4,3,68,84,86,4981,4993,5004,111,119,110,86,101,99,116,111,114,59,1,10575,101,101,86,101,99,116,111,114,59,1,10588,101,99,116,111,114,4,2,59,66,5015,5017,1,8638,97,114,59,1,10580,101,99,116,111,114,4,2,59,66,5033,5035,1,8640,97,114,59,1,10579,114,114,111,119,59,1,8658,4,2,112,117,5053,5057,102,59,1,8477,110,100,73,109,112,108,105,101,115,59,1,10608,105,103,104,116,97,114,114,111,119,59,1,8667,4,2,99,104,5087,5091,114,59,1,8475,59,1,8625,108,101,68,101,108,97,121,101,100,59,1,10740,4,13,72,79,97,99,102,104,105,109,111,113,115,116,117,5134,5150,5157,5164,5198,5203,5259,5265,5277,5283,5374,5380,5385,4,2,67,99,5140,5146,72,99,121,59,1,1065,121,59,1,1064,70,84,99,121,59,1,1068,99,117,116,101,59,1,346,4,5,59,97,101,105,121,5176,5178,5184,5190,5195,1,10940,114,111,110,59,1,352,100,105,108,59,1,350,114,99,59,1,348,59,1,1057,114,59,3,55349,56598,111,114,116,4,4,68,76,82,85,5216,5227,5238,5250,111,119,110,65,114,114,111,119,59,1,8595,101,102,116,65,114,114,111,119,59,1,8592,105,103,104,116,65,114,114,111,119,59,1,8594,112,65,114,114,111,119,59,1,8593,103,109,97,59,1,931,97,108,108,67,105,114,99,108,101,59,1,8728,112,102,59,3,55349,56650,4,2,114,117,5289,5293,116,59,1,8730,97,114,101,4,4,59,73,83,85,5306,5308,5322,5367,1,9633,110,116,101,114,115,101,99,116,105,111,110,59,1,8851,117,4,2,98,112,5329,5347,115,101,116,4,2,59,69,5338,5340,1,8847,113,117,97,108,59,1,8849,101,114,115,101,116,4,2,59,69,5358,5360,1,8848,113,117,97,108,59,1,8850,110,105,111,110,59,1,8852,99,114,59,3,55349,56494,97,114,59,1,8902,4,4,98,99,109,112,5395,5420,5475,5478,4,2,59,115,5401,5403,1,8912,101,116,4,2,59,69,5411,5413,1,8912,113,117,97,108,59,1,8838,4,2,99,104,5426,5468,101,101,100,115,4,4,59,69,83,84,5440,5442,5449,5461,1,8827,113,117,97,108,59,1,10928,108,97,110,116,69,113,117,97,108,59,1,8829,105,108,100,101,59,1,8831,84,104,97,116,59,1,8715,59,1,8721,4,3,59,101,115,5486,5488,5507,1,8913,114,115,101,116,4,2,59,69,5498,5500,1,8835,113,117,97,108,59,1,8839,101,116,59,1,8913,4,11,72,82,83,97,99,102,104,105,111,114,115,5536,5546,5552,5567,5579,5602,5607,5655,5695,5701,5711,79,82,78,5,222,1,59,5544,1,222,65,68,69,59,1,8482,4,2,72,99,5558,5563,99,121,59,1,1035,121,59,1,1062,4,2,98,117,5573,5576,59,1,9,59,1,932,4,3,97,101,121,5587,5593,5599,114,111,110,59,1,356,100,105,108,59,1,354,59,1,1058,114,59,3,55349,56599,4,2,101,105,5613,5631,4,2,114,116,5619,5627,101,102,111,114,101,59,1,8756,97,59,1,920,4,2,99,110,5637,5647,107,83,112,97,99,101,59,3,8287,8202,83,112,97,99,101,59,1,8201,108,100,101,4,4,59,69,70,84,5668,5670,5677,5688,1,8764,113,117,97,108,59,1,8771,117,108,108,69,113,117,97,108,59,1,8773,105,108,100,101,59,1,8776,112,102,59,3,55349,56651,105,112,108,101,68,111,116,59,1,8411,4,2,99,116,5717,5722,114,59,3,55349,56495,114,111,107,59,1,358,4,14,97,98,99,100,102,103,109,110,111,112,114,115,116,117,5758,5789,5805,5823,5830,5835,5846,5852,5921,5937,6089,6095,6101,6108,4,2,99,114,5764,5774,117,116,101,5,218,1,59,5772,1,218,114,4,2,59,111,5781,5783,1,8607,99,105,114,59,1,10569,114,4,2,99,101,5796,5800,121,59,1,1038,118,101,59,1,364,4,2,105,121,5811,5820,114,99,5,219,1,59,5818,1,219,59,1,1059,98,108,97,99,59,1,368,114,59,3,55349,56600,114,97,118,101,5,217,1,59,5844,1,217,97,99,114,59,1,362,4,2,100,105,5858,5905,101,114,4,2,66,80,5866,5892,4,2,97,114,5872,5876,114,59,1,95,97,99,4,2,101,107,5884,5887,59,1,9183,101,116,59,1,9141,97,114,101,110,116,104,101,115,105,115,59,1,9181,111,110,4,2,59,80,5913,5915,1,8899,108,117,115,59,1,8846,4,2,103,112,5927,5932,111,110,59,1,370,102,59,3,55349,56652,4,8,65,68,69,84,97,100,112,115,5955,5985,5996,6009,6026,6033,6044,6075,114,114,111,119,4,3,59,66,68,5967,5969,5974,1,8593,97,114,59,1,10514,111,119,110,65,114,114,111,119,59,1,8645,111,119,110,65,114,114,111,119,59,1,8597,113,117,105,108,105,98,114,105,117,109,59,1,10606,101,101,4,2,59,65,6017,6019,1,8869,114,114,111,119,59,1,8613,114,114,111,119,59,1,8657,111,119,110,97,114,114,111,119,59,1,8661,101,114,4,2,76,82,6052,6063,101,102,116,65,114,114,111,119,59,1,8598,105,103,104,116,65,114,114,111,119,59,1,8599,105,4,2,59,108,6082,6084,1,978,111,110,59,1,933,105,110,103,59,1,366,99,114,59,3,55349,56496,105,108,100,101,59,1,360,109,108,5,220,1,59,6115,1,220,4,9,68,98,99,100,101,102,111,115,118,6137,6143,6148,6152,6166,6250,6255,6261,6267,97,115,104,59,1,8875,97,114,59,1,10987,121,59,1,1042,97,115,104,4,2,59,108,6161,6163,1,8873,59,1,10982,4,2,101,114,6172,6175,59,1,8897,4,3,98,116,121,6183,6188,6238,97,114,59,1,8214,4,2,59,105,6194,6196,1,8214,99,97,108,4,4,66,76,83,84,6209,6214,6220,6231,97,114,59,1,8739,105,110,101,59,1,124,101,112,97,114,97,116,111,114,59,1,10072,105,108,100,101,59,1,8768,84,104,105,110,83,112,97,99,101,59,1,8202,114,59,3,55349,56601,112,102,59,3,55349,56653,99,114,59,3,55349,56497,100,97,115,104,59,1,8874,4,5,99,101,102,111,115,6286,6292,6298,6303,6309,105,114,99,59,1,372,100,103,101,59,1,8896,114,59,3,55349,56602,112,102,59,3,55349,56654,99,114,59,3,55349,56498,4,4,102,105,111,115,6325,6330,6333,6339,114,59,3,55349,56603,59,1,926,112,102,59,3,55349,56655,99,114,59,3,55349,56499,4,9,65,73,85,97,99,102,111,115,117,6365,6370,6375,6380,6391,6405,6410,6416,6422,99,121,59,1,1071,99,121,59,1,1031,99,121,59,1,1070,99,117,116,101,5,221,1,59,6389,1,221,4,2,105,121,6397,6402,114,99,59,1,374,59,1,1067,114,59,3,55349,56604,112,102,59,3,55349,56656,99,114,59,3,55349,56500,109,108,59,1,376,4,8,72,97,99,100,101,102,111,115,6445,6450,6457,6472,6477,6501,6505,6510,99,121,59,1,1046,99,117,116,101,59,1,377,4,2,97,121,6463,6469,114,111,110,59,1,381,59,1,1047,111,116,59,1,379,4,2,114,116,6483,6497,111,87,105,100,116,104,83,112,97,99,101,59,1,8203,97,59,1,918,114,59,1,8488,112,102,59,1,8484,99,114,59,3,55349,56501,4,16,97,98,99,101,102,103,108,109,110,111,112,114,115,116,117,119,6550,6561,6568,6612,6622,6634,6645,6672,6699,6854,6870,6923,6933,6963,6974,6983,99,117,116,101,5,225,1,59,6559,1,225,114,101,118,101,59,1,259,4,6,59,69,100,105,117,121,6582,6584,6588,6591,6600,6609,1,8766,59,3,8766,819,59,1,8767,114,99,5,226,1,59,6598,1,226,116,101,5,180,1,59,6607,1,180,59,1,1072,108,105,103,5,230,1,59,6620,1,230,4,2,59,114,6628,6630,1,8289,59,3,55349,56606,114,97,118,101,5,224,1,59,6643,1,224,4,2,101,112,6651,6667,4,2,102,112,6657,6663,115,121,109,59,1,8501,104,59,1,8501,104,97,59,1,945,4,2,97,112,6678,6692,4,2,99,108,6684,6688,114,59,1,257,103,59,1,10815,5,38,1,59,6697,1,38,4,2,100,103,6705,6737,4,5,59,97,100,115,118,6717,6719,6724,6727,6734,1,8743,110,100,59,1,10837,59,1,10844,108,111,112,101,59,1,10840,59,1,10842,4,7,59,101,108,109,114,115,122,6753,6755,6758,6762,6814,6835,6848,1,8736,59,1,10660,101,59,1,8736,115,100,4,2,59,97,6770,6772,1,8737,4,8,97,98,99,100,101,102,103,104,6790,6793,6796,6799,6802,6805,6808,6811,59,1,10664,59,1,10665,59,1,10666,59,1,10667,59,1,10668,59,1,10669,59,1,10670,59,1,10671,116,4,2,59,118,6821,6823,1,8735,98,4,2,59,100,6830,6832,1,8894,59,1,10653,4,2,112,116,6841,6845,104,59,1,8738,59,1,197,97,114,114,59,1,9084,4,2,103,112,6860,6865,111,110,59,1,261,102,59,3,55349,56658,4,7,59,69,97,101,105,111,112,6886,6888,6891,6897,6900,6904,6908,1,8776,59,1,10864,99,105,114,59,1,10863,59,1,8778,100,59,1,8779,115,59,1,39,114,111,120,4,2,59,101,6917,6919,1,8776,113,59,1,8778,105,110,103,5,229,1,59,6931,1,229,4,3,99,116,121,6941,6946,6949,114,59,3,55349,56502,59,1,42,109,112,4,2,59,101,6957,6959,1,8776,113,59,1,8781,105,108,100,101,5,227,1,59,6972,1,227,109,108,5,228,1,59,6981,1,228,4,2,99,105,6989,6997,111,110,105,110,116,59,1,8755,110,116,59,1,10769,4,16,78,97,98,99,100,101,102,105,107,108,110,111,112,114,115,117,7036,7041,7119,7135,7149,7155,7219,7224,7347,7354,7463,7489,7786,7793,7814,7866,111,116,59,1,10989,4,2,99,114,7047,7094,107,4,4,99,101,112,115,7058,7064,7073,7080,111,110,103,59,1,8780,112,115,105,108,111,110,59,1,1014,114,105,109,101,59,1,8245,105,109,4,2,59,101,7088,7090,1,8765,113,59,1,8909,4,2,118,119,7100,7105,101,101,59,1,8893,101,100,4,2,59,103,7113,7115,1,8965,101,59,1,8965,114,107,4,2,59,116,7127,7129,1,9141,98,114,107,59,1,9142,4,2,111,121,7141,7146,110,103,59,1,8780,59,1,1073,113,117,111,59,1,8222,4,5,99,109,112,114,116,7167,7181,7188,7193,7199,97,117,115,4,2,59,101,7176,7178,1,8757,59,1,8757,112,116,121,118,59,1,10672,115,105,59,1,1014,110,111,117,59,1,8492,4,3,97,104,119,7207,7210,7213,59,1,946,59,1,8502,101,101,110,59,1,8812,114,59,3,55349,56607,103,4,7,99,111,115,116,117,118,119,7241,7262,7288,7305,7328,7335,7340,4,3,97,105,117,7249,7253,7258,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,4,3,100,112,116,7270,7275,7281,111,116,59,1,10752,108,117,115,59,1,10753,105,109,101,115,59,1,10754,4,2,113,116,7294,7300,99,117,112,59,1,10758,97,114,59,1,9733,114,105,97,110,103,108,101,4,2,100,117,7318,7324,111,119,110,59,1,9661,112,59,1,9651,112,108,117,115,59,1,10756,101,101,59,1,8897,101,100,103,101,59,1,8896,97,114,111,119,59,1,10509,4,3,97,107,111,7362,7436,7458,4,2,99,110,7368,7432,107,4,3,108,115,116,7377,7386,7394,111,122,101,110,103,101,59,1,10731,113,117,97,114,101,59,1,9642,114,105,97,110,103,108,101,4,4,59,100,108,114,7411,7413,7419,7425,1,9652,111,119,110,59,1,9662,101,102,116,59,1,9666,105,103,104,116,59,1,9656,107,59,1,9251,4,2,49,51,7442,7454,4,2,50,52,7448,7451,59,1,9618,59,1,9617,52,59,1,9619,99,107,59,1,9608,4,2,101,111,7469,7485,4,2,59,113,7475,7478,3,61,8421,117,105,118,59,3,8801,8421,116,59,1,8976,4,4,112,116,119,120,7499,7504,7517,7523,102,59,3,55349,56659,4,2,59,116,7510,7512,1,8869,111,109,59,1,8869,116,105,101,59,1,8904,4,12,68,72,85,86,98,100,104,109,112,116,117,118,7549,7571,7597,7619,7655,7660,7682,7708,7715,7721,7728,7750,4,4,76,82,108,114,7559,7562,7565,7568,59,1,9559,59,1,9556,59,1,9558,59,1,9555,4,5,59,68,85,100,117,7583,7585,7588,7591,7594,1,9552,59,1,9574,59,1,9577,59,1,9572,59,1,9575,4,4,76,82,108,114,7607,7610,7613,7616,59,1,9565,59,1,9562,59,1,9564,59,1,9561,4,7,59,72,76,82,104,108,114,7635,7637,7640,7643,7646,7649,7652,1,9553,59,1,9580,59,1,9571,59,1,9568,59,1,9579,59,1,9570,59,1,9567,111,120,59,1,10697,4,4,76,82,108,114,7670,7673,7676,7679,59,1,9557,59,1,9554,59,1,9488,59,1,9484,4,5,59,68,85,100,117,7694,7696,7699,7702,7705,1,9472,59,1,9573,59,1,9576,59,1,9516,59,1,9524,105,110,117,115,59,1,8863,108,117,115,59,1,8862,105,109,101,115,59,1,8864,4,4,76,82,108,114,7738,7741,7744,7747,59,1,9563,59,1,9560,59,1,9496,59,1,9492,4,7,59,72,76,82,104,108,114,7766,7768,7771,7774,7777,7780,7783,1,9474,59,1,9578,59,1,9569,59,1,9566,59,1,9532,59,1,9508,59,1,9500,114,105,109,101,59,1,8245,4,2,101,118,7799,7804,118,101,59,1,728,98,97,114,5,166,1,59,7812,1,166,4,4,99,101,105,111,7824,7829,7834,7846,114,59,3,55349,56503,109,105,59,1,8271,109,4,2,59,101,7841,7843,1,8765,59,1,8909,108,4,3,59,98,104,7855,7857,7860,1,92,59,1,10693,115,117,98,59,1,10184,4,2,108,109,7872,7885,108,4,2,59,101,7879,7881,1,8226,116,59,1,8226,112,4,3,59,69,101,7894,7896,7899,1,8782,59,1,10926,4,2,59,113,7905,7907,1,8783,59,1,8783,4,15,97,99,100,101,102,104,105,108,111,114,115,116,117,119,121,7942,8021,8075,8080,8121,8126,8157,8279,8295,8430,8446,8485,8491,8707,8726,4,3,99,112,114,7950,7956,8007,117,116,101,59,1,263,4,6,59,97,98,99,100,115,7970,7972,7977,7984,7998,8003,1,8745,110,100,59,1,10820,114,99,117,112,59,1,10825,4,2,97,117,7990,7994,112,59,1,10827,112,59,1,10823,111,116,59,1,10816,59,3,8745,65024,4,2,101,111,8013,8017,116,59,1,8257,110,59,1,711,4,4,97,101,105,117,8031,8046,8056,8061,4,2,112,114,8037,8041,115,59,1,10829,111,110,59,1,269,100,105,108,5,231,1,59,8054,1,231,114,99,59,1,265,112,115,4,2,59,115,8069,8071,1,10828,109,59,1,10832,111,116,59,1,267,4,3,100,109,110,8088,8097,8104,105,108,5,184,1,59,8095,1,184,112,116,121,118,59,1,10674,116,5,162,2,59,101,8112,8114,1,162,114,100,111,116,59,1,183,114,59,3,55349,56608,4,3,99,101,105,8134,8138,8154,121,59,1,1095,99,107,4,2,59,109,8146,8148,1,10003,97,114,107,59,1,10003,59,1,967,114,4,7,59,69,99,101,102,109,115,8174,8176,8179,8258,8261,8268,8273,1,9675,59,1,10691,4,3,59,101,108,8187,8189,8193,1,710,113,59,1,8791,101,4,2,97,100,8200,8223,114,114,111,119,4,2,108,114,8210,8216,101,102,116,59,1,8634,105,103,104,116,59,1,8635,4,5,82,83,97,99,100,8235,8238,8241,8246,8252,59,1,174,59,1,9416,115,116,59,1,8859,105,114,99,59,1,8858,97,115,104,59,1,8861,59,1,8791,110,105,110,116,59,1,10768,105,100,59,1,10991,99,105,114,59,1,10690,117,98,115,4,2,59,117,8288,8290,1,9827,105,116,59,1,9827,4,4,108,109,110,112,8305,8326,8376,8400,111,110,4,2,59,101,8313,8315,1,58,4,2,59,113,8321,8323,1,8788,59,1,8788,4,2,109,112,8332,8344,97,4,2,59,116,8339,8341,1,44,59,1,64,4,3,59,102,108,8352,8354,8358,1,8705,110,59,1,8728,101,4,2,109,120,8365,8371,101,110,116,59,1,8705,101,115,59,1,8450,4,2,103,105,8382,8395,4,2,59,100,8388,8390,1,8773,111,116,59,1,10861,110,116,59,1,8750,4,3,102,114,121,8408,8412,8417,59,3,55349,56660,111,100,59,1,8720,5,169,2,59,115,8424,8426,1,169,114,59,1,8471,4,2,97,111,8436,8441,114,114,59,1,8629,115,115,59,1,10007,4,2,99,117,8452,8457,114,59,3,55349,56504,4,2,98,112,8463,8474,4,2,59,101,8469,8471,1,10959,59,1,10961,4,2,59,101,8480,8482,1,10960,59,1,10962,100,111,116,59,1,8943,4,7,100,101,108,112,114,118,119,8507,8522,8536,8550,8600,8697,8702,97,114,114,4,2,108,114,8516,8519,59,1,10552,59,1,10549,4,2,112,115,8528,8532,114,59,1,8926,99,59,1,8927,97,114,114,4,2,59,112,8545,8547,1,8630,59,1,10557,4,6,59,98,99,100,111,115,8564,8566,8573,8587,8592,8596,1,8746,114,99,97,112,59,1,10824,4,2,97,117,8579,8583,112,59,1,10822,112,59,1,10826,111,116,59,1,8845,114,59,1,10821,59,3,8746,65024,4,4,97,108,114,118,8610,8623,8663,8672,114,114,4,2,59,109,8618,8620,1,8631,59,1,10556,121,4,3,101,118,119,8632,8651,8656,113,4,2,112,115,8639,8645,114,101,99,59,1,8926,117,99,99,59,1,8927,101,101,59,1,8910,101,100,103,101,59,1,8911,101,110,5,164,1,59,8670,1,164,101,97,114,114,111,119,4,2,108,114,8684,8690,101,102,116,59,1,8630,105,103,104,116,59,1,8631,101,101,59,1,8910,101,100,59,1,8911,4,2,99,105,8713,8721,111,110,105,110,116,59,1,8754,110,116,59,1,8753,108,99,116,121,59,1,9005,4,19,65,72,97,98,99,100,101,102,104,105,106,108,111,114,115,116,117,119,122,8773,8778,8783,8821,8839,8854,8887,8914,8930,8944,9036,9041,9058,9197,9227,9258,9281,9297,9305,114,114,59,1,8659,97,114,59,1,10597,4,4,103,108,114,115,8793,8799,8805,8809,103,101,114,59,1,8224,101,116,104,59,1,8504,114,59,1,8595,104,4,2,59,118,8816,8818,1,8208,59,1,8867,4,2,107,108,8827,8834,97,114,111,119,59,1,10511,97,99,59,1,733,4,2,97,121,8845,8851,114,111,110,59,1,271,59,1,1076,4,3,59,97,111,8862,8864,8880,1,8518,4,2,103,114,8870,8876,103,101,114,59,1,8225,114,59,1,8650,116,115,101,113,59,1,10871,4,3,103,108,109,8895,8902,8907,5,176,1,59,8900,1,176,116,97,59,1,948,112,116,121,118,59,1,10673,4,2,105,114,8920,8926,115,104,116,59,1,10623,59,3,55349,56609,97,114,4,2,108,114,8938,8941,59,1,8643,59,1,8642,4,5,97,101,103,115,118,8956,8986,8989,8996,9001,109,4,3,59,111,115,8965,8967,8983,1,8900,110,100,4,2,59,115,8975,8977,1,8900,117,105,116,59,1,9830,59,1,9830,59,1,168,97,109,109,97,59,1,989,105,110,59,1,8946,4,3,59,105,111,9009,9011,9031,1,247,100,101,5,247,2,59,111,9020,9022,1,247,110,116,105,109,101,115,59,1,8903,110,120,59,1,8903,99,121,59,1,1106,99,4,2,111,114,9048,9053,114,110,59,1,8990,111,112,59,1,8973,4,5,108,112,116,117,119,9070,9076,9081,9130,9144,108,97,114,59,1,36,102,59,3,55349,56661,4,5,59,101,109,112,115,9093,9095,9109,9116,9122,1,729,113,4,2,59,100,9102,9104,1,8784,111,116,59,1,8785,105,110,117,115,59,1,8760,108,117,115,59,1,8724,113,117,97,114,101,59,1,8865,98,108,101,98,97,114,119,101,100,103,101,59,1,8966,110,4,3,97,100,104,9153,9160,9172,114,114,111,119,59,1,8595,111,119,110,97,114,114,111,119,115,59,1,8650,97,114,112,111,111,110,4,2,108,114,9184,9190,101,102,116,59,1,8643,105,103,104,116,59,1,8642,4,2,98,99,9203,9211,107,97,114,111,119,59,1,10512,4,2,111,114,9217,9222,114,110,59,1,8991,111,112,59,1,8972,4,3,99,111,116,9235,9248,9252,4,2,114,121,9241,9245,59,3,55349,56505,59,1,1109,108,59,1,10742,114,111,107,59,1,273,4,2,100,114,9264,9269,111,116,59,1,8945,105,4,2,59,102,9276,9278,1,9663,59,1,9662,4,2,97,104,9287,9292,114,114,59,1,8693,97,114,59,1,10607,97,110,103,108,101,59,1,10662,4,2,99,105,9311,9315,121,59,1,1119,103,114,97,114,114,59,1,10239,4,18,68,97,99,100,101,102,103,108,109,110,111,112,113,114,115,116,117,120,9361,9376,9398,9439,9444,9447,9462,9495,9531,9585,9598,9614,9659,9755,9771,9792,9808,9826,4,2,68,111,9367,9372,111,116,59,1,10871,116,59,1,8785,4,2,99,115,9382,9392,117,116,101,5,233,1,59,9390,1,233,116,101,114,59,1,10862,4,4,97,105,111,121,9408,9414,9430,9436,114,111,110,59,1,283,114,4,2,59,99,9421,9423,1,8790,5,234,1,59,9428,1,234,108,111,110,59,1,8789,59,1,1101,111,116,59,1,279,59,1,8519,4,2,68,114,9453,9458,111,116,59,1,8786,59,3,55349,56610,4,3,59,114,115,9470,9472,9482,1,10906,97,118,101,5,232,1,59,9480,1,232,4,2,59,100,9488,9490,1,10902,111,116,59,1,10904,4,4,59,105,108,115,9505,9507,9515,9518,1,10905,110,116,101,114,115,59,1,9191,59,1,8467,4,2,59,100,9524,9526,1,10901,111,116,59,1,10903,4,3,97,112,115,9539,9544,9564,99,114,59,1,275,116,121,4,3,59,115,118,9554,9556,9561,1,8709,101,116,59,1,8709,59,1,8709,112,4,2,49,59,9571,9583,4,2,51,52,9577,9580,59,1,8196,59,1,8197,1,8195,4,2,103,115,9591,9594,59,1,331,112,59,1,8194,4,2,103,112,9604,9609,111,110,59,1,281,102,59,3,55349,56662,4,3,97,108,115,9622,9635,9640,114,4,2,59,115,9629,9631,1,8917,108,59,1,10723,117,115,59,1,10865,105,4,3,59,108,118,9649,9651,9656,1,949,111,110,59,1,949,59,1,1013,4,4,99,115,117,118,9669,9686,9716,9747,4,2,105,111,9675,9680,114,99,59,1,8790,108,111,110,59,1,8789,4,2,105,108,9692,9696,109,59,1,8770,97,110,116,4,2,103,108,9705,9710,116,114,59,1,10902,101,115,115,59,1,10901,4,3,97,101,105,9724,9729,9734,108,115,59,1,61,115,116,59,1,8799,118,4,2,59,68,9741,9743,1,8801,68,59,1,10872,112,97,114,115,108,59,1,10725,4,2,68,97,9761,9766,111,116,59,1,8787,114,114,59,1,10609,4,3,99,100,105,9779,9783,9788,114,59,1,8495,111,116,59,1,8784,109,59,1,8770,4,2,97,104,9798,9801,59,1,951,5,240,1,59,9806,1,240,4,2,109,114,9814,9822,108,5,235,1,59,9820,1,235,111,59,1,8364,4,3,99,105,112,9834,9838,9843,108,59,1,33,115,116,59,1,8707,4,2,101,111,9849,9859,99,116,97,116,105,111,110,59,1,8496,110,101,110,116,105,97,108,101,59,1,8519,4,12,97,99,101,102,105,106,108,110,111,112,114,115,9896,9910,9914,9921,9954,9960,9967,9989,9994,10027,10036,10164,108,108,105,110,103,100,111,116,115,101,113,59,1,8786,121,59,1,1092,109,97,108,101,59,1,9792,4,3,105,108,114,9929,9935,9950,108,105,103,59,1,64259,4,2,105,108,9941,9945,103,59,1,64256,105,103,59,1,64260,59,3,55349,56611,108,105,103,59,1,64257,108,105,103,59,3,102,106,4,3,97,108,116,9975,9979,9984,116,59,1,9837,105,103,59,1,64258,110,115,59,1,9649,111,102,59,1,402,4,2,112,114,10000,10005,102,59,3,55349,56663,4,2,97,107,10011,10016,108,108,59,1,8704,4,2,59,118,10022,10024,1,8916,59,1,10969,97,114,116,105,110,116,59,1,10765,4,2,97,111,10042,10159,4,2,99,115,10048,10155,4,6,49,50,51,52,53,55,10062,10102,10114,10135,10139,10151,4,6,50,51,52,53,54,56,10076,10083,10086,10093,10096,10099,5,189,1,59,10081,1,189,59,1,8531,5,188,1,59,10091,1,188,59,1,8533,59,1,8537,59,1,8539,4,2,51,53,10108,10111,59,1,8532,59,1,8534,4,3,52,53,56,10122,10129,10132,5,190,1,59,10127,1,190,59,1,8535,59,1,8540,53,59,1,8536,4,2,54,56,10145,10148,59,1,8538,59,1,8541,56,59,1,8542,108,59,1,8260,119,110,59,1,8994,99,114,59,3,55349,56507,4,17,69,97,98,99,100,101,102,103,105,106,108,110,111,114,115,116,118,10206,10217,10247,10254,10268,10273,10358,10363,10374,10380,10385,10406,10458,10464,10470,10497,10610,4,2,59,108,10212,10214,1,8807,59,1,10892,4,3,99,109,112,10225,10231,10244,117,116,101,59,1,501,109,97,4,2,59,100,10239,10241,1,947,59,1,989,59,1,10886,114,101,118,101,59,1,287,4,2,105,121,10260,10265,114,99,59,1,285,59,1,1075,111,116,59,1,289,4,4,59,108,113,115,10283,10285,10288,10308,1,8805,59,1,8923,4,3,59,113,115,10296,10298,10301,1,8805,59,1,8807,108,97,110,116,59,1,10878,4,4,59,99,100,108,10318,10320,10324,10345,1,10878,99,59,1,10921,111,116,4,2,59,111,10332,10334,1,10880,4,2,59,108,10340,10342,1,10882,59,1,10884,4,2,59,101,10351,10354,3,8923,65024,115,59,1,10900,114,59,3,55349,56612,4,2,59,103,10369,10371,1,8811,59,1,8921,109,101,108,59,1,8503,99,121,59,1,1107,4,4,59,69,97,106,10395,10397,10400,10403,1,8823,59,1,10898,59,1,10917,59,1,10916,4,4,69,97,101,115,10416,10419,10434,10453,59,1,8809,112,4,2,59,112,10426,10428,1,10890,114,111,120,59,1,10890,4,2,59,113,10440,10442,1,10888,4,2,59,113,10448,10450,1,10888,59,1,8809,105,109,59,1,8935,112,102,59,3,55349,56664,97,118,101,59,1,96,4,2,99,105,10476,10480,114,59,1,8458,109,4,3,59,101,108,10489,10491,10494,1,8819,59,1,10894,59,1,10896,5,62,6,59,99,100,108,113,114,10512,10514,10527,10532,10538,10545,1,62,4,2,99,105,10520,10523,59,1,10919,114,59,1,10874,111,116,59,1,8919,80,97,114,59,1,10645,117,101,115,116,59,1,10876,4,5,97,100,101,108,115,10557,10574,10579,10599,10605,4,2,112,114,10563,10570,112,114,111,120,59,1,10886,114,59,1,10616,111,116,59,1,8919,113,4,2,108,113,10586,10592,101,115,115,59,1,8923,108,101,115,115,59,1,10892,101,115,115,59,1,8823,105,109,59,1,8819,4,2,101,110,10616,10626,114,116,110,101,113,113,59,3,8809,65024,69,59,3,8809,65024,4,10,65,97,98,99,101,102,107,111,115,121,10653,10658,10713,10718,10724,10760,10765,10786,10850,10875,114,114,59,1,8660,4,4,105,108,109,114,10668,10674,10678,10684,114,115,112,59,1,8202,102,59,1,189,105,108,116,59,1,8459,4,2,100,114,10690,10695,99,121,59,1,1098,4,3,59,99,119,10703,10705,10710,1,8596,105,114,59,1,10568,59,1,8621,97,114,59,1,8463,105,114,99,59,1,293,4,3,97,108,114,10732,10748,10754,114,116,115,4,2,59,117,10741,10743,1,9829,105,116,59,1,9829,108,105,112,59,1,8230,99,111,110,59,1,8889,114,59,3,55349,56613,115,4,2,101,119,10772,10779,97,114,111,119,59,1,10533,97,114,111,119,59,1,10534,4,5,97,109,111,112,114,10798,10803,10809,10839,10844,114,114,59,1,8703,116,104,116,59,1,8763,107,4,2,108,114,10816,10827,101,102,116,97,114,114,111,119,59,1,8617,105,103,104,116,97,114,114,111,119,59,1,8618,102,59,3,55349,56665,98,97,114,59,1,8213,4,3,99,108,116,10858,10863,10869,114,59,3,55349,56509,97,115,104,59,1,8463,114,111,107,59,1,295,4,2,98,112,10881,10887,117,108,108,59,1,8259,104,101,110,59,1,8208,4,15,97,99,101,102,103,105,106,109,110,111,112,113,115,116,117,10925,10936,10958,10977,10990,11001,11039,11045,11101,11192,11220,11226,11237,11285,11299,99,117,116,101,5,237,1,59,10934,1,237,4,3,59,105,121,10944,10946,10955,1,8291,114,99,5,238,1,59,10953,1,238,59,1,1080,4,2,99,120,10964,10968,121,59,1,1077,99,108,5,161,1,59,10975,1,161,4,2,102,114,10983,10986,59,1,8660,59,3,55349,56614,114,97,118,101,5,236,1,59,10999,1,236,4,4,59,105,110,111,11011,11013,11028,11034,1,8520,4,2,105,110,11019,11024,110,116,59,1,10764,116,59,1,8749,102,105,110,59,1,10716,116,97,59,1,8489,108,105,103,59,1,307,4,3,97,111,112,11053,11092,11096,4,3,99,103,116,11061,11065,11088,114,59,1,299,4,3,101,108,112,11073,11076,11082,59,1,8465,105,110,101,59,1,8464,97,114,116,59,1,8465,104,59,1,305,102,59,1,8887,101,100,59,1,437,4,5,59,99,102,111,116,11113,11115,11121,11136,11142,1,8712,97,114,101,59,1,8453,105,110,4,2,59,116,11129,11131,1,8734,105,101,59,1,10717,100,111,116,59,1,305,4,5,59,99,101,108,112,11154,11156,11161,11179,11186,1,8747,97,108,59,1,8890,4,2,103,114,11167,11173,101,114,115,59,1,8484,99,97,108,59,1,8890,97,114,104,107,59,1,10775,114,111,100,59,1,10812,4,4,99,103,112,116,11202,11206,11211,11216,121,59,1,1105,111,110,59,1,303,102,59,3,55349,56666,97,59,1,953,114,111,100,59,1,10812,117,101,115,116,5,191,1,59,11235,1,191,4,2,99,105,11243,11248,114,59,3,55349,56510,110,4,5,59,69,100,115,118,11261,11263,11266,11271,11282,1,8712,59,1,8953,111,116,59,1,8949,4,2,59,118,11277,11279,1,8948,59,1,8947,59,1,8712,4,2,59,105,11291,11293,1,8290,108,100,101,59,1,297,4,2,107,109,11305,11310,99,121,59,1,1110,108,5,239,1,59,11316,1,239,4,6,99,102,109,111,115,117,11332,11346,11351,11357,11363,11380,4,2,105,121,11338,11343,114,99,59,1,309,59,1,1081,114,59,3,55349,56615,97,116,104,59,1,567,112,102,59,3,55349,56667,4,2,99,101,11369,11374,114,59,3,55349,56511,114,99,121,59,1,1112,107,99,121,59,1,1108,4,8,97,99,102,103,104,106,111,115,11404,11418,11433,11438,11445,11450,11455,11461,112,112,97,4,2,59,118,11413,11415,1,954,59,1,1008,4,2,101,121,11424,11430,100,105,108,59,1,311,59,1,1082,114,59,3,55349,56616,114,101,101,110,59,1,312,99,121,59,1,1093,99,121,59,1,1116,112,102,59,3,55349,56668,99,114,59,3,55349,56512,4,23,65,66,69,72,97,98,99,100,101,102,103,104,106,108,109,110,111,112,114,115,116,117,118,11515,11538,11544,11555,11560,11721,11780,11818,11868,12136,12160,12171,12203,12208,12246,12275,12327,12509,12523,12569,12641,12732,12752,4,3,97,114,116,11523,11528,11532,114,114,59,1,8666,114,59,1,8656,97,105,108,59,1,10523,97,114,114,59,1,10510,4,2,59,103,11550,11552,1,8806,59,1,10891,97,114,59,1,10594,4,9,99,101,103,109,110,112,113,114,116,11580,11586,11594,11600,11606,11624,11627,11636,11694,117,116,101,59,1,314,109,112,116,121,118,59,1,10676,114,97,110,59,1,8466,98,100,97,59,1,955,103,4,3,59,100,108,11615,11617,11620,1,10216,59,1,10641,101,59,1,10216,59,1,10885,117,111,5,171,1,59,11634,1,171,114,4,8,59,98,102,104,108,112,115,116,11655,11657,11669,11673,11677,11681,11685,11690,1,8592,4,2,59,102,11663,11665,1,8676,115,59,1,10527,115,59,1,10525,107,59,1,8617,112,59,1,8619,108,59,1,10553,105,109,59,1,10611,108,59,1,8610,4,3,59,97,101,11702,11704,11709,1,10923,105,108,59,1,10521,4,2,59,115,11715,11717,1,10925,59,3,10925,65024,4,3,97,98,114,11729,11734,11739,114,114,59,1,10508,114,107,59,1,10098,4,2,97,107,11745,11758,99,4,2,101,107,11752,11755,59,1,123,59,1,91,4,2,101,115,11764,11767,59,1,10635,108,4,2,100,117,11774,11777,59,1,10639,59,1,10637,4,4,97,101,117,121,11790,11796,11811,11815,114,111,110,59,1,318,4,2,100,105,11802,11807,105,108,59,1,316,108,59,1,8968,98,59,1,123,59,1,1083,4,4,99,113,114,115,11828,11832,11845,11864,97,59,1,10550,117,111,4,2,59,114,11840,11842,1,8220,59,1,8222,4,2,100,117,11851,11857,104,97,114,59,1,10599,115,104,97,114,59,1,10571,104,59,1,8626,4,5,59,102,103,113,115,11880,11882,12008,12011,12031,1,8804,116,4,5,97,104,108,114,116,11895,11913,11935,11947,11996,114,114,111,119,4,2,59,116,11905,11907,1,8592,97,105,108,59,1,8610,97,114,112,111,111,110,4,2,100,117,11925,11931,111,119,110,59,1,8637,112,59,1,8636,101,102,116,97,114,114,111,119,115,59,1,8647,105,103,104,116,4,3,97,104,115,11959,11974,11984,114,114,111,119,4,2,59,115,11969,11971,1,8596,59,1,8646,97,114,112,111,111,110,115,59,1,8651,113,117,105,103,97,114,114,111,119,59,1,8621,104,114,101,101,116,105,109,101,115,59,1,8907,59,1,8922,4,3,59,113,115,12019,12021,12024,1,8804,59,1,8806,108,97,110,116,59,1,10877,4,5,59,99,100,103,115,12043,12045,12049,12070,12083,1,10877,99,59,1,10920,111,116,4,2,59,111,12057,12059,1,10879,4,2,59,114,12065,12067,1,10881,59,1,10883,4,2,59,101,12076,12079,3,8922,65024,115,59,1,10899,4,5,97,100,101,103,115,12095,12103,12108,12126,12131,112,112,114,111,120,59,1,10885,111,116,59,1,8918,113,4,2,103,113,12115,12120,116,114,59,1,8922,103,116,114,59,1,10891,116,114,59,1,8822,105,109,59,1,8818,4,3,105,108,114,12144,12150,12156,115,104,116,59,1,10620,111,111,114,59,1,8970,59,3,55349,56617,4,2,59,69,12166,12168,1,8822,59,1,10897,4,2,97,98,12177,12198,114,4,2,100,117,12184,12187,59,1,8637,4,2,59,108,12193,12195,1,8636,59,1,10602,108,107,59,1,9604,99,121,59,1,1113,4,5,59,97,99,104,116,12220,12222,12227,12235,12241,1,8810,114,114,59,1,8647,111,114,110,101,114,59,1,8990,97,114,100,59,1,10603,114,105,59,1,9722,4,2,105,111,12252,12258,100,111,116,59,1,320,117,115,116,4,2,59,97,12267,12269,1,9136,99,104,101,59,1,9136,4,4,69,97,101,115,12285,12288,12303,12322,59,1,8808,112,4,2,59,112,12295,12297,1,10889,114,111,120,59,1,10889,4,2,59,113,12309,12311,1,10887,4,2,59,113,12317,12319,1,10887,59,1,8808,105,109,59,1,8934,4,8,97,98,110,111,112,116,119,122,12345,12359,12364,12421,12446,12467,12474,12490,4,2,110,114,12351,12355,103,59,1,10220,114,59,1,8701,114,107,59,1,10214,103,4,3,108,109,114,12373,12401,12409,101,102,116,4,2,97,114,12382,12389,114,114,111,119,59,1,10229,105,103,104,116,97,114,114,111,119,59,1,10231,97,112,115,116,111,59,1,10236,105,103,104,116,97,114,114,111,119,59,1,10230,112,97,114,114,111,119,4,2,108,114,12433,12439,101,102,116,59,1,8619,105,103,104,116,59,1,8620,4,3,97,102,108,12454,12458,12462,114,59,1,10629,59,3,55349,56669,117,115,59,1,10797,105,109,101,115,59,1,10804,4,2,97,98,12480,12485,115,116,59,1,8727,97,114,59,1,95,4,3,59,101,102,12498,12500,12506,1,9674,110,103,101,59,1,9674,59,1,10731,97,114,4,2,59,108,12517,12519,1,40,116,59,1,10643,4,5,97,99,104,109,116,12535,12540,12548,12561,12564,114,114,59,1,8646,111,114,110,101,114,59,1,8991,97,114,4,2,59,100,12556,12558,1,8651,59,1,10605,59,1,8206,114,105,59,1,8895,4,6,97,99,104,105,113,116,12583,12589,12594,12597,12614,12635,113,117,111,59,1,8249,114,59,3,55349,56513,59,1,8624,109,4,3,59,101,103,12606,12608,12611,1,8818,59,1,10893,59,1,10895,4,2,98,117,12620,12623,59,1,91,111,4,2,59,114,12630,12632,1,8216,59,1,8218,114,111,107,59,1,322,5,60,8,59,99,100,104,105,108,113,114,12660,12662,12675,12680,12686,12692,12698,12705,1,60,4,2,99,105,12668,12671,59,1,10918,114,59,1,10873,111,116,59,1,8918,114,101,101,59,1,8907,109,101,115,59,1,8905,97,114,114,59,1,10614,117,101,115,116,59,1,10875,4,2,80,105,12711,12716,97,114,59,1,10646,4,3,59,101,102,12724,12726,12729,1,9667,59,1,8884,59,1,9666,114,4,2,100,117,12739,12746,115,104,97,114,59,1,10570,104,97,114,59,1,10598,4,2,101,110,12758,12768,114,116,110,101,113,113,59,3,8808,65024,69,59,3,8808,65024,4,14,68,97,99,100,101,102,104,105,108,110,111,112,115,117,12803,12809,12893,12908,12914,12928,12933,12937,13011,13025,13032,13049,13052,13069,68,111,116,59,1,8762,4,4,99,108,112,114,12819,12827,12849,12887,114,5,175,1,59,12825,1,175,4,2,101,116,12833,12836,59,1,9794,4,2,59,101,12842,12844,1,10016,115,101,59,1,10016,4,2,59,115,12855,12857,1,8614,116,111,4,4,59,100,108,117,12869,12871,12877,12883,1,8614,111,119,110,59,1,8615,101,102,116,59,1,8612,112,59,1,8613,107,101,114,59,1,9646,4,2,111,121,12899,12905,109,109,97,59,1,10793,59,1,1084,97,115,104,59,1,8212,97,115,117,114,101,100,97,110,103,108,101,59,1,8737,114,59,3,55349,56618,111,59,1,8487,4,3,99,100,110,12945,12954,12985,114,111,5,181,1,59,12952,1,181,4,4,59,97,99,100,12964,12966,12971,12976,1,8739,115,116,59,1,42,105,114,59,1,10992,111,116,5,183,1,59,12983,1,183,117,115,4,3,59,98,100,12995,12997,13000,1,8722,59,1,8863,4,2,59,117,13006,13008,1,8760,59,1,10794,4,2,99,100,13017,13021,112,59,1,10971,114,59,1,8230,112,108,117,115,59,1,8723,4,2,100,112,13038,13044,101,108,115,59,1,8871,102,59,3,55349,56670,59,1,8723,4,2,99,116,13058,13063,114,59,3,55349,56514,112,111,115,59,1,8766,4,3,59,108,109,13077,13079,13087,1,956,116,105,109,97,112,59,1,8888,97,112,59,1,8888,4,24,71,76,82,86,97,98,99,100,101,102,103,104,105,106,108,109,111,112,114,115,116,117,118,119,13142,13165,13217,13229,13247,13330,13359,13414,13420,13508,13513,13579,13602,13626,13631,13762,13767,13855,13936,13995,14214,14285,14312,14432,4,2,103,116,13148,13152,59,3,8921,824,4,2,59,118,13158,13161,3,8811,8402,59,3,8811,824,4,3,101,108,116,13173,13200,13204,102,116,4,2,97,114,13181,13188,114,114,111,119,59,1,8653,105,103,104,116,97,114,114,111,119,59,1,8654,59,3,8920,824,4,2,59,118,13210,13213,3,8810,8402,59,3,8810,824,105,103,104,116,97,114,114,111,119,59,1,8655,4,2,68,100,13235,13241,97,115,104,59,1,8879,97,115,104,59,1,8878,4,5,98,99,110,112,116,13259,13264,13270,13275,13308,108,97,59,1,8711,117,116,101,59,1,324,103,59,3,8736,8402,4,5,59,69,105,111,112,13287,13289,13293,13298,13302,1,8777,59,3,10864,824,100,59,3,8779,824,115,59,1,329,114,111,120,59,1,8777,117,114,4,2,59,97,13316,13318,1,9838,108,4,2,59,115,13325,13327,1,9838,59,1,8469,4,2,115,117,13336,13344,112,5,160,1,59,13342,1,160,109,112,4,2,59,101,13352,13355,3,8782,824,59,3,8783,824,4,5,97,101,111,117,121,13371,13385,13391,13407,13411,4,2,112,114,13377,13380,59,1,10819,111,110,59,1,328,100,105,108,59,1,326,110,103,4,2,59,100,13399,13401,1,8775,111,116,59,3,10861,824,112,59,1,10818,59,1,1085,97,115,104,59,1,8211,4,7,59,65,97,100,113,115,120,13436,13438,13443,13466,13472,13478,13494,1,8800,114,114,59,1,8663,114,4,2,104,114,13450,13454,107,59,1,10532,4,2,59,111,13460,13462,1,8599,119,59,1,8599,111,116,59,3,8784,824,117,105,118,59,1,8802,4,2,101,105,13484,13489,97,114,59,1,10536,109,59,3,8770,824,105,115,116,4,2,59,115,13503,13505,1,8708,59,1,8708,114,59,3,55349,56619,4,4,69,101,115,116,13523,13527,13563,13568,59,3,8807,824,4,3,59,113,115,13535,13537,13559,1,8817,4,3,59,113,115,13545,13547,13551,1,8817,59,3,8807,824,108,97,110,116,59,3,10878,824,59,3,10878,824,105,109,59,1,8821,4,2,59,114,13574,13576,1,8815,59,1,8815,4,3,65,97,112,13587,13592,13597,114,114,59,1,8654,114,114,59,1,8622,97,114,59,1,10994,4,3,59,115,118,13610,13612,13623,1,8715,4,2,59,100,13618,13620,1,8956,59,1,8954,59,1,8715,99,121,59,1,1114,4,7,65,69,97,100,101,115,116,13647,13652,13656,13661,13665,13737,13742,114,114,59,1,8653,59,3,8806,824,114,114,59,1,8602,114,59,1,8229,4,4,59,102,113,115,13675,13677,13703,13725,1,8816,116,4,2,97,114,13684,13691,114,114,111,119,59,1,8602,105,103,104,116,97,114,114,111,119,59,1,8622,4,3,59,113,115,13711,13713,13717,1,8816,59,3,8806,824,108,97,110,116,59,3,10877,824,4,2,59,115,13731,13734,3,10877,824,59,1,8814,105,109,59,1,8820,4,2,59,114,13748,13750,1,8814,105,4,2,59,101,13757,13759,1,8938,59,1,8940,105,100,59,1,8740,4,2,112,116,13773,13778,102,59,3,55349,56671,5,172,3,59,105,110,13787,13789,13829,1,172,110,4,4,59,69,100,118,13800,13802,13806,13812,1,8713,59,3,8953,824,111,116,59,3,8949,824,4,3,97,98,99,13820,13823,13826,59,1,8713,59,1,8951,59,1,8950,105,4,2,59,118,13836,13838,1,8716,4,3,97,98,99,13846,13849,13852,59,1,8716,59,1,8958,59,1,8957,4,3,97,111,114,13863,13892,13899,114,4,4,59,97,115,116,13874,13876,13883,13888,1,8742,108,108,101,108,59,1,8742,108,59,3,11005,8421,59,3,8706,824,108,105,110,116,59,1,10772,4,3,59,99,101,13907,13909,13914,1,8832,117,101,59,1,8928,4,2,59,99,13920,13923,3,10927,824,4,2,59,101,13929,13931,1,8832,113,59,3,10927,824,4,4,65,97,105,116,13946,13951,13971,13982,114,114,59,1,8655,114,114,4,3,59,99,119,13961,13963,13967,1,8603,59,3,10547,824,59,3,8605,824,103,104,116,97,114,114,111,119,59,1,8603,114,105,4,2,59,101,13990,13992,1,8939,59,1,8941,4,7,99,104,105,109,112,113,117,14011,14036,14060,14080,14085,14090,14106,4,4,59,99,101,114,14021,14023,14028,14032,1,8833,117,101,59,1,8929,59,3,10928,824,59,3,55349,56515,111,114,116,4,2,109,112,14045,14050,105,100,59,1,8740,97,114,97,108,108,101,108,59,1,8742,109,4,2,59,101,14067,14069,1,8769,4,2,59,113,14075,14077,1,8772,59,1,8772,105,100,59,1,8740,97,114,59,1,8742,115,117,4,2,98,112,14098,14102,101,59,1,8930,101,59,1,8931,4,3,98,99,112,14114,14157,14171,4,4,59,69,101,115,14124,14126,14130,14133,1,8836,59,3,10949,824,59,1,8840,101,116,4,2,59,101,14141,14144,3,8834,8402,113,4,2,59,113,14151,14153,1,8840,59,3,10949,824,99,4,2,59,101,14164,14166,1,8833,113,59,3,10928,824,4,4,59,69,101,115,14181,14183,14187,14190,1,8837,59,3,10950,824,59,1,8841,101,116,4,2,59,101,14198,14201,3,8835,8402,113,4,2,59,113,14208,14210,1,8841,59,3,10950,824,4,4,103,105,108,114,14224,14228,14238,14242,108,59,1,8825,108,100,101,5,241,1,59,14236,1,241,103,59,1,8824,105,97,110,103,108,101,4,2,108,114,14254,14269,101,102,116,4,2,59,101,14263,14265,1,8938,113,59,1,8940,105,103,104,116,4,2,59,101,14279,14281,1,8939,113,59,1,8941,4,2,59,109,14291,14293,1,957,4,3,59,101,115,14301,14303,14308,1,35,114,111,59,1,8470,112,59,1,8199,4,9,68,72,97,100,103,105,108,114,115,14332,14338,14344,14349,14355,14369,14376,14408,14426,97,115,104,59,1,8877,97,114,114,59,1,10500,112,59,3,8781,8402,97,115,104,59,1,8876,4,2,101,116,14361,14365,59,3,8805,8402,59,3,62,8402,110,102,105,110,59,1,10718,4,3,65,101,116,14384,14389,14393,114,114,59,1,10498,59,3,8804,8402,4,2,59,114,14399,14402,3,60,8402,105,101,59,3,8884,8402,4,2,65,116,14414,14419,114,114,59,1,10499,114,105,101,59,3,8885,8402,105,109,59,3,8764,8402,4,3,65,97,110,14440,14445,14468,114,114,59,1,8662,114,4,2,104,114,14452,14456,107,59,1,10531,4,2,59,111,14462,14464,1,8598,119,59,1,8598,101,97,114,59,1,10535,4,18,83,97,99,100,101,102,103,104,105,108,109,111,112,114,115,116,117,118,14512,14515,14535,14560,14597,14603,14618,14643,14657,14662,14701,14741,14747,14769,14851,14877,14907,14916,59,1,9416,4,2,99,115,14521,14531,117,116,101,5,243,1,59,14529,1,243,116,59,1,8859,4,2,105,121,14541,14557,114,4,2,59,99,14548,14550,1,8858,5,244,1,59,14555,1,244,59,1,1086,4,5,97,98,105,111,115,14572,14577,14583,14587,14591,115,104,59,1,8861,108,97,99,59,1,337,118,59,1,10808,116,59,1,8857,111,108,100,59,1,10684,108,105,103,59,1,339,4,2,99,114,14609,14614,105,114,59,1,10687,59,3,55349,56620,4,3,111,114,116,14626,14630,14640,110,59,1,731,97,118,101,5,242,1,59,14638,1,242,59,1,10689,4,2,98,109,14649,14654,97,114,59,1,10677,59,1,937,110,116,59,1,8750,4,4,97,99,105,116,14672,14677,14693,14698,114,114,59,1,8634,4,2,105,114,14683,14687,114,59,1,10686,111,115,115,59,1,10683,110,101,59,1,8254,59,1,10688,4,3,97,101,105,14709,14714,14719,99,114,59,1,333,103,97,59,1,969,4,3,99,100,110,14727,14733,14736,114,111,110,59,1,959,59,1,10678,117,115,59,1,8854,112,102,59,3,55349,56672,4,3,97,101,108,14755,14759,14764,114,59,1,10679,114,112,59,1,10681,117,115,59,1,8853,4,7,59,97,100,105,111,115,118,14785,14787,14792,14831,14837,14841,14848,1,8744,114,114,59,1,8635,4,4,59,101,102,109,14802,14804,14817,14824,1,10845,114,4,2,59,111,14811,14813,1,8500,102,59,1,8500,5,170,1,59,14822,1,170,5,186,1,59,14829,1,186,103,111,102,59,1,8886,114,59,1,10838,108,111,112,101,59,1,10839,59,1,10843,4,3,99,108,111,14859,14863,14873,114,59,1,8500,97,115,104,5,248,1,59,14871,1,248,108,59,1,8856,105,4,2,108,109,14884,14893,100,101,5,245,1,59,14891,1,245,101,115,4,2,59,97,14901,14903,1,8855,115,59,1,10806,109,108,5,246,1,59,14914,1,246,98,97,114,59,1,9021,4,12,97,99,101,102,104,105,108,109,111,114,115,117,14948,14992,14996,15033,15038,15068,15090,15189,15192,15222,15427,15441,114,4,4,59,97,115,116,14959,14961,14976,14989,1,8741,5,182,2,59,108,14968,14970,1,182,108,101,108,59,1,8741,4,2,105,108,14982,14986,109,59,1,10995,59,1,11005,59,1,8706,121,59,1,1087,114,4,5,99,105,109,112,116,15009,15014,15019,15024,15027,110,116,59,1,37,111,100,59,1,46,105,108,59,1,8240,59,1,8869,101,110,107,59,1,8241,114,59,3,55349,56621,4,3,105,109,111,15046,15057,15063,4,2,59,118,15052,15054,1,966,59,1,981,109,97,116,59,1,8499,110,101,59,1,9742,4,3,59,116,118,15076,15078,15087,1,960,99,104,102,111,114,107,59,1,8916,59,1,982,4,2,97,117,15096,15119,110,4,2,99,107,15103,15115,107,4,2,59,104,15110,15112,1,8463,59,1,8462,118,59,1,8463,115,4,9,59,97,98,99,100,101,109,115,116,15140,15142,15148,15151,15156,15168,15171,15179,15184,1,43,99,105,114,59,1,10787,59,1,8862,105,114,59,1,10786,4,2,111,117,15162,15165,59,1,8724,59,1,10789,59,1,10866,110,5,177,1,59,15177,1,177,105,109,59,1,10790,119,111,59,1,10791,59,1,177,4,3,105,112,117,15200,15208,15213,110,116,105,110,116,59,1,10773,102,59,3,55349,56673,110,100,5,163,1,59,15220,1,163,4,10,59,69,97,99,101,105,110,111,115,117,15244,15246,15249,15253,15258,15334,15347,15367,15416,15421,1,8826,59,1,10931,112,59,1,10935,117,101,59,1,8828,4,2,59,99,15264,15266,1,10927,4,6,59,97,99,101,110,115,15280,15282,15290,15299,15303,15329,1,8826,112,112,114,111,120,59,1,10935,117,114,108,121,101,113,59,1,8828,113,59,1,10927,4,3,97,101,115,15311,15319,15324,112,112,114,111,120,59,1,10937,113,113,59,1,10933,105,109,59,1,8936,105,109,59,1,8830,109,101,4,2,59,115,15342,15344,1,8242,59,1,8473,4,3,69,97,115,15355,15358,15362,59,1,10933,112,59,1,10937,105,109,59,1,8936,4,3,100,102,112,15375,15378,15404,59,1,8719,4,3,97,108,115,15386,15392,15398,108,97,114,59,1,9006,105,110,101,59,1,8978,117,114,102,59,1,8979,4,2,59,116,15410,15412,1,8733,111,59,1,8733,105,109,59,1,8830,114,101,108,59,1,8880,4,2,99,105,15433,15438,114,59,3,55349,56517,59,1,968,110,99,115,112,59,1,8200,4,6,102,105,111,112,115,117,15462,15467,15472,15478,15485,15491,114,59,3,55349,56622,110,116,59,1,10764,112,102,59,3,55349,56674,114,105,109,101,59,1,8279,99,114,59,3,55349,56518,4,3,97,101,111,15499,15520,15534,116,4,2,101,105,15506,15515,114,110,105,111,110,115,59,1,8461,110,116,59,1,10774,115,116,4,2,59,101,15528,15530,1,63,113,59,1,8799,116,5,34,1,59,15540,1,34,4,21,65,66,72,97,98,99,100,101,102,104,105,108,109,110,111,112,114,115,116,117,120,15586,15609,15615,15620,15796,15855,15893,15931,15977,16001,16039,16183,16204,16222,16228,16285,16312,16318,16363,16408,16416,4,3,97,114,116,15594,15599,15603,114,114,59,1,8667,114,59,1,8658,97,105,108,59,1,10524,97,114,114,59,1,10511,97,114,59,1,10596,4,7,99,100,101,110,113,114,116,15636,15651,15656,15664,15687,15696,15770,4,2,101,117,15642,15646,59,3,8765,817,116,101,59,1,341,105,99,59,1,8730,109,112,116,121,118,59,1,10675,103,4,4,59,100,101,108,15675,15677,15680,15683,1,10217,59,1,10642,59,1,10661,101,59,1,10217,117,111,5,187,1,59,15694,1,187,114,4,11,59,97,98,99,102,104,108,112,115,116,119,15721,15723,15727,15739,15742,15746,15750,15754,15758,15763,15767,1,8594,112,59,1,10613,4,2,59,102,15733,15735,1,8677,115,59,1,10528,59,1,10547,115,59,1,10526,107,59,1,8618,112,59,1,8620,108,59,1,10565,105,109,59,1,10612,108,59,1,8611,59,1,8605,4,2,97,105,15776,15781,105,108,59,1,10522,111,4,2,59,110,15788,15790,1,8758,97,108,115,59,1,8474,4,3,97,98,114,15804,15809,15814,114,114,59,1,10509,114,107,59,1,10099,4,2,97,107,15820,15833,99,4,2,101,107,15827,15830,59,1,125,59,1,93,4,2,101,115,15839,15842,59,1,10636,108,4,2,100,117,15849,15852,59,1,10638,59,1,10640,4,4,97,101,117,121,15865,15871,15886,15890,114,111,110,59,1,345,4,2,100,105,15877,15882,105,108,59,1,343,108,59,1,8969,98,59,1,125,59,1,1088,4,4,99,108,113,115,15903,15907,15914,15927,97,59,1,10551,100,104,97,114,59,1,10601,117,111,4,2,59,114,15922,15924,1,8221,59,1,8221,104,59,1,8627,4,3,97,99,103,15939,15966,15970,108,4,4,59,105,112,115,15950,15952,15957,15963,1,8476,110,101,59,1,8475,97,114,116,59,1,8476,59,1,8477,116,59,1,9645,5,174,1,59,15975,1,174,4,3,105,108,114,15985,15991,15997,115,104,116,59,1,10621,111,111,114,59,1,8971,59,3,55349,56623,4,2,97,111,16007,16028,114,4,2,100,117,16014,16017,59,1,8641,4,2,59,108,16023,16025,1,8640,59,1,10604,4,2,59,118,16034,16036,1,961,59,1,1009,4,3,103,110,115,16047,16167,16171,104,116,4,6,97,104,108,114,115,116,16063,16081,16103,16130,16143,16155,114,114,111,119,4,2,59,116,16073,16075,1,8594,97,105,108,59,1,8611,97,114,112,111,111,110,4,2,100,117,16093,16099,111,119,110,59,1,8641,112,59,1,8640,101,102,116,4,2,97,104,16112,16120,114,114,111,119,115,59,1,8644,97,114,112,111,111,110,115,59,1,8652,105,103,104,116,97,114,114,111,119,115,59,1,8649,113,117,105,103,97,114,114,111,119,59,1,8605,104,114,101,101,116,105,109,101,115,59,1,8908,103,59,1,730,105,110,103,100,111,116,115,101,113,59,1,8787,4,3,97,104,109,16191,16196,16201,114,114,59,1,8644,97,114,59,1,8652,59,1,8207,111,117,115,116,4,2,59,97,16214,16216,1,9137,99,104,101,59,1,9137,109,105,100,59,1,10990,4,4,97,98,112,116,16238,16252,16257,16278,4,2,110,114,16244,16248,103,59,1,10221,114,59,1,8702,114,107,59,1,10215,4,3,97,102,108,16265,16269,16273,114,59,1,10630,59,3,55349,56675,117,115,59,1,10798,105,109,101,115,59,1,10805,4,2,97,112,16291,16304,114,4,2,59,103,16298,16300,1,41,116,59,1,10644,111,108,105,110,116,59,1,10770,97,114,114,59,1,8649,4,4,97,99,104,113,16328,16334,16339,16342,113,117,111,59,1,8250,114,59,3,55349,56519,59,1,8625,4,2,98,117,16348,16351,59,1,93,111,4,2,59,114,16358,16360,1,8217,59,1,8217,4,3,104,105,114,16371,16377,16383,114,101,101,59,1,8908,109,101,115,59,1,8906,105,4,4,59,101,102,108,16394,16396,16399,16402,1,9657,59,1,8885,59,1,9656,116,114,105,59,1,10702,108,117,104,97,114,59,1,10600,59,1,8478,4,19,97,98,99,100,101,102,104,105,108,109,111,112,113,114,115,116,117,119,122,16459,16466,16472,16572,16590,16672,16687,16746,16844,16850,16924,16963,16988,17115,17121,17154,17206,17614,17656,99,117,116,101,59,1,347,113,117,111,59,1,8218,4,10,59,69,97,99,101,105,110,112,115,121,16494,16496,16499,16513,16518,16531,16536,16556,16564,16569,1,8827,59,1,10932,4,2,112,114,16505,16508,59,1,10936,111,110,59,1,353,117,101,59,1,8829,4,2,59,100,16524,16526,1,10928,105,108,59,1,351,114,99,59,1,349,4,3,69,97,115,16544,16547,16551,59,1,10934,112,59,1,10938,105,109,59,1,8937,111,108,105,110,116,59,1,10771,105,109,59,1,8831,59,1,1089,111,116,4,3,59,98,101,16582,16584,16587,1,8901,59,1,8865,59,1,10854,4,7,65,97,99,109,115,116,120,16606,16611,16634,16642,16646,16652,16668,114,114,59,1,8664,114,4,2,104,114,16618,16622,107,59,1,10533,4,2,59,111,16628,16630,1,8600,119,59,1,8600,116,5,167,1,59,16640,1,167,105,59,1,59,119,97,114,59,1,10537,109,4,2,105,110,16659,16665,110,117,115,59,1,8726,59,1,8726,116,59,1,10038,114,4,2,59,111,16679,16682,3,55349,56624,119,110,59,1,8994,4,4,97,99,111,121,16697,16702,16716,16739,114,112,59,1,9839,4,2,104,121,16708,16713,99,121,59,1,1097,59,1,1096,114,116,4,2,109,112,16724,16729,105,100,59,1,8739,97,114,97,108,108,101,108,59,1,8741,5,173,1,59,16744,1,173,4,2,103,109,16752,16770,109,97,4,3,59,102,118,16762,16764,16767,1,963,59,1,962,59,1,962,4,8,59,100,101,103,108,110,112,114,16788,16790,16795,16806,16817,16828,16832,16838,1,8764,111,116,59,1,10858,4,2,59,113,16801,16803,1,8771,59,1,8771,4,2,59,69,16812,16814,1,10910,59,1,10912,4,2,59,69,16823,16825,1,10909,59,1,10911,101,59,1,8774,108,117,115,59,1,10788,97,114,114,59,1,10610,97,114,114,59,1,8592,4,4,97,101,105,116,16860,16883,16891,16904,4,2,108,115,16866,16878,108,115,101,116,109,105,110,117,115,59,1,8726,104,112,59,1,10803,112,97,114,115,108,59,1,10724,4,2,100,108,16897,16900,59,1,8739,101,59,1,8995,4,2,59,101,16910,16912,1,10922,4,2,59,115,16918,16920,1,10924,59,3,10924,65024,4,3,102,108,112,16932,16938,16958,116,99,121,59,1,1100,4,2,59,98,16944,16946,1,47,4,2,59,97,16952,16954,1,10692,114,59,1,9023,102,59,3,55349,56676,97,4,2,100,114,16970,16985,101,115,4,2,59,117,16978,16980,1,9824,105,116,59,1,9824,59,1,8741,4,3,99,115,117,16996,17028,17089,4,2,97,117,17002,17015,112,4,2,59,115,17009,17011,1,8851,59,3,8851,65024,112,4,2,59,115,17022,17024,1,8852,59,3,8852,65024,117,4,2,98,112,17035,17062,4,3,59,101,115,17043,17045,17048,1,8847,59,1,8849,101,116,4,2,59,101,17056,17058,1,8847,113,59,1,8849,4,3,59,101,115,17070,17072,17075,1,8848,59,1,8850,101,116,4,2,59,101,17083,17085,1,8848,113,59,1,8850,4,3,59,97,102,17097,17099,17112,1,9633,114,4,2,101,102,17106,17109,59,1,9633,59,1,9642,59,1,9642,97,114,114,59,1,8594,4,4,99,101,109,116,17131,17136,17142,17148,114,59,3,55349,56520,116,109,110,59,1,8726,105,108,101,59,1,8995,97,114,102,59,1,8902,4,2,97,114,17160,17172,114,4,2,59,102,17167,17169,1,9734,59,1,9733,4,2,97,110,17178,17202,105,103,104,116,4,2,101,112,17188,17197,112,115,105,108,111,110,59,1,1013,104,105,59,1,981,115,59,1,175,4,5,98,99,109,110,112,17218,17351,17420,17423,17427,4,9,59,69,100,101,109,110,112,114,115,17238,17240,17243,17248,17261,17267,17279,17285,17291,1,8834,59,1,10949,111,116,59,1,10941,4,2,59,100,17254,17256,1,8838,111,116,59,1,10947,117,108,116,59,1,10945,4,2,69,101,17273,17276,59,1,10955,59,1,8842,108,117,115,59,1,10943,97,114,114,59,1,10617,4,3,101,105,117,17299,17335,17339,116,4,3,59,101,110,17308,17310,17322,1,8834,113,4,2,59,113,17317,17319,1,8838,59,1,10949,101,113,4,2,59,113,17330,17332,1,8842,59,1,10955,109,59,1,10951,4,2,98,112,17345,17348,59,1,10965,59,1,10963,99,4,6,59,97,99,101,110,115,17366,17368,17376,17385,17389,17415,1,8827,112,112,114,111,120,59,1,10936,117,114,108,121,101,113,59,1,8829,113,59,1,10928,4,3,97,101,115,17397,17405,17410,112,112,114,111,120,59,1,10938,113,113,59,1,10934,105,109,59,1,8937,105,109,59,1,8831,59,1,8721,103,59,1,9834,4,13,49,50,51,59,69,100,101,104,108,109,110,112,115,17455,17462,17469,17476,17478,17481,17496,17509,17524,17530,17536,17548,17554,5,185,1,59,17460,1,185,5,178,1,59,17467,1,178,5,179,1,59,17474,1,179,1,8835,59,1,10950,4,2,111,115,17487,17491,116,59,1,10942,117,98,59,1,10968,4,2,59,100,17502,17504,1,8839,111,116,59,1,10948,115,4,2,111,117,17516,17520,108,59,1,10185,98,59,1,10967,97,114,114,59,1,10619,117,108,116,59,1,10946,4,2,69,101,17542,17545,59,1,10956,59,1,8843,108,117,115,59,1,10944,4,3,101,105,117,17562,17598,17602,116,4,3,59,101,110,17571,17573,17585,1,8835,113,4,2,59,113,17580,17582,1,8839,59,1,10950,101,113,4,2,59,113,17593,17595,1,8843,59,1,10956,109,59,1,10952,4,2,98,112,17608,17611,59,1,10964,59,1,10966,4,3,65,97,110,17622,17627,17650,114,114,59,1,8665,114,4,2,104,114,17634,17638,107,59,1,10534,4,2,59,111,17644,17646,1,8601,119,59,1,8601,119,97,114,59,1,10538,108,105,103,5,223,1,59,17664,1,223,4,13,97,98,99,100,101,102,104,105,111,112,114,115,119,17694,17709,17714,17737,17742,17749,17754,17860,17905,17957,17964,18090,18122,4,2,114,117,17700,17706,103,101,116,59,1,8982,59,1,964,114,107,59,1,9140,4,3,97,101,121,17722,17728,17734,114,111,110,59,1,357,100,105,108,59,1,355,59,1,1090,111,116,59,1,8411,108,114,101,99,59,1,8981,114,59,3,55349,56625,4,4,101,105,107,111,17764,17805,17836,17851,4,2,114,116,17770,17786,101,4,2,52,102,17777,17780,59,1,8756,111,114,101,59,1,8756,97,4,3,59,115,118,17795,17797,17802,1,952,121,109,59,1,977,59,1,977,4,2,99,110,17811,17831,107,4,2,97,115,17818,17826,112,112,114,111,120,59,1,8776,105,109,59,1,8764,115,112,59,1,8201,4,2,97,115,17842,17846,112,59,1,8776,105,109,59,1,8764,114,110,5,254,1,59,17858,1,254,4,3,108,109,110,17868,17873,17901,100,101,59,1,732,101,115,5,215,3,59,98,100,17884,17886,17898,1,215,4,2,59,97,17892,17894,1,8864,114,59,1,10801,59,1,10800,116,59,1,8749,4,3,101,112,115,17913,17917,17953,97,59,1,10536,4,4,59,98,99,102,17927,17929,17934,17939,1,8868,111,116,59,1,9014,105,114,59,1,10993,4,2,59,111,17945,17948,3,55349,56677,114,107,59,1,10970,97,59,1,10537,114,105,109,101,59,1,8244,4,3,97,105,112,17972,17977,18082,100,101,59,1,8482,4,7,97,100,101,109,112,115,116,17993,18051,18056,18059,18066,18072,18076,110,103,108,101,4,5,59,100,108,113,114,18009,18011,18017,18032,18035,1,9653,111,119,110,59,1,9663,101,102,116,4,2,59,101,18026,18028,1,9667,113,59,1,8884,59,1,8796,105,103,104,116,4,2,59,101,18045,18047,1,9657,113,59,1,8885,111,116,59,1,9708,59,1,8796,105,110,117,115,59,1,10810,108,117,115,59,1,10809,98,59,1,10701,105,109,101,59,1,10811,101,122,105,117,109,59,1,9186,4,3,99,104,116,18098,18111,18116,4,2,114,121,18104,18108,59,3,55349,56521,59,1,1094,99,121,59,1,1115,114,111,107,59,1,359,4,2,105,111,18128,18133,120,116,59,1,8812,104,101,97,100,4,2,108,114,18143,18154,101,102,116,97,114,114,111,119,59,1,8606,105,103,104,116,97,114,114,111,119,59,1,8608,4,18,65,72,97,98,99,100,102,103,104,108,109,111,112,114,115,116,117,119,18204,18209,18214,18234,18250,18268,18292,18308,18319,18343,18379,18397,18413,18504,18547,18553,18584,18603,114,114,59,1,8657,97,114,59,1,10595,4,2,99,114,18220,18230,117,116,101,5,250,1,59,18228,1,250,114,59,1,8593,114,4,2,99,101,18241,18245,121,59,1,1118,118,101,59,1,365,4,2,105,121,18256,18265,114,99,5,251,1,59,18263,1,251,59,1,1091,4,3,97,98,104,18276,18281,18287,114,114,59,1,8645,108,97,99,59,1,369,97,114,59,1,10606,4,2,105,114,18298,18304,115,104,116,59,1,10622,59,3,55349,56626,114,97,118,101,5,249,1,59,18317,1,249,4,2,97,98,18325,18338,114,4,2,108,114,18332,18335,59,1,8639,59,1,8638,108,107,59,1,9600,4,2,99,116,18349,18374,4,2,111,114,18355,18369,114,110,4,2,59,101,18363,18365,1,8988,114,59,1,8988,111,112,59,1,8975,114,105,59,1,9720,4,2,97,108,18385,18390,99,114,59,1,363,5,168,1,59,18395,1,168,4,2,103,112,18403,18408,111,110,59,1,371,102,59,3,55349,56678,4,6,97,100,104,108,115,117,18427,18434,18445,18470,18475,18494,114,114,111,119,59,1,8593,111,119,110,97,114,114,111,119,59,1,8597,97,114,112,111,111,110,4,2,108,114,18457,18463,101,102,116,59,1,8639,105,103,104,116,59,1,8638,117,115,59,1,8846,105,4,3,59,104,108,18484,18486,18489,1,965,59,1,978,111,110,59,1,965,112,97,114,114,111,119,115,59,1,8648,4,3,99,105,116,18512,18537,18542,4,2,111,114,18518,18532,114,110,4,2,59,101,18526,18528,1,8989,114,59,1,8989,111,112,59,1,8974,110,103,59,1,367,114,105,59,1,9721,99,114,59,3,55349,56522,4,3,100,105,114,18561,18566,18572,111,116,59,1,8944,108,100,101,59,1,361,105,4,2,59,102,18579,18581,1,9653,59,1,9652,4,2,97,109,18590,18595,114,114,59,1,8648,108,5,252,1,59,18601,1,252,97,110,103,108,101,59,1,10663,4,15,65,66,68,97,99,100,101,102,108,110,111,112,114,115,122,18643,18648,18661,18667,18847,18851,18857,18904,18909,18915,18931,18937,18943,18949,18996,114,114,59,1,8661,97,114,4,2,59,118,18656,18658,1,10984,59,1,10985,97,115,104,59,1,8872,4,2,110,114,18673,18679,103,114,116,59,1,10652,4,7,101,107,110,112,114,115,116,18695,18704,18711,18720,18742,18754,18810,112,115,105,108,111,110,59,1,1013,97,112,112,97,59,1,1008,111,116,104,105,110,103,59,1,8709,4,3,104,105,114,18728,18732,18735,105,59,1,981,59,1,982,111,112,116,111,59,1,8733,4,2,59,104,18748,18750,1,8597,111,59,1,1009,4,2,105,117,18760,18766,103,109,97,59,1,962,4,2,98,112,18772,18791,115,101,116,110,101,113,4,2,59,113,18784,18787,3,8842,65024,59,3,10955,65024,115,101,116,110,101,113,4,2,59,113,18803,18806,3,8843,65024,59,3,10956,65024,4,2,104,114,18816,18822,101,116,97,59,1,977,105,97,110,103,108,101,4,2,108,114,18834,18840,101,102,116,59,1,8882,105,103,104,116,59,1,8883,121,59,1,1074,97,115,104,59,1,8866,4,3,101,108,114,18865,18884,18890,4,3,59,98,101,18873,18875,18880,1,8744,97,114,59,1,8891,113,59,1,8794,108,105,112,59,1,8942,4,2,98,116,18896,18901,97,114,59,1,124,59,1,124,114,59,3,55349,56627,116,114,105,59,1,8882,115,117,4,2,98,112,18923,18927,59,3,8834,8402,59,3,8835,8402,112,102,59,3,55349,56679,114,111,112,59,1,8733,116,114,105,59,1,8883,4,2,99,117,18955,18960,114,59,3,55349,56523,4,2,98,112,18966,18981,110,4,2,69,101,18973,18977,59,3,10955,65024,59,3,8842,65024,110,4,2,69,101,18988,18992,59,3,10956,65024,59,3,8843,65024,105,103,122,97,103,59,1,10650,4,7,99,101,102,111,112,114,115,19020,19026,19061,19066,19072,19075,19089,105,114,99,59,1,373,4,2,100,105,19032,19055,4,2,98,103,19038,19043,97,114,59,1,10847,101,4,2,59,113,19050,19052,1,8743,59,1,8793,101,114,112,59,1,8472,114,59,3,55349,56628,112,102,59,3,55349,56680,59,1,8472,4,2,59,101,19081,19083,1,8768,97,116,104,59,1,8768,99,114,59,3,55349,56524,4,14,99,100,102,104,105,108,109,110,111,114,115,117,118,119,19125,19146,19152,19157,19173,19176,19192,19197,19202,19236,19252,19269,19286,19291,4,3,97,105,117,19133,19137,19142,112,59,1,8898,114,99,59,1,9711,112,59,1,8899,116,114,105,59,1,9661,114,59,3,55349,56629,4,2,65,97,19163,19168,114,114,59,1,10234,114,114,59,1,10231,59,1,958,4,2,65,97,19182,19187,114,114,59,1,10232,114,114,59,1,10229,97,112,59,1,10236,105,115,59,1,8955,4,3,100,112,116,19210,19215,19230,111,116,59,1,10752,4,2,102,108,19221,19225,59,3,55349,56681,117,115,59,1,10753,105,109,101,59,1,10754,4,2,65,97,19242,19247,114,114,59,1,10233,114,114,59,1,10230,4,2,99,113,19258,19263,114,59,3,55349,56525,99,117,112,59,1,10758,4,2,112,116,19275,19281,108,117,115,59,1,10756,114,105,59,1,9651,101,101,59,1,8897,101,100,103,101,59,1,8896,4,8,97,99,101,102,105,111,115,117,19316,19335,19349,19357,19362,19367,19373,19379,99,4,2,117,121,19323,19332,116,101,5,253,1,59,19330,1,253,59,1,1103,4,2,105,121,19341,19346,114,99,59,1,375,59,1,1099,110,5,165,1,59,19355,1,165,114,59,3,55349,56630,99,121,59,1,1111,112,102,59,3,55349,56682,99,114,59,3,55349,56526,4,2,99,109,19385,19389,121,59,1,1102,108,5,255,1,59,19395,1,255,4,10,97,99,100,101,102,104,105,111,115,119,19419,19426,19441,19446,19462,19467,19472,19480,19486,19492,99,117,116,101,59,1,378,4,2,97,121,19432,19438,114,111,110,59,1,382,59,1,1079,111,116,59,1,380,4,2,101,116,19452,19458,116,114,102,59,1,8488,97,59,1,950,114,59,3,55349,56631,99,121,59,1,1078,103,114,97,114,114,59,1,8669,112,102,59,3,55349,56683,99,114,59,3,55349,56527,4,2,106,110,19498,19501,59,1,8205,106,59,1,8204]);","'use strict';\n\nconst unicode = require('../common/unicode');\nconst ERR = require('../common/error-codes');\n\n//Aliases\nconst $ = unicode.CODE_POINTS;\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n constructor() {\n this.html = null;\n\n this.pos = -1;\n this.lastGapPos = -1;\n this.lastCharPos = -1;\n\n this.gapStack = [];\n\n this.skipNextNewLine = false;\n\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n }\n\n _err() {\n // NOTE: err reporting is noop by default. Enabled by mixin.\n }\n\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.lastCharPos) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n\n if (unicode.isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n\n //NOTE: add gap that should be avoided during retreat\n this._addGap();\n\n return unicode.getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n\n //NOTE: we are at the end of a chunk, therefore we can't infer surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n\n return cp;\n }\n\n dropParsedChunk() {\n if (this.pos > this.bufferWaterline) {\n this.lastCharPos -= this.pos;\n this.html = this.html.substring(this.pos);\n this.pos = 0;\n this.lastGapPos = -1;\n this.gapStack = [];\n }\n }\n\n write(chunk, isLastChunk) {\n if (this.html) {\n this.html += chunk;\n } else {\n this.html = chunk;\n }\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);\n\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n }\n\n advance() {\n this.pos++;\n\n if (this.pos > this.lastCharPos) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n\n let cp = this.html.charCodeAt(this.pos);\n\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (this.skipNextNewLine && cp === $.LINE_FEED) {\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n\n this.skipNextNewLine = false;\n\n if (unicode.isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange =\n (cp > 0x1f && cp < 0x7f) || cp === $.LINE_FEED || cp === $.CARRIAGE_RETURN || (cp > 0x9f && cp < 0xfdd0);\n\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n\n return cp;\n }\n\n _checkForProblematicCharacters(cp) {\n if (unicode.isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n } else if (unicode.isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n\n retreat() {\n if (this.pos === this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n\n this.pos--;\n }\n}\n\nmodule.exports = Preprocessor;\n","'use strict';\n\nconst { DOCUMENT_MODE } = require('../common/html');\n\n//Node construction\nexports.createDocument = function() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: []\n };\n};\n\nexports.createDocumentFragment = function() {\n return {\n nodeName: '#document-fragment',\n childNodes: []\n };\n};\n\nexports.createElement = function(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName: tagName,\n attrs: attrs,\n namespaceURI: namespaceURI,\n childNodes: [],\n parentNode: null\n };\n};\n\nexports.createCommentNode = function(data) {\n return {\n nodeName: '#comment',\n data: data,\n parentNode: null\n };\n};\n\nconst createTextNode = function(value) {\n return {\n nodeName: '#text',\n value: value,\n parentNode: null\n };\n};\n\n//Tree mutation\nconst appendChild = (exports.appendChild = function(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n});\n\nconst insertBefore = (exports.insertBefore = function(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n});\n\nexports.setTemplateContent = function(templateElement, contentElement) {\n templateElement.content = contentElement;\n};\n\nexports.getTemplateContent = function(templateElement) {\n return templateElement.content;\n};\n\nexports.setDocumentType = function(document, name, publicId, systemId) {\n let doctypeNode = null;\n\n for (let i = 0; i < document.childNodes.length; i++) {\n if (document.childNodes[i].nodeName === '#documentType') {\n doctypeNode = document.childNodes[i];\n break;\n }\n }\n\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n } else {\n appendChild(document, {\n nodeName: '#documentType',\n name: name,\n publicId: publicId,\n systemId: systemId\n });\n }\n};\n\nexports.setDocumentMode = function(document, mode) {\n document.mode = mode;\n};\n\nexports.getDocumentMode = function(document) {\n return document.mode;\n};\n\nexports.detachNode = function(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n};\n\nexports.insertText = function(parentNode, text) {\n if (parentNode.childNodes.length) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n\n if (prevNode.nodeName === '#text') {\n prevNode.value += text;\n return;\n }\n }\n\n appendChild(parentNode, createTextNode(text));\n};\n\nexports.insertTextBefore = function(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n\n if (prevNode && prevNode.nodeName === '#text') {\n prevNode.value += text;\n } else {\n insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n};\n\nexports.adoptAttributes = function(recipient, attrs) {\n const recipientAttrsMap = [];\n\n for (let i = 0; i < recipient.attrs.length; i++) {\n recipientAttrsMap.push(recipient.attrs[i].name);\n }\n\n for (let j = 0; j < attrs.length; j++) {\n if (recipientAttrsMap.indexOf(attrs[j].name) === -1) {\n recipient.attrs.push(attrs[j]);\n }\n }\n};\n\n//Tree traversing\nexports.getFirstChild = function(node) {\n return node.childNodes[0];\n};\n\nexports.getChildNodes = function(node) {\n return node.childNodes;\n};\n\nexports.getParentNode = function(node) {\n return node.parentNode;\n};\n\nexports.getAttrList = function(element) {\n return element.attrs;\n};\n\n//Node data\nexports.getTagName = function(element) {\n return element.tagName;\n};\n\nexports.getNamespaceURI = function(element) {\n return element.namespaceURI;\n};\n\nexports.getTextNodeContent = function(textNode) {\n return textNode.value;\n};\n\nexports.getCommentNodeContent = function(commentNode) {\n return commentNode.data;\n};\n\nexports.getDocumentTypeNodeName = function(doctypeNode) {\n return doctypeNode.name;\n};\n\nexports.getDocumentTypeNodePublicId = function(doctypeNode) {\n return doctypeNode.publicId;\n};\n\nexports.getDocumentTypeNodeSystemId = function(doctypeNode) {\n return doctypeNode.systemId;\n};\n\n//Node types\nexports.isTextNode = function(node) {\n return node.nodeName === '#text';\n};\n\nexports.isCommentNode = function(node) {\n return node.nodeName === '#comment';\n};\n\nexports.isDocumentTypeNode = function(node) {\n return node.nodeName === '#documentType';\n};\n\nexports.isElementNode = function(node) {\n return !!node.tagName;\n};\n\n// Source code location\nexports.setNodeSourceCodeLocation = function(node, location) {\n node.sourceCodeLocation = location;\n};\n\nexports.getNodeSourceCodeLocation = function(node) {\n return node.sourceCodeLocation;\n};\n\nexports.updateNodeSourceCodeLocation = function(node, endLocation) {\n node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n};\n","'use strict';\n\nmodule.exports = function mergeOptions(defaults, options) {\n options = options || Object.create(null);\n\n return [defaults, options].reduce((merged, optObj) => {\n Object.keys(optObj).forEach(key => {\n merged[key] = optObj[key];\n });\n\n return merged;\n }, Object.create(null));\n};\n","'use strict';\n\nclass Mixin {\n constructor(host) {\n const originalMethods = {};\n const overriddenMethods = this._getOverriddenMethods(this, originalMethods);\n\n for (const key of Object.keys(overriddenMethods)) {\n if (typeof overriddenMethods[key] === 'function') {\n originalMethods[key] = host[key];\n host[key] = overriddenMethods[key];\n }\n }\n }\n\n _getOverriddenMethods() {\n throw new Error('Not implemented');\n }\n}\n\nMixin.install = function(host, Ctor, opts) {\n if (!host.__mixins) {\n host.__mixins = [];\n }\n\n for (let i = 0; i < host.__mixins.length; i++) {\n if (host.__mixins[i].constructor === Ctor) {\n return host.__mixins[i];\n }\n }\n\n const mixin = new Ctor(host, opts);\n\n host.__mixins.push(mixin);\n\n return mixin;\n};\n\nmodule.exports = Mixin;\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = format;\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\nfunction toTitleCase(string) {\n return string.toString().trim().replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== \":\" && (title.charAt(index + match.length) !== \"-\" || title.charAt(index - 1) === \"-\") && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}\n\n// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nfunction mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return typeof s === \"string\" && s.indexOf(\"@\") !== -1;\n}\nvar redacted = \"REDACTED (Potential Email Address)\";\nfunction redactEmail(string) {\n if (mightBeEmail(string)) {\n console.warn(\"This arg looks like an email address, redacting.\");\n return redacted;\n }\n return string;\n}\nfunction format() {\n var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var titleCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var redactingEmail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var _str = s || \"\";\n if (titleCase) {\n _str = toTitleCase(s);\n }\n if (redactingEmail) {\n _str = redactEmail(_str);\n }\n return _str;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.GA4 = void 0;\nvar _gtag = _interopRequireDefault(require(\"./gtag\"));\nvar _format = _interopRequireDefault(require(\"./format\"));\nvar _excluded = [\"eventCategory\", \"eventAction\", \"eventLabel\", \"eventValue\", \"hitType\"],\n _excluded2 = [\"title\", \"location\"],\n _excluded3 = [\"page\", \"hitType\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*\nLinks\nhttps://developers.google.com/gtagjs/reference/api\nhttps://developers.google.com/tag-platform/gtagjs/reference\n*/\n/**\n * @typedef GaOptions\n * @type {Object}\n * @property {boolean} [cookieUpdate=true]\n * @property {number} [cookieExpires=63072000] Default two years\n * @property {string} [cookieDomain=\"auto\"]\n * @property {string} [cookieFlags]\n * @property {string} [userId]\n * @property {string} [clientId]\n * @property {boolean} [anonymizeIp]\n * @property {string} [contentGroup1]\n * @property {string} [contentGroup2]\n * @property {string} [contentGroup3]\n * @property {string} [contentGroup4]\n * @property {string} [contentGroup5]\n * @property {boolean} [allowAdFeatures=true]\n * @property {boolean} [allowAdPersonalizationSignals]\n * @property {boolean} [nonInteraction]\n * @property {string} [page]\n */\n/**\n * @typedef UaEventOptions\n * @type {Object}\n * @property {string} action\n * @property {string} category\n * @property {string} [label]\n * @property {number} [value]\n * @property {boolean} [nonInteraction]\n * @property {('beacon'|'xhr'|'image')} [transport]\n */\n/**\n * @typedef InitOptions\n * @type {Object}\n * @property {string} trackingId\n * @property {GaOptions|any} [gaOptions]\n * @property {Object} [gtagOptions] New parameter\n */\nvar GA4 = /*#__PURE__*/function () {\n function GA4() {\n var _this = this;\n _classCallCheck(this, GA4);\n _defineProperty(this, \"reset\", function () {\n _this.isInitialized = false;\n _this._testMode = false;\n _this._currentMeasurementId;\n _this._hasLoadedGA = false;\n _this._isQueuing = false;\n _this._queueGtag = [];\n });\n _defineProperty(this, \"_gtag\", function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (!_this._testMode) {\n if (_this._isQueuing) {\n _this._queueGtag.push(args);\n } else {\n _gtag[\"default\"].apply(void 0, args);\n }\n } else {\n _this._queueGtag.push(args);\n }\n });\n _defineProperty(this, \"_loadGA\", function (GA_MEASUREMENT_ID, nonce) {\n var gtagUrl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"https://www.googletagmanager.com/gtag/js\";\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n if (!_this._hasLoadedGA) {\n // Global Site Tag (gtag.js) - Google Analytics\n var script = document.createElement(\"script\");\n script.async = true;\n script.src = \"\".concat(gtagUrl, \"?id=\").concat(GA_MEASUREMENT_ID);\n if (nonce) {\n script.setAttribute(\"nonce\", nonce);\n }\n document.body.appendChild(script);\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n window.dataLayer.push(arguments);\n };\n _this._hasLoadedGA = true;\n }\n });\n _defineProperty(this, \"_toGtagOptions\", function (gaOptions) {\n if (!gaOptions) {\n return;\n }\n var mapFields = {\n // Old https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#cookieUpdate\n // New https://developers.google.com/analytics/devguides/collection/gtagjs/cookies-user-id#cookie_update\n cookieUpdate: \"cookie_update\",\n cookieExpires: \"cookie_expires\",\n cookieDomain: \"cookie_domain\",\n cookieFlags: \"cookie_flags\",\n // must be in set method?\n userId: \"user_id\",\n clientId: \"client_id\",\n anonymizeIp: \"anonymize_ip\",\n // https://support.google.com/analytics/answer/2853546?hl=en#zippy=%2Cin-this-article\n contentGroup1: \"content_group1\",\n contentGroup2: \"content_group2\",\n contentGroup3: \"content_group3\",\n contentGroup4: \"content_group4\",\n contentGroup5: \"content_group5\",\n // https://support.google.com/analytics/answer/9050852?hl=en\n allowAdFeatures: \"allow_google_signals\",\n allowAdPersonalizationSignals: \"allow_ad_personalization_signals\",\n nonInteraction: \"non_interaction\",\n page: \"page_path\",\n hitCallback: \"event_callback\"\n };\n var gtagOptions = Object.entries(gaOptions).reduce(function (prev, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n if (mapFields[key]) {\n prev[mapFields[key]] = value;\n } else {\n prev[key] = value;\n }\n return prev;\n }, {});\n return gtagOptions;\n });\n _defineProperty(this, \"initialize\", function (GA_MEASUREMENT_ID) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!GA_MEASUREMENT_ID) {\n throw new Error(\"Require GA_MEASUREMENT_ID\");\n }\n var initConfigs = typeof GA_MEASUREMENT_ID === \"string\" ? [{\n trackingId: GA_MEASUREMENT_ID\n }] : GA_MEASUREMENT_ID;\n _this._currentMeasurementId = initConfigs[0].trackingId;\n var gaOptions = options.gaOptions,\n gtagOptions = options.gtagOptions,\n nonce = options.nonce,\n _options$testMode = options.testMode,\n testMode = _options$testMode === void 0 ? false : _options$testMode,\n gtagUrl = options.gtagUrl;\n _this._testMode = testMode;\n if (!testMode) {\n _this._loadGA(_this._currentMeasurementId, nonce, gtagUrl);\n }\n if (!_this.isInitialized) {\n _this._gtag(\"js\", new Date());\n initConfigs.forEach(function (config) {\n var mergedGtagOptions = _objectSpread(_objectSpread(_objectSpread({}, _this._toGtagOptions(_objectSpread(_objectSpread({}, gaOptions), config.gaOptions))), gtagOptions), config.gtagOptions);\n if (Object.keys(mergedGtagOptions).length) {\n _this._gtag(\"config\", config.trackingId, mergedGtagOptions);\n } else {\n _this._gtag(\"config\", config.trackingId);\n }\n });\n }\n _this.isInitialized = true;\n if (!testMode) {\n var queues = _toConsumableArray(_this._queueGtag);\n _this._queueGtag = [];\n _this._isQueuing = false;\n while (queues.length) {\n var queue = queues.shift();\n _this._gtag.apply(_this, _toConsumableArray(queue));\n if (queue[0] === \"get\") {\n _this._isQueuing = true;\n }\n }\n }\n });\n _defineProperty(this, \"set\", function (fieldsObject) {\n if (!fieldsObject) {\n console.warn(\"`fieldsObject` is required in .set()\");\n return;\n }\n if (_typeof(fieldsObject) !== \"object\") {\n console.warn(\"Expected `fieldsObject` arg to be an Object\");\n return;\n }\n if (Object.keys(fieldsObject).length === 0) {\n console.warn(\"empty `fieldsObject` given to .set()\");\n }\n _this._gaCommand(\"set\", fieldsObject);\n });\n _defineProperty(this, \"_gaCommandSendEvent\", function (eventCategory, eventAction, eventLabel, eventValue, fieldsObject) {\n _this._gtag(\"event\", eventAction, _objectSpread(_objectSpread({\n event_category: eventCategory,\n event_label: eventLabel,\n value: eventValue\n }, fieldsObject && {\n non_interaction: fieldsObject.nonInteraction\n }), _this._toGtagOptions(fieldsObject)));\n });\n _defineProperty(this, \"_gaCommandSendEventParameters\", function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommandSendEvent.apply(_this, _toConsumableArray(args.slice(1)));\n } else {\n var _args$ = args[0],\n eventCategory = _args$.eventCategory,\n eventAction = _args$.eventAction,\n eventLabel = _args$.eventLabel,\n eventValue = _args$.eventValue,\n hitType = _args$.hitType,\n rest = _objectWithoutProperties(_args$, _excluded);\n _this._gaCommandSendEvent(eventCategory, eventAction, eventLabel, eventValue, rest);\n }\n });\n _defineProperty(this, \"_gaCommandSendTiming\", function (timingCategory, timingVar, timingValue, timingLabel) {\n _this._gtag(\"event\", \"timing_complete\", {\n name: timingVar,\n value: timingValue,\n event_category: timingCategory,\n event_label: timingLabel\n });\n });\n _defineProperty(this, \"_gaCommandSendPageview\", function (page, fieldsObject) {\n if (fieldsObject && Object.keys(fieldsObject).length) {\n var _this$_toGtagOptions = _this._toGtagOptions(fieldsObject),\n title = _this$_toGtagOptions.title,\n location = _this$_toGtagOptions.location,\n rest = _objectWithoutProperties(_this$_toGtagOptions, _excluded2);\n _this._gtag(\"event\", \"page_view\", _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, page && {\n page_path: page\n }), title && {\n page_title: title\n }), location && {\n page_location: location\n }), rest));\n } else if (page) {\n _this._gtag(\"event\", \"page_view\", {\n page_path: page\n });\n } else {\n _this._gtag(\"event\", \"page_view\");\n }\n });\n _defineProperty(this, \"_gaCommandSendPageviewParameters\", function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommandSendPageview.apply(_this, _toConsumableArray(args.slice(1)));\n } else {\n var _args$2 = args[0],\n page = _args$2.page,\n hitType = _args$2.hitType,\n rest = _objectWithoutProperties(_args$2, _excluded3);\n _this._gaCommandSendPageview(page, rest);\n }\n });\n _defineProperty(this, \"_gaCommandSend\", function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n var hitType = typeof args[0] === \"string\" ? args[0] : args[0].hitType;\n switch (hitType) {\n case \"event\":\n _this._gaCommandSendEventParameters.apply(_this, args);\n break;\n case \"pageview\":\n _this._gaCommandSendPageviewParameters.apply(_this, args);\n break;\n case \"timing\":\n _this._gaCommandSendTiming.apply(_this, _toConsumableArray(args.slice(1)));\n break;\n case \"screenview\":\n case \"transaction\":\n case \"item\":\n case \"social\":\n case \"exception\":\n console.warn(\"Unsupported send command: \".concat(hitType));\n break;\n default:\n console.warn(\"Send command doesn't exist: \".concat(hitType));\n }\n });\n _defineProperty(this, \"_gaCommandSet\", function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n if (typeof args[0] === \"string\") {\n args[0] = _defineProperty({}, args[0], args[1]);\n }\n _this._gtag(\"set\", _this._toGtagOptions(args[0]));\n });\n _defineProperty(this, \"_gaCommand\", function (command) {\n for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n switch (command) {\n case \"send\":\n _this._gaCommandSend.apply(_this, args);\n break;\n case \"set\":\n _this._gaCommandSet.apply(_this, args);\n break;\n default:\n console.warn(\"Command doesn't exist: \".concat(command));\n }\n });\n _defineProperty(this, \"ga\", function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n if (typeof args[0] === \"string\") {\n _this._gaCommand.apply(_this, args);\n } else {\n var readyCallback = args[0];\n _this._gtag(\"get\", _this._currentMeasurementId, \"client_id\", function (clientId) {\n _this._isQueuing = false;\n var queues = _this._queueGtag;\n readyCallback({\n get: function get(property) {\n return property === \"clientId\" ? clientId : property === \"trackingId\" ? _this._currentMeasurementId : property === \"apiVersion\" ? \"1\" : undefined;\n }\n });\n while (queues.length) {\n var queue = queues.shift();\n _this._gtag.apply(_this, _toConsumableArray(queue));\n }\n });\n _this._isQueuing = true;\n }\n return _this.ga;\n });\n _defineProperty(this, \"event\", function (optionsOrName, params) {\n if (typeof optionsOrName === \"string\") {\n _this._gtag(\"event\", optionsOrName, _this._toGtagOptions(params));\n } else {\n var action = optionsOrName.action,\n category = optionsOrName.category,\n label = optionsOrName.label,\n value = optionsOrName.value,\n nonInteraction = optionsOrName.nonInteraction,\n transport = optionsOrName.transport;\n if (!category || !action) {\n console.warn(\"args.category AND args.action are required in event()\");\n return;\n }\n\n // Required Fields\n var fieldObject = {\n hitType: \"event\",\n eventCategory: (0, _format[\"default\"])(category),\n eventAction: (0, _format[\"default\"])(action)\n };\n\n // Optional Fields\n if (label) {\n fieldObject.eventLabel = (0, _format[\"default\"])(label);\n }\n if (typeof value !== \"undefined\") {\n if (typeof value !== \"number\") {\n console.warn(\"Expected `args.value` arg to be a Number.\");\n } else {\n fieldObject.eventValue = value;\n }\n }\n if (typeof nonInteraction !== \"undefined\") {\n if (typeof nonInteraction !== \"boolean\") {\n console.warn(\"`args.nonInteraction` must be a boolean.\");\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n if (typeof transport !== \"undefined\") {\n if (typeof transport !== \"string\") {\n console.warn(\"`args.transport` must be a string.\");\n } else {\n if ([\"beacon\", \"xhr\", \"image\"].indexOf(transport) === -1) {\n console.warn(\"`args.transport` must be either one of these values: `beacon`, `xhr` or `image`\");\n }\n fieldObject.transport = transport;\n }\n }\n _this._gaCommand(\"send\", fieldObject);\n }\n });\n _defineProperty(this, \"send\", function (fieldObject) {\n _this._gaCommand(\"send\", fieldObject);\n });\n this.reset();\n }\n _createClass(GA4, [{\n key: \"gtag\",\n value: function gtag() {\n this._gtag.apply(this, arguments);\n }\n }]);\n return GA4;\n}();\nexports.GA4 = GA4;\nvar _default = new GA4();\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar gtag = function gtag() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof window !== \"undefined\") {\n var _window;\n if (typeof window.gtag === \"undefined\") {\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n window.dataLayer.push(arguments);\n };\n }\n (_window = window).gtag.apply(_window, args);\n }\n};\nvar _default = gtag;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.ReactGAImplementation = void 0;\nvar _ga = _interopRequireWildcard(require(\"./ga4\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ReactGAImplementation = _ga.GA4;\nexports.ReactGAImplementation = ReactGAImplementation;\nvar _default = _ga[\"default\"];\nexports[\"default\"] = _default;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactPaginate\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"ReactPaginate\"] = factory(root[\"React\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__98__) => {\nreturn ","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__98__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PageView = (props) => {\n let { pageClassName, pageLinkClassName } = props;\n const {\n page,\n selected,\n activeClassName,\n activeLinkClassName,\n getEventListener,\n pageSelectedHandler,\n href,\n extraAriaContext,\n pageLabelBuilder,\n rel,\n } = props;\n\n let ariaLabel =\n props.ariaLabel ||\n 'Page ' + page + (extraAriaContext ? ' ' + extraAriaContext : '');\n let ariaCurrent = null;\n\n if (selected) {\n ariaCurrent = 'page';\n\n ariaLabel = props.ariaLabel || 'Page ' + page + ' is your current page';\n\n if (typeof pageClassName !== 'undefined') {\n pageClassName = pageClassName + ' ' + activeClassName;\n } else {\n pageClassName = activeClassName;\n }\n\n if (typeof pageLinkClassName !== 'undefined') {\n if (typeof activeLinkClassName !== 'undefined') {\n pageLinkClassName = pageLinkClassName + ' ' + activeLinkClassName;\n }\n } else {\n pageLinkClassName = activeLinkClassName;\n }\n }\n\n return (\n <li className={pageClassName}>\n <a\n rel={rel}\n role={!href ? 'button' : undefined}\n className={pageLinkClassName}\n href={href}\n tabIndex={selected ? '-1' : '0'}\n aria-label={ariaLabel}\n aria-current={ariaCurrent}\n onKeyPress={pageSelectedHandler}\n {...getEventListener(pageSelectedHandler)}\n >\n {pageLabelBuilder(page)}\n </a>\n </li>\n );\n};\n\nPageView.propTypes = {\n pageSelectedHandler: PropTypes.func.isRequired,\n selected: PropTypes.bool.isRequired,\n pageClassName: PropTypes.string,\n pageLinkClassName: PropTypes.string,\n activeClassName: PropTypes.string,\n activeLinkClassName: PropTypes.string,\n extraAriaContext: PropTypes.string,\n href: PropTypes.string,\n ariaLabel: PropTypes.string,\n page: PropTypes.number.isRequired,\n getEventListener: PropTypes.func.isRequired,\n pageLabelBuilder: PropTypes.func.isRequired,\n rel: PropTypes.string,\n};\n\nexport default PageView;\n","'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst BreakView = (props) => {\n const {\n breakLabel,\n breakAriaLabel,\n breakClassName,\n breakLinkClassName,\n breakHandler,\n getEventListener,\n } = props;\n const className = breakClassName || 'break';\n\n return (\n <li className={className}>\n <a\n className={breakLinkClassName}\n role=\"button\"\n tabIndex=\"0\"\n aria-label={breakAriaLabel}\n onKeyPress={breakHandler}\n {...getEventListener(breakHandler)}\n >\n {breakLabel}\n </a>\n </li>\n );\n};\n\nBreakView.propTypes = {\n breakLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n breakAriaLabel: PropTypes.string,\n breakClassName: PropTypes.string,\n breakLinkClassName: PropTypes.string,\n breakHandler: PropTypes.func.isRequired,\n getEventListener: PropTypes.func.isRequired,\n};\n\nexport default BreakView;\n","export function classNameIfDefined(className, orClassName = '') {\n return className !== undefined && className !== null\n ? className\n : orClassName;\n}\n","'use strict';\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport PageView from './PageView';\nimport BreakView from './BreakView';\nimport { classNameIfDefined } from './utils';\n\nexport default class PaginationBoxView extends Component {\n static propTypes = {\n pageCount: PropTypes.number.isRequired,\n pageRangeDisplayed: PropTypes.number,\n marginPagesDisplayed: PropTypes.number,\n previousLabel: PropTypes.node,\n previousAriaLabel: PropTypes.string,\n prevPageRel: PropTypes.string,\n prevRel: PropTypes.string,\n nextLabel: PropTypes.node,\n nextAriaLabel: PropTypes.string,\n nextPageRel: PropTypes.string,\n nextRel: PropTypes.string,\n breakLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n breakAriaLabels: PropTypes.shape({\n forward: PropTypes.string,\n backward: PropTypes.string,\n }),\n hrefBuilder: PropTypes.func,\n hrefAllControls: PropTypes.bool,\n onPageChange: PropTypes.func,\n onPageActive: PropTypes.func,\n onClick: PropTypes.func,\n initialPage: PropTypes.number,\n forcePage: PropTypes.number,\n disableInitialCallback: PropTypes.bool,\n containerClassName: PropTypes.string,\n className: PropTypes.string,\n pageClassName: PropTypes.string,\n pageLinkClassName: PropTypes.string,\n pageLabelBuilder: PropTypes.func,\n activeClassName: PropTypes.string,\n activeLinkClassName: PropTypes.string,\n previousClassName: PropTypes.string,\n nextClassName: PropTypes.string,\n previousLinkClassName: PropTypes.string,\n nextLinkClassName: PropTypes.string,\n disabledClassName: PropTypes.string,\n disabledLinkClassName: PropTypes.string,\n breakClassName: PropTypes.string,\n breakLinkClassName: PropTypes.string,\n extraAriaContext: PropTypes.string,\n ariaLabelBuilder: PropTypes.func,\n eventListener: PropTypes.string,\n renderOnZeroPageCount: PropTypes.func,\n selectedPageRel: PropTypes.string,\n };\n\n static defaultProps = {\n pageRangeDisplayed: 2,\n marginPagesDisplayed: 3,\n activeClassName: 'selected',\n previousLabel: 'Previous',\n previousClassName: 'previous',\n previousAriaLabel: 'Previous page',\n prevPageRel: 'prev',\n prevRel: 'prev',\n nextLabel: 'Next',\n nextClassName: 'next',\n nextAriaLabel: 'Next page',\n nextPageRel: 'next',\n nextRel: 'next',\n breakLabel: '...',\n breakAriaLabels: { forward: 'Jump forward', backward: 'Jump backward' },\n disabledClassName: 'disabled',\n disableInitialCallback: false,\n pageLabelBuilder: (page) => page,\n eventListener: 'onClick',\n renderOnZeroPageCount: undefined,\n selectedPageRel: 'canonical',\n hrefAllControls: false,\n };\n\n constructor(props) {\n super(props);\n\n if (props.initialPage !== undefined && props.forcePage !== undefined) {\n console.warn(\n `(react-paginate): Both initialPage (${props.initialPage}) and forcePage (${props.forcePage}) props are provided, which is discouraged.` +\n ' Use exclusively forcePage prop for a controlled component.\\nSee https://reactjs.org/docs/forms.html#controlled-components'\n );\n }\n\n let initialSelected;\n if (props.initialPage) {\n initialSelected = props.initialPage;\n } else if (props.forcePage) {\n initialSelected = props.forcePage;\n } else {\n initialSelected = 0;\n }\n\n this.state = {\n selected: initialSelected,\n };\n }\n\n componentDidMount() {\n const {\n initialPage,\n disableInitialCallback,\n extraAriaContext,\n pageCount,\n forcePage,\n } = this.props;\n // Call the callback with the initialPage item:\n if (typeof initialPage !== 'undefined' && !disableInitialCallback) {\n this.callCallback(initialPage);\n }\n\n if (extraAriaContext) {\n console.warn(\n 'DEPRECATED (react-paginate): The extraAriaContext prop is deprecated. You should now use the ariaLabelBuilder instead.'\n );\n }\n\n if (!Number.isInteger(pageCount)) {\n console.warn(\n `(react-paginate): The pageCount prop value provided is not an integer (${pageCount}). Did you forget a Math.ceil()?`\n );\n }\n\n if (initialPage !== undefined && initialPage > pageCount - 1) {\n console.warn(\n `(react-paginate): The initialPage prop provided is greater than the maximum page index from pageCount prop (${initialPage} > ${\n pageCount - 1\n }).`\n );\n }\n\n if (forcePage !== undefined && forcePage > pageCount - 1) {\n console.warn(\n `(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (${forcePage} > ${\n pageCount - 1\n }).`\n );\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.forcePage !== undefined &&\n this.props.forcePage !== prevProps.forcePage\n ) {\n if (this.props.forcePage > this.props.pageCount - 1) {\n console.warn(\n `(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (${\n this.props.forcePage\n } > ${this.props.pageCount - 1}).`\n );\n }\n\n this.setState({ selected: this.props.forcePage });\n }\n\n if (\n Number.isInteger(prevProps.pageCount) &&\n !Number.isInteger(this.props.pageCount)\n ) {\n console.warn(\n `(react-paginate): The pageCount prop value provided is not an integer (${this.props.pageCount}). Did you forget a Math.ceil()?`\n );\n }\n }\n\n handlePreviousPage = (event) => {\n const { selected } = this.state;\n\n this.handleClick(event, null, selected > 0 ? selected - 1 : undefined, {\n isPrevious: true,\n });\n };\n\n handleNextPage = (event) => {\n const { selected } = this.state;\n const { pageCount } = this.props;\n\n this.handleClick(\n event,\n null,\n selected < pageCount - 1 ? selected + 1 : undefined,\n { isNext: true }\n );\n };\n\n handlePageSelected = (selected, event) => {\n if (this.state.selected === selected) {\n this.callActiveCallback(selected);\n this.handleClick(event, null, undefined, { isActive: true });\n return;\n }\n\n this.handleClick(event, null, selected);\n };\n\n handlePageChange = (selected) => {\n if (this.state.selected === selected) {\n return;\n }\n this.setState({ selected });\n\n // Call the callback with the new selected item:\n this.callCallback(selected);\n };\n\n getEventListener = (handlerFunction) => {\n const { eventListener } = this.props;\n return {\n [eventListener]: handlerFunction,\n };\n };\n\n getForwardJump() {\n const { selected } = this.state;\n const { pageCount, pageRangeDisplayed } = this.props;\n\n const forwardJump = selected + pageRangeDisplayed;\n return forwardJump >= pageCount ? pageCount - 1 : forwardJump;\n }\n\n getBackwardJump() {\n const { selected } = this.state;\n const { pageRangeDisplayed } = this.props;\n\n const backwardJump = selected - pageRangeDisplayed;\n return backwardJump < 0 ? 0 : backwardJump;\n }\n\n handleClick = (\n event,\n index,\n nextSelectedPage,\n {\n isPrevious = false,\n isNext = false,\n isBreak = false,\n isActive = false,\n } = {}\n ) => {\n event.preventDefault ? event.preventDefault() : (event.returnValue = false);\n const { selected } = this.state;\n const { onClick } = this.props;\n\n let newPage = nextSelectedPage;\n\n if (onClick) {\n const onClickReturn = onClick({\n index,\n selected,\n nextSelectedPage,\n event,\n isPrevious,\n isNext,\n isBreak,\n isActive,\n });\n if (onClickReturn === false) {\n // We abord standard behavior and let parent handle\n // all behavior.\n return;\n }\n if (Number.isInteger(onClickReturn)) {\n // We assume parent want to go to the returned page.\n newPage = onClickReturn;\n }\n }\n\n if (newPage !== undefined) {\n this.handlePageChange(newPage);\n }\n };\n\n handleBreakClick = (index, event) => {\n const { selected } = this.state;\n\n this.handleClick(\n event,\n index,\n selected < index ? this.getForwardJump() : this.getBackwardJump(),\n { isBreak: true }\n );\n };\n\n getElementHref(pageIndex) {\n const { hrefBuilder, pageCount, hrefAllControls } = this.props;\n if (!hrefBuilder) return;\n if (hrefAllControls || (pageIndex >= 0 && pageIndex < pageCount)) {\n return hrefBuilder(pageIndex + 1, pageCount, this.state.selected);\n }\n }\n\n ariaLabelBuilder(pageIndex) {\n const selected = pageIndex === this.state.selected;\n if (\n this.props.ariaLabelBuilder &&\n pageIndex >= 0 &&\n pageIndex < this.props.pageCount\n ) {\n let label = this.props.ariaLabelBuilder(pageIndex + 1, selected);\n // DEPRECATED: The extraAriaContext prop was used to add additional context\n // to the aria-label. Users should now use the ariaLabelBuilder instead.\n if (this.props.extraAriaContext && !selected) {\n label = label + ' ' + this.props.extraAriaContext;\n }\n return label;\n }\n }\n\n callCallback = (selectedItem) => {\n if (\n this.props.onPageChange !== undefined &&\n typeof this.props.onPageChange === 'function'\n ) {\n this.props.onPageChange({ selected: selectedItem });\n }\n };\n\n callActiveCallback = (selectedItem) => {\n if (\n this.props.onPageActive !== undefined &&\n typeof this.props.onPageActive === 'function'\n ) {\n this.props.onPageActive({ selected: selectedItem });\n }\n };\n\n getElementPageRel = (index) => {\n const { selected } = this.state;\n const { nextPageRel, prevPageRel, selectedPageRel } = this.props;\n\n if (selected - 1 === index) {\n return prevPageRel;\n } else if (selected === index) {\n return selectedPageRel;\n } else if (selected + 1 === index) {\n return nextPageRel;\n }\n return undefined;\n };\n\n getPageElement(index) {\n const { selected } = this.state;\n const {\n pageClassName,\n pageLinkClassName,\n activeClassName,\n activeLinkClassName,\n extraAriaContext,\n pageLabelBuilder,\n } = this.props;\n\n return (\n <PageView\n key={index}\n pageSelectedHandler={this.handlePageSelected.bind(null, index)}\n selected={selected === index}\n rel={this.getElementPageRel(index)}\n pageClassName={pageClassName}\n pageLinkClassName={pageLinkClassName}\n activeClassName={activeClassName}\n activeLinkClassName={activeLinkClassName}\n extraAriaContext={extraAriaContext}\n href={this.getElementHref(index)}\n ariaLabel={this.ariaLabelBuilder(index)}\n page={index + 1}\n pageLabelBuilder={pageLabelBuilder}\n getEventListener={this.getEventListener}\n />\n );\n }\n\n pagination = () => {\n const items = [];\n const {\n pageRangeDisplayed,\n pageCount,\n marginPagesDisplayed,\n breakLabel,\n breakClassName,\n breakLinkClassName,\n breakAriaLabels,\n } = this.props;\n\n const { selected } = this.state;\n\n if (pageCount <= pageRangeDisplayed) {\n for (let index = 0; index < pageCount; index++) {\n items.push(this.getPageElement(index));\n }\n } else {\n let leftSide = pageRangeDisplayed / 2;\n let rightSide = pageRangeDisplayed - leftSide;\n\n // If the selected page index is on the default right side of the pagination,\n // we consider that the new right side is made up of it (= only one break element).\n // If the selected page index is on the default left side of the pagination,\n // we consider that the new left side is made up of it (= only one break element).\n if (selected > pageCount - pageRangeDisplayed / 2) {\n rightSide = pageCount - selected;\n leftSide = pageRangeDisplayed - rightSide;\n } else if (selected < pageRangeDisplayed / 2) {\n leftSide = selected;\n rightSide = pageRangeDisplayed - leftSide;\n }\n\n let createPageView = (index) => this.getPageElement(index);\n let index;\n let breakView;\n\n // First pass: process the pages or breaks to display (or not).\n const pagesBreaking = [];\n for (index = 0; index < pageCount; index++) {\n const page = index + 1;\n\n // If the page index is lower than the margin defined,\n // the page has to be displayed on the left side of\n // the pagination.\n if (page <= marginPagesDisplayed) {\n pagesBreaking.push({\n type: 'page',\n index,\n display: createPageView(index),\n });\n continue;\n }\n\n // If the page index is greater than the page count\n // minus the margin defined, the page has to be\n // displayed on the right side of the pagination.\n if (page > pageCount - marginPagesDisplayed) {\n pagesBreaking.push({\n type: 'page',\n index,\n display: createPageView(index),\n });\n continue;\n }\n\n // If it is the first element of the array the rightSide need to be adjusted,\n // otherwise an extra element will be rendered\n const adjustedRightSide =\n selected === 0 && pageRangeDisplayed > 1 ? rightSide - 1 : rightSide;\n\n // If the page index is near the selected page index\n // and inside the defined range (pageRangeDisplayed)\n // we have to display it (it will create the center\n // part of the pagination).\n if (\n index >= selected - leftSide &&\n index <= selected + adjustedRightSide\n ) {\n pagesBreaking.push({\n type: 'page',\n index,\n display: createPageView(index),\n });\n continue;\n }\n\n // If the page index doesn't meet any of the conditions above,\n // we check if the last item of the current \"items\" array\n // is a break element. If not, we add a break element, else,\n // we do nothing (because we don't want to display the page).\n if (\n breakLabel &&\n pagesBreaking.length > 0 &&\n pagesBreaking[pagesBreaking.length - 1].display !== breakView &&\n // We do not show break if only one active page is displayed.\n (pageRangeDisplayed > 0 || marginPagesDisplayed > 0)\n ) {\n const useBreakAriaLabel =\n index < selected\n ? breakAriaLabels.backward\n : breakAriaLabels.forward;\n breakView = (\n <BreakView\n key={index}\n breakAriaLabel={useBreakAriaLabel}\n breakLabel={breakLabel}\n breakClassName={breakClassName}\n breakLinkClassName={breakLinkClassName}\n breakHandler={this.handleBreakClick.bind(null, index)}\n getEventListener={this.getEventListener}\n />\n );\n pagesBreaking.push({ type: 'break', index, display: breakView });\n }\n }\n // Second pass: we remove breaks containing one page to the actual page.\n pagesBreaking.forEach((pageElement, i) => {\n let actualPageElement = pageElement;\n // 1 2 3 4 5 6 7 ... 9 10\n // |\n // 1 2 ... 4 5 6 7 8 9 10\n // |\n // The break should be replaced by the page.\n if (\n pageElement.type === 'break' &&\n pagesBreaking[i - 1] &&\n pagesBreaking[i - 1].type === 'page' &&\n pagesBreaking[i + 1] &&\n pagesBreaking[i + 1].type === 'page' &&\n pagesBreaking[i + 1].index - pagesBreaking[i - 1].index <= 2\n ) {\n actualPageElement = {\n type: 'page',\n index: pageElement.index,\n display: createPageView(pageElement.index),\n };\n }\n // We add the displayed elements in the same pass, to avoid another iteration.\n items.push(actualPageElement.display);\n });\n }\n\n return items;\n };\n\n render() {\n const { renderOnZeroPageCount } = this.props;\n if (this.props.pageCount === 0 && renderOnZeroPageCount !== undefined) {\n return renderOnZeroPageCount\n ? renderOnZeroPageCount(this.props)\n : renderOnZeroPageCount;\n }\n const {\n disabledClassName,\n disabledLinkClassName,\n pageCount,\n className,\n containerClassName,\n previousLabel,\n previousClassName,\n previousLinkClassName,\n previousAriaLabel,\n prevRel,\n nextLabel,\n nextClassName,\n nextLinkClassName,\n nextAriaLabel,\n nextRel,\n } = this.props;\n\n const { selected } = this.state;\n\n const isPreviousDisabled = selected === 0;\n const isNextDisabled = selected === pageCount - 1;\n\n const previousClasses = `${classNameIfDefined(previousClassName)}${\n isPreviousDisabled ? ` ${classNameIfDefined(disabledClassName)}` : ''\n }`;\n const nextClasses = `${classNameIfDefined(nextClassName)}${\n isNextDisabled ? ` ${classNameIfDefined(disabledClassName)}` : ''\n }`;\n\n const previousLinkClasses = `${classNameIfDefined(previousLinkClassName)}${\n isPreviousDisabled ? ` ${classNameIfDefined(disabledLinkClassName)}` : ''\n }`;\n const nextLinkClasses = `${classNameIfDefined(nextLinkClassName)}${\n isNextDisabled ? ` ${classNameIfDefined(disabledLinkClassName)}` : ''\n }`;\n\n const previousAriaDisabled = isPreviousDisabled ? 'true' : 'false';\n const nextAriaDisabled = isNextDisabled ? 'true' : 'false';\n\n return (\n <ul\n className={className || containerClassName}\n role=\"navigation\"\n aria-label=\"Pagination\"\n >\n <li className={previousClasses}>\n <a\n className={previousLinkClasses}\n href={this.getElementHref(selected - 1)}\n tabIndex={isPreviousDisabled ? '-1' : '0'}\n role=\"button\"\n onKeyPress={this.handlePreviousPage}\n aria-disabled={previousAriaDisabled}\n aria-label={previousAriaLabel}\n rel={prevRel}\n {...this.getEventListener(this.handlePreviousPage)}\n >\n {previousLabel}\n </a>\n </li>\n\n {this.pagination()}\n\n <li className={nextClasses}>\n <a\n className={nextLinkClasses}\n href={this.getElementHref(selected + 1)}\n tabIndex={isNextDisabled ? '-1' : '0'}\n role=\"button\"\n onKeyPress={this.handleNextPage}\n aria-disabled={nextAriaDisabled}\n aria-label={nextAriaLabel}\n rel={nextRel}\n {...this.getEventListener(this.handleNextPage)}\n >\n {nextLabel}\n </a>\n </li>\n </ul>\n );\n }\n}\n","import PaginationBoxView from './PaginationBoxView';\n\nexport default PaginationBoxView;\n","(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define('ReactTagsInput', ['exports', 'react', 'prop-types'], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require('react'), require('prop-types'));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.React, global.propTypes);\n global.ReactTagsInput = mod.exports;\n }\n})(this, function (exports, _react, _propTypes) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _react2 = _interopRequireDefault(_react);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n function _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n }\n\n function uniq(arr) {\n var out = [];\n\n for (var i = 0; i < arr.length; i++) {\n if (out.indexOf(arr[i]) === -1) {\n out.push(typeof arr[i] === 'string' ? arr[i].trim() : arr[i]);\n }\n }\n\n return out;\n }\n\n /* istanbul ignore next */\n function getClipboardData(e) {\n if (window.clipboardData) {\n return window.clipboardData.getData('Text');\n }\n\n if (e.clipboardData) {\n return e.clipboardData.getData('text/plain');\n }\n\n return '';\n }\n\n function defaultRenderTag(props) {\n var tag = props.tag,\n key = props.key,\n disabled = props.disabled,\n onRemove = props.onRemove,\n classNameRemove = props.classNameRemove,\n getTagDisplayValue = props.getTagDisplayValue,\n other = _objectWithoutProperties(props, ['tag', 'key', 'disabled', 'onRemove', 'classNameRemove', 'getTagDisplayValue']);\n\n return _react2.default.createElement(\n 'span',\n _extends({ key: key }, other),\n getTagDisplayValue(tag),\n !disabled && _react2.default.createElement('a', { className: classNameRemove, onClick: function onClick(e) {\n return onRemove(key);\n } })\n );\n }\n\n function defaultRenderInput(_ref) {\n var addTag = _ref.addTag,\n props = _objectWithoutProperties(_ref, ['addTag']);\n\n var onChange = props.onChange,\n value = props.value,\n other = _objectWithoutProperties(props, ['onChange', 'value']);\n\n return _react2.default.createElement('input', _extends({ type: 'text', onChange: onChange, value: value }, other));\n }\n\n function defaultRenderLayout(tagComponents, inputComponent) {\n return _react2.default.createElement(\n 'span',\n null,\n tagComponents,\n inputComponent\n );\n }\n\n function defaultPasteSplit(data) {\n return data.split(' ').map(function (d) {\n return d.trim();\n });\n }\n\n var defaultInputProps = {\n className: 'react-tagsinput-input',\n placeholder: 'Add a tag'\n };\n\n var TagsInput = function (_React$Component) {\n _inherits(TagsInput, _React$Component);\n\n /* istanbul ignore next */\n function TagsInput() {\n _classCallCheck(this, TagsInput);\n\n var _this = _possibleConstructorReturn(this, (TagsInput.__proto__ || Object.getPrototypeOf(TagsInput)).call(this));\n\n _this.state = { tag: '', isFocused: false };\n _this.focus = _this.focus.bind(_this);\n _this.blur = _this.blur.bind(_this);\n _this.accept = _this.accept.bind(_this);\n return _this;\n }\n\n _createClass(TagsInput, [{\n key: '_getTagDisplayValue',\n value: function _getTagDisplayValue(tag) {\n var tagDisplayProp = this.props.tagDisplayProp;\n\n\n if (tagDisplayProp) {\n return tag[tagDisplayProp];\n }\n\n return tag;\n }\n }, {\n key: '_makeTag',\n value: function _makeTag(tag) {\n var tagDisplayProp = this.props.tagDisplayProp;\n\n\n if (tagDisplayProp) {\n return _defineProperty({}, tagDisplayProp, tag);\n }\n\n return tag;\n }\n }, {\n key: '_removeTag',\n value: function _removeTag(index) {\n var value = this.props.value.concat([]);\n if (index > -1 && index < value.length) {\n var changed = value.splice(index, 1);\n this.props.onChange(value, changed, [index]);\n }\n }\n }, {\n key: '_clearInput',\n value: function _clearInput() {\n if (this.hasControlledInput()) {\n this.props.onChangeInput('');\n } else {\n this.setState({ tag: '' });\n }\n }\n }, {\n key: '_tag',\n value: function _tag() {\n if (this.hasControlledInput()) {\n return this.props.inputValue;\n }\n\n return this.state.tag;\n }\n }, {\n key: '_addTags',\n value: function _addTags(tags) {\n var _this2 = this;\n\n var _props = this.props,\n onChange = _props.onChange,\n onValidationReject = _props.onValidationReject,\n onlyUnique = _props.onlyUnique,\n maxTags = _props.maxTags,\n value = _props.value;\n\n\n if (onlyUnique) {\n tags = uniq(tags);\n tags = tags.filter(function (tag) {\n return value.every(function (currentTag) {\n return _this2._getTagDisplayValue(currentTag) !== _this2._getTagDisplayValue(tag);\n });\n });\n }\n\n var rejectedTags = tags.filter(function (tag) {\n return !_this2._validate(_this2._getTagDisplayValue(tag));\n });\n tags = tags.filter(function (tag) {\n return _this2._validate(_this2._getTagDisplayValue(tag));\n });\n tags = tags.filter(function (tag) {\n var tagDisplayValue = _this2._getTagDisplayValue(tag);\n if (typeof tagDisplayValue.trim === 'function') {\n return tagDisplayValue.trim().length >= 0;\n } else {\n return tagDisplayValue;\n }\n });\n\n if (maxTags >= 0) {\n var remainingLimit = Math.max(maxTags - value.length, 0);\n tags = tags.slice(0, remainingLimit);\n }\n\n if (onValidationReject && rejectedTags.length > 0) {\n onValidationReject(rejectedTags);\n }\n\n if (tags.length > 0) {\n var newValue = value.concat(tags);\n var indexes = [];\n for (var i = 0; i < tags.length; i++) {\n indexes.push(value.length + i);\n }\n onChange(newValue, tags, indexes);\n this._clearInput();\n return true;\n }\n\n if (rejectedTags.length > 0) {\n return false;\n }\n\n this._clearInput();\n return false;\n }\n }, {\n key: '_validate',\n value: function _validate(tag) {\n var _props2 = this.props,\n validate = _props2.validate,\n validationRegex = _props2.validationRegex;\n\n\n return validate(tag) && validationRegex.test(tag);\n }\n }, {\n key: '_shouldPreventDefaultEventOnAdd',\n value: function _shouldPreventDefaultEventOnAdd(added, empty, key) {\n if (added) {\n return true;\n }\n\n if (key === 'Enter') {\n return this.props.preventSubmit || !this.props.preventSubmit && !empty;\n }\n\n return false;\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.input && typeof this.input.focus === 'function') {\n this.input.focus();\n }\n\n this.handleOnFocus();\n }\n }, {\n key: 'blur',\n value: function blur() {\n if (this.input && typeof this.input.blur === 'function') {\n this.input.blur();\n }\n\n this.handleOnBlur();\n }\n }, {\n key: 'accept',\n value: function accept() {\n var preventSubmit = this.props.preventSubmit;\n\n var tag = this._tag();\n if (tag !== '' || !preventSubmit) {\n tag = this._makeTag(tag);\n return this._addTags([tag]);\n }\n\n return false;\n }\n }, {\n key: 'addTag',\n value: function addTag(tag) {\n return this._addTags([tag]);\n }\n }, {\n key: 'clearInput',\n value: function clearInput() {\n this._clearInput();\n }\n }, {\n key: 'handlePaste',\n value: function handlePaste(e) {\n var _this3 = this;\n\n var _props3 = this.props,\n addOnPaste = _props3.addOnPaste,\n pasteSplit = _props3.pasteSplit;\n\n\n if (!addOnPaste) {\n return;\n }\n\n e.preventDefault();\n\n var data = getClipboardData(e);\n var tags = pasteSplit(data).map(function (tag) {\n return _this3._makeTag(tag);\n });\n\n this._addTags(tags);\n }\n }, {\n key: 'handleKeyDown',\n value: function handleKeyDown(e) {\n if (e.defaultPrevented) {\n return;\n }\n\n var _props4 = this.props,\n value = _props4.value,\n removeKeys = _props4.removeKeys,\n addKeys = _props4.addKeys;\n\n var tag = this._tag();\n var empty = tag === '';\n var keyCode = e.keyCode;\n var key = e.key;\n var add = addKeys.indexOf(keyCode) !== -1 || addKeys.indexOf(key) !== -1;\n var remove = removeKeys.indexOf(keyCode) !== -1 || removeKeys.indexOf(key) !== -1;\n\n if (add) {\n var added = this.accept();\n if (this._shouldPreventDefaultEventOnAdd(added, empty, key)) {\n e.preventDefault();\n }\n }\n\n if (remove && value.length > 0 && empty) {\n e.preventDefault();\n this._removeTag(value.length - 1);\n }\n }\n }, {\n key: 'handleClick',\n value: function handleClick(e) {\n var clickedElement = e.target;\n var parentElement = e.target && e.target.parentElement;\n\n if (clickedElement === this.div || parentElement === this.div) {\n this.focus();\n }\n }\n }, {\n key: 'handleChange',\n value: function handleChange(e) {\n var onChangeInput = this.props.onChangeInput;\n var onChange = this.props.inputProps.onChange;\n\n var tag = e.target.value;\n\n if (onChange) {\n onChange(e);\n }\n\n if (this.hasControlledInput()) {\n onChangeInput(tag);\n } else {\n this.setState({ tag: tag });\n }\n }\n }, {\n key: 'handleOnFocus',\n value: function handleOnFocus(e) {\n var onFocus = this.props.inputProps.onFocus;\n\n\n if (onFocus) {\n onFocus(e);\n }\n\n this.setState({ isFocused: true });\n }\n }, {\n key: 'handleOnBlur',\n value: function handleOnBlur(e) {\n var onBlur = this.props.inputProps.onBlur;\n\n\n this.setState({ isFocused: false });\n\n if (e == null) {\n return;\n }\n\n if (onBlur) {\n onBlur(e);\n }\n\n if (this.props.addOnBlur && e.target.value) {\n var tag = this._makeTag(e.target.value);\n this._addTags([tag]);\n }\n }\n }, {\n key: 'handleRemove',\n value: function handleRemove(tag) {\n this._removeTag(tag);\n }\n }, {\n key: 'inputProps',\n value: function inputProps() {\n var _props$inputProps = this.props.inputProps,\n onChange = _props$inputProps.onChange,\n onFocus = _props$inputProps.onFocus,\n onBlur = _props$inputProps.onBlur,\n otherInputProps = _objectWithoutProperties(_props$inputProps, ['onChange', 'onFocus', 'onBlur']);\n\n var props = _extends({}, defaultInputProps, otherInputProps);\n\n if (this.props.disabled) {\n props.disabled = true;\n }\n\n return props;\n }\n }, {\n key: 'inputValue',\n value: function inputValue(props) {\n return props.currentValue || props.inputValue || '';\n }\n }, {\n key: 'hasControlledInput',\n value: function hasControlledInput() {\n var _props5 = this.props,\n inputValue = _props5.inputValue,\n onChangeInput = _props5.onChangeInput;\n\n\n return typeof onChangeInput === 'function' && typeof inputValue === 'string';\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.hasControlledInput()) {\n return;\n }\n\n this.setState({\n tag: this.inputValue(this.props)\n });\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n /* istanbul ignore next */\n if (this.hasControlledInput()) {\n return;\n }\n\n if (!this.inputValue(this.props)) {\n return;\n }\n\n if (this.inputValue(prevProps) !== this.inputValue(this.props)) {\n this.setState({\n tag: this.inputValue(this.props)\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props6 = this.props,\n value = _props6.value,\n tagProps = _props6.tagProps,\n renderLayout = _props6.renderLayout,\n renderTag = _props6.renderTag,\n renderInput = _props6.renderInput,\n className = _props6.className,\n focusedClassName = _props6.focusedClassName,\n disabled = _props6.disabled;\n var isFocused = this.state.isFocused;\n\n\n var tagComponents = value.map(function (tag, index) {\n return renderTag(_extends({\n key: index,\n tag: tag,\n onRemove: _this4.handleRemove.bind(_this4),\n disabled: disabled,\n getTagDisplayValue: _this4._getTagDisplayValue.bind(_this4)\n }, tagProps));\n });\n\n var inputComponent = renderInput(_extends({\n ref: function ref(r) {\n _this4.input = r;\n },\n value: this._tag(),\n onPaste: this.handlePaste.bind(this),\n onKeyDown: this.handleKeyDown.bind(this),\n onChange: this.handleChange.bind(this),\n onFocus: this.handleOnFocus.bind(this),\n onBlur: this.handleOnBlur.bind(this),\n addTag: this.addTag.bind(this)\n }, this.inputProps()));\n\n return _react2.default.createElement(\n 'div',\n { ref: function ref(r) {\n _this4.div = r;\n }, onClick: this.handleClick.bind(this), className: className + (isFocused ? ' ' + focusedClassName : '') },\n renderLayout(tagComponents, inputComponent)\n );\n }\n }]);\n\n return TagsInput;\n }(_react2.default.Component);\n\n TagsInput.defaultProps = {\n className: 'react-tagsinput',\n focusedClassName: 'react-tagsinput--focused',\n addKeys: ['Tab', 'Enter'],\n addOnBlur: false,\n addOnPaste: false,\n inputProps: {},\n removeKeys: ['Backspace'],\n renderInput: defaultRenderInput,\n renderTag: defaultRenderTag,\n renderLayout: defaultRenderLayout,\n pasteSplit: defaultPasteSplit,\n tagProps: { className: 'react-tagsinput-tag', classNameRemove: 'react-tagsinput-remove' },\n onlyUnique: false,\n maxTags: -1,\n validate: function validate() {\n return true;\n },\n validationRegex: /.*/,\n disabled: false,\n tagDisplayProp: null,\n preventSubmit: true\n };\n exports.default = TagsInput;\n module.exports = exports.default;\n});\n\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\nmodule.exports.default = StyleToObject; // ESM support\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"4aad81b0\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"doomcentral:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdoomcentral\"] = self[\"webpackChunkdoomcentral\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n <Lifecycle\n onMount={() => {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n var str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ?\n (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n window.atob &&\n window.atob.bind(window)) ||\npolyfill;","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, function(m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\n\nexport default function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n}","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified\");\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n } catch (e) {\n throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n }\n}","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\n/**\n * Native interface\n *\n * @public\n */\nexport interface ILogger {\n debug(...args: unknown[]): void;\n info(...args: unknown[]): void;\n warn(...args: unknown[]): void;\n error(...args: unknown[]): void;\n}\n\nconst nopLogger: ILogger = {\n debug: () => undefined,\n info: () => undefined,\n warn: () => undefined,\n error: () => undefined,\n};\n\nlet level: number;\nlet logger: ILogger;\n\n/**\n * Log levels\n *\n * @public\n */\nexport enum Log {\n NONE,\n ERROR,\n WARN,\n INFO,\n DEBUG\n}\n\n/**\n * Log manager\n *\n * @public\n */\nexport namespace Log { // eslint-disable-line @typescript-eslint/no-namespace\n export function reset(): void {\n level = Log.INFO;\n logger = nopLogger;\n }\n\n export function setLevel(value: Log): void {\n if (!(Log.NONE <= value && value <= Log.DEBUG)) {\n throw new Error(\"Invalid log level\");\n }\n level = value;\n }\n\n export function setLogger(value: ILogger): void {\n logger = value;\n }\n}\n\n/**\n * Internal logger instance\n *\n * @public\n */\nexport class Logger {\n private _method?: string;\n public constructor(private _name: string) {}\n\n /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n public debug(...args: unknown[]): void {\n if (level >= Log.DEBUG) {\n logger.debug(Logger._format(this._name, this._method), ...args);\n }\n }\n public info(...args: unknown[]): void {\n if (level >= Log.INFO) {\n logger.info(Logger._format(this._name, this._method), ...args);\n }\n }\n public warn(...args: unknown[]): void {\n if (level >= Log.WARN) {\n logger.warn(Logger._format(this._name, this._method), ...args);\n }\n }\n public error(...args: unknown[]): void {\n if (level >= Log.ERROR) {\n logger.error(Logger._format(this._name, this._method), ...args);\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-enum-comparison */\n\n public throw(err: Error): never {\n this.error(err);\n throw err;\n }\n\n public create(method: string): Logger {\n const methodLogger: Logger = Object.create(this);\n methodLogger._method = method;\n methodLogger.debug(\"begin\");\n return methodLogger;\n }\n\n public static createStatic(name: string, staticMethod: string): Logger {\n const staticLogger = new Logger(`${name}.${staticMethod}`);\n staticLogger.debug(\"begin\");\n return staticLogger;\n }\n\n private static _format(name: string, method?: string) {\n const prefix = `[${name}]`;\n return method ? `${prefix} ${method}:` : prefix;\n }\n\n /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n // helpers for static class methods\n public static debug(name: string, ...args: unknown[]): void {\n if (level >= Log.DEBUG) {\n logger.debug(Logger._format(name), ...args);\n }\n }\n public static info(name: string, ...args: unknown[]): void {\n if (level >= Log.INFO) {\n logger.info(Logger._format(name), ...args);\n }\n }\n public static warn(name: string, ...args: unknown[]): void {\n if (level >= Log.WARN) {\n logger.warn(Logger._format(name), ...args);\n }\n }\n public static error(name: string, ...args: unknown[]): void {\n if (level >= Log.ERROR) {\n logger.error(Logger._format(name), ...args);\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-enum-comparison */\n}\n\nLog.reset();\n","import CryptoJS from \"crypto-js/core.js\";\nimport sha256 from \"crypto-js/sha256.js\";\nimport Base64 from \"crypto-js/enc-base64.js\";\nimport Utf8 from \"crypto-js/enc-utf8.js\";\n\nimport { Logger } from \"./Logger\";\n\nconst UUID_V4_TEMPLATE = \"10000000-1000-4000-8000-100000000000\";\n\n/**\n * @internal\n */\nexport class CryptoUtils {\n private static _randomWord(): number {\n return CryptoJS.lib.WordArray.random(1).words[0];\n }\n\n /**\n * Generates RFC4122 version 4 guid\n */\n public static generateUUIDv4(): string {\n const uuid = UUID_V4_TEMPLATE.replace(/[018]/g, c =>\n (+c ^ CryptoUtils._randomWord() & 15 >> +c / 4).toString(16),\n );\n return uuid.replace(/-/g, \"\");\n }\n\n /**\n * PKCE: Generate a code verifier\n */\n public static generateCodeVerifier(): string {\n return CryptoUtils.generateUUIDv4() + CryptoUtils.generateUUIDv4() + CryptoUtils.generateUUIDv4();\n }\n\n /**\n * PKCE: Generate a code challenge\n */\n public static generateCodeChallenge(code_verifier: string): string {\n try {\n const hashed = sha256(code_verifier);\n return Base64.stringify(hashed).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n }\n catch (err) {\n Logger.error(\"CryptoUtils.generateCodeChallenge\", err);\n throw err;\n }\n }\n\n /**\n * Generates a base64-encoded string for a basic auth header\n */\n public static generateBasicAuth(client_id: string, client_secret: string): string {\n const basicAuth = Utf8.parse([client_id, client_secret].join(\":\"));\n return Base64.stringify(basicAuth);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./Logger\";\n\n/**\n * @internal\n */\nexport type Callback<EventType extends unknown[]> = (...ev: EventType) => (Promise<void> | void);\n\n/**\n * @internal\n */\nexport class Event<EventType extends unknown[]> {\n protected readonly _logger = new Logger(`Event('${this._name}')`);\n\n private _callbacks: Array<Callback<EventType>> = [];\n\n public constructor(protected readonly _name: string) {}\n\n public addHandler(cb: Callback<EventType>): () => void {\n this._callbacks.push(cb);\n return () => this.removeHandler(cb);\n }\n\n public removeHandler(cb: Callback<EventType>): void {\n const idx = this._callbacks.lastIndexOf(cb);\n if (idx >= 0) {\n this._callbacks.splice(idx, 1);\n }\n }\n\n public raise(...ev: EventType): void {\n this._logger.debug(\"raise:\", ...ev);\n for (const cb of this._callbacks) {\n void cb(...ev);\n }\n }\n}\n","import jwt_decode from \"jwt-decode\";\n\nimport { Logger } from \"./Logger\";\nimport type { JwtClaims } from \"../Claims\";\n\n/**\n * @internal\n */\nexport class JwtUtils {\n // IMPORTANT: doesn't validate the token\n public static decode(token: string): JwtClaims {\n try {\n return jwt_decode<JwtClaims>(token);\n }\n catch (err) {\n Logger.error(\"JwtUtils.decode\", err);\n throw err;\n }\n }\n}\n","/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open#window_features\n *\n * @public\n */\nexport interface PopupWindowFeatures {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n menubar?: boolean | string;\n toolbar?: boolean | string;\n location?: boolean | string;\n status?: boolean | string;\n resizable?: boolean | string;\n scrollbars?: boolean | string;\n /** Close popup window after time in seconds, by default it is -1. To enable this feature set value greater than 0 */\n closePopupWindowAfterInSeconds?: number;\n\n [k: string]: boolean | string | number | undefined;\n}\n\nexport class PopupUtils {\n /**\n * Populates a map of window features with a placement centered in front of\n * the current window. If no explicit width is given, a default value is\n * binned into [800, 720, 600, 480, 360] based on the current window's width.\n */\n static center({ ...features }: PopupWindowFeatures): PopupWindowFeatures {\n if (features.width == null)\n features.width = [800, 720, 600, 480].find(width => width <= window.outerWidth / 1.618) ?? 360;\n features.left ??= Math.max(0, Math.round(window.screenX + (window.outerWidth - features.width) / 2));\n if (features.height != null)\n features.top ??= Math.max(0, Math.round(window.screenY + (window.outerHeight - features.height) / 2));\n return features;\n }\n\n static serialize(features: PopupWindowFeatures): string {\n return Object.entries(features)\n .filter(([, value]) => value != null)\n .map(([key, value]) => `${key}=${typeof value !== \"boolean\" ? value as string : value ? \"yes\" : \"no\"}`)\n .join(\",\");\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Event } from \"./Event\";\nimport { Logger } from \"./Logger\";\n\n/**\n * @internal\n */\nexport class Timer extends Event<[void]> {\n protected readonly _logger = new Logger(`Timer('${this._name}')`);\n private _timerHandle: ReturnType<typeof setInterval> | null = null;\n private _expiration = 0;\n\n // get the time\n public static getEpochTime(): number {\n return Math.floor(Date.now() / 1000);\n }\n\n public init(durationInSeconds: number): void {\n const logger = this._logger.create(\"init\");\n durationInSeconds = Math.max(Math.floor(durationInSeconds), 1);\n const expiration = Timer.getEpochTime() + durationInSeconds;\n if (this.expiration === expiration && this._timerHandle) {\n // no need to reinitialize to same expiration, so bail out\n logger.debug(\"skipping since already initialized for expiration at\", this.expiration);\n return;\n }\n\n this.cancel();\n\n logger.debug(\"using duration\", durationInSeconds);\n this._expiration = expiration;\n\n // we're using a fairly short timer and then checking the expiration in the\n // callback to handle scenarios where the browser device sleeps, and then\n // the timers end up getting delayed.\n const timerDurationInSeconds = Math.min(durationInSeconds, 5);\n this._timerHandle = setInterval(this._callback, timerDurationInSeconds * 1000);\n }\n\n public get expiration(): number {\n return this._expiration;\n }\n\n public cancel(): void {\n this._logger.create(\"cancel\");\n if (this._timerHandle) {\n clearInterval(this._timerHandle);\n this._timerHandle = null;\n }\n }\n\n protected _callback = (): void => {\n const diff = this._expiration - Timer.getEpochTime();\n this._logger.debug(\"timer completes in\", diff);\n\n if (this._expiration <= Timer.getEpochTime()) {\n this.cancel();\n super.raise();\n }\n };\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\n/**\n * @internal\n */\nexport class UrlUtils {\n public static readParams(url: string, responseMode: \"query\" | \"fragment\" = \"query\"): URLSearchParams {\n if (!url) throw new TypeError(\"Invalid URL\");\n // the base URL is irrelevant, it's just here to support relative url arguments\n const parsedUrl = new URL(url, \"http://127.0.0.1\");\n const params = parsedUrl[responseMode === \"fragment\" ? \"hash\" : \"search\"];\n return new URLSearchParams(params.slice(1));\n }\n}\n\n/**\n * @internal\n */\nexport const URL_STATE_DELIMITER = \";\";","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\n\n/**\n * Error class thrown in case of an authentication error.\n *\n * See https://openid.net/specs/openid-connect-core-1_0.html#AuthError\n *\n * @public\n */\nexport class ErrorResponse extends Error {\n /** Marker to detect class: \"ErrorResponse\" */\n public readonly name: string = \"ErrorResponse\";\n\n /** An error code string that can be used to classify the types of errors that occur and to respond to errors. */\n public readonly error: string | null;\n /** additional information that can help a developer identify the cause of the error.*/\n public readonly error_description: string | null;\n /**\n * URI identifying a human-readable web page with information about the error, used to provide the client\n developer with additional information about the error.\n */\n public readonly error_uri: string | null;\n\n /** custom state data set during the initial signin request */\n public state?: unknown;\n\n public readonly session_state: string | null;\n\n public url_state?: string;\n\n public constructor(\n args: {\n error?: string | null; error_description?: string | null; error_uri?: string | null;\n userState?: unknown; session_state?: string | null; url_state?: string;\n },\n /** The x-www-form-urlencoded request body sent to the authority server */\n public readonly form?: URLSearchParams,\n ) {\n super(args.error_description || args.error || \"\");\n\n if (!args.error) {\n Logger.error(\"ErrorResponse\", \"No error passed\");\n throw new Error(\"No error passed\");\n }\n\n this.error = args.error;\n this.error_description = args.error_description ?? null;\n this.error_uri = args.error_uri ?? null;\n\n this.state = args.userState;\n this.session_state = args.session_state ?? null;\n this.url_state = args.url_state;\n }\n}\n","// Copyright (C) 2021 AuthTS Contributors\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\n/**\n * Error class thrown in case of network timeouts (e.g IFrame time out).\n *\n * @public\n */\nexport class ErrorTimeout extends Error {\n /** Marker to detect class: \"ErrorTimeout\" */\n public readonly name: string = \"ErrorTimeout\";\n\n public constructor(message?: string) {\n super(message);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, Timer } from \"./utils\";\nimport type { User } from \"./User\";\n\n/**\n * @public\n */\nexport type AccessTokenCallback = (...ev: unknown[]) => (Promise<void> | void);\n\n/**\n * @public\n */\nexport class AccessTokenEvents {\n protected readonly _logger = new Logger(\"AccessTokenEvents\");\n\n private readonly _expiringTimer = new Timer(\"Access token expiring\");\n private readonly _expiredTimer = new Timer(\"Access token expired\");\n private readonly _expiringNotificationTimeInSeconds: number;\n\n public constructor(args: { expiringNotificationTimeInSeconds: number }) {\n this._expiringNotificationTimeInSeconds = args.expiringNotificationTimeInSeconds;\n }\n\n public load(container: User): void {\n const logger = this._logger.create(\"load\");\n // only register events if there's an access token and it has an expiration\n if (container.access_token && container.expires_in !== undefined) {\n const duration = container.expires_in;\n logger.debug(\"access token present, remaining duration:\", duration);\n\n if (duration > 0) {\n // only register expiring if we still have time\n let expiring = duration - this._expiringNotificationTimeInSeconds;\n if (expiring <= 0) {\n expiring = 1;\n }\n\n logger.debug(\"registering expiring timer, raising in\", expiring, \"seconds\");\n this._expiringTimer.init(expiring);\n }\n else {\n logger.debug(\"canceling existing expiring timer because we're past expiration.\");\n this._expiringTimer.cancel();\n }\n\n // if it's negative, it will still fire\n const expired = duration + 1;\n logger.debug(\"registering expired timer, raising in\", expired, \"seconds\");\n this._expiredTimer.init(expired);\n }\n else {\n this._expiringTimer.cancel();\n this._expiredTimer.cancel();\n }\n }\n\n public unload(): void {\n this._logger.debug(\"unload: canceling existing access token timers\");\n this._expiringTimer.cancel();\n this._expiredTimer.cancel();\n }\n\n /**\n * Add callback: Raised prior to the access token expiring.\n */\n public addAccessTokenExpiring(cb: AccessTokenCallback): () => void {\n return this._expiringTimer.addHandler(cb);\n }\n /**\n * Remove callback: Raised prior to the access token expiring.\n */\n public removeAccessTokenExpiring(cb: AccessTokenCallback): void {\n this._expiringTimer.removeHandler(cb);\n }\n\n /**\n * Add callback: Raised after the access token has expired.\n */\n public addAccessTokenExpired(cb: AccessTokenCallback): () => void {\n return this._expiredTimer.addHandler(cb);\n }\n /**\n * Remove callback: Raised after the access token has expired.\n */\n public removeAccessTokenExpired(cb: AccessTokenCallback): void {\n this._expiredTimer.removeHandler(cb);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\n\n/**\n * @internal\n */\nexport class CheckSessionIFrame {\n private readonly _logger = new Logger(\"CheckSessionIFrame\");\n private _frame_origin: string;\n private _frame: HTMLIFrameElement;\n private _timer: ReturnType<typeof setInterval> | null = null;\n private _session_state: string | null = null;\n\n public constructor(\n private _callback: () => Promise<void>,\n private _client_id: string,\n url: string,\n private _intervalInSeconds: number,\n private _stopOnError: boolean,\n ) {\n const parsedUrl = new URL(url);\n this._frame_origin = parsedUrl.origin;\n\n this._frame = window.document.createElement(\"iframe\");\n\n // shotgun approach\n this._frame.style.visibility = \"hidden\";\n this._frame.style.position = \"fixed\";\n this._frame.style.left = \"-1000px\";\n this._frame.style.top = \"0\";\n this._frame.width = \"0\";\n this._frame.height = \"0\";\n this._frame.src = parsedUrl.href;\n }\n\n public load(): Promise<void> {\n return new Promise<void>((resolve) => {\n this._frame.onload = () => {\n resolve();\n };\n\n window.document.body.appendChild(this._frame);\n window.addEventListener(\"message\", this._message, false);\n });\n }\n\n private _message = (e: MessageEvent<string>): void => {\n if (e.origin === this._frame_origin &&\n e.source === this._frame.contentWindow\n ) {\n if (e.data === \"error\") {\n this._logger.error(\"error message from check session op iframe\");\n if (this._stopOnError) {\n this.stop();\n }\n }\n else if (e.data === \"changed\") {\n this._logger.debug(\"changed message from check session op iframe\");\n this.stop();\n void this._callback();\n }\n else {\n this._logger.debug(e.data + \" message from check session op iframe\");\n }\n }\n };\n\n public start(session_state: string): void {\n if (this._session_state === session_state) {\n return;\n }\n\n this._logger.create(\"start\");\n\n this.stop();\n\n this._session_state = session_state;\n\n const send = () => {\n if (!this._frame.contentWindow || !this._session_state) {\n return;\n }\n\n this._frame.contentWindow.postMessage(this._client_id + \" \" + this._session_state, this._frame_origin);\n };\n\n // trigger now\n send();\n\n // and setup timer\n this._timer = setInterval(send, this._intervalInSeconds * 1000);\n }\n\n public stop(): void {\n this._logger.create(\"stop\");\n this._session_state = null;\n\n if (this._timer) {\n\n clearInterval(this._timer);\n this._timer = null;\n }\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\n\n/**\n * @public\n */\nexport class InMemoryWebStorage implements Storage {\n private readonly _logger = new Logger(\"InMemoryWebStorage\");\n private _data: Record<string, string> = {};\n\n public clear(): void {\n this._logger.create(\"clear\");\n this._data = {};\n }\n\n public getItem(key: string): string {\n this._logger.create(`getItem('${key}')`);\n return this._data[key];\n }\n\n public setItem(key: string, value: string): void {\n this._logger.create(`setItem('${key}')`);\n this._data[key] = value;\n }\n\n public removeItem(key: string): void {\n this._logger.create(`removeItem('${key}')`);\n delete this._data[key];\n }\n\n public get length(): number {\n return Object.getOwnPropertyNames(this._data).length;\n }\n\n public key(index: number): string {\n return Object.getOwnPropertyNames(this._data)[index];\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { ErrorResponse, ErrorTimeout } from \"./errors\";\nimport type { ExtraHeader } from \"./OidcClientSettings\";\nimport { Logger } from \"./utils\";\n\n/**\n * @internal\n */\nexport type JwtHandler = (text: string) => Promise<Record<string, unknown>>;\n\n/**\n * @internal\n */\nexport interface GetJsonOpts {\n token?: string;\n credentials?: RequestCredentials;\n}\n\n/**\n * @internal\n */\nexport interface PostFormOpts {\n body: URLSearchParams;\n basicAuth?: string;\n timeoutInSeconds?: number;\n initCredentials?: \"same-origin\" | \"include\" | \"omit\";\n}\n\n/**\n * @internal\n */\nexport class JsonService {\n private readonly _logger = new Logger(\"JsonService\");\n\n private _contentTypes: string[] = [];\n\n public constructor(\n additionalContentTypes: string[] = [],\n private _jwtHandler: JwtHandler | null = null,\n private _extraHeaders: Record<string, ExtraHeader> = {},\n ) {\n this._contentTypes.push(...additionalContentTypes, \"application/json\");\n if (_jwtHandler) {\n this._contentTypes.push(\"application/jwt\");\n }\n }\n\n protected async fetchWithTimeout(input: RequestInfo, init: RequestInit & { timeoutInSeconds?: number } = {}) {\n const { timeoutInSeconds, ...initFetch } = init;\n if (!timeoutInSeconds) {\n return await fetch(input, initFetch);\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutInSeconds * 1000);\n\n try {\n const response = await fetch(input, {\n ...init,\n signal: controller.signal,\n });\n return response;\n }\n catch (err) {\n if (err instanceof DOMException && err.name === \"AbortError\") {\n throw new ErrorTimeout(\"Network timed out\");\n }\n throw err;\n }\n finally {\n clearTimeout(timeoutId);\n }\n }\n\n public async getJson(url: string, {\n token,\n credentials,\n }: GetJsonOpts = {}): Promise<Record<string, unknown>> {\n const logger = this._logger.create(\"getJson\");\n const headers: HeadersInit = {\n \"Accept\": this._contentTypes.join(\", \"),\n };\n if (token) {\n logger.debug(\"token passed, setting Authorization header\");\n headers[\"Authorization\"] = \"Bearer \" + token;\n }\n\n this.appendExtraHeaders(headers);\n\n let response: Response;\n try {\n logger.debug(\"url:\", url);\n response = await this.fetchWithTimeout(url, { method: \"GET\", headers, credentials });\n }\n catch (err) {\n logger.error(\"Network Error\");\n throw err;\n }\n\n logger.debug(\"HTTP response received, status\", response.status);\n const contentType = response.headers.get(\"Content-Type\");\n if (contentType && !this._contentTypes.find(item => contentType.startsWith(item))) {\n logger.throw(new Error(`Invalid response Content-Type: ${(contentType ?? \"undefined\")}, from URL: ${url}`));\n }\n if (response.ok && this._jwtHandler && contentType?.startsWith(\"application/jwt\")) {\n return await this._jwtHandler(await response.text());\n }\n let json: Record<string, unknown>;\n try {\n json = await response.json();\n }\n catch (err) {\n logger.error(\"Error parsing JSON response\", err);\n if (response.ok) throw err;\n throw new Error(`${response.statusText} (${response.status})`);\n }\n if (!response.ok) {\n logger.error(\"Error from server:\", json);\n if (json.error) {\n throw new ErrorResponse(json);\n }\n throw new Error(`${response.statusText} (${response.status}): ${JSON.stringify(json)}`);\n }\n return json;\n }\n\n public async postForm(url: string, {\n body,\n basicAuth,\n timeoutInSeconds,\n initCredentials,\n }: PostFormOpts): Promise<Record<string, unknown>> {\n const logger = this._logger.create(\"postForm\");\n const headers: HeadersInit = {\n \"Accept\": this._contentTypes.join(\", \"),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n };\n if (basicAuth !== undefined) {\n headers[\"Authorization\"] = \"Basic \" + basicAuth;\n }\n\n this.appendExtraHeaders(headers);\n\n let response: Response;\n try {\n logger.debug(\"url:\", url);\n response = await this.fetchWithTimeout(url, { method: \"POST\", headers, body, timeoutInSeconds, credentials: initCredentials });\n }\n catch (err) {\n logger.error(\"Network error\");\n throw err;\n }\n\n logger.debug(\"HTTP response received, status\", response.status);\n const contentType = response.headers.get(\"Content-Type\");\n if (contentType && !this._contentTypes.find(item => contentType.startsWith(item))) {\n throw new Error(`Invalid response Content-Type: ${(contentType ?? \"undefined\")}, from URL: ${url}`);\n }\n\n const responseText = await response.text();\n\n let json: Record<string, unknown> = {};\n if (responseText) {\n try {\n json = JSON.parse(responseText);\n }\n catch (err) {\n logger.error(\"Error parsing JSON response\", err);\n if (response.ok) throw err;\n throw new Error(`${response.statusText} (${response.status})`);\n }\n }\n\n if (!response.ok) {\n logger.error(\"Error from server:\", json);\n if (json.error) {\n throw new ErrorResponse(json, body);\n }\n throw new Error(`${response.statusText} (${response.status}): ${JSON.stringify(json)}`);\n }\n\n return json;\n }\n\n private appendExtraHeaders(\n headers: Record<string, string>,\n ): void {\n const logger = this._logger.create(\"appendExtraHeaders\");\n const customKeys = Object.keys(this._extraHeaders);\n const protectedHeaders = [\n \"authorization\",\n \"accept\",\n \"content-type\",\n ];\n if (customKeys.length === 0) {\n return;\n }\n customKeys.forEach((headerName) => {\n if (protectedHeaders.includes(headerName.toLocaleLowerCase())) {\n logger.warn(\"Protected header could not be overridden\", headerName, protectedHeaders);\n return;\n }\n const content = (typeof this._extraHeaders[headerName] === \"function\") ?\n (this._extraHeaders[headerName] as ()=>string)() :\n this._extraHeaders[headerName];\n if (content && content !== \"\") {\n headers[headerName] = content as string;\n }\n });\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport { JsonService } from \"./JsonService\";\nimport type { OidcClientSettingsStore, SigningKey } from \"./OidcClientSettings\";\nimport type { OidcMetadata } from \"./OidcMetadata\";\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata\n */\nexport class MetadataService {\n private readonly _logger = new Logger(\"MetadataService\");\n private readonly _jsonService;\n\n // cache\n private _metadataUrl: string;\n private _signingKeys: SigningKey[] | null = null;\n private _metadata: Partial<OidcMetadata> | null = null;\n private _fetchRequestCredentials: RequestCredentials | undefined;\n\n public constructor(private readonly _settings: OidcClientSettingsStore) {\n this._metadataUrl = this._settings.metadataUrl;\n this._jsonService = new JsonService(\n [\"application/jwk-set+json\"],\n null,\n this._settings.extraHeaders,\n );\n if (this._settings.signingKeys) {\n this._logger.debug(\"using signingKeys from settings\");\n this._signingKeys = this._settings.signingKeys;\n }\n\n if (this._settings.metadata) {\n this._logger.debug(\"using metadata from settings\");\n this._metadata = this._settings.metadata;\n }\n\n if (this._settings.fetchRequestCredentials) {\n this._logger.debug(\"using fetchRequestCredentials from settings\");\n this._fetchRequestCredentials = this._settings.fetchRequestCredentials;\n }\n }\n\n public resetSigningKeys(): void {\n this._signingKeys = null;\n }\n\n public async getMetadata(): Promise<Partial<OidcMetadata>> {\n const logger = this._logger.create(\"getMetadata\");\n if (this._metadata) {\n logger.debug(\"using cached values\");\n return this._metadata;\n }\n\n if (!this._metadataUrl) {\n logger.throw(new Error(\"No authority or metadataUrl configured on settings\"));\n throw null;\n }\n\n logger.debug(\"getting metadata from\", this._metadataUrl);\n const metadata = await this._jsonService.getJson(this._metadataUrl, { credentials: this._fetchRequestCredentials });\n\n logger.debug(\"merging remote JSON with seed metadata\");\n this._metadata = Object.assign({}, this._settings.metadataSeed, metadata);\n return this._metadata;\n }\n\n public getIssuer(): Promise<string> {\n return this._getMetadataProperty(\"issuer\") as Promise<string>;\n }\n\n public getAuthorizationEndpoint(): Promise<string> {\n return this._getMetadataProperty(\"authorization_endpoint\") as Promise<string>;\n }\n\n public getUserInfoEndpoint(): Promise<string> {\n return this._getMetadataProperty(\"userinfo_endpoint\") as Promise<string>;\n }\n\n public getTokenEndpoint(optional: false): Promise<string>;\n public getTokenEndpoint(optional?: true): Promise<string | undefined>;\n public getTokenEndpoint(optional = true): Promise<string | undefined> {\n return this._getMetadataProperty(\"token_endpoint\", optional) as Promise<string | undefined>;\n }\n\n public getCheckSessionIframe(): Promise<string | undefined> {\n return this._getMetadataProperty(\"check_session_iframe\", true) as Promise<string | undefined>;\n }\n\n public getEndSessionEndpoint(): Promise<string | undefined> {\n return this._getMetadataProperty(\"end_session_endpoint\", true) as Promise<string | undefined>;\n }\n\n public getRevocationEndpoint(optional: false): Promise<string>;\n public getRevocationEndpoint(optional?: true): Promise<string | undefined>;\n public getRevocationEndpoint(optional = true): Promise<string | undefined> {\n return this._getMetadataProperty(\"revocation_endpoint\", optional) as Promise<string | undefined>;\n }\n\n public getKeysEndpoint(optional: false): Promise<string>;\n public getKeysEndpoint(optional?: true): Promise<string | undefined>;\n public getKeysEndpoint(optional = true): Promise<string | undefined> {\n return this._getMetadataProperty(\"jwks_uri\", optional) as Promise<string | undefined>;\n }\n\n protected async _getMetadataProperty(name: keyof OidcMetadata, optional=false): Promise<string | boolean | string[] | undefined> {\n const logger = this._logger.create(`_getMetadataProperty('${name}')`);\n\n const metadata = await this.getMetadata();\n logger.debug(\"resolved\");\n\n if (metadata[name] === undefined) {\n if (optional === true) {\n logger.warn(\"Metadata does not contain optional property\");\n return undefined;\n }\n\n logger.throw(new Error(\"Metadata does not contain property \" + name));\n }\n\n return metadata[name];\n }\n\n public async getSigningKeys(): Promise<SigningKey[] | null> {\n const logger = this._logger.create(\"getSigningKeys\");\n if (this._signingKeys) {\n logger.debug(\"returning signingKeys from cache\");\n return this._signingKeys;\n }\n\n const jwks_uri = await this.getKeysEndpoint(false);\n logger.debug(\"got jwks_uri\", jwks_uri);\n\n const keySet = await this._jsonService.getJson(jwks_uri);\n logger.debug(\"got key set\", keySet);\n\n if (!Array.isArray(keySet.keys)) {\n logger.throw(new Error(\"Missing keys on keyset\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n this._signingKeys = keySet.keys;\n return this._signingKeys;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport type { StateStore } from \"./StateStore\";\nimport type { AsyncStorage } from \"./AsyncStorage\";\n\n/**\n * @public\n */\nexport class WebStorageStateStore implements StateStore {\n private readonly _logger = new Logger(\"WebStorageStateStore\");\n\n private readonly _store: AsyncStorage | Storage;\n private readonly _prefix: string;\n\n public constructor({\n prefix = \"oidc.\",\n store = localStorage,\n }: { prefix?: string; store?: AsyncStorage | Storage } = {}) {\n this._store = store;\n this._prefix = prefix;\n }\n\n public async set(key: string, value: string): Promise<void> {\n this._logger.create(`set('${key}')`);\n\n key = this._prefix + key;\n await this._store.setItem(key, value);\n }\n\n public async get(key: string): Promise<string | null> {\n this._logger.create(`get('${key}')`);\n\n key = this._prefix + key;\n const item = await this._store.getItem(key);\n return item;\n }\n\n public async remove(key: string): Promise<string | null> {\n this._logger.create(`remove('${key}')`);\n\n key = this._prefix + key;\n const item = await this._store.getItem(key);\n await this._store.removeItem(key);\n return item;\n }\n\n public async getAllKeys(): Promise<string[]> {\n this._logger.create(\"getAllKeys\");\n const len = await this._store.length;\n\n const keys = [];\n for (let index = 0; index < len; index++) {\n const key = await this._store.key(index);\n if (key && key.indexOf(this._prefix) === 0) {\n keys.push(key.substr(this._prefix.length));\n }\n }\n return keys;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { WebStorageStateStore } from \"./WebStorageStateStore\";\nimport type { OidcMetadata } from \"./OidcMetadata\";\nimport type { StateStore } from \"./StateStore\";\nimport { InMemoryWebStorage } from \"./InMemoryWebStorage\";\n\nconst DefaultResponseType = \"code\";\nconst DefaultScope = \"openid\";\nconst DefaultClientAuthentication = \"client_secret_post\";\nconst DefaultResponseMode = \"query\";\nconst DefaultStaleStateAgeInSeconds = 60 * 15;\nconst DefaultClockSkewInSeconds = 60 * 5;\n\n/**\n * @public\n */\nexport type SigningKey = Record<string, string | string[]>;\n\n/**\n * @public\n */\nexport type ExtraHeader = string | (() => string);\n\n/**\n * The settings used to configure the {@link OidcClient}.\n *\n * @public\n */\nexport interface OidcClientSettings {\n /** The URL of the OIDC/OAuth2 provider */\n authority: string;\n metadataUrl?: string;\n /** Provide metadata when authority server does not allow CORS on the metadata endpoint */\n metadata?: Partial<OidcMetadata>;\n /** Can be used to seed or add additional values to the results of the discovery request */\n metadataSeed?: Partial<OidcMetadata>;\n /** Provide signingKeys when authority server does not allow CORS on the jwks uri */\n signingKeys?: SigningKey[];\n\n /** Your client application's identifier as registered with the OIDC/OAuth2 */\n client_id: string;\n client_secret?: string;\n /** The type of response desired from the OIDC/OAuth2 provider (default: \"code\") */\n response_type?: string;\n /** The scope being requested from the OIDC/OAuth2 provider (default: \"openid\") */\n scope?: string;\n /** The redirect URI of your client application to receive a response from the OIDC/OAuth2 provider */\n redirect_uri: string;\n /** The OIDC/OAuth2 post-logout redirect URI */\n post_logout_redirect_uri?: string;\n\n /**\n * Client authentication method that is used to authenticate when using the token endpoint (default: \"client_secret_post\")\n * - \"client_secret_basic\": using the HTTP Basic authentication scheme\n * - \"client_secret_post\": including the client credentials in the request body\n *\n * See https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication\n */\n client_authentication?: \"client_secret_basic\" | \"client_secret_post\";\n\n /** optional protocol param */\n prompt?: string;\n /** optional protocol param */\n display?: string;\n /** optional protocol param */\n max_age?: number;\n /** optional protocol param */\n ui_locales?: string;\n /** optional protocol param */\n acr_values?: string;\n /** optional protocol param */\n resource?: string | string[];\n\n /** optional protocol param (default: \"query\") */\n response_mode?: \"query\" | \"fragment\";\n\n /**\n * Should optional OIDC protocol claims be removed from profile or specify the ones to be removed (default: true)\n * When true, the following claims are removed by default: [\"nbf\", \"jti\", \"auth_time\", \"nonce\", \"acr\", \"amr\", \"azp\", \"at_hash\"]\n * When specifying claims, the following claims are not allowed: [\"sub\", \"iss\", \"aud\", \"exp\", \"iat\"]\n */\n filterProtocolClaims?: boolean | string[];\n /** Flag to control if additional identity data is loaded from the user info endpoint in order to populate the user's profile (default: false) */\n loadUserInfo?: boolean;\n /** Number (in seconds) indicating the age of state entries in storage for authorize requests that are considered abandoned and thus can be cleaned up (default: 900) */\n staleStateAgeInSeconds?: number;\n\n /** @deprecated Unused */\n clockSkewInSeconds?: number;\n /** @deprecated Unused */\n userInfoJwtIssuer?: /*\"ANY\" | \"OP\" |*/ string;\n\n /**\n * Indicates if objects returned from the user info endpoint as claims (e.g. `address`) are merged into the claims from the id token as a single object.\n * Otherwise, they are added to an array as distinct objects for the claim type. (default: false)\n */\n mergeClaims?: boolean;\n\n /**\n * Storage object used to persist interaction state (default: window.localStorage, InMemoryWebStorage iff no window).\n * E.g. `stateStore: new WebStorageStateStore({ store: window.localStorage })`\n */\n stateStore?: StateStore;\n\n /**\n * An object containing additional query string parameters to be including in the authorization request.\n * E.g, when using Azure AD to obtain an access token an additional resource parameter is required. extraQueryParams: `{resource:\"some_identifier\"}`\n */\n extraQueryParams?: Record<string, string | number | boolean>;\n\n extraTokenParams?: Record<string, unknown>;\n\n /**\n * An object containing additional header to be including in request.\n */\n extraHeaders?: Record<string, ExtraHeader>;\n\n /**\n * @deprecated since version 2.1.0. Use fetchRequestCredentials instead.\n */\n refreshTokenCredentials?: \"same-origin\" | \"include\" | \"omit\";\n\n /**\n * Will check the content type header of the response of the revocation endpoint to match these passed values (default: [])\n */\n revokeTokenAdditionalContentTypes?: string[];\n /**\n * Will disable pkce validation, changing to true will not append to sign in request code_challenge and code_challenge_method. (default: false)\n */\n disablePKCE?: boolean;\n /**\n * Sets the credentials for fetch requests. (default: \"same-origin\")\n * Use this if you need to send cookies to the OIDC/OAuth2 provider or if you are using a proxy that requires cookies\n */\n fetchRequestCredentials?: RequestCredentials;\n\n /**\n * Only scopes in this list will be passed in the token refresh request.\n */\n refreshTokenAllowedScope?: string | undefined;\n}\n\n/**\n * The settings with defaults applied of the {@link OidcClient}.\n * @see {@link OidcClientSettings}\n *\n * @public\n */\nexport class OidcClientSettingsStore {\n // metadata\n public readonly authority: string;\n public readonly metadataUrl: string;\n public readonly metadata: Partial<OidcMetadata> | undefined;\n public readonly metadataSeed: Partial<OidcMetadata> | undefined;\n public readonly signingKeys: SigningKey[] | undefined;\n\n // client config\n public readonly client_id: string;\n public readonly client_secret: string | undefined;\n public readonly response_type: string;\n public readonly scope: string;\n public readonly redirect_uri: string;\n public readonly post_logout_redirect_uri: string | undefined;\n public readonly client_authentication: \"client_secret_basic\" | \"client_secret_post\";\n\n // optional protocol params\n public readonly prompt: string | undefined;\n public readonly display: string | undefined;\n public readonly max_age: number | undefined;\n public readonly ui_locales: string | undefined;\n public readonly acr_values: string | undefined;\n public readonly resource: string | string[] | undefined;\n public readonly response_mode: \"query\" | \"fragment\";\n\n // behavior flags\n public readonly filterProtocolClaims: boolean | string[];\n public readonly loadUserInfo: boolean;\n public readonly staleStateAgeInSeconds: number;\n public readonly clockSkewInSeconds: number;\n public readonly userInfoJwtIssuer: /*\"ANY\" | \"OP\" |*/ string;\n public readonly mergeClaims: boolean;\n\n public readonly stateStore: StateStore;\n\n // extra\n public readonly extraQueryParams: Record<string, string | number | boolean>;\n public readonly extraTokenParams: Record<string, unknown>;\n public readonly extraHeaders: Record<string, ExtraHeader>;\n\n public readonly revokeTokenAdditionalContentTypes?: string[];\n public readonly fetchRequestCredentials: RequestCredentials;\n public readonly refreshTokenAllowedScope: string | undefined;\n public readonly disablePKCE: boolean;\n\n public constructor({\n // metadata related\n authority, metadataUrl, metadata, signingKeys, metadataSeed,\n // client related\n client_id, client_secret, response_type = DefaultResponseType, scope = DefaultScope,\n redirect_uri, post_logout_redirect_uri,\n client_authentication = DefaultClientAuthentication,\n // optional protocol\n prompt, display, max_age, ui_locales, acr_values, resource, response_mode = DefaultResponseMode,\n // behavior flags\n filterProtocolClaims = true,\n loadUserInfo = false,\n staleStateAgeInSeconds = DefaultStaleStateAgeInSeconds,\n clockSkewInSeconds = DefaultClockSkewInSeconds,\n userInfoJwtIssuer = \"OP\",\n mergeClaims = false,\n disablePKCE = false,\n // other behavior\n stateStore,\n refreshTokenCredentials,\n revokeTokenAdditionalContentTypes,\n fetchRequestCredentials,\n refreshTokenAllowedScope,\n // extra\n extraQueryParams = {},\n extraTokenParams = {},\n extraHeaders = {},\n }: OidcClientSettings) {\n\n this.authority = authority;\n\n if (metadataUrl) {\n this.metadataUrl = metadataUrl;\n } else {\n this.metadataUrl = authority;\n if (authority) {\n if (!this.metadataUrl.endsWith(\"/\")) {\n this.metadataUrl += \"/\";\n }\n this.metadataUrl += \".well-known/openid-configuration\";\n }\n }\n\n this.metadata = metadata;\n this.metadataSeed = metadataSeed;\n this.signingKeys = signingKeys;\n\n this.client_id = client_id;\n this.client_secret = client_secret;\n this.response_type = response_type;\n this.scope = scope;\n this.redirect_uri = redirect_uri;\n this.post_logout_redirect_uri = post_logout_redirect_uri;\n this.client_authentication = client_authentication;\n\n this.prompt = prompt;\n this.display = display;\n this.max_age = max_age;\n this.ui_locales = ui_locales;\n this.acr_values = acr_values;\n this.resource = resource;\n this.response_mode = response_mode;\n\n this.filterProtocolClaims = filterProtocolClaims ?? true;\n this.loadUserInfo = !!loadUserInfo;\n this.staleStateAgeInSeconds = staleStateAgeInSeconds;\n this.clockSkewInSeconds = clockSkewInSeconds;\n this.userInfoJwtIssuer = userInfoJwtIssuer;\n this.mergeClaims = !!mergeClaims;\n this.disablePKCE = !!disablePKCE;\n this.revokeTokenAdditionalContentTypes = revokeTokenAdditionalContentTypes;\n\n if (fetchRequestCredentials && refreshTokenCredentials) {\n console.warn(\"Both fetchRequestCredentials and refreshTokenCredentials is set. Only fetchRequestCredentials will be used.\");\n }\n this.fetchRequestCredentials = fetchRequestCredentials ? fetchRequestCredentials\n : refreshTokenCredentials ? refreshTokenCredentials : \"same-origin\";\n\n if (stateStore) {\n this.stateStore = stateStore;\n }\n else {\n const store = typeof window !== \"undefined\" ? window.localStorage : new InMemoryWebStorage();\n this.stateStore = new WebStorageStateStore({ store });\n }\n\n this.refreshTokenAllowedScope = refreshTokenAllowedScope;\n\n this.extraQueryParams = extraQueryParams;\n this.extraTokenParams = extraTokenParams;\n this.extraHeaders = extraHeaders;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, JwtUtils } from \"./utils\";\nimport { JsonService } from \"./JsonService\";\nimport type { MetadataService } from \"./MetadataService\";\nimport type { JwtClaims } from \"./Claims\";\nimport type { OidcClientSettingsStore } from \"./OidcClientSettings\";\n\n/**\n * @internal\n */\nexport class UserInfoService {\n protected readonly _logger = new Logger(\"UserInfoService\");\n private readonly _jsonService: JsonService;\n\n public constructor(private readonly _settings: OidcClientSettingsStore,\n private readonly _metadataService: MetadataService,\n ) {\n this._jsonService = new JsonService(\n undefined,\n this._getClaimsFromJwt,\n this._settings.extraHeaders,\n );\n }\n\n public async getClaims(token: string): Promise<JwtClaims> {\n const logger = this._logger.create(\"getClaims\");\n if (!token) {\n this._logger.throw(new Error(\"No token passed\"));\n }\n\n const url = await this._metadataService.getUserInfoEndpoint();\n logger.debug(\"got userinfo url\", url);\n\n const claims = await this._jsonService.getJson(url, {\n token,\n credentials: this._settings.fetchRequestCredentials,\n });\n logger.debug(\"got claims\", claims);\n\n return claims;\n }\n\n protected _getClaimsFromJwt = async (responseText: string): Promise<JwtClaims> => {\n const logger = this._logger.create(\"_getClaimsFromJwt\");\n try {\n const payload = JwtUtils.decode(responseText);\n logger.debug(\"JWT decoding successful\");\n\n return payload;\n } catch (err) {\n logger.error(\"Error parsing JWT response\");\n throw err;\n }\n };\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { CryptoUtils, Logger } from \"./utils\";\nimport { JsonService } from \"./JsonService\";\nimport type { MetadataService } from \"./MetadataService\";\nimport type { OidcClientSettingsStore } from \"./OidcClientSettings\";\n\n/**\n * @internal\n */\nexport interface ExchangeCodeArgs {\n client_id?: string;\n client_secret?: string;\n redirect_uri?: string;\n\n grant_type?: string;\n code: string;\n code_verifier?: string;\n}\n\n/**\n * @internal\n */\nexport interface ExchangeCredentialsArgs {\n client_id?: string;\n client_secret?: string;\n\n grant_type?: string;\n scope?: string;\n\n username: string;\n password: string;\n}\n\n/**\n * @internal\n */\nexport interface ExchangeRefreshTokenArgs {\n client_id?: string;\n client_secret?: string;\n\n grant_type?: string;\n refresh_token: string;\n scope?: string;\n resource?: string | string[];\n\n timeoutInSeconds?: number;\n}\n\n/**\n * @internal\n */\nexport interface RevokeArgs {\n token: string;\n token_type_hint?: \"access_token\" | \"refresh_token\";\n}\n\n/**\n * @internal\n */\nexport class TokenClient {\n private readonly _logger = new Logger(\"TokenClient\");\n private readonly _jsonService;\n\n public constructor(\n private readonly _settings: OidcClientSettingsStore,\n private readonly _metadataService: MetadataService,\n ) {\n this._jsonService = new JsonService(\n this._settings.revokeTokenAdditionalContentTypes,\n null,\n this._settings.extraHeaders,\n );\n }\n\n /**\n * Exchange code.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3\n */\n public async exchangeCode({\n grant_type = \"authorization_code\",\n redirect_uri = this._settings.redirect_uri,\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n ...args\n }: ExchangeCodeArgs): Promise<Record<string, unknown>> {\n const logger = this._logger.create(\"exchangeCode\");\n if (!client_id) {\n logger.throw(new Error(\"A client_id is required\"));\n }\n if (!redirect_uri) {\n logger.throw(new Error(\"A redirect_uri is required\"));\n }\n if (!args.code) {\n logger.throw(new Error(\"A code is required\"));\n }\n\n const params = new URLSearchParams({ grant_type, redirect_uri });\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n let basicAuth: string | undefined;\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n if (!client_secret) {\n logger.throw(new Error(\"A client_secret is required\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n }\n\n const url = await this._metadataService.getTokenEndpoint(false);\n logger.debug(\"got token endpoint\");\n\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, initCredentials: this._settings.fetchRequestCredentials });\n logger.debug(\"got response\");\n\n return response;\n }\n\n /**\n * Exchange credentials.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.3.2\n */\n public async exchangeCredentials({\n grant_type = \"password\",\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n scope = this._settings.scope,\n ...args\n }: ExchangeCredentialsArgs): Promise<Record<string, unknown>> {\n const logger = this._logger.create(\"exchangeCredentials\");\n\n if (!client_id) {\n logger.throw(new Error(\"A client_id is required\"));\n }\n\n const params = new URLSearchParams({ grant_type, scope });\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n\n let basicAuth: string | undefined;\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n if (!client_secret) {\n logger.throw(new Error(\"A client_secret is required\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n }\n\n const url = await this._metadataService.getTokenEndpoint(false);\n logger.debug(\"got token endpoint\");\n\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, initCredentials: this._settings.fetchRequestCredentials });\n logger.debug(\"got response\");\n\n return response;\n }\n\n /**\n * Exchange a refresh token.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-6\n */\n public async exchangeRefreshToken({\n grant_type = \"refresh_token\",\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n timeoutInSeconds,\n ...args\n }: ExchangeRefreshTokenArgs): Promise<Record<string, unknown>> {\n const logger = this._logger.create(\"exchangeRefreshToken\");\n if (!client_id) {\n logger.throw(new Error(\"A client_id is required\"));\n }\n if (!args.refresh_token) {\n logger.throw(new Error(\"A refresh_token is required\"));\n }\n\n const params = new URLSearchParams({ grant_type });\n for (const [key, value] of Object.entries(args)) {\n if (Array.isArray(value)) {\n value.forEach(param => params.append(key, param));\n }\n else if (value != null) {\n params.set(key, value);\n }\n }\n let basicAuth: string | undefined;\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n if (!client_secret) {\n logger.throw(new Error(\"A client_secret is required\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n }\n\n const url = await this._metadataService.getTokenEndpoint(false);\n logger.debug(\"got token endpoint\");\n\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, timeoutInSeconds, initCredentials: this._settings.fetchRequestCredentials });\n logger.debug(\"got response\");\n\n return response;\n }\n\n /**\n * Revoke an access or refresh token.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc7009#section-2.1\n */\n public async revoke(args: RevokeArgs): Promise<void> {\n const logger = this._logger.create(\"revoke\");\n if (!args.token) {\n logger.throw(new Error(\"A token is required\"));\n }\n\n const url = await this._metadataService.getRevocationEndpoint(false);\n\n logger.debug(`got revocation endpoint, revoking ${args.token_type_hint ?? \"default token type\"}`);\n\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n params.set(\"client_id\", this._settings.client_id);\n if (this._settings.client_secret) {\n params.set(\"client_secret\", this._settings.client_secret);\n }\n\n await this._jsonService.postForm(url, { body: params });\n logger.debug(\"got response\");\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, JwtUtils } from \"./utils\";\nimport { ErrorResponse } from \"./errors\";\nimport type { MetadataService } from \"./MetadataService\";\nimport { UserInfoService } from \"./UserInfoService\";\nimport { TokenClient } from \"./TokenClient\";\nimport type { OidcClientSettingsStore } from \"./OidcClientSettings\";\nimport type { SigninState } from \"./SigninState\";\nimport type { SigninResponse } from \"./SigninResponse\";\nimport type { State } from \"./State\";\nimport type { SignoutResponse } from \"./SignoutResponse\";\nimport type { UserProfile } from \"./User\";\nimport type { RefreshState } from \"./RefreshState\";\nimport type { IdTokenClaims } from \"./Claims\";\nimport type { ClaimsService } from \"./ClaimsService\";\n\n/**\n * @internal\n */\nexport class ResponseValidator {\n protected readonly _logger = new Logger(\"ResponseValidator\");\n protected readonly _userInfoService = new UserInfoService(this._settings, this._metadataService);\n protected readonly _tokenClient = new TokenClient(this._settings, this._metadataService);\n\n public constructor(\n protected readonly _settings: OidcClientSettingsStore,\n protected readonly _metadataService: MetadataService,\n protected readonly _claimsService: ClaimsService,\n ) {}\n\n public async validateSigninResponse(response: SigninResponse, state: SigninState): Promise<void> {\n const logger = this._logger.create(\"validateSigninResponse\");\n\n this._processSigninState(response, state);\n logger.debug(\"state processed\");\n\n await this._processCode(response, state);\n logger.debug(\"code processed\");\n\n if (response.isOpenId) {\n this._validateIdTokenAttributes(response);\n }\n logger.debug(\"tokens validated\");\n\n await this._processClaims(response, state?.skipUserInfo, response.isOpenId);\n logger.debug(\"claims processed\");\n }\n\n public async validateCredentialsResponse(response: SigninResponse, skipUserInfo: boolean): Promise<void> {\n const logger = this._logger.create(\"validateCredentialsResponse\");\n\n if (response.isOpenId && !!response.id_token) {\n this._validateIdTokenAttributes(response);\n }\n logger.debug(\"tokens validated\");\n\n await this._processClaims(response, skipUserInfo, response.isOpenId);\n logger.debug(\"claims processed\");\n }\n\n public async validateRefreshResponse(response: SigninResponse, state: RefreshState): Promise<void> {\n const logger = this._logger.create(\"validateRefreshResponse\");\n\n response.userState = state.data;\n // if there's no session_state on the response, copy over session_state from original request\n response.session_state ??= state.session_state;\n // if there's no scope on the response, then assume all scopes granted (per-spec) and copy over scopes from original request\n response.scope ??= state.scope;\n\n // OpenID Connect Core 1.0 says that id_token is optional in refresh response:\n // https://openid.net/specs/openid-connect-core-1_0.html#RefreshTokenResponse\n if (response.isOpenId && !!response.id_token) {\n this._validateIdTokenAttributes(response, state.id_token);\n logger.debug(\"ID Token validated\");\n }\n\n if (!response.id_token) {\n // if there's no id_token on the response, copy over id_token from original request\n response.id_token = state.id_token;\n // and decoded part too\n response.profile = state.profile;\n }\n\n const hasIdToken = response.isOpenId && !!response.id_token;\n await this._processClaims(response, false, hasIdToken);\n logger.debug(\"claims processed\");\n }\n\n public validateSignoutResponse(response: SignoutResponse, state: State): void {\n const logger = this._logger.create(\"validateSignoutResponse\");\n if (state.id !== response.state) {\n logger.throw(new Error(\"State does not match\"));\n }\n\n // now that we know the state matches, take the stored data\n // and set it into the response so callers can get their state\n // this is important for both success & error outcomes\n logger.debug(\"state validated\");\n response.userState = state.data;\n\n if (response.error) {\n logger.warn(\"Response was error\", response.error);\n throw new ErrorResponse(response);\n }\n }\n\n protected _processSigninState(response: SigninResponse, state: SigninState): void {\n const logger = this._logger.create(\"_processSigninState\");\n if (state.id !== response.state) {\n logger.throw(new Error(\"State does not match\"));\n }\n\n if (!state.client_id) {\n logger.throw(new Error(\"No client_id on state\"));\n }\n\n if (!state.authority) {\n logger.throw(new Error(\"No authority on state\"));\n }\n\n // ensure we're using the correct authority\n if (this._settings.authority !== state.authority) {\n logger.throw(new Error(\"authority mismatch on settings vs. signin state\"));\n }\n if (this._settings.client_id && this._settings.client_id !== state.client_id) {\n logger.throw(new Error(\"client_id mismatch on settings vs. signin state\"));\n }\n\n // now that we know the state matches, take the stored data\n // and set it into the response so callers can get their state\n // this is important for both success & error outcomes\n logger.debug(\"state validated\");\n response.userState = state.data;\n response.url_state = state.url_state;\n // if there's no scope on the response, then assume all scopes granted (per-spec) and copy over scopes from original request\n response.scope ??= state.scope;\n\n if (response.error) {\n logger.warn(\"Response was error\", response.error);\n throw new ErrorResponse(response);\n }\n\n if (state.code_verifier && !response.code) {\n logger.throw(new Error(\"Expected code in response\"));\n }\n\n }\n\n protected async _processClaims(response: SigninResponse, skipUserInfo = false, validateSub = true): Promise<void> {\n const logger = this._logger.create(\"_processClaims\");\n response.profile = this._claimsService.filterProtocolClaims(response.profile);\n\n if (skipUserInfo || !this._settings.loadUserInfo || !response.access_token) {\n logger.debug(\"not loading user info\");\n return;\n }\n\n logger.debug(\"loading user info\");\n const claims = await this._userInfoService.getClaims(response.access_token);\n logger.debug(\"user info claims received from user info endpoint\");\n\n if (validateSub && claims.sub !== response.profile.sub) {\n logger.throw(new Error(\"subject from UserInfo response does not match subject in ID Token\"));\n }\n\n response.profile = this._claimsService.mergeClaims(response.profile, this._claimsService.filterProtocolClaims(claims as IdTokenClaims));\n logger.debug(\"user info claims received, updated profile:\", response.profile);\n }\n\n protected async _processCode(response: SigninResponse, state: SigninState): Promise<void> {\n const logger = this._logger.create(\"_processCode\");\n if (response.code) {\n logger.debug(\"Validating code\");\n const tokenResponse = await this._tokenClient.exchangeCode({\n client_id: state.client_id,\n client_secret: state.client_secret,\n code: response.code,\n redirect_uri: state.redirect_uri,\n code_verifier: state.code_verifier,\n ...state.extraTokenParams,\n });\n Object.assign(response, tokenResponse);\n } else {\n logger.debug(\"No code to process\");\n }\n }\n\n protected _validateIdTokenAttributes(response: SigninResponse, existingToken?: string): void {\n const logger = this._logger.create(\"_validateIdTokenAttributes\");\n\n logger.debug(\"decoding ID Token JWT\");\n const incoming = JwtUtils.decode(response.id_token ?? \"\");\n\n if (!incoming.sub) {\n logger.throw(new Error(\"ID Token is missing a subject claim\"));\n }\n\n if (existingToken) {\n const existing = JwtUtils.decode(existingToken);\n if (incoming.sub !== existing.sub) {\n logger.throw(new Error(\"sub in id_token does not match current sub\"));\n }\n if (incoming.auth_time && incoming.auth_time !== existing.auth_time) {\n logger.throw(new Error(\"auth_time in id_token does not match original auth_time\"));\n }\n if (incoming.azp && incoming.azp !== existing.azp) {\n logger.throw(new Error(\"azp in id_token does not match original azp\"));\n }\n if (!incoming.azp && existing.azp) {\n logger.throw(new Error(\"azp not in id_token, but present in original id_token\"));\n }\n }\n\n response.profile = incoming as UserProfile;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, CryptoUtils, Timer } from \"./utils\";\nimport type { StateStore } from \"./StateStore\";\n\n/**\n * @public\n */\nexport class State {\n public readonly id: string;\n public readonly created: number;\n public readonly request_type: string | undefined;\n public readonly url_state: string | undefined;\n\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n public readonly data?: unknown;\n\n public constructor(args: {\n id?: string;\n data?: unknown;\n created?: number;\n request_type?: string;\n url_state?: string;\n }) {\n this.id = args.id || CryptoUtils.generateUUIDv4();\n this.data = args.data;\n\n if (args.created && args.created > 0) {\n this.created = args.created;\n }\n else {\n this.created = Timer.getEpochTime();\n }\n this.request_type = args.request_type;\n this.url_state = args.url_state;\n }\n\n public toStorageString(): string {\n new Logger(\"State\").create(\"toStorageString\");\n return JSON.stringify({\n id: this.id,\n data: this.data,\n created: this.created,\n request_type: this.request_type,\n url_state: this.url_state,\n });\n }\n\n public static fromStorageString(storageString: string): State {\n Logger.createStatic(\"State\", \"fromStorageString\");\n return new State(JSON.parse(storageString));\n }\n\n public static async clearStaleState(storage: StateStore, age: number): Promise<void> {\n const logger = Logger.createStatic(\"State\", \"clearStaleState\");\n const cutoff = Timer.getEpochTime() - age;\n\n const keys = await storage.getAllKeys();\n logger.debug(\"got keys\", keys);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const item = await storage.get(key);\n let remove = false;\n\n if (item) {\n try {\n const state = State.fromStorageString(item);\n\n logger.debug(\"got item from key:\", key, state.created);\n if (state.created <= cutoff) {\n remove = true;\n }\n }\n catch (err) {\n logger.error(\"Error parsing state for key:\", key, err);\n remove = true;\n }\n }\n else {\n logger.debug(\"no item in storage for key:\", key);\n remove = true;\n }\n\n if (remove) {\n logger.debug(\"removed item for key:\", key);\n void storage.remove(key);\n }\n }\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, CryptoUtils } from \"./utils\";\nimport { State } from \"./State\";\n\n/**\n * @public\n */\nexport class SigninState extends State {\n // isCode\n /** The same code_verifier that was used to obtain the authorization_code via PKCE. */\n public readonly code_verifier: string | undefined;\n /** Used to secure authorization code grants via Proof Key for Code Exchange (PKCE). */\n public readonly code_challenge: string | undefined;\n\n // to ensure state still matches settings\n /** @see {@link OidcClientSettings.authority} */\n public readonly authority: string;\n /** @see {@link OidcClientSettings.client_id} */\n public readonly client_id: string;\n /** @see {@link OidcClientSettings.redirect_uri} */\n public readonly redirect_uri: string;\n /** @see {@link OidcClientSettings.scope} */\n public readonly scope: string;\n /** @see {@link OidcClientSettings.client_secret} */\n public readonly client_secret: string | undefined;\n /** @see {@link OidcClientSettings.extraTokenParams} */\n public readonly extraTokenParams: Record<string, unknown> | undefined;\n /** @see {@link OidcClientSettings.response_mode} */\n public readonly response_mode: \"query\" | \"fragment\" | undefined;\n\n public readonly skipUserInfo: boolean | undefined;\n\n public constructor(args: {\n id?: string;\n data?: unknown;\n created?: number;\n request_type?: string;\n url_state?: string;\n\n code_verifier?: string | boolean;\n authority: string;\n client_id: string;\n redirect_uri: string;\n scope: string;\n client_secret?: string;\n extraTokenParams?: Record<string, unknown>;\n response_mode?: \"query\" | \"fragment\";\n skipUserInfo?: boolean;\n }) {\n super(args);\n\n if (args.code_verifier === true) {\n this.code_verifier = CryptoUtils.generateCodeVerifier();\n }\n else if (args.code_verifier) {\n this.code_verifier = args.code_verifier;\n }\n\n if (this.code_verifier) {\n this.code_challenge = CryptoUtils.generateCodeChallenge(this.code_verifier);\n }\n\n this.authority = args.authority;\n this.client_id = args.client_id;\n this.redirect_uri = args.redirect_uri;\n this.scope = args.scope;\n this.client_secret = args.client_secret;\n this.extraTokenParams = args.extraTokenParams;\n\n this.response_mode = args.response_mode;\n this.skipUserInfo = args.skipUserInfo;\n }\n\n public toStorageString(): string {\n new Logger(\"SigninState\").create(\"toStorageString\");\n return JSON.stringify({\n id: this.id,\n data: this.data,\n created: this.created,\n request_type: this.request_type,\n url_state: this.url_state,\n\n code_verifier: this.code_verifier,\n authority: this.authority,\n client_id: this.client_id,\n redirect_uri: this.redirect_uri,\n scope: this.scope,\n client_secret: this.client_secret,\n extraTokenParams : this.extraTokenParams,\n response_mode: this.response_mode,\n skipUserInfo: this.skipUserInfo,\n });\n }\n\n public static fromStorageString(storageString: string): SigninState {\n Logger.createStatic(\"SigninState\", \"fromStorageString\");\n const data = JSON.parse(storageString);\n return new SigninState(data);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, URL_STATE_DELIMITER } from \"./utils\";\nimport { SigninState } from \"./SigninState\";\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\n */\nexport interface SigninRequestArgs {\n // mandatory\n url: string;\n authority: string;\n client_id: string;\n redirect_uri: string;\n response_type: string;\n scope: string;\n\n // optional\n response_mode?: \"query\" | \"fragment\";\n nonce?: string;\n display?: string;\n prompt?: string;\n max_age?: number;\n ui_locales?: string;\n id_token_hint?: string;\n login_hint?: string;\n acr_values?: string;\n\n // other\n resource?: string | string[];\n request?: string;\n request_uri?: string;\n request_type?: string;\n extraQueryParams?: Record<string, string | number | boolean>;\n\n // special\n extraTokenParams?: Record<string, unknown>;\n client_secret?: string;\n skipUserInfo?: boolean;\n disablePKCE?: boolean;\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n state_data?: unknown;\n url_state?: string;\n}\n\n/**\n * @public\n */\nexport class SigninRequest {\n private readonly _logger = new Logger(\"SigninRequest\");\n\n public readonly url: string;\n public readonly state: SigninState;\n\n public constructor({\n // mandatory\n url, authority, client_id, redirect_uri, response_type, scope,\n // optional\n state_data, response_mode, request_type, client_secret, nonce, url_state,\n resource,\n skipUserInfo,\n extraQueryParams,\n extraTokenParams,\n disablePKCE,\n ...optionalParams\n }: SigninRequestArgs) {\n if (!url) {\n this._logger.error(\"ctor: No url passed\");\n throw new Error(\"url\");\n }\n if (!client_id) {\n this._logger.error(\"ctor: No client_id passed\");\n throw new Error(\"client_id\");\n }\n if (!redirect_uri) {\n this._logger.error(\"ctor: No redirect_uri passed\");\n throw new Error(\"redirect_uri\");\n }\n if (!response_type) {\n this._logger.error(\"ctor: No response_type passed\");\n throw new Error(\"response_type\");\n }\n if (!scope) {\n this._logger.error(\"ctor: No scope passed\");\n throw new Error(\"scope\");\n }\n if (!authority) {\n this._logger.error(\"ctor: No authority passed\");\n throw new Error(\"authority\");\n }\n\n this.state = new SigninState({\n data: state_data,\n request_type,\n url_state,\n code_verifier: !disablePKCE,\n client_id, authority, redirect_uri,\n response_mode,\n client_secret, scope, extraTokenParams,\n skipUserInfo,\n });\n\n const parsedUrl = new URL(url);\n parsedUrl.searchParams.append(\"client_id\", client_id);\n parsedUrl.searchParams.append(\"redirect_uri\", redirect_uri);\n parsedUrl.searchParams.append(\"response_type\", response_type);\n parsedUrl.searchParams.append(\"scope\", scope);\n if (nonce) {\n parsedUrl.searchParams.append(\"nonce\", nonce);\n }\n\n let state = this.state.id;\n if (url_state) {\n state = `${state}${URL_STATE_DELIMITER}${url_state}`;\n }\n parsedUrl.searchParams.append(\"state\", state);\n if (this.state.code_challenge) {\n parsedUrl.searchParams.append(\"code_challenge\", this.state.code_challenge);\n parsedUrl.searchParams.append(\"code_challenge_method\", \"S256\");\n }\n\n if (resource) {\n // https://datatracker.ietf.org/doc/html/rfc8707\n const resources = Array.isArray(resource) ? resource : [resource];\n resources\n .forEach(r => parsedUrl.searchParams.append(\"resource\", r));\n }\n\n for (const [key, value] of Object.entries({ response_mode, ...optionalParams, ...extraQueryParams })) {\n if (value != null) {\n parsedUrl.searchParams.append(key, value.toString());\n }\n }\n\n this.url = parsedUrl.href;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Timer, URL_STATE_DELIMITER } from \"./utils\";\nimport type { UserProfile } from \"./User\";\n\nconst OidcScope = \"openid\";\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-core-1_0.html#AuthResponse\n * @see https://openid.net/specs/openid-connect-core-1_0.html#AuthError\n */\nexport class SigninResponse {\n // props present in the initial callback response regardless of success\n public readonly state: string | null;\n /** @see {@link User.session_state} */\n public session_state: string | null;\n\n // error props\n /** @see {@link ErrorResponse.error} */\n public readonly error: string | null;\n /** @see {@link ErrorResponse.error_description} */\n public readonly error_description: string | null;\n /** @see {@link ErrorResponse.error_uri} */\n public readonly error_uri: string | null;\n\n // success props\n public readonly code: string | null;\n\n // props set after validation\n /** @see {@link User.id_token} */\n public id_token?: string;\n /** @see {@link User.access_token} */\n public access_token = \"\";\n /** @see {@link User.token_type} */\n public token_type = \"\";\n /** @see {@link User.refresh_token} */\n public refresh_token?: string;\n /** @see {@link User.scope} */\n public scope?: string;\n /** @see {@link User.expires_at} */\n public expires_at?: number;\n\n /** custom state data set during the initial signin request */\n public userState: unknown;\n public url_state?: string;\n\n /** @see {@link User.profile} */\n public profile: UserProfile = {} as UserProfile;\n\n public constructor(params: URLSearchParams) {\n this.state = params.get(\"state\");\n this.session_state = params.get(\"session_state\");\n if (this.state) {\n const splitState = decodeURIComponent(this.state).split(URL_STATE_DELIMITER);\n this.state = splitState[0];\n if (splitState.length > 1) {\n this.url_state = splitState.slice(1).join(URL_STATE_DELIMITER);\n }\n }\n\n this.error = params.get(\"error\");\n this.error_description = params.get(\"error_description\");\n this.error_uri = params.get(\"error_uri\");\n\n this.code = params.get(\"code\");\n }\n\n public get expires_in(): number | undefined {\n if (this.expires_at === undefined) {\n return undefined;\n }\n return this.expires_at - Timer.getEpochTime();\n }\n public set expires_in(value: number | undefined) {\n // spec expects a number, but normalize here just in case\n if (typeof value === \"string\") value = Number(value);\n if (value !== undefined && value >= 0) {\n this.expires_at = Math.floor(value) + Timer.getEpochTime();\n }\n }\n\n public get isOpenId(): boolean {\n return this.scope?.split(\" \").includes(OidcScope) || !!this.id_token;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport { State } from \"./State\";\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-rpinitiated-1_0.html#RPLogout\n */\nexport interface SignoutRequestArgs {\n // mandatory\n url: string;\n\n // optional\n id_token_hint?: string;\n client_id?: string;\n post_logout_redirect_uri?: string;\n extraQueryParams?: Record<string, string | number | boolean>;\n\n // special\n request_type?: string;\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n state_data?: unknown;\n}\n\n/**\n * @public\n */\nexport class SignoutRequest {\n private readonly _logger = new Logger(\"SignoutRequest\");\n\n public readonly url: string;\n public readonly state?: State;\n\n public constructor({\n url,\n state_data, id_token_hint, post_logout_redirect_uri, extraQueryParams, request_type, client_id,\n }: SignoutRequestArgs) {\n if (!url) {\n this._logger.error(\"ctor: No url passed\");\n throw new Error(\"url\");\n }\n\n const parsedUrl = new URL(url);\n if (id_token_hint) {\n parsedUrl.searchParams.append(\"id_token_hint\", id_token_hint);\n }\n if (client_id) {\n parsedUrl.searchParams.append(\"client_id\", client_id);\n }\n\n if (post_logout_redirect_uri) {\n parsedUrl.searchParams.append(\"post_logout_redirect_uri\", post_logout_redirect_uri);\n\n if (state_data) {\n this.state = new State({ data: state_data, request_type });\n\n parsedUrl.searchParams.append(\"state\", this.state.id);\n }\n }\n\n for (const [key, value] of Object.entries({ ...extraQueryParams })) {\n if (value != null) {\n parsedUrl.searchParams.append(key, value.toString());\n }\n }\n\n this.url = parsedUrl.href;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\n/**\n * @public\n * @see https://openid.net/specs/openid-connect-core-1_0.html#AuthError\n */\nexport class SignoutResponse {\n public readonly state: string | null;\n\n // error props\n /** @see {@link ErrorResponse.error} */\n public error: string | null;\n /** @see {@link ErrorResponse.error_description} */\n public error_description: string | null;\n /** @see {@link ErrorResponse.error_uri} */\n public error_uri: string | null;\n\n /** custom state data set during the initial signin request */\n public userState: unknown;\n\n public constructor(params: URLSearchParams) {\n this.state = params.get(\"state\");\n\n this.error = params.get(\"error\");\n this.error_description = params.get(\"error_description\");\n this.error_uri = params.get(\"error_uri\");\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport type { JwtClaims } from \"./Claims\";\nimport type { OidcClientSettingsStore } from \"./OidcClientSettings\";\nimport type { UserProfile } from \"./User\";\nimport { Logger } from \"./utils\";\n\n/**\n * Protocol claims that could be removed by default from profile.\n * Derived from the following sets of claims:\n * - {@link https://datatracker.ietf.org/doc/html/rfc7519.html#section-4.1}\n * - {@link https://openid.net/specs/openid-connect-core-1_0.html#IDToken}\n * - {@link https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken}\n *\n * @internal\n */\nconst DefaultProtocolClaims = [\n \"nbf\",\n \"jti\",\n \"auth_time\",\n \"nonce\",\n \"acr\",\n \"amr\",\n \"azp\",\n \"at_hash\", // https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken\n] as const;\n\n/**\n * Protocol claims that should never be removed from profile.\n * \"sub\" is needed internally and others should remain required as per the OIDC specs.\n *\n * @internal\n */\nconst InternalRequiredProtocolClaims = [\"sub\", \"iss\", \"aud\", \"exp\", \"iat\"];\n\n/**\n * @internal\n */\nexport class ClaimsService {\n protected readonly _logger = new Logger(\"ClaimsService\");\n public constructor(\n protected readonly _settings: OidcClientSettingsStore,\n ) {}\n\n public filterProtocolClaims(claims: UserProfile): UserProfile {\n const result = { ...claims };\n\n if (this._settings.filterProtocolClaims) {\n let protocolClaims;\n if (Array.isArray(this._settings.filterProtocolClaims)) {\n protocolClaims = this._settings.filterProtocolClaims;\n } else {\n protocolClaims = DefaultProtocolClaims;\n }\n\n for (const claim of protocolClaims) {\n if (!InternalRequiredProtocolClaims.includes(claim)) {\n delete result[claim];\n }\n }\n }\n\n return result;\n }\n\n public mergeClaims(claims1: UserProfile, claims2: JwtClaims): UserProfile {\n const result = { ...claims1 };\n\n for (const [claim, values] of Object.entries(claims2)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n const previousValue = result[claim];\n if (previousValue === undefined) {\n result[claim] = value;\n }\n else if (Array.isArray(previousValue)) {\n if (!previousValue.includes(value)) {\n previousValue.push(value);\n }\n }\n else if (result[claim] !== value) {\n if (typeof value === \"object\" && this._settings.mergeClaims) {\n result[claim] = this.mergeClaims(previousValue as UserProfile, value);\n }\n else {\n result[claim] = [previousValue, value];\n }\n }\n }\n }\n\n return result;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, UrlUtils } from \"./utils\";\nimport { ErrorResponse } from \"./errors\";\nimport { type OidcClientSettings, OidcClientSettingsStore } from \"./OidcClientSettings\";\nimport { ResponseValidator } from \"./ResponseValidator\";\nimport { MetadataService } from \"./MetadataService\";\nimport type { RefreshState } from \"./RefreshState\";\nimport { SigninRequest, type SigninRequestArgs } from \"./SigninRequest\";\nimport { SigninResponse } from \"./SigninResponse\";\nimport { SignoutRequest, type SignoutRequestArgs } from \"./SignoutRequest\";\nimport { SignoutResponse } from \"./SignoutResponse\";\nimport { SigninState } from \"./SigninState\";\nimport { State } from \"./State\";\nimport { TokenClient } from \"./TokenClient\";\nimport { ClaimsService } from \"./ClaimsService\";\n\n/**\n * @public\n */\nexport interface CreateSigninRequestArgs\n extends Omit<SigninRequestArgs, \"url\" | \"authority\" | \"client_id\" | \"redirect_uri\" | \"response_type\" | \"scope\" | \"state_data\"> {\n redirect_uri?: string;\n response_type?: string;\n scope?: string;\n\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n state?: unknown;\n}\n\n/**\n * @public\n */\nexport interface UseRefreshTokenArgs {\n state: RefreshState;\n timeoutInSeconds?: number;\n}\n\n/**\n * @public\n */\nexport type CreateSignoutRequestArgs = Omit<SignoutRequestArgs, \"url\" | \"state_data\"> & {\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n state?: unknown;\n};\n\n/**\n * @public\n */\nexport type ProcessResourceOwnerPasswordCredentialsArgs = {\n username: string;\n password: string;\n skipUserInfo?: boolean;\n extraTokenParams?: Record<string, unknown>;\n};\n\n/**\n * Provides the raw OIDC/OAuth2 protocol support for the authorization endpoint and the end session endpoint in the\n * authorization server. It provides a bare-bones protocol implementation and is used by the UserManager class.\n * Only use this class if you simply want protocol support without the additional management features of the\n * UserManager class.\n *\n * @public\n */\nexport class OidcClient {\n public readonly settings: OidcClientSettingsStore;\n protected readonly _logger = new Logger(\"OidcClient\");\n\n public readonly metadataService: MetadataService;\n protected readonly _claimsService: ClaimsService;\n protected readonly _validator: ResponseValidator;\n protected readonly _tokenClient: TokenClient;\n\n public constructor(settings: OidcClientSettings);\n public constructor(settings: OidcClientSettingsStore, metadataService: MetadataService); \n public constructor(settings: OidcClientSettings | OidcClientSettingsStore, metadataService?: MetadataService) {\n this.settings = settings instanceof OidcClientSettingsStore ? settings : new OidcClientSettingsStore(settings);\n\n this.metadataService = metadataService ?? new MetadataService(this.settings);\n this._claimsService = new ClaimsService(this.settings);\n this._validator = new ResponseValidator(this.settings, this.metadataService, this._claimsService);\n this._tokenClient = new TokenClient(this.settings, this.metadataService);\n }\n\n public async createSigninRequest({\n state,\n request,\n request_uri,\n request_type,\n id_token_hint,\n login_hint,\n skipUserInfo,\n nonce,\n url_state,\n response_type = this.settings.response_type,\n scope = this.settings.scope,\n redirect_uri = this.settings.redirect_uri,\n prompt = this.settings.prompt,\n display = this.settings.display,\n max_age = this.settings.max_age,\n ui_locales = this.settings.ui_locales,\n acr_values = this.settings.acr_values,\n resource = this.settings.resource,\n response_mode = this.settings.response_mode,\n extraQueryParams = this.settings.extraQueryParams,\n extraTokenParams = this.settings.extraTokenParams,\n }: CreateSigninRequestArgs): Promise<SigninRequest> {\n const logger = this._logger.create(\"createSigninRequest\");\n\n if (response_type !== \"code\") {\n throw new Error(\"Only the Authorization Code flow (with PKCE) is supported\");\n }\n\n const url = await this.metadataService.getAuthorizationEndpoint();\n logger.debug(\"Received authorization endpoint\", url);\n\n const signinRequest = new SigninRequest({\n url,\n authority: this.settings.authority,\n client_id: this.settings.client_id,\n redirect_uri,\n response_type,\n scope,\n state_data: state,\n url_state,\n prompt, display, max_age, ui_locales, id_token_hint, login_hint, acr_values,\n resource, request, request_uri, extraQueryParams, extraTokenParams, request_type, response_mode,\n client_secret: this.settings.client_secret,\n skipUserInfo,\n nonce,\n disablePKCE: this.settings.disablePKCE,\n });\n\n // house cleaning\n await this.clearStaleState();\n\n const signinState = signinRequest.state;\n await this.settings.stateStore.set(signinState.id, signinState.toStorageString());\n return signinRequest;\n }\n\n public async readSigninResponseState(url: string, removeState = false): Promise<{ state: SigninState; response: SigninResponse }> {\n const logger = this._logger.create(\"readSigninResponseState\");\n\n const response = new SigninResponse(UrlUtils.readParams(url, this.settings.response_mode));\n if (!response.state) {\n logger.throw(new Error(\"No state in response\"));\n // need to throw within this function's body for type narrowing to work\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n const storedStateString = await this.settings.stateStore[removeState ? \"remove\" : \"get\"](response.state);\n if (!storedStateString) {\n logger.throw(new Error(\"No matching state found in storage\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n const state = SigninState.fromStorageString(storedStateString);\n return { state, response };\n }\n\n public async processSigninResponse(url: string): Promise<SigninResponse> {\n const logger = this._logger.create(\"processSigninResponse\");\n\n const { state, response } = await this.readSigninResponseState(url, true);\n logger.debug(\"received state from storage; validating response\");\n await this._validator.validateSigninResponse(response, state);\n return response;\n }\n\n public async processResourceOwnerPasswordCredentials({\n username,\n password,\n skipUserInfo = false,\n extraTokenParams = {},\n }: ProcessResourceOwnerPasswordCredentialsArgs): Promise<SigninResponse> {\n const tokenResponse: Record<string, unknown> = await this._tokenClient.exchangeCredentials({ username, password, ...extraTokenParams });\n const signinResponse: SigninResponse = new SigninResponse(new URLSearchParams());\n Object.assign(signinResponse, tokenResponse);\n await this._validator.validateCredentialsResponse(signinResponse, skipUserInfo);\n return signinResponse;\n }\n\n public async useRefreshToken({\n state,\n timeoutInSeconds,\n }: UseRefreshTokenArgs): Promise<SigninResponse> {\n const logger = this._logger.create(\"useRefreshToken\");\n\n // https://github.com/authts/oidc-client-ts/issues/695\n // In some cases (e.g. AzureAD), not all granted scopes are allowed on token refresh requests.\n // Therefore, we filter all granted scopes by a list of allowable scopes.\n let scope;\n if (this.settings.refreshTokenAllowedScope === undefined) {\n scope = state.scope;\n } else {\n const allowableScopes = this.settings.refreshTokenAllowedScope.split(\" \");\n const providedScopes = state.scope?.split(\" \") || [];\n\n scope = providedScopes.filter(s => allowableScopes.includes(s)).join(\" \");\n }\n\n const result = await this._tokenClient.exchangeRefreshToken({\n refresh_token: state.refresh_token,\n resource: state.resource,\n // provide the (possible filtered) scope list\n scope,\n timeoutInSeconds,\n });\n const response = new SigninResponse(new URLSearchParams());\n Object.assign(response, result);\n logger.debug(\"validating response\", response);\n await this._validator.validateRefreshResponse(response, {\n ...state,\n // overide the scope in the state handed over to the validator\n // so it can set the granted scope to the requested scope in case none is included in the response\n scope,\n });\n return response;\n }\n\n public async createSignoutRequest({\n state,\n id_token_hint,\n client_id,\n request_type,\n post_logout_redirect_uri = this.settings.post_logout_redirect_uri,\n extraQueryParams = this.settings.extraQueryParams,\n }: CreateSignoutRequestArgs = {}): Promise<SignoutRequest> {\n const logger = this._logger.create(\"createSignoutRequest\");\n\n const url = await this.metadataService.getEndSessionEndpoint();\n if (!url) {\n logger.throw(new Error(\"No end session endpoint\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n logger.debug(\"Received end session endpoint\", url);\n\n // specify the client identifier when post_logout_redirect_uri is used but id_token_hint is not\n if (!client_id && post_logout_redirect_uri && !id_token_hint) {\n client_id = this.settings.client_id;\n }\n\n const request = new SignoutRequest({\n url,\n id_token_hint,\n client_id,\n post_logout_redirect_uri,\n state_data: state,\n extraQueryParams,\n request_type,\n });\n\n // house cleaning\n await this.clearStaleState();\n\n const signoutState = request.state;\n if (signoutState) {\n logger.debug(\"Signout request has state to persist\");\n await this.settings.stateStore.set(signoutState.id, signoutState.toStorageString());\n }\n\n return request;\n }\n\n public async readSignoutResponseState(url: string, removeState = false): Promise<{ state: State | undefined; response: SignoutResponse }> {\n const logger = this._logger.create(\"readSignoutResponseState\");\n\n const response = new SignoutResponse(UrlUtils.readParams(url, this.settings.response_mode));\n if (!response.state) {\n logger.debug(\"No state in response\");\n\n if (response.error) {\n logger.warn(\"Response was error:\", response.error);\n throw new ErrorResponse(response);\n }\n\n return { state: undefined, response };\n }\n\n const storedStateString = await this.settings.stateStore[removeState ? \"remove\" : \"get\"](response.state);\n if (!storedStateString) {\n logger.throw(new Error(\"No matching state found in storage\"));\n throw null; // https://github.com/microsoft/TypeScript/issues/46972\n }\n\n const state = State.fromStorageString(storedStateString);\n return { state, response };\n }\n\n public async processSignoutResponse(url: string): Promise<SignoutResponse> {\n const logger = this._logger.create(\"processSignoutResponse\");\n\n const { state, response } = await this.readSignoutResponseState(url, true);\n if (state) {\n logger.debug(\"Received state from storage; validating response\");\n this._validator.validateSignoutResponse(response, state);\n } else {\n logger.debug(\"No state from storage; skipping response validation\");\n }\n\n return response;\n }\n\n public clearStaleState(): Promise<void> {\n this._logger.create(\"clearStaleState\");\n return State.clearStaleState(this.settings.stateStore, this.settings.staleStateAgeInSeconds);\n }\n\n public async revokeToken(token: string, type?: \"access_token\" | \"refresh_token\"): Promise<void> {\n this._logger.create(\"revokeToken\");\n return await this._tokenClient.revoke({\n token,\n token_type_hint: type,\n });\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport { CheckSessionIFrame } from \"./CheckSessionIFrame\";\nimport type { UserManager } from \"./UserManager\";\nimport type { User } from \"./User\";\n\n/**\n * @public\n */\nexport class SessionMonitor {\n private readonly _logger = new Logger(\"SessionMonitor\");\n\n private _sub: string | undefined;\n private _sid: string | undefined;\n private _checkSessionIFrame?: CheckSessionIFrame;\n\n public constructor(private readonly _userManager: UserManager) {\n if (!_userManager) {\n this._logger.throw(new Error(\"No user manager passed\"));\n }\n\n this._userManager.events.addUserLoaded(this._start);\n this._userManager.events.addUserUnloaded(this._stop);\n\n this._init().catch((err: unknown) => {\n // catch to suppress errors since we're in a ctor\n this._logger.error(err);\n });\n }\n\n protected async _init(): Promise<void> {\n this._logger.create(\"_init\");\n const user = await this._userManager.getUser();\n // doing this manually here since calling getUser\n // doesn't trigger load event.\n if (user) {\n void this._start(user);\n }\n else if (this._userManager.settings.monitorAnonymousSession) {\n const session = await this._userManager.querySessionStatus();\n if (session) {\n const tmpUser = {\n session_state: session.session_state,\n profile: session.sub && session.sid ? {\n sub: session.sub,\n sid: session.sid,\n } : null,\n };\n void this._start(tmpUser);\n }\n }\n }\n\n protected _start = async (\n user: User | {\n session_state: string;\n profile: { sub: string; sid: string } | null;\n },\n ): Promise<void> => {\n const session_state = user.session_state;\n if (!session_state) {\n return;\n }\n const logger = this._logger.create(\"_start\");\n\n if (user.profile) {\n this._sub = user.profile.sub;\n this._sid = user.profile.sid;\n logger.debug(\"session_state\", session_state, \", sub\", this._sub);\n }\n else {\n this._sub = undefined;\n this._sid = undefined;\n logger.debug(\"session_state\", session_state, \", anonymous user\");\n }\n\n if (this._checkSessionIFrame) {\n this._checkSessionIFrame.start(session_state);\n return;\n }\n\n try {\n const url = await this._userManager.metadataService.getCheckSessionIframe();\n if (url) {\n logger.debug(\"initializing check session iframe\");\n\n const client_id = this._userManager.settings.client_id;\n const intervalInSeconds = this._userManager.settings.checkSessionIntervalInSeconds;\n const stopOnError = this._userManager.settings.stopCheckSessionOnError;\n\n const checkSessionIFrame = new CheckSessionIFrame(this._callback, client_id, url, intervalInSeconds, stopOnError);\n await checkSessionIFrame.load();\n this._checkSessionIFrame = checkSessionIFrame;\n checkSessionIFrame.start(session_state);\n }\n else {\n logger.warn(\"no check session iframe found in the metadata\");\n }\n }\n catch (err) {\n // catch to suppress errors since we're in non-promise callback\n logger.error(\"Error from getCheckSessionIframe:\", err instanceof Error ? err.message : err);\n }\n };\n\n protected _stop = (): void => {\n const logger = this._logger.create(\"_stop\");\n this._sub = undefined;\n this._sid = undefined;\n\n if (this._checkSessionIFrame) {\n this._checkSessionIFrame.stop();\n }\n\n if (this._userManager.settings.monitorAnonymousSession) {\n // using a timer to delay re-initialization to avoid race conditions during signout\n // TODO rewrite to use promise correctly\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const timerHandle = setInterval(async () => {\n clearInterval(timerHandle);\n\n try {\n const session = await this._userManager.querySessionStatus();\n if (session) {\n const tmpUser = {\n session_state: session.session_state,\n profile: session.sub && session.sid ? {\n sub: session.sub,\n sid: session.sid,\n } : null,\n };\n void this._start(tmpUser);\n }\n }\n catch (err) {\n // catch to suppress errors since we're in a callback\n logger.error(\"error from querySessionStatus\", err instanceof Error ? err.message : err);\n }\n }, 1000);\n }\n };\n\n protected _callback = async (): Promise<void> => {\n const logger = this._logger.create(\"_callback\");\n try {\n const session = await this._userManager.querySessionStatus();\n let raiseEvent = true;\n\n if (session && this._checkSessionIFrame) {\n if (session.sub === this._sub) {\n raiseEvent = false;\n this._checkSessionIFrame.start(session.session_state);\n\n if (session.sid === this._sid) {\n logger.debug(\"same sub still logged in at OP, restarting check session iframe; session_state\", session.session_state);\n }\n else {\n logger.debug(\"same sub still logged in at OP, session state has changed, restarting check session iframe; session_state\", session.session_state);\n this._userManager.events._raiseUserSessionChanged();\n }\n }\n else {\n logger.debug(\"different subject signed into OP\", session.sub);\n }\n }\n else {\n logger.debug(\"subject no longer signed into OP\");\n }\n\n if (raiseEvent) {\n if (this._sub) {\n this._userManager.events._raiseUserSignedOut();\n }\n else {\n this._userManager.events._raiseUserSignedIn();\n }\n } else {\n logger.debug(\"no change in session detected, no event to raise\");\n }\n }\n catch (err) {\n if (this._sub) {\n logger.debug(\"Error calling queryCurrentSigninSession; raising signed out event\", err);\n this._userManager.events._raiseUserSignedOut();\n }\n }\n };\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, Timer } from \"./utils\";\nimport type { IdTokenClaims } from \"./Claims\";\n\n/**\n * Holds claims represented by a combination of the `id_token` and the user info endpoint.\n * @public\n */\nexport type UserProfile = IdTokenClaims;\n\n/**\n * @public\n */\nexport class User {\n /**\n * A JSON Web Token (JWT). Only provided if `openid` scope was requested.\n * The application can access the data decoded by using the `profile` property.\n */\n public id_token?: string;\n\n /** The session state value returned from the OIDC provider. */\n public session_state: string | null;\n\n /**\n * The requested access token returned from the OIDC provider. The application can use this token to\n * authenticate itself to the secured resource.\n */\n public access_token: string;\n\n /**\n * An OAuth 2.0 refresh token. The app can use this token to acquire additional access tokens after the\n * current access token expires. Refresh tokens are long-lived and can be used to maintain access to resources\n * for extended periods of time.\n */\n public refresh_token?: string;\n\n /** Typically \"Bearer\" */\n public token_type: string;\n\n /** The scopes that the requested access token is valid for. */\n public scope?: string;\n\n /** The claims represented by a combination of the `id_token` and the user info endpoint. */\n public profile: UserProfile;\n\n /** The expires at returned from the OIDC provider. */\n public expires_at?: number;\n\n /** custom state data set during the initial signin request */\n public readonly state: unknown;\n public readonly url_state?: string;\n\n public constructor(args: {\n id_token?: string;\n session_state?: string | null;\n access_token: string;\n refresh_token?: string;\n token_type: string;\n scope?: string;\n profile: UserProfile;\n expires_at?: number;\n userState?: unknown;\n url_state?: string;\n }) {\n this.id_token = args.id_token;\n this.session_state = args.session_state ?? null;\n this.access_token = args.access_token;\n this.refresh_token = args.refresh_token;\n\n this.token_type = args.token_type;\n this.scope = args.scope;\n this.profile = args.profile;\n this.expires_at = args.expires_at;\n this.state = args.userState;\n this.url_state = args.url_state;\n }\n\n /** Computed number of seconds the access token has remaining. */\n public get expires_in(): number | undefined {\n if (this.expires_at === undefined) {\n return undefined;\n }\n return this.expires_at - Timer.getEpochTime();\n }\n\n public set expires_in(value: number | undefined) {\n if (value !== undefined) {\n this.expires_at = Math.floor(value) + Timer.getEpochTime();\n }\n }\n\n /** Computed value indicating if the access token is expired. */\n public get expired(): boolean | undefined {\n const expires_in = this.expires_in;\n if (expires_in === undefined) {\n return undefined;\n }\n return expires_in <= 0;\n }\n\n /** Array representing the parsed values from the `scope`. */\n public get scopes(): string[] {\n return this.scope?.split(\" \") ?? [];\n }\n\n public toStorageString(): string {\n new Logger(\"User\").create(\"toStorageString\");\n return JSON.stringify({\n id_token: this.id_token,\n session_state: this.session_state,\n access_token: this.access_token,\n refresh_token: this.refresh_token,\n token_type: this.token_type,\n scope: this.scope,\n profile: this.profile,\n expires_at: this.expires_at,\n });\n }\n\n public static fromStorageString(storageString: string): User {\n Logger.createStatic(\"User\", \"fromStorageString\");\n return new User(JSON.parse(storageString));\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Event, Logger, UrlUtils } from \"../utils\";\nimport type { IWindow, NavigateParams, NavigateResponse } from \"./IWindow\";\n\nconst messageSource = \"oidc-client\";\n\ninterface MessageData {\n source: string;\n url: string;\n keepOpen: boolean;\n}\n\n/**\n * Window implementation which resolves via communication from a child window\n * via the `Window.postMessage()` interface.\n *\n * @internal\n */\nexport abstract class AbstractChildWindow implements IWindow {\n protected abstract readonly _logger: Logger;\n protected readonly _abort = new Event<[reason: Error]>(\"Window navigation aborted\");\n protected readonly _disposeHandlers = new Set<() => void>();\n\n protected _window: WindowProxy | null = null;\n\n public async navigate(params: NavigateParams): Promise<NavigateResponse> {\n const logger = this._logger.create(\"navigate\");\n if (!this._window) {\n throw new Error(\"Attempted to navigate on a disposed window\");\n }\n\n logger.debug(\"setting URL in window\");\n this._window.location.replace(params.url);\n\n const { url, keepOpen } = await new Promise<MessageData>((resolve, reject) => {\n const listener = (e: MessageEvent) => {\n const data: MessageData | undefined = e.data;\n const origin = params.scriptOrigin ?? window.location.origin;\n if (e.origin !== origin || data?.source !== messageSource) {\n // silently discard events not intended for us\n return;\n }\n try {\n const state = UrlUtils.readParams(data.url, params.response_mode).get(\"state\");\n if (!state) {\n logger.warn(\"no state found in response url\");\n }\n if (e.source !== this._window && state !== params.state) {\n // MessageEvent source is a relatively modern feature, we can't rely on it\n // so we also inspect the payload for a matching state key as an alternative\n return;\n }\n }\n catch (err) {\n this._dispose();\n reject(new Error(\"Invalid response from window\"));\n }\n resolve(data);\n };\n window.addEventListener(\"message\", listener, false);\n this._disposeHandlers.add(() => window.removeEventListener(\"message\", listener, false));\n this._disposeHandlers.add(this._abort.addHandler((reason) => {\n this._dispose();\n reject(reason);\n }));\n });\n logger.debug(\"got response from window\");\n this._dispose();\n\n if (!keepOpen) {\n this.close();\n }\n\n return { url };\n }\n\n public abstract close(): void;\n\n private _dispose(): void {\n this._logger.create(\"_dispose\");\n\n for (const dispose of this._disposeHandlers) {\n dispose();\n }\n this._disposeHandlers.clear();\n }\n\n protected static _notifyParent(parent: Window, url: string, keepOpen = false, targetOrigin = window.location.origin): void {\n parent.postMessage({\n source: messageSource,\n url,\n keepOpen,\n } as MessageData, targetOrigin);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { type OidcClientSettings, OidcClientSettingsStore } from \"./OidcClientSettings\";\nimport type { PopupWindowFeatures } from \"./utils/PopupUtils\";\nimport { WebStorageStateStore } from \"./WebStorageStateStore\";\nimport { InMemoryWebStorage } from \"./InMemoryWebStorage\";\n\nexport const DefaultPopupWindowFeatures: PopupWindowFeatures = {\n location: false,\n toolbar: false,\n height: 640,\n closePopupWindowAfterInSeconds: -1,\n};\nexport const DefaultPopupTarget = \"_blank\";\nconst DefaultAccessTokenExpiringNotificationTimeInSeconds = 60;\nconst DefaultCheckSessionIntervalInSeconds = 2;\nexport const DefaultSilentRequestTimeoutInSeconds = 10;\n\n/**\n * The settings used to configure the {@link UserManager}.\n *\n * @public\n */\nexport interface UserManagerSettings extends OidcClientSettings {\n /** The URL for the page containing the call to signinPopupCallback to handle the callback from the OIDC/OAuth2 */\n popup_redirect_uri?: string;\n popup_post_logout_redirect_uri?: string;\n /**\n * The features parameter to window.open for the popup signin window. By default, the popup is\n * placed centered in front of the window opener.\n * (default: \\{ location: false, menubar: false, height: 640, closePopupWindowAfterInSeconds: -1 \\})\n */\n popupWindowFeatures?: PopupWindowFeatures;\n /** The target parameter to window.open for the popup signin window (default: \"_blank\") */\n popupWindowTarget?: string;\n /** The methods window.location method used to redirect (default: \"assign\") */\n redirectMethod?: \"replace\" | \"assign\";\n /** The methods target window being redirected (default: \"self\") */\n redirectTarget?: \"top\" | \"self\";\n\n /** The target to pass while calling postMessage inside iframe for callback (default: window.location.origin) */\n iframeNotifyParentOrigin?: string;\n\n /** The script origin to check during 'message' callback execution while performing silent auth via iframe (default: window.location.origin) */\n iframeScriptOrigin?: string;\n\n /** The URL for the page containing the code handling the silent renew */\n silent_redirect_uri?: string;\n /** Number of seconds to wait for the silent renew to return before assuming it has failed or timed out (default: 10) */\n silentRequestTimeoutInSeconds?: number;\n /** Flag to indicate if there should be an automatic attempt to renew the access token prior to its expiration. The automatic renew attempt starts 1 minute before the access token expires (default: true) */\n automaticSilentRenew?: boolean;\n /** Flag to validate user.profile.sub in silent renew calls (default: true) */\n validateSubOnSilentRenew?: boolean;\n /** Flag to control if id_token is included as id_token_hint in silent renew calls (default: false) */\n includeIdTokenInSilentRenew?: boolean;\n\n /** Will raise events for when user has performed a signout at the OP (default: false) */\n monitorSession?: boolean;\n monitorAnonymousSession?: boolean;\n /** Interval in seconds to check the user's session (default: 2) */\n checkSessionIntervalInSeconds?: number;\n query_status_response_type?: string;\n stopCheckSessionOnError?: boolean;\n\n /**\n * The `token_type_hint`s to pass to the authority server by default (default: [\"access_token\", \"refresh_token\"])\n *\n * Token types will be revoked in the same order as they are given here.\n */\n revokeTokenTypes?: (\"access_token\" | \"refresh_token\")[];\n /** Will invoke the revocation endpoint on signout if there is an access token for the user (default: false) */\n revokeTokensOnSignout?: boolean;\n /** Flag to control if id_token is included as id_token_hint in silent signout calls (default: false) */\n includeIdTokenInSilentSignout?: boolean;\n\n /** The number of seconds before an access token is to expire to raise the accessTokenExpiring event (default: 60) */\n accessTokenExpiringNotificationTimeInSeconds?: number;\n\n /**\n * Storage object used to persist User for currently authenticated user (default: window.sessionStorage, InMemoryWebStorage iff no window).\n * E.g. `userStore: new WebStorageStateStore({ store: window.localStorage })`\n */\n userStore?: WebStorageStateStore;\n}\n\n/**\n * The settings with defaults applied of the {@link UserManager}.\n * @see {@link UserManagerSettings}\n *\n * @public\n */\nexport class UserManagerSettingsStore extends OidcClientSettingsStore {\n public readonly popup_redirect_uri: string;\n public readonly popup_post_logout_redirect_uri: string | undefined;\n public readonly popupWindowFeatures: PopupWindowFeatures;\n public readonly popupWindowTarget: string;\n public readonly redirectMethod: \"replace\" | \"assign\";\n public readonly redirectTarget: \"top\" | \"self\";\n\n public readonly iframeNotifyParentOrigin: string | undefined;\n public readonly iframeScriptOrigin: string | undefined;\n\n public readonly silent_redirect_uri: string;\n public readonly silentRequestTimeoutInSeconds: number;\n public readonly automaticSilentRenew: boolean;\n public readonly validateSubOnSilentRenew: boolean;\n public readonly includeIdTokenInSilentRenew: boolean;\n\n public readonly monitorSession: boolean;\n public readonly monitorAnonymousSession: boolean;\n public readonly checkSessionIntervalInSeconds: number;\n public readonly query_status_response_type: string;\n public readonly stopCheckSessionOnError: boolean;\n\n public readonly revokeTokenTypes: (\"access_token\" | \"refresh_token\")[];\n public readonly revokeTokensOnSignout: boolean;\n public readonly includeIdTokenInSilentSignout: boolean;\n\n public readonly accessTokenExpiringNotificationTimeInSeconds: number;\n\n public readonly userStore: WebStorageStateStore;\n\n public constructor(args: UserManagerSettings) {\n const {\n popup_redirect_uri = args.redirect_uri,\n popup_post_logout_redirect_uri = args.post_logout_redirect_uri,\n popupWindowFeatures = DefaultPopupWindowFeatures,\n popupWindowTarget = DefaultPopupTarget,\n redirectMethod = \"assign\",\n redirectTarget = \"self\",\n\n iframeNotifyParentOrigin = args.iframeNotifyParentOrigin,\n iframeScriptOrigin = args.iframeScriptOrigin,\n\n silent_redirect_uri = args.redirect_uri,\n silentRequestTimeoutInSeconds = DefaultSilentRequestTimeoutInSeconds,\n automaticSilentRenew = true,\n validateSubOnSilentRenew = true,\n includeIdTokenInSilentRenew = false,\n\n monitorSession = false,\n monitorAnonymousSession = false,\n checkSessionIntervalInSeconds = DefaultCheckSessionIntervalInSeconds,\n query_status_response_type = \"code\",\n stopCheckSessionOnError = true,\n\n revokeTokenTypes = [\"access_token\", \"refresh_token\"],\n revokeTokensOnSignout = false,\n includeIdTokenInSilentSignout = false,\n\n accessTokenExpiringNotificationTimeInSeconds = DefaultAccessTokenExpiringNotificationTimeInSeconds,\n\n userStore,\n } = args;\n\n super(args);\n\n this.popup_redirect_uri = popup_redirect_uri;\n this.popup_post_logout_redirect_uri = popup_post_logout_redirect_uri;\n this.popupWindowFeatures = popupWindowFeatures;\n this.popupWindowTarget = popupWindowTarget;\n this.redirectMethod = redirectMethod;\n this.redirectTarget = redirectTarget;\n\n this.iframeNotifyParentOrigin = iframeNotifyParentOrigin;\n this.iframeScriptOrigin = iframeScriptOrigin;\n\n this.silent_redirect_uri = silent_redirect_uri;\n this.silentRequestTimeoutInSeconds = silentRequestTimeoutInSeconds;\n this.automaticSilentRenew = automaticSilentRenew;\n this.validateSubOnSilentRenew = validateSubOnSilentRenew;\n this.includeIdTokenInSilentRenew = includeIdTokenInSilentRenew;\n\n this.monitorSession = monitorSession;\n this.monitorAnonymousSession = monitorAnonymousSession;\n this.checkSessionIntervalInSeconds = checkSessionIntervalInSeconds;\n this.stopCheckSessionOnError = stopCheckSessionOnError;\n this.query_status_response_type = query_status_response_type;\n\n this.revokeTokenTypes = revokeTokenTypes;\n this.revokeTokensOnSignout = revokeTokensOnSignout;\n this.includeIdTokenInSilentSignout = includeIdTokenInSilentSignout;\n\n this.accessTokenExpiringNotificationTimeInSeconds = accessTokenExpiringNotificationTimeInSeconds;\n\n if (userStore) {\n this.userStore = userStore;\n }\n else {\n const store = typeof window !== \"undefined\" ? window.sessionStorage : new InMemoryWebStorage();\n this.userStore = new WebStorageStateStore({ store });\n }\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\nimport { ErrorTimeout } from \"../errors\";\nimport type { NavigateParams, NavigateResponse } from \"./IWindow\";\nimport { AbstractChildWindow } from \"./AbstractChildWindow\";\nimport { DefaultSilentRequestTimeoutInSeconds } from \"../UserManagerSettings\";\n\n/**\n * @public\n */\nexport interface IFrameWindowParams {\n silentRequestTimeoutInSeconds?: number;\n}\n\n/**\n * @internal\n */\nexport class IFrameWindow extends AbstractChildWindow {\n protected readonly _logger = new Logger(\"IFrameWindow\");\n private _frame: HTMLIFrameElement | null;\n private _timeoutInSeconds: number;\n\n public constructor({\n silentRequestTimeoutInSeconds = DefaultSilentRequestTimeoutInSeconds,\n }: IFrameWindowParams) {\n super();\n this._timeoutInSeconds = silentRequestTimeoutInSeconds;\n\n this._frame = IFrameWindow.createHiddenIframe();\n this._window = this._frame.contentWindow;\n }\n\n private static createHiddenIframe(): HTMLIFrameElement {\n const iframe = window.document.createElement(\"iframe\");\n\n // shotgun approach\n iframe.style.visibility = \"hidden\";\n iframe.style.position = \"fixed\";\n iframe.style.left = \"-1000px\";\n iframe.style.top = \"0\";\n iframe.width = \"0\";\n iframe.height = \"0\";\n\n window.document.body.appendChild(iframe);\n return iframe;\n }\n\n public async navigate(params: NavigateParams): Promise<NavigateResponse> {\n this._logger.debug(\"navigate: Using timeout of:\", this._timeoutInSeconds);\n const timer = setTimeout(() => this._abort.raise(new ErrorTimeout(\"IFrame timed out without a response\")), this._timeoutInSeconds * 1000);\n this._disposeHandlers.add(() => clearTimeout(timer));\n\n return await super.navigate(params);\n }\n\n public close(): void {\n if (this._frame) {\n if (this._frame.parentNode) {\n this._frame.addEventListener(\"load\", (ev) => {\n const frame = ev.target as HTMLIFrameElement;\n frame.parentNode?.removeChild(frame);\n this._abort.raise(new Error(\"IFrame removed from DOM\"));\n }, true);\n this._frame.contentWindow?.location.replace(\"about:blank\");\n }\n this._frame = null;\n }\n this._window = null;\n }\n\n public static notifyParent(url: string, targetOrigin?: string): void {\n return super._notifyParent(window.parent, url, false, targetOrigin);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\nimport type { UserManagerSettingsStore } from \"../UserManagerSettings\";\nimport { IFrameWindow, type IFrameWindowParams } from \"./IFrameWindow\";\nimport type { INavigator } from \"./INavigator\";\n\n/**\n * @internal\n */\nexport class IFrameNavigator implements INavigator {\n private readonly _logger = new Logger(\"IFrameNavigator\");\n\n constructor(private _settings: UserManagerSettingsStore) {}\n\n public async prepare({\n silentRequestTimeoutInSeconds = this._settings.silentRequestTimeoutInSeconds,\n }: IFrameWindowParams): Promise<IFrameWindow> {\n return new IFrameWindow({ silentRequestTimeoutInSeconds });\n }\n\n public async callback(url: string): Promise<void> {\n this._logger.create(\"callback\");\n IFrameWindow.notifyParent(url, this._settings.iframeNotifyParentOrigin);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, PopupUtils, type PopupWindowFeatures } from \"../utils\";\nimport { DefaultPopupWindowFeatures, DefaultPopupTarget } from \"../UserManagerSettings\";\nimport { AbstractChildWindow } from \"./AbstractChildWindow\";\nimport type { NavigateParams, NavigateResponse } from \"./IWindow\";\n\nconst checkForPopupClosedInterval = 500;\nconst second = 1000;\n\n/**\n * @public\n */\nexport interface PopupWindowParams {\n popupWindowFeatures?: PopupWindowFeatures;\n popupWindowTarget?: string;\n}\n\n/**\n * @internal\n */\nexport class PopupWindow extends AbstractChildWindow {\n protected readonly _logger = new Logger(\"PopupWindow\");\n\n protected _window: WindowProxy | null;\n\n public constructor({\n popupWindowTarget = DefaultPopupTarget,\n popupWindowFeatures = {},\n }: PopupWindowParams) {\n super();\n const centeredPopup = PopupUtils.center({ ...DefaultPopupWindowFeatures, ...popupWindowFeatures });\n this._window = window.open(undefined, popupWindowTarget, PopupUtils.serialize(centeredPopup));\n if (popupWindowFeatures.closePopupWindowAfterInSeconds && popupWindowFeatures.closePopupWindowAfterInSeconds > 0) {\n setTimeout(() => {\n if (!this._window || typeof this._window.closed !== \"boolean\" || this._window.closed) {\n this._abort.raise(new Error(\"Popup blocked by user\"));\n return;\n }\n\n this.close();\n }, popupWindowFeatures.closePopupWindowAfterInSeconds * second);\n }\n }\n\n public async navigate(params: NavigateParams): Promise<NavigateResponse> {\n this._window?.focus();\n\n const popupClosedInterval = setInterval(() => {\n if (!this._window || this._window.closed) {\n this._abort.raise(new Error(\"Popup closed by user\"));\n }\n }, checkForPopupClosedInterval);\n this._disposeHandlers.add(() => clearInterval(popupClosedInterval));\n\n return await super.navigate(params);\n }\n\n public close(): void {\n if (this._window) {\n if (!this._window.closed) {\n this._window.close();\n this._abort.raise(new Error(\"Popup closed\"));\n }\n }\n this._window = null;\n }\n\n public static notifyOpener(url: string, keepOpen: boolean): void {\n if (!window.opener) {\n throw new Error(\"No window.opener. Can't complete notification.\");\n }\n return super._notifyParent(window.opener, url, keepOpen);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\nimport { PopupWindow, type PopupWindowParams } from \"./PopupWindow\";\nimport type { INavigator } from \"./INavigator\";\nimport type { UserManagerSettingsStore } from \"../UserManagerSettings\";\n\n/**\n * @internal\n */\nexport class PopupNavigator implements INavigator {\n private readonly _logger = new Logger(\"PopupNavigator\");\n\n constructor(private _settings: UserManagerSettingsStore) {}\n\n public async prepare({\n popupWindowFeatures = this._settings.popupWindowFeatures,\n popupWindowTarget = this._settings.popupWindowTarget,\n }: PopupWindowParams): Promise<PopupWindow> {\n return new PopupWindow({ popupWindowFeatures, popupWindowTarget });\n }\n\n public async callback(url: string, { keepOpen = false }): Promise<void> {\n this._logger.create(\"callback\");\n\n PopupWindow.notifyOpener(url, keepOpen);\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"../utils\";\nimport type { UserManagerSettingsStore } from \"../UserManagerSettings\";\nimport type { INavigator } from \"./INavigator\";\nimport type { IWindow } from \"./IWindow\";\n\n/**\n * @public\n */\nexport interface RedirectParams {\n redirectMethod?: \"replace\" | \"assign\";\n redirectTarget?: \"top\" | \"self\";\n}\n\n/**\n * @internal\n */\nexport class RedirectNavigator implements INavigator {\n private readonly _logger = new Logger(\"RedirectNavigator\");\n\n constructor(private _settings: UserManagerSettingsStore) {}\n\n public async prepare({\n redirectMethod = this._settings.redirectMethod,\n redirectTarget = this._settings.redirectTarget,\n }: RedirectParams): Promise<IWindow> {\n this._logger.create(\"prepare\");\n let targetWindow = window.self as Window;\n\n if (redirectTarget === \"top\") {\n targetWindow = window.top ?? window.self;\n }\n \n const redirect = targetWindow.location[redirectMethod].bind(targetWindow.location) as (url: string) => never;\n let abort: (reason: Error) => void;\n return {\n navigate: async (params): Promise<never> => {\n this._logger.create(\"navigate\");\n // We use a promise that never resolves to block the caller\n const promise = new Promise((resolve, reject) => {\n abort = reject;\n });\n redirect(params.url);\n return await (promise as Promise<never>);\n },\n close: () => {\n this._logger.create(\"close\");\n abort?.(new Error(\"Redirect aborted\"));\n targetWindow.stop();\n },\n };\n }\n\n public async callback(): Promise<void> {\n return;\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, Event } from \"./utils\";\nimport { AccessTokenEvents } from \"./AccessTokenEvents\";\nimport type { UserManagerSettingsStore } from \"./UserManagerSettings\";\nimport type { User } from \"./User\";\n\n/**\n * @public\n */\nexport type UserLoadedCallback = (user: User) => Promise<void> | void;\n/**\n * @public\n */\nexport type UserUnloadedCallback = () => Promise<void> | void;\n/**\n * @public\n */\nexport type SilentRenewErrorCallback = (error: Error) => Promise<void> | void;\n/**\n * @public\n */\nexport type UserSignedInCallback = () => Promise<void> | void;\n/**\n * @public\n */\nexport type UserSignedOutCallback = () => Promise<void> | void;\n/**\n * @public\n */\nexport type UserSessionChangedCallback = () => Promise<void> | void;\n\n/**\n * @public\n */\nexport class UserManagerEvents extends AccessTokenEvents {\n protected readonly _logger = new Logger(\"UserManagerEvents\");\n\n private readonly _userLoaded = new Event<[User]>(\"User loaded\");\n private readonly _userUnloaded = new Event<[]>(\"User unloaded\");\n private readonly _silentRenewError = new Event<[Error]>(\"Silent renew error\");\n private readonly _userSignedIn = new Event<[]>(\"User signed in\");\n private readonly _userSignedOut = new Event<[]>(\"User signed out\");\n private readonly _userSessionChanged = new Event<[]>(\"User session changed\");\n\n public constructor(settings: UserManagerSettingsStore) {\n super({ expiringNotificationTimeInSeconds: settings.accessTokenExpiringNotificationTimeInSeconds });\n }\n\n public load(user: User, raiseEvent=true): void {\n super.load(user);\n if (raiseEvent) {\n this._userLoaded.raise(user);\n }\n }\n public unload(): void {\n super.unload();\n this._userUnloaded.raise();\n }\n\n /**\n * Add callback: Raised when a user session has been established (or re-established).\n */\n public addUserLoaded(cb: UserLoadedCallback): () => void {\n return this._userLoaded.addHandler(cb);\n }\n /**\n * Remove callback: Raised when a user session has been established (or re-established).\n */\n public removeUserLoaded(cb: UserLoadedCallback): void {\n return this._userLoaded.removeHandler(cb);\n }\n\n /**\n * Add callback: Raised when a user session has been terminated.\n */\n public addUserUnloaded(cb: UserUnloadedCallback): () => void {\n return this._userUnloaded.addHandler(cb);\n }\n /**\n * Remove callback: Raised when a user session has been terminated.\n */\n public removeUserUnloaded(cb: UserUnloadedCallback): void {\n return this._userUnloaded.removeHandler(cb);\n }\n\n /**\n * Add callback: Raised when the automatic silent renew has failed.\n */\n public addSilentRenewError(cb: SilentRenewErrorCallback): () => void {\n return this._silentRenewError.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the automatic silent renew has failed.\n */\n public removeSilentRenewError(cb: SilentRenewErrorCallback): void {\n return this._silentRenewError.removeHandler(cb);\n }\n /**\n * @internal\n */\n public _raiseSilentRenewError(e: Error): void {\n this._silentRenewError.raise(e);\n }\n\n /**\n * Add callback: Raised when the user is signed in (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n public addUserSignedIn(cb: UserSignedInCallback): () => void {\n return this._userSignedIn.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user is signed in (when `monitorSession` is set).\n */\n public removeUserSignedIn(cb: UserSignedInCallback): void {\n this._userSignedIn.removeHandler(cb);\n }\n /**\n * @internal\n */\n public _raiseUserSignedIn(): void {\n this._userSignedIn.raise();\n }\n\n /**\n * Add callback: Raised when the user's sign-in status at the OP has changed (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n public addUserSignedOut(cb: UserSignedOutCallback): () => void {\n return this._userSignedOut.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user's sign-in status at the OP has changed (when `monitorSession` is set).\n */\n public removeUserSignedOut(cb: UserSignedOutCallback): void {\n this._userSignedOut.removeHandler(cb);\n }\n /**\n * @internal\n */\n public _raiseUserSignedOut(): void {\n this._userSignedOut.raise();\n }\n\n /**\n * Add callback: Raised when the user session changed (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n public addUserSessionChanged(cb: UserSessionChangedCallback): () => void {\n return this._userSessionChanged.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user session changed (when `monitorSession` is set).\n */\n public removeUserSessionChanged(cb: UserSessionChangedCallback): void {\n this._userSessionChanged.removeHandler(cb);\n }\n /**\n * @internal\n */\n public _raiseUserSessionChanged(): void {\n this._userSessionChanged.raise();\n }\n}\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger, Timer } from \"./utils\";\nimport { ErrorTimeout } from \"./errors\";\nimport type { UserManager } from \"./UserManager\";\nimport type { AccessTokenCallback } from \"./AccessTokenEvents\";\n\n/**\n * @internal\n */\nexport class SilentRenewService {\n protected _logger = new Logger(\"SilentRenewService\");\n private _isStarted = false;\n private readonly _retryTimer = new Timer(\"Retry Silent Renew\");\n\n public constructor(private _userManager: UserManager) {}\n\n public async start(): Promise<void> {\n const logger = this._logger.create(\"start\");\n if (!this._isStarted) {\n this._isStarted = true;\n this._userManager.events.addAccessTokenExpiring(this._tokenExpiring);\n this._retryTimer.addHandler(this._tokenExpiring);\n\n // this will trigger loading of the user so the expiring events can be initialized\n try {\n await this._userManager.getUser();\n // deliberate nop\n }\n catch (err) {\n // catch to suppress errors since we're in a ctor\n logger.error(\"getUser error\", err);\n }\n }\n }\n\n public stop(): void {\n if (this._isStarted) {\n this._retryTimer.cancel();\n this._retryTimer.removeHandler(this._tokenExpiring);\n this._userManager.events.removeAccessTokenExpiring(this._tokenExpiring);\n this._isStarted = false;\n }\n }\n\n protected _tokenExpiring: AccessTokenCallback = async () => {\n const logger = this._logger.create(\"_tokenExpiring\");\n try {\n await this._userManager.signinSilent();\n logger.debug(\"silent token renewal successful\");\n }\n catch (err) {\n if (err instanceof ErrorTimeout) {\n // no response from authority server, e.g. IFrame timeout, ...\n logger.warn(\"ErrorTimeout from signinSilent:\", err, \"retry in 5s\");\n this._retryTimer.init(5);\n return;\n }\n\n logger.error(\"Error from signinSilent:\", err);\n this._userManager.events._raiseSilentRenewError(err as Error);\n }\n };\n}\n","// Copyright (C) AuthTS Contributors\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport type { UserProfile } from \"./User\";\n\n/**\n * Fake state store implementation necessary for validating refresh token requests.\n *\n * @public\n */\nexport class RefreshState {\n /** custom \"state\", which can be used by a caller to have \"data\" round tripped */\n public readonly data?: unknown;\n\n public readonly refresh_token: string;\n public readonly id_token?: string;\n public readonly session_state: string | null;\n public readonly scope?: string;\n public readonly profile: UserProfile;\n public readonly resource?: string | string[];\n\n constructor(args: {\n refresh_token: string;\n id_token?: string;\n session_state: string | null;\n scope?: string;\n profile: UserProfile;\n\n state?: unknown;\n }, resource?: string | string[]) {\n this.refresh_token = args.refresh_token;\n this.id_token = args.id_token;\n this.session_state = args.session_state;\n this.scope = args.scope;\n this.profile = args.profile;\n this.resource = resource;\n\n this.data = args.state;\n\n }\n}\n","import { authority_url, client_id } from '@/configuration'\r\nimport { AxiosRequestConfig, RawAxiosRequestHeaders } from 'axios'\r\nimport { User } from 'oidc-client-ts'\r\n\r\nexport class ApiClientBase {\r\n protected getUser() {\r\n const oidcStorage = localStorage.getItem(`oidc.user:${authority_url}:${client_id}`)\r\n if (!oidcStorage) {\r\n return null\r\n }\r\n\r\n return User.fromStorageString(oidcStorage)\r\n }\r\n\r\n protected transformOptions(options: AxiosRequestConfig<any>): Promise<AxiosRequestConfig<any>> {\r\n // Attach bearer token to request.\r\n const user = this.getUser()\r\n const token = user?.access_token\r\n options.headers = { ...(options.headers as RawAxiosRequestHeaders), authorization: `Bearer ${token}` }\r\n return Promise.resolve(options)\r\n }\r\n}\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","//----------------------\r\n// <auto-generated>\r\n// Generated using the NSwag toolchain v13.19.0.0 (NJsonSchema v10.9.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\r\n// </auto-generated>\r\n//----------------------\r\n\r\n/* tslint:disable */\r\n/* eslint-disable */\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport { ApiClientBase } from './ApiClientBase';import axios, { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse, CancelToken } from 'axios';\r\n\r\nexport interface IAuditLogClient {\r\n getAuditLog(): Promise<AuditLogVm>;\r\n}\r\n\r\nexport class AuditLogClient extends ApiClientBase implements IAuditLogClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getAuditLog( cancelToken?: CancelToken | undefined): Promise<AuditLogVm> {\r\n let url_ = this.baseUrl + \"/api/AuditLog\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetAuditLog(_response);\r\n });\r\n }\r\n\r\n protected processGetAuditLog(response: AxiosResponse): Promise<AuditLogVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = AuditLogVm.fromJS(resultData200);\r\n return Promise.resolve<AuditLogVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<AuditLogVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface IBadgesClient {\r\n create(badgeName: string | null | undefined, badgeFile: FileParameter | null | undefined): Promise<number>;\r\n get(): Promise<BadgeListVm>;\r\n delete(id: number, command: DeleteBadgeCommand): Promise<number>;\r\n getById(id: number): Promise<BadgeForIdDto>;\r\n award(command: AwardBadgeCommand): Promise<number>;\r\n revoke(command: RevokeBadgeCommand): Promise<number>;\r\n setPreferredBadge(command: SetPreferredBadgeCommand): Promise<number>;\r\n}\r\n\r\nexport class BadgesClient extends ApiClientBase implements IBadgesClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(badgeName: string | null | undefined, badgeFile: FileParameter | null | undefined, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Badges\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (badgeName !== null && badgeName !== undefined)\r\n content_.append(\"BadgeName\", badgeName.toString());\r\n if (badgeFile !== null && badgeFile !== undefined)\r\n content_.append(\"BadgeFile\", badgeFile.data, badgeFile.fileName ? badgeFile.fileName : \"BadgeFile\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise<BadgeListVm> {\r\n let url_ = this.baseUrl + \"/api/Badges\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise<BadgeListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = BadgeListVm.fromJS(resultData200);\r\n return Promise.resolve<BadgeListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<BadgeListVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteBadgeCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Badges/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getById(id: number, cancelToken?: CancelToken | undefined): Promise<BadgeForIdDto> {\r\n let url_ = this.baseUrl + \"/api/Badges/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetById(_response);\r\n });\r\n }\r\n\r\n protected processGetById(response: AxiosResponse): Promise<BadgeForIdDto> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = BadgeForIdDto.fromJS(resultData200);\r\n return Promise.resolve<BadgeForIdDto>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<BadgeForIdDto>(null as any);\r\n }\r\n\r\n award(command: AwardBadgeCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Badges/award\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processAward(_response);\r\n });\r\n }\r\n\r\n protected processAward(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n revoke(command: RevokeBadgeCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Badges/revoke\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processRevoke(_response);\r\n });\r\n }\r\n\r\n protected processRevoke(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n setPreferredBadge(command: SetPreferredBadgeCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Badges/setpreferredbadge\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processSetPreferredBadge(_response);\r\n });\r\n }\r\n\r\n protected processSetPreferredBadge(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface ICountriesClient {\r\n get(): Promise<CountryListVm>;\r\n}\r\n\r\nexport class CountriesClient extends ApiClientBase implements ICountriesClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise<CountryListVm> {\r\n let url_ = this.baseUrl + \"/api/Countries\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise<CountryListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = CountryListVm.fromJS(resultData200);\r\n return Promise.resolve<CountryListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<CountryListVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface IDoomCentralEventsClient {\r\n create(command: CreateDoomCentralEventCommand): Promise<number>;\r\n getEvents(upcomingEventsPageNumber: number | undefined, upcomingEventsPageSize: number | undefined, pastEventsPageNumber: number | undefined, pastEventsPageSize: number | undefined): Promise<EventsPageVm>;\r\n delete(id: number, command: DeleteDoomCentralEventCommand): Promise<FileResponse>;\r\n update(id: number, command: UpdateDoomCentralEventCommand): Promise<number>;\r\n getEventById(id: number): Promise<EventVm>;\r\n getRawEventDataById(id: number): Promise<RawEventPostVm>;\r\n getMyEvents(upcomingEventsPageNumber: number | undefined, upcomingEventsPageSize: number | undefined, pastEventsPageNumber: number | undefined, pastEventsPageSize: number | undefined): Promise<EventsPageVm>;\r\n}\r\n\r\nexport class DoomCentralEventsClient extends ApiClientBase implements IDoomCentralEventsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(command: CreateDoomCentralEventCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/DoomCentralEvents\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getEvents(upcomingEventsPageNumber: number | undefined, upcomingEventsPageSize: number | undefined, pastEventsPageNumber: number | undefined, pastEventsPageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<EventsPageVm> {\r\n let url_ = this.baseUrl + \"/api/DoomCentralEvents?\";\r\n if (upcomingEventsPageNumber === null)\r\n throw new Error(\"The parameter 'upcomingEventsPageNumber' cannot be null.\");\r\n else if (upcomingEventsPageNumber !== undefined)\r\n url_ += \"UpcomingEventsPageNumber=\" + encodeURIComponent(\"\" + upcomingEventsPageNumber) + \"&\";\r\n if (upcomingEventsPageSize === null)\r\n throw new Error(\"The parameter 'upcomingEventsPageSize' cannot be null.\");\r\n else if (upcomingEventsPageSize !== undefined)\r\n url_ += \"UpcomingEventsPageSize=\" + encodeURIComponent(\"\" + upcomingEventsPageSize) + \"&\";\r\n if (pastEventsPageNumber === null)\r\n throw new Error(\"The parameter 'pastEventsPageNumber' cannot be null.\");\r\n else if (pastEventsPageNumber !== undefined)\r\n url_ += \"PastEventsPageNumber=\" + encodeURIComponent(\"\" + pastEventsPageNumber) + \"&\";\r\n if (pastEventsPageSize === null)\r\n throw new Error(\"The parameter 'pastEventsPageSize' cannot be null.\");\r\n else if (pastEventsPageSize !== undefined)\r\n url_ += \"PastEventsPageSize=\" + encodeURIComponent(\"\" + pastEventsPageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetEvents(_response);\r\n });\r\n }\r\n\r\n protected processGetEvents(response: AxiosResponse): Promise<EventsPageVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = EventsPageVm.fromJS(resultData200);\r\n return Promise.resolve<EventsPageVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<EventsPageVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteDoomCentralEventCommand, cancelToken?: CancelToken | undefined): Promise<FileResponse> {\r\n let url_ = this.baseUrl + \"/api/DoomCentralEvents/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n responseType: \"blob\",\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/octet-stream\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<FileResponse> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers[\"content-disposition\"] : undefined;\r\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n if (fileName) {\r\n fileName = decodeURIComponent(fileName);\r\n } else {\r\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n }\r\n return Promise.resolve({ fileName: fileName, status: status, data: new Blob([response.data], { type: response.headers[\"content-type\"] }), headers: _headers });\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<FileResponse>(null as any);\r\n }\r\n\r\n update(id: number, command: UpdateDoomCentralEventCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/DoomCentralEvents/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUpdate(_response);\r\n });\r\n }\r\n\r\n protected processUpdate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getEventById(id: number, cancelToken?: CancelToken | undefined): Promise<EventVm> {\r\n let url_ = this.baseUrl + \"/api/DoomCentralEvents/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetEventById(_response);\r\n });\r\n }\r\n\r\n protected processGetEventById(response: AxiosResponse): Promise<EventVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = EventVm.fromJS(resultData200);\r\n return Promise.resolve<EventVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<EventVm>(null as any);\r\n }\r\n\r\n getRawEventDataById(id: number, cancelToken?: CancelToken | undefined): Promise<RawEventPostVm> {\r\n let url_ = this.baseUrl + \"/api/DoomCentralEvents/{id}/raw\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetRawEventDataById(_response);\r\n });\r\n }\r\n\r\n protected processGetRawEventDataById(response: AxiosResponse): Promise<RawEventPostVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = RawEventPostVm.fromJS(resultData200);\r\n return Promise.resolve<RawEventPostVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<RawEventPostVm>(null as any);\r\n }\r\n\r\n getMyEvents(upcomingEventsPageNumber: number | undefined, upcomingEventsPageSize: number | undefined, pastEventsPageNumber: number | undefined, pastEventsPageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<EventsPageVm> {\r\n let url_ = this.baseUrl + \"/api/DoomCentralEvents/my?\";\r\n if (upcomingEventsPageNumber === null)\r\n throw new Error(\"The parameter 'upcomingEventsPageNumber' cannot be null.\");\r\n else if (upcomingEventsPageNumber !== undefined)\r\n url_ += \"UpcomingEventsPageNumber=\" + encodeURIComponent(\"\" + upcomingEventsPageNumber) + \"&\";\r\n if (upcomingEventsPageSize === null)\r\n throw new Error(\"The parameter 'upcomingEventsPageSize' cannot be null.\");\r\n else if (upcomingEventsPageSize !== undefined)\r\n url_ += \"UpcomingEventsPageSize=\" + encodeURIComponent(\"\" + upcomingEventsPageSize) + \"&\";\r\n if (pastEventsPageNumber === null)\r\n throw new Error(\"The parameter 'pastEventsPageNumber' cannot be null.\");\r\n else if (pastEventsPageNumber !== undefined)\r\n url_ += \"PastEventsPageNumber=\" + encodeURIComponent(\"\" + pastEventsPageNumber) + \"&\";\r\n if (pastEventsPageSize === null)\r\n throw new Error(\"The parameter 'pastEventsPageSize' cannot be null.\");\r\n else if (pastEventsPageSize !== undefined)\r\n url_ += \"PastEventsPageSize=\" + encodeURIComponent(\"\" + pastEventsPageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetMyEvents(_response);\r\n });\r\n }\r\n\r\n protected processGetMyEvents(response: AxiosResponse): Promise<EventsPageVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = EventsPageVm.fromJS(resultData200);\r\n return Promise.resolve<EventsPageVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<EventsPageVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface IEmotesClient {\r\n create(emoteName: string | null | undefined, emoteCode: string | null | undefined, emoteFile: FileParameter | null | undefined): Promise<number>;\r\n get(): Promise<EmoteListVm>;\r\n delete(id: number, command: DeleteEmoteCommand): Promise<number>;\r\n}\r\n\r\nexport class EmotesClient extends ApiClientBase implements IEmotesClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(emoteName: string | null | undefined, emoteCode: string | null | undefined, emoteFile: FileParameter | null | undefined, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Emotes\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (emoteName !== null && emoteName !== undefined)\r\n content_.append(\"EmoteName\", emoteName.toString());\r\n if (emoteCode !== null && emoteCode !== undefined)\r\n content_.append(\"EmoteCode\", emoteCode.toString());\r\n if (emoteFile !== null && emoteFile !== undefined)\r\n content_.append(\"EmoteFile\", emoteFile.data, emoteFile.fileName ? emoteFile.fileName : \"EmoteFile\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise<EmoteListVm> {\r\n let url_ = this.baseUrl + \"/api/Emotes\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise<EmoteListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = EmoteListVm.fromJS(resultData200);\r\n return Promise.resolve<EmoteListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<EmoteListVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteEmoteCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Emotes/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface IForumGroupsClient {\r\n create(command: CreateForumGroupCommand): Promise<number>;\r\n get(): Promise<ForumGroupListVm>;\r\n delete(id: number, command: DeleteForumGroupCommand): Promise<number>;\r\n update(id: number, command: UpdateForumGroupCommand): Promise<number>;\r\n reorder(command: ReorderForumGroupsAndForumsCommand): Promise<number>;\r\n}\r\n\r\nexport class ForumGroupsClient extends ApiClientBase implements IForumGroupsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(command: CreateForumGroupCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ForumGroups\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise<ForumGroupListVm> {\r\n let url_ = this.baseUrl + \"/api/ForumGroups\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise<ForumGroupListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ForumGroupListVm.fromJS(resultData200);\r\n return Promise.resolve<ForumGroupListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<ForumGroupListVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteForumGroupCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ForumGroups/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n update(id: number, command: UpdateForumGroupCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ForumGroups/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUpdate(_response);\r\n });\r\n }\r\n\r\n protected processUpdate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n reorder(command: ReorderForumGroupsAndForumsCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ForumGroups/reorder\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processReorder(_response);\r\n });\r\n }\r\n\r\n protected processReorder(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface IForumPermissionGroupsClient {\r\n create(command: CreateForumPermissionGroupCommand): Promise<number>;\r\n get(): Promise<ForumPermissionGroupListVm>;\r\n delete(id: number, command: DeleteForumPermissionGroupCommand): Promise<number>;\r\n update(id: number, command: UpdateForumPermissionGroupCommand): Promise<number>;\r\n getGroupById(id: number): Promise<ForumPermissionsGroupVm>;\r\n}\r\n\r\nexport class ForumPermissionGroupsClient extends ApiClientBase implements IForumPermissionGroupsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(command: CreateForumPermissionGroupCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ForumPermissionGroups\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise<ForumPermissionGroupListVm> {\r\n let url_ = this.baseUrl + \"/api/ForumPermissionGroups\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise<ForumPermissionGroupListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ForumPermissionGroupListVm.fromJS(resultData200);\r\n return Promise.resolve<ForumPermissionGroupListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<ForumPermissionGroupListVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteForumPermissionGroupCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ForumPermissionGroups/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n update(id: number, command: UpdateForumPermissionGroupCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ForumPermissionGroups/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUpdate(_response);\r\n });\r\n }\r\n\r\n protected processUpdate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getGroupById(id: number, cancelToken?: CancelToken | undefined): Promise<ForumPermissionsGroupVm> {\r\n let url_ = this.baseUrl + \"/api/ForumPermissionGroups/group/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetGroupById(_response);\r\n });\r\n }\r\n\r\n protected processGetGroupById(response: AxiosResponse): Promise<ForumPermissionsGroupVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ForumPermissionsGroupVm.fromJS(resultData200);\r\n return Promise.resolve<ForumPermissionsGroupVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<ForumPermissionsGroupVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface IForumsClient {\r\n create(command: CreateForumCommand): Promise<number>;\r\n getForums(): Promise<ForumListVm>;\r\n delete(id: number, command: DeleteForumCommand): Promise<number>;\r\n update(id: number, command: UpdateForumCommand): Promise<number>;\r\n getForumListing(): Promise<ForumListingVm>;\r\n getThreadsByForumId(id: number, forumId: number | undefined, pageNumber: number | undefined, pageSize: number | undefined): Promise<ForumThreadListingPageVm>;\r\n getAllForumsAndGroups(): Promise<AllForumListingVm>;\r\n}\r\n\r\nexport class ForumsClient extends ApiClientBase implements IForumsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(command: CreateForumCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Forums\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getForums( cancelToken?: CancelToken | undefined): Promise<ForumListVm> {\r\n let url_ = this.baseUrl + \"/api/Forums\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetForums(_response);\r\n });\r\n }\r\n\r\n protected processGetForums(response: AxiosResponse): Promise<ForumListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ForumListVm.fromJS(resultData200);\r\n return Promise.resolve<ForumListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<ForumListVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteForumCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Forums/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n update(id: number, command: UpdateForumCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Forums/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUpdate(_response);\r\n });\r\n }\r\n\r\n protected processUpdate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getForumListing( cancelToken?: CancelToken | undefined): Promise<ForumListingVm> {\r\n let url_ = this.baseUrl + \"/api/Forums/listing\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetForumListing(_response);\r\n });\r\n }\r\n\r\n protected processGetForumListing(response: AxiosResponse): Promise<ForumListingVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ForumListingVm.fromJS(resultData200);\r\n return Promise.resolve<ForumListingVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<ForumListingVm>(null as any);\r\n }\r\n\r\n getThreadsByForumId(id: number, forumId: number | undefined, pageNumber: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<ForumThreadListingPageVm> {\r\n let url_ = this.baseUrl + \"/api/Forums/{id}/threads?\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (forumId === null)\r\n throw new Error(\"The parameter 'forumId' cannot be null.\");\r\n else if (forumId !== undefined)\r\n url_ += \"ForumId=\" + encodeURIComponent(\"\" + forumId) + \"&\";\r\n if (pageNumber === null)\r\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\r\n else if (pageNumber !== undefined)\r\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\r\n if (pageSize === null)\r\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\r\n else if (pageSize !== undefined)\r\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetThreadsByForumId(_response);\r\n });\r\n }\r\n\r\n protected processGetThreadsByForumId(response: AxiosResponse): Promise<ForumThreadListingPageVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ForumThreadListingPageVm.fromJS(resultData200);\r\n return Promise.resolve<ForumThreadListingPageVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<ForumThreadListingPageVm>(null as any);\r\n }\r\n\r\n getAllForumsAndGroups( cancelToken?: CancelToken | undefined): Promise<AllForumListingVm> {\r\n let url_ = this.baseUrl + \"/api/Forums/all\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetAllForumsAndGroups(_response);\r\n });\r\n }\r\n\r\n protected processGetAllForumsAndGroups(response: AxiosResponse): Promise<AllForumListingVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = AllForumListingVm.fromJS(resultData200);\r\n return Promise.resolve<AllForumListingVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<AllForumListingVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface IForumStewardsClient {\r\n getThreadApprovalQueue(pageNumber: number | undefined, pageSize: number | undefined): Promise<UnapprovedThreadPaginatedListVm>;\r\n}\r\n\r\nexport class ForumStewardsClient extends ApiClientBase implements IForumStewardsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getThreadApprovalQueue(pageNumber: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<UnapprovedThreadPaginatedListVm> {\r\n let url_ = this.baseUrl + \"/api/ForumStewards/threadapprovalqueue?\";\r\n if (pageNumber === null)\r\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\r\n else if (pageNumber !== undefined)\r\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\r\n if (pageSize === null)\r\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\r\n else if (pageSize !== undefined)\r\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetThreadApprovalQueue(_response);\r\n });\r\n }\r\n\r\n protected processGetThreadApprovalQueue(response: AxiosResponse): Promise<UnapprovedThreadPaginatedListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = UnapprovedThreadPaginatedListVm.fromJS(resultData200);\r\n return Promise.resolve<UnapprovedThreadPaginatedListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<UnapprovedThreadPaginatedListVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface IGoogleAnalyticsClient {\r\n getGoogleAnalyticsId(): Promise<string>;\r\n}\r\n\r\nexport class GoogleAnalyticsClient extends ApiClientBase implements IGoogleAnalyticsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getGoogleAnalyticsId( cancelToken?: CancelToken | undefined): Promise<string> {\r\n let url_ = this.baseUrl + \"/api/GoogleAnalytics\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetGoogleAnalyticsId(_response);\r\n });\r\n }\r\n\r\n protected processGetGoogleAnalyticsId(response: AxiosResponse): Promise<string> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<string>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<string>(null as any);\r\n }\r\n}\r\n\r\nexport interface IHomeClient {\r\n getHomePage(): Promise<HomePageVm>;\r\n}\r\n\r\nexport class HomeClient extends ApiClientBase implements IHomeClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getHomePage( cancelToken?: CancelToken | undefined): Promise<HomePageVm> {\r\n let url_ = this.baseUrl + \"/api/Home\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetHomePage(_response);\r\n });\r\n }\r\n\r\n protected processGetHomePage(response: AxiosResponse): Promise<HomePageVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = HomePageVm.fromJS(resultData200);\r\n return Promise.resolve<HomePageVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<HomePageVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface INewsClient {\r\n create(command: CreateNewsCommand): Promise<number>;\r\n getNewsListingPage(pageNumber: number | undefined, pageSize: number | undefined): Promise<NewsListingPageVm>;\r\n delete(id: number, command: DeleteNewsCommand): Promise<number>;\r\n update(id: number, command: UpdateNewsCommand): Promise<number>;\r\n getNewsById(id: number): Promise<NewsPostVm>;\r\n publish(command: PublishNewsCommand): Promise<number>;\r\n unpublish(command: UnpublishNewsCommand): Promise<number>;\r\n getRawNewsDataById(id: number): Promise<RawNewsPostVm>;\r\n getMyNews(pageNumber: number | undefined, pageSize: number | undefined): Promise<NewsListingPageVm>;\r\n}\r\n\r\nexport class NewsClient extends ApiClientBase implements INewsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(command: CreateNewsCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/News\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getNewsListingPage(pageNumber: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<NewsListingPageVm> {\r\n let url_ = this.baseUrl + \"/api/News?\";\r\n if (pageNumber === null)\r\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\r\n else if (pageNumber !== undefined)\r\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\r\n if (pageSize === null)\r\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\r\n else if (pageSize !== undefined)\r\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetNewsListingPage(_response);\r\n });\r\n }\r\n\r\n protected processGetNewsListingPage(response: AxiosResponse): Promise<NewsListingPageVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = NewsListingPageVm.fromJS(resultData200);\r\n return Promise.resolve<NewsListingPageVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<NewsListingPageVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteNewsCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/News/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n update(id: number, command: UpdateNewsCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/News/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUpdate(_response);\r\n });\r\n }\r\n\r\n protected processUpdate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getNewsById(id: number, cancelToken?: CancelToken | undefined): Promise<NewsPostVm> {\r\n let url_ = this.baseUrl + \"/api/News/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetNewsById(_response);\r\n });\r\n }\r\n\r\n protected processGetNewsById(response: AxiosResponse): Promise<NewsPostVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = NewsPostVm.fromJS(resultData200);\r\n return Promise.resolve<NewsPostVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<NewsPostVm>(null as any);\r\n }\r\n\r\n publish(command: PublishNewsCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/News/publish\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processPublish(_response);\r\n });\r\n }\r\n\r\n protected processPublish(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n unpublish(command: UnpublishNewsCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/News/unpublish\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUnpublish(_response);\r\n });\r\n }\r\n\r\n protected processUnpublish(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getRawNewsDataById(id: number, cancelToken?: CancelToken | undefined): Promise<RawNewsPostVm> {\r\n let url_ = this.baseUrl + \"/api/News/{id}/raw\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetRawNewsDataById(_response);\r\n });\r\n }\r\n\r\n protected processGetRawNewsDataById(response: AxiosResponse): Promise<RawNewsPostVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = RawNewsPostVm.fromJS(resultData200);\r\n return Promise.resolve<RawNewsPostVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<RawNewsPostVm>(null as any);\r\n }\r\n\r\n getMyNews(pageNumber: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<NewsListingPageVm> {\r\n let url_ = this.baseUrl + \"/api/News/my?\";\r\n if (pageNumber === null)\r\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\r\n else if (pageNumber !== undefined)\r\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\r\n if (pageSize === null)\r\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\r\n else if (pageSize !== undefined)\r\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetMyNews(_response);\r\n });\r\n }\r\n\r\n protected processGetMyNews(response: AxiosResponse): Promise<NewsListingPageVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = NewsListingPageVm.fromJS(resultData200);\r\n return Promise.resolve<NewsListingPageVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<NewsListingPageVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface INotificationsClient {\r\n getUserNotifications(pageNumber: number | undefined, pageSize: number | undefined): Promise<NotificationVm>;\r\n ackUserNotification(command: AckNotificationCommand): Promise<number>;\r\n deleteUserNotification(command: DeleteNotificationCommand): Promise<number>;\r\n}\r\n\r\nexport class NotificationsClient extends ApiClientBase implements INotificationsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getUserNotifications(pageNumber: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<NotificationVm> {\r\n let url_ = this.baseUrl + \"/api/Notifications?\";\r\n if (pageNumber === null)\r\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\r\n else if (pageNumber !== undefined)\r\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\r\n if (pageSize === null)\r\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\r\n else if (pageSize !== undefined)\r\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetUserNotifications(_response);\r\n });\r\n }\r\n\r\n protected processGetUserNotifications(response: AxiosResponse): Promise<NotificationVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = NotificationVm.fromJS(resultData200);\r\n return Promise.resolve<NotificationVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<NotificationVm>(null as any);\r\n }\r\n\r\n ackUserNotification(command: AckNotificationCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Notifications/ack\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processAckUserNotification(_response);\r\n });\r\n }\r\n\r\n protected processAckUserNotification(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n deleteUserNotification(command: DeleteNotificationCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Notifications/delete\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDeleteUserNotification(_response);\r\n });\r\n }\r\n\r\n protected processDeleteUserNotification(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface IPostFilesClient {\r\n upload(badgeName: string | null | undefined, badgeFile: FileParameter | null | undefined): Promise<number>;\r\n delete(id: number, command: DeleteThreadPostFileCommand): Promise<number>;\r\n}\r\n\r\nexport class PostFilesClient extends ApiClientBase implements IPostFilesClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n upload(badgeName: string | null | undefined, badgeFile: FileParameter | null | undefined, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/PostFiles/upload\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (badgeName !== null && badgeName !== undefined)\r\n content_.append(\"BadgeName\", badgeName.toString());\r\n if (badgeFile !== null && badgeFile !== undefined)\r\n content_.append(\"BadgeFile\", badgeFile.data, badgeFile.fileName ? badgeFile.fileName : \"BadgeFile\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUpload(_response);\r\n });\r\n }\r\n\r\n protected processUpload(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteThreadPostFileCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/PostFiles/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface IPromotionsClient {\r\n getPromotions(): Promise<PromotedItemsVm>;\r\n searchForPromotableResources(includeNews: boolean | undefined, includeEvents: boolean | undefined, forumId: number | null | undefined, title: string | null | undefined): Promise<PromotableResourceVm>;\r\n setNewPromotions(command: SetPromotedItemsCommand): Promise<number>;\r\n}\r\n\r\nexport class PromotionsClient extends ApiClientBase implements IPromotionsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getPromotions( cancelToken?: CancelToken | undefined): Promise<PromotedItemsVm> {\r\n let url_ = this.baseUrl + \"/api/Promotions\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetPromotions(_response);\r\n });\r\n }\r\n\r\n protected processGetPromotions(response: AxiosResponse): Promise<PromotedItemsVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = PromotedItemsVm.fromJS(resultData200);\r\n return Promise.resolve<PromotedItemsVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<PromotedItemsVm>(null as any);\r\n }\r\n\r\n searchForPromotableResources(includeNews: boolean | undefined, includeEvents: boolean | undefined, forumId: number | null | undefined, title: string | null | undefined, cancelToken?: CancelToken | undefined): Promise<PromotableResourceVm> {\r\n let url_ = this.baseUrl + \"/api/Promotions/search?\";\r\n if (includeNews === null)\r\n throw new Error(\"The parameter 'includeNews' cannot be null.\");\r\n else if (includeNews !== undefined)\r\n url_ += \"includeNews=\" + encodeURIComponent(\"\" + includeNews) + \"&\";\r\n if (includeEvents === null)\r\n throw new Error(\"The parameter 'includeEvents' cannot be null.\");\r\n else if (includeEvents !== undefined)\r\n url_ += \"includeEvents=\" + encodeURIComponent(\"\" + includeEvents) + \"&\";\r\n if (forumId !== undefined && forumId !== null)\r\n url_ += \"forumId=\" + encodeURIComponent(\"\" + forumId) + \"&\";\r\n if (title !== undefined && title !== null)\r\n url_ += \"title=\" + encodeURIComponent(\"\" + title) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processSearchForPromotableResources(_response);\r\n });\r\n }\r\n\r\n protected processSearchForPromotableResources(response: AxiosResponse): Promise<PromotableResourceVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = PromotableResourceVm.fromJS(resultData200);\r\n return Promise.resolve<PromotableResourceVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<PromotableResourceVm>(null as any);\r\n }\r\n\r\n setNewPromotions(command: SetPromotedItemsCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Promotions/newpromotions\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processSetNewPromotions(_response);\r\n });\r\n }\r\n\r\n protected processSetNewPromotions(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface IReactionsClient {\r\n create(reactName: string | null | undefined, reactFile: FileParameter | null | undefined): Promise<number>;\r\n get(): Promise<ReactionsListVm>;\r\n delete(id: number, command: DeleteReactionCommand): Promise<number>;\r\n}\r\n\r\nexport class ReactionsClient extends ApiClientBase implements IReactionsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(reactName: string | null | undefined, reactFile: FileParameter | null | undefined, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Reactions\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (reactName !== null && reactName !== undefined)\r\n content_.append(\"ReactName\", reactName.toString());\r\n if (reactFile !== null && reactFile !== undefined)\r\n content_.append(\"ReactFile\", reactFile.data, reactFile.fileName ? reactFile.fileName : \"ReactFile\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise<ReactionsListVm> {\r\n let url_ = this.baseUrl + \"/api/Reactions\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise<ReactionsListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ReactionsListVm.fromJS(resultData200);\r\n return Promise.resolve<ReactionsListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<ReactionsListVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteReactionCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Reactions/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface ISidebarClient {\r\n getSidebars(): Promise<SidebarVm>;\r\n}\r\n\r\nexport class SidebarClient extends ApiClientBase implements ISidebarClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getSidebars( cancelToken?: CancelToken | undefined): Promise<SidebarVm> {\r\n let url_ = this.baseUrl + \"/api/Sidebar\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetSidebars(_response);\r\n });\r\n }\r\n\r\n protected processGetSidebars(response: AxiosResponse): Promise<SidebarVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = SidebarVm.fromJS(resultData200);\r\n return Promise.resolve<SidebarVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<SidebarVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface IStreamerClient {\r\n create(streamId: string | null | undefined, name: string | null | undefined, streamerNationality_CountryCode: string | null | undefined, platform: StreamPlatform | undefined, profilePicture: FileParameter | null | undefined): Promise<number>;\r\n get(): Promise<StreamListVm>;\r\n delete(id: number, command: DeleteStreamerCommand): Promise<number>;\r\n}\r\n\r\nexport class StreamerClient extends ApiClientBase implements IStreamerClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(streamId: string | null | undefined, name: string | null | undefined, streamerNationality_CountryCode: string | null | undefined, platform: StreamPlatform | undefined, profilePicture: FileParameter | null | undefined, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Streamer\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (streamId !== null && streamId !== undefined)\r\n content_.append(\"StreamId\", streamId.toString());\r\n if (name !== null && name !== undefined)\r\n content_.append(\"Name\", name.toString());\r\n if (streamerNationality_CountryCode !== null && streamerNationality_CountryCode !== undefined)\r\n content_.append(\"StreamerNationality.CountryCode\", streamerNationality_CountryCode.toString());\r\n if (platform === null || platform === undefined)\r\n throw new Error(\"The parameter 'platform' cannot be null.\");\r\n else\r\n content_.append(\"Platform\", platform.toString());\r\n if (profilePicture !== null && profilePicture !== undefined)\r\n content_.append(\"ProfilePicture\", profilePicture.data, profilePicture.fileName ? profilePicture.fileName : \"ProfilePicture\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n get( cancelToken?: CancelToken | undefined): Promise<StreamListVm> {\r\n let url_ = this.baseUrl + \"/api/Streamer\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise<StreamListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = StreamListVm.fromJS(resultData200);\r\n return Promise.resolve<StreamListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<StreamListVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteStreamerCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Streamer/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface ISubscriptionClient {\r\n getSubscriptions(includeNewsAndEvents: boolean | undefined, forumId: number | null | undefined, pageNumber: number | undefined, pageSize: number | undefined): Promise<UserSubscriptionVm>;\r\n deleteSubscriptions(command: DeleteSubscriptionCommand): Promise<number>;\r\n}\r\n\r\nexport class SubscriptionClient extends ApiClientBase implements ISubscriptionClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n getSubscriptions(includeNewsAndEvents: boolean | undefined, forumId: number | null | undefined, pageNumber: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<UserSubscriptionVm> {\r\n let url_ = this.baseUrl + \"/api/Subscription?\";\r\n if (includeNewsAndEvents === null)\r\n throw new Error(\"The parameter 'includeNewsAndEvents' cannot be null.\");\r\n else if (includeNewsAndEvents !== undefined)\r\n url_ += \"includeNewsAndEvents=\" + encodeURIComponent(\"\" + includeNewsAndEvents) + \"&\";\r\n if (forumId !== undefined && forumId !== null)\r\n url_ += \"forumId=\" + encodeURIComponent(\"\" + forumId) + \"&\";\r\n if (pageNumber === null)\r\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\r\n else if (pageNumber !== undefined)\r\n url_ += \"pageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\r\n if (pageSize === null)\r\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\r\n else if (pageSize !== undefined)\r\n url_ += \"pageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetSubscriptions(_response);\r\n });\r\n }\r\n\r\n protected processGetSubscriptions(response: AxiosResponse): Promise<UserSubscriptionVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = UserSubscriptionVm.fromJS(resultData200);\r\n return Promise.resolve<UserSubscriptionVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<UserSubscriptionVm>(null as any);\r\n }\r\n\r\n deleteSubscriptions(command: DeleteSubscriptionCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Subscription\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDeleteSubscriptions(_response);\r\n });\r\n }\r\n\r\n protected processDeleteSubscriptions(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface IThreadPostsClient {\r\n create(threadId: number | undefined, post: string | null | undefined, quotedPostId: number | null | undefined, postFiles: FileParameter[] | null | undefined, postFileDescriptions: PostFileUploadItem[] | null | undefined): Promise<number>;\r\n delete(id: number, command: DeleteThreadPostCommand): Promise<number>;\r\n update(id: number, command: UpdateThreadPostCommand): Promise<number>;\r\n getThreadPostByPostId(id: number, postId: number | undefined): Promise<IndividualPostVm>;\r\n approve(command: ApproveThreadPostCommand): Promise<number>;\r\n lock(command: LockThreadPostCommand): Promise<number>;\r\n unlock(command: UnlockThreadPostCommand): Promise<number>;\r\n}\r\n\r\nexport class ThreadPostsClient extends ApiClientBase implements IThreadPostsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(threadId: number | undefined, post: string | null | undefined, quotedPostId: number | null | undefined, postFiles: FileParameter[] | null | undefined, postFileDescriptions: PostFileUploadItem[] | null | undefined, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ThreadPosts\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (threadId === null || threadId === undefined)\r\n throw new Error(\"The parameter 'threadId' cannot be null.\");\r\n else\r\n content_.append(\"ThreadId\", threadId.toString());\r\n if (post !== null && post !== undefined)\r\n content_.append(\"Post\", post.toString());\r\n if (quotedPostId !== null && quotedPostId !== undefined)\r\n content_.append(\"QuotedPostId\", quotedPostId.toString());\r\n if (postFiles !== null && postFiles !== undefined)\r\n postFiles.forEach(item_ => content_.append(\"PostFiles\", item_.data, item_.fileName ? item_.fileName : \"PostFiles\") );\r\n if (postFileDescriptions !== null && postFileDescriptions !== undefined)\r\n postFileDescriptions.forEach(item_ => content_.append(\"PostFileDescriptions\", item_.toString()));\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteThreadPostCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ThreadPosts/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n update(id: number, command: UpdateThreadPostCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ThreadPosts/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUpdate(_response);\r\n });\r\n }\r\n\r\n protected processUpdate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getThreadPostByPostId(id: number, postId: number | undefined, cancelToken?: CancelToken | undefined): Promise<IndividualPostVm> {\r\n let url_ = this.baseUrl + \"/api/ThreadPosts/{id}?\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (postId === null)\r\n throw new Error(\"The parameter 'postId' cannot be null.\");\r\n else if (postId !== undefined)\r\n url_ += \"PostId=\" + encodeURIComponent(\"\" + postId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetThreadPostByPostId(_response);\r\n });\r\n }\r\n\r\n protected processGetThreadPostByPostId(response: AxiosResponse): Promise<IndividualPostVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = IndividualPostVm.fromJS(resultData200);\r\n return Promise.resolve<IndividualPostVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<IndividualPostVm>(null as any);\r\n }\r\n\r\n approve(command: ApproveThreadPostCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ThreadPosts/approve\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processApprove(_response);\r\n });\r\n }\r\n\r\n protected processApprove(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n lock(command: LockThreadPostCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ThreadPosts/lock\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processLock(_response);\r\n });\r\n }\r\n\r\n protected processLock(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n unlock(command: UnlockThreadPostCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/ThreadPosts/unlock\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUnlock(_response);\r\n });\r\n }\r\n\r\n protected processUnlock(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n}\r\n\r\nexport interface IThreadsClient {\r\n create(command: CreateForumThreadCommand): Promise<number>;\r\n getThreadList(filter: ThreadFilter | undefined, pageNumber: number | undefined, pageSize: number | undefined): Promise<ThreadListingPageVm>;\r\n delete(id: number, command: DeleteForumThreadCommand): Promise<number>;\r\n update(id: number, command: UpdateThreadCommand): Promise<number>;\r\n getThreadPageById(id: number): Promise<ThreadViewVm>;\r\n move(command: MoveForumThreadCommand): Promise<number>;\r\n approve(command: ApproveForumThreadCommand): Promise<number>;\r\n split(command: SplitThreadCommand): Promise<number>;\r\n lock(command: LockThreadCommand): Promise<number>;\r\n unlock(command: UnlockThreadCommand): Promise<number>;\r\n moderate(command: ModerateThreadCommand): Promise<number>;\r\n unmoderate(command: UnmoderateThreadCommand): Promise<number>;\r\n sticky(command: StickyForumThreadCommand): Promise<number>;\r\n unsticky(command: UnstickyForumThreadCommand): Promise<number>;\r\n markAsRead(command: MarkThreadPostsAsReadCommand): Promise<number>;\r\n getPostsByThreadId(id: number, threadId: number | undefined, pageNumber: number | undefined, pageSize: number | undefined): Promise<PostPaginatedListVm>;\r\n getThreadPostsByParameters(viewMode: PostViewMode | undefined, threadId: number | undefined, postId: number | null | undefined): Promise<PostPaginatedListVm>;\r\n}\r\n\r\nexport class ThreadsClient extends ApiClientBase implements IThreadsClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n create(command: CreateForumThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processCreate(_response);\r\n });\r\n }\r\n\r\n protected processCreate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getThreadList(filter: ThreadFilter | undefined, pageNumber: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<ThreadListingPageVm> {\r\n let url_ = this.baseUrl + \"/api/Threads?\";\r\n if (filter === null)\r\n throw new Error(\"The parameter 'filter' cannot be null.\");\r\n else if (filter !== undefined)\r\n url_ += \"Filter=\" + encodeURIComponent(\"\" + filter) + \"&\";\r\n if (pageNumber === null)\r\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\r\n else if (pageNumber !== undefined)\r\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\r\n if (pageSize === null)\r\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\r\n else if (pageSize !== undefined)\r\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetThreadList(_response);\r\n });\r\n }\r\n\r\n protected processGetThreadList(response: AxiosResponse): Promise<ThreadListingPageVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ThreadListingPageVm.fromJS(resultData200);\r\n return Promise.resolve<ThreadListingPageVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<ThreadListingPageVm>(null as any);\r\n }\r\n\r\n delete(id: number, command: DeleteForumThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"DELETE\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n update(id: number, command: UpdateThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"PUT\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUpdate(_response);\r\n });\r\n }\r\n\r\n protected processUpdate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getThreadPageById(id: number, cancelToken?: CancelToken | undefined): Promise<ThreadViewVm> {\r\n let url_ = this.baseUrl + \"/api/Threads/{id}\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetThreadPageById(_response);\r\n });\r\n }\r\n\r\n protected processGetThreadPageById(response: AxiosResponse): Promise<ThreadViewVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = ThreadViewVm.fromJS(resultData200);\r\n return Promise.resolve<ThreadViewVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<ThreadViewVm>(null as any);\r\n }\r\n\r\n move(command: MoveForumThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/move\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processMove(_response);\r\n });\r\n }\r\n\r\n protected processMove(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n approve(command: ApproveForumThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/approve\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processApprove(_response);\r\n });\r\n }\r\n\r\n protected processApprove(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n split(command: SplitThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/split\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processSplit(_response);\r\n });\r\n }\r\n\r\n protected processSplit(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n lock(command: LockThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/lock\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processLock(_response);\r\n });\r\n }\r\n\r\n protected processLock(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n unlock(command: UnlockThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/unlock\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUnlock(_response);\r\n });\r\n }\r\n\r\n protected processUnlock(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n moderate(command: ModerateThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/moderate\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processModerate(_response);\r\n });\r\n }\r\n\r\n protected processModerate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n unmoderate(command: UnmoderateThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/unmoderate\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUnmoderate(_response);\r\n });\r\n }\r\n\r\n protected processUnmoderate(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n sticky(command: StickyForumThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/sticky\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processSticky(_response);\r\n });\r\n }\r\n\r\n protected processSticky(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n unsticky(command: UnstickyForumThreadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/unsticky\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processUnsticky(_response);\r\n });\r\n }\r\n\r\n protected processUnsticky(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n markAsRead(command: MarkThreadPostsAsReadCommand, cancelToken?: CancelToken | undefined): Promise<number> {\r\n let url_ = this.baseUrl + \"/api/Threads/markasread\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processMarkAsRead(_response);\r\n });\r\n }\r\n\r\n protected processMarkAsRead(response: AxiosResponse): Promise<number> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<number>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<number>(null as any);\r\n }\r\n\r\n getPostsByThreadId(id: number, threadId: number | undefined, pageNumber: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<PostPaginatedListVm> {\r\n let url_ = this.baseUrl + \"/api/Threads/{id}/posts?\";\r\n if (id === undefined || id === null)\r\n throw new Error(\"The parameter 'id' must be defined.\");\r\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\r\n if (threadId === null)\r\n throw new Error(\"The parameter 'threadId' cannot be null.\");\r\n else if (threadId !== undefined)\r\n url_ += \"ThreadId=\" + encodeURIComponent(\"\" + threadId) + \"&\";\r\n if (pageNumber === null)\r\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\r\n else if (pageNumber !== undefined)\r\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\r\n if (pageSize === null)\r\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\r\n else if (pageSize !== undefined)\r\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetPostsByThreadId(_response);\r\n });\r\n }\r\n\r\n protected processGetPostsByThreadId(response: AxiosResponse): Promise<PostPaginatedListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = PostPaginatedListVm.fromJS(resultData200);\r\n return Promise.resolve<PostPaginatedListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<PostPaginatedListVm>(null as any);\r\n }\r\n\r\n getThreadPostsByParameters(viewMode: PostViewMode | undefined, threadId: number | undefined, postId: number | null | undefined, cancelToken?: CancelToken | undefined): Promise<PostPaginatedListVm> {\r\n let url_ = this.baseUrl + \"/api/Threads/showthread?\";\r\n if (viewMode === null)\r\n throw new Error(\"The parameter 'viewMode' cannot be null.\");\r\n else if (viewMode !== undefined)\r\n url_ += \"ViewMode=\" + encodeURIComponent(\"\" + viewMode) + \"&\";\r\n if (threadId === null)\r\n throw new Error(\"The parameter 'threadId' cannot be null.\");\r\n else if (threadId !== undefined)\r\n url_ += \"ThreadId=\" + encodeURIComponent(\"\" + threadId) + \"&\";\r\n if (postId !== undefined && postId !== null)\r\n url_ += \"PostId=\" + encodeURIComponent(\"\" + postId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetThreadPostsByParameters(_response);\r\n });\r\n }\r\n\r\n protected processGetThreadPostsByParameters(response: AxiosResponse): Promise<PostPaginatedListVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = PostPaginatedListVm.fromJS(resultData200);\r\n return Promise.resolve<PostPaginatedListVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<PostPaginatedListVm>(null as any);\r\n }\r\n}\r\n\r\nexport interface IUsersClient {\r\n get(pageNumber: number | undefined, pageSize: number | undefined): Promise<UsersVm>;\r\n searchUsers(userSearchQuery: string | null | undefined): Promise<SearchUsersVm>;\r\n getSummaryForUser(userId: string): Promise<UserSummaryVm>;\r\n getUserProfile(userName: string): Promise<UserProfileVm>;\r\n getBadgeReportForUser(userId: string): Promise<UserBadgeReportVm>;\r\n setRoleForUser(command: SetRolesForUserCommand): Promise<boolean>;\r\n setBanForUser(command: SetBanForUserCommand): Promise<boolean>;\r\n}\r\n\r\nexport class UsersClient extends ApiClientBase implements IUsersClient {\r\n private instance: AxiosInstance;\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, instance?: AxiosInstance) {\r\n\r\n super();\r\n\r\n this.instance = instance ? instance : axios.create();\r\n\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n\r\n }\r\n\r\n get(pageNumber: number | undefined, pageSize: number | undefined, cancelToken?: CancelToken | undefined): Promise<UsersVm> {\r\n let url_ = this.baseUrl + \"/api/Users?\";\r\n if (pageNumber === null)\r\n throw new Error(\"The parameter 'pageNumber' cannot be null.\");\r\n else if (pageNumber !== undefined)\r\n url_ += \"PageNumber=\" + encodeURIComponent(\"\" + pageNumber) + \"&\";\r\n if (pageSize === null)\r\n throw new Error(\"The parameter 'pageSize' cannot be null.\");\r\n else if (pageSize !== undefined)\r\n url_ += \"PageSize=\" + encodeURIComponent(\"\" + pageSize) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: AxiosResponse): Promise<UsersVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = UsersVm.fromJS(resultData200);\r\n return Promise.resolve<UsersVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<UsersVm>(null as any);\r\n }\r\n\r\n searchUsers(userSearchQuery: string | null | undefined, cancelToken?: CancelToken | undefined): Promise<SearchUsersVm> {\r\n let url_ = this.baseUrl + \"/api/Users/search?\";\r\n if (userSearchQuery !== undefined && userSearchQuery !== null)\r\n url_ += \"userSearchQuery=\" + encodeURIComponent(\"\" + userSearchQuery) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processSearchUsers(_response);\r\n });\r\n }\r\n\r\n protected processSearchUsers(response: AxiosResponse): Promise<SearchUsersVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = SearchUsersVm.fromJS(resultData200);\r\n return Promise.resolve<SearchUsersVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<SearchUsersVm>(null as any);\r\n }\r\n\r\n getSummaryForUser(userId: string, cancelToken?: CancelToken | undefined): Promise<UserSummaryVm> {\r\n let url_ = this.baseUrl + \"/api/Users/{userId}/summary\";\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetSummaryForUser(_response);\r\n });\r\n }\r\n\r\n protected processGetSummaryForUser(response: AxiosResponse): Promise<UserSummaryVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = UserSummaryVm.fromJS(resultData200);\r\n return Promise.resolve<UserSummaryVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<UserSummaryVm>(null as any);\r\n }\r\n\r\n getUserProfile(userName: string, cancelToken?: CancelToken | undefined): Promise<UserProfileVm> {\r\n let url_ = this.baseUrl + \"/api/Users/{userName}/profile\";\r\n if (userName === undefined || userName === null)\r\n throw new Error(\"The parameter 'userName' must be defined.\");\r\n url_ = url_.replace(\"{userName}\", encodeURIComponent(\"\" + userName));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetUserProfile(_response);\r\n });\r\n }\r\n\r\n protected processGetUserProfile(response: AxiosResponse): Promise<UserProfileVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = UserProfileVm.fromJS(resultData200);\r\n return Promise.resolve<UserProfileVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<UserProfileVm>(null as any);\r\n }\r\n\r\n getBadgeReportForUser(userId: string, cancelToken?: CancelToken | undefined): Promise<UserBadgeReportVm> {\r\n let url_ = this.baseUrl + \"/api/Users/{userId}/badges\";\r\n if (userId === undefined || userId === null)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n url_ = url_.replace(\"{userId}\", encodeURIComponent(\"\" + userId));\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: AxiosRequestConfig = {\r\n method: \"GET\",\r\n url: url_,\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processGetBadgeReportForUser(_response);\r\n });\r\n }\r\n\r\n protected processGetBadgeReportForUser(response: AxiosResponse): Promise<UserBadgeReportVm> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = UserBadgeReportVm.fromJS(resultData200);\r\n return Promise.resolve<UserBadgeReportVm>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<UserBadgeReportVm>(null as any);\r\n }\r\n\r\n setRoleForUser(command: SetRolesForUserCommand, cancelToken?: CancelToken | undefined): Promise<boolean> {\r\n let url_ = this.baseUrl + \"/api/Users/setroles\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processSetRoleForUser(_response);\r\n });\r\n }\r\n\r\n protected processSetRoleForUser(response: AxiosResponse): Promise<boolean> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<boolean>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<boolean>(null as any);\r\n }\r\n\r\n setBanForUser(command: SetBanForUserCommand, cancelToken?: CancelToken | undefined): Promise<boolean> {\r\n let url_ = this.baseUrl + \"/api/Users/setban\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(command);\r\n\r\n let options_: AxiosRequestConfig = {\r\n data: content_,\r\n method: \"POST\",\r\n url: url_,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n cancelToken\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.instance.request(transformedOptions_);\r\n }).catch((_error: any) => {\r\n if (isAxiosError(_error) && _error.response) {\r\n return _error.response;\r\n } else {\r\n throw _error;\r\n }\r\n }).then((_response: AxiosResponse) => {\r\n return this.processSetBanForUser(_response);\r\n });\r\n }\r\n\r\n protected processSetBanForUser(response: AxiosResponse): Promise<boolean> {\r\n const status = response.status;\r\n let _headers: any = {};\r\n if (response.headers && typeof response.headers === \"object\") {\r\n for (let k in response.headers) {\r\n if (response.headers.hasOwnProperty(k)) {\r\n _headers[k] = response.headers[k];\r\n }\r\n }\r\n }\r\n if (status === 200) {\r\n const _responseText = response.data;\r\n let result200: any = null;\r\n let resultData200 = _responseText;\r\n result200 = resultData200 !== undefined ? resultData200 : <any>null;\r\n \r\n return Promise.resolve<boolean>(result200);\r\n\r\n } else if (status !== 200 && status !== 204) {\r\n const _responseText = response.data;\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n }\r\n return Promise.resolve<boolean>(null as any);\r\n }\r\n}\r\n\r\nexport class AuditLogVm implements IAuditLogVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n auditLogItems?: AuditLogItemsDto[] | undefined;\r\n\r\n constructor(data?: IAuditLogVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n if (Array.isArray(_data[\"auditLogItems\"])) {\r\n this.auditLogItems = [] as any;\r\n for (let item of _data[\"auditLogItems\"])\r\n this.auditLogItems!.push(AuditLogItemsDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): AuditLogVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AuditLogVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n if (Array.isArray(this.auditLogItems)) {\r\n data[\"auditLogItems\"] = [];\r\n for (let item of this.auditLogItems)\r\n data[\"auditLogItems\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAuditLogVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n auditLogItems?: AuditLogItemsDto[] | undefined;\r\n}\r\n\r\nexport class AuditLogItemsDto implements IAuditLogItemsDto {\r\n id?: number;\r\n initiatorId?: string | undefined;\r\n targetId?: string | undefined;\r\n parentResourceId?: number | undefined;\r\n resourceId?: number | undefined;\r\n additionalInfo?: string | undefined;\r\n auditChangeType?: AuditType;\r\n\r\n constructor(data?: IAuditLogItemsDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.initiatorId = _data[\"initiatorId\"];\r\n this.targetId = _data[\"targetId\"];\r\n this.parentResourceId = _data[\"parentResourceId\"];\r\n this.resourceId = _data[\"resourceId\"];\r\n this.additionalInfo = _data[\"additionalInfo\"];\r\n this.auditChangeType = _data[\"auditChangeType\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AuditLogItemsDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AuditLogItemsDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"initiatorId\"] = this.initiatorId;\r\n data[\"targetId\"] = this.targetId;\r\n data[\"parentResourceId\"] = this.parentResourceId;\r\n data[\"resourceId\"] = this.resourceId;\r\n data[\"additionalInfo\"] = this.additionalInfo;\r\n data[\"auditChangeType\"] = this.auditChangeType;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAuditLogItemsDto {\r\n id?: number;\r\n initiatorId?: string | undefined;\r\n targetId?: string | undefined;\r\n parentResourceId?: number | undefined;\r\n resourceId?: number | undefined;\r\n additionalInfo?: string | undefined;\r\n auditChangeType?: AuditType;\r\n}\r\n\r\nexport enum AuditType {\r\n ForumCreated = 1,\r\n ForumDeleted = 2,\r\n ForumUpdated = 3,\r\n ForumHidden = 4,\r\n ForumUnhidden = 5,\r\n ForumLocked = 6,\r\n ForumUnlocked = 7,\r\n ForumModerated = 8,\r\n ForumUnmoderated = 9,\r\n ForumGroupCreated = 10,\r\n ForumGroupDeleted = 11,\r\n ForumGroupUpdated = 12,\r\n ForumThreadCreated = 13,\r\n ForumThreadDeleted = 14,\r\n ForumThreadUpdated = 15,\r\n ForumThreadLocked = 16,\r\n ForumThreadUnlocked = 17,\r\n ForumThreadApproved = 18,\r\n ForumThreadModerated = 19,\r\n ForumThreadUnmoderated = 20,\r\n ForumThreadMoved = 21,\r\n ForumThreadPromoted = 22,\r\n ForumThreadUnpromoted = 23,\r\n ForumThreadSplit = 24,\r\n ForumThreadStickied = 25,\r\n ForumThreadUnstickied = 26,\r\n ForumPostCreated = 27,\r\n ForumPostDeleted = 28,\r\n ForumPostUpdated = 29,\r\n ForumPostApproved = 30,\r\n ForumPostLocked = 31,\r\n ForumPostUnlocked = 32,\r\n DoomCentralEventCreated = 33,\r\n DoomCentralEventDeleted = 34,\r\n DoomCentralEventUpdated = 35,\r\n DoomCentralEventPublish = 36,\r\n DoomCentralEventUnpublish = 37,\r\n DoomCentralEventPromoted = 38,\r\n DoomCentralEventUnpromoted = 39,\r\n BadgeCreated = 40,\r\n BadgeAssigned = 41,\r\n BadgeRevoked = 42,\r\n BadgeDeleted = 43,\r\n BadgeAwarded = 44,\r\n EmoteCreated = 45,\r\n EmoteDeleted = 46,\r\n UserBanned = 47,\r\n UserUnbanned = 48,\r\n UserUpdated = 49,\r\n UserRolesChanged = 50,\r\n NewsPostCreated = 51,\r\n NewsPostDeleted = 52,\r\n NewsPosttUpdated = 53,\r\n NewsPostPublish = 54,\r\n NewsPostUnpublish = 55,\r\n NewsPostPromoted = 56,\r\n NewsPostUnpromoted = 57,\r\n ReactionCreated = 58,\r\n ReactionDeleted = 59,\r\n StreamerCreated = 60,\r\n StreamerDeleted = 61,\r\n ForumPermissionGroupAdded = 62,\r\n ForumPermissionGroupDeleted = 63,\r\n ForumPermissionGroupUpdated = 64,\r\n}\r\n\r\nexport class DeleteBadgeCommand implements IDeleteBadgeCommand {\r\n badgeId?: number;\r\n\r\n constructor(data?: IDeleteBadgeCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.badgeId = _data[\"badgeId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteBadgeCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteBadgeCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"badgeId\"] = this.badgeId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteBadgeCommand {\r\n badgeId?: number;\r\n}\r\n\r\nexport class AwardBadgeCommand implements IAwardBadgeCommand {\r\n badgeId?: number;\r\n badgeOwner?: string | undefined;\r\n\r\n constructor(data?: IAwardBadgeCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.badgeId = _data[\"badgeId\"];\r\n this.badgeOwner = _data[\"badgeOwner\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AwardBadgeCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AwardBadgeCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"badgeId\"] = this.badgeId;\r\n data[\"badgeOwner\"] = this.badgeOwner;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAwardBadgeCommand {\r\n badgeId?: number;\r\n badgeOwner?: string | undefined;\r\n}\r\n\r\nexport class RevokeBadgeCommand implements IRevokeBadgeCommand {\r\n badgeOwnerId?: number;\r\n\r\n constructor(data?: IRevokeBadgeCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.badgeOwnerId = _data[\"badgeOwnerId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): RevokeBadgeCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RevokeBadgeCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"badgeOwnerId\"] = this.badgeOwnerId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IRevokeBadgeCommand {\r\n badgeOwnerId?: number;\r\n}\r\n\r\nexport class SetPreferredBadgeCommand implements ISetPreferredBadgeCommand {\r\n badgeOwnerId?: number;\r\n\r\n constructor(data?: ISetPreferredBadgeCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.badgeOwnerId = _data[\"badgeOwnerId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): SetPreferredBadgeCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new SetPreferredBadgeCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"badgeOwnerId\"] = this.badgeOwnerId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISetPreferredBadgeCommand {\r\n badgeOwnerId?: number;\r\n}\r\n\r\nexport class BadgeListVm implements IBadgeListVm {\r\n badges?: BadgesDto[] | undefined;\r\n\r\n constructor(data?: IBadgeListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"badges\"])) {\r\n this.badges = [] as any;\r\n for (let item of _data[\"badges\"])\r\n this.badges!.push(BadgesDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): BadgeListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new BadgeListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.badges)) {\r\n data[\"badges\"] = [];\r\n for (let item of this.badges)\r\n data[\"badges\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IBadgeListVm {\r\n badges?: BadgesDto[] | undefined;\r\n}\r\n\r\nexport class BadgesDto implements IBadgesDto {\r\n id?: number;\r\n badgeName?: string | undefined;\r\n badgeFileName?: string | undefined;\r\n\r\n constructor(data?: IBadgesDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.badgeName = _data[\"badgeName\"];\r\n this.badgeFileName = _data[\"badgeFileName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): BadgesDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new BadgesDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"badgeName\"] = this.badgeName;\r\n data[\"badgeFileName\"] = this.badgeFileName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IBadgesDto {\r\n id?: number;\r\n badgeName?: string | undefined;\r\n badgeFileName?: string | undefined;\r\n}\r\n\r\nexport class BadgeForIdDto implements IBadgeForIdDto {\r\n id?: number;\r\n badgeName?: string | undefined;\r\n badgeFileName?: string | undefined;\r\n\r\n constructor(data?: IBadgeForIdDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.badgeName = _data[\"badgeName\"];\r\n this.badgeFileName = _data[\"badgeFileName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): BadgeForIdDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new BadgeForIdDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"badgeName\"] = this.badgeName;\r\n data[\"badgeFileName\"] = this.badgeFileName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IBadgeForIdDto {\r\n id?: number;\r\n badgeName?: string | undefined;\r\n badgeFileName?: string | undefined;\r\n}\r\n\r\nexport class CountryListVm implements ICountryListVm {\r\n countries?: Country[] | undefined;\r\n\r\n constructor(data?: ICountryListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"countries\"])) {\r\n this.countries = [] as any;\r\n for (let item of _data[\"countries\"])\r\n this.countries!.push(Country.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): CountryListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CountryListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.countries)) {\r\n data[\"countries\"] = [];\r\n for (let item of this.countries)\r\n data[\"countries\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICountryListVm {\r\n countries?: Country[] | undefined;\r\n}\r\n\r\nexport abstract class ValueObject implements IValueObject {\r\n\r\n constructor(data?: IValueObject) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n }\r\n\r\n static fromJS(data: any): ValueObject {\r\n data = typeof data === 'object' ? data : {};\r\n throw new Error(\"The abstract class 'ValueObject' cannot be instantiated.\");\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IValueObject {\r\n}\r\n\r\nexport class Country extends ValueObject implements ICountry {\r\n countryCode?: string | undefined;\r\n\r\n constructor(data?: ICountry) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.countryCode = _data[\"countryCode\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): Country {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Country();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"countryCode\"] = this.countryCode;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICountry extends IValueObject {\r\n countryCode?: string | undefined;\r\n}\r\n\r\nexport class CreateDoomCentralEventCommand implements ICreateDoomCentralEventCommand {\r\n eventName?: string | undefined;\r\n eventPost?: string | undefined;\r\n eventStartDateTime?: Date;\r\n eventEndDateTime?: Date;\r\n eventRegion?: EventRegion;\r\n eventStreamerId?: number | undefined;\r\n publish?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: ICreateDoomCentralEventCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.eventName = _data[\"eventName\"];\r\n this.eventPost = _data[\"eventPost\"];\r\n this.eventStartDateTime = _data[\"eventStartDateTime\"] ? new Date(_data[\"eventStartDateTime\"].toString()) : <any>undefined;\r\n this.eventEndDateTime = _data[\"eventEndDateTime\"] ? new Date(_data[\"eventEndDateTime\"].toString()) : <any>undefined;\r\n this.eventRegion = _data[\"eventRegion\"];\r\n this.eventStreamerId = _data[\"eventStreamerId\"];\r\n this.publish = _data[\"publish\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateDoomCentralEventCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateDoomCentralEventCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"eventName\"] = this.eventName;\r\n data[\"eventPost\"] = this.eventPost;\r\n data[\"eventStartDateTime\"] = this.eventStartDateTime ? this.eventStartDateTime.toISOString() : <any>undefined;\r\n data[\"eventEndDateTime\"] = this.eventEndDateTime ? this.eventEndDateTime.toISOString() : <any>undefined;\r\n data[\"eventRegion\"] = this.eventRegion;\r\n data[\"eventStreamerId\"] = this.eventStreamerId;\r\n data[\"publish\"] = this.publish;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateDoomCentralEventCommand {\r\n eventName?: string | undefined;\r\n eventPost?: string | undefined;\r\n eventStartDateTime?: Date;\r\n eventEndDateTime?: Date;\r\n eventRegion?: EventRegion;\r\n eventStreamerId?: number | undefined;\r\n publish?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport enum EventRegion {\r\n Global = 1,\r\n Americas = 2,\r\n Europe = 3,\r\n Asia = 4,\r\n Australia = 5,\r\n}\r\n\r\nexport class DeleteDoomCentralEventCommand implements IDeleteDoomCentralEventCommand {\r\n eventId?: number;\r\n\r\n constructor(data?: IDeleteDoomCentralEventCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.eventId = _data[\"eventId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteDoomCentralEventCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteDoomCentralEventCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"eventId\"] = this.eventId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteDoomCentralEventCommand {\r\n eventId?: number;\r\n}\r\n\r\nexport class UpdateDoomCentralEventCommand implements IUpdateDoomCentralEventCommand {\r\n eventId?: number;\r\n eventName?: string | undefined;\r\n eventPost?: string | undefined;\r\n eventStartDateTime?: Date;\r\n eventEndDateTime?: Date;\r\n eventRegion?: EventRegion;\r\n eventStreamerId?: number | undefined;\r\n published?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: IUpdateDoomCentralEventCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.eventId = _data[\"eventId\"];\r\n this.eventName = _data[\"eventName\"];\r\n this.eventPost = _data[\"eventPost\"];\r\n this.eventStartDateTime = _data[\"eventStartDateTime\"] ? new Date(_data[\"eventStartDateTime\"].toString()) : <any>undefined;\r\n this.eventEndDateTime = _data[\"eventEndDateTime\"] ? new Date(_data[\"eventEndDateTime\"].toString()) : <any>undefined;\r\n this.eventRegion = _data[\"eventRegion\"];\r\n this.eventStreamerId = _data[\"eventStreamerId\"];\r\n this.published = _data[\"published\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateDoomCentralEventCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateDoomCentralEventCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"eventId\"] = this.eventId;\r\n data[\"eventName\"] = this.eventName;\r\n data[\"eventPost\"] = this.eventPost;\r\n data[\"eventStartDateTime\"] = this.eventStartDateTime ? this.eventStartDateTime.toISOString() : <any>undefined;\r\n data[\"eventEndDateTime\"] = this.eventEndDateTime ? this.eventEndDateTime.toISOString() : <any>undefined;\r\n data[\"eventRegion\"] = this.eventRegion;\r\n data[\"eventStreamerId\"] = this.eventStreamerId;\r\n data[\"published\"] = this.published;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateDoomCentralEventCommand {\r\n eventId?: number;\r\n eventName?: string | undefined;\r\n eventPost?: string | undefined;\r\n eventStartDateTime?: Date;\r\n eventEndDateTime?: Date;\r\n eventRegion?: EventRegion;\r\n eventStreamerId?: number | undefined;\r\n published?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class RawEventPostVm implements IRawEventPostVm {\r\n eventDetails?: RawEventPostDetailDto | undefined;\r\n\r\n constructor(data?: IRawEventPostVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.eventDetails = _data[\"eventDetails\"] ? RawEventPostDetailDto.fromJS(_data[\"eventDetails\"]) : <any>undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): RawEventPostVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RawEventPostVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"eventDetails\"] = this.eventDetails ? this.eventDetails.toJSON() : <any>undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IRawEventPostVm {\r\n eventDetails?: RawEventPostDetailDto | undefined;\r\n}\r\n\r\nexport class RawEventPostDetailDto implements IRawEventPostDetailDto {\r\n eventId?: number;\r\n title?: string | undefined;\r\n content?: string | undefined;\r\n eventStartDate?: Date;\r\n eventEndDate?: Date;\r\n eventRegion?: EventRegion;\r\n streamerId?: number | undefined;\r\n published?: boolean;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: IRawEventPostDetailDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.eventId = _data[\"eventId\"];\r\n this.title = _data[\"title\"];\r\n this.content = _data[\"content\"];\r\n this.eventStartDate = _data[\"eventStartDate\"] ? new Date(_data[\"eventStartDate\"].toString()) : <any>undefined;\r\n this.eventEndDate = _data[\"eventEndDate\"] ? new Date(_data[\"eventEndDate\"].toString()) : <any>undefined;\r\n this.eventRegion = _data[\"eventRegion\"];\r\n this.streamerId = _data[\"streamerId\"];\r\n this.published = _data[\"published\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): RawEventPostDetailDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RawEventPostDetailDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"eventId\"] = this.eventId;\r\n data[\"title\"] = this.title;\r\n data[\"content\"] = this.content;\r\n data[\"eventStartDate\"] = this.eventStartDate ? this.eventStartDate.toISOString() : <any>undefined;\r\n data[\"eventEndDate\"] = this.eventEndDate ? this.eventEndDate.toISOString() : <any>undefined;\r\n data[\"eventRegion\"] = this.eventRegion;\r\n data[\"streamerId\"] = this.streamerId;\r\n data[\"published\"] = this.published;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IRawEventPostDetailDto {\r\n eventId?: number;\r\n title?: string | undefined;\r\n content?: string | undefined;\r\n eventStartDate?: Date;\r\n eventEndDate?: Date;\r\n eventRegion?: EventRegion;\r\n streamerId?: number | undefined;\r\n published?: boolean;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class EventsPageVm implements IEventsPageVm {\r\n liveEventItems?: EventListVm | undefined;\r\n upcomingEventItems?: EventPaginatedListVm | undefined;\r\n pastEventItems?: EventPaginatedListVm | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: IEventsPageVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.liveEventItems = _data[\"liveEventItems\"] ? EventListVm.fromJS(_data[\"liveEventItems\"]) : <any>undefined;\r\n this.upcomingEventItems = _data[\"upcomingEventItems\"] ? EventPaginatedListVm.fromJS(_data[\"upcomingEventItems\"]) : <any>undefined;\r\n this.pastEventItems = _data[\"pastEventItems\"] ? EventPaginatedListVm.fromJS(_data[\"pastEventItems\"]) : <any>undefined;\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): EventsPageVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EventsPageVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"liveEventItems\"] = this.liveEventItems ? this.liveEventItems.toJSON() : <any>undefined;\r\n data[\"upcomingEventItems\"] = this.upcomingEventItems ? this.upcomingEventItems.toJSON() : <any>undefined;\r\n data[\"pastEventItems\"] = this.pastEventItems ? this.pastEventItems.toJSON() : <any>undefined;\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEventsPageVm {\r\n liveEventItems?: EventListVm | undefined;\r\n upcomingEventItems?: EventPaginatedListVm | undefined;\r\n pastEventItems?: EventPaginatedListVm | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport class EventListVm implements IEventListVm {\r\n eventList?: EventItemDto[] | undefined;\r\n\r\n constructor(data?: IEventListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"eventList\"])) {\r\n this.eventList = [] as any;\r\n for (let item of _data[\"eventList\"])\r\n this.eventList!.push(EventItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): EventListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EventListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.eventList)) {\r\n data[\"eventList\"] = [];\r\n for (let item of this.eventList)\r\n data[\"eventList\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEventListVm {\r\n eventList?: EventItemDto[] | undefined;\r\n}\r\n\r\nexport class EventItemDto implements IEventItemDto {\r\n eventId?: number;\r\n title?: string | undefined;\r\n eventStartDate?: Date;\r\n eventEndDate?: Date;\r\n eventRegion?: EventRegion;\r\n organizerId?: string | undefined;\r\n\r\n constructor(data?: IEventItemDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.eventId = _data[\"eventId\"];\r\n this.title = _data[\"title\"];\r\n this.eventStartDate = _data[\"eventStartDate\"] ? new Date(_data[\"eventStartDate\"].toString()) : <any>undefined;\r\n this.eventEndDate = _data[\"eventEndDate\"] ? new Date(_data[\"eventEndDate\"].toString()) : <any>undefined;\r\n this.eventRegion = _data[\"eventRegion\"];\r\n this.organizerId = _data[\"organizerId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): EventItemDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EventItemDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"eventId\"] = this.eventId;\r\n data[\"title\"] = this.title;\r\n data[\"eventStartDate\"] = this.eventStartDate ? this.eventStartDate.toISOString() : <any>undefined;\r\n data[\"eventEndDate\"] = this.eventEndDate ? this.eventEndDate.toISOString() : <any>undefined;\r\n data[\"eventRegion\"] = this.eventRegion;\r\n data[\"organizerId\"] = this.organizerId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEventItemDto {\r\n eventId?: number;\r\n title?: string | undefined;\r\n eventStartDate?: Date;\r\n eventEndDate?: Date;\r\n eventRegion?: EventRegion;\r\n organizerId?: string | undefined;\r\n}\r\n\r\nexport class EventPaginatedListVm implements IEventPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n eventList?: EventItemDto[] | undefined;\r\n\r\n constructor(data?: IEventPaginatedListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n if (Array.isArray(_data[\"eventList\"])) {\r\n this.eventList = [] as any;\r\n for (let item of _data[\"eventList\"])\r\n this.eventList!.push(EventItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): EventPaginatedListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EventPaginatedListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n if (Array.isArray(this.eventList)) {\r\n data[\"eventList\"] = [];\r\n for (let item of this.eventList)\r\n data[\"eventList\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEventPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n eventList?: EventItemDto[] | undefined;\r\n}\r\n\r\nexport class NewsItemsDto implements INewsItemsDto {\r\n id?: number;\r\n title?: string | undefined;\r\n postAuthor?: string | undefined;\r\n posts?: number;\r\n postDate?: Date;\r\n\r\n constructor(data?: INewsItemsDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n this.postAuthor = _data[\"postAuthor\"];\r\n this.posts = _data[\"posts\"];\r\n this.postDate = _data[\"postDate\"] ? new Date(_data[\"postDate\"].toString()) : <any>undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): NewsItemsDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new NewsItemsDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n data[\"postAuthor\"] = this.postAuthor;\r\n data[\"posts\"] = this.posts;\r\n data[\"postDate\"] = this.postDate ? this.postDate.toISOString() : <any>undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface INewsItemsDto {\r\n id?: number;\r\n title?: string | undefined;\r\n postAuthor?: string | undefined;\r\n posts?: number;\r\n postDate?: Date;\r\n}\r\n\r\nexport class RecentThreadDto implements IRecentThreadDto {\r\n id?: number;\r\n title?: string | undefined;\r\n posts?: number;\r\n isSticky?: boolean;\r\n isHot?: boolean;\r\n isNew?: boolean;\r\n\r\n constructor(data?: IRecentThreadDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n this.posts = _data[\"posts\"];\r\n this.isSticky = _data[\"isSticky\"];\r\n this.isHot = _data[\"isHot\"];\r\n this.isNew = _data[\"isNew\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): RecentThreadDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RecentThreadDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n data[\"posts\"] = this.posts;\r\n data[\"isSticky\"] = this.isSticky;\r\n data[\"isHot\"] = this.isHot;\r\n data[\"isNew\"] = this.isNew;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IRecentThreadDto {\r\n id?: number;\r\n title?: string | undefined;\r\n posts?: number;\r\n isSticky?: boolean;\r\n isHot?: boolean;\r\n isNew?: boolean;\r\n}\r\n\r\nexport class EventVm implements IEventVm {\r\n eventDetails?: EventDetailDto | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: IEventVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.eventDetails = _data[\"eventDetails\"] ? EventDetailDto.fromJS(_data[\"eventDetails\"]) : <any>undefined;\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): EventVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EventVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"eventDetails\"] = this.eventDetails ? this.eventDetails.toJSON() : <any>undefined;\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEventVm {\r\n eventDetails?: EventDetailDto | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport class EventDetailDto implements IEventDetailDto {\r\n eventId?: number;\r\n title?: string | undefined;\r\n eventStartDate?: Date;\r\n eventEndDate?: Date;\r\n eventDuration?: string;\r\n eventPublished?: Date;\r\n eventRegion?: EventRegion;\r\n eventStreamer?: string | undefined;\r\n eventStreamProfilePicName?: string | undefined;\r\n eventOrganizerId?: string | undefined;\r\n eventOrganizerUserName?: string | undefined;\r\n eventOrganizerDisplayName?: string | undefined;\r\n eventPostContent?: string | undefined;\r\n threadId?: number;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n published?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: IEventDetailDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.eventId = _data[\"eventId\"];\r\n this.title = _data[\"title\"];\r\n this.eventStartDate = _data[\"eventStartDate\"] ? new Date(_data[\"eventStartDate\"].toString()) : <any>undefined;\r\n this.eventEndDate = _data[\"eventEndDate\"] ? new Date(_data[\"eventEndDate\"].toString()) : <any>undefined;\r\n this.eventDuration = _data[\"eventDuration\"];\r\n this.eventPublished = _data[\"eventPublished\"] ? new Date(_data[\"eventPublished\"].toString()) : <any>undefined;\r\n this.eventRegion = _data[\"eventRegion\"];\r\n this.eventStreamer = _data[\"eventStreamer\"];\r\n this.eventStreamProfilePicName = _data[\"eventStreamProfilePicName\"];\r\n this.eventOrganizerId = _data[\"eventOrganizerId\"];\r\n this.eventOrganizerUserName = _data[\"eventOrganizerUserName\"];\r\n this.eventOrganizerDisplayName = _data[\"eventOrganizerDisplayName\"];\r\n this.eventPostContent = _data[\"eventPostContent\"];\r\n this.threadId = _data[\"threadId\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.published = _data[\"published\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): EventDetailDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EventDetailDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"eventId\"] = this.eventId;\r\n data[\"title\"] = this.title;\r\n data[\"eventStartDate\"] = this.eventStartDate ? this.eventStartDate.toISOString() : <any>undefined;\r\n data[\"eventEndDate\"] = this.eventEndDate ? this.eventEndDate.toISOString() : <any>undefined;\r\n data[\"eventDuration\"] = this.eventDuration;\r\n data[\"eventPublished\"] = this.eventPublished ? this.eventPublished.toISOString() : <any>undefined;\r\n data[\"eventRegion\"] = this.eventRegion;\r\n data[\"eventStreamer\"] = this.eventStreamer;\r\n data[\"eventStreamProfilePicName\"] = this.eventStreamProfilePicName;\r\n data[\"eventOrganizerId\"] = this.eventOrganizerId;\r\n data[\"eventOrganizerUserName\"] = this.eventOrganizerUserName;\r\n data[\"eventOrganizerDisplayName\"] = this.eventOrganizerDisplayName;\r\n data[\"eventPostContent\"] = this.eventPostContent;\r\n data[\"threadId\"] = this.threadId;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"published\"] = this.published;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEventDetailDto {\r\n eventId?: number;\r\n title?: string | undefined;\r\n eventStartDate?: Date;\r\n eventEndDate?: Date;\r\n eventDuration?: string;\r\n eventPublished?: Date;\r\n eventRegion?: EventRegion;\r\n eventStreamer?: string | undefined;\r\n eventStreamProfilePicName?: string | undefined;\r\n eventOrganizerId?: string | undefined;\r\n eventOrganizerUserName?: string | undefined;\r\n eventOrganizerDisplayName?: string | undefined;\r\n eventPostContent?: string | undefined;\r\n threadId?: number;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n published?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class DeleteEmoteCommand implements IDeleteEmoteCommand {\r\n emoteId?: number;\r\n\r\n constructor(data?: IDeleteEmoteCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.emoteId = _data[\"emoteId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteEmoteCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteEmoteCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"emoteId\"] = this.emoteId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteEmoteCommand {\r\n emoteId?: number;\r\n}\r\n\r\nexport class EmoteListVm implements IEmoteListVm {\r\n emotes?: EmotesDto[] | undefined;\r\n\r\n constructor(data?: IEmoteListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"emotes\"])) {\r\n this.emotes = [] as any;\r\n for (let item of _data[\"emotes\"])\r\n this.emotes!.push(EmotesDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): EmoteListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EmoteListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.emotes)) {\r\n data[\"emotes\"] = [];\r\n for (let item of this.emotes)\r\n data[\"emotes\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEmoteListVm {\r\n emotes?: EmotesDto[] | undefined;\r\n}\r\n\r\nexport class EmotesDto implements IEmotesDto {\r\n id?: number;\r\n emoteName?: string | undefined;\r\n emoteCode?: string | undefined;\r\n emoteFileName?: string | undefined;\r\n\r\n constructor(data?: IEmotesDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.emoteName = _data[\"emoteName\"];\r\n this.emoteCode = _data[\"emoteCode\"];\r\n this.emoteFileName = _data[\"emoteFileName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): EmotesDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new EmotesDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"emoteName\"] = this.emoteName;\r\n data[\"emoteCode\"] = this.emoteCode;\r\n data[\"emoteFileName\"] = this.emoteFileName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IEmotesDto {\r\n id?: number;\r\n emoteName?: string | undefined;\r\n emoteCode?: string | undefined;\r\n emoteFileName?: string | undefined;\r\n}\r\n\r\nexport class CreateForumGroupCommand implements ICreateForumGroupCommand {\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n\r\n constructor(data?: ICreateForumGroupCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.name = _data[\"name\"];\r\n this.description = _data[\"description\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateForumGroupCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateForumGroupCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"description\"] = this.description;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateForumGroupCommand {\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n}\r\n\r\nexport class DeleteForumGroupCommand implements IDeleteForumGroupCommand {\r\n id?: number;\r\n clobber?: boolean;\r\n\r\n constructor(data?: IDeleteForumGroupCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.clobber = _data[\"clobber\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteForumGroupCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteForumGroupCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"clobber\"] = this.clobber;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteForumGroupCommand {\r\n id?: number;\r\n clobber?: boolean;\r\n}\r\n\r\nexport class UpdateForumGroupCommand implements IUpdateForumGroupCommand {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n\r\n constructor(data?: IUpdateForumGroupCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.description = _data[\"description\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateForumGroupCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateForumGroupCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"description\"] = this.description;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateForumGroupCommand {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n}\r\n\r\nexport class ReorderForumGroupsAndForumsCommand implements IReorderForumGroupsAndForumsCommand {\r\n orderArray?: ForumOrderObject[] | undefined;\r\n\r\n constructor(data?: IReorderForumGroupsAndForumsCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"orderArray\"])) {\r\n this.orderArray = [] as any;\r\n for (let item of _data[\"orderArray\"])\r\n this.orderArray!.push(ForumOrderObject.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ReorderForumGroupsAndForumsCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ReorderForumGroupsAndForumsCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.orderArray)) {\r\n data[\"orderArray\"] = [];\r\n for (let item of this.orderArray)\r\n data[\"orderArray\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IReorderForumGroupsAndForumsCommand {\r\n orderArray?: ForumOrderObject[] | undefined;\r\n}\r\n\r\nexport class ForumOrderObject implements IForumOrderObject {\r\n resourceId?: number;\r\n order?: number;\r\n children?: ForumOrderObject[] | undefined;\r\n\r\n constructor(data?: IForumOrderObject) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.resourceId = _data[\"resourceId\"];\r\n this.order = _data[\"order\"];\r\n if (Array.isArray(_data[\"children\"])) {\r\n this.children = [] as any;\r\n for (let item of _data[\"children\"])\r\n this.children!.push(ForumOrderObject.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumOrderObject {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumOrderObject();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"resourceId\"] = this.resourceId;\r\n data[\"order\"] = this.order;\r\n if (Array.isArray(this.children)) {\r\n data[\"children\"] = [];\r\n for (let item of this.children)\r\n data[\"children\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumOrderObject {\r\n resourceId?: number;\r\n order?: number;\r\n children?: ForumOrderObject[] | undefined;\r\n}\r\n\r\nexport class ForumGroupListVm implements IForumGroupListVm {\r\n forumGroups?: ForumGroupsDto[] | undefined;\r\n\r\n constructor(data?: IForumGroupListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"forumGroups\"])) {\r\n this.forumGroups = [] as any;\r\n for (let item of _data[\"forumGroups\"])\r\n this.forumGroups!.push(ForumGroupsDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumGroupListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumGroupListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.forumGroups)) {\r\n data[\"forumGroups\"] = [];\r\n for (let item of this.forumGroups)\r\n data[\"forumGroups\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumGroupListVm {\r\n forumGroups?: ForumGroupsDto[] | undefined;\r\n}\r\n\r\nexport class ForumGroupsDto implements IForumGroupsDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n\r\n constructor(data?: IForumGroupsDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.description = _data[\"description\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumGroupsDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumGroupsDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"description\"] = this.description;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumGroupsDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n}\r\n\r\nexport class CreateForumPermissionGroupCommand implements ICreateForumPermissionGroupCommand {\r\n groupName?: string | undefined;\r\n initialGroupMembers?: string[] | undefined;\r\n initialForumGrants?: ForumGrants[] | undefined;\r\n initialForumGroupGrants?: ForumGroupGrants[] | undefined;\r\n\r\n constructor(data?: ICreateForumPermissionGroupCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.groupName = _data[\"groupName\"];\r\n if (Array.isArray(_data[\"initialGroupMembers\"])) {\r\n this.initialGroupMembers = [] as any;\r\n for (let item of _data[\"initialGroupMembers\"])\r\n this.initialGroupMembers!.push(item);\r\n }\r\n if (Array.isArray(_data[\"initialForumGrants\"])) {\r\n this.initialForumGrants = [] as any;\r\n for (let item of _data[\"initialForumGrants\"])\r\n this.initialForumGrants!.push(ForumGrants.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"initialForumGroupGrants\"])) {\r\n this.initialForumGroupGrants = [] as any;\r\n for (let item of _data[\"initialForumGroupGrants\"])\r\n this.initialForumGroupGrants!.push(ForumGroupGrants.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateForumPermissionGroupCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateForumPermissionGroupCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"groupName\"] = this.groupName;\r\n if (Array.isArray(this.initialGroupMembers)) {\r\n data[\"initialGroupMembers\"] = [];\r\n for (let item of this.initialGroupMembers)\r\n data[\"initialGroupMembers\"].push(item);\r\n }\r\n if (Array.isArray(this.initialForumGrants)) {\r\n data[\"initialForumGrants\"] = [];\r\n for (let item of this.initialForumGrants)\r\n data[\"initialForumGrants\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.initialForumGroupGrants)) {\r\n data[\"initialForumGroupGrants\"] = [];\r\n for (let item of this.initialForumGroupGrants)\r\n data[\"initialForumGroupGrants\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateForumPermissionGroupCommand {\r\n groupName?: string | undefined;\r\n initialGroupMembers?: string[] | undefined;\r\n initialForumGrants?: ForumGrants[] | undefined;\r\n initialForumGroupGrants?: ForumGroupGrants[] | undefined;\r\n}\r\n\r\nexport class ForumGrants implements IForumGrants {\r\n forumId?: number;\r\n permissionLevel?: ForumPermissionLevel;\r\n\r\n constructor(data?: IForumGrants) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.forumId = _data[\"forumId\"];\r\n this.permissionLevel = _data[\"permissionLevel\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumGrants {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumGrants();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"forumId\"] = this.forumId;\r\n data[\"permissionLevel\"] = this.permissionLevel;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumGrants {\r\n forumId?: number;\r\n permissionLevel?: ForumPermissionLevel;\r\n}\r\n\r\nexport enum ForumPermissionLevel {\r\n Reader = 1,\r\n Poster = 2,\r\n Moderator = 3,\r\n}\r\n\r\nexport class ForumGroupGrants implements IForumGroupGrants {\r\n forumGroupId?: number;\r\n permissionLevel?: ForumPermissionLevel;\r\n\r\n constructor(data?: IForumGroupGrants) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.forumGroupId = _data[\"forumGroupId\"];\r\n this.permissionLevel = _data[\"permissionLevel\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumGroupGrants {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumGroupGrants();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"forumGroupId\"] = this.forumGroupId;\r\n data[\"permissionLevel\"] = this.permissionLevel;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumGroupGrants {\r\n forumGroupId?: number;\r\n permissionLevel?: ForumPermissionLevel;\r\n}\r\n\r\nexport class DeleteForumPermissionGroupCommand implements IDeleteForumPermissionGroupCommand {\r\n groupId?: number;\r\n\r\n constructor(data?: IDeleteForumPermissionGroupCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.groupId = _data[\"groupId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteForumPermissionGroupCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteForumPermissionGroupCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"groupId\"] = this.groupId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteForumPermissionGroupCommand {\r\n groupId?: number;\r\n}\r\n\r\nexport class UpdateForumPermissionGroupCommand implements IUpdateForumPermissionGroupCommand {\r\n groupId?: number;\r\n groupName?: string | undefined;\r\n initialGroupMembers?: string[] | undefined;\r\n initialForumGrants?: ForumGrants[] | undefined;\r\n initialForumGroupGrants?: ForumGroupGrants[] | undefined;\r\n\r\n constructor(data?: IUpdateForumPermissionGroupCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.groupId = _data[\"groupId\"];\r\n this.groupName = _data[\"groupName\"];\r\n if (Array.isArray(_data[\"initialGroupMembers\"])) {\r\n this.initialGroupMembers = [] as any;\r\n for (let item of _data[\"initialGroupMembers\"])\r\n this.initialGroupMembers!.push(item);\r\n }\r\n if (Array.isArray(_data[\"initialForumGrants\"])) {\r\n this.initialForumGrants = [] as any;\r\n for (let item of _data[\"initialForumGrants\"])\r\n this.initialForumGrants!.push(ForumGrants.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"initialForumGroupGrants\"])) {\r\n this.initialForumGroupGrants = [] as any;\r\n for (let item of _data[\"initialForumGroupGrants\"])\r\n this.initialForumGroupGrants!.push(ForumGroupGrants.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateForumPermissionGroupCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateForumPermissionGroupCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"groupId\"] = this.groupId;\r\n data[\"groupName\"] = this.groupName;\r\n if (Array.isArray(this.initialGroupMembers)) {\r\n data[\"initialGroupMembers\"] = [];\r\n for (let item of this.initialGroupMembers)\r\n data[\"initialGroupMembers\"].push(item);\r\n }\r\n if (Array.isArray(this.initialForumGrants)) {\r\n data[\"initialForumGrants\"] = [];\r\n for (let item of this.initialForumGrants)\r\n data[\"initialForumGrants\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.initialForumGroupGrants)) {\r\n data[\"initialForumGroupGrants\"] = [];\r\n for (let item of this.initialForumGroupGrants)\r\n data[\"initialForumGroupGrants\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateForumPermissionGroupCommand {\r\n groupId?: number;\r\n groupName?: string | undefined;\r\n initialGroupMembers?: string[] | undefined;\r\n initialForumGrants?: ForumGrants[] | undefined;\r\n initialForumGroupGrants?: ForumGroupGrants[] | undefined;\r\n}\r\n\r\nexport class ForumPermissionGroupListVm implements IForumPermissionGroupListVm {\r\n forumPermissionGroups?: ForumPermissionsGroupsDto[] | undefined;\r\n\r\n constructor(data?: IForumPermissionGroupListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"forumPermissionGroups\"])) {\r\n this.forumPermissionGroups = [] as any;\r\n for (let item of _data[\"forumPermissionGroups\"])\r\n this.forumPermissionGroups!.push(ForumPermissionsGroupsDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumPermissionGroupListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumPermissionGroupListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.forumPermissionGroups)) {\r\n data[\"forumPermissionGroups\"] = [];\r\n for (let item of this.forumPermissionGroups)\r\n data[\"forumPermissionGroups\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumPermissionGroupListVm {\r\n forumPermissionGroups?: ForumPermissionsGroupsDto[] | undefined;\r\n}\r\n\r\nexport class ForumPermissionsGroupsDto implements IForumPermissionsGroupsDto {\r\n id?: number;\r\n groupName?: string | undefined;\r\n\r\n constructor(data?: IForumPermissionsGroupsDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.groupName = _data[\"groupName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumPermissionsGroupsDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumPermissionsGroupsDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"groupName\"] = this.groupName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumPermissionsGroupsDto {\r\n id?: number;\r\n groupName?: string | undefined;\r\n}\r\n\r\nexport class ForumPermissionsGroupVm implements IForumPermissionsGroupVm {\r\n forumPermissionGroupDetails?: ForumPermissionGroupDetailDto | undefined;\r\n permissionGroupUsers?: ForumPermissionGroupUsersDto[] | undefined;\r\n permissionGroupForumClaims?: ForumPermissionGroupForumClaimsDto[] | undefined;\r\n permissionGroupForumGroupClaims?: ForumPermissionGroupForumGroupClaimsDto[] | undefined;\r\n\r\n constructor(data?: IForumPermissionsGroupVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.forumPermissionGroupDetails = _data[\"forumPermissionGroupDetails\"] ? ForumPermissionGroupDetailDto.fromJS(_data[\"forumPermissionGroupDetails\"]) : <any>undefined;\r\n if (Array.isArray(_data[\"permissionGroupUsers\"])) {\r\n this.permissionGroupUsers = [] as any;\r\n for (let item of _data[\"permissionGroupUsers\"])\r\n this.permissionGroupUsers!.push(ForumPermissionGroupUsersDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"permissionGroupForumClaims\"])) {\r\n this.permissionGroupForumClaims = [] as any;\r\n for (let item of _data[\"permissionGroupForumClaims\"])\r\n this.permissionGroupForumClaims!.push(ForumPermissionGroupForumClaimsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"permissionGroupForumGroupClaims\"])) {\r\n this.permissionGroupForumGroupClaims = [] as any;\r\n for (let item of _data[\"permissionGroupForumGroupClaims\"])\r\n this.permissionGroupForumGroupClaims!.push(ForumPermissionGroupForumGroupClaimsDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumPermissionsGroupVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumPermissionsGroupVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"forumPermissionGroupDetails\"] = this.forumPermissionGroupDetails ? this.forumPermissionGroupDetails.toJSON() : <any>undefined;\r\n if (Array.isArray(this.permissionGroupUsers)) {\r\n data[\"permissionGroupUsers\"] = [];\r\n for (let item of this.permissionGroupUsers)\r\n data[\"permissionGroupUsers\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.permissionGroupForumClaims)) {\r\n data[\"permissionGroupForumClaims\"] = [];\r\n for (let item of this.permissionGroupForumClaims)\r\n data[\"permissionGroupForumClaims\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.permissionGroupForumGroupClaims)) {\r\n data[\"permissionGroupForumGroupClaims\"] = [];\r\n for (let item of this.permissionGroupForumGroupClaims)\r\n data[\"permissionGroupForumGroupClaims\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumPermissionsGroupVm {\r\n forumPermissionGroupDetails?: ForumPermissionGroupDetailDto | undefined;\r\n permissionGroupUsers?: ForumPermissionGroupUsersDto[] | undefined;\r\n permissionGroupForumClaims?: ForumPermissionGroupForumClaimsDto[] | undefined;\r\n permissionGroupForumGroupClaims?: ForumPermissionGroupForumGroupClaimsDto[] | undefined;\r\n}\r\n\r\nexport class ForumPermissionGroupDetailDto implements IForumPermissionGroupDetailDto {\r\n id?: number;\r\n groupName?: string | undefined;\r\n\r\n constructor(data?: IForumPermissionGroupDetailDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.groupName = _data[\"groupName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumPermissionGroupDetailDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumPermissionGroupDetailDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"groupName\"] = this.groupName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumPermissionGroupDetailDto {\r\n id?: number;\r\n groupName?: string | undefined;\r\n}\r\n\r\nexport class ForumPermissionGroupUsersDto implements IForumPermissionGroupUsersDto {\r\n applicationUserId?: number;\r\n userName?: string | undefined;\r\n\r\n constructor(data?: IForumPermissionGroupUsersDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.applicationUserId = _data[\"applicationUserId\"];\r\n this.userName = _data[\"userName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumPermissionGroupUsersDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumPermissionGroupUsersDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"applicationUserId\"] = this.applicationUserId;\r\n data[\"userName\"] = this.userName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumPermissionGroupUsersDto {\r\n applicationUserId?: number;\r\n userName?: string | undefined;\r\n}\r\n\r\nexport class ForumPermissionGroupForumClaimsDto implements IForumPermissionGroupForumClaimsDto {\r\n forumId?: number;\r\n forumName?: number;\r\n permissionLevel?: ForumPermissionLevel;\r\n\r\n constructor(data?: IForumPermissionGroupForumClaimsDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.forumId = _data[\"forumId\"];\r\n this.forumName = _data[\"forumName\"];\r\n this.permissionLevel = _data[\"permissionLevel\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumPermissionGroupForumClaimsDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumPermissionGroupForumClaimsDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"forumId\"] = this.forumId;\r\n data[\"forumName\"] = this.forumName;\r\n data[\"permissionLevel\"] = this.permissionLevel;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumPermissionGroupForumClaimsDto {\r\n forumId?: number;\r\n forumName?: number;\r\n permissionLevel?: ForumPermissionLevel;\r\n}\r\n\r\nexport class ForumPermissionGroupForumGroupClaimsDto implements IForumPermissionGroupForumGroupClaimsDto {\r\n forumGroupId?: number;\r\n forumGroupName?: number;\r\n permissionLevel?: ForumPermissionLevel;\r\n\r\n constructor(data?: IForumPermissionGroupForumGroupClaimsDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.forumGroupId = _data[\"forumGroupId\"];\r\n this.forumGroupName = _data[\"forumGroupName\"];\r\n this.permissionLevel = _data[\"permissionLevel\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumPermissionGroupForumGroupClaimsDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumPermissionGroupForumGroupClaimsDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"forumGroupId\"] = this.forumGroupId;\r\n data[\"forumGroupName\"] = this.forumGroupName;\r\n data[\"permissionLevel\"] = this.permissionLevel;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumPermissionGroupForumGroupClaimsDto {\r\n forumGroupId?: number;\r\n forumGroupName?: number;\r\n permissionLevel?: ForumPermissionLevel;\r\n}\r\n\r\nexport class CreateForumCommand implements ICreateForumCommand {\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n forumGroupId?: number;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: ICreateForumCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.name = _data[\"name\"];\r\n this.description = _data[\"description\"];\r\n this.forumGroupId = _data[\"forumGroupId\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateForumCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateForumCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"description\"] = this.description;\r\n data[\"forumGroupId\"] = this.forumGroupId;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateForumCommand {\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n forumGroupId?: number;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class DeleteForumCommand implements IDeleteForumCommand {\r\n id?: number;\r\n\r\n constructor(data?: IDeleteForumCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteForumCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteForumCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteForumCommand {\r\n id?: number;\r\n}\r\n\r\nexport class UpdateForumCommand implements IUpdateForumCommand {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n forumGroupId?: number;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: IUpdateForumCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.description = _data[\"description\"];\r\n this.forumGroupId = _data[\"forumGroupId\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateForumCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateForumCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"description\"] = this.description;\r\n data[\"forumGroupId\"] = this.forumGroupId;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateForumCommand {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n forumGroupId?: number;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class ForumListingVm implements IForumListingVm {\r\n forumGroups?: ForumGroupDto[] | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: IForumListingVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"forumGroups\"])) {\r\n this.forumGroups = [] as any;\r\n for (let item of _data[\"forumGroups\"])\r\n this.forumGroups!.push(ForumGroupDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumListingVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumListingVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.forumGroups)) {\r\n data[\"forumGroups\"] = [];\r\n for (let item of this.forumGroups)\r\n data[\"forumGroups\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumListingVm {\r\n forumGroups?: ForumGroupDto[] | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport class ForumGroupDto implements IForumGroupDto {\r\n groupName?: string | undefined;\r\n groupDescription?: string | undefined;\r\n forums?: ForumDetailDto[] | undefined;\r\n\r\n constructor(data?: IForumGroupDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.groupName = _data[\"groupName\"];\r\n this.groupDescription = _data[\"groupDescription\"];\r\n if (Array.isArray(_data[\"forums\"])) {\r\n this.forums = [] as any;\r\n for (let item of _data[\"forums\"])\r\n this.forums!.push(ForumDetailDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumGroupDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumGroupDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"groupName\"] = this.groupName;\r\n data[\"groupDescription\"] = this.groupDescription;\r\n if (Array.isArray(this.forums)) {\r\n data[\"forums\"] = [];\r\n for (let item of this.forums)\r\n data[\"forums\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumGroupDto {\r\n groupName?: string | undefined;\r\n groupDescription?: string | undefined;\r\n forums?: ForumDetailDto[] | undefined;\r\n}\r\n\r\nexport class ForumDetailDto implements IForumDetailDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n threadCount?: number;\r\n postCount?: number;\r\n lastActive?: LastActiveDto | undefined;\r\n highestPostId?: number;\r\n unread?: boolean;\r\n\r\n constructor(data?: IForumDetailDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.description = _data[\"description\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.threadCount = _data[\"threadCount\"];\r\n this.postCount = _data[\"postCount\"];\r\n this.lastActive = _data[\"lastActive\"] ? LastActiveDto.fromJS(_data[\"lastActive\"]) : <any>undefined;\r\n this.highestPostId = _data[\"highestPostId\"];\r\n this.unread = _data[\"unread\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumDetailDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumDetailDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"description\"] = this.description;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"threadCount\"] = this.threadCount;\r\n data[\"postCount\"] = this.postCount;\r\n data[\"lastActive\"] = this.lastActive ? this.lastActive.toJSON() : <any>undefined;\r\n data[\"highestPostId\"] = this.highestPostId;\r\n data[\"unread\"] = this.unread;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumDetailDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n threadCount?: number;\r\n postCount?: number;\r\n lastActive?: LastActiveDto | undefined;\r\n highestPostId?: number;\r\n unread?: boolean;\r\n}\r\n\r\nexport class LastActiveDto implements ILastActiveDto {\r\n threadId?: number;\r\n postAuthorId?: string | undefined;\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n created?: Date;\r\n\r\n constructor(data?: ILastActiveDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n this.postAuthorId = _data[\"postAuthorId\"];\r\n this.postAuthorUserName = _data[\"postAuthorUserName\"];\r\n this.postAuthorDisplayName = _data[\"postAuthorDisplayName\"];\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): LastActiveDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new LastActiveDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n data[\"postAuthorId\"] = this.postAuthorId;\r\n data[\"postAuthorUserName\"] = this.postAuthorUserName;\r\n data[\"postAuthorDisplayName\"] = this.postAuthorDisplayName;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ILastActiveDto {\r\n threadId?: number;\r\n postAuthorId?: string | undefined;\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n created?: Date;\r\n}\r\n\r\nexport class ForumThreadListingPageVm implements IForumThreadListingPageVm {\r\n forumDetails?: ForumThreadDetailDto | undefined;\r\n threadList?: ForumThreadPaginatedListVm | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: IForumThreadListingPageVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.forumDetails = _data[\"forumDetails\"] ? ForumThreadDetailDto.fromJS(_data[\"forumDetails\"]) : <any>undefined;\r\n this.threadList = _data[\"threadList\"] ? ForumThreadPaginatedListVm.fromJS(_data[\"threadList\"]) : <any>undefined;\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumThreadListingPageVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumThreadListingPageVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"forumDetails\"] = this.forumDetails ? this.forumDetails.toJSON() : <any>undefined;\r\n data[\"threadList\"] = this.threadList ? this.threadList.toJSON() : <any>undefined;\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumThreadListingPageVm {\r\n forumDetails?: ForumThreadDetailDto | undefined;\r\n threadList?: ForumThreadPaginatedListVm | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport class ForumThreadDetailDto implements IForumThreadDetailDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n groupId?: number;\r\n groupName?: string | undefined;\r\n\r\n constructor(data?: IForumThreadDetailDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.description = _data[\"description\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.groupId = _data[\"groupId\"];\r\n this.groupName = _data[\"groupName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumThreadDetailDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumThreadDetailDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"description\"] = this.description;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"groupId\"] = this.groupId;\r\n data[\"groupName\"] = this.groupName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumThreadDetailDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n groupId?: number;\r\n groupName?: string | undefined;\r\n}\r\n\r\nexport class ForumThreadPaginatedListVm implements IForumThreadPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n threadList?: ThreadListItemDto[] | undefined;\r\n\r\n constructor(data?: IForumThreadPaginatedListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n if (Array.isArray(_data[\"threadList\"])) {\r\n this.threadList = [] as any;\r\n for (let item of _data[\"threadList\"])\r\n this.threadList!.push(ThreadListItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumThreadPaginatedListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumThreadPaginatedListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n if (Array.isArray(this.threadList)) {\r\n data[\"threadList\"] = [];\r\n for (let item of this.threadList)\r\n data[\"threadList\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumThreadPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n threadList?: ThreadListItemDto[] | undefined;\r\n}\r\n\r\nexport class ThreadListItemDto implements IThreadListItemDto {\r\n id?: number;\r\n title?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n stickied?: boolean;\r\n approved?: boolean;\r\n hot?: boolean;\r\n threadAuthorUserName?: string | undefined;\r\n threadAuthorDisplayName?: string | undefined;\r\n dcEvent?: DcEventDto | undefined;\r\n dcNews?: DcNewsPostDto | undefined;\r\n dcForum?: DCForumDto | undefined;\r\n forumName?: string | undefined;\r\n lastPost?: LastPostDto | undefined;\r\n postCount?: number;\r\n pages?: number;\r\n created?: Date;\r\n highestPostId?: number;\r\n unread?: boolean;\r\n unreadPosts?: number;\r\n\r\n constructor(data?: IThreadListItemDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.stickied = _data[\"stickied\"];\r\n this.approved = _data[\"approved\"];\r\n this.hot = _data[\"hot\"];\r\n this.threadAuthorUserName = _data[\"threadAuthorUserName\"];\r\n this.threadAuthorDisplayName = _data[\"threadAuthorDisplayName\"];\r\n this.dcEvent = _data[\"dcEvent\"] ? DcEventDto.fromJS(_data[\"dcEvent\"]) : <any>undefined;\r\n this.dcNews = _data[\"dcNews\"] ? DcNewsPostDto.fromJS(_data[\"dcNews\"]) : <any>undefined;\r\n this.dcForum = _data[\"dcForum\"] ? DCForumDto.fromJS(_data[\"dcForum\"]) : <any>undefined;\r\n this.forumName = _data[\"forumName\"];\r\n this.lastPost = _data[\"lastPost\"] ? LastPostDto.fromJS(_data[\"lastPost\"]) : <any>undefined;\r\n this.postCount = _data[\"postCount\"];\r\n this.pages = _data[\"pages\"];\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n this.highestPostId = _data[\"highestPostId\"];\r\n this.unread = _data[\"unread\"];\r\n this.unreadPosts = _data[\"unreadPosts\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ThreadListItemDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ThreadListItemDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"stickied\"] = this.stickied;\r\n data[\"approved\"] = this.approved;\r\n data[\"hot\"] = this.hot;\r\n data[\"threadAuthorUserName\"] = this.threadAuthorUserName;\r\n data[\"threadAuthorDisplayName\"] = this.threadAuthorDisplayName;\r\n data[\"dcEvent\"] = this.dcEvent ? this.dcEvent.toJSON() : <any>undefined;\r\n data[\"dcNews\"] = this.dcNews ? this.dcNews.toJSON() : <any>undefined;\r\n data[\"dcForum\"] = this.dcForum ? this.dcForum.toJSON() : <any>undefined;\r\n data[\"forumName\"] = this.forumName;\r\n data[\"lastPost\"] = this.lastPost ? this.lastPost.toJSON() : <any>undefined;\r\n data[\"postCount\"] = this.postCount;\r\n data[\"pages\"] = this.pages;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n data[\"highestPostId\"] = this.highestPostId;\r\n data[\"unread\"] = this.unread;\r\n data[\"unreadPosts\"] = this.unreadPosts;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IThreadListItemDto {\r\n id?: number;\r\n title?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n stickied?: boolean;\r\n approved?: boolean;\r\n hot?: boolean;\r\n threadAuthorUserName?: string | undefined;\r\n threadAuthorDisplayName?: string | undefined;\r\n dcEvent?: DcEventDto | undefined;\r\n dcNews?: DcNewsPostDto | undefined;\r\n dcForum?: DCForumDto | undefined;\r\n forumName?: string | undefined;\r\n lastPost?: LastPostDto | undefined;\r\n postCount?: number;\r\n pages?: number;\r\n created?: Date;\r\n highestPostId?: number;\r\n unread?: boolean;\r\n unreadPosts?: number;\r\n}\r\n\r\nexport class DcEventDto implements IDcEventDto {\r\n id?: number;\r\n title?: string | undefined;\r\n\r\n constructor(data?: IDcEventDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DcEventDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DcEventDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDcEventDto {\r\n id?: number;\r\n title?: string | undefined;\r\n}\r\n\r\nexport class DcNewsPostDto implements IDcNewsPostDto {\r\n id?: number;\r\n title?: string | undefined;\r\n\r\n constructor(data?: IDcNewsPostDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DcNewsPostDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DcNewsPostDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDcNewsPostDto {\r\n id?: number;\r\n title?: string | undefined;\r\n}\r\n\r\nexport class DCForumDto implements IDCForumDto {\r\n id?: number;\r\n\r\n constructor(data?: IDCForumDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DCForumDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DCForumDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDCForumDto {\r\n id?: number;\r\n}\r\n\r\nexport class LastPostDto implements ILastPostDto {\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n created?: Date;\r\n\r\n constructor(data?: ILastPostDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.postAuthorUserName = _data[\"postAuthorUserName\"];\r\n this.postAuthorDisplayName = _data[\"postAuthorDisplayName\"];\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): LastPostDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new LastPostDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"postAuthorUserName\"] = this.postAuthorUserName;\r\n data[\"postAuthorDisplayName\"] = this.postAuthorDisplayName;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ILastPostDto {\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n created?: Date;\r\n}\r\n\r\nexport class ForumListVm implements IForumListVm {\r\n forums?: ForumDto[] | undefined;\r\n\r\n constructor(data?: IForumListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"forums\"])) {\r\n this.forums = [] as any;\r\n for (let item of _data[\"forums\"])\r\n this.forums!.push(ForumDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.forums)) {\r\n data[\"forums\"] = [];\r\n for (let item of this.forums)\r\n data[\"forums\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumListVm {\r\n forums?: ForumDto[] | undefined;\r\n}\r\n\r\nexport class ForumDto implements IForumDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n forumGroupName?: string | undefined;\r\n forumGroupId?: number;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: IForumDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.description = _data[\"description\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.forumGroupName = _data[\"forumGroupName\"];\r\n this.forumGroupId = _data[\"forumGroupId\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ForumDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ForumDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"description\"] = this.description;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"forumGroupName\"] = this.forumGroupName;\r\n data[\"forumGroupId\"] = this.forumGroupId;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IForumDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n forumGroupName?: string | undefined;\r\n forumGroupId?: number;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class AllForumListingVm implements IAllForumListingVm {\r\n forumGroups?: AllForumGroupDto[] | undefined;\r\n\r\n constructor(data?: IAllForumListingVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"forumGroups\"])) {\r\n this.forumGroups = [] as any;\r\n for (let item of _data[\"forumGroups\"])\r\n this.forumGroups!.push(AllForumGroupDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): AllForumListingVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AllForumListingVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.forumGroups)) {\r\n data[\"forumGroups\"] = [];\r\n for (let item of this.forumGroups)\r\n data[\"forumGroups\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAllForumListingVm {\r\n forumGroups?: AllForumGroupDto[] | undefined;\r\n}\r\n\r\nexport class AllForumGroupDto implements IAllForumGroupDto {\r\n id?: number;\r\n groupName?: string | undefined;\r\n groupDescription?: string | undefined;\r\n order?: number;\r\n forums?: AllForumDetailDto[] | undefined;\r\n\r\n constructor(data?: IAllForumGroupDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.groupName = _data[\"groupName\"];\r\n this.groupDescription = _data[\"groupDescription\"];\r\n this.order = _data[\"order\"];\r\n if (Array.isArray(_data[\"forums\"])) {\r\n this.forums = [] as any;\r\n for (let item of _data[\"forums\"])\r\n this.forums!.push(AllForumDetailDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): AllForumGroupDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AllForumGroupDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"groupName\"] = this.groupName;\r\n data[\"groupDescription\"] = this.groupDescription;\r\n data[\"order\"] = this.order;\r\n if (Array.isArray(this.forums)) {\r\n data[\"forums\"] = [];\r\n for (let item of this.forums)\r\n data[\"forums\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAllForumGroupDto {\r\n id?: number;\r\n groupName?: string | undefined;\r\n groupDescription?: string | undefined;\r\n order?: number;\r\n forums?: AllForumDetailDto[] | undefined;\r\n}\r\n\r\nexport class AllForumDetailDto implements IAllForumDetailDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n order?: number;\r\n\r\n constructor(data?: IAllForumDetailDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.description = _data[\"description\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.order = _data[\"order\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AllForumDetailDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AllForumDetailDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"description\"] = this.description;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"order\"] = this.order;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAllForumDetailDto {\r\n id?: number;\r\n name?: string | undefined;\r\n description?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n order?: number;\r\n}\r\n\r\nexport class UnapprovedThreadPaginatedListVm implements IUnapprovedThreadPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n unapprovedThreadList?: UnapprovedThreadItemDto[] | undefined;\r\n\r\n constructor(data?: IUnapprovedThreadPaginatedListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n if (Array.isArray(_data[\"unapprovedThreadList\"])) {\r\n this.unapprovedThreadList = [] as any;\r\n for (let item of _data[\"unapprovedThreadList\"])\r\n this.unapprovedThreadList!.push(UnapprovedThreadItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): UnapprovedThreadPaginatedListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UnapprovedThreadPaginatedListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n if (Array.isArray(this.unapprovedThreadList)) {\r\n data[\"unapprovedThreadList\"] = [];\r\n for (let item of this.unapprovedThreadList)\r\n data[\"unapprovedThreadList\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUnapprovedThreadPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n unapprovedThreadList?: UnapprovedThreadItemDto[] | undefined;\r\n}\r\n\r\nexport class UnapprovedThreadItemDto implements IUnapprovedThreadItemDto {\r\n id?: number;\r\n forumName?: string | undefined;\r\n threadName?: string | undefined;\r\n postContent?: string | undefined;\r\n threadAuthorId?: string | undefined;\r\n threadAuthorName?: string | undefined;\r\n created?: Date;\r\n\r\n constructor(data?: IUnapprovedThreadItemDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.forumName = _data[\"forumName\"];\r\n this.threadName = _data[\"threadName\"];\r\n this.postContent = _data[\"postContent\"];\r\n this.threadAuthorId = _data[\"threadAuthorId\"];\r\n this.threadAuthorName = _data[\"threadAuthorName\"];\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): UnapprovedThreadItemDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UnapprovedThreadItemDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"forumName\"] = this.forumName;\r\n data[\"threadName\"] = this.threadName;\r\n data[\"postContent\"] = this.postContent;\r\n data[\"threadAuthorId\"] = this.threadAuthorId;\r\n data[\"threadAuthorName\"] = this.threadAuthorName;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUnapprovedThreadItemDto {\r\n id?: number;\r\n forumName?: string | undefined;\r\n threadName?: string | undefined;\r\n postContent?: string | undefined;\r\n threadAuthorId?: string | undefined;\r\n threadAuthorName?: string | undefined;\r\n created?: Date;\r\n}\r\n\r\nexport class HomePageVm implements IHomePageVm {\r\n promotedItems?: PromotedItemDto[] | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n eventItems?: EventItemDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: IHomePageVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"promotedItems\"])) {\r\n this.promotedItems = [] as any;\r\n for (let item of _data[\"promotedItems\"])\r\n this.promotedItems!.push(PromotedItemDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"eventItems\"])) {\r\n this.eventItems = [] as any;\r\n for (let item of _data[\"eventItems\"])\r\n this.eventItems!.push(EventItemDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): HomePageVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new HomePageVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.promotedItems)) {\r\n data[\"promotedItems\"] = [];\r\n for (let item of this.promotedItems)\r\n data[\"promotedItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.eventItems)) {\r\n data[\"eventItems\"] = [];\r\n for (let item of this.eventItems)\r\n data[\"eventItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IHomePageVm {\r\n promotedItems?: PromotedItemDto[] | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n eventItems?: EventItemDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport class PromotedItemDto implements IPromotedItemDto {\r\n resourceId?: number;\r\n promotedTitle?: string | undefined;\r\n promotedBlurb?: string | undefined;\r\n promotedImageUrl?: string | undefined;\r\n created?: Date;\r\n promotedType?: PromotedType;\r\n\r\n constructor(data?: IPromotedItemDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.resourceId = _data[\"resourceId\"];\r\n this.promotedTitle = _data[\"promotedTitle\"];\r\n this.promotedBlurb = _data[\"promotedBlurb\"];\r\n this.promotedImageUrl = _data[\"promotedImageUrl\"];\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n this.promotedType = _data[\"promotedType\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): PromotedItemDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PromotedItemDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"resourceId\"] = this.resourceId;\r\n data[\"promotedTitle\"] = this.promotedTitle;\r\n data[\"promotedBlurb\"] = this.promotedBlurb;\r\n data[\"promotedImageUrl\"] = this.promotedImageUrl;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n data[\"promotedType\"] = this.promotedType;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPromotedItemDto {\r\n resourceId?: number;\r\n promotedTitle?: string | undefined;\r\n promotedBlurb?: string | undefined;\r\n promotedImageUrl?: string | undefined;\r\n created?: Date;\r\n promotedType?: PromotedType;\r\n}\r\n\r\nexport enum PromotedType {\r\n ForumThread = 0,\r\n DoomCentralEvent = 1,\r\n NewsPost = 2,\r\n}\r\n\r\nexport class CreateNewsCommand implements ICreateNewsCommand {\r\n newsTitle?: string | undefined;\r\n newsContent?: string | undefined;\r\n publish?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: ICreateNewsCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.newsTitle = _data[\"newsTitle\"];\r\n this.newsContent = _data[\"newsContent\"];\r\n this.publish = _data[\"publish\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateNewsCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateNewsCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"newsTitle\"] = this.newsTitle;\r\n data[\"newsContent\"] = this.newsContent;\r\n data[\"publish\"] = this.publish;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateNewsCommand {\r\n newsTitle?: string | undefined;\r\n newsContent?: string | undefined;\r\n publish?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class DeleteNewsCommand implements IDeleteNewsCommand {\r\n newsId?: number;\r\n\r\n constructor(data?: IDeleteNewsCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.newsId = _data[\"newsId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteNewsCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteNewsCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"newsId\"] = this.newsId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteNewsCommand {\r\n newsId?: number;\r\n}\r\n\r\nexport class UpdateNewsCommand implements IUpdateNewsCommand {\r\n newsId?: number;\r\n newsTitle?: string | undefined;\r\n newsContent?: string | undefined;\r\n publish?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: IUpdateNewsCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.newsId = _data[\"newsId\"];\r\n this.newsTitle = _data[\"newsTitle\"];\r\n this.newsContent = _data[\"newsContent\"];\r\n this.publish = _data[\"publish\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateNewsCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateNewsCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"newsId\"] = this.newsId;\r\n data[\"newsTitle\"] = this.newsTitle;\r\n data[\"newsContent\"] = this.newsContent;\r\n data[\"publish\"] = this.publish;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateNewsCommand {\r\n newsId?: number;\r\n newsTitle?: string | undefined;\r\n newsContent?: string | undefined;\r\n publish?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class PublishNewsCommand implements IPublishNewsCommand {\r\n newsId?: number;\r\n\r\n constructor(data?: IPublishNewsCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.newsId = _data[\"newsId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): PublishNewsCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PublishNewsCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"newsId\"] = this.newsId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPublishNewsCommand {\r\n newsId?: number;\r\n}\r\n\r\nexport class UnpublishNewsCommand implements IUnpublishNewsCommand {\r\n newsId?: number;\r\n\r\n constructor(data?: IUnpublishNewsCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.newsId = _data[\"newsId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UnpublishNewsCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UnpublishNewsCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"newsId\"] = this.newsId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUnpublishNewsCommand {\r\n newsId?: number;\r\n}\r\n\r\nexport class RawNewsPostVm implements IRawNewsPostVm {\r\n newsDetails?: RawNewsPostDetailDto | undefined;\r\n\r\n constructor(data?: IRawNewsPostVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.newsDetails = _data[\"newsDetails\"] ? RawNewsPostDetailDto.fromJS(_data[\"newsDetails\"]) : <any>undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): RawNewsPostVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RawNewsPostVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"newsDetails\"] = this.newsDetails ? this.newsDetails.toJSON() : <any>undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IRawNewsPostVm {\r\n newsDetails?: RawNewsPostDetailDto | undefined;\r\n}\r\n\r\nexport class RawNewsPostDetailDto implements IRawNewsPostDetailDto {\r\n id?: number;\r\n title?: string | undefined;\r\n content?: string | undefined;\r\n published?: boolean;\r\n newsDate?: Date;\r\n threadId?: number;\r\n newsPublisherId?: string | undefined;\r\n newsPublisherUsername?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: IRawNewsPostDetailDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n this.content = _data[\"content\"];\r\n this.published = _data[\"published\"];\r\n this.newsDate = _data[\"newsDate\"] ? new Date(_data[\"newsDate\"].toString()) : <any>undefined;\r\n this.threadId = _data[\"threadId\"];\r\n this.newsPublisherId = _data[\"newsPublisherId\"];\r\n this.newsPublisherUsername = _data[\"newsPublisherUsername\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): RawNewsPostDetailDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new RawNewsPostDetailDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n data[\"content\"] = this.content;\r\n data[\"published\"] = this.published;\r\n data[\"newsDate\"] = this.newsDate ? this.newsDate.toISOString() : <any>undefined;\r\n data[\"threadId\"] = this.threadId;\r\n data[\"newsPublisherId\"] = this.newsPublisherId;\r\n data[\"newsPublisherUsername\"] = this.newsPublisherUsername;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IRawNewsPostDetailDto {\r\n id?: number;\r\n title?: string | undefined;\r\n content?: string | undefined;\r\n published?: boolean;\r\n newsDate?: Date;\r\n threadId?: number;\r\n newsPublisherId?: string | undefined;\r\n newsPublisherUsername?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class NewsListingPageVm implements INewsListingPageVm {\r\n newsListing?: NewsPaginatedListVm | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: INewsListingPageVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.newsListing = _data[\"newsListing\"] ? NewsPaginatedListVm.fromJS(_data[\"newsListing\"]) : <any>undefined;\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): NewsListingPageVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new NewsListingPageVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"newsListing\"] = this.newsListing ? this.newsListing.toJSON() : <any>undefined;\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface INewsListingPageVm {\r\n newsListing?: NewsPaginatedListVm | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport class NewsPaginatedListVm implements INewsPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n newsList?: NewsListingItemDto[] | undefined;\r\n\r\n constructor(data?: INewsPaginatedListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n if (Array.isArray(_data[\"newsList\"])) {\r\n this.newsList = [] as any;\r\n for (let item of _data[\"newsList\"])\r\n this.newsList!.push(NewsListingItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): NewsPaginatedListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new NewsPaginatedListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n if (Array.isArray(this.newsList)) {\r\n data[\"newsList\"] = [];\r\n for (let item of this.newsList)\r\n data[\"newsList\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface INewsPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n newsList?: NewsListingItemDto[] | undefined;\r\n}\r\n\r\nexport class NewsListingItemDto implements INewsListingItemDto {\r\n id?: number;\r\n title?: string | undefined;\r\n publishDate?: Date;\r\n newsPublisherId?: string | undefined;\r\n newsPublisherUserName?: string | undefined;\r\n newsPublisherDisplayName?: string | undefined;\r\n\r\n constructor(data?: INewsListingItemDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n this.publishDate = _data[\"publishDate\"] ? new Date(_data[\"publishDate\"].toString()) : <any>undefined;\r\n this.newsPublisherId = _data[\"newsPublisherId\"];\r\n this.newsPublisherUserName = _data[\"newsPublisherUserName\"];\r\n this.newsPublisherDisplayName = _data[\"newsPublisherDisplayName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): NewsListingItemDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new NewsListingItemDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n data[\"publishDate\"] = this.publishDate ? this.publishDate.toISOString() : <any>undefined;\r\n data[\"newsPublisherId\"] = this.newsPublisherId;\r\n data[\"newsPublisherUserName\"] = this.newsPublisherUserName;\r\n data[\"newsPublisherDisplayName\"] = this.newsPublisherDisplayName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface INewsListingItemDto {\r\n id?: number;\r\n title?: string | undefined;\r\n publishDate?: Date;\r\n newsPublisherId?: string | undefined;\r\n newsPublisherUserName?: string | undefined;\r\n newsPublisherDisplayName?: string | undefined;\r\n}\r\n\r\nexport class NewsPostVm implements INewsPostVm {\r\n newsDetails?: NewsPostDetailDto | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: INewsPostVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.newsDetails = _data[\"newsDetails\"] ? NewsPostDetailDto.fromJS(_data[\"newsDetails\"]) : <any>undefined;\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): NewsPostVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new NewsPostVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"newsDetails\"] = this.newsDetails ? this.newsDetails.toJSON() : <any>undefined;\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface INewsPostVm {\r\n newsDetails?: NewsPostDetailDto | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport class NewsPostDetailDto implements INewsPostDetailDto {\r\n id?: number;\r\n title?: string | undefined;\r\n content?: string | undefined;\r\n newsDate?: Date;\r\n threadId?: number;\r\n newsPublisherId?: string | undefined;\r\n newsPublisherUsername?: string | undefined;\r\n newsPublisherDisplayName?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n published?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: INewsPostDetailDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n this.content = _data[\"content\"];\r\n this.newsDate = _data[\"newsDate\"] ? new Date(_data[\"newsDate\"].toString()) : <any>undefined;\r\n this.threadId = _data[\"threadId\"];\r\n this.newsPublisherId = _data[\"newsPublisherId\"];\r\n this.newsPublisherUsername = _data[\"newsPublisherUsername\"];\r\n this.newsPublisherDisplayName = _data[\"newsPublisherDisplayName\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.published = _data[\"published\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): NewsPostDetailDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new NewsPostDetailDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n data[\"content\"] = this.content;\r\n data[\"newsDate\"] = this.newsDate ? this.newsDate.toISOString() : <any>undefined;\r\n data[\"threadId\"] = this.threadId;\r\n data[\"newsPublisherId\"] = this.newsPublisherId;\r\n data[\"newsPublisherUsername\"] = this.newsPublisherUsername;\r\n data[\"newsPublisherDisplayName\"] = this.newsPublisherDisplayName;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"published\"] = this.published;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface INewsPostDetailDto {\r\n id?: number;\r\n title?: string | undefined;\r\n content?: string | undefined;\r\n newsDate?: Date;\r\n threadId?: number;\r\n newsPublisherId?: string | undefined;\r\n newsPublisherUsername?: string | undefined;\r\n newsPublisherDisplayName?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n published?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class NotificationVm implements INotificationVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n newNotifications?: boolean;\r\n postNotifications?: PostNotificationDto[] | undefined;\r\n\r\n constructor(data?: INotificationVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n this.newNotifications = _data[\"newNotifications\"];\r\n if (Array.isArray(_data[\"postNotifications\"])) {\r\n this.postNotifications = [] as any;\r\n for (let item of _data[\"postNotifications\"])\r\n this.postNotifications!.push(PostNotificationDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): NotificationVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new NotificationVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n data[\"newNotifications\"] = this.newNotifications;\r\n if (Array.isArray(this.postNotifications)) {\r\n data[\"postNotifications\"] = [];\r\n for (let item of this.postNotifications)\r\n data[\"postNotifications\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface INotificationVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n newNotifications?: boolean;\r\n postNotifications?: PostNotificationDto[] | undefined;\r\n}\r\n\r\nexport class PostNotificationDto implements IPostNotificationDto {\r\n id?: number;\r\n notifierName?: string | undefined;\r\n type?: PostNotificationType;\r\n postId?: number;\r\n threadId?: number;\r\n threadName?: string | undefined;\r\n acknowledged?: boolean;\r\n created?: Date;\r\n\r\n constructor(data?: IPostNotificationDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.notifierName = _data[\"notifierName\"];\r\n this.type = _data[\"type\"];\r\n this.postId = _data[\"postId\"];\r\n this.threadId = _data[\"threadId\"];\r\n this.threadName = _data[\"threadName\"];\r\n this.acknowledged = _data[\"acknowledged\"];\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): PostNotificationDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PostNotificationDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"notifierName\"] = this.notifierName;\r\n data[\"type\"] = this.type;\r\n data[\"postId\"] = this.postId;\r\n data[\"threadId\"] = this.threadId;\r\n data[\"threadName\"] = this.threadName;\r\n data[\"acknowledged\"] = this.acknowledged;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPostNotificationDto {\r\n id?: number;\r\n notifierName?: string | undefined;\r\n type?: PostNotificationType;\r\n postId?: number;\r\n threadId?: number;\r\n threadName?: string | undefined;\r\n acknowledged?: boolean;\r\n created?: Date;\r\n}\r\n\r\nexport enum PostNotificationType {\r\n SubscribedThreadReply = 0,\r\n MentionOrQuoted = 1,\r\n}\r\n\r\nexport class AckNotificationCommand implements IAckNotificationCommand {\r\n notificationId?: number;\r\n\r\n constructor(data?: IAckNotificationCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.notificationId = _data[\"notificationId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): AckNotificationCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AckNotificationCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"notificationId\"] = this.notificationId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAckNotificationCommand {\r\n notificationId?: number;\r\n}\r\n\r\nexport class DeleteNotificationCommand implements IDeleteNotificationCommand {\r\n notificationId?: number;\r\n\r\n constructor(data?: IDeleteNotificationCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.notificationId = _data[\"notificationId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteNotificationCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteNotificationCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"notificationId\"] = this.notificationId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteNotificationCommand {\r\n notificationId?: number;\r\n}\r\n\r\nexport class DeleteThreadPostFileCommand implements IDeleteThreadPostFileCommand {\r\n postFileId?: number;\r\n\r\n constructor(data?: IDeleteThreadPostFileCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.postFileId = _data[\"postFileId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteThreadPostFileCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteThreadPostFileCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"postFileId\"] = this.postFileId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteThreadPostFileCommand {\r\n postFileId?: number;\r\n}\r\n\r\nexport class PromotedItemsVm implements IPromotedItemsVm {\r\n promotedItems?: PromotedItemDto[] | undefined;\r\n\r\n constructor(data?: IPromotedItemsVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"promotedItems\"])) {\r\n this.promotedItems = [] as any;\r\n for (let item of _data[\"promotedItems\"])\r\n this.promotedItems!.push(PromotedItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): PromotedItemsVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PromotedItemsVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.promotedItems)) {\r\n data[\"promotedItems\"] = [];\r\n for (let item of this.promotedItems)\r\n data[\"promotedItems\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPromotedItemsVm {\r\n promotedItems?: PromotedItemDto[] | undefined;\r\n}\r\n\r\nexport class PromotableResourceVm implements IPromotableResourceVm {\r\n promotableItems?: PromotableItemDto[] | undefined;\r\n\r\n constructor(data?: IPromotableResourceVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"promotableItems\"])) {\r\n this.promotableItems = [] as any;\r\n for (let item of _data[\"promotableItems\"])\r\n this.promotableItems!.push(PromotableItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): PromotableResourceVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PromotableResourceVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.promotableItems)) {\r\n data[\"promotableItems\"] = [];\r\n for (let item of this.promotableItems)\r\n data[\"promotableItems\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPromotableResourceVm {\r\n promotableItems?: PromotableItemDto[] | undefined;\r\n}\r\n\r\nexport class PromotableItemDto implements IPromotableItemDto {\r\n resourceId?: number;\r\n title?: string | undefined;\r\n sampleContent?: string | undefined;\r\n promotedType?: PromotedType;\r\n\r\n constructor(data?: IPromotableItemDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.resourceId = _data[\"resourceId\"];\r\n this.title = _data[\"title\"];\r\n this.sampleContent = _data[\"sampleContent\"];\r\n this.promotedType = _data[\"promotedType\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): PromotableItemDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PromotableItemDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"resourceId\"] = this.resourceId;\r\n data[\"title\"] = this.title;\r\n data[\"sampleContent\"] = this.sampleContent;\r\n data[\"promotedType\"] = this.promotedType;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPromotableItemDto {\r\n resourceId?: number;\r\n title?: string | undefined;\r\n sampleContent?: string | undefined;\r\n promotedType?: PromotedType;\r\n}\r\n\r\nexport class SetPromotedItemsCommand implements ISetPromotedItemsCommand {\r\n newPromotedItems?: PromotedItemDto[] | undefined;\r\n\r\n constructor(data?: ISetPromotedItemsCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"newPromotedItems\"])) {\r\n this.newPromotedItems = [] as any;\r\n for (let item of _data[\"newPromotedItems\"])\r\n this.newPromotedItems!.push(PromotedItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): SetPromotedItemsCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new SetPromotedItemsCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.newPromotedItems)) {\r\n data[\"newPromotedItems\"] = [];\r\n for (let item of this.newPromotedItems)\r\n data[\"newPromotedItems\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISetPromotedItemsCommand {\r\n newPromotedItems?: PromotedItemDto[] | undefined;\r\n}\r\n\r\nexport class DeleteReactionCommand implements IDeleteReactionCommand {\r\n reactionId?: number;\r\n\r\n constructor(data?: IDeleteReactionCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.reactionId = _data[\"reactionId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteReactionCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteReactionCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"reactionId\"] = this.reactionId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteReactionCommand {\r\n reactionId?: number;\r\n}\r\n\r\nexport class ReactionsListVm implements IReactionsListVm {\r\n reactions?: ReactionsDto[] | undefined;\r\n\r\n constructor(data?: IReactionsListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"reactions\"])) {\r\n this.reactions = [] as any;\r\n for (let item of _data[\"reactions\"])\r\n this.reactions!.push(ReactionsDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ReactionsListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ReactionsListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.reactions)) {\r\n data[\"reactions\"] = [];\r\n for (let item of this.reactions)\r\n data[\"reactions\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IReactionsListVm {\r\n reactions?: ReactionsDto[] | undefined;\r\n}\r\n\r\nexport class ReactionsDto implements IReactionsDto {\r\n id?: number;\r\n reactFileName?: string | undefined;\r\n reactName?: string | undefined;\r\n\r\n constructor(data?: IReactionsDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.reactFileName = _data[\"reactFileName\"];\r\n this.reactName = _data[\"reactName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ReactionsDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ReactionsDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"reactFileName\"] = this.reactFileName;\r\n data[\"reactName\"] = this.reactName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IReactionsDto {\r\n id?: number;\r\n reactFileName?: string | undefined;\r\n reactName?: string | undefined;\r\n}\r\n\r\nexport class SidebarVm implements ISidebarVm {\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: ISidebarVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): SidebarVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new SidebarVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISidebarVm {\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport enum StreamPlatform {\r\n Twitch = 0,\r\n YouTube = 1,\r\n}\r\n\r\nexport class DeleteStreamerCommand implements IDeleteStreamerCommand {\r\n streamId?: number;\r\n\r\n constructor(data?: IDeleteStreamerCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.streamId = _data[\"streamId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteStreamerCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteStreamerCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"streamId\"] = this.streamId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteStreamerCommand {\r\n streamId?: number;\r\n}\r\n\r\nexport class StreamListVm implements IStreamListVm {\r\n streamers?: StreamerDto[] | undefined;\r\n\r\n constructor(data?: IStreamListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"streamers\"])) {\r\n this.streamers = [] as any;\r\n for (let item of _data[\"streamers\"])\r\n this.streamers!.push(StreamerDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): StreamListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new StreamListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.streamers)) {\r\n data[\"streamers\"] = [];\r\n for (let item of this.streamers)\r\n data[\"streamers\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IStreamListVm {\r\n streamers?: StreamerDto[] | undefined;\r\n}\r\n\r\nexport class StreamerDto implements IStreamerDto {\r\n id?: number;\r\n channelId?: string | undefined;\r\n channelName?: string | undefined;\r\n profilePictureName?: string | undefined;\r\n streamerNationality?: Country | undefined;\r\n streamPlatform?: StreamPlatform;\r\n\r\n constructor(data?: IStreamerDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.channelId = _data[\"channelId\"];\r\n this.channelName = _data[\"channelName\"];\r\n this.profilePictureName = _data[\"profilePictureName\"];\r\n this.streamerNationality = _data[\"streamerNationality\"] ? Country.fromJS(_data[\"streamerNationality\"]) : <any>undefined;\r\n this.streamPlatform = _data[\"streamPlatform\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): StreamerDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new StreamerDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"channelId\"] = this.channelId;\r\n data[\"channelName\"] = this.channelName;\r\n data[\"profilePictureName\"] = this.profilePictureName;\r\n data[\"streamerNationality\"] = this.streamerNationality ? this.streamerNationality.toJSON() : <any>undefined;\r\n data[\"streamPlatform\"] = this.streamPlatform;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IStreamerDto {\r\n id?: number;\r\n channelId?: string | undefined;\r\n channelName?: string | undefined;\r\n profilePictureName?: string | undefined;\r\n streamerNationality?: Country | undefined;\r\n streamPlatform?: StreamPlatform;\r\n}\r\n\r\nexport class UserSubscriptionVm implements IUserSubscriptionVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n subscriptions?: ThreadSubscriptionDto[] | undefined;\r\n\r\n constructor(data?: IUserSubscriptionVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n if (Array.isArray(_data[\"subscriptions\"])) {\r\n this.subscriptions = [] as any;\r\n for (let item of _data[\"subscriptions\"])\r\n this.subscriptions!.push(ThreadSubscriptionDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserSubscriptionVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserSubscriptionVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n if (Array.isArray(this.subscriptions)) {\r\n data[\"subscriptions\"] = [];\r\n for (let item of this.subscriptions)\r\n data[\"subscriptions\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUserSubscriptionVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n subscriptions?: ThreadSubscriptionDto[] | undefined;\r\n}\r\n\r\nexport class ThreadSubscriptionDto implements IThreadSubscriptionDto {\r\n id?: number;\r\n threadId?: number;\r\n threadName?: string | undefined;\r\n authorName?: string | undefined;\r\n created?: Date;\r\n lastUpdate?: Date;\r\n\r\n constructor(data?: IThreadSubscriptionDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.threadId = _data[\"threadId\"];\r\n this.threadName = _data[\"threadName\"];\r\n this.authorName = _data[\"authorName\"];\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n this.lastUpdate = _data[\"lastUpdate\"] ? new Date(_data[\"lastUpdate\"].toString()) : <any>undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): ThreadSubscriptionDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ThreadSubscriptionDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"threadId\"] = this.threadId;\r\n data[\"threadName\"] = this.threadName;\r\n data[\"authorName\"] = this.authorName;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n data[\"lastUpdate\"] = this.lastUpdate ? this.lastUpdate.toISOString() : <any>undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IThreadSubscriptionDto {\r\n id?: number;\r\n threadId?: number;\r\n threadName?: string | undefined;\r\n authorName?: string | undefined;\r\n created?: Date;\r\n lastUpdate?: Date;\r\n}\r\n\r\nexport class DeleteSubscriptionCommand implements IDeleteSubscriptionCommand {\r\n subscriptionId?: number;\r\n\r\n constructor(data?: IDeleteSubscriptionCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.subscriptionId = _data[\"subscriptionId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteSubscriptionCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteSubscriptionCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"subscriptionId\"] = this.subscriptionId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteSubscriptionCommand {\r\n subscriptionId?: number;\r\n}\r\n\r\nexport class PostFileUploadItem implements IPostFileUploadItem {\r\n description?: string | undefined;\r\n fileName?: string | undefined;\r\n\r\n constructor(data?: IPostFileUploadItem) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.description = _data[\"description\"];\r\n this.fileName = _data[\"fileName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): PostFileUploadItem {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PostFileUploadItem();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"description\"] = this.description;\r\n data[\"fileName\"] = this.fileName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPostFileUploadItem {\r\n description?: string | undefined;\r\n fileName?: string | undefined;\r\n}\r\n\r\nexport class DeleteThreadPostCommand implements IDeleteThreadPostCommand {\r\n postId?: number;\r\n\r\n constructor(data?: IDeleteThreadPostCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.postId = _data[\"postId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteThreadPostCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteThreadPostCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"postId\"] = this.postId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteThreadPostCommand {\r\n postId?: number;\r\n}\r\n\r\nexport class UpdateThreadPostCommand implements IUpdateThreadPostCommand {\r\n postId?: number;\r\n post?: string | undefined;\r\n editReason?: string | undefined;\r\n quotedPostId?: number | undefined;\r\n\r\n constructor(data?: IUpdateThreadPostCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.postId = _data[\"postId\"];\r\n this.post = _data[\"post\"];\r\n this.editReason = _data[\"editReason\"];\r\n this.quotedPostId = _data[\"quotedPostId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateThreadPostCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateThreadPostCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"postId\"] = this.postId;\r\n data[\"post\"] = this.post;\r\n data[\"editReason\"] = this.editReason;\r\n data[\"quotedPostId\"] = this.quotedPostId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateThreadPostCommand {\r\n postId?: number;\r\n post?: string | undefined;\r\n editReason?: string | undefined;\r\n quotedPostId?: number | undefined;\r\n}\r\n\r\nexport class ApproveThreadPostCommand implements IApproveThreadPostCommand {\r\n postId?: number;\r\n\r\n constructor(data?: IApproveThreadPostCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.postId = _data[\"postId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ApproveThreadPostCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ApproveThreadPostCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"postId\"] = this.postId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IApproveThreadPostCommand {\r\n postId?: number;\r\n}\r\n\r\nexport class LockThreadPostCommand implements ILockThreadPostCommand {\r\n postId?: number;\r\n\r\n constructor(data?: ILockThreadPostCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.postId = _data[\"postId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): LockThreadPostCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new LockThreadPostCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"postId\"] = this.postId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ILockThreadPostCommand {\r\n postId?: number;\r\n}\r\n\r\nexport class UnlockThreadPostCommand implements IUnlockThreadPostCommand {\r\n postId?: number;\r\n\r\n constructor(data?: IUnlockThreadPostCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.postId = _data[\"postId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UnlockThreadPostCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UnlockThreadPostCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"postId\"] = this.postId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUnlockThreadPostCommand {\r\n postId?: number;\r\n}\r\n\r\nexport class IndividualPostVm implements IIndividualPostVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n pageSize?: number;\r\n post?: IndividualPostItemDto | undefined;\r\n\r\n constructor(data?: IIndividualPostVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n this.pageSize = _data[\"pageSize\"];\r\n this.post = _data[\"post\"] ? IndividualPostItemDto.fromJS(_data[\"post\"]) : <any>undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): IndividualPostVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new IndividualPostVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n data[\"pageSize\"] = this.pageSize;\r\n data[\"post\"] = this.post ? this.post.toJSON() : <any>undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IIndividualPostVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n pageSize?: number;\r\n post?: IndividualPostItemDto | undefined;\r\n}\r\n\r\nexport class IndividualPostItemDto implements IIndividualPostItemDto {\r\n id?: number;\r\n threadId?: number;\r\n postContent?: string | undefined;\r\n embedlessPost?: string | undefined;\r\n editReason?: string | undefined;\r\n threadName?: string | undefined;\r\n editIteration?: number;\r\n postNumber?: number;\r\n quotedPostId?: number | undefined;\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n locked?: boolean;\r\n approved?: boolean;\r\n dcEvent?: DcEventDto | undefined;\r\n dcNews?: DcNewsPostDto | undefined;\r\n dcForum?: DCForumDto | undefined;\r\n created?: Date;\r\n postAuthorBadgeUrl?: string | undefined;\r\n postAuthorBadgeName?: string | undefined;\r\n\r\n constructor(data?: IIndividualPostItemDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.threadId = _data[\"threadId\"];\r\n this.postContent = _data[\"postContent\"];\r\n this.embedlessPost = _data[\"embedlessPost\"];\r\n this.editReason = _data[\"editReason\"];\r\n this.threadName = _data[\"threadName\"];\r\n this.editIteration = _data[\"editIteration\"];\r\n this.postNumber = _data[\"postNumber\"];\r\n this.quotedPostId = _data[\"quotedPostId\"];\r\n this.postAuthorUserName = _data[\"postAuthorUserName\"];\r\n this.postAuthorDisplayName = _data[\"postAuthorDisplayName\"];\r\n this.locked = _data[\"locked\"];\r\n this.approved = _data[\"approved\"];\r\n this.dcEvent = _data[\"dcEvent\"] ? DcEventDto.fromJS(_data[\"dcEvent\"]) : <any>undefined;\r\n this.dcNews = _data[\"dcNews\"] ? DcNewsPostDto.fromJS(_data[\"dcNews\"]) : <any>undefined;\r\n this.dcForum = _data[\"dcForum\"] ? DCForumDto.fromJS(_data[\"dcForum\"]) : <any>undefined;\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n this.postAuthorBadgeUrl = _data[\"postAuthorBadgeUrl\"];\r\n this.postAuthorBadgeName = _data[\"postAuthorBadgeName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): IndividualPostItemDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new IndividualPostItemDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"threadId\"] = this.threadId;\r\n data[\"postContent\"] = this.postContent;\r\n data[\"embedlessPost\"] = this.embedlessPost;\r\n data[\"editReason\"] = this.editReason;\r\n data[\"threadName\"] = this.threadName;\r\n data[\"editIteration\"] = this.editIteration;\r\n data[\"postNumber\"] = this.postNumber;\r\n data[\"quotedPostId\"] = this.quotedPostId;\r\n data[\"postAuthorUserName\"] = this.postAuthorUserName;\r\n data[\"postAuthorDisplayName\"] = this.postAuthorDisplayName;\r\n data[\"locked\"] = this.locked;\r\n data[\"approved\"] = this.approved;\r\n data[\"dcEvent\"] = this.dcEvent ? this.dcEvent.toJSON() : <any>undefined;\r\n data[\"dcNews\"] = this.dcNews ? this.dcNews.toJSON() : <any>undefined;\r\n data[\"dcForum\"] = this.dcForum ? this.dcForum.toJSON() : <any>undefined;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n data[\"postAuthorBadgeUrl\"] = this.postAuthorBadgeUrl;\r\n data[\"postAuthorBadgeName\"] = this.postAuthorBadgeName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IIndividualPostItemDto {\r\n id?: number;\r\n threadId?: number;\r\n postContent?: string | undefined;\r\n embedlessPost?: string | undefined;\r\n editReason?: string | undefined;\r\n threadName?: string | undefined;\r\n editIteration?: number;\r\n postNumber?: number;\r\n quotedPostId?: number | undefined;\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n locked?: boolean;\r\n approved?: boolean;\r\n dcEvent?: DcEventDto | undefined;\r\n dcNews?: DcNewsPostDto | undefined;\r\n dcForum?: DCForumDto | undefined;\r\n created?: Date;\r\n postAuthorBadgeUrl?: string | undefined;\r\n postAuthorBadgeName?: string | undefined;\r\n}\r\n\r\nexport class CreateForumThreadCommand implements ICreateForumThreadCommand {\r\n title?: string | undefined;\r\n forumId?: number;\r\n originalPost?: string | undefined;\r\n postFiles?: string[] | undefined;\r\n postFileDescriptions?: PostFileUploadItem[] | undefined;\r\n\r\n constructor(data?: ICreateForumThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.title = _data[\"title\"];\r\n this.forumId = _data[\"forumId\"];\r\n this.originalPost = _data[\"originalPost\"];\r\n if (Array.isArray(_data[\"postFiles\"])) {\r\n this.postFiles = [] as any;\r\n for (let item of _data[\"postFiles\"])\r\n this.postFiles!.push(item);\r\n }\r\n if (Array.isArray(_data[\"postFileDescriptions\"])) {\r\n this.postFileDescriptions = [] as any;\r\n for (let item of _data[\"postFileDescriptions\"])\r\n this.postFileDescriptions!.push(PostFileUploadItem.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): CreateForumThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CreateForumThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"title\"] = this.title;\r\n data[\"forumId\"] = this.forumId;\r\n data[\"originalPost\"] = this.originalPost;\r\n if (Array.isArray(this.postFiles)) {\r\n data[\"postFiles\"] = [];\r\n for (let item of this.postFiles)\r\n data[\"postFiles\"].push(item);\r\n }\r\n if (Array.isArray(this.postFileDescriptions)) {\r\n data[\"postFileDescriptions\"] = [];\r\n for (let item of this.postFileDescriptions)\r\n data[\"postFileDescriptions\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICreateForumThreadCommand {\r\n title?: string | undefined;\r\n forumId?: number;\r\n originalPost?: string | undefined;\r\n postFiles?: string[] | undefined;\r\n postFileDescriptions?: PostFileUploadItem[] | undefined;\r\n}\r\n\r\nexport class DeleteForumThreadCommand implements IDeleteForumThreadCommand {\r\n threadId?: number;\r\n\r\n constructor(data?: IDeleteForumThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DeleteForumThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DeleteForumThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDeleteForumThreadCommand {\r\n threadId?: number;\r\n}\r\n\r\nexport class UpdateThreadCommand implements IUpdateThreadCommand {\r\n title?: string | undefined;\r\n threadId?: number;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n stickied?: boolean;\r\n approved?: boolean;\r\n promoted?: boolean;\r\n promotedImageUrl?: string | undefined;\r\n promotedOrder?: number | undefined;\r\n\r\n constructor(data?: IUpdateThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.title = _data[\"title\"];\r\n this.threadId = _data[\"threadId\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.stickied = _data[\"stickied\"];\r\n this.approved = _data[\"approved\"];\r\n this.promoted = _data[\"promoted\"];\r\n this.promotedImageUrl = _data[\"promotedImageUrl\"];\r\n this.promotedOrder = _data[\"promotedOrder\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UpdateThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UpdateThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"title\"] = this.title;\r\n data[\"threadId\"] = this.threadId;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"stickied\"] = this.stickied;\r\n data[\"approved\"] = this.approved;\r\n data[\"promoted\"] = this.promoted;\r\n data[\"promotedImageUrl\"] = this.promotedImageUrl;\r\n data[\"promotedOrder\"] = this.promotedOrder;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUpdateThreadCommand {\r\n title?: string | undefined;\r\n threadId?: number;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n stickied?: boolean;\r\n approved?: boolean;\r\n promoted?: boolean;\r\n promotedImageUrl?: string | undefined;\r\n promotedOrder?: number | undefined;\r\n}\r\n\r\nexport class MoveForumThreadCommand implements IMoveForumThreadCommand {\r\n threadId?: number;\r\n forumId?: number;\r\n\r\n constructor(data?: IMoveForumThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n this.forumId = _data[\"forumId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): MoveForumThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new MoveForumThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n data[\"forumId\"] = this.forumId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IMoveForumThreadCommand {\r\n threadId?: number;\r\n forumId?: number;\r\n}\r\n\r\nexport class ApproveForumThreadCommand implements IApproveForumThreadCommand {\r\n threadId?: number;\r\n\r\n constructor(data?: IApproveForumThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ApproveForumThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ApproveForumThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IApproveForumThreadCommand {\r\n threadId?: number;\r\n}\r\n\r\nexport class SplitThreadCommand implements ISplitThreadCommand {\r\n threadId?: number;\r\n forumId?: number;\r\n splitAtPostNum?: number;\r\n\r\n constructor(data?: ISplitThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n this.forumId = _data[\"forumId\"];\r\n this.splitAtPostNum = _data[\"splitAtPostNum\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): SplitThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new SplitThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n data[\"forumId\"] = this.forumId;\r\n data[\"splitAtPostNum\"] = this.splitAtPostNum;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISplitThreadCommand {\r\n threadId?: number;\r\n forumId?: number;\r\n splitAtPostNum?: number;\r\n}\r\n\r\nexport class LockThreadCommand implements ILockThreadCommand {\r\n threadId?: number;\r\n\r\n constructor(data?: ILockThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): LockThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new LockThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ILockThreadCommand {\r\n threadId?: number;\r\n}\r\n\r\nexport class UnlockThreadCommand implements IUnlockThreadCommand {\r\n threadId?: number;\r\n\r\n constructor(data?: IUnlockThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UnlockThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UnlockThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUnlockThreadCommand {\r\n threadId?: number;\r\n}\r\n\r\nexport class ModerateThreadCommand implements IModerateThreadCommand {\r\n threadId?: number;\r\n\r\n constructor(data?: IModerateThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ModerateThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ModerateThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IModerateThreadCommand {\r\n threadId?: number;\r\n}\r\n\r\nexport class UnmoderateThreadCommand implements IUnmoderateThreadCommand {\r\n threadId?: number;\r\n\r\n constructor(data?: IUnmoderateThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UnmoderateThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UnmoderateThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUnmoderateThreadCommand {\r\n threadId?: number;\r\n}\r\n\r\nexport class StickyForumThreadCommand implements IStickyForumThreadCommand {\r\n threadId?: number;\r\n\r\n constructor(data?: IStickyForumThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): StickyForumThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new StickyForumThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IStickyForumThreadCommand {\r\n threadId?: number;\r\n}\r\n\r\nexport class UnstickyForumThreadCommand implements IUnstickyForumThreadCommand {\r\n threadId?: number;\r\n\r\n constructor(data?: IUnstickyForumThreadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UnstickyForumThreadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UnstickyForumThreadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUnstickyForumThreadCommand {\r\n threadId?: number;\r\n}\r\n\r\nexport class MarkThreadPostsAsReadCommand implements IMarkThreadPostsAsReadCommand {\r\n threadId?: number;\r\n highestReadThreadPost?: number;\r\n\r\n constructor(data?: IMarkThreadPostsAsReadCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadId = _data[\"threadId\"];\r\n this.highestReadThreadPost = _data[\"highestReadThreadPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): MarkThreadPostsAsReadCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new MarkThreadPostsAsReadCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadId\"] = this.threadId;\r\n data[\"highestReadThreadPost\"] = this.highestReadThreadPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IMarkThreadPostsAsReadCommand {\r\n threadId?: number;\r\n highestReadThreadPost?: number;\r\n}\r\n\r\nexport class ThreadListingPageVm implements IThreadListingPageVm {\r\n threadList?: ThreadPaginatedListVm | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: IThreadListingPageVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadList = _data[\"threadList\"] ? ThreadPaginatedListVm.fromJS(_data[\"threadList\"]) : <any>undefined;\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ThreadListingPageVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ThreadListingPageVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadList\"] = this.threadList ? this.threadList.toJSON() : <any>undefined;\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IThreadListingPageVm {\r\n threadList?: ThreadPaginatedListVm | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport class ThreadPaginatedListVm implements IThreadPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n threadList?: ThreadListItemDto[] | undefined;\r\n\r\n constructor(data?: IThreadPaginatedListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n if (Array.isArray(_data[\"threadList\"])) {\r\n this.threadList = [] as any;\r\n for (let item of _data[\"threadList\"])\r\n this.threadList!.push(ThreadListItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ThreadPaginatedListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ThreadPaginatedListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n if (Array.isArray(this.threadList)) {\r\n data[\"threadList\"] = [];\r\n for (let item of this.threadList)\r\n data[\"threadList\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IThreadPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n threadList?: ThreadListItemDto[] | undefined;\r\n}\r\n\r\nexport enum ThreadFilter {\r\n Hot = 1,\r\n Active = 2,\r\n New = 3,\r\n}\r\n\r\nexport class ThreadViewVm implements IThreadViewVm {\r\n threadDetail?: ThreadDetailDto | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n\r\n constructor(data?: IThreadViewVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.threadDetail = _data[\"threadDetail\"] ? ThreadDetailDto.fromJS(_data[\"threadDetail\"]) : <any>undefined;\r\n if (Array.isArray(_data[\"newsItems\"])) {\r\n this.newsItems = [] as any;\r\n for (let item of _data[\"newsItems\"])\r\n this.newsItems!.push(NewsItemsDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"recentThreads\"])) {\r\n this.recentThreads = [] as any;\r\n for (let item of _data[\"recentThreads\"])\r\n this.recentThreads!.push(RecentThreadDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): ThreadViewVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ThreadViewVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"threadDetail\"] = this.threadDetail ? this.threadDetail.toJSON() : <any>undefined;\r\n if (Array.isArray(this.newsItems)) {\r\n data[\"newsItems\"] = [];\r\n for (let item of this.newsItems)\r\n data[\"newsItems\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.recentThreads)) {\r\n data[\"recentThreads\"] = [];\r\n for (let item of this.recentThreads)\r\n data[\"recentThreads\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IThreadViewVm {\r\n threadDetail?: ThreadDetailDto | undefined;\r\n newsItems?: NewsItemsDto[] | undefined;\r\n recentThreads?: RecentThreadDto[] | undefined;\r\n}\r\n\r\nexport class ThreadDetailDto implements IThreadDetailDto {\r\n id?: number;\r\n title?: string | undefined;\r\n threadDate?: Date;\r\n threadAuthorUserName?: string | undefined;\r\n threadAuthorDisplayName?: string | undefined;\r\n promotedImageUrl?: string | undefined;\r\n forumId?: number;\r\n forumName?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n stickied?: boolean;\r\n approved?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n\r\n constructor(data?: IThreadDetailDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n this.threadDate = _data[\"threadDate\"] ? new Date(_data[\"threadDate\"].toString()) : <any>undefined;\r\n this.threadAuthorUserName = _data[\"threadAuthorUserName\"];\r\n this.threadAuthorDisplayName = _data[\"threadAuthorDisplayName\"];\r\n this.promotedImageUrl = _data[\"promotedImageUrl\"];\r\n this.forumId = _data[\"forumId\"];\r\n this.forumName = _data[\"forumName\"];\r\n this.locked = _data[\"locked\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.moderated = _data[\"moderated\"];\r\n this.stickied = _data[\"stickied\"];\r\n this.approved = _data[\"approved\"];\r\n this.allowedFileExtensions = _data[\"allowedFileExtensions\"];\r\n this.maxFileSize = _data[\"maxFileSize\"];\r\n this.maxFilesPerPost = _data[\"maxFilesPerPost\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ThreadDetailDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ThreadDetailDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n data[\"threadDate\"] = this.threadDate ? this.threadDate.toISOString() : <any>undefined;\r\n data[\"threadAuthorUserName\"] = this.threadAuthorUserName;\r\n data[\"threadAuthorDisplayName\"] = this.threadAuthorDisplayName;\r\n data[\"promotedImageUrl\"] = this.promotedImageUrl;\r\n data[\"forumId\"] = this.forumId;\r\n data[\"forumName\"] = this.forumName;\r\n data[\"locked\"] = this.locked;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"moderated\"] = this.moderated;\r\n data[\"stickied\"] = this.stickied;\r\n data[\"approved\"] = this.approved;\r\n data[\"allowedFileExtensions\"] = this.allowedFileExtensions;\r\n data[\"maxFileSize\"] = this.maxFileSize;\r\n data[\"maxFilesPerPost\"] = this.maxFilesPerPost;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IThreadDetailDto {\r\n id?: number;\r\n title?: string | undefined;\r\n threadDate?: Date;\r\n threadAuthorUserName?: string | undefined;\r\n threadAuthorDisplayName?: string | undefined;\r\n promotedImageUrl?: string | undefined;\r\n forumId?: number;\r\n forumName?: string | undefined;\r\n locked?: boolean;\r\n hidden?: boolean;\r\n moderated?: boolean;\r\n stickied?: boolean;\r\n approved?: boolean;\r\n allowedFileExtensions?: string | undefined;\r\n maxFileSize?: number;\r\n maxFilesPerPost?: number;\r\n}\r\n\r\nexport class PostPaginatedListVm implements IPostPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n highestPostId?: number;\r\n postList?: PostItemDto[] | undefined;\r\n goToPostId?: number;\r\n\r\n constructor(data?: IPostPaginatedListVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n this.highestPostId = _data[\"highestPostId\"];\r\n if (Array.isArray(_data[\"postList\"])) {\r\n this.postList = [] as any;\r\n for (let item of _data[\"postList\"])\r\n this.postList!.push(PostItemDto.fromJS(item));\r\n }\r\n this.goToPostId = _data[\"goToPostId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): PostPaginatedListVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PostPaginatedListVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n data[\"highestPostId\"] = this.highestPostId;\r\n if (Array.isArray(this.postList)) {\r\n data[\"postList\"] = [];\r\n for (let item of this.postList)\r\n data[\"postList\"].push(item.toJSON());\r\n }\r\n data[\"goToPostId\"] = this.goToPostId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPostPaginatedListVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n highestPostId?: number;\r\n postList?: PostItemDto[] | undefined;\r\n goToPostId?: number;\r\n}\r\n\r\nexport class PostItemDto implements IPostItemDto {\r\n id?: number;\r\n embedlessPost?: string | undefined;\r\n postContent?: string | undefined;\r\n editReason?: string | undefined;\r\n editIteration?: number;\r\n postNumber?: number;\r\n quotedPostId?: number | undefined;\r\n postAuthorId?: string | undefined;\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n locked?: boolean;\r\n approved?: boolean;\r\n created?: Date;\r\n postAuthorBadgeUrl?: string | undefined;\r\n postAuthorBadgeName?: string | undefined;\r\n unread?: boolean;\r\n postFiles?: PostFileDto[] | undefined;\r\n\r\n constructor(data?: IPostItemDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.embedlessPost = _data[\"embedlessPost\"];\r\n this.postContent = _data[\"postContent\"];\r\n this.editReason = _data[\"editReason\"];\r\n this.editIteration = _data[\"editIteration\"];\r\n this.postNumber = _data[\"postNumber\"];\r\n this.quotedPostId = _data[\"quotedPostId\"];\r\n this.postAuthorId = _data[\"postAuthorId\"];\r\n this.postAuthorUserName = _data[\"postAuthorUserName\"];\r\n this.postAuthorDisplayName = _data[\"postAuthorDisplayName\"];\r\n this.locked = _data[\"locked\"];\r\n this.approved = _data[\"approved\"];\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n this.postAuthorBadgeUrl = _data[\"postAuthorBadgeUrl\"];\r\n this.postAuthorBadgeName = _data[\"postAuthorBadgeName\"];\r\n this.unread = _data[\"unread\"];\r\n if (Array.isArray(_data[\"postFiles\"])) {\r\n this.postFiles = [] as any;\r\n for (let item of _data[\"postFiles\"])\r\n this.postFiles!.push(PostFileDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): PostItemDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PostItemDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"embedlessPost\"] = this.embedlessPost;\r\n data[\"postContent\"] = this.postContent;\r\n data[\"editReason\"] = this.editReason;\r\n data[\"editIteration\"] = this.editIteration;\r\n data[\"postNumber\"] = this.postNumber;\r\n data[\"quotedPostId\"] = this.quotedPostId;\r\n data[\"postAuthorId\"] = this.postAuthorId;\r\n data[\"postAuthorUserName\"] = this.postAuthorUserName;\r\n data[\"postAuthorDisplayName\"] = this.postAuthorDisplayName;\r\n data[\"locked\"] = this.locked;\r\n data[\"approved\"] = this.approved;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n data[\"postAuthorBadgeUrl\"] = this.postAuthorBadgeUrl;\r\n data[\"postAuthorBadgeName\"] = this.postAuthorBadgeName;\r\n data[\"unread\"] = this.unread;\r\n if (Array.isArray(this.postFiles)) {\r\n data[\"postFiles\"] = [];\r\n for (let item of this.postFiles)\r\n data[\"postFiles\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPostItemDto {\r\n id?: number;\r\n embedlessPost?: string | undefined;\r\n postContent?: string | undefined;\r\n editReason?: string | undefined;\r\n editIteration?: number;\r\n postNumber?: number;\r\n quotedPostId?: number | undefined;\r\n postAuthorId?: string | undefined;\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n locked?: boolean;\r\n approved?: boolean;\r\n created?: Date;\r\n postAuthorBadgeUrl?: string | undefined;\r\n postAuthorBadgeName?: string | undefined;\r\n unread?: boolean;\r\n postFiles?: PostFileDto[] | undefined;\r\n}\r\n\r\nexport class PostFileDto implements IPostFileDto {\r\n id?: number;\r\n postFileName?: string | undefined;\r\n postPath?: string | undefined;\r\n postFileDescription?: string | undefined;\r\n sizeBytes?: number;\r\n hidden?: boolean;\r\n deleted?: boolean;\r\n\r\n constructor(data?: IPostFileDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.postFileName = _data[\"postFileName\"];\r\n this.postPath = _data[\"postPath\"];\r\n this.postFileDescription = _data[\"postFileDescription\"];\r\n this.sizeBytes = _data[\"sizeBytes\"];\r\n this.hidden = _data[\"hidden\"];\r\n this.deleted = _data[\"deleted\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): PostFileDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new PostFileDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"postFileName\"] = this.postFileName;\r\n data[\"postPath\"] = this.postPath;\r\n data[\"postFileDescription\"] = this.postFileDescription;\r\n data[\"sizeBytes\"] = this.sizeBytes;\r\n data[\"hidden\"] = this.hidden;\r\n data[\"deleted\"] = this.deleted;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IPostFileDto {\r\n id?: number;\r\n postFileName?: string | undefined;\r\n postPath?: string | undefined;\r\n postFileDescription?: string | undefined;\r\n sizeBytes?: number;\r\n hidden?: boolean;\r\n deleted?: boolean;\r\n}\r\n\r\nexport enum PostViewMode {\r\n Post = \"Post\",\r\n Unread = \"Unread\",\r\n LastPost = \"LastPost\",\r\n}\r\n\r\nexport class UsersVm implements IUsersVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n userList?: UserDto[] | undefined;\r\n\r\n constructor(data?: IUsersVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.totalCount = _data[\"totalCount\"];\r\n this.totalPages = _data[\"totalPages\"];\r\n this.pageNumber = _data[\"pageNumber\"];\r\n if (Array.isArray(_data[\"userList\"])) {\r\n this.userList = [] as any;\r\n for (let item of _data[\"userList\"])\r\n this.userList!.push(UserDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): UsersVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UsersVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"totalCount\"] = this.totalCount;\r\n data[\"totalPages\"] = this.totalPages;\r\n data[\"pageNumber\"] = this.pageNumber;\r\n if (Array.isArray(this.userList)) {\r\n data[\"userList\"] = [];\r\n for (let item of this.userList)\r\n data[\"userList\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUsersVm {\r\n totalCount?: number;\r\n totalPages?: number;\r\n pageNumber?: number;\r\n userList?: UserDto[] | undefined;\r\n}\r\n\r\nexport class UserDto implements IUserDto {\r\n id?: string | undefined;\r\n userName?: string | undefined;\r\n email?: string | undefined;\r\n lockoutEnabled?: boolean;\r\n lockoutEnd?: Date | undefined;\r\n banned?: boolean;\r\n\r\n constructor(data?: IUserDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.userName = _data[\"userName\"];\r\n this.email = _data[\"email\"];\r\n this.lockoutEnabled = _data[\"lockoutEnabled\"];\r\n this.lockoutEnd = _data[\"lockoutEnd\"] ? new Date(_data[\"lockoutEnd\"].toString()) : <any>undefined;\r\n this.banned = _data[\"banned\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"userName\"] = this.userName;\r\n data[\"email\"] = this.email;\r\n data[\"lockoutEnabled\"] = this.lockoutEnabled;\r\n data[\"lockoutEnd\"] = this.lockoutEnd ? this.lockoutEnd.toISOString() : <any>undefined;\r\n data[\"banned\"] = this.banned;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUserDto {\r\n id?: string | undefined;\r\n userName?: string | undefined;\r\n email?: string | undefined;\r\n lockoutEnabled?: boolean;\r\n lockoutEnd?: Date | undefined;\r\n banned?: boolean;\r\n}\r\n\r\nexport class SearchUsersVm implements ISearchUsersVm {\r\n userList?: UserDto[] | undefined;\r\n\r\n constructor(data?: ISearchUsersVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"userList\"])) {\r\n this.userList = [] as any;\r\n for (let item of _data[\"userList\"])\r\n this.userList!.push(UserDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): SearchUsersVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new SearchUsersVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.userList)) {\r\n data[\"userList\"] = [];\r\n for (let item of this.userList)\r\n data[\"userList\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISearchUsersVm {\r\n userList?: UserDto[] | undefined;\r\n}\r\n\r\nexport class UserSummaryVm implements IUserSummaryVm {\r\n id?: string | undefined;\r\n userName?: string | undefined;\r\n userRoles?: string[] | undefined;\r\n userBadges?: UserBadgeDto[] | undefined;\r\n availableBadges?: UserBadgeDto[] | undefined;\r\n\r\n constructor(data?: IUserSummaryVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.userName = _data[\"userName\"];\r\n if (Array.isArray(_data[\"userRoles\"])) {\r\n this.userRoles = [] as any;\r\n for (let item of _data[\"userRoles\"])\r\n this.userRoles!.push(item);\r\n }\r\n if (Array.isArray(_data[\"userBadges\"])) {\r\n this.userBadges = [] as any;\r\n for (let item of _data[\"userBadges\"])\r\n this.userBadges!.push(UserBadgeDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"availableBadges\"])) {\r\n this.availableBadges = [] as any;\r\n for (let item of _data[\"availableBadges\"])\r\n this.availableBadges!.push(UserBadgeDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserSummaryVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserSummaryVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"userName\"] = this.userName;\r\n if (Array.isArray(this.userRoles)) {\r\n data[\"userRoles\"] = [];\r\n for (let item of this.userRoles)\r\n data[\"userRoles\"].push(item);\r\n }\r\n if (Array.isArray(this.userBadges)) {\r\n data[\"userBadges\"] = [];\r\n for (let item of this.userBadges)\r\n data[\"userBadges\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.availableBadges)) {\r\n data[\"availableBadges\"] = [];\r\n for (let item of this.availableBadges)\r\n data[\"availableBadges\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUserSummaryVm {\r\n id?: string | undefined;\r\n userName?: string | undefined;\r\n userRoles?: string[] | undefined;\r\n userBadges?: UserBadgeDto[] | undefined;\r\n availableBadges?: UserBadgeDto[] | undefined;\r\n}\r\n\r\nexport class UserBadgeDto implements IUserBadgeDto {\r\n id?: number;\r\n badgeName?: string | undefined;\r\n badgeFileName?: string | undefined;\r\n\r\n constructor(data?: IUserBadgeDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.badgeName = _data[\"badgeName\"];\r\n this.badgeFileName = _data[\"badgeFileName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserBadgeDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserBadgeDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"badgeName\"] = this.badgeName;\r\n data[\"badgeFileName\"] = this.badgeFileName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUserBadgeDto {\r\n id?: number;\r\n badgeName?: string | undefined;\r\n badgeFileName?: string | undefined;\r\n}\r\n\r\nexport class UserProfileVm implements IUserProfileVm {\r\n userSummary?: UserSummaryDto | undefined;\r\n threadPosts?: ThreadPostItemDto[] | undefined;\r\n\r\n constructor(data?: IUserProfileVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.userSummary = _data[\"userSummary\"] ? UserSummaryDto.fromJS(_data[\"userSummary\"]) : <any>undefined;\r\n if (Array.isArray(_data[\"threadPosts\"])) {\r\n this.threadPosts = [] as any;\r\n for (let item of _data[\"threadPosts\"])\r\n this.threadPosts!.push(ThreadPostItemDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserProfileVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserProfileVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"userSummary\"] = this.userSummary ? this.userSummary.toJSON() : <any>undefined;\r\n if (Array.isArray(this.threadPosts)) {\r\n data[\"threadPosts\"] = [];\r\n for (let item of this.threadPosts)\r\n data[\"threadPosts\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUserProfileVm {\r\n userSummary?: UserSummaryDto | undefined;\r\n threadPosts?: ThreadPostItemDto[] | undefined;\r\n}\r\n\r\nexport class UserSummaryDto implements IUserSummaryDto {\r\n userName?: string | undefined;\r\n displayName?: string | undefined;\r\n badgeUrl?: string | undefined;\r\n badgeName?: string | undefined;\r\n registrationDate?: Date;\r\n lastLoginDate?: Date;\r\n banned?: boolean;\r\n\r\n constructor(data?: IUserSummaryDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.userName = _data[\"userName\"];\r\n this.displayName = _data[\"displayName\"];\r\n this.badgeUrl = _data[\"badgeUrl\"];\r\n this.badgeName = _data[\"badgeName\"];\r\n this.registrationDate = _data[\"registrationDate\"] ? new Date(_data[\"registrationDate\"].toString()) : <any>undefined;\r\n this.lastLoginDate = _data[\"lastLoginDate\"] ? new Date(_data[\"lastLoginDate\"].toString()) : <any>undefined;\r\n this.banned = _data[\"banned\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserSummaryDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserSummaryDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"userName\"] = this.userName;\r\n data[\"displayName\"] = this.displayName;\r\n data[\"badgeUrl\"] = this.badgeUrl;\r\n data[\"badgeName\"] = this.badgeName;\r\n data[\"registrationDate\"] = this.registrationDate ? this.registrationDate.toISOString() : <any>undefined;\r\n data[\"lastLoginDate\"] = this.lastLoginDate ? this.lastLoginDate.toISOString() : <any>undefined;\r\n data[\"banned\"] = this.banned;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUserSummaryDto {\r\n userName?: string | undefined;\r\n displayName?: string | undefined;\r\n badgeUrl?: string | undefined;\r\n badgeName?: string | undefined;\r\n registrationDate?: Date;\r\n lastLoginDate?: Date;\r\n banned?: boolean;\r\n}\r\n\r\nexport class ThreadPostItemDto implements IThreadPostItemDto {\r\n id?: number;\r\n threadId?: number | undefined;\r\n threadTitle?: string | undefined;\r\n postContent?: string | undefined;\r\n editReason?: string | undefined;\r\n editIteration?: number;\r\n postNumber?: number;\r\n quotedPostId?: number | undefined;\r\n postAuthorId?: string | undefined;\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n locked?: boolean;\r\n created?: Date;\r\n postAuthorBadgeUrl?: string | undefined;\r\n postAuthorBadgeName?: string | undefined;\r\n\r\n constructor(data?: IThreadPostItemDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.threadId = _data[\"threadId\"];\r\n this.threadTitle = _data[\"threadTitle\"];\r\n this.postContent = _data[\"postContent\"];\r\n this.editReason = _data[\"editReason\"];\r\n this.editIteration = _data[\"editIteration\"];\r\n this.postNumber = _data[\"postNumber\"];\r\n this.quotedPostId = _data[\"quotedPostId\"];\r\n this.postAuthorId = _data[\"postAuthorId\"];\r\n this.postAuthorUserName = _data[\"postAuthorUserName\"];\r\n this.postAuthorDisplayName = _data[\"postAuthorDisplayName\"];\r\n this.locked = _data[\"locked\"];\r\n this.created = _data[\"created\"] ? new Date(_data[\"created\"].toString()) : <any>undefined;\r\n this.postAuthorBadgeUrl = _data[\"postAuthorBadgeUrl\"];\r\n this.postAuthorBadgeName = _data[\"postAuthorBadgeName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ThreadPostItemDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ThreadPostItemDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"threadId\"] = this.threadId;\r\n data[\"threadTitle\"] = this.threadTitle;\r\n data[\"postContent\"] = this.postContent;\r\n data[\"editReason\"] = this.editReason;\r\n data[\"editIteration\"] = this.editIteration;\r\n data[\"postNumber\"] = this.postNumber;\r\n data[\"quotedPostId\"] = this.quotedPostId;\r\n data[\"postAuthorId\"] = this.postAuthorId;\r\n data[\"postAuthorUserName\"] = this.postAuthorUserName;\r\n data[\"postAuthorDisplayName\"] = this.postAuthorDisplayName;\r\n data[\"locked\"] = this.locked;\r\n data[\"created\"] = this.created ? this.created.toISOString() : <any>undefined;\r\n data[\"postAuthorBadgeUrl\"] = this.postAuthorBadgeUrl;\r\n data[\"postAuthorBadgeName\"] = this.postAuthorBadgeName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IThreadPostItemDto {\r\n id?: number;\r\n threadId?: number | undefined;\r\n threadTitle?: string | undefined;\r\n postContent?: string | undefined;\r\n editReason?: string | undefined;\r\n editIteration?: number;\r\n postNumber?: number;\r\n quotedPostId?: number | undefined;\r\n postAuthorId?: string | undefined;\r\n postAuthorUserName?: string | undefined;\r\n postAuthorDisplayName?: string | undefined;\r\n locked?: boolean;\r\n created?: Date;\r\n postAuthorBadgeUrl?: string | undefined;\r\n postAuthorBadgeName?: string | undefined;\r\n}\r\n\r\nexport class UserBadgeReportVm implements IUserBadgeReportVm {\r\n userBadges?: UserBadgeDto[] | undefined;\r\n availableBadges?: UserBadgeDto[] | undefined;\r\n\r\n constructor(data?: IUserBadgeReportVm) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"userBadges\"])) {\r\n this.userBadges = [] as any;\r\n for (let item of _data[\"userBadges\"])\r\n this.userBadges!.push(UserBadgeDto.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"availableBadges\"])) {\r\n this.availableBadges = [] as any;\r\n for (let item of _data[\"availableBadges\"])\r\n this.availableBadges!.push(UserBadgeDto.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): UserBadgeReportVm {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UserBadgeReportVm();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.userBadges)) {\r\n data[\"userBadges\"] = [];\r\n for (let item of this.userBadges)\r\n data[\"userBadges\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.availableBadges)) {\r\n data[\"availableBadges\"] = [];\r\n for (let item of this.availableBadges)\r\n data[\"availableBadges\"].push(item.toJSON());\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUserBadgeReportVm {\r\n userBadges?: UserBadgeDto[] | undefined;\r\n availableBadges?: UserBadgeDto[] | undefined;\r\n}\r\n\r\nexport class SetRolesForUserCommand implements ISetRolesForUserCommand {\r\n userId?: string | undefined;\r\n roles?: string[] | undefined;\r\n\r\n constructor(data?: ISetRolesForUserCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.userId = _data[\"userId\"];\r\n if (Array.isArray(_data[\"roles\"])) {\r\n this.roles = [] as any;\r\n for (let item of _data[\"roles\"])\r\n this.roles!.push(item);\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): SetRolesForUserCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new SetRolesForUserCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"userId\"] = this.userId;\r\n if (Array.isArray(this.roles)) {\r\n data[\"roles\"] = [];\r\n for (let item of this.roles)\r\n data[\"roles\"].push(item);\r\n }\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISetRolesForUserCommand {\r\n userId?: string | undefined;\r\n roles?: string[] | undefined;\r\n}\r\n\r\nexport class SetBanForUserCommand implements ISetBanForUserCommand {\r\n userId?: string | undefined;\r\n banned?: boolean;\r\n\r\n constructor(data?: ISetBanForUserCommand) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (<any>this)[property] = (<any>data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.userId = _data[\"userId\"];\r\n this.banned = _data[\"banned\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): SetBanForUserCommand {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new SetBanForUserCommand();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"userId\"] = this.userId;\r\n data[\"banned\"] = this.banned;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ISetBanForUserCommand {\r\n userId?: string | undefined;\r\n banned?: boolean;\r\n}\r\n\r\nexport interface FileParameter {\r\n data: any;\r\n fileName: string;\r\n}\r\n\r\nexport interface FileResponse {\r\n data: Blob;\r\n status: number;\r\n fileName?: string;\r\n headers?: { [name: string]: any };\r\n}\r\n\r\nexport class SwaggerException extends Error {\r\n message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isSwaggerException = true;\r\n\r\n static isSwaggerException(obj: any): obj is SwaggerException {\r\n return obj.isSwaggerException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\r\n if (result !== null && result !== undefined)\r\n throw result;\r\n else\r\n throw new SwaggerException(message, status, response, headers, null);\r\n}\r\n\r\nfunction isAxiosError(obj: any | undefined): obj is AxiosError {\r\n return obj && obj.isAxiosError === true;\r\n}","export default class DoomCentralEventRoles {\r\n public static readonly GlobalEventAdministrator = 'GlobalEventAdministrator'\r\n public static readonly EventOrganizer = 'EventOrganizer'\r\n}\r\n","export default class DoomCentralRoles {\r\n public static readonly GlobalAdministrator = 'GlobalAdministrator'\r\n public static readonly PromotionAdministrator = 'PromotionAdministrator'\r\n public static readonly DoomCentralUser = 'DoomCentralUser'\r\n}\r\n","export default class ForumRoles {\r\n public static readonly GlobalForumAdministrator = 'GlobalForumAdministrator'\r\n}\r\n","export default class NewsPostRoles {\r\n public static readonly GlobalNewsAdministrator = 'GlobalNewsAdministrator'\r\n public static readonly NewsAuthor = 'NewsAuthor'\r\n}\r\n","import { IEventDetailDto, INewsPostDetailDto, IPostItemDto, IPromotedItemDto, IThreadDetailDto, IThreadListItemDto, PostNotificationType, PromotedType } from '@/lib/DoomCentral'\r\nimport DoomCentralEventRoles from '@/lib/DoomCentralEventRoles'\r\nimport DoomCentralRoles from '@/lib/DoomCentralRoles'\r\nimport ForumRoles from '@/lib/ForumRoles'\r\nimport NewsPostRoles from '@/lib/NewsPostRoles'\r\nimport RelativeTime from '@yaireo/relative-time'\r\nimport * as Moment from 'moment'\r\nimport 'moment/min/locales'\r\nimport { User } from 'oidc-client-ts'\r\n\r\nexport const FormatShortTimeString = (iso8601duration: string) => {\r\n if (\r\n Moment.duration(iso8601duration).days() === 0 &&\r\n Moment.duration(iso8601duration).hours() === 0 &&\r\n Moment.duration(iso8601duration).minutes() === 0 &&\r\n Moment.duration(iso8601duration).seconds() === 0\r\n ) {\r\n return '-'\r\n } else if (Moment.duration(iso8601duration).days() > 0) {\r\n return `${Moment.duration(iso8601duration).days()}d ${Moment.duration(iso8601duration).hours()}h ${Moment.duration(iso8601duration).minutes()}m ${Moment.duration(iso8601duration).seconds()}s`\r\n } else if (Moment.duration(iso8601duration).hours() > 0) {\r\n return `${Moment.duration(iso8601duration).hours()}h ${Moment.duration(iso8601duration).minutes()}m ${Moment.duration(iso8601duration).seconds()}s`\r\n } else if (Moment.duration(iso8601duration).hours() === 0 && Moment.duration(iso8601duration).minutes() > 0) {\r\n return `${Moment.duration(iso8601duration).minutes()}m ${Moment.duration(iso8601duration).seconds()}s`\r\n } else if (Moment.duration(iso8601duration).minutes() === 0 && Moment.duration(iso8601duration).seconds() > 0) {\r\n return `${Moment.duration(iso8601duration).seconds()}s`\r\n } else {\r\n return `${Moment.duration(iso8601duration).minutes()}m ${Moment.duration(iso8601duration).seconds()}s`\r\n }\r\n}\r\n\r\nexport const FormatHhMmSs = (iso8601duration: string) => {\r\n var days = new Intl.NumberFormat('default', { minimumIntegerDigits: 2 }).format(Moment.duration(iso8601duration).days())\r\n var hours = new Intl.NumberFormat('default', { minimumIntegerDigits: 2 }).format(Moment.duration(iso8601duration).hours())\r\n var mins = new Intl.NumberFormat('default', { minimumIntegerDigits: 2 }).format(Moment.duration(iso8601duration).minutes())\r\n var secs = new Intl.NumberFormat('default', { minimumIntegerDigits: 2 }).format(Moment.duration(iso8601duration).seconds())\r\n\r\n if (Moment.duration(iso8601duration).days() !== 0) {\r\n return `${days}:${hours}:${mins}:${secs}`\r\n } else if (Moment.duration(iso8601duration).hours() !== 0) {\r\n return `${hours}:${mins}:${secs}`\r\n } else if (Moment.duration(iso8601duration).minutes() !== 0) {\r\n return `${mins}:${secs}`\r\n } else {\r\n return `${mins}:${secs}`\r\n }\r\n}\r\n\r\nexport const FormatMinMaxAvg = (minmaxavg?: number): string => {\r\n if (minmaxavg === null) {\r\n return '-'\r\n } else {\r\n return `${new Intl.NumberFormat('default', { maximumFractionDigits: 2 }).format(minmaxavg)}`\r\n }\r\n}\r\n\r\nexport const FormatETA = (startDate: Date, endDate?: Date): string => {\r\n let currentDate = new Date()\r\n let start = new Date(startDate)\r\n const relativeTime = new RelativeTime()\r\n\r\n // First, determine if the date is in the past.\r\n if (currentDate > start) {\r\n // We're after the current start date.\r\n // Check if we're past the end date\r\n if (endDate) {\r\n let end = new Date(endDate)\r\n if (currentDate > end) {\r\n return 'Event Passed'\r\n } else {\r\n return 'Event Ongoing!'\r\n }\r\n } else {\r\n return 'Event Ongoing!'\r\n }\r\n } else {\r\n //Event has yet to start up.\r\n return relativeTime.from(start)\r\n }\r\n}\r\n\r\nexport const OrdinalSuffixOf = (i: number) => {\r\n var j = i % 10,\r\n k = i % 100\r\n if (j == 1 && k != 11) {\r\n return i + 'st'\r\n }\r\n if (j == 2 && k != 12) {\r\n return i + 'nd'\r\n }\r\n if (j == 3 && k != 13) {\r\n return i + 'rd'\r\n }\r\n return i + 'th'\r\n}\r\n\r\nconst fraction = new Intl.NumberFormat('default', {\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 0,\r\n})\r\n\r\nconst formatter = new Intl.NumberFormat('default', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n})\r\n\r\nexport const formatdecider = (input: number) => {\r\n if (input % 1 == 0) {\r\n return fraction.format(input)\r\n } else {\r\n return formatter.format(input)\r\n }\r\n}\r\n\r\nexport const pcntgformat = (input: number) => {\r\n return `${new Intl.NumberFormat('default', { maximumFractionDigits: 3, minimumFractionDigits: 3 }).format(input)}`\r\n}\r\n\r\nexport const getEnumKeyByEnumValue = <T extends { [index: string]: string }>(myEnum: T, enumValue: string): keyof T | null => {\r\n let keys = Object.keys(myEnum).filter((x) => myEnum[x] == enumValue)\r\n return keys.length > 0 ? keys[0] : null\r\n}\r\n\r\nexport const str2bool = (value) => {\r\n if (value && typeof value === 'string') {\r\n if (value.toLowerCase() === 'true') return true\r\n if (value.toLowerCase() === 'false') return false\r\n }\r\n return value\r\n}\r\n\r\n// Check if the user has a role in one of the component roles\r\nexport const containsDuplicate = (componentroles: string[] | string, userroles: string[] | string) => {\r\n if (componentroles === undefined) {\r\n return true\r\n }\r\n\r\n var comRoles = []\r\n var usrRoles = []\r\n\r\n if (!Array.isArray(componentroles)) {\r\n comRoles.push(componentroles)\r\n } else {\r\n comRoles = componentroles\r\n }\r\n\r\n if (!Array.isArray(userroles)) {\r\n usrRoles.push(userroles)\r\n } else {\r\n usrRoles = userroles\r\n }\r\n\r\n for (var i = 0; i < comRoles.length; i++) {\r\n for (var j = 0; j < usrRoles.length; j++) {\r\n if (usrRoles[j] === comRoles[i]) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\nexport const navigateToReturnUrl = async (returnUrl: string) => {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl)\r\n}\r\n\r\nexport const routeForResourceType = (type: PromotedType): string => {\r\n if (type === PromotedType.DoomCentralEvent) {\r\n return 'event'\r\n } else if (type === PromotedType.ForumThread) {\r\n return 'thread'\r\n } else if (type === PromotedType.NewsPost) {\r\n return 'news'\r\n }\r\n return ''\r\n}\r\n\r\nexport const routeForThreadType = (dto: IThreadListItemDto): string => {\r\n if (dto === null) {\r\n return 'thread'\r\n } else if (dto.dcEvent != null) {\r\n return 'event'\r\n } else if (dto.dcNews != null) {\r\n return 'news'\r\n } else {\r\n return 'thread'\r\n }\r\n}\r\n\r\nexport const idForThreadType = (dto: IThreadListItemDto): number => {\r\n if (dto === null) {\r\n return 0\r\n } else if (dto.dcNews != null) {\r\n return dto.dcNews.id\r\n } else if (dto.dcEvent != null) {\r\n return dto.dcEvent.id\r\n } else {\r\n return dto.id\r\n }\r\n}\r\n\r\nexport const colorForResourceType = (type: PromotedType): string => {\r\n if (type === PromotedType.DoomCentralEvent) {\r\n return 'text-primary'\r\n } else if (type === PromotedType.ForumThread) {\r\n return 'text-success'\r\n } else if (type === PromotedType.NewsPost) {\r\n return 'text-warning'\r\n }\r\n return ''\r\n}\r\n\r\nexport const IsResourceUniqueToPromotions = (promotion: IPromotedItemDto, promotions: IPromotedItemDto[]): boolean => {\r\n var noDuplicate = true\r\n promotions.map((s, idx) => {\r\n if (s.promotedType === promotion.promotedType && s.resourceId === promotion.resourceId) {\r\n noDuplicate = false\r\n }\r\n })\r\n return noDuplicate\r\n}\r\n\r\nexport const convertStringArray = (param: string | string[]): string[] => {\r\n return typeof param === 'string' ? [param] : param\r\n}\r\n\r\nexport const notificationResponse = (type: PostNotificationType): string => {\r\n if (type === PostNotificationType.MentionOrQuoted) {\r\n return 'mentioned your post on the thread'\r\n } else {\r\n return 'replied to the subscribed thread'\r\n }\r\n}\r\n\r\nexport const padTo2Digits = (num: string) => {\r\n return num.toString().padStart(2, '0')\r\n}\r\n\r\nexport const FormatUTCISOToLocalISO = (utcDate: Date): string => {\r\n const localDateString = new Date(utcDate).toLocaleDateString()\r\n const [month, date, year] = localDateString.split('/')\r\n const hours = new Date(utcDate).getHours().toString()\r\n const minutes = new Date(utcDate).getMinutes().toString()\r\n const seconds = new Date(utcDate).getSeconds().toString()\r\n\r\n return `${year}-${padTo2Digits(month)}-${padTo2Digits(date)}T${padTo2Digits(hours)}:${padTo2Digits(minutes)}:${padTo2Digits(seconds)}`\r\n}\r\n\r\nexport const UserCanEditForumPost = (user: User, post: IPostItemDto): boolean => {\r\n return true\r\n}\r\n\r\nexport const UserIsForumAdmin = (user: User, forumId: number): boolean => {\r\n if (!user) {\r\n return false\r\n }\r\n\r\n if ((user.profile.role as string[]) && containsDuplicate([ForumRoles.GlobalForumAdministrator, DoomCentralRoles.GlobalAdministrator], user.profile.role as string[])) {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const UserIsNewsAdmin = (user: User, news: INewsPostDetailDto): boolean => {\r\n if (!user || !news) {\r\n return false\r\n }\r\n\r\n if ((user.profile.role as string[]) && containsDuplicate([NewsPostRoles.GlobalNewsAdministrator, DoomCentralRoles.GlobalAdministrator], user.profile.role as string[])) {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const UserIsEventAdmin = (user: User, event: IEventDetailDto): boolean => {\r\n if (!user || !event) {\r\n return false\r\n }\r\n\r\n if (\r\n (user.profile.role as string[]) &&\r\n containsDuplicate([DoomCentralEventRoles.GlobalEventAdministrator, DoomCentralRoles.GlobalAdministrator], user.profile.role as string[])\r\n ) {\r\n return true\r\n }\r\n\r\n if ((user.profile.role as string[]) && containsDuplicate(DoomCentralEventRoles.EventOrganizer, user.profile.role as string[])) {\r\n if (user.profile.sid === event.eventOrganizerId) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const UserCanPostInNewsThread = (user: User, news: INewsPostDetailDto): boolean => {\r\n if (!news || !user) {\r\n return false\r\n }\r\n\r\n if ((user.profile.role as string[]) && containsDuplicate([NewsPostRoles.GlobalNewsAdministrator, DoomCentralRoles.GlobalAdministrator], user.profile.role as string[])) {\r\n return true\r\n }\r\n\r\n if (news.locked) {\r\n return false\r\n }\r\n\r\n if ((user.profile.role as string[]) && containsDuplicate(DoomCentralRoles.DoomCentralUser, user.profile.role as string[])) {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const UserCanPostInEventThread = (user: User, event: IEventDetailDto): boolean => {\r\n if (!event || !user) {\r\n return false\r\n }\r\n\r\n if (\r\n (user.profile.role as string[]) &&\r\n containsDuplicate([DoomCentralEventRoles.GlobalEventAdministrator, DoomCentralRoles.GlobalAdministrator], user.profile.role as string[])\r\n ) {\r\n return true\r\n }\r\n\r\n if (event.locked === true) {\r\n return false\r\n }\r\n\r\n if ((user.profile.role as string[]) && containsDuplicate(DoomCentralRoles.DoomCentralUser, user.profile.role as string[])) {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const UserCanPostInThread = (user: User, thread: IThreadDetailDto): boolean => {\r\n if (!thread || !user) {\r\n return false\r\n }\r\n\r\n if ((user.profile.role as string[]) && containsDuplicate([ForumRoles.GlobalForumAdministrator, DoomCentralRoles.GlobalAdministrator], user.profile.role as string[])) {\r\n return true\r\n }\r\n\r\n if (thread.locked === true) {\r\n return false\r\n }\r\n\r\n if ((user.profile.role as string[]) && containsDuplicate(DoomCentralRoles.DoomCentralUser, user.profile.role as string[])) {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport const formatBytes = (bytes: number, decimals: number = 2): string => {\r\n if (!+bytes) return '0 Bytes'\r\n\r\n const k = 1024\r\n const dm = decimals < 0 ? 0 : decimals\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k))\r\n\r\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`\r\n}\r\n","import { ApplicationPaths, QueryParameterNames, authority_url, client_id } from '../../configuration'\r\n\r\nexport const getReturnUrl = (state: string) => {\r\n const params = new URLSearchParams(window.location.search)\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl)\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error('Invalid return url. The return url needs to have the same origin as the current page.')\r\n }\r\n return state || fromQuery || `${window.location.origin}/`\r\n}\r\n\r\nexport const clearTokens = () => {\r\n localStorage.removeItem(`oidc.user:${authority_url}:${client_id}`)\r\n}\r\n\r\nexport const redirectToRegister = () => {\r\n redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`)\r\n}\r\n\r\nexport const redirectToProfile = () => {\r\n redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath)\r\n}\r\n\r\nexport const redirectToApiAuthorizationPath = (apiAuthorizationPath: string) => {\r\n const redirectUrl = `${window.location.origin}/${apiAuthorizationPath}`\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser they get sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl)\r\n}\r\n","import { navigateToReturnUrl } from '@/utils/helpers'\r\nimport { User, WebStorageStateStore } from 'oidc-client-ts'\r\nimport { AuthProviderProps } from 'react-oidc-context'\r\n\r\nimport { getReturnUrl } from './components/api-authorization/AuthHelpers'\r\n\r\nexport const ApplicationName = 'DoomCentral'\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message',\r\n}\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out',\r\n}\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register',\r\n}\r\n\r\nconst prefix = '/authentication'\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `_configuration/${ApplicationName}`,\r\n DiscoveryEndpoint: `/.well-known/openid-configuration`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: 'Identity/Account/Register',\r\n IdentityManagePath: 'Identity/Account/Manage',\r\n AccessDenied: 'Identity/Account/AccessDenied',\r\n}\r\n\r\nexport const authority_url = window.location.origin\r\nexport const client_id = 'DoomCentral'\r\n\r\nexport const oidcConfig: AuthProviderProps = {\r\n authority: authority_url,\r\n client_id: client_id,\r\n redirect_uri: authority_url + ApplicationPaths.LoginCallback,\r\n post_logout_redirect_uri: authority_url + ApplicationPaths.LogOutCallback,\r\n onSigninCallback: (user: User) => {\r\n navigateToReturnUrl(getReturnUrl(user.state as string))\r\n },\r\n silent_redirect_uri: authority_url + ApplicationPaths.LoginCallback,\r\n loadUserInfo: true,\r\n monitorAnonymousSession: true,\r\n filterProtocolClaims: true,\r\n revokeTokensOnSignout: true,\r\n response_type: 'code',\r\n automaticSilentRenew: true,\r\n validateSubOnSilentRenew: true,\r\n scope: 'DoomCentral.WebUIAPI openid profile',\r\n userStore: new WebStorageStateStore({ store: localStorage }),\r\n}\r\n","const LoginCallback = () => {\r\n return <div>Processing login callback</div>\r\n}\r\n\r\nexport default LoginCallback\r\n","import React from \"react\";\nimport type {\n UserManagerSettings, UserManagerEvents, User, SessionStatus,\n SigninPopupArgs, SigninSilentArgs, SigninRedirectArgs,\n SignoutRedirectArgs, SignoutPopupArgs, QuerySessionStatusArgs,\n RevokeTokensTypes, SignoutSilentArgs, SigninResourceOwnerCredentialsArgs,\n} from \"oidc-client-ts\";\n\nimport type { AuthState } from \"./AuthState\";\n\n/**\n * @public\n */\nexport interface AuthContextProps extends AuthState {\n /**\n * UserManager functions. See [UserManager](https://github.com/authts/oidc-client-ts) for more details.\n */\n readonly settings: UserManagerSettings;\n readonly events: UserManagerEvents;\n clearStaleState(): Promise<void>;\n removeUser(): Promise<void>;\n signinPopup(args?: SigninPopupArgs): Promise<User>;\n signinSilent(args?: SigninSilentArgs): Promise<User | null>;\n signinRedirect(args?: SigninRedirectArgs): Promise<void>;\n signinResourceOwnerCredentials(args: SigninResourceOwnerCredentialsArgs): Promise<User>;\n signoutRedirect(args?: SignoutRedirectArgs): Promise<void>;\n signoutPopup(args?: SignoutPopupArgs): Promise<void>;\n signoutSilent(args?: SignoutSilentArgs): Promise<void>;\n querySessionStatus(args?: QuerySessionStatusArgs): Promise<SessionStatus | null>;\n revokeTokens(types?: RevokeTokensTypes): Promise<void>;\n startSilentRenew(): void;\n stopSilentRenew(): void;\n}\n\n/**\n * @public\n */\nexport const AuthContext = React.createContext<AuthContextProps | undefined>(undefined);\nAuthContext.displayName = \"AuthContext\";\n","import type { User } from \"oidc-client-ts\";\n\n/**\n * The auth state which, when combined with the auth methods, make up the return object of the `useAuth` hook.\n *\n * @public\n */\nexport interface AuthState {\n /**\n * See [User](https://authts.github.io/oidc-client-ts/classes/User.html) for more details.\n */\n user?: User | null;\n\n /**\n * True when the library has been initialized and no navigator request is in progress.\n */\n isLoading: boolean;\n\n /**\n * True while the user has a valid access token.\n */\n isAuthenticated: boolean;\n\n /**\n * Tracks the status of most recent signin/signout request method.\n */\n activeNavigator?: \"signinRedirect\" | \"signinResourceOwnerCredentials\" | \"signinPopup\" | \"signinSilent\" | \"signoutRedirect\" | \"signoutPopup\" | \"signoutSilent\";\n\n /**\n * Was there a signin or silent renew error?\n */\n error?: Error;\n}\n\n/**\n * The initial auth state.\n */\nexport const initialAuthState: AuthState = {\n isLoading: true,\n isAuthenticated: false,\n};\n","/**\n * @public\n */\nexport const hasAuthParams = (location = window.location): boolean => {\n // response_mode: query\n let searchParams = new URLSearchParams(location.search);\n if ((searchParams.get(\"code\") || searchParams.get(\"error\")) &&\n searchParams.get(\"state\")) {\n return true;\n }\n\n // response_mode: fragment\n searchParams = new URLSearchParams(location.hash.replace(\"#\", \"?\"));\n if ((searchParams.get(\"code\") || searchParams.get(\"error\")) &&\n searchParams.get(\"state\")) {\n return true;\n }\n\n return false;\n};\n\nconst normalizeErrorFn = (fallbackMessage: string) => (error: unknown): Error => {\n if (error instanceof Error) {\n return error;\n }\n return new Error(fallbackMessage);\n};\n\nexport const loginError = normalizeErrorFn(\"Login failed\");\n","import type { User } from \"oidc-client-ts\";\n\nimport type { AuthState } from \"./AuthState\";\n\ntype Action =\n | { type: \"INITIALISED\" | \"USER_LOADED\"; user: User | null }\n | { type: \"USER_UNLOADED\" }\n | { type: \"NAVIGATOR_INIT\"; method: NonNullable<AuthState[\"activeNavigator\"]> }\n | { type: \"NAVIGATOR_CLOSE\" }\n | { type: \"ERROR\"; error: Error };\n\n/**\n * Handles how that state changes in the `useAuth` hook.\n */\nexport const reducer = (state: AuthState, action: Action): AuthState => {\n switch (action.type) {\n case \"INITIALISED\":\n case \"USER_LOADED\":\n return {\n ...state,\n user: action.user,\n isLoading: false,\n isAuthenticated: action.user ? !action.user.expired : false,\n error: undefined,\n };\n case \"USER_UNLOADED\":\n return {\n ...state,\n user: undefined,\n isAuthenticated: false,\n };\n case \"NAVIGATOR_INIT\":\n return {\n ...state,\n isLoading: true,\n activeNavigator: action.method,\n };\n case \"NAVIGATOR_CLOSE\":\n // we intentionally don't handle cases where multiple concurrent navigators are open\n return {\n ...state,\n isLoading: false,\n activeNavigator: undefined,\n };\n case \"ERROR\":\n return {\n ...state,\n isLoading: false,\n error: action.error,\n };\n default:\n return {\n ...state,\n isLoading: false,\n error: new Error(`unknown type ${action[\"type\"] as string}`),\n };\n }\n};\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from \"react\";\nimport { UserManager, type UserManagerSettings, User } from \"oidc-client-ts\";\nimport type {\n SignoutRedirectArgs,\n SignoutPopupArgs,\n SignoutSilentArgs,\n ProcessResourceOwnerPasswordCredentialsArgs,\n} from \"oidc-client-ts\";\n\nimport { AuthContext } from \"./AuthContext\";\nimport { initialAuthState } from \"./AuthState\";\nimport { reducer } from \"./reducer\";\nimport { hasAuthParams, loginError } from \"./utils\";\n\n/**\n * @public\n */\nexport interface AuthProviderPropsBase extends UserManagerSettings {\n /**\n * The child nodes your Provider has wrapped\n */\n children?: React.ReactNode;\n\n /**\n * On sign in callback hook. Can be a async function.\n * Here you can remove the code and state parameters from the url when you are redirected from the authorize page.\n *\n * ```jsx\n * const onSigninCallback = (_user: User | void): void => {\n * window.history.replaceState(\n * {},\n * document.title,\n * window.location.pathname\n * )\n * }\n * ```\n */\n onSigninCallback?: (user: User | void) => Promise<void> | void;\n\n /**\n * By default, if the page url has code/state params, this provider will call automatically the userManager.signinCallback.\n * In some cases the code might be for something else (another OAuth SDK perhaps). In these\n * instances you can instruct the client to ignore them.\n *\n * ```jsx\n * <AuthProvider\n * skipSigninCallback={window.location.pathname === '/stripe-oauth-callback'}\n * >\n * ```\n */\n skipSigninCallback?: boolean;\n\n /**\n * On remove user hook. Can be a async function.\n * Here you can change the url after the user is removed.\n *\n * ```jsx\n * const onRemoveUser = (): void => {\n * // go to home after logout\n * window.location.pathname = \"\"\n * }\n * ```\n */\n onRemoveUser?: () => Promise<void> | void;\n\n /**\n * @deprecated On sign out redirect hook. Can be a async function.\n */\n onSignoutRedirect?: () => Promise<void> | void;\n\n /**\n * @deprecated On sign out popup hook. Can be a async function.\n */\n onSignoutPopup?: () => Promise<void> | void;\n\n /**\n * Allow passing a custom UserManager.\n */\n userManager?: UserManager;\n\n /**\n * @deprecated Allow passing a custom UserManager implementation\n */\n implementation?: typeof UserManager | null;\n}\n\n/**\n * @public\n */\nexport interface AuthProviderUserManagerProps extends Omit<AuthProviderPropsBase, \"redirect_uri\" | \"client_id\" | \"authority\"> {\n redirect_uri?: never;\n client_id?: never;\n authority?: never;\n}\n\n/**\n * @public\n */\nexport interface AuthProviderNoUserManagerProps extends AuthProviderPropsBase {\n userManager?: never;\n}\n\n/**\n * @public\n */\nexport type AuthProviderProps = AuthProviderNoUserManagerProps | AuthProviderUserManagerProps;\n\nconst userManagerContextKeys = [\n \"clearStaleState\",\n \"querySessionStatus\",\n \"revokeTokens\",\n \"startSilentRenew\",\n \"stopSilentRenew\",\n] as const;\nconst navigatorKeys = [\n \"signinPopup\",\n \"signinSilent\",\n \"signinRedirect\",\n \"signinResourceOwnerCredentials\",\n \"signoutPopup\",\n \"signoutRedirect\",\n \"signoutSilent\",\n] as const;\nconst unsupportedEnvironment = (fnName: string) => () => {\n throw new Error(\n `UserManager#${fnName} was called from an unsupported context. If this is a server-rendered page, defer this call with useEffect() or pass a custom UserManager implementation.`,\n );\n};\nconst defaultUserManagerImpl =\n typeof window === \"undefined\" ? null : UserManager;\n\n/**\n * Provides the AuthContext to its child components.\n * @public\n */\nexport const AuthProvider = (props: AuthProviderProps): JSX.Element => {\n const {\n children,\n\n onSigninCallback,\n skipSigninCallback,\n\n onRemoveUser,\n onSignoutRedirect,\n onSignoutPopup,\n\n implementation: UserManagerImpl = defaultUserManagerImpl,\n userManager: userManagerProp,\n ...userManagerSettings\n } = props;\n\n const [userManager] = useState(() => {\n return userManagerProp ??\n (UserManagerImpl\n ? new UserManagerImpl(userManagerSettings as UserManagerSettings)\n : ({ settings: userManagerSettings } as UserManager));\n });\n\n const [state, dispatch] = useReducer(reducer, initialAuthState);\n const userManagerContext = useMemo(\n () =>\n Object.assign(\n {\n settings: userManager.settings,\n events: userManager.events,\n },\n Object.fromEntries(\n userManagerContextKeys.map((key) => [\n key,\n userManager[key]?.bind(userManager) ??\n unsupportedEnvironment(key),\n ]),\n ) as Pick<UserManager, typeof userManagerContextKeys[number]>,\n Object.fromEntries(\n navigatorKeys.map((key) => [\n key,\n userManager[key]\n ? async (args: ProcessResourceOwnerPasswordCredentialsArgs & never[]) => {\n dispatch({\n type: \"NAVIGATOR_INIT\",\n method: key,\n });\n try {\n return await userManager[key](args);\n } catch (error) {\n dispatch({ type: \"ERROR\", error: error as Error });\n return null;\n } finally {\n dispatch({ type: \"NAVIGATOR_CLOSE\" });\n }\n }\n : unsupportedEnvironment(key),\n ]),\n ) as Pick<UserManager, typeof navigatorKeys[number]>,\n ),\n [userManager],\n );\n const didInitialize = useRef(false);\n\n useEffect(() => {\n if (!userManager || didInitialize.current) {\n return;\n }\n didInitialize.current = true;\n\n void (async (): Promise<void> => {\n let user: User | void | null = null;\n try {\n // check if returning back from authority server\n if (hasAuthParams() && !skipSigninCallback) {\n user = await userManager.signinCallback();\n onSigninCallback && await onSigninCallback(user);\n }\n user = !user ? await userManager.getUser() : user;\n dispatch({ type: \"INITIALISED\", user });\n } catch (error) {\n dispatch({ type: \"ERROR\", error: loginError(error) });\n }\n })();\n }, [userManager, skipSigninCallback, onSigninCallback]);\n\n // register to userManager events\n useEffect(() => {\n if (!userManager) return undefined;\n // event UserLoaded (e.g. initial load, silent renew success)\n const handleUserLoaded = (user: User) => {\n dispatch({ type: \"USER_LOADED\", user });\n };\n userManager.events.addUserLoaded(handleUserLoaded);\n\n // event UserUnloaded (e.g. userManager.removeUser)\n const handleUserUnloaded = () => {\n dispatch({ type: \"USER_UNLOADED\" });\n };\n userManager.events.addUserUnloaded(handleUserUnloaded);\n\n // event SilentRenewError (silent renew error)\n const handleSilentRenewError = (error: Error) => {\n dispatch({ type: \"ERROR\", error });\n };\n userManager.events.addSilentRenewError(handleSilentRenewError);\n\n return () => {\n userManager.events.removeUserLoaded(handleUserLoaded);\n userManager.events.removeUserUnloaded(handleUserUnloaded);\n userManager.events.removeSilentRenewError(handleSilentRenewError);\n };\n }, [userManager]);\n\n const removeUser = useCallback(\n userManager\n ? () => userManager.removeUser().then(onRemoveUser)\n : unsupportedEnvironment(\"removeUser\"),\n [userManager, onRemoveUser],\n );\n\n const signoutRedirect = useCallback(\n (args?: SignoutRedirectArgs) =>\n userManagerContext.signoutRedirect(args).then(onSignoutRedirect),\n [userManagerContext.signoutRedirect, onSignoutRedirect],\n );\n\n const signoutPopup = useCallback(\n (args?: SignoutPopupArgs) =>\n userManagerContext.signoutPopup(args).then(onSignoutPopup),\n [userManagerContext.signoutPopup, onSignoutPopup],\n );\n\n const signoutSilent = useCallback(\n (args?: SignoutSilentArgs) =>\n userManagerContext.signoutSilent(args),\n [userManagerContext.signoutSilent],\n );\n\n return (\n <AuthContext.Provider\n value={{\n ...state,\n ...userManagerContext,\n removeUser,\n signoutRedirect,\n signoutPopup,\n signoutSilent,\n }}\n >\n {children}\n </AuthContext.Provider>\n );\n};\n","// Copyright (c) Brock Allen & Dominick Baier. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.\n\nimport { Logger } from \"./utils\";\nimport { ErrorResponse } from \"./errors\";\nimport { type NavigateResponse, type PopupWindowParams, type IWindow, type IFrameWindowParams, type RedirectParams, RedirectNavigator, PopupNavigator, IFrameNavigator, type INavigator } from \"./navigators\";\nimport { OidcClient, type CreateSigninRequestArgs, type CreateSignoutRequestArgs, type ProcessResourceOwnerPasswordCredentialsArgs } from \"./OidcClient\";\nimport { type UserManagerSettings, UserManagerSettingsStore } from \"./UserManagerSettings\";\nimport { User } from \"./User\";\nimport { UserManagerEvents } from \"./UserManagerEvents\";\nimport { SilentRenewService } from \"./SilentRenewService\";\nimport { SessionMonitor } from \"./SessionMonitor\";\nimport type { SessionStatus } from \"./SessionStatus\";\nimport type { SignoutResponse } from \"./SignoutResponse\";\nimport type { MetadataService } from \"./MetadataService\";\nimport { RefreshState } from \"./RefreshState\";\nimport type { SigninResponse } from \"./SigninResponse\";\n\n/**\n * @public\n */\nexport type ExtraSigninRequestArgs = Pick<CreateSigninRequestArgs, \"nonce\" | \"extraQueryParams\" | \"extraTokenParams\" | \"state\" | \"redirect_uri\" | \"prompt\" | \"acr_values\" | \"login_hint\" | \"scope\" | \"max_age\" | \"ui_locales\" | \"resource\" | \"url_state\">;\n/**\n * @public\n */\nexport type ExtraSignoutRequestArgs = Pick<CreateSignoutRequestArgs, \"extraQueryParams\" | \"state\" | \"id_token_hint\" | \"post_logout_redirect_uri\">;\n\n/**\n * @public\n */\nexport type RevokeTokensTypes = UserManagerSettings[\"revokeTokenTypes\"];\n\n/**\n * @public\n */\nexport type SigninRedirectArgs = RedirectParams & ExtraSigninRequestArgs;\n\n/**\n * @public\n */\nexport type SigninPopupArgs = PopupWindowParams & ExtraSigninRequestArgs;\n\n/**\n * @public\n */\nexport type SigninSilentArgs = IFrameWindowParams & ExtraSigninRequestArgs;\n\n/**\n * @public\n */\nexport type SigninResourceOwnerCredentialsArgs = ProcessResourceOwnerPasswordCredentialsArgs;\n\n/**\n * @public\n */\nexport type QuerySessionStatusArgs = IFrameWindowParams & ExtraSigninRequestArgs;\n\n/**\n * @public\n */\nexport type SignoutRedirectArgs = RedirectParams & ExtraSignoutRequestArgs;\n\n/**\n * @public\n */\nexport type SignoutPopupArgs = PopupWindowParams & ExtraSignoutRequestArgs;\n\n/**\n * @public\n */\nexport type SignoutSilentArgs = IFrameWindowParams & ExtraSignoutRequestArgs;\n\n/**\n * Provides a higher level API for signing a user in, signing out, managing the user's claims returned from the OIDC provider,\n * and managing an access token returned from the OIDC/OAuth2 provider.\n *\n * @public\n */\nexport class UserManager {\n /** Returns the settings used to configure the `UserManager`. */\n public readonly settings: UserManagerSettingsStore;\n protected readonly _logger = new Logger(\"UserManager\");\n\n protected readonly _client: OidcClient;\n protected readonly _redirectNavigator: INavigator;\n protected readonly _popupNavigator: INavigator;\n protected readonly _iframeNavigator: INavigator;\n protected readonly _events: UserManagerEvents;\n protected readonly _silentRenewService: SilentRenewService;\n protected readonly _sessionMonitor: SessionMonitor | null;\n\n public constructor(settings: UserManagerSettings, redirectNavigator?: INavigator, popupNavigator?: INavigator, iframeNavigator?: INavigator) {\n this.settings = new UserManagerSettingsStore(settings);\n\n this._client = new OidcClient(settings);\n\n this._redirectNavigator = redirectNavigator ?? new RedirectNavigator(this.settings);\n this._popupNavigator = popupNavigator ?? new PopupNavigator(this.settings);\n this._iframeNavigator = iframeNavigator ?? new IFrameNavigator(this.settings);\n\n this._events = new UserManagerEvents(this.settings);\n this._silentRenewService = new SilentRenewService(this);\n\n // order is important for the following properties; these services depend upon the events.\n if (this.settings.automaticSilentRenew) {\n this.startSilentRenew();\n }\n\n this._sessionMonitor = null;\n if (this.settings.monitorSession) {\n this._sessionMonitor = new SessionMonitor(this);\n }\n\n }\n\n /** Returns an object used to register for events raised by the `UserManager`. */\n public get events(): UserManagerEvents {\n return this._events;\n }\n\n /** Returns an object used to access the metadata configuration of the OIDC provider. */\n public get metadataService(): MetadataService {\n return this._client.metadataService;\n }\n\n /**\n * Returns promise to load the `User` object for the currently authenticated user.\n */\n public async getUser(): Promise<User | null> {\n const logger = this._logger.create(\"getUser\");\n const user = await this._loadUser();\n if (user) {\n logger.info(\"user loaded\");\n this._events.load(user, false);\n return user;\n }\n\n logger.info(\"user not found in storage\");\n return null;\n }\n\n /**\n * Returns promise to remove from any storage the currently authenticated user.\n */\n public async removeUser(): Promise<void> {\n const logger = this._logger.create(\"removeUser\");\n await this.storeUser(null);\n logger.info(\"user removed from storage\");\n this._events.unload();\n }\n\n /**\n * Returns promise to trigger a redirect of the current window to the authorization endpoint.\n */\n public async signinRedirect(args: SigninRedirectArgs = {}): Promise<void> {\n this._logger.create(\"signinRedirect\");\n const {\n redirectMethod,\n ...requestArgs\n } = args;\n const handle = await this._redirectNavigator.prepare({ redirectMethod });\n await this._signinStart({\n request_type: \"si:r\",\n ...requestArgs,\n }, handle);\n }\n\n /**\n * Returns promise to process response from the authorization endpoint. The result of the promise is the authenticated `User`.\n */\n public async signinRedirectCallback(url = window.location.href): Promise<User> {\n const logger = this._logger.create(\"signinRedirectCallback\");\n const user = await this._signinEnd(url);\n if (user.profile && user.profile.sub) {\n logger.info(\"success, signed in subject\", user.profile.sub);\n }\n else {\n logger.info(\"no subject\");\n }\n\n return user;\n }\n\n /**\n * Returns promise to process the signin with user/password. The result of the promise is the authenticated `User`.\n *\n * Throws an ErrorResponse in case of wrong authentication.\n */\n public async signinResourceOwnerCredentials({\n username,\n password,\n skipUserInfo = false,\n }: SigninResourceOwnerCredentialsArgs ) {\n const logger = this._logger.create(\"signinResourceOwnerCredential\");\n\n const signinResponse = await this._client.processResourceOwnerPasswordCredentials({ username, password, skipUserInfo, extraTokenParams: this.settings.extraTokenParams });\n logger.debug(\"got signin response\");\n\n const user = await this._buildUser(signinResponse);\n if (user.profile && user.profile.sub) {\n logger.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger.info(\"no subject\");\n }\n return user;\n }\n\n /**\n * Returns promise to trigger a request (via a popup window) to the authorization endpoint. The result of the promise is the authenticated `User`.\n */\n public async signinPopup(args: SigninPopupArgs = {}): Promise<User> {\n const logger = this._logger.create(\"signinPopup\");\n const {\n popupWindowFeatures,\n popupWindowTarget,\n ...requestArgs\n } = args;\n const url = this.settings.popup_redirect_uri;\n if (!url) {\n logger.throw(new Error(\"No popup_redirect_uri configured\"));\n }\n\n const handle = await this._popupNavigator.prepare({ popupWindowFeatures, popupWindowTarget });\n const user = await this._signin({\n request_type: \"si:p\",\n redirect_uri: url,\n display: \"popup\",\n ...requestArgs,\n }, handle);\n if (user) {\n if (user.profile && user.profile.sub) {\n logger.info(\"success, signed in subject\", user.profile.sub);\n }\n else {\n logger.info(\"no subject\");\n }\n }\n\n return user;\n }\n /**\n * Returns promise to notify the opening window of response from the authorization endpoint.\n */\n public async signinPopupCallback(url = window.location.href, keepOpen = false): Promise<void> {\n const logger = this._logger.create(\"signinPopupCallback\");\n await this._popupNavigator.callback(url, { keepOpen });\n logger.info(\"success\");\n }\n\n /**\n * Returns promise to trigger a silent request (via an iframe) to the authorization endpoint.\n * The result of the promise is the authenticated `User`.\n */\n public async signinSilent(args: SigninSilentArgs = {}): Promise<User | null> {\n const logger = this._logger.create(\"signinSilent\");\n const {\n silentRequestTimeoutInSeconds,\n resource,\n ...requestArgs\n } = args;\n // first determine if we have a refresh token, or need to use iframe\n let user = await this._loadUser();\n if (user?.refresh_token) {\n logger.debug(\"using refresh token\");\n const state = new RefreshState(user as Required<User>, resource);\n return await this._useRefreshToken(state);\n }\n\n const url = this.settings.silent_redirect_uri;\n if (!url) {\n logger.throw(new Error(\"No silent_redirect_uri configured\"));\n }\n\n let verifySub: string | undefined;\n if (user && this.settings.validateSubOnSilentRenew) {\n logger.debug(\"subject prior to silent renew:\", user.profile.sub);\n verifySub = user.profile.sub;\n }\n\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n user = await this._signin({\n request_type: \"si:s\",\n redirect_uri: url,\n prompt: \"none\",\n id_token_hint: this.settings.includeIdTokenInSilentRenew ? user?.id_token : undefined,\n ...requestArgs,\n }, handle, verifySub);\n if (user) {\n if (user.profile?.sub) {\n logger.info(\"success, signed in subject\", user.profile.sub);\n }\n else {\n logger.info(\"no subject\");\n }\n }\n\n return user;\n }\n\n protected async _useRefreshToken(state: RefreshState): Promise<User> {\n const response = await this._client.useRefreshToken({\n state,\n timeoutInSeconds: this.settings.silentRequestTimeoutInSeconds,\n });\n const user = new User({ ...state, ...response });\n\n await this.storeUser(user);\n this._events.load(user);\n return user;\n }\n\n /**\n * Returns promise to notify the parent window of response from the authorization endpoint.\n */\n public async signinSilentCallback(url = window.location.href): Promise<void> {\n const logger = this._logger.create(\"signinSilentCallback\");\n await this._iframeNavigator.callback(url);\n logger.info(\"success\");\n }\n\n public async signinCallback(url = window.location.href): Promise<User | void> {\n const { state } = await this._client.readSigninResponseState(url);\n switch (state.request_type) {\n case \"si:r\":\n return await this.signinRedirectCallback(url);\n case \"si:p\":\n return await this.signinPopupCallback(url);\n case \"si:s\":\n return await this.signinSilentCallback(url);\n default:\n throw new Error(\"invalid response_type in state\");\n }\n }\n\n public async signoutCallback(url = window.location.href, keepOpen = false): Promise<void> {\n const { state } = await this._client.readSignoutResponseState(url);\n if (!state) {\n return;\n }\n\n switch (state.request_type) {\n case \"so:r\":\n await this.signoutRedirectCallback(url);\n break;\n case \"so:p\":\n await this.signoutPopupCallback(url, keepOpen);\n break;\n case \"so:s\":\n await this.signoutSilentCallback(url);\n break;\n default:\n throw new Error(\"invalid response_type in state\");\n }\n }\n\n /**\n * Returns promise to query OP for user's current signin status. Returns object with session_state and subject identifier.\n */\n public async querySessionStatus(args: QuerySessionStatusArgs = {}): Promise<SessionStatus | null> {\n const logger = this._logger.create(\"querySessionStatus\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n const url = this.settings.silent_redirect_uri;\n if (!url) {\n logger.throw(new Error(\"No silent_redirect_uri configured\"));\n }\n\n const user = await this._loadUser();\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n const navResponse = await this._signinStart({\n request_type: \"si:s\", // this acts like a signin silent\n redirect_uri: url,\n prompt: \"none\",\n id_token_hint: this.settings.includeIdTokenInSilentRenew ? user?.id_token : undefined,\n response_type: this.settings.query_status_response_type,\n scope: \"openid\",\n skipUserInfo: true,\n ...requestArgs,\n }, handle);\n try {\n const signinResponse = await this._client.processSigninResponse(navResponse.url);\n logger.debug(\"got signin response\");\n\n if (signinResponse.session_state && signinResponse.profile.sub) {\n logger.info(\"success for subject\", signinResponse.profile.sub);\n return {\n session_state: signinResponse.session_state,\n sub: signinResponse.profile.sub,\n sid: signinResponse.profile.sid,\n };\n }\n\n logger.info(\"success, user not authenticated\");\n return null;\n }\n catch (err) {\n if (this.settings.monitorAnonymousSession && err instanceof ErrorResponse) {\n switch (err.error) {\n case \"login_required\":\n case \"consent_required\":\n case \"interaction_required\":\n case \"account_selection_required\":\n logger.info(\"success for anonymous user\");\n return {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n session_state: err.session_state!,\n };\n }\n }\n throw err;\n }\n }\n\n protected async _signin(args: CreateSigninRequestArgs, handle: IWindow, verifySub?: string): Promise<User> {\n const navResponse = await this._signinStart(args, handle);\n return await this._signinEnd(navResponse.url, verifySub);\n }\n protected async _signinStart(args: CreateSigninRequestArgs, handle: IWindow): Promise<NavigateResponse> {\n const logger = this._logger.create(\"_signinStart\");\n\n try {\n const signinRequest = await this._client.createSigninRequest(args);\n logger.debug(\"got signin request\");\n\n return await handle.navigate({\n url: signinRequest.url,\n state: signinRequest.state.id,\n response_mode: signinRequest.state.response_mode,\n scriptOrigin: this.settings.iframeScriptOrigin,\n });\n }\n catch (err) {\n logger.debug(\"error after preparing navigator, closing navigator window\");\n handle.close();\n throw err;\n }\n }\n protected async _signinEnd(url: string, verifySub?: string): Promise<User> {\n const logger = this._logger.create(\"_signinEnd\");\n const signinResponse = await this._client.processSigninResponse(url);\n logger.debug(\"got signin response\");\n\n const user = await this._buildUser(signinResponse, verifySub);\n return user;\n }\n\n protected async _buildUser(signinResponse: SigninResponse, verifySub?: string) {\n const logger = this._logger.create(\"_buildUser\");\n const user = new User(signinResponse);\n if (verifySub) {\n if (verifySub !== user.profile.sub) {\n logger.debug(\"current user does not match user returned from signin. sub from signin:\", user.profile.sub);\n throw new ErrorResponse({ ...signinResponse, error: \"login_required\" });\n }\n logger.debug(\"current user matches user returned from signin\");\n }\n\n await this.storeUser(user);\n logger.debug(\"user stored\");\n this._events.load(user);\n\n return user;\n }\n\n /**\n * Returns promise to trigger a redirect of the current window to the end session endpoint.\n */\n public async signoutRedirect(args: SignoutRedirectArgs = {}): Promise<void> {\n const logger = this._logger.create(\"signoutRedirect\");\n const {\n redirectMethod,\n ...requestArgs\n } = args;\n const handle = await this._redirectNavigator.prepare({ redirectMethod });\n await this._signoutStart({\n request_type: \"so:r\",\n post_logout_redirect_uri: this.settings.post_logout_redirect_uri,\n ...requestArgs,\n }, handle);\n logger.info(\"success\");\n }\n\n /**\n * Returns promise to process response from the end session endpoint.\n */\n public async signoutRedirectCallback(url = window.location.href): Promise<SignoutResponse> {\n const logger = this._logger.create(\"signoutRedirectCallback\");\n const response = await this._signoutEnd(url);\n logger.info(\"success\");\n return response;\n }\n\n /**\n * Returns promise to trigger a redirect of a popup window window to the end session endpoint.\n */\n public async signoutPopup(args: SignoutPopupArgs = {}): Promise<void> {\n const logger = this._logger.create(\"signoutPopup\");\n const {\n popupWindowFeatures,\n popupWindowTarget,\n ...requestArgs\n } = args;\n const url = this.settings.popup_post_logout_redirect_uri;\n\n const handle = await this._popupNavigator.prepare({ popupWindowFeatures, popupWindowTarget });\n await this._signout({\n request_type: \"so:p\",\n post_logout_redirect_uri: url,\n // we're putting a dummy entry in here because we\n // need a unique id from the state for notification\n // to the parent window, which is necessary if we\n // plan to return back to the client after signout\n // and so we can close the popup after signout\n state: url == null ? undefined : {},\n ...requestArgs,\n }, handle);\n logger.info(\"success\");\n }\n\n /**\n * Returns promise to process response from the end session endpoint from a popup window.\n */\n public async signoutPopupCallback(url = window.location.href, keepOpen = false): Promise<void> {\n const logger = this._logger.create(\"signoutPopupCallback\");\n await this._popupNavigator.callback(url, { keepOpen });\n logger.info(\"success\");\n }\n\n protected async _signout(args: CreateSignoutRequestArgs, handle: IWindow): Promise<SignoutResponse> {\n const navResponse = await this._signoutStart(args, handle);\n return await this._signoutEnd(navResponse.url);\n }\n protected async _signoutStart(args: CreateSignoutRequestArgs = {}, handle: IWindow): Promise<NavigateResponse> {\n const logger = this._logger.create(\"_signoutStart\");\n\n try {\n const user = await this._loadUser();\n logger.debug(\"loaded current user from storage\");\n\n if (this.settings.revokeTokensOnSignout) {\n await this._revokeInternal(user);\n }\n\n const id_token = args.id_token_hint || user && user.id_token;\n if (id_token) {\n logger.debug(\"setting id_token_hint in signout request\");\n args.id_token_hint = id_token;\n }\n\n await this.removeUser();\n logger.debug(\"user removed, creating signout request\");\n\n const signoutRequest = await this._client.createSignoutRequest(args);\n logger.debug(\"got signout request\");\n\n return await handle.navigate({\n url: signoutRequest.url,\n state: signoutRequest.state?.id,\n scriptOrigin: this.settings.iframeScriptOrigin,\n });\n }\n catch (err) {\n logger.debug(\"error after preparing navigator, closing navigator window\");\n handle.close();\n throw err;\n }\n }\n protected async _signoutEnd(url: string): Promise<SignoutResponse> {\n const logger = this._logger.create(\"_signoutEnd\");\n const signoutResponse = await this._client.processSignoutResponse(url);\n logger.debug(\"got signout response\");\n\n return signoutResponse;\n }\n\n /**\n * Returns promise to trigger a silent request (via an iframe) to the end session endpoint.\n */\n public async signoutSilent(args: SignoutSilentArgs = {}): Promise<void> {\n const logger = this._logger.create(\"signoutSilent\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n\n const id_token_hint = this.settings.includeIdTokenInSilentSignout\n ? (await this._loadUser())?.id_token\n : undefined;\n\n const url = this.settings.popup_post_logout_redirect_uri;\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n await this._signout({\n request_type: \"so:s\",\n post_logout_redirect_uri: url,\n id_token_hint: id_token_hint,\n ...requestArgs,\n }, handle);\n\n logger.info(\"success\");\n }\n\n /**\n * Returns promise to notify the parent window of response from the end session endpoint.\n */\n public async signoutSilentCallback(url = window.location.href): Promise<void> {\n const logger = this._logger.create(\"signoutSilentCallback\");\n await this._iframeNavigator.callback(url);\n logger.info(\"success\");\n }\n\n public async revokeTokens(types?: RevokeTokensTypes): Promise<void> {\n const user = await this._loadUser();\n await this._revokeInternal(user, types);\n }\n\n protected async _revokeInternal(user: User | null, types = this.settings.revokeTokenTypes): Promise<void> {\n const logger = this._logger.create(\"_revokeInternal\");\n if (!user) return;\n\n const typesPresent = types.filter(type => typeof user[type] === \"string\");\n\n if (!typesPresent.length) {\n logger.debug(\"no need to revoke due to no token(s)\");\n return;\n }\n\n // don't Promise.all, order matters\n for (const type of typesPresent) {\n await this._client.revokeToken(\n user[type]!, // eslint-disable-line @typescript-eslint/no-non-null-assertion\n type,\n );\n logger.info(`${type} revoked successfully`);\n if (type !== \"access_token\") {\n user[type] = null as never;\n }\n }\n\n await this.storeUser(user);\n logger.debug(\"user stored\");\n this._events.load(user);\n }\n\n /**\n * Enables silent renew for the `UserManager`.\n */\n public startSilentRenew(): void {\n this._logger.create(\"startSilentRenew\");\n void this._silentRenewService.start();\n }\n\n /**\n * Disables silent renew for the `UserManager`.\n */\n public stopSilentRenew(): void {\n this._silentRenewService.stop();\n }\n\n protected get _userStoreKey(): string {\n return `user:${this.settings.authority}:${this.settings.client_id}`;\n }\n\n protected async _loadUser(): Promise<User | null> {\n const logger = this._logger.create(\"_loadUser\");\n const storageString = await this.settings.userStore.get(this._userStoreKey);\n if (storageString) {\n logger.debug(\"user storageString loaded\");\n return User.fromStorageString(storageString);\n }\n\n logger.debug(\"no user storageString\");\n return null;\n }\n\n public async storeUser(user: User | null): Promise<void> {\n const logger = this._logger.create(\"storeUser\");\n if (user) {\n logger.debug(\"storing user\");\n const storageString = user.toStorageString();\n await this.settings.userStore.set(this._userStoreKey, storageString);\n }\n else {\n this._logger.debug(\"removing user\");\n await this.settings.userStore.remove(this._userStoreKey);\n }\n }\n\n /**\n * Removes stale state entries in storage for incomplete authorize requests.\n */\n public async clearStaleState(): Promise<void> {\n await this._client.clearStaleState();\n }\n}\n","import React from \"react\";\n\nimport { AuthContext, type AuthContextProps } from \"./AuthContext\";\n\n/**\n * @public\n */\nexport const useAuth = (): AuthContextProps => {\n const context = React.useContext(AuthContext);\n\n if (!context) {\n console.warn(\"AuthProvider context is undefined, please verify you are calling useAuth() as child of a <AuthProvider> component.\");\n }\n\n return context as AuthContextProps;\n};\n","import { SigninRedirectArgs } from 'oidc-client-ts'\r\nimport { useEffect } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\n\r\nimport { getReturnUrl } from './AuthHelpers'\r\n\r\nconst LoginRedirect = () => {\r\n const auth = useAuth()\r\n var args = {} as SigninRedirectArgs\r\n args.state = getReturnUrl(null)\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n await auth.signinRedirect(args)\r\n })()\r\n }, [])\r\n\r\n return <div>Processing login</div>\r\n}\r\n\r\nexport default LoginRedirect\r\n","import { navigateToReturnUrl } from '@/utils/helpers'\r\nimport { useEffect } from 'react'\r\n\r\nimport { getReturnUrl } from './AuthHelpers'\r\n\r\nconst LogoutCallback = () => {\r\n useEffect(() => {\r\n ;(async () => {\r\n localStorage.clear()\r\n await navigateToReturnUrl(getReturnUrl(null))\r\n })()\r\n }, [])\r\n\r\n return <div>Processing logout callback</div>\r\n}\r\n\r\nexport default LogoutCallback\r\n","import React, { Component, Fragment } from 'react'\r\nimport { Route } from 'react-router'\r\n\r\nimport { ApplicationPaths } from '../../configuration'\r\nimport LoginCallback from './LoginCallback'\r\nimport LoginRedirect from './LoginRedirect'\r\nimport LogoutCallback from './LogoutCallback'\r\n\r\nconst ApiAuthorizationRoutes = () => {\r\n return (\r\n <Fragment>\r\n <Route path={ApplicationPaths.LogOutCallback} component={LogoutCallback} />\r\n <Route path={ApplicationPaths.LoginCallback} component={LoginCallback} />\r\n <Route path={ApplicationPaths.Login} component={LoginRedirect} />\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default ApiAuthorizationRoutes\r\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\n\nconst defaultColor = \"#1D9BF0\";\nconst SiTwitter = React.forwardRef(function SiTwitter2({ title = \"Twitter\", color = \"currentColor\", size = 24, ...others }, ref) {\n if (color === \"default\") {\n color = defaultColor;\n }\n return /* @__PURE__ */ jsxs(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n fill: color,\n viewBox: \"0 0 24 24\",\n ref,\n ...others,\n children: [\n /* @__PURE__ */ jsx(\"title\", { children: title }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M21.543 7.104c.015.211.015.423.015.636 0 6.507-4.954 14.01-14.01 14.01v-.003A13.94 13.94 0 0 1 0 19.539a9.88 9.88 0 0 0 7.287-2.041 4.93 4.93 0 0 1-4.6-3.42 4.916 4.916 0 0 0 2.223-.084A4.926 4.926 0 0 1 .96 9.167v-.062a4.887 4.887 0 0 0 2.235.616A4.928 4.928 0 0 1 1.67 3.148 13.98 13.98 0 0 0 11.82 8.292a4.929 4.929 0 0 1 8.39-4.49 9.868 9.868 0 0 0 3.128-1.196 4.941 4.941 0 0 1-2.165 2.724A9.828 9.828 0 0 0 24 4.555a10.019 10.019 0 0 1-2.457 2.549z\" })\n ]\n }\n );\n});\n\nexport { SiTwitter as default, defaultColor };\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\n\nconst defaultColor = \"#E4405F\";\nconst SiInstagram = React.forwardRef(function SiInstagram2({ title = \"Instagram\", color = \"currentColor\", size = 24, ...others }, ref) {\n if (color === \"default\") {\n color = defaultColor;\n }\n return /* @__PURE__ */ jsxs(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n fill: color,\n viewBox: \"0 0 24 24\",\n ref,\n ...others,\n children: [\n /* @__PURE__ */ jsx(\"title\", { children: title }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M7.0301.084c-1.2768.0602-2.1487.264-2.911.5634-.7888.3075-1.4575.72-2.1228 1.3877-.6652.6677-1.075 1.3368-1.3802 2.127-.2954.7638-.4956 1.6365-.552 2.914-.0564 1.2775-.0689 1.6882-.0626 4.947.0062 3.2586.0206 3.6671.0825 4.9473.061 1.2765.264 2.1482.5635 2.9107.308.7889.72 1.4573 1.388 2.1228.6679.6655 1.3365 1.0743 2.1285 1.38.7632.295 1.6361.4961 2.9134.552 1.2773.056 1.6884.069 4.9462.0627 3.2578-.0062 3.668-.0207 4.9478-.0814 1.28-.0607 2.147-.2652 2.9098-.5633.7889-.3086 1.4578-.72 2.1228-1.3881.665-.6682 1.0745-1.3378 1.3795-2.1284.2957-.7632.4966-1.636.552-2.9124.056-1.2809.0692-1.6898.063-4.948-.0063-3.2583-.021-3.6668-.0817-4.9465-.0607-1.2797-.264-2.1487-.5633-2.9117-.3084-.7889-.72-1.4568-1.3876-2.1228C21.2982 1.33 20.628.9208 19.8378.6165 19.074.321 18.2017.1197 16.9244.0645 15.6471.0093 15.236-.005 11.977.0014 8.718.0076 8.31.0215 7.0301.0839m.1402 21.6932c-1.17-.0509-1.8053-.2453-2.2287-.408-.5606-.216-.96-.4771-1.3819-.895-.422-.4178-.6811-.8186-.9-1.378-.1644-.4234-.3624-1.058-.4171-2.228-.0595-1.2645-.072-1.6442-.079-4.848-.007-3.2037.0053-3.583.0607-4.848.05-1.169.2456-1.805.408-2.2282.216-.5613.4762-.96.895-1.3816.4188-.4217.8184-.6814 1.3783-.9003.423-.1651 1.0575-.3614 2.227-.4171 1.2655-.06 1.6447-.072 4.848-.079 3.2033-.007 3.5835.005 4.8495.0608 1.169.0508 1.8053.2445 2.228.408.5608.216.96.4754 1.3816.895.4217.4194.6816.8176.9005 1.3787.1653.4217.3617 1.056.4169 2.2263.0602 1.2655.0739 1.645.0796 4.848.0058 3.203-.0055 3.5834-.061 4.848-.051 1.17-.245 1.8055-.408 2.2294-.216.5604-.4763.96-.8954 1.3814-.419.4215-.8181.6811-1.3783.9-.4224.1649-1.0577.3617-2.2262.4174-1.2656.0595-1.6448.072-4.8493.079-3.2045.007-3.5825-.006-4.848-.0608M16.953 5.5864A1.44 1.44 0 1 0 18.39 4.144a1.44 1.44 0 0 0-1.437 1.4424M5.8385 12.012c.0067 3.4032 2.7706 6.1557 6.173 6.1493 3.4026-.0065 6.157-2.7701 6.1506-6.1733-.0065-3.4032-2.771-6.1565-6.174-6.1498-3.403.0067-6.156 2.771-6.1496 6.1738M8 12.0077a4 4 0 1 1 4.008 3.9921A3.9996 3.9996 0 0 1 8 12.0077\" })\n ]\n }\n );\n});\n\nexport { SiInstagram as default, defaultColor };\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\n\nconst defaultColor = \"#FF0000\";\nconst SiYoutube = React.forwardRef(function SiYoutube2({ title = \"YouTube\", color = \"currentColor\", size = 24, ...others }, ref) {\n if (color === \"default\") {\n color = defaultColor;\n }\n return /* @__PURE__ */ jsxs(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n fill: color,\n viewBox: \"0 0 24 24\",\n ref,\n ...others,\n children: [\n /* @__PURE__ */ jsx(\"title\", { children: title }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\" })\n ]\n }\n );\n});\n\nexport { SiYoutube as default, defaultColor };\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\n\nconst defaultColor = \"#9146FF\";\nconst SiTwitch = React.forwardRef(function SiTwitch2({ title = \"Twitch\", color = \"currentColor\", size = 24, ...others }, ref) {\n if (color === \"default\") {\n color = defaultColor;\n }\n return /* @__PURE__ */ jsxs(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n fill: color,\n viewBox: \"0 0 24 24\",\n ref,\n ...others,\n children: [\n /* @__PURE__ */ jsx(\"title\", { children: title }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z\" })\n ]\n }\n );\n});\n\nexport { SiTwitch as default, defaultColor };\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport PropTypes from 'prop-types';\n\n// https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div');\n // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? \"\".concat(padding, \"px\") : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth();\n // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules() {\n var className = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var cssModule = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalCssModule;\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\".concat(propName, \"\\\" property of \\\"\").concat(componentName, \"\\\" has been deprecated.\\n\").concat(explanation));\n }\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n}\n\n// Shim Element if needed (e.g. in Node environment)\nvar Element = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' && window.Element || function () {};\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600,\n // $carousel-transition\n Offcanvas: 300 // $offcanvas-transition\n};\n\n// Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && _typeof(target) === 'object') {\n return 'current' in target;\n }\n return false;\n}\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\nexport function isObject(value) {\n var type = _typeof(value);\n return value != null && (type === 'object' || type === 'function');\n}\nexport function toNumber(value) {\n var type = _typeof(value);\n var NAN = 0 / 0;\n if (type === 'number') {\n return value;\n }\n if (type === 'symbol' || type === 'object' && getTag(value) === '[object Symbol]') {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? \"\".concat(other) : other;\n }\n if (type !== 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(/^\\s+|\\s+$/g, '');\n var isBinary = /^0b[01]+$/i.test(value);\n return isBinary || /^0o[0-7]+$/i.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : /^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value;\n}\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n var tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object Proxy]';\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n if (isFunction(target)) {\n return target();\n }\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\".concat(target));\n }\n if (!selection.length) {\n throw new Error(\"The target '\".concat(target, \"' could not be identified in the dom, tip: check spelling\"));\n }\n return selection;\n }\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target, allElements) {\n var els = findDOMElements(target);\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n if (els === null) {\n return [];\n }\n return [els];\n }\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n return els;\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n var events = _events;\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal):not(.offcanvas)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","var _excluded = [\"className\", \"cssModule\", \"fluid\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n fluid: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nfunction Container(props) {\n var className = props.className,\n cssModule = props.cssModule,\n fluid = props.fluid,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var containerClass = 'container';\n if (fluid === true) {\n containerClass = 'container-fluid';\n } else if (fluid) {\n containerClass = \"container-\".concat(fluid);\n }\n var classes = mapToCssModules(classNames(className, containerClass), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nContainer.propTypes = propTypes;\nexport default Container;","var _excluded = [\"className\", \"cssModule\", \"variant\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules } from './utils';\nvar propTypes = {\n /** Disable the button if needed */\n active: PropTypes.bool,\n /** Aria label */\n 'aria-label': PropTypes.string,\n /** Function to be triggered on click */\n onClick: PropTypes.func,\n /** Change the variant to white */\n variant: PropTypes.oneOf(['white']),\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nfunction CloseButton(props) {\n var className = props.className,\n cssModule = props.cssModule,\n variant = props.variant,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'btn-close', variant && \"btn-close-\".concat(variant)));\n return /*#__PURE__*/React.createElement(\"button\", _extends({\n ref: innerRef,\n type: \"button\",\n className: classes\n }, _objectSpread({\n 'aria-label': 'close'\n }, attributes)));\n}\nCloseButton.propTypes = propTypes;\nexport default CloseButton;","var _excluded = [\"active\", \"aria-label\", \"block\", \"className\", \"close\", \"cssModule\", \"color\", \"outline\", \"size\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport CloseButton from './CloseButton';\nvar propTypes = {\n /** Manually set the visual state of the button to active */\n active: PropTypes.bool,\n /** Aria label */\n 'aria-label': PropTypes.string,\n block: PropTypes.bool,\n /** Pass children so this component can wrap them */\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Change existing className with a new className */\n cssModule: PropTypes.object,\n /** Use the button as a close button */\n close: PropTypes.bool,\n /** Change color of Button to one of the available colors */\n color: PropTypes.string,\n /** Disables the button */\n disabled: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n /** Function to be triggered on click */\n onClick: PropTypes.func,\n /** Adds outline to the button */\n outline: PropTypes.bool,\n /** Make the button bigger or smaller */\n size: PropTypes.string,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction Button(props) {\n var onClick = useCallback(function (e) {\n if (props.disabled) {\n e.preventDefault();\n return;\n }\n if (props.onClick) {\n return props.onClick(e);\n }\n }, [props.onClick, props.disabled]);\n var active = props.active,\n ariaLabel = props['aria-label'],\n block = props.block,\n className = props.className,\n close = props.close,\n cssModule = props.cssModule,\n _props$color = props.color,\n color = _props$color === void 0 ? 'secondary' : _props$color,\n outline = props.outline,\n size = props.size,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'button' : _props$tag,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n if (close) {\n return /*#__PURE__*/React.createElement(CloseButton, attributes);\n }\n var btnOutlineColor = \"btn\".concat(outline ? '-outline' : '', \"-\").concat(color);\n var classes = mapToCssModules(classNames(className, 'btn', btnOutlineColor, size ? \"btn-\".concat(size) : false, block ? 'd-block w-100' : false, {\n active: active,\n disabled: props.disabled\n }), cssModule);\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n type: Tag === 'button' && attributes.onClick ? 'button' : undefined\n }, attributes, {\n className: classes,\n ref: innerRef,\n onClick: onClick,\n \"aria-label\": ariaLabel\n }));\n}\nButton.propTypes = propTypes;\nexport default Button;","import { SiInstagram, SiTwitch, SiTwitter, SiYoutube } from '@icons-pack/react-simple-icons'\r\nimport { useHistory } from 'react-router'\r\nimport { Button, Container } from 'reactstrap'\r\n\r\nimport wdlLogoSm from './wdllogo-small.png'\r\n\r\nexport const Footer = () => {\r\n const history = useHistory()\r\n\r\n return (\r\n <>\r\n <Container fluid className='d-flex flex-column py-5'>\r\n <h5>Socials</h5>\r\n <div className='d-flex mb-3'>\r\n <Button size='sm' className='me-1' onClick={() => history.push('')}>\r\n <SiTwitter /> Twitter\r\n </Button>\r\n <Button size='sm' className='me-1' onClick={() => history.push('')}>\r\n <SiInstagram /> Instagram\r\n </Button>\r\n <Button size='sm' className='me-1' onClick={() => history.push('')}>\r\n <SiYoutube /> YouTube\r\n </Button>\r\n <Button size='sm' className='me-1' onClick={() => history.push('')}>\r\n <SiTwitch /> Twitch\r\n </Button>\r\n </div>\r\n <h5>Affiliates</h5>\r\n <div className='d-flex mb-3'>\r\n <Button size='sm' className='me-1' onClick={() => history.push('')}>\r\n <img src={wdlLogoSm} alt='WDL Logo' className='img-fluid pe-2' style={{ maxHeight: 24 }} />\r\n WDL\r\n </Button>\r\n </div>\r\n <div className='d-flex flex-column align-items-center'>\r\n <p className='mb-0'>Copyright {new Date().getFullYear()} Doom Central</p>\r\n <p className='mb-0'>All rights reserved</p>\r\n <p className='mt-1'>Made possible with love from the Doom Central community ❤️</p>\r\n </div>\r\n </Container>\r\n </>\r\n )\r\n}\r\n","import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return Boolean(className) && array.indexOf(className) === index;\n })\n .join(' ');\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) => {\n return createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),\n ...props,\n }),\n );\n\n Component.displayName = `${iconName}`;\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('X', [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n]);\n\nexport default X;\n","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","var _excluded = [\"tag\", \"baseClass\", \"baseClassActive\", \"className\", \"cssModule\", \"children\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nimport React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionPropTypeKeys, TransitionTimeouts, tagPropType } from './utils';\nvar propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n tag: tagPropType,\n baseClass: PropTypes.string,\n baseClassActive: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n});\nvar defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n timeout: TransitionTimeouts.Fade,\n appear: true,\n enter: true,\n exit: true,\n \"in\": true\n});\nfunction Fade(props) {\n var ref = useRef(null);\n var _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n _props$baseClass = props.baseClass,\n baseClass = _props$baseClass === void 0 ? 'fade' : _props$baseClass,\n _props$baseClassActiv = props.baseClassActive,\n baseClassActive = _props$baseClassActiv === void 0 ? 'show' : _props$baseClassActiv,\n className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n _props$innerRef = props.innerRef,\n innerRef = _props$innerRef === void 0 ? ref : _props$innerRef,\n otherProps = _objectWithoutProperties(props, _excluded);\n var transitionProps = pick(_objectSpread({\n defaultProps: defaultProps\n }, otherProps), TransitionPropTypeKeys);\n var childProps = omit(otherProps, TransitionPropTypeKeys);\n return /*#__PURE__*/React.createElement(Transition, _extends({\n nodeRef: innerRef\n }, transitionProps), function (status) {\n var isActive = status === 'entered';\n var classes = mapToCssModules(classNames(className, baseClass, isActive && baseClassActive), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n className: classes\n }, childProps, {\n ref: innerRef\n }), children);\n });\n}\nFade.propTypes = propTypes;\nFade.defaultProps = defaultProps;\nexport default Fade;","var _excluded = [\"className\", \"cssModule\", \"tag\", \"isOpen\", \"children\", \"transition\", \"fade\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Fade from './Fade';\nvar propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n fade: PropTypes.bool,\n isOpen: PropTypes.bool,\n tag: tagPropType,\n transition: PropTypes.shape(Fade.propTypes),\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nfunction Toast(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n _props$isOpen = props.isOpen,\n isOpen = _props$isOpen === void 0 ? true : _props$isOpen,\n children = props.children,\n _props$transition = props.transition,\n transition = _props$transition === void 0 ? _objectSpread(_objectSpread({}, Fade.defaultProps), {}, {\n unmountOnExit: true\n }) : _props$transition,\n _props$fade = props.fade,\n fade = _props$fade === void 0 ? true : _props$fade,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'toast'), cssModule);\n var toastTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), transition), {}, {\n baseClass: fade ? transition.baseClass : '',\n timeout: fade ? transition.timeout : 0\n });\n return /*#__PURE__*/React.createElement(Fade, _extends({}, attributes, toastTransition, {\n tag: Tag,\n className: classes,\n \"in\": isOpen,\n role: \"alert\",\n innerRef: innerRef\n }), children);\n}\nToast.propTypes = propTypes;\nexport default Toast;","import { createContext, useState } from 'react'\r\n\r\nimport { IErrorContext, IErrorResponse } from './ErrorResponse'\r\n\r\nexport const ErrorContext = createContext({\r\n error: null as IErrorResponse,\r\n setError: null,\r\n} as IErrorContext)\r\n\r\nexport const ErrorProvider = ({ children }) => {\r\n const [error, setError] = useState(null as IErrorResponse)\r\n\r\n return (\r\n <ErrorContext.Provider\r\n value={{\r\n error: error,\r\n setError: setError,\r\n }}\r\n >\r\n {children}\r\n </ErrorContext.Provider>\r\n )\r\n}\r\n","import { X } from 'lucide-react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Toast } from 'reactstrap'\r\n\r\nimport { ErrorContext } from '../state'\r\n\r\nconst ErrorMessage = () => {\r\n const error = useContext(ErrorContext)\r\n const [hidden, setHidden] = useState<boolean>(true)\r\n\r\n useEffect(() => {\r\n setHidden(false)\r\n const timer = setTimeout(() => {\r\n setHidden(true)\r\n }, 5000)\r\n return () => {\r\n clearTimeout(timer)\r\n }\r\n }, [error])\r\n\r\n return (\r\n <>\r\n {error.error !== null &&\r\n !(Object.keys(error.error).length === 0 && error.constructor === Object) && ( // javascript checking for empty object...\r\n <Toast isOpen={!hidden} className='position-fixed top-0 start-50 translate-middle-x mt-5 text-bg-danger' color='danger'>\r\n <div className='d-flex'>\r\n <div className='toast-body w-100'>\r\n {error.error.title}\r\n HTTP Status: {error.error.status}\r\n {error.error.errors !== undefined &&\r\n Object.values(error.error.errors).map((value) => (\r\n <p>\r\n <>{value}</>\r\n </p>\r\n ))}\r\n {error.error.detail && <p>{error.error.detail}</p>}\r\n </div>\r\n <Button size='sm' color='danger' onClick={() => setHidden(true)}>\r\n <X /> <span className='visually-hidden'>Dismiss toast</span>\r\n </Button>\r\n </div>\r\n </Toast>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport default ErrorMessage\r\n","'use client';\nimport React from 'react';\nimport type { ToastTypes } from './types';\n\nexport const getAsset = (type: ToastTypes): JSX.Element | null => {\n switch (type) {\n case 'success':\n return SuccessIcon;\n\n case 'info':\n return InfoIcon;\n\n case 'warning':\n return WarningIcon;\n\n case 'error':\n return ErrorIcon;\n\n default:\n return null;\n }\n};\n\nconst bars = Array(12).fill(0);\n\nexport const Loader = ({ visible }: { visible: boolean }) => {\n return (\n <div className=\"sonner-loading-wrapper\" data-visible={visible}>\n <div className=\"sonner-spinner\">\n {bars.map((_, i) => (\n <div className=\"sonner-loading-bar\" key={`spinner-bar-${i}`} />\n ))}\n </div>\n </div>\n );\n};\n\nconst SuccessIcon = (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" height=\"20\" width=\"20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst WarningIcon = (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" height=\"20\" width=\"20\">\n <path\n fillRule=\"evenodd\"\n d=\"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst InfoIcon = (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" height=\"20\" width=\"20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst ErrorIcon = (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" height=\"20\" width=\"20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { ExternalToast, PromiseData, PromiseT, ToastT, ToastToDismiss, ToastTypes } from './types';\n\nimport React from 'react';\n\nlet toastsCounter = 1;\n\nclass Observer {\n subscribers: Array<(toast: ExternalToast | ToastToDismiss) => void>;\n toasts: Array<ToastT | ToastToDismiss>;\n\n constructor() {\n this.subscribers = [];\n this.toasts = [];\n }\n\n // We use arrow functions to maintain the correct `this` reference\n subscribe = (subscriber: (toast: ToastT | ToastToDismiss) => void) => {\n this.subscribers.push(subscriber);\n\n return () => {\n const index = this.subscribers.indexOf(subscriber);\n this.subscribers.splice(index, 1);\n };\n };\n\n publish = (data: ToastT) => {\n this.subscribers.forEach((subscriber) => subscriber(data));\n };\n\n addToast = (data: ToastT) => {\n this.publish(data);\n this.toasts = [...this.toasts, data];\n };\n\n create = (\n data: ExternalToast & {\n message?: string | React.ReactNode;\n type?: ToastTypes;\n promise?: PromiseT;\n jsx?: React.ReactElement;\n },\n ) => {\n const { message, ...rest } = data;\n const id = typeof data?.id === 'number' || data.id?.length > 0 ? data.id : toastsCounter++;\n const alreadyExists = this.toasts.find((toast) => {\n return toast.id === id;\n });\n const dismissible = data.dismissible === undefined ? true : data.dismissible;\n\n if (alreadyExists) {\n this.toasts = this.toasts.map((toast) => {\n if (toast.id === id) {\n this.publish({ ...toast, ...data, id, title: message });\n return {\n ...toast,\n ...data,\n id,\n dismissible,\n title: message,\n };\n }\n\n return toast;\n });\n } else {\n this.addToast({ title: message, ...rest, dismissible, id });\n }\n\n return id;\n };\n\n dismiss = (id?: number | string) => {\n if (!id) {\n this.toasts.forEach((toast) => {\n this.subscribers.forEach((subscriber) => subscriber({ id: toast.id, dismiss: true }));\n });\n }\n\n this.subscribers.forEach((subscriber) => subscriber({ id, dismiss: true }));\n return id;\n };\n\n message = (message: string | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, message });\n };\n\n error = (message: string | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, message, type: 'error' });\n };\n\n success = (message: string | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, type: 'success', message });\n };\n\n info = (message: string | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, type: 'info', message });\n };\n\n warning = (message: string | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, type: 'warning', message });\n };\n\n loading = (message: string | React.ReactNode, data?: ExternalToast) => {\n return this.create({ ...data, type: 'loading', message });\n };\n\n promise = <ToastData>(promise: PromiseT<ToastData>, data?: PromiseData<ToastData>) => {\n if (!data) {\n // Nothing to show\n return;\n }\n\n let id: string | number | undefined = undefined;\n if (data.loading !== undefined) {\n id = this.create({\n ...data,\n promise,\n type: 'loading',\n message: data.loading,\n description: typeof data.description !== 'function' ? data.description : undefined,\n });\n }\n\n const p = promise instanceof Promise ? promise : promise();\n\n let shouldDismiss = id !== undefined;\n\n p.then(async (response) => {\n if (isHttpResponse(response) && !response.ok) {\n shouldDismiss = false;\n const message =\n typeof data.error === 'function' ? await data.error(`HTTP error! status: ${response.status}`) : data.error;\n const description =\n typeof data.description === 'function'\n ? await data.description(`HTTP error! status: ${response.status}`)\n : data.description;\n this.create({ id, type: 'error', message, description });\n } else if (data.success !== undefined) {\n shouldDismiss = false;\n const message = typeof data.success === 'function' ? await data.success(response) : data.success;\n const description =\n typeof data.description === 'function' ? await data.description(response) : data.description;\n this.create({ id, type: 'success', message, description });\n }\n })\n .catch(async (error) => {\n if (data.error !== undefined) {\n shouldDismiss = false;\n const message = typeof data.error === 'function' ? await data.error(error) : data.error;\n const description = typeof data.description === 'function' ? await data.description(error) : data.description;\n this.create({ id, type: 'error', message, description });\n }\n })\n .finally(() => {\n if (shouldDismiss) {\n // Toast is still in load state (and will be indefinitely — dismiss it)\n this.dismiss(id);\n id = undefined;\n }\n\n data.finally?.();\n });\n\n return id;\n };\n\n custom = (jsx: (id: number | string) => React.ReactElement, data?: ExternalToast) => {\n const id = data?.id || toastsCounter++;\n this.create({ jsx: jsx(id), id, ...data });\n return id;\n };\n}\n\nexport const ToastState = new Observer();\n\n// bind this to the toast function\nconst toastFunction = (message: string | React.ReactNode, data?: ExternalToast) => {\n const id = data?.id || toastsCounter++;\n\n ToastState.addToast({\n title: message,\n ...data,\n id,\n });\n return id;\n};\n\nconst isHttpResponse = (data: any): data is Response => {\n return (\n data &&\n typeof data === 'object' &&\n 'ok' in data &&\n typeof data.ok === 'boolean' &&\n 'status' in data &&\n typeof data.status === 'number'\n );\n};\n\nconst basicToast = toastFunction;\n\nconst getHistory = () => ToastState.toasts;\n\n// We use `Object.assign` to maintain the correct types as we would lose them otherwise\nexport const toast = Object.assign(\n basicToast,\n {\n success: ToastState.success,\n info: ToastState.info,\n warning: ToastState.warning,\n error: ToastState.error,\n custom: ToastState.custom,\n message: ToastState.message,\n promise: ToastState.promise,\n dismiss: ToastState.dismiss,\n loading: ToastState.loading,\n },\n { getHistory },\n);\n","import React from 'react';\n\nexport type ToastTypes = 'normal' | 'action' | 'success' | 'info' | 'warning' | 'error' | 'loading' | 'default';\n\nexport type PromiseT<Data = any> = Promise<Data> | (() => Promise<Data>);\n\nexport type PromiseTResult<Data = any> =\n | string\n | React.ReactNode\n | ((data: Data) => React.ReactNode | string | Promise<React.ReactNode | string>);\n\nexport type PromiseExternalToast = Omit<ExternalToast, 'description'>;\n\nexport type PromiseData<ToastData = any> = PromiseExternalToast & {\n loading?: string | React.ReactNode;\n success?: PromiseTResult<ToastData>;\n error?: PromiseTResult;\n description?: PromiseTResult;\n finally?: () => void | Promise<void>;\n};\n\nexport interface ToastClassnames {\n toast?: string;\n title?: string;\n description?: string;\n loader?: string;\n closeButton?: string;\n cancelButton?: string;\n actionButton?: string;\n success?: string;\n error?: string;\n info?: string;\n warning?: string;\n loading?: string;\n default?: string;\n content?: string;\n icon?: string;\n}\n\nexport interface ToastIcons {\n success?: React.ReactNode;\n info?: React.ReactNode;\n warning?: React.ReactNode;\n error?: React.ReactNode;\n loading?: React.ReactNode;\n}\n\ninterface Action {\n label: React.ReactNode;\n onClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n actionButtonStyle?: React.CSSProperties;\n}\n\nexport interface ToastT {\n id: number | string;\n title?: string | React.ReactNode;\n type?: ToastTypes;\n icon?: React.ReactNode;\n jsx?: React.ReactNode;\n richColors?: boolean;\n invert?: boolean;\n closeButton?: boolean;\n dismissible?: boolean;\n description?: React.ReactNode;\n duration?: number;\n delete?: boolean;\n important?: boolean;\n action?: Action | React.ReactNode;\n cancel?: Action | React.ReactNode;\n onDismiss?: (toast: ToastT) => void;\n onAutoClose?: (toast: ToastT) => void;\n promise?: PromiseT;\n cancelButtonStyle?: React.CSSProperties;\n actionButtonStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n unstyled?: boolean;\n className?: string;\n classNames?: ToastClassnames;\n descriptionClassName?: string;\n position?: Position;\n}\n\nexport function isAction(action: Action | React.ReactNode): action is Action {\n return (action as Action).label !== undefined;\n}\n\nexport type Position = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-center' | 'bottom-center';\nexport interface HeightT {\n height: number;\n toastId: number | string;\n position: Position;\n}\n\ninterface ToastOptions {\n className?: string;\n closeButton?: boolean;\n descriptionClassName?: string;\n style?: React.CSSProperties;\n cancelButtonStyle?: React.CSSProperties;\n actionButtonStyle?: React.CSSProperties;\n duration?: number;\n unstyled?: boolean;\n classNames?: ToastClassnames;\n}\n\ntype CnFunction = (...classes: Array<string | undefined>) => string;\n\nexport interface ToasterProps {\n invert?: boolean;\n theme?: 'light' | 'dark' | 'system';\n position?: Position;\n hotkey?: string[];\n richColors?: boolean;\n expand?: boolean;\n duration?: number;\n gap?: number;\n visibleToasts?: number;\n closeButton?: boolean;\n toastOptions?: ToastOptions;\n className?: string;\n style?: React.CSSProperties;\n offset?: string | number;\n dir?: 'rtl' | 'ltr' | 'auto';\n /**\n * @deprecated Please use the `icons` prop instead:\n * ```jsx\n * <Toaster\n * icons={{ loading: <LoadingIcon /> }}\n * />\n * ```\n */\n loadingIcon?: React.ReactNode;\n icons?: ToastIcons;\n containerAriaLabel?: string;\n pauseWhenPageIsHidden?: boolean;\n cn?: CnFunction;\n}\n\nexport interface ToastProps {\n toast: ToastT;\n toasts: ToastT[];\n index: number;\n expanded: boolean;\n invert: boolean;\n heights: HeightT[];\n setHeights: React.Dispatch<React.SetStateAction<HeightT[]>>;\n removeToast: (toast: ToastT) => void;\n gap?: number;\n position: Position;\n visibleToasts: number;\n expandByDefault: boolean;\n closeButton: boolean;\n interacting: boolean;\n style?: React.CSSProperties;\n cancelButtonStyle?: React.CSSProperties;\n actionButtonStyle?: React.CSSProperties;\n duration?: number;\n className?: string;\n unstyled?: boolean;\n descriptionClassName?: string;\n loadingIcon?: React.ReactNode;\n classNames?: ToastClassnames;\n icons?: ToastIcons;\n closeButtonAriaLabel?: string;\n pauseWhenPageIsHidden: boolean;\n cn: CnFunction;\n defaultRichColors?: boolean;\n}\n\nexport enum SwipeStateTypes {\n SwipedOut = 'SwipedOut',\n SwipedBack = 'SwipedBack',\n NotSwiped = 'NotSwiped',\n}\n\nexport type Theme = 'light' | 'dark';\n\nexport interface ToastToDismiss {\n id: number | string;\n dismiss: boolean;\n}\n\nexport type ExternalToast = Omit<ToastT, 'id' | 'type' | 'title' | 'jsx' | 'delete' | 'promise'> & {\n id?: number | string;\n};\n","\n export default function styleInject(css, { insertAt } = {}) {\n if (!css || typeof document === 'undefined') return\n \n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n \n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n }\n ","import styleInject from '#style-inject';styleInject(\":where(html[dir=\\\"ltr\\\"]),:where([data-sonner-toaster][dir=\\\"ltr\\\"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir=\\\"rtl\\\"]),:where([data-sonner-toaster][dir=\\\"rtl\\\"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999}:where([data-sonner-toaster][data-x-position=\\\"right\\\"]){right:max(var(--offset),env(safe-area-inset-right))}:where([data-sonner-toaster][data-x-position=\\\"left\\\"]){left:max(var(--offset),env(safe-area-inset-left))}:where([data-sonner-toaster][data-x-position=\\\"center\\\"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position=\\\"top\\\"]){top:max(var(--offset),env(safe-area-inset-top))}:where([data-sonner-toaster][data-y-position=\\\"bottom\\\"]){bottom:max(var(--offset),env(safe-area-inset-bottom))}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=\\\"true\\\"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position=\\\"top\\\"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=\\\"bottom\\\"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=\\\"true\\\"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme=\\\"dark\\\"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;background:var(--gray1);color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled=\\\"true\\\"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=\\\"true\\\"]):before{content:\\\"\\\";position:absolute;left:0;right:0;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=\\\"top\\\"][data-swiping=\\\"true\\\"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=\\\"bottom\\\"][data-swiping=\\\"true\\\"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=\\\"false\\\"][data-removed=\\\"true\\\"]):before{content:\\\"\\\";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:\\\"\\\";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=\\\"true\\\"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=\\\"false\\\"][data-front=\\\"false\\\"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=\\\"false\\\"][data-front=\\\"false\\\"][data-styled=\\\"true\\\"])>*{opacity:0}:where([data-sonner-toast][data-visible=\\\"false\\\"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=\\\"true\\\"][data-expanded=\\\"true\\\"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=\\\"true\\\"][data-front=\\\"true\\\"][data-swipe-out=\\\"false\\\"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\\\"true\\\"][data-front=\\\"false\\\"][data-swipe-out=\\\"false\\\"][data-expanded=\\\"true\\\"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\\\"true\\\"][data-front=\\\"false\\\"][data-swipe-out=\\\"false\\\"][data-expanded=\\\"false\\\"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=\\\"true\\\"][data-front=\\\"false\\\"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount, 0px));transition:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation:swipe-out .2s ease-out forwards}@keyframes swipe-out{0%{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount)));opacity:1}to{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount) + var(--lift) * -100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;--mobile-offset: 16px;right:var(--mobile-offset);left:var(--mobile-offset);width:100%}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset)}[data-sonner-toaster][data-y-position=bottom]{bottom:20px}[data-sonner-toaster][data-y-position=top]{top:20px}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset);right:var(--mobile-offset);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\\n\")","'use client';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { getAsset, Loader } from './assets';\nimport { useIsDocumentHidden } from './hooks';\nimport { toast, ToastState } from './state';\nimport './styles.css';\nimport {\n isAction,\n type ExternalToast,\n type HeightT,\n type ToasterProps,\n type ToastProps,\n type ToastT,\n type ToastToDismiss,\n} from './types';\n\n// Visible toasts amount\nconst VISIBLE_TOASTS_AMOUNT = 3;\n\n// Viewport padding\nconst VIEWPORT_OFFSET = '32px';\n\n// Default lifetime of a toasts (in ms)\nconst TOAST_LIFETIME = 4000;\n\n// Default toast width\nconst TOAST_WIDTH = 356;\n\n// Default gap between toasts\nconst GAP = 14;\n\n// Threshold to dismiss a toast\nconst SWIPE_THRESHOLD = 20;\n\n// Equal to exit animation duration\nconst TIME_BEFORE_UNMOUNT = 200;\n\nfunction _cn(...classes: (string | undefined)[]) {\n return classes.filter(Boolean).join(' ');\n}\n\nconst Toast = (props: ToastProps) => {\n const {\n invert: ToasterInvert,\n toast,\n unstyled,\n interacting,\n setHeights,\n visibleToasts,\n heights,\n index,\n toasts,\n expanded,\n removeToast,\n defaultRichColors,\n closeButton: closeButtonFromToaster,\n style,\n cancelButtonStyle,\n actionButtonStyle,\n className = '',\n descriptionClassName = '',\n duration: durationFromToaster,\n position,\n gap,\n loadingIcon: loadingIconProp,\n expandByDefault,\n classNames,\n icons,\n closeButtonAriaLabel = 'Close toast',\n pauseWhenPageIsHidden,\n cn,\n } = props;\n const [mounted, setMounted] = React.useState(false);\n const [removed, setRemoved] = React.useState(false);\n const [swiping, setSwiping] = React.useState(false);\n const [swipeOut, setSwipeOut] = React.useState(false);\n const [offsetBeforeRemove, setOffsetBeforeRemove] = React.useState(0);\n const [initialHeight, setInitialHeight] = React.useState(0);\n const dragStartTime = React.useRef<Date | null>(null);\n const toastRef = React.useRef<HTMLLIElement>(null);\n const isFront = index === 0;\n const isVisible = index + 1 <= visibleToasts;\n const toastType = toast.type;\n const dismissible = toast.dismissible !== false;\n const toastClassname = toast.className || '';\n const toastDescriptionClassname = toast.descriptionClassName || '';\n // Height index is used to calculate the offset as it gets updated before the toast array, which means we can calculate the new layout faster.\n const heightIndex = React.useMemo(\n () => heights.findIndex((height) => height.toastId === toast.id) || 0,\n [heights, toast.id],\n );\n const closeButton = React.useMemo(\n () => toast.closeButton ?? closeButtonFromToaster,\n [toast.closeButton, closeButtonFromToaster],\n );\n const duration = React.useMemo(\n () => toast.duration || durationFromToaster || TOAST_LIFETIME,\n [toast.duration, durationFromToaster],\n );\n const closeTimerStartTimeRef = React.useRef(0);\n const offset = React.useRef(0);\n const lastCloseTimerStartTimeRef = React.useRef(0);\n const pointerStartRef = React.useRef<{ x: number; y: number } | null>(null);\n const [y, x] = position.split('-');\n const toastsHeightBefore = React.useMemo(() => {\n return heights.reduce((prev, curr, reducerIndex) => {\n // Calculate offset up until current toast\n if (reducerIndex >= heightIndex) {\n return prev;\n }\n\n return prev + curr.height;\n }, 0);\n }, [heights, heightIndex]);\n const isDocumentHidden = useIsDocumentHidden();\n\n const invert = toast.invert || ToasterInvert;\n const disabled = toastType === 'loading';\n\n offset.current = React.useMemo(() => heightIndex * gap + toastsHeightBefore, [heightIndex, toastsHeightBefore]);\n\n React.useEffect(() => {\n // Trigger enter animation without using CSS animation\n setMounted(true);\n }, []);\n\n React.useLayoutEffect(() => {\n if (!mounted) return;\n const toastNode = toastRef.current;\n const originalHeight = toastNode.style.height;\n toastNode.style.height = 'auto';\n const newHeight = toastNode.getBoundingClientRect().height;\n toastNode.style.height = originalHeight;\n\n setInitialHeight(newHeight);\n\n setHeights((heights) => {\n const alreadyExists = heights.find((height) => height.toastId === toast.id);\n if (!alreadyExists) {\n return [{ toastId: toast.id, height: newHeight, position: toast.position }, ...heights];\n } else {\n return heights.map((height) => (height.toastId === toast.id ? { ...height, height: newHeight } : height));\n }\n });\n }, [mounted, toast.title, toast.description, setHeights, toast.id]);\n\n const deleteToast = React.useCallback(() => {\n // Save the offset for the exit swipe animation\n setRemoved(true);\n setOffsetBeforeRemove(offset.current);\n setHeights((h) => h.filter((height) => height.toastId !== toast.id));\n\n setTimeout(() => {\n removeToast(toast);\n }, TIME_BEFORE_UNMOUNT);\n }, [toast, removeToast, setHeights, offset]);\n\n React.useEffect(() => {\n if ((toast.promise && toastType === 'loading') || toast.duration === Infinity || toast.type === 'loading') return;\n let timeoutId: NodeJS.Timeout;\n let remainingTime = duration;\n\n // Pause the timer on each hover\n const pauseTimer = () => {\n if (lastCloseTimerStartTimeRef.current < closeTimerStartTimeRef.current) {\n // Get the elapsed time since the timer started\n const elapsedTime = new Date().getTime() - closeTimerStartTimeRef.current;\n\n remainingTime = remainingTime - elapsedTime;\n }\n\n lastCloseTimerStartTimeRef.current = new Date().getTime();\n };\n\n const startTimer = () => {\n // setTimeout(, Infinity) behaves as if the delay is 0.\n // As a result, the toast would be closed immediately, giving the appearance that it was never rendered.\n // See: https://github.com/denysdovhan/wtfjs?tab=readme-ov-file#an-infinite-timeout\n if (remainingTime === Infinity) return;\n\n closeTimerStartTimeRef.current = new Date().getTime();\n\n // Let the toast know it has started\n timeoutId = setTimeout(() => {\n toast.onAutoClose?.(toast);\n deleteToast();\n }, remainingTime);\n };\n\n if (expanded || interacting || (pauseWhenPageIsHidden && isDocumentHidden)) {\n pauseTimer();\n } else {\n startTimer();\n }\n\n return () => clearTimeout(timeoutId);\n }, [\n expanded,\n interacting,\n expandByDefault,\n toast,\n duration,\n deleteToast,\n toast.promise,\n toastType,\n pauseWhenPageIsHidden,\n isDocumentHidden,\n ]);\n\n React.useEffect(() => {\n const toastNode = toastRef.current;\n\n if (toastNode) {\n const height = toastNode.getBoundingClientRect().height;\n\n // Add toast height tot heights array after the toast is mounted\n setInitialHeight(height);\n setHeights((h) => [{ toastId: toast.id, height, position: toast.position }, ...h]);\n\n return () => setHeights((h) => h.filter((height) => height.toastId !== toast.id));\n }\n }, [setHeights, toast.id]);\n\n React.useEffect(() => {\n if (toast.delete) {\n deleteToast();\n }\n }, [deleteToast, toast.delete]);\n\n function getLoadingIcon() {\n if (icons?.loading) {\n return (\n <div className=\"sonner-loader\" data-visible={toastType === 'loading'}>\n {icons.loading}\n </div>\n );\n }\n\n if (loadingIconProp) {\n return (\n <div className=\"sonner-loader\" data-visible={toastType === 'loading'}>\n {loadingIconProp}\n </div>\n );\n }\n return <Loader visible={toastType === 'loading'} />;\n }\n\n return (\n <li\n aria-live={toast.important ? 'assertive' : 'polite'}\n aria-atomic=\"true\"\n role=\"status\"\n tabIndex={0}\n ref={toastRef}\n className={cn(\n className,\n toastClassname,\n classNames?.toast,\n toast?.classNames?.toast,\n classNames?.default,\n classNames?.[toastType],\n toast?.classNames?.[toastType],\n )}\n data-sonner-toast=\"\"\n data-rich-colors={toast.richColors ?? defaultRichColors}\n data-styled={!Boolean(toast.jsx || toast.unstyled || unstyled)}\n data-mounted={mounted}\n data-promise={Boolean(toast.promise)}\n data-removed={removed}\n data-visible={isVisible}\n data-y-position={y}\n data-x-position={x}\n data-index={index}\n data-front={isFront}\n data-swiping={swiping}\n data-dismissible={dismissible}\n data-type={toastType}\n data-invert={invert}\n data-swipe-out={swipeOut}\n data-expanded={Boolean(expanded || (expandByDefault && mounted))}\n style={\n {\n '--index': index,\n '--toasts-before': index,\n '--z-index': toasts.length - index,\n '--offset': `${removed ? offsetBeforeRemove : offset.current}px`,\n '--initial-height': expandByDefault ? 'auto' : `${initialHeight}px`,\n ...style,\n ...toast.style,\n } as React.CSSProperties\n }\n onPointerDown={(event) => {\n if (disabled || !dismissible) return;\n dragStartTime.current = new Date();\n setOffsetBeforeRemove(offset.current);\n // Ensure we maintain correct pointer capture even when going outside of the toast (e.g. when swiping)\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n if ((event.target as HTMLElement).tagName === 'BUTTON') return;\n setSwiping(true);\n pointerStartRef.current = { x: event.clientX, y: event.clientY };\n }}\n onPointerUp={() => {\n if (swipeOut || !dismissible) return;\n\n pointerStartRef.current = null;\n const swipeAmount = Number(toastRef.current?.style.getPropertyValue('--swipe-amount').replace('px', '') || 0);\n const timeTaken = new Date().getTime() - dragStartTime.current?.getTime();\n const velocity = Math.abs(swipeAmount) / timeTaken;\n\n // Remove only if threshold is met\n if (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > 0.11) {\n setOffsetBeforeRemove(offset.current);\n toast.onDismiss?.(toast);\n deleteToast();\n setSwipeOut(true);\n return;\n }\n\n toastRef.current?.style.setProperty('--swipe-amount', '0px');\n setSwiping(false);\n }}\n onPointerMove={(event) => {\n if (!pointerStartRef.current || !dismissible) return;\n\n const yPosition = event.clientY - pointerStartRef.current.y;\n const xPosition = event.clientX - pointerStartRef.current.x;\n\n const clamp = y === 'top' ? Math.min : Math.max;\n const clampedY = clamp(0, yPosition);\n const swipeStartThreshold = event.pointerType === 'touch' ? 10 : 2;\n const isAllowedToSwipe = Math.abs(clampedY) > swipeStartThreshold;\n\n if (isAllowedToSwipe) {\n toastRef.current?.style.setProperty('--swipe-amount', `${yPosition}px`);\n } else if (Math.abs(xPosition) > swipeStartThreshold) {\n // User is swiping in wrong direction so we disable swipe gesture\n // for the current pointer down interaction\n pointerStartRef.current = null;\n }\n }}\n >\n {closeButton && !toast.jsx ? (\n <button\n aria-label={closeButtonAriaLabel}\n data-disabled={disabled}\n data-close-button\n onClick={\n disabled || !dismissible\n ? () => {}\n : () => {\n deleteToast();\n toast.onDismiss?.(toast);\n }\n }\n className={cn(classNames?.closeButton, toast?.classNames?.closeButton)}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n ) : null}\n {toast.jsx || React.isValidElement(toast.title) ? (\n toast.jsx || toast.title\n ) : (\n <>\n {toastType || toast.icon || toast.promise ? (\n <div data-icon=\"\" className={cn(classNames?.icon, toast?.classNames?.icon)}>\n {toast.promise || (toast.type === 'loading' && !toast.icon) ? toast.icon || getLoadingIcon() : null}\n {toast.type !== 'loading' ? toast.icon || icons?.[toastType] || getAsset(toastType) : null}\n </div>\n ) : null}\n\n <div data-content=\"\" className={cn(classNames?.content, toast?.classNames?.content)}>\n <div data-title=\"\" className={cn(classNames?.title, toast?.classNames?.title)}>\n {toast.title}\n </div>\n {toast.description ? (\n <div\n data-description=\"\"\n className={cn(\n descriptionClassName,\n toastDescriptionClassname,\n classNames?.description,\n toast?.classNames?.description,\n\t\t\t)}\n >\n {toast.description}\n </div>\n ) : null}\n </div>\n {React.isValidElement(toast.cancel) ? (\n toast.cancel\n ) : toast.cancel && isAction(toast.cancel) ? (\n <button\n data-button\n data-cancel\n style={toast.cancelButtonStyle || cancelButtonStyle}\n onClick={(event) => {\n // We need to check twice because typescript\n if (!isAction(toast.cancel)) return;\n if (!dismissible) return;\n toast.cancel.onClick?.(event);\n deleteToast();\n }}\n className={cn(classNames?.cancelButton, toast?.classNames?.cancelButton)}\n >\n {toast.cancel.label}\n </button>\n ) : null}\n {React.isValidElement(toast.action) ? (\n toast.action\n ) : toast.action && isAction(toast.action) ? (\n <button\n data-button\n data-action\n style={toast.actionButtonStyle || actionButtonStyle}\n onClick={(event) => {\n // We need to check twice because typescript\n if (!isAction(toast.action)) return;\n if (event.defaultPrevented) return;\n toast.action.onClick?.(event);\n deleteToast();\n }}\n className={cn(classNames?.actionButton, toast?.classNames?.actionButton)}\n >\n {toast.action.label}\n </button>\n ) : null}\n </>\n )}\n </li>\n );\n};\n\nfunction getDocumentDirection(): ToasterProps['dir'] {\n if (typeof window === 'undefined') return 'ltr';\n if (typeof document === 'undefined') return 'ltr'; // For Fresh purpose\n\n const dirAttribute = document.documentElement.getAttribute('dir');\n\n if (dirAttribute === 'auto' || !dirAttribute) {\n return window.getComputedStyle(document.documentElement).direction as ToasterProps['dir'];\n }\n\n return dirAttribute as ToasterProps['dir'];\n}\n\nfunction useSonner() {\n const [activeToasts, setActiveToasts] = React.useState<ToastT[]>([]);\n\n React.useEffect(() => {\n return ToastState.subscribe((toast) => {\n setActiveToasts((currentToasts) => {\n if ('dismiss' in toast && toast.dismiss) {\n return currentToasts.filter((t) => t.id !== toast.id);\n }\n\n const existingToastIndex = currentToasts.findIndex((t) => t.id === toast.id);\n if (existingToastIndex !== -1) {\n const updatedToasts = [...currentToasts];\n updatedToasts[existingToastIndex] = { ...updatedToasts[existingToastIndex], ...toast };\n return updatedToasts;\n } else {\n return [toast, ...currentToasts];\n }\n });\n });\n }, []);\n\n return {\n toasts: activeToasts,\n };\n}\n\nconst Toaster = (props: ToasterProps) => {\n const {\n invert,\n position = 'bottom-right',\n hotkey = ['altKey', 'KeyT'],\n expand,\n closeButton,\n className,\n offset,\n theme = 'light',\n richColors,\n duration,\n style,\n visibleToasts = VISIBLE_TOASTS_AMOUNT,\n toastOptions,\n dir = getDocumentDirection(),\n gap = GAP,\n loadingIcon,\n icons,\n containerAriaLabel = 'Notifications',\n pauseWhenPageIsHidden,\n cn = _cn,\n } = props;\n const [toasts, setToasts] = React.useState<ToastT[]>([]);\n const possiblePositions = React.useMemo(() => {\n return Array.from(\n new Set([position].concat(toasts.filter((toast) => toast.position).map((toast) => toast.position))),\n );\n }, [toasts, position]);\n const [heights, setHeights] = React.useState<HeightT[]>([]);\n const [expanded, setExpanded] = React.useState(false);\n const [interacting, setInteracting] = React.useState(false);\n const [actualTheme, setActualTheme] = React.useState(\n theme !== 'system'\n ? theme\n : typeof window !== 'undefined'\n ? window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n : 'light',\n );\n\n const listRef = React.useRef<HTMLOListElement>(null);\n const hotkeyLabel = hotkey.join('+').replace(/Key/g, '').replace(/Digit/g, '');\n const lastFocusedElementRef = React.useRef<HTMLElement>(null);\n const isFocusWithinRef = React.useRef(false);\n\n const removeToast = React.useCallback(\n (toastToRemove: ToastT) => {\n if (!toasts.find((toast) => toast.id === toastToRemove.id)?.delete) {\n ToastState.dismiss(toastToRemove.id);\n }\n\n setToasts((toasts) => toasts.filter(({ id }) => id !== toastToRemove.id))\n },\n [toasts],\n );\n\n React.useEffect(() => {\n return ToastState.subscribe((toast) => {\n if ((toast as ToastToDismiss).dismiss) {\n setToasts((toasts) => toasts.map((t) => (t.id === toast.id ? { ...t, delete: true } : t)));\n return;\n }\n\n // Prevent batching, temp solution.\n setTimeout(() => {\n ReactDOM.flushSync(() => {\n setToasts((toasts) => {\n const indexOfExistingToast = toasts.findIndex((t) => t.id === toast.id);\n\n // Update the toast if it already exists\n if (indexOfExistingToast !== -1) {\n return [\n ...toasts.slice(0, indexOfExistingToast),\n { ...toasts[indexOfExistingToast], ...toast },\n ...toasts.slice(indexOfExistingToast + 1),\n ];\n }\n\n return [toast, ...toasts];\n });\n });\n });\n });\n }, []);\n\n React.useEffect(() => {\n if (theme !== 'system') {\n setActualTheme(theme);\n return;\n }\n\n if (theme === 'system') {\n // check if current preference is dark\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n // it's currently dark\n setActualTheme('dark');\n } else {\n // it's not dark\n setActualTheme('light');\n }\n }\n\n if (typeof window === 'undefined') return;\n\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', ({ matches }) => {\n if (matches) {\n setActualTheme('dark');\n } else {\n setActualTheme('light');\n }\n });\n }, [theme]);\n\n React.useEffect(() => {\n // Ensure expanded is always false when no toasts are present / only one left\n if (toasts.length <= 1) {\n setExpanded(false);\n }\n }, [toasts]);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const isHotkeyPressed = hotkey.every((key) => (event as any)[key] || event.code === key);\n\n if (isHotkeyPressed) {\n setExpanded(true);\n listRef.current?.focus();\n }\n\n if (\n event.code === 'Escape' &&\n (document.activeElement === listRef.current || listRef.current?.contains(document.activeElement))\n ) {\n setExpanded(false);\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [hotkey]);\n\n React.useEffect(() => {\n if (listRef.current) {\n return () => {\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({ preventScroll: true });\n lastFocusedElementRef.current = null;\n isFocusWithinRef.current = false;\n }\n };\n }\n }, [listRef.current]);\n\n if (!toasts.length) return null;\n\n return (\n // Remove item from normal navigation flow, only available via hotkey\n <section aria-label={`${containerAriaLabel} ${hotkeyLabel}`} tabIndex={-1}>\n {possiblePositions.map((position, index) => {\n const [y, x] = position.split('-');\n return (\n <ol\n key={position}\n dir={dir === 'auto' ? getDocumentDirection() : dir}\n tabIndex={-1}\n ref={listRef}\n className={className}\n data-sonner-toaster\n data-theme={actualTheme}\n data-y-position={y}\n data-x-position={x}\n style={\n {\n '--front-toast-height': `${heights[0]?.height || 0}px`,\n '--offset': typeof offset === 'number' ? `${offset}px` : offset || VIEWPORT_OFFSET,\n '--width': `${TOAST_WIDTH}px`,\n '--gap': `${gap}px`,\n ...style,\n } as React.CSSProperties\n }\n onBlur={(event) => {\n if (isFocusWithinRef.current && !event.currentTarget.contains(event.relatedTarget)) {\n isFocusWithinRef.current = false;\n if (lastFocusedElementRef.current) {\n lastFocusedElementRef.current.focus({ preventScroll: true });\n lastFocusedElementRef.current = null;\n }\n }\n }}\n onFocus={(event) => {\n const isNotDismissible =\n event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n\n if (isNotDismissible) return;\n\n if (!isFocusWithinRef.current) {\n isFocusWithinRef.current = true;\n lastFocusedElementRef.current = event.relatedTarget as HTMLElement;\n }\n }}\n onMouseEnter={() => setExpanded(true)}\n onMouseMove={() => setExpanded(true)}\n onMouseLeave={() => {\n // Avoid setting expanded to false when interacting with a toast, e.g. swiping\n if (!interacting) {\n setExpanded(false);\n }\n }}\n onPointerDown={(event) => {\n const isNotDismissible =\n event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false';\n\n if (isNotDismissible) return;\n setInteracting(true);\n }}\n onPointerUp={() => setInteracting(false)}\n >\n {toasts\n .filter((toast) => (!toast.position && index === 0) || toast.position === position)\n .map((toast, index) => (\n <Toast\n key={toast.id}\n icons={icons}\n index={index}\n toast={toast}\n defaultRichColors={richColors}\n duration={toastOptions?.duration ?? duration}\n className={toastOptions?.className}\n descriptionClassName={toastOptions?.descriptionClassName}\n invert={invert}\n visibleToasts={visibleToasts}\n closeButton={toastOptions?.closeButton ?? closeButton}\n interacting={interacting}\n position={position}\n style={toastOptions?.style}\n unstyled={toastOptions?.unstyled}\n classNames={toastOptions?.classNames}\n cancelButtonStyle={toastOptions?.cancelButtonStyle}\n actionButtonStyle={toastOptions?.actionButtonStyle}\n removeToast={removeToast}\n toasts={toasts.filter((t) => t.position == toast.position)}\n heights={heights.filter((h) => h.position == toast.position)}\n setHeights={setHeights}\n expandByDefault={expand}\n gap={gap}\n loadingIcon={loadingIcon}\n expanded={expanded}\n pauseWhenPageIsHidden={pauseWhenPageIsHidden}\n cn={cn}\n />\n ))}\n </ol>\n );\n })}\n </section>\n );\n};\nexport { toast, Toaster, type ExternalToast, type ToastT, type ToasterProps, useSonner };\n","import React from 'react';\n\nexport const useIsDocumentHidden = () => {\n const [isDocumentHidden, setIsDocumentHidden] = React.useState(document.hidden);\n\n React.useEffect(() => {\n const callback = () => {\n setIsDocumentHidden(document.hidden);\n };\n document.addEventListener('visibilitychange', callback);\n return () => window.removeEventListener('visibilitychange', callback);\n }, []);\n\n return isDocumentHidden;\n};\n","import ErrorMessage from '@/components/ErrorMessage'\r\nimport React, { ReactNode } from 'react'\r\nimport { Toaster } from 'sonner'\r\n\r\ninterface LayoutProps {\r\n navbar: ReactNode\r\n children: ReactNode\r\n footer: ReactNode\r\n}\r\n\r\nconst MAX_WIDTH = '1600px'\r\nconst MIN_HEIGHT = '75vh'\r\n\r\nexport const Layout: React.FC<LayoutProps> = ({ navbar, children, footer }) => {\r\n return (\r\n <>\r\n <ErrorMessage />\r\n\r\n <div className='d-flex justify-content-center mb-3'>\r\n <header className='w-100' style={{ maxWidth: MAX_WIDTH }}>\r\n {navbar}\r\n </header>\r\n </div>\r\n\r\n <div className='d-flex justify-content-center'>\r\n <div className='w-100' style={{ maxWidth: MAX_WIDTH, minHeight: MIN_HEIGHT }}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n <div className='d-flex w-100 justify-content-center border-top'>\r\n <footer style={{ maxWidth: MAX_WIDTH }}>{footer}</footer>\r\n </div>\r\n\r\n <Toaster richColors />\r\n </>\r\n )\r\n}\r\n","export const LoadingIndicator = () => (\r\n <div className='d-flex justify-content-center'>\r\n <div className='spinner-border' role='status'>\r\n <span className='visually-hidden'>Loading...</span>\r\n </div>\r\n </div>\r\n)\r\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<HashRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return <Link {...props} />;\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","var _excluded = [\"expand\", \"className\", \"cssModule\", \"light\", \"dark\", \"fixed\", \"sticky\", \"color\", \"container\", \"tag\", \"children\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Theme the navbar by adding a background color */\n color: PropTypes.string,\n /** Use any of the responsive containers to change how wide the content in your navbar is presented. */\n container: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** This prop is passed if the background is dark, to make the text lighter */\n dark: PropTypes.bool,\n /** Determine if to show toggler button */\n expand: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /** Make the navbar fixed at the top */\n fixed: PropTypes.string,\n /** Add `.navbar-light` class */\n light: PropTypes.bool,\n role: PropTypes.string,\n /** Use `position: sticky` which isn't fully supported in every browser */\n sticky: PropTypes.string,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nvar getExpandClass = function getExpandClass(expand) {\n if (expand === false) {\n return false;\n }\n if (expand === true || expand === 'xs') {\n return 'navbar-expand';\n }\n return \"navbar-expand-\".concat(expand);\n};\nfunction Navbar(props) {\n var _classNames;\n var _props$expand = props.expand,\n expand = _props$expand === void 0 ? false : _props$expand,\n className = props.className,\n cssModule = props.cssModule,\n light = props.light,\n dark = props.dark,\n fixed = props.fixed,\n sticky = props.sticky,\n color = props.color,\n _props$container = props.container,\n container = _props$container === void 0 ? 'fluid' : _props$container,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'nav' : _props$tag,\n children = props.children,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'navbar', getExpandClass(expand), (_classNames = {\n 'navbar-light': light,\n 'navbar-dark': dark\n }, _defineProperty(_classNames, \"bg-\".concat(color), color), _defineProperty(_classNames, \"fixed-\".concat(fixed), fixed), _defineProperty(_classNames, \"sticky-\".concat(sticky), sticky), _classNames)), cssModule);\n var containerClass = container && container === true ? 'container' : \"container-\".concat(container);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }), container ? /*#__PURE__*/React.createElement(\"div\", {\n className: containerClass\n }, children) : children);\n}\nNavbar.propTypes = propTypes;\nexport default Navbar;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction NavbarBrand(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'a' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'navbar-brand'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nNavbarBrand.propTypes = propTypes;\nexport default NavbarBrand;","var _excluded = [\"className\", \"cssModule\", \"children\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType,\n type: PropTypes.string,\n /** Pass children so this component can wrap the child elements */\n children: PropTypes.node\n};\nfunction NavbarToggler(props) {\n var className = props.className,\n cssModule = props.cssModule,\n children = props.children,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'button' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'navbar-toggler'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n \"aria-label\": \"Toggle navigation\"\n }, _objectSpread({\n type: 'button'\n }, attributes), {\n className: classes\n }), children || /*#__PURE__*/React.createElement(\"span\", {\n className: mapToCssModules('navbar-toggler-icon', cssModule)\n }));\n}\nNavbarToggler.propTypes = propTypes;\nexport default NavbarToggler;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"tag\", \"horizontal\", \"isOpen\", \"className\", \"navbar\", \"cssModule\", \"children\", \"innerRef\"];\nvar _transitionStatusToCl;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionTimeouts, TransitionPropTypeKeys, TransitionStatuses, tagPropType } from './utils';\nvar propTypes = _objectSpread(_objectSpread({}, Transition.propTypes), {}, {\n /** Make content animation appear horizontally */\n horizontal: PropTypes.bool,\n /** Set if Collapse is open or closed */\n isOpen: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Add custom class */\n className: PropTypes.node,\n navbar: PropTypes.bool,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n innerRef: PropTypes.shape({\n current: PropTypes.object\n })\n});\nvar defaultProps = _objectSpread(_objectSpread({}, Transition.defaultProps), {}, {\n horizontal: false,\n isOpen: false,\n appear: false,\n enter: true,\n exit: true,\n tag: 'div',\n timeout: TransitionTimeouts.Collapse\n});\nvar transitionStatusToClassHash = (_transitionStatusToCl = {}, _defineProperty(_transitionStatusToCl, TransitionStatuses.ENTERING, 'collapsing'), _defineProperty(_transitionStatusToCl, TransitionStatuses.ENTERED, 'collapse show'), _defineProperty(_transitionStatusToCl, TransitionStatuses.EXITING, 'collapsing'), _defineProperty(_transitionStatusToCl, TransitionStatuses.EXITED, 'collapse'), _transitionStatusToCl);\nfunction getTransitionClass(status) {\n return transitionStatusToClassHash[status] || 'collapse';\n}\nvar Collapse = /*#__PURE__*/function (_Component) {\n _inherits(Collapse, _Component);\n var _super = _createSuper(Collapse);\n function Collapse(props) {\n var _this;\n _classCallCheck(this, Collapse);\n _this = _super.call(this, props);\n _this.state = {\n dimension: null\n };\n _this.nodeRef = props.innerRef || /*#__PURE__*/React.createRef();\n ['onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'].forEach(function (name) {\n _this[name] = _this[name].bind(_assertThisInitialized(_this));\n });\n return _this;\n }\n _createClass(Collapse, [{\n key: \"onEntering\",\n value: function onEntering(_, isAppearing) {\n var node = this.getNode();\n this.setState({\n dimension: this.getDimension(node)\n });\n this.props.onEntering(node, isAppearing);\n }\n }, {\n key: \"onEntered\",\n value: function onEntered(_, isAppearing) {\n var node = this.getNode();\n this.setState({\n dimension: null\n });\n this.props.onEntered(node, isAppearing);\n }\n }, {\n key: \"onExit\",\n value: function onExit() {\n var node = this.getNode();\n this.setState({\n dimension: this.getDimension(node)\n });\n this.props.onExit(node);\n }\n }, {\n key: \"onExiting\",\n value: function onExiting() {\n var node = this.getNode();\n // getting this variable triggers a reflow\n var _unused = this.getDimension(node); // eslint-disable-line no-unused-vars\n this.setState({\n dimension: 0\n });\n this.props.onExiting(node);\n }\n }, {\n key: \"onExited\",\n value: function onExited() {\n var node = this.getNode();\n this.setState({\n dimension: null\n });\n this.props.onExited(node);\n }\n }, {\n key: \"getNode\",\n value: function getNode() {\n return this.nodeRef.current;\n }\n }, {\n key: \"getDimension\",\n value: function getDimension(node) {\n return this.props.horizontal ? node.scrollWidth : node.scrollHeight;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n Tag = _this$props.tag,\n horizontal = _this$props.horizontal,\n isOpen = _this$props.isOpen,\n className = _this$props.className,\n navbar = _this$props.navbar,\n cssModule = _this$props.cssModule,\n children = _this$props.children,\n innerRef = _this$props.innerRef,\n otherProps = _objectWithoutProperties(_this$props, _excluded);\n var dimension = this.state.dimension;\n var transitionProps = pick(otherProps, TransitionPropTypeKeys);\n var childProps = omit(otherProps, TransitionPropTypeKeys);\n return /*#__PURE__*/React.createElement(Transition, _extends({}, transitionProps, {\n \"in\": isOpen,\n nodeRef: this.nodeRef,\n onEntering: this.onEntering,\n onEntered: this.onEntered,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }), function (status) {\n var collapseClass = getTransitionClass(status);\n var classes = mapToCssModules(classNames(className, horizontal && 'collapse-horizontal', collapseClass, navbar && 'navbar-collapse'), cssModule);\n var style = dimension === null ? null : _defineProperty({}, horizontal ? 'width' : 'height', dimension);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, childProps, {\n style: _objectSpread(_objectSpread({}, childProps.style), style),\n className: classes,\n ref: _this2.nodeRef\n }), children);\n });\n }\n }]);\n return Collapse;\n}(Component);\nCollapse.propTypes = propTypes;\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","var _excluded = [\"className\", \"cssModule\", \"tabs\", \"pills\", \"vertical\", \"horizontal\", \"justified\", \"fill\", \"navbar\", \"card\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Adding card prop adds `.card-header-tabs` or `.card-header-pills` class */\n card: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** fills the nav to extend to full available width */\n fill: PropTypes.bool,\n /** Change the horizontal alignment of your nav */\n horizontal: PropTypes.oneOf(['center', 'end']),\n /** All horizontal space will be occupied by nav links, but unlike the `fill` above, every nav item will be the same width. */\n justified: PropTypes.bool,\n /** Add navbar for a full-height and lightweight navigation */\n navbar: PropTypes.bool,\n /** Make NavItems look like pills */\n pills: PropTypes.bool,\n /** Make NavItems look like tabs */\n tabs: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Stack your navigation by changing the flex item direction */\n vertical: PropTypes.oneOfType([PropTypes.bool, PropTypes.string])\n};\nvar getVerticalClass = function getVerticalClass(vertical) {\n if (vertical === false) {\n return false;\n }\n if (vertical === true || vertical === 'xs') {\n return 'flex-column';\n }\n return \"flex-\".concat(vertical, \"-column\");\n};\nfunction Nav(props) {\n var className = props.className,\n cssModule = props.cssModule,\n tabs = props.tabs,\n pills = props.pills,\n _props$vertical = props.vertical,\n vertical = _props$vertical === void 0 ? false : _props$vertical,\n horizontal = props.horizontal,\n justified = props.justified,\n fill = props.fill,\n navbar = props.navbar,\n card = props.card,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'ul' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, navbar ? 'navbar-nav' : 'nav', horizontal ? \"justify-content-\".concat(horizontal) : false, getVerticalClass(vertical), {\n 'nav-tabs': tabs,\n 'card-header-tabs': card && tabs,\n 'nav-pills': pills,\n 'card-header-pills': card && pills,\n 'nav-justified': justified,\n 'nav-fill': fill\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nNav.propTypes = propTypes;\nexport default Nav;","var _excluded = [\"className\", \"cssModule\", \"active\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add active class to element */\n active: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction NavItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n active = props.active,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'li' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'nav-item', active ? 'active' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nNavItem.propTypes = propTypes;\nexport default NavItem;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"className\", \"cssModule\", \"active\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add active class to NavLink */\n active: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Disable the link */\n disabled: PropTypes.bool,\n href: PropTypes.any,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n /** Function to be triggered on click */\n onClick: PropTypes.func,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nvar NavLink = /*#__PURE__*/function (_React$Component) {\n _inherits(NavLink, _React$Component);\n var _super = _createSuper(NavLink);\n function NavLink(props) {\n var _this;\n _classCallCheck(this, NavLink);\n _this = _super.call(this, props);\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(NavLink, [{\n key: \"onClick\",\n value: function onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n if (this.props.href === '#') {\n e.preventDefault();\n }\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n active = _this$props.active,\n _this$props$tag = _this$props.tag,\n Tag = _this$props$tag === void 0 ? 'a' : _this$props$tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutProperties(_this$props, _excluded);\n var classes = mapToCssModules(classNames(className, 'nav-link', {\n disabled: attributes.disabled,\n active: active\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n onClick: this.onClick,\n className: classes\n }));\n }\n }]);\n return NavLink;\n}(React.Component);\nNavLink.propTypes = propTypes;\nexport default NavLink;","import * as React from 'react';\nexport var ManagerReferenceNodeContext = React.createContext();\nexport var ManagerReferenceNodeSetterContext = React.createContext();\nexport function Manager(_ref) {\n var children = _ref.children;\n\n var _React$useState = React.useState(null),\n referenceNode = _React$useState[0],\n setReferenceNode = _React$useState[1];\n\n var hasUnmounted = React.useRef(false);\n React.useEffect(function () {\n return function () {\n hasUnmounted.current = true;\n };\n }, []);\n var handleSetReferenceNode = React.useCallback(function (node) {\n if (!hasUnmounted.current) {\n setReferenceNode(node);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, {\n value: referenceNode\n }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: handleSetReferenceNode\n }, children));\n}","import React from 'react';\n\n/**\n * DropdownContext\n * {\n * toggle: PropTypes.func.isRequired,\n * isOpen: PropTypes.bool.isRequired,\n * direction: PropTypes.oneOf(['up', 'down', 'start', 'end']).isRequired,\n * inNavbar: PropTypes.bool.isRequired,\n * disabled: PropTypes.bool\n * }\n */\nexport var DropdownContext = /*#__PURE__*/React.createContext({});","import React from 'react';\nexport var InputGroupContext = /*#__PURE__*/React.createContext({});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"className\", \"cssModule\", \"direction\", \"isOpen\", \"group\", \"size\", \"nav\", \"setActiveFromChild\", \"active\", \"tag\", \"menuRole\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n/* eslint react/no-find-dom-node: 0 */\n// https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Manager } from 'react-popper';\nimport classNames from 'classnames';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, omit, keyCodes, tagPropType } from './utils';\nimport { InputGroupContext } from './InputGroupContext';\nvar propTypes = {\n a11y: PropTypes.bool,\n disabled: PropTypes.bool,\n direction: PropTypes.oneOf(['up', 'down', 'start', 'end', 'left', 'right']),\n group: PropTypes.bool,\n isOpen: PropTypes.bool,\n nav: PropTypes.bool,\n active: PropTypes.bool,\n size: PropTypes.string,\n tag: tagPropType,\n toggle: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n dropup: PropTypes.bool,\n inNavbar: PropTypes.bool,\n setActiveFromChild: PropTypes.bool,\n menuRole: PropTypes.oneOf(['listbox', 'menu'])\n};\nvar defaultProps = {\n a11y: true,\n isOpen: false,\n direction: 'down',\n nav: false,\n active: false,\n inNavbar: false,\n setActiveFromChild: false\n};\nvar preventDefaultKeys = [keyCodes.space, keyCodes.enter, keyCodes.up, keyCodes.down, keyCodes.end, keyCodes.home];\nvar Dropdown = /*#__PURE__*/function (_React$Component) {\n _inherits(Dropdown, _React$Component);\n var _super = _createSuper(Dropdown);\n function Dropdown(props) {\n var _this;\n _classCallCheck(this, Dropdown);\n _this = _super.call(this, props);\n _this.addEvents = _this.addEvents.bind(_assertThisInitialized(_this));\n _this.handleDocumentClick = _this.handleDocumentClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n _this.removeEvents = _this.removeEvents.bind(_assertThisInitialized(_this));\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n _this.handleMenuRef = _this.handleMenuRef.bind(_assertThisInitialized(_this));\n _this.handleToggleRef = _this.handleToggleRef.bind(_assertThisInitialized(_this));\n _this.containerRef = /*#__PURE__*/React.createRef();\n _this.menuRef = /*#__PURE__*/React.createRef();\n _this.toggleRef = /*#__PURE__*/React.createRef();\n // ref for DropdownToggle\n return _this;\n }\n _createClass(Dropdown, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.handleProps();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.isOpen !== prevProps.isOpen) {\n this.handleProps();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeEvents();\n }\n }, {\n key: \"handleMenuRef\",\n value: function handleMenuRef(menuRef) {\n this.menuRef.current = menuRef;\n }\n }, {\n key: \"handleToggleRef\",\n value: function handleToggleRef(toggleRef) {\n this.toggleRef.current = toggleRef;\n }\n }, {\n key: \"handleDocumentClick\",\n value: function handleDocumentClick(e) {\n if (e && (e.which === 3 || e.type === 'keyup' && e.which !== keyCodes.tab)) return;\n var container = this.getContainer();\n var menu = this.getMenu();\n var toggle = this.getToggle();\n\n // Add a conditional check to avoid using toggle \n // if there is no toggle component in the dropdown\n if (!toggle) {\n return;\n }\n var targetIsToggle = toggle.contains(e.target);\n var clickIsInMenu = menu && menu.contains(e.target) && menu !== e.target;\n var clickIsInInput = false;\n if (container) {\n // This is only for InputGroup with type dropdown\n clickIsInInput = container.classList.contains('input-group') && container.classList.contains('dropdown') && e.target.tagName === 'INPUT';\n }\n if ((targetIsToggle && !clickIsInInput || clickIsInMenu) && (e.type !== 'keyup' || e.which === keyCodes.tab)) {\n return;\n }\n this.toggle(e);\n }\n }, {\n key: \"handleKeyDown\",\n value: function handleKeyDown(e) {\n var _this2 = this;\n var isTargetMenuItem = e.target.getAttribute('role') === 'menuitem' || e.target.getAttribute('role') === 'option';\n var isTargetMenuCtrl = this.getMenuCtrl() === e.target;\n var isTab = keyCodes.tab === e.which;\n if (/input|textarea/i.test(e.target.tagName) || isTab && !this.props.a11y || isTab && !(isTargetMenuItem || isTargetMenuCtrl)) {\n return;\n }\n if (preventDefaultKeys.indexOf(e.which) !== -1 || e.which >= 48 && e.which <= 90) {\n e.preventDefault();\n }\n if (this.props.disabled) return;\n if (isTargetMenuCtrl) {\n if ([keyCodes.space, keyCodes.enter, keyCodes.up, keyCodes.down].indexOf(e.which) > -1) {\n // Open the menu (if not open) and focus the first menu item\n if (!this.props.isOpen) {\n this.toggle(e);\n }\n setTimeout(function () {\n var _this2$getMenuItems$;\n return (_this2$getMenuItems$ = _this2.getMenuItems()[0]) === null || _this2$getMenuItems$ === void 0 ? void 0 : _this2$getMenuItems$.focus();\n });\n } else if (this.props.isOpen && isTab) {\n var _this$getMenuItems$;\n // Focus the first menu item if tabbing from an open menu. We need this\n // for cases where the DropdownMenu sets a custom container, which may\n // not be the natural next item to tab to from the DropdownToggle.\n e.preventDefault();\n (_this$getMenuItems$ = this.getMenuItems()[0]) === null || _this$getMenuItems$ === void 0 ? void 0 : _this$getMenuItems$.focus();\n } else if (this.props.isOpen && e.which === keyCodes.esc) {\n this.toggle(e);\n }\n }\n if (this.props.isOpen && isTargetMenuItem) {\n if ([keyCodes.tab, keyCodes.esc].indexOf(e.which) > -1) {\n this.toggle(e);\n this.getMenuCtrl().focus();\n } else if ([keyCodes.space, keyCodes.enter].indexOf(e.which) > -1) {\n e.target.click();\n this.getMenuCtrl().focus();\n } else if ([keyCodes.down, keyCodes.up].indexOf(e.which) > -1 || [keyCodes.n, keyCodes.p].indexOf(e.which) > -1 && e.ctrlKey) {\n var $menuitems = this.getMenuItems();\n var index = $menuitems.indexOf(e.target);\n if (keyCodes.up === e.which || keyCodes.p === e.which && e.ctrlKey) {\n index = index !== 0 ? index - 1 : $menuitems.length - 1;\n } else if (keyCodes.down === e.which || keyCodes.n === e.which && e.ctrlKey) {\n index = index === $menuitems.length - 1 ? 0 : index + 1;\n }\n $menuitems[index].focus();\n } else if (keyCodes.end === e.which) {\n var _$menuitems = this.getMenuItems();\n _$menuitems[_$menuitems.length - 1].focus();\n } else if (keyCodes.home === e.which) {\n var _$menuitems2 = this.getMenuItems();\n _$menuitems2[0].focus();\n } else if (e.which >= 48 && e.which <= 90) {\n var _$menuitems3 = this.getMenuItems();\n var charPressed = String.fromCharCode(e.which).toLowerCase();\n for (var i = 0; i < _$menuitems3.length; i += 1) {\n var firstLetter = _$menuitems3[i].textContent && _$menuitems3[i].textContent[0].toLowerCase();\n if (firstLetter === charPressed) {\n _$menuitems3[i].focus();\n break;\n }\n }\n }\n }\n }\n }, {\n key: \"handleProps\",\n value: function handleProps() {\n if (this.props.isOpen) {\n this.addEvents();\n } else {\n this.removeEvents();\n }\n }\n }, {\n key: \"getContextValue\",\n value: function getContextValue() {\n return {\n toggle: this.toggle,\n isOpen: this.props.isOpen,\n direction: this.props.direction === 'down' && this.props.dropup ? 'up' : this.props.direction,\n inNavbar: this.props.inNavbar,\n disabled: this.props.disabled,\n // Callback that should be called by DropdownMenu to provide a ref to\n // a HTML tag that's used for the DropdownMenu\n onMenuRef: this.handleMenuRef,\n onToggleRef: this.handleToggleRef,\n menuRole: this.props.menuRole\n };\n }\n }, {\n key: \"getContainer\",\n value: function getContainer() {\n return this.containerRef.current;\n }\n }, {\n key: \"getMenu\",\n value: function getMenu() {\n return this.menuRef.current;\n }\n }, {\n key: \"getToggle\",\n value: function getToggle() {\n return this.toggleRef.current;\n }\n }, {\n key: \"getMenuCtrl\",\n value: function getMenuCtrl() {\n if (this._$menuCtrl) return this._$menuCtrl;\n this._$menuCtrl = this.getToggle();\n return this._$menuCtrl;\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n if (this.props.menuRole === 'listbox') {\n return 'option';\n }\n return 'menuitem';\n }\n }, {\n key: \"getMenuItems\",\n value: function getMenuItems() {\n // In a real menu with a child DropdownMenu, `this.getMenu()` should never\n // be null, but it is sometimes null in tests. To mitigate that, we just\n // use `this.getContainer()` as the fallback `menuContainer`.\n var menuContainer = this.getMenu() || this.getContainer();\n return [].slice.call(menuContainer.querySelectorAll(\"[role=\\\"\".concat(this.getItemType(), \"\\\"]\")));\n }\n }, {\n key: \"addEvents\",\n value: function addEvents() {\n var _this3 = this;\n ['click', 'touchstart', 'keyup'].forEach(function (event) {\n return document.addEventListener(event, _this3.handleDocumentClick, true);\n });\n }\n }, {\n key: \"removeEvents\",\n value: function removeEvents() {\n var _this4 = this;\n ['click', 'touchstart', 'keyup'].forEach(function (event) {\n return document.removeEventListener(event, _this4.handleDocumentClick, true);\n });\n }\n }, {\n key: \"toggle\",\n value: function toggle(e) {\n if (this.props.disabled) {\n return e && e.preventDefault();\n }\n return this.props.toggle(e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames,\n _this5 = this;\n var _omit = omit(this.props, ['toggle', 'disabled', 'inNavbar', 'a11y']),\n className = _omit.className,\n cssModule = _omit.cssModule,\n direction = _omit.direction,\n isOpen = _omit.isOpen,\n group = _omit.group,\n size = _omit.size,\n nav = _omit.nav,\n setActiveFromChild = _omit.setActiveFromChild,\n active = _omit.active,\n tag = _omit.tag,\n menuRole = _omit.menuRole,\n attrs = _objectWithoutProperties(_omit, _excluded);\n var Tag = tag || (nav ? 'li' : 'div');\n var subItemIsActive = false;\n if (setActiveFromChild) {\n React.Children.map(this.props.children[1].props.children, function (dropdownItem) {\n if (dropdownItem && dropdownItem.props.active) subItemIsActive = true;\n });\n }\n var classes = mapToCssModules(classNames(className, nav && active ? 'active' : false, setActiveFromChild && subItemIsActive ? 'active' : false, (_classNames = {\n 'btn-group': group\n }, _defineProperty(_classNames, \"btn-group-\".concat(size), !!size), _defineProperty(_classNames, \"dropdown\", !group), _defineProperty(_classNames, \"dropup\", direction === 'up'), _defineProperty(_classNames, \"dropstart\", direction === 'start' || direction === 'left'), _defineProperty(_classNames, \"dropend\", direction === 'end' || direction === 'right'), _defineProperty(_classNames, \"show\", isOpen), _defineProperty(_classNames, 'nav-item', nav), _classNames)), cssModule);\n if (this.context.insideInputGroup) {\n return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n value: this.getContextValue()\n }, /*#__PURE__*/React.createElement(Manager, null, React.Children.map(this.props.children, function (child) {\n return /*#__PURE__*/React.cloneElement(child, {\n onKeyDown: _this5.handleKeyDown\n });\n })));\n }\n return /*#__PURE__*/React.createElement(DropdownContext.Provider, {\n value: this.getContextValue()\n }, /*#__PURE__*/React.createElement(Manager, null, /*#__PURE__*/React.createElement(Tag, _extends({}, attrs, _defineProperty({}, typeof Tag === 'string' ? 'ref' : 'innerRef', this.containerRef), {\n onKeyDown: this.handleKeyDown,\n className: classes\n }))));\n }\n }]);\n return Dropdown;\n}(React.Component);\nDropdown.propTypes = propTypes;\nDropdown.defaultProps = defaultProps;\nDropdown.contextType = InputGroupContext;\nexport default Dropdown;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from './Dropdown';\nimport { omit } from './utils';\nvar omitKeys = ['defaultOpen'];\nvar UncontrolledDropdown = /*#__PURE__*/function (_Component) {\n _inherits(UncontrolledDropdown, _Component);\n var _super = _createSuper(UncontrolledDropdown);\n function UncontrolledDropdown(props) {\n var _this;\n _classCallCheck(this, UncontrolledDropdown);\n _this = _super.call(this, props);\n _this.state = {\n isOpen: props.defaultOpen || false\n };\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(UncontrolledDropdown, [{\n key: \"toggle\",\n value: function toggle(e) {\n var _this2 = this;\n this.setState(function (prevState) {\n return {\n isOpen: !prevState.isOpen\n };\n }, function () {\n if (_this2.props.onToggle) {\n _this2.props.onToggle(e, _this2.state.isOpen);\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(Dropdown, _extends({\n isOpen: this.state.isOpen,\n toggle: this.toggle\n }, omit(this.props, omitKeys)));\n }\n }]);\n return UncontrolledDropdown;\n}(Component);\nexport { UncontrolledDropdown as default };\nUncontrolledDropdown.propTypes = _objectSpread({\n defaultOpen: PropTypes.bool,\n onToggle: PropTypes.func\n}, Dropdown.propTypes);","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","import * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\nexport function Reference(_ref) {\n var children = _ref.children,\n innerRef = _ref.innerRef;\n var setReferenceNode = React.useContext(ManagerReferenceNodeSetterContext);\n var refHandler = React.useCallback(function (node) {\n setRef(innerRef, node);\n safeInvoke(setReferenceNode, node);\n }, [innerRef, setReferenceNode]); // ran on unmount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n React.useEffect(function () {\n return function () {\n return setRef(innerRef, null);\n };\n }, []);\n React.useEffect(function () {\n warning(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n }, [setReferenceNode]);\n return unwrapArray(children)({\n ref: refHandler\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"className\", \"color\", \"cssModule\", \"caret\", \"split\", \"nav\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Reference } from 'react-popper';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Button from './Button';\nvar propTypes = {\n caret: PropTypes.bool,\n color: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n 'aria-haspopup': PropTypes.bool,\n split: PropTypes.bool,\n tag: tagPropType,\n nav: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nvar defaultProps = {\n color: 'secondary',\n 'aria-haspopup': true\n};\nvar DropdownToggle = /*#__PURE__*/function (_React$Component) {\n _inherits(DropdownToggle, _React$Component);\n var _super = _createSuper(DropdownToggle);\n function DropdownToggle(props) {\n var _this;\n _classCallCheck(this, DropdownToggle);\n _this = _super.call(this, props);\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(DropdownToggle, [{\n key: \"onClick\",\n value: function onClick(e) {\n if (this.props.disabled || this.context.disabled) {\n e.preventDefault();\n return;\n }\n if (this.props.nav && !this.props.tag) {\n e.preventDefault();\n }\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n this.context.toggle(e);\n }\n }, {\n key: \"getRole\",\n value: function getRole() {\n return this.context.menuRole || this.props['aria-haspopup'];\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n className = _this$props.className,\n color = _this$props.color,\n cssModule = _this$props.cssModule,\n caret = _this$props.caret,\n split = _this$props.split,\n nav = _this$props.nav,\n tag = _this$props.tag,\n innerRef = _this$props.innerRef,\n props = _objectWithoutProperties(_this$props, _excluded);\n var ariaLabel = props['aria-label'] || 'Toggle Dropdown';\n var classes = mapToCssModules(classNames(className, {\n 'dropdown-toggle': caret || split,\n 'dropdown-toggle-split': split,\n 'nav-link': nav\n }), cssModule);\n var children = typeof props.children !== 'undefined' ? props.children : /*#__PURE__*/React.createElement(\"span\", {\n className: \"visually-hidden\"\n }, ariaLabel);\n var Tag;\n if (nav && !tag) {\n Tag = 'a';\n props.href = '#';\n } else if (!tag) {\n Tag = Button;\n props.color = color;\n props.cssModule = cssModule;\n } else {\n Tag = tag;\n }\n\n // extracted the rendering of the Tag component\n var returnFunction = function returnFunction(_ref) {\n var ref = _ref.ref;\n var handleRef = function handleRef(tagRef) {\n ref(tagRef);\n var onToggleRef = _this2.context.onToggleRef;\n if (onToggleRef) onToggleRef(tagRef);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({}, props, _defineProperty({}, typeof Tag === 'string' ? 'ref' : 'innerRef', handleRef), {\n className: classes,\n onClick: _this2.onClick,\n \"aria-expanded\": _this2.context.isOpen,\n \"aria-haspopup\": _this2.getRole(),\n children: children\n }));\n };\n\n // No Reference component if the component is in Navbar\n if (this.context.inNavbar) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, returnFunction({\n ref: this.context.onToggleRef\n }));\n }\n\n // Normal rendering if component not in NavBar\n return /*#__PURE__*/React.createElement(Reference, {\n innerRef: innerRef\n }, returnFunction);\n }\n }]);\n return DropdownToggle;\n}(React.Component);\nDropdownToggle.propTypes = propTypes;\nDropdownToggle.defaultProps = defaultProps;\nDropdownToggle.contextType = DropdownContext;\nexport default DropdownToggle;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n ReactDOM.flushSync(function () {\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import * as React from 'react';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef } from './utils';\nimport { usePopper } from './usePopper';\n\nvar NOOP = function NOOP() {\n return void 0;\n};\n\nvar NOOP_PROMISE = function NOOP_PROMISE() {\n return Promise.resolve(null);\n};\n\nvar EMPTY_MODIFIERS = [];\nexport function Popper(_ref) {\n var _ref$placement = _ref.placement,\n placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,\n _ref$strategy = _ref.strategy,\n strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy,\n _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers,\n referenceElement = _ref.referenceElement,\n onFirstUpdate = _ref.onFirstUpdate,\n innerRef = _ref.innerRef,\n children = _ref.children;\n var referenceNode = React.useContext(ManagerReferenceNodeContext);\n\n var _React$useState = React.useState(null),\n popperElement = _React$useState[0],\n setPopperElement = _React$useState[1];\n\n var _React$useState2 = React.useState(null),\n arrowElement = _React$useState2[0],\n setArrowElement = _React$useState2[1];\n\n React.useEffect(function () {\n setRef(innerRef, popperElement);\n }, [innerRef, popperElement]);\n var options = React.useMemo(function () {\n return {\n placement: placement,\n strategy: strategy,\n onFirstUpdate: onFirstUpdate,\n modifiers: [].concat(modifiers, [{\n name: 'arrow',\n enabled: arrowElement != null,\n options: {\n element: arrowElement\n }\n }])\n };\n }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]);\n\n var _usePopper = usePopper(referenceElement || referenceNode, popperElement, options),\n state = _usePopper.state,\n styles = _usePopper.styles,\n forceUpdate = _usePopper.forceUpdate,\n update = _usePopper.update;\n\n var childrenProps = React.useMemo(function () {\n return {\n ref: setPopperElement,\n style: styles.popper,\n placement: state ? state.placement : placement,\n hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null,\n isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null,\n arrowProps: {\n style: styles.arrow,\n ref: setArrowElement\n },\n forceUpdate: forceUpdate || NOOP,\n update: update || NOOP_PROMISE\n };\n }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]);\n return unwrapArray(children)(childrenProps);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"className\", \"cssModule\", \"dark\", \"end\", \"right\", \"tag\", \"flip\", \"modifiers\", \"persist\", \"strategy\", \"container\", \"updateOnSelect\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { Popper } from 'react-popper';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, tagPropType, targetPropType, getTarget, deprecated } from './utils';\nvar propTypes = {\n tag: tagPropType,\n children: PropTypes.node.isRequired,\n dark: PropTypes.bool,\n end: PropTypes.bool,\n /** Flips the menu to the opposite side if there is not enough space to fit */\n flip: PropTypes.bool,\n modifiers: PropTypes.array,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n style: PropTypes.object,\n persist: PropTypes.bool,\n strategy: PropTypes.string,\n container: targetPropType,\n /** Update popper layout when a click event comes up. This leverages event bubbling. */\n updateOnSelect: PropTypes.bool,\n right: deprecated(PropTypes.bool, 'Please use \"end\" instead.')\n};\nvar directionPositionMap = {\n up: 'top',\n left: 'left',\n right: 'right',\n start: 'left',\n end: 'right',\n down: 'bottom'\n};\nvar DropdownMenu = /*#__PURE__*/function (_React$Component) {\n _inherits(DropdownMenu, _React$Component);\n var _super = _createSuper(DropdownMenu);\n function DropdownMenu() {\n _classCallCheck(this, DropdownMenu);\n return _super.apply(this, arguments);\n }\n _createClass(DropdownMenu, [{\n key: \"getRole\",\n value: function getRole() {\n if (this.context.menuRole === 'listbox') {\n return 'listbox';\n }\n return 'menu';\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n dark = _this$props.dark,\n end = _this$props.end,\n right = _this$props.right,\n _this$props$tag = _this$props.tag,\n tag = _this$props$tag === void 0 ? 'div' : _this$props$tag,\n _this$props$flip = _this$props.flip,\n flip = _this$props$flip === void 0 ? true : _this$props$flip,\n _this$props$modifiers = _this$props.modifiers,\n modifiers = _this$props$modifiers === void 0 ? [] : _this$props$modifiers,\n persist = _this$props.persist,\n strategy = _this$props.strategy,\n container = _this$props.container,\n updateOnSelect = _this$props.updateOnSelect,\n attrs = _objectWithoutProperties(_this$props, _excluded);\n var classes = mapToCssModules(classNames(className, 'dropdown-menu', {\n 'dropdown-menu-dark': dark,\n 'dropdown-menu-end': end || right,\n show: this.context.isOpen\n }), cssModule);\n var Tag = tag;\n if (persist || this.context.isOpen && !this.context.inNavbar) {\n var position1 = directionPositionMap[this.context.direction] || 'bottom';\n var position2 = end || right ? 'end' : 'start';\n var poperPlacement = \"\".concat(position1, \"-\").concat(position2);\n var poperModifiers = [].concat(_toConsumableArray(modifiers), [{\n name: 'flip',\n enabled: !!flip\n }]);\n var persistStyles = {};\n if (persist) {\n persistStyles.display = 'block';\n persistStyles.visibility = this.context.isOpen ? 'visible' : 'hidden';\n }\n var popper = /*#__PURE__*/React.createElement(Popper, {\n placement: poperPlacement,\n modifiers: poperModifiers,\n strategy: strategy\n }, function (_ref) {\n var ref = _ref.ref,\n style = _ref.style,\n placement = _ref.placement,\n update = _ref.update;\n var combinedStyle = _objectSpread(_objectSpread(_objectSpread({}, _this.props.style), persistStyles), style);\n var handleRef = function handleRef(tagRef) {\n // Send the ref to `react-popper`\n ref(tagRef);\n // Send the ref to the parent Dropdown so that clicks outside\n // it will cause it to close\n var onMenuRef = _this.context.onMenuRef;\n if (onMenuRef) onMenuRef(tagRef);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n tabIndex: \"-1\",\n role: _this.getRole(),\n ref: handleRef\n }, attrs, {\n style: combinedStyle,\n \"aria-hidden\": !_this.context.isOpen,\n className: classes,\n \"data-popper-placement\": placement,\n onClick: function onClick() {\n return updateOnSelect && update();\n }\n }));\n });\n if (container) {\n return /*#__PURE__*/ReactDOM.createPortal(popper, getTarget(container));\n }\n return popper;\n }\n var onMenuRef = this.context.onMenuRef;\n return /*#__PURE__*/React.createElement(Tag, _extends({\n tabIndex: \"-1\",\n role: this.getRole()\n }, attrs, {\n ref: onMenuRef,\n \"aria-hidden\": !this.context.isOpen,\n className: classes,\n \"data-popper-placement\": attrs.placement,\n \"data-bs-popper\": \"static\"\n }));\n }\n }]);\n return DropdownMenu;\n}(React.Component);\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.contextType = DropdownContext;\nexport default DropdownMenu;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"className\", \"cssModule\", \"divider\", \"tag\", \"header\", \"active\", \"text\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, omit, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n divider: PropTypes.bool,\n tag: tagPropType,\n header: PropTypes.bool,\n onClick: PropTypes.func,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n toggle: PropTypes.bool,\n text: PropTypes.bool\n};\nvar DropdownItem = /*#__PURE__*/function (_React$Component) {\n _inherits(DropdownItem, _React$Component);\n var _super = _createSuper(DropdownItem);\n function DropdownItem(props) {\n var _this;\n _classCallCheck(this, DropdownItem);\n _this = _super.call(this, props);\n _this.onClick = _this.onClick.bind(_assertThisInitialized(_this));\n _this.getTabIndex = _this.getTabIndex.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(DropdownItem, [{\n key: \"onClick\",\n value: function onClick(e) {\n var _this$props$toggle;\n var _this$props = this.props,\n disabled = _this$props.disabled,\n header = _this$props.header,\n divider = _this$props.divider,\n text = _this$props.text;\n if (disabled || header || divider || text) {\n e.preventDefault();\n return;\n }\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n if ((_this$props$toggle = this.props.toggle) !== null && _this$props$toggle !== void 0 ? _this$props$toggle : true) {\n this.context.toggle(e);\n }\n }\n }, {\n key: \"getRole\",\n value: function getRole() {\n if (this.context.menuRole === 'listbox') {\n return 'option';\n }\n return 'menuitem';\n }\n }, {\n key: \"getTabIndex\",\n value: function getTabIndex() {\n var _this$props2 = this.props,\n disabled = _this$props2.disabled,\n header = _this$props2.header,\n divider = _this$props2.divider,\n text = _this$props2.text;\n if (disabled || header || divider || text) {\n return '-1';\n }\n return '0';\n }\n }, {\n key: \"render\",\n value: function render() {\n var tabIndex = this.getTabIndex();\n var role = tabIndex > -1 ? this.getRole() : undefined;\n var _omit = omit(this.props, ['toggle']),\n className = _omit.className,\n cssModule = _omit.cssModule,\n divider = _omit.divider,\n _omit$tag = _omit.tag,\n Tag = _omit$tag === void 0 ? 'button' : _omit$tag,\n header = _omit.header,\n active = _omit.active,\n text = _omit.text,\n props = _objectWithoutProperties(_omit, _excluded);\n var classes = mapToCssModules(classNames(className, {\n disabled: props.disabled,\n 'dropdown-item': !divider && !header && !text,\n active: active,\n 'dropdown-header': header,\n 'dropdown-divider': divider,\n 'dropdown-item-text': text\n }), cssModule);\n if (Tag === 'button') {\n if (header) {\n Tag = 'h6';\n } else if (divider) {\n Tag = 'div';\n } else if (props.href) {\n Tag = 'a';\n } else if (text) {\n Tag = 'span';\n }\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n type: Tag === 'button' && (props.onClick || this.props.toggle) ? 'button' : undefined\n }, props, {\n tabIndex: tabIndex,\n role: role,\n className: classes,\n onClick: this.onClick\n }));\n }\n }]);\n return DropdownItem;\n}(React.Component);\nDropdownItem.propTypes = propTypes;\nDropdownItem.contextType = DropdownContext;\nexport default DropdownItem;","var _excluded = [\"className\", \"cssModule\", \"type\", \"size\", \"color\", \"children\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Change animation of spinner */\n type: PropTypes.oneOf(['border', 'grow']),\n /** Change size of spinner */\n size: PropTypes.oneOf(['sm']),\n /** Change color of spinner */\n color: PropTypes.oneOf(['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark']),\n /** Add custom class */\n className: PropTypes.string,\n /** Change existing className with a new className */\n cssModule: PropTypes.object,\n /** Pass children so this component can wrap the child elements */\n children: PropTypes.string\n};\nfunction Spinner(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$type = props.type,\n type = _props$type === void 0 ? 'border' : _props$type,\n size = props.size,\n color = props.color,\n _props$children = props.children,\n children = _props$children === void 0 ? 'Loading...' : _props$children,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, size ? \"spinner-\".concat(type, \"-\").concat(size) : false, \"spinner-\".concat(type), color ? \"text-\".concat(color) : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n role: \"status\"\n }, attributes, {\n className: classes\n }), children && /*#__PURE__*/React.createElement(\"span\", {\n className: mapToCssModules('visually-hidden', cssModule)\n }, children));\n}\nSpinner.propTypes = propTypes;\nexport default Spinner;","var _excluded = [\"className\", \"cssModule\", \"color\", \"body\", \"inverse\", \"outline\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Toggles card padding using `.card-body` */\n body: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change background color of component */\n color: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** Inverts the color */\n inverse: PropTypes.bool,\n /** Changes the card to have only outline */\n outline: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction Card(props) {\n var className = props.className,\n cssModule = props.cssModule,\n color = props.color,\n body = props.body,\n inverse = props.inverse,\n outline = props.outline,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card', inverse ? 'text-white' : false, body ? 'card-body' : false, color ? \"\".concat(outline ? 'border' : 'bg', \"-\").concat(color) : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n}\nCard.propTypes = propTypes;\nexport default Card;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction CardHeader(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card-header'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nCardHeader.propTypes = propTypes;\nexport default CardHeader;","var _excluded = [\"className\", \"cssModule\", \"innerRef\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction CardBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n innerRef = props.innerRef,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card-body'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n}\nCardBody.propTypes = propTypes;\nexport default CardBody;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction CardTitle(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card-title'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nCardTitle.propTypes = propTypes;\nexport default CardTitle;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction CardFooter(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card-footer'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nCardFooter.propTypes = propTypes;\nexport default CardFooter;","import * as React from 'react'\r\nimport ReactPaginate from 'react-paginate'\r\n\r\ninterface NotificationPaginationProps {\r\n pageCount: number\r\n setPageChange: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: NotificationPaginationProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex justify-content-end my-2'>\r\n {props.pageCount > 1 && (\r\n <ReactPaginate\r\n previousLabel={'← Previous'}\r\n nextLabel={'Next →'}\r\n pageCount={props.pageCount}\r\n onPageChange={(p) => props.setPageChange(p.selected)}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n containerClassName={'pagination pagination-sm'}\r\n previousLinkClassName={'page-link'}\r\n nextLinkClassName={'page-link'}\r\n disabledClassName={'page-item disabled'}\r\n activeClassName={'page-item active'}\r\n activeLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n previousClassName={'page-item'}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n renderOnZeroPageCount={null}\r\n />\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { notificationResponse } from '@/utils/helpers'\r\nimport RelativeTime from '@yaireo/relative-time'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Card, CardBody, CardFooter, CardHeader, CardTitle } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { AckNotificationCommand, DeleteNotificationCommand, IPostNotificationDto, NotificationsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport NotificationPagination from './NotificationPagination'\r\n\r\ninterface NotifificationsListProps {\r\n notifications: IPostNotificationDto[]\r\n pageCount: number\r\n setPageNumber: React.Dispatch<React.SetStateAction<number>>\r\n setModNotification: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: NotifificationsListProps) => {\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const relativeTime = new RelativeTime()\r\n\r\n const submitDeleteNotification = async (id: number) => {\r\n setLoading(true)\r\n try {\r\n let client = new NotificationsClient()\r\n let command = new DeleteNotificationCommand()\r\n command.notificationId = id\r\n\r\n const response = await client.deleteUserNotification(command).then((response) => response)\r\n props.setModNotification(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const submitAckNotification = async (id: number) => {\r\n setLoading(true)\r\n try {\r\n let client = new NotificationsClient()\r\n let command = new AckNotificationCommand()\r\n command.notificationId = id\r\n\r\n const response = await client.ackUserNotification(command).then((response) => response)\r\n props.setModNotification(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n {props.notifications && <NotificationPagination pageCount={props.pageCount} setPageChange={props.setPageNumber} />}\r\n {props.notifications &&\r\n props.notifications.map((s, idx) => (\r\n <Card\r\n className='mx-2 not-item'\r\n style={{\r\n width: '18rem',\r\n }}\r\n id={s.id.toString()}\r\n key={s.id.toString()}\r\n >\r\n <CardHeader>{relativeTime.from(new Date(s.created))}</CardHeader>\r\n <CardBody>\r\n <CardTitle tag='h5'>\r\n {s.notifierName ?? 'Deleted User'} {notificationResponse(s.type)} {s.threadName}\r\n </CardTitle>\r\n </CardBody>\r\n <CardFooter className='d-flex'>\r\n <Button color='success' onClick={(e) => submitAckNotification(s.id)}>\r\n <i className='bi bi-check-lg'></i>\r\n </Button>\r\n {}\r\n <Button color='danger' className='ms-auto' onClick={(e) => submitDeleteNotification(s.id)}>\r\n <i className='bi bi-trash'></i>\r\n </Button>\r\n </CardFooter>\r\n </Card>\r\n ))}\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { Col, Collapse, Dropdown, DropdownItem, DropdownMenu, DropdownToggle, Nav, NavItem, Spinner } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { INotificationVm, NotificationsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport NotificationsList from './NotificationsList'\r\n\r\nexport default ({ ...rest }) => {\r\n const error = useContext(ErrorContext)\r\n const auth = useAuth()\r\n\r\n const [isOpen, setIsOpen] = useState(false)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [pageNumber, setPageNumber] = useState(1)\r\n const [modNotification, setModNotification] = useState(0)\r\n\r\n const [notifications, setNotifications] = useState<INotificationVm>()\r\n\r\n function toggle() {\r\n setIsOpen(!isOpen)\r\n }\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (!auth.isAuthenticated) return\r\n setLoading(true)\r\n try {\r\n let client = new NotificationsClient()\r\n const response = await client.getUserNotifications(pageNumber, 20).then((response) => response.toJSON() as Promise<INotificationVm>)\r\n setNotifications(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [auth.isAuthenticated, pageNumber, modNotification])\r\n\r\n return (\r\n <Dropdown isOpen={isOpen} toggle={toggle} nav inNavbar {...rest}>\r\n <DropdownToggle nav caret>\r\n <i className='bi bi-bell'></i>\r\n </DropdownToggle>\r\n <DropdownMenu end>\r\n {loading && (!notifications || notifications.postNotifications.length > 0) && (\r\n <Spinner className='m-5' color='primary'>\r\n Loading...\r\n </Spinner>\r\n )}\r\n {notifications && notifications.postNotifications.length <= 0 && <div className='text-center empty-notifications'>No notifications.</div>}\r\n {notifications && notifications.postNotifications.length > 0 && (\r\n <NotificationsList\r\n notifications={notifications.postNotifications}\r\n pageCount={notifications.totalPages}\r\n setPageNumber={setPageNumber}\r\n setModNotification={setModNotification}\r\n />\r\n )}\r\n </DropdownMenu>\r\n </Dropdown>\r\n )\r\n}\r\n","import { useTheme } from '@/hooks/useTheme'\r\nimport { useState } from 'react'\r\nimport { Dropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap'\r\n\r\nexport const ThemeDropdown = ({ ...rest }) => {\r\n\r\n const { theme, setTheme } = useTheme()\r\n\r\n const [dropdownOpen, setDropdownOpen] = useState(false)\r\n\r\n const toggle = () => setDropdownOpen((prevState) => !prevState)\r\n\r\n return (\r\n <Dropdown isOpen={dropdownOpen} toggle={toggle} {...rest}>\r\n <DropdownToggle nav caret>\r\n Theme\r\n </DropdownToggle>\r\n <DropdownMenu>\r\n <DropdownItem onClick={() => setTheme('light')}>☀️ Light</DropdownItem>\r\n <DropdownItem onClick={() => setTheme('dark')}>🌙 Dark</DropdownItem>\r\n <DropdownItem onClick={() => setTheme('system')}>💻 System</DropdownItem>\r\n </DropdownMenu>\r\n </Dropdown>\r\n )\r\n}\r\n","import { useEffect, useState } from \"react\"\r\n\r\nexport const useTheme = () => {\r\n\r\n // Determine what the user's preferred theme is. \r\n // If they have a preference, use that. \r\n // If not, use the system preference. \r\n const prefersDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches\r\n const userThemePreference = localStorage.getItem('theme')\r\n const initialTheme = userThemePreference || (prefersDarkMode ? 'dark' : 'light')\r\n\r\n const [theme, setTheme] = useState(initialTheme)\r\n\r\n const handleSetTheme = (selectedTheme: 'light' | 'dark' | 'system') => {\r\n\r\n if (selectedTheme === 'system') {\r\n selectedTheme = prefersDarkMode ? 'dark' : 'light'\r\n }\r\n\r\n setTheme(selectedTheme)\r\n localStorage.setItem('theme', selectedTheme);\r\n // Update the data-bs-theme attribute on the html tag for bootstrap,\r\n // and the data-color-mode attribute for the markdown editor.\r\n ['data-bs-theme', 'data-color-mode'].forEach(attr => {\r\n document.documentElement.setAttribute(attr, selectedTheme)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n const userThemePref = localStorage.getItem('theme')\r\n\r\n if (userThemePref) {\r\n setTheme(userThemePref);\r\n localStorage.setItem('theme', userThemePref);\r\n ['data-bs-theme', 'data-color-mode'].forEach(attr => {\r\n document.documentElement.setAttribute(attr, userThemePref)\r\n })\r\n return\r\n }\r\n\r\n ['data-bs-theme', 'data-color-mode'].forEach(attr => {\r\n document.documentElement.setAttribute(attr, 'dark')\r\n })\r\n localStorage.setItem('theme', 'dark');\r\n\r\n }, [])\r\n\r\n return { theme, setTheme: handleSetTheme }\r\n\r\n}","import { containsDuplicate } from '@/utils/helpers'\r\nimport { useEffect, useState } from 'react'\r\nimport React from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { Link } from 'react-router-dom'\r\nimport {\r\n Navbar as BSNavbar,\r\n Button,\r\n Collapse,\r\n DropdownItem,\r\n DropdownMenu,\r\n DropdownToggle,\r\n Nav,\r\n NavItem,\r\n NavLink,\r\n NavbarBrand,\r\n NavbarToggler,\r\n UncontrolledDropdown,\r\n} from 'reactstrap'\r\n\r\nimport DoomCentralEventRoles from '../../lib/DoomCentralEventRoles'\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport ForumRoles from '../../lib/ForumRoles'\r\nimport NewsPostRoles from '../../lib/NewsPostRoles'\r\nimport { redirectToProfile, redirectToRegister } from '../api-authorization/AuthHelpers'\r\nimport Notifications from '../notifications/Notifications'\r\nimport { ThemeDropdown } from '../theme-dropdown/ThemeDropdown'\r\n\r\nconst FORUM_LINKS = [\r\n {\r\n name: 'Threads',\r\n url: '/threads',\r\n order: 5,\r\n },\r\n {\r\n name: 'Forums',\r\n url: '/forums',\r\n order: 10,\r\n },\r\n {\r\n name: 'Events',\r\n url: '/events',\r\n order: 15,\r\n },\r\n {\r\n name: 'News',\r\n url: '/news',\r\n order: 20,\r\n },\r\n].sort((a, b) => a.order - b.order)\r\n\r\nexport const Navbar = () => {\r\n const [isOpen, setIsOpen] = useState(false)\r\n\r\n const auth = useAuth()\r\n const adminMenuRoles = [\r\n DoomCentralRoles.GlobalAdministrator,\r\n DoomCentralRoles.PromotionAdministrator,\r\n ForumRoles.GlobalForumAdministrator,\r\n DoomCentralEventRoles.GlobalEventAdministrator,\r\n NewsPostRoles.GlobalNewsAdministrator,\r\n ]\r\n\r\n const canPromote =\r\n auth.user &&\r\n (auth.user?.profile.role as string[]) &&\r\n containsDuplicate([DoomCentralRoles.PromotionAdministrator, DoomCentralRoles.GlobalAdministrator], auth.user?.profile.role as string[])\r\n\r\n const toggle = () => {\r\n setIsOpen(!isOpen)\r\n }\r\n\r\n useEffect(() => {\r\n return auth.events.addAccessTokenExpiring(() => {\r\n auth.signinSilent()\r\n })\r\n }, [auth.events, auth.signinSilent])\r\n\r\n useEffect(() => {\r\n return auth.events.addAccessTokenExpired(() => {\r\n auth.signinSilent()\r\n })\r\n }, [auth.events, auth.signinSilent])\r\n\r\n return (\r\n <BSNavbar className='navbar navbar-expand-sm sticky-top'>\r\n <NavbarBrand tag={Link} to='/' aria-label='Doom Central'>\r\n <img src='/images/doomcentrallogo.png' height='64' width='64' className='img-fluid' alt='Doom Central' />\r\n </NavbarBrand>\r\n <NavbarToggler onClick={toggle} className='mr-2' />\r\n <Collapse isOpen={isOpen} navbar>\r\n <Nav navbar>\r\n {FORUM_LINKS.map((link) => (\r\n <NavItem key={link.url} className='nav-item'>\r\n <NavLink tag={Link} to={link.url} className='btn btn-link'>\r\n {link.name}\r\n </NavLink>\r\n </NavItem>\r\n ))}\r\n </Nav>\r\n\r\n <Nav navbar className='ms-auto'>\r\n {auth.isAuthenticated ? (\r\n <>\r\n <UncontrolledDropdown nav inNavbar>\r\n <DropdownToggle nav caret>\r\n Hello {auth.user?.profile.preferred_username}\r\n </DropdownToggle>\r\n <DropdownMenu end>\r\n <DropdownItem>\r\n <NavItem className='ml-auto'>\r\n <NavLink tag={Link} to={'#profile'} onClick={() => redirectToProfile()}>\r\n View Profile\r\n </NavLink>\r\n </NavItem>\r\n </DropdownItem>\r\n <DropdownItem>\r\n <NavItem className='ml-auto'>\r\n <NavLink tag={Link} to={'/managesubscriptions'}>\r\n Manage Subscriptions\r\n </NavLink>\r\n </NavItem>\r\n </DropdownItem>\r\n <DropdownItem divider />\r\n\r\n {canPromote && (\r\n <DropdownItem>\r\n <NavItem className='ml-auto'>\r\n <NavLink tag={Link} to={'/editpromotions'}>\r\n Edit Promotions\r\n </NavLink>\r\n </NavItem>\r\n </DropdownItem>\r\n )}\r\n\r\n {containsDuplicate(adminMenuRoles, auth.user?.profile.role as string[]) && (\r\n <React.Fragment>\r\n <DropdownItem>\r\n <NavItem className='ml-auto'>\r\n <NavLink tag={Link} to={'/admin'}>\r\n Admin Panel\r\n </NavLink>\r\n </NavItem>\r\n </DropdownItem>\r\n <DropdownItem divider />\r\n </React.Fragment>\r\n )}\r\n <DropdownItem>\r\n <NavItem className='ml-auto'>\r\n <NavLink tag={Link} to=\"#logout\" onClick={() => auth.signoutRedirect()}>\r\n Logout\r\n </NavLink>\r\n </NavItem>\r\n </DropdownItem>\r\n </DropdownMenu>\r\n </UncontrolledDropdown>\r\n </>\r\n ) : (\r\n <>\r\n <li key='nav-item'>\r\n <Link to='#register' className='btn btn-link' onClick={() => redirectToRegister()}>\r\n Register\r\n </Link>\r\n </li>\r\n <li className='nav-item'>\r\n <Link to='#login' className='btn btn-link' onClick={() => auth.signinRedirect()}>\r\n Login\r\n </Link>\r\n </li>\r\n </>\r\n )}\r\n <ThemeDropdown className='ms-3' />\r\n {auth.isAuthenticated && <Notifications className='ms-3' />}\r\n </Nav>\r\n </Collapse>\r\n </BSNavbar>\r\n )\r\n}\r\n","export default class StreamerRoles {\r\n public static readonly StreamAdministrator = 'StreamAdministrator'\r\n}\r\n","export const TAG_PROPERTIES = {\n CHARSET: 'charset',\n CSS_TEXT: 'cssText',\n HREF: 'href',\n HTTPEQUIV: 'http-equiv',\n INNER_HTML: 'innerHTML',\n ITEM_PROP: 'itemprop',\n NAME: 'name',\n PROPERTY: 'property',\n REL: 'rel',\n SRC: 'src',\n};\n\nexport const ATTRIBUTE_NAMES = {\n BODY: 'bodyAttributes',\n HTML: 'htmlAttributes',\n TITLE: 'titleAttributes',\n};\n\nexport const TAG_NAMES = {\n BASE: 'base',\n BODY: 'body',\n HEAD: 'head',\n HTML: 'html',\n LINK: 'link',\n META: 'meta',\n NOSCRIPT: 'noscript',\n SCRIPT: 'script',\n STYLE: 'style',\n TITLE: 'title',\n FRAGMENT: 'Symbol(react.fragment)',\n};\n\nexport const SEO_PRIORITY_TAGS = {\n link: { rel: ['amphtml', 'canonical', 'alternate'] },\n script: { type: ['application/ld+json'] },\n meta: {\n charset: '',\n name: ['robots', 'description'],\n property: [\n 'og:type',\n 'og:title',\n 'og:url',\n 'og:image',\n 'og:image:alt',\n 'og:description',\n 'twitter:url',\n 'twitter:title',\n 'twitter:description',\n 'twitter:image',\n 'twitter:image:alt',\n 'twitter:card',\n 'twitter:site',\n ],\n },\n};\n\nexport const VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(name => TAG_NAMES[name]);\n\nexport const REACT_TAG_MAP = {\n accesskey: 'accessKey',\n charset: 'charSet',\n class: 'className',\n contenteditable: 'contentEditable',\n contextmenu: 'contextMenu',\n 'http-equiv': 'httpEquiv',\n itemprop: 'itemProp',\n tabindex: 'tabIndex',\n};\n\nexport const HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce((obj, key) => {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nexport const HELMET_ATTRIBUTE = 'data-rh';\n","import { TAG_NAMES, TAG_PROPERTIES, ATTRIBUTE_NAMES } from './constants';\n\nconst HELMET_PROPS = {\n DEFAULT_TITLE: 'defaultTitle',\n DEFER: 'defer',\n ENCODE_SPECIAL_CHARACTERS: 'encodeSpecialCharacters',\n ON_CHANGE_CLIENT_STATE: 'onChangeClientState',\n TITLE_TEMPLATE: 'titleTemplate',\n PRIORITIZE_SEO_TAGS: 'prioritizeSeoTags',\n};\n\nconst getInnermostProperty = (propsList, property) => {\n for (let i = propsList.length - 1; i >= 0; i -= 1) {\n const props = propsList[i];\n\n if (Object.prototype.hasOwnProperty.call(props, property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nconst getTitleFromPropsList = propsList => {\n let innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n const innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (Array.isArray(innermostTitle)) {\n innermostTitle = innermostTitle.join('');\n }\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, () => innermostTitle);\n }\n\n const innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nconst getOnChangeClientState = propsList =>\n getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || (() => {});\n\nconst getAttributesFromPropsList = (tagType, propsList) =>\n propsList\n .filter(props => typeof props[tagType] !== 'undefined')\n .map(props => props[tagType])\n .reduce((tagAttrs, current) => ({ ...tagAttrs, ...current }), {});\n\nconst getBaseTagFromPropsList = (primaryAttributes, propsList) =>\n propsList\n .filter(props => typeof props[TAG_NAMES.BASE] !== 'undefined')\n .map(props => props[TAG_NAMES.BASE])\n .reverse()\n .reduce((innermostBaseTag, tag) => {\n if (!innermostBaseTag.length) {\n const keys = Object.keys(tag);\n\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (\n primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 &&\n tag[lowerCaseAttributeKey]\n ) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n\n// eslint-disable-next-line no-console\nconst warn = msg => console && typeof console.warn === 'function' && console.warn(msg);\n\nconst getTagsFromPropsList = (tagName, primaryAttributes, propsList) => {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n const approvedSeenTags = {};\n\n return propsList\n .filter(props => {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== 'undefined') {\n warn(\n `Helmet: ${tagName} should be of type \"Array\". Instead found type \"${typeof props[\n tagName\n ]}\"`\n );\n }\n return false;\n })\n .map(props => props[tagName])\n .reverse()\n .reduce((approvedTags, instanceTags) => {\n const instanceSeenTags = {};\n\n instanceTags\n .filter(tag => {\n let primaryAttributeKey;\n const keys = Object.keys(tag);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (\n primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 &&\n !(\n primaryAttributeKey === TAG_PROPERTIES.REL &&\n tag[primaryAttributeKey].toLowerCase() === 'canonical'\n ) &&\n !(\n lowerCaseAttributeKey === TAG_PROPERTIES.REL &&\n tag[lowerCaseAttributeKey].toLowerCase() === 'stylesheet'\n )\n ) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (\n primaryAttributes.indexOf(attributeKey) !== -1 &&\n (attributeKey === TAG_PROPERTIES.INNER_HTML ||\n attributeKey === TAG_PROPERTIES.CSS_TEXT ||\n attributeKey === TAG_PROPERTIES.ITEM_PROP)\n ) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n const value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n })\n .reverse()\n .forEach(tag => approvedTags.push(tag));\n\n // Update seen tags with tags from this instance\n const keys = Object.keys(instanceSeenTags);\n for (let i = 0; i < keys.length; i += 1) {\n const attributeKey = keys[i];\n const tagUnion = {\n ...approvedSeenTags[attributeKey],\n ...instanceSeenTags[attributeKey],\n };\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, [])\n .reverse();\n};\n\nconst getAnyTrueFromPropsList = (propsList, checkedTag) => {\n if (Array.isArray(propsList) && propsList.length) {\n for (let index = 0; index < propsList.length; index += 1) {\n const prop = propsList[index];\n if (prop[checkedTag]) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst reducePropsToState = propsList => ({\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(\n TAG_NAMES.LINK,\n [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF],\n propsList\n ),\n metaTags: getTagsFromPropsList(\n TAG_NAMES.META,\n [\n TAG_PROPERTIES.NAME,\n TAG_PROPERTIES.CHARSET,\n TAG_PROPERTIES.HTTPEQUIV,\n TAG_PROPERTIES.PROPERTY,\n TAG_PROPERTIES.ITEM_PROP,\n ],\n propsList\n ),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(\n TAG_NAMES.SCRIPT,\n [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML],\n propsList\n ),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList),\n prioritizeSeoTags: getAnyTrueFromPropsList(propsList, HELMET_PROPS.PRIORITIZE_SEO_TAGS),\n});\n\nexport const flattenArray = possibleArray =>\n Array.isArray(possibleArray) ? possibleArray.join('') : possibleArray;\n\nexport { reducePropsToState };\n\nconst checkIfPropsMatch = (props, toMatch) => {\n const keys = Object.keys(props);\n for (let i = 0; i < keys.length; i += 1) {\n // e.g. if rel exists in the list of allowed props [amphtml, alternate, etc]\n if (toMatch[keys[i]] && toMatch[keys[i]].includes(props[keys[i]])) {\n return true;\n }\n }\n return false;\n};\n\nexport const prioritizer = (elementsList, propsToMatch) => {\n if (Array.isArray(elementsList)) {\n return elementsList.reduce(\n (acc, elementAttrs) => {\n if (checkIfPropsMatch(elementAttrs, propsToMatch)) {\n acc.priority.push(elementAttrs);\n } else {\n acc.default.push(elementAttrs);\n }\n return acc;\n },\n { priority: [], default: [] }\n );\n }\n return { default: elementsList };\n};\n\nexport const without = (obj, key) => {\n return {\n ...obj,\n [key]: undefined,\n };\n};\n","import React from 'react';\nimport {\n HELMET_ATTRIBUTE,\n TAG_NAMES,\n REACT_TAG_MAP,\n TAG_PROPERTIES,\n ATTRIBUTE_NAMES,\n SEO_PRIORITY_TAGS,\n} from './constants';\nimport { flattenArray, prioritizer } from './utils';\n\nconst SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nconst encodeSpecialCharacters = (str, encode = true) => {\n if (encode === false) {\n return String(str);\n }\n\n return String(str)\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n};\n\nconst generateElementAttributesAsString = attributes =>\n Object.keys(attributes).reduce((str, key) => {\n const attr = typeof attributes[key] !== 'undefined' ? `${key}=\"${attributes[key]}\"` : `${key}`;\n return str ? `${str} ${attr}` : attr;\n }, '');\n\nconst generateTitleAsString = (type, title, attributes, encode) => {\n const attributeString = generateElementAttributesAsString(attributes);\n const flattenedTitle = flattenArray(title);\n return attributeString\n ? `<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeString}>${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}</${type}>`\n : `<${type} ${HELMET_ATTRIBUTE}=\"true\">${encodeSpecialCharacters(\n flattenedTitle,\n encode\n )}</${type}>`;\n};\n\nconst generateTagsAsString = (type, tags, encode) =>\n tags.reduce((str, tag) => {\n const attributeHtml = Object.keys(tag)\n .filter(\n attribute =>\n !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT)\n )\n .reduce((string, attribute) => {\n const attr =\n typeof tag[attribute] === 'undefined'\n ? attribute\n : `${attribute}=\"${encodeSpecialCharacters(tag[attribute], encode)}\"`;\n return string ? `${string} ${attr}` : attr;\n }, '');\n\n const tagContent = tag.innerHTML || tag.cssText || '';\n\n const isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return `${str}<${type} ${HELMET_ATTRIBUTE}=\"true\" ${attributeHtml}${\n isSelfClosing ? `/>` : `>${tagContent}</${type}>`\n }`;\n }, '');\n\nconst convertElementAttributesToReactProps = (attributes, initProps = {}) =>\n Object.keys(attributes).reduce((obj, key) => {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n\nconst generateTitleAsReactComponent = (type, title, attributes) => {\n // assigning into an array to define toString function on it\n const initProps = {\n key: title,\n [HELMET_ATTRIBUTE]: true,\n };\n const props = convertElementAttributesToReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nconst generateTagsAsReactComponent = (type, tags) =>\n tags.map((tag, i) => {\n const mappedTag = {\n key: i,\n [HELMET_ATTRIBUTE]: true,\n };\n\n Object.keys(tag).forEach(attribute => {\n const mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (\n mappedAttribute === TAG_PROPERTIES.INNER_HTML ||\n mappedAttribute === TAG_PROPERTIES.CSS_TEXT\n ) {\n const content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n\nconst getMethodsForTag = (type, tags, encode) => {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: () =>\n generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode),\n toString: () => generateTitleAsString(type, tags.title, tags.titleAttributes, encode),\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: () => convertElementAttributesToReactProps(tags),\n toString: () => generateElementAttributesAsString(tags),\n };\n default:\n return {\n toComponent: () => generateTagsAsReactComponent(type, tags),\n toString: () => generateTagsAsString(type, tags, encode),\n };\n }\n};\n\nconst getPriorityMethods = ({ metaTags, linkTags, scriptTags, encode }) => {\n const meta = prioritizer(metaTags, SEO_PRIORITY_TAGS.meta);\n const link = prioritizer(linkTags, SEO_PRIORITY_TAGS.link);\n const script = prioritizer(scriptTags, SEO_PRIORITY_TAGS.script);\n\n // need to have toComponent() and toString()\n const priorityMethods = {\n toComponent: () => [\n ...generateTagsAsReactComponent(TAG_NAMES.META, meta.priority),\n ...generateTagsAsReactComponent(TAG_NAMES.LINK, link.priority),\n ...generateTagsAsReactComponent(TAG_NAMES.SCRIPT, script.priority),\n ],\n toString: () =>\n // generate all the tags as strings and concatenate them\n `${getMethodsForTag(TAG_NAMES.META, meta.priority, encode)} ${getMethodsForTag(\n TAG_NAMES.LINK,\n link.priority,\n encode\n )} ${getMethodsForTag(TAG_NAMES.SCRIPT, script.priority, encode)}`,\n };\n\n return {\n priorityMethods,\n metaTags: meta.default,\n linkTags: link.default,\n scriptTags: script.default,\n };\n};\n\nconst mapStateOnServer = props => {\n const {\n baseTag,\n bodyAttributes,\n encode,\n htmlAttributes,\n noscriptTags,\n styleTags,\n title = '',\n titleAttributes,\n prioritizeSeoTags,\n } = props;\n let { linkTags, metaTags, scriptTags } = props;\n let priorityMethods = {\n toComponent: () => {},\n toString: () => '',\n };\n if (prioritizeSeoTags) {\n ({ priorityMethods, linkTags, metaTags, scriptTags } = getPriorityMethods(props));\n }\n return {\n priority: priorityMethods,\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title, titleAttributes }, encode),\n };\n};\n\nexport default mapStateOnServer;\n","import mapStateOnServer from './server';\n\nconst instances = [];\n\nexport function clearInstances() {\n instances.length = 0;\n}\n\nexport default class HelmetData {\n instances = [];\n\n value = {\n setHelmet: serverState => {\n this.context.helmet = serverState;\n },\n helmetInstances: {\n get: () => (this.canUseDOM ? instances : this.instances),\n add: instance => {\n (this.canUseDOM ? instances : this.instances).push(instance);\n },\n remove: instance => {\n const index = (this.canUseDOM ? instances : this.instances).indexOf(instance);\n (this.canUseDOM ? instances : this.instances).splice(index, 1);\n },\n },\n };\n\n constructor(context, canUseDOM = typeof document !== 'undefined') {\n this.context = context;\n this.canUseDOM = canUseDOM;\n\n if (!canUseDOM) {\n context.helmet = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: '',\n titleAttributes: {},\n });\n }\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport HelmetData from './HelmetData';\n\nconst defaultValue = {};\n\nexport const Context = React.createContext(defaultValue);\n\nexport const providerShape = PropTypes.shape({\n setHelmet: PropTypes.func,\n helmetInstances: PropTypes.shape({\n get: PropTypes.func,\n add: PropTypes.func,\n remove: PropTypes.func,\n }),\n});\n\nconst canUseDOM = typeof document !== 'undefined';\n\nexport default class Provider extends Component {\n static canUseDOM = canUseDOM;\n\n static propTypes = {\n context: PropTypes.shape({\n helmet: PropTypes.shape(),\n }),\n children: PropTypes.node.isRequired,\n };\n\n static defaultProps = {\n context: {},\n };\n\n static displayName = 'HelmetProvider';\n\n constructor(props) {\n super(props);\n\n this.helmetData = new HelmetData(this.props.context, Provider.canUseDOM);\n }\n\n render() {\n return <Context.Provider value={this.helmetData.value}>{this.props.children}</Context.Provider>;\n }\n}\n","import { HELMET_ATTRIBUTE, TAG_NAMES, TAG_PROPERTIES } from './constants';\nimport { flattenArray } from './utils';\n\nconst updateTags = (type, tags) => {\n const headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n const tagNodes = headElement.querySelectorAll(`${type}[${HELMET_ATTRIBUTE}]`);\n const oldTags = [].slice.call(tagNodes);\n const newTags = [];\n let indexToDelete;\n\n if (tags && tags.length) {\n tags.forEach(tag => {\n const newElement = document.createElement(type);\n\n // eslint-disable-next-line\n for (const attribute in tag) {\n if (Object.prototype.hasOwnProperty.call(tag, attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n const value = typeof tag[attribute] === 'undefined' ? '' : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, 'true');\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (\n oldTags.some((existingTag, index) => {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })\n ) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(tag => tag.parentNode.removeChild(tag));\n newTags.forEach(tag => headElement.appendChild(tag));\n\n return {\n oldTags,\n newTags,\n };\n};\n\nconst updateAttributes = (tagName, attributes) => {\n const elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n const helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n const helmetAttributes = helmetAttributeString ? helmetAttributeString.split(',') : [];\n const attributesToRemove = [].concat(helmetAttributes);\n const attributeKeys = Object.keys(attributes);\n\n for (let i = 0; i < attributeKeys.length; i += 1) {\n const attribute = attributeKeys[i];\n const value = attributes[attribute] || '';\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n const indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (let i = attributesToRemove.length - 1; i >= 0; i -= 1) {\n elementTag.removeAttribute(attributesToRemove[i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(',')) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(','));\n }\n};\n\nconst updateTitle = (title, attributes) => {\n if (typeof title !== 'undefined' && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nconst commitTagChanges = (newState, cb) => {\n const {\n baseTag,\n bodyAttributes,\n htmlAttributes,\n linkTags,\n metaTags,\n noscriptTags,\n onChangeClientState,\n scriptTags,\n styleTags,\n title,\n titleAttributes,\n } = newState;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n const tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags),\n };\n\n const addedTags = {};\n const removedTags = {};\n\n Object.keys(tagUpdates).forEach(tagType => {\n const { newTags, oldTags } = tagUpdates[tagType];\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n if (cb) {\n cb();\n }\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\n// eslint-disable-next-line\nlet _helmetCallback = null;\n\nconst handleStateChangeOnClient = newState => {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(() => {\n commitTagChanges(newState, () => {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nexport default handleStateChangeOnClient;\n","import { Component } from 'react';\nimport shallowEqual from 'shallowequal';\nimport handleStateChangeOnClient from './client';\nimport mapStateOnServer from './server';\nimport { reducePropsToState } from './utils';\nimport Provider, { providerShape } from './Provider';\n\nexport default class Dispatcher extends Component {\n static propTypes = {\n context: providerShape.isRequired,\n };\n\n static displayName = 'HelmetDispatcher';\n\n rendered = false;\n\n shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n }\n\n componentDidUpdate() {\n this.emitChange();\n }\n\n componentWillUnmount() {\n const { helmetInstances } = this.props.context;\n helmetInstances.remove(this);\n this.emitChange();\n }\n\n emitChange() {\n const { helmetInstances, setHelmet } = this.props.context;\n let serverState = null;\n const state = reducePropsToState(\n helmetInstances.get().map(instance => {\n const props = { ...instance.props };\n delete props.context;\n return props;\n })\n );\n if (Provider.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n serverState = mapStateOnServer(state);\n }\n setHelmet(serverState);\n }\n\n // componentWillMount will be deprecated\n // for SSR, initialize on first render\n // constructor is also unsafe in StrictMode\n init() {\n if (this.rendered) {\n return;\n }\n\n this.rendered = true;\n\n const { helmetInstances } = this.props.context;\n helmetInstances.add(this);\n this.emitChange();\n }\n\n render() {\n this.init();\n\n return null;\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport fastCompare from 'react-fast-compare';\nimport invariant from 'invariant';\nimport { Context } from './Provider';\nimport HelmetData from './HelmetData';\nimport Dispatcher from './Dispatcher';\nimport { without } from './utils';\nimport { TAG_NAMES, VALID_TAG_NAMES, HTML_TAG_MAP } from './constants';\n\nexport { default as HelmetData } from './HelmetData';\nexport { default as HelmetProvider } from './Provider';\n\n/* eslint-disable class-methods-use-this */\nexport class Helmet extends Component {\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n * @param {Boolean} prioritizeSeoTags: false\n */\n /* eslint-disable react/forbid-prop-types, react/require-default-props */\n static propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string,\n prioritizeSeoTags: PropTypes.bool,\n helmetData: PropTypes.object,\n };\n /* eslint-enable react/prop-types, react/forbid-prop-types, react/require-default-props */\n\n static defaultProps = {\n defer: true,\n encodeSpecialCharacters: true,\n prioritizeSeoTags: false,\n };\n\n static displayName = 'Helmet';\n\n shouldComponentUpdate(nextProps) {\n return !fastCompare(without(this.props, 'helmetData'), without(nextProps, 'helmetData'));\n }\n\n mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren,\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren,\n };\n default:\n throw new Error(\n `<${child.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`\n );\n }\n }\n\n flattenArrayTypeChildren({ child, arrayTypeChildren, newChildProps, nestedChildren }) {\n return {\n ...arrayTypeChildren,\n [child.type]: [\n ...(arrayTypeChildren[child.type] || []),\n {\n ...newChildProps,\n ...this.mapNestedChildrenToProps(child, nestedChildren),\n },\n ],\n };\n }\n\n mapObjectTypeChildren({ child, newProps, newChildProps, nestedChildren }) {\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return {\n ...newProps,\n [child.type]: nestedChildren,\n titleAttributes: { ...newChildProps },\n };\n\n case TAG_NAMES.BODY:\n return {\n ...newProps,\n bodyAttributes: { ...newChildProps },\n };\n\n case TAG_NAMES.HTML:\n return {\n ...newProps,\n htmlAttributes: { ...newChildProps },\n };\n default:\n return {\n ...newProps,\n [child.type]: { ...newChildProps },\n };\n }\n }\n\n mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n let newFlattenedProps = { ...newProps };\n\n Object.keys(arrayTypeChildren).forEach(arrayChildName => {\n newFlattenedProps = {\n ...newFlattenedProps,\n [arrayChildName]: arrayTypeChildren[arrayChildName],\n };\n });\n\n return newFlattenedProps;\n }\n\n warnOnInvalidChildren(child, nestedChildren) {\n invariant(\n VALID_TAG_NAMES.some(name => child.type === name),\n typeof child.type === 'function'\n ? `You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.`\n : `Only elements types ${VALID_TAG_NAMES.join(\n ', '\n )} are allowed. Helmet does not support rendering <${\n child.type\n }> elements. Refer to our API for more information.`\n );\n\n invariant(\n !nestedChildren ||\n typeof nestedChildren === 'string' ||\n (Array.isArray(nestedChildren) &&\n !nestedChildren.some(nestedChild => typeof nestedChild !== 'string')),\n `Helmet expects a string as a child of <${child.type}>. Did you forget to wrap your children in braces? ( <${child.type}>{\\`\\`}</${child.type}> ) Refer to our API for more information.`\n );\n\n return true;\n }\n\n mapChildrenToProps(children, newProps) {\n let arrayTypeChildren = {};\n\n React.Children.forEach(children, child => {\n if (!child || !child.props) {\n return;\n }\n\n const { children: nestedChildren, ...childProps } = child.props;\n // convert React props to HTML attributes\n const newChildProps = Object.keys(childProps).reduce((obj, key) => {\n obj[HTML_TAG_MAP[key] || key] = childProps[key];\n return obj;\n }, {});\n\n let { type } = child;\n if (typeof type === 'symbol') {\n type = type.toString();\n } else {\n this.warnOnInvalidChildren(child, nestedChildren);\n }\n\n switch (type) {\n case TAG_NAMES.FRAGMENT:\n newProps = this.mapChildrenToProps(nestedChildren, newProps);\n break;\n\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = this.flattenArrayTypeChildren({\n child,\n arrayTypeChildren,\n newChildProps,\n nestedChildren,\n });\n break;\n\n default:\n newProps = this.mapObjectTypeChildren({\n child,\n newProps,\n newChildProps,\n nestedChildren,\n });\n break;\n }\n });\n\n return this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n }\n\n render() {\n const { children, ...props } = this.props;\n let newProps = { ...props };\n let { helmetData } = props;\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n if (helmetData && !(helmetData instanceof HelmetData)) {\n helmetData = new HelmetData(helmetData.context, helmetData.instances);\n }\n\n return helmetData ? (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Dispatcher {...newProps} context={helmetData.value} helmetData={undefined} />\n ) : (\n <Context.Consumer>\n {(\n context // eslint-disable-next-line react/jsx-props-no-spreading\n ) => <Dispatcher {...newProps} context={context} />}\n </Context.Consumer>\n );\n }\n}\n","import * as React from 'react'\r\nimport { Helmet } from 'react-helmet-async'\r\n\r\ninterface HelmetPagesProps {\r\n title: string\r\n}\r\n\r\nexport default (props: HelmetPagesProps) => (\r\n <Helmet>\r\n <title>{props.title}</title>\r\n </Helmet>\r\n)\r\n","var _excluded = [\"className\", \"cssModule\", \"noGutters\", \"tag\", \"widths\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, deprecated } from './utils';\nvar rowColWidths = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar rowColsPropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar propTypes = {\n tag: tagPropType,\n noGutters: deprecated(PropTypes.bool, 'Please use Bootstrap 5 gutter utility classes. https://getbootstrap.com/docs/5.0/layout/gutters/'),\n className: PropTypes.string,\n cssModule: PropTypes.object,\n xs: rowColsPropType,\n sm: rowColsPropType,\n md: rowColsPropType,\n lg: rowColsPropType,\n xl: rowColsPropType,\n xxl: rowColsPropType,\n widths: PropTypes.array\n};\nfunction Row(props) {\n var className = props.className,\n cssModule = props.cssModule,\n noGutters = props.noGutters,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n _props$widths = props.widths,\n widths = _props$widths === void 0 ? rowColWidths : _props$widths,\n attributes = _objectWithoutProperties(props, _excluded);\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var colSize = props[colWidth];\n delete attributes[colWidth];\n if (!colSize) {\n return;\n }\n var isXs = !i;\n colClasses.push(isXs ? \"row-cols-\".concat(colSize) : \"row-cols-\".concat(colWidth, \"-\").concat(colSize));\n });\n var classes = mapToCssModules(classNames(className, noGutters ? 'gx-0' : null, 'row', colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nRow.propTypes = propTypes;\nexport default Row;","var _excluded = [\"className\", \"cssModule\", \"widths\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.shape({\n size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n tag: tagPropType,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n xxl: columnProps,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n widths: PropTypes.array\n};\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\".concat(colWidth);\n }\n if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\".concat(colWidth, \"-auto\");\n }\n return isXs ? \"col-\".concat(colSize) : \"col-\".concat(colWidth, \"-\").concat(colSize);\n};\nexport var getColumnClasses = function getColumnClasses(attributes, cssModule) {\n var widths = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : colWidths;\n var modifiedAttributes = attributes;\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = modifiedAttributes[colWidth];\n delete modifiedAttributes[colWidth];\n if (!columnProp && columnProp !== '') {\n return;\n }\n var isXs = !i;\n if (isObject(columnProp)) {\n var _classNames;\n var colSizeInterfix = isXs ? '-' : \"-\".concat(colWidth, \"-\");\n var colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _defineProperty(_classNames, colClass, columnProp.size || columnProp.size === ''), _defineProperty(_classNames, \"order\".concat(colSizeInterfix).concat(columnProp.order), columnProp.order || columnProp.order === 0), _defineProperty(_classNames, \"offset\".concat(colSizeInterfix).concat(columnProp.offset), columnProp.offset || columnProp.offset === 0), _classNames)), cssModule));\n } else {\n var _colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n colClasses.push(_colClass);\n }\n });\n return {\n colClasses: colClasses,\n modifiedAttributes: modifiedAttributes\n };\n};\nfunction Col(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$widths = props.widths,\n widths = _props$widths === void 0 ? colWidths : _props$widths,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var _getColumnClasses = getColumnClasses(attributes, cssModule, widths),\n modifiedAttributes = _getColumnClasses.modifiedAttributes,\n colClasses = _getColumnClasses.colClasses;\n if (!colClasses.length) {\n colClasses.push('col');\n }\n var classes = mapToCssModules(classNames(className, colClasses), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, modifiedAttributes, {\n className: classes\n }));\n}\nCol.propTypes = propTypes;\nexport default Col;","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Nav } from 'reactstrap'\r\n\r\nexport default () => {\r\n return (\r\n <React.Fragment>\r\n <Nav className='admin-nav' vertical>\r\n <NavLink to={'/admin/manageusers'} className='nav-link'>\r\n User Management\r\n </NavLink>\r\n <NavLink to={'/admin/manageemotes'} className='nav-link'>\r\n Emote Management\r\n </NavLink>\r\n <NavLink to={'/admin/managebadges'} className='nav-link'>\r\n Badge Management\r\n </NavLink>\r\n <NavLink to={'/admin/managereactions'} className='nav-link'>\r\n Reaction Management\r\n </NavLink>\r\n <NavLink to={'/admin/manageforums'} className='nav-link'>\r\n Forum Management\r\n </NavLink>\r\n <NavLink to={'/admin/manageforumpermissiongroups'} className='nav-link'>\r\n Forum Permission Group Management\r\n </NavLink>\r\n <NavLink to={'/admin/manageevents'} className='nav-link'>\r\n Event Management\r\n </NavLink>\r\n <NavLink to={'/admin/managenews'} className='nav-link'>\r\n News Management\r\n </NavLink>\r\n <NavLink to={'/admin/managestreamers'} className='nav-link'>\r\n Streamer Management\r\n </NavLink>\r\n </Nav>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport AdminNav from './AdminNav'\r\n\r\nconst AdminPanel = (props: { children?: React.ReactNode }) => {\r\n return (\r\n <React.Fragment>\r\n <Row xs='1' sm='1' md='1' lg='2' xl='2' xxl='2' className='mt-md-5'>\r\n <Col lg='4' xl='4' xxl='4'>\r\n <AdminNav />\r\n </Col>\r\n <Col lg='8' xl='8' xxl='8' className='mx-auto my-2'>\r\n {props.children}\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default AdminPanel\r\n","import * as React from 'react'\r\n\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport AdminPanel from './AdminPanel'\r\n\r\nexport default () => {\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Admin Dashboard'} />\r\n <AdminPanel>\r\n <p>Hello and welcome to the admin panel!</p>\r\n <p>With great power...</p>\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","var _excluded = [\"className\", \"cssModule\", \"row\", \"disabled\", \"check\", \"inline\", \"floating\", \"noMargin\", \"tag\", \"switch\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n row: PropTypes.bool,\n check: PropTypes.bool,\n \"switch\": PropTypes.bool,\n inline: PropTypes.bool,\n floating: PropTypes.bool,\n noMargin: PropTypes.bool,\n disabled: PropTypes.bool,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nfunction FormGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n row = props.row,\n disabled = props.disabled,\n check = props.check,\n inline = props.inline,\n floating = props.floating,\n noMargin = props.noMargin,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n switchProp = props[\"switch\"],\n attributes = _objectWithoutProperties(props, _excluded);\n var formCheck = check || switchProp;\n var classes = mapToCssModules(classNames(className, row ? 'row' : false, formCheck ? 'form-check' : false, switchProp ? 'form-switch' : false, formCheck || noMargin ? false : 'mb-3', formCheck && inline ? 'form-check-inline' : false, formCheck && disabled ? 'disabled' : false, floating && 'form-floating'), cssModule);\n if (Tag === 'fieldset') {\n attributes.disabled = disabled;\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nFormGroup.propTypes = propTypes;\nexport default FormGroup;","var _excluded = [\"className\", \"cssModule\", \"hidden\", \"widths\", \"tag\", \"check\", \"size\", \"for\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.string, PropTypes.number, PropTypes.shape({\n size: stringOrNumberProp,\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n children: PropTypes.node,\n hidden: PropTypes.bool,\n check: PropTypes.bool,\n size: PropTypes.string,\n \"for\": PropTypes.string,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n xxl: columnProps,\n widths: PropTypes.array\n};\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\".concat(colWidth);\n }\n if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\".concat(colWidth, \"-auto\");\n }\n return isXs ? \"col-\".concat(colSize) : \"col-\".concat(colWidth, \"-\").concat(colSize);\n};\nfunction Label(props) {\n var className = props.className,\n cssModule = props.cssModule,\n hidden = props.hidden,\n _props$widths = props.widths,\n widths = _props$widths === void 0 ? colWidths : _props$widths,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'label' : _props$tag,\n check = props.check,\n size = props.size,\n htmlFor = props[\"for\"],\n attributes = _objectWithoutProperties(props, _excluded);\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n if (!columnProp && columnProp !== '') {\n return;\n }\n var isXs = !i;\n var colClass;\n if (isObject(columnProp)) {\n var _classNames;\n var colSizeInterfix = isXs ? '-' : \"-\".concat(colWidth, \"-\");\n colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _defineProperty(_classNames, colClass, columnProp.size || columnProp.size === ''), _defineProperty(_classNames, \"order\".concat(colSizeInterfix).concat(columnProp.order), columnProp.order || columnProp.order === 0), _defineProperty(_classNames, \"offset\".concat(colSizeInterfix).concat(columnProp.offset), columnProp.offset || columnProp.offset === 0), _classNames))), cssModule);\n } else {\n colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n colClasses.push(colClass);\n }\n });\n var colFormLabel = size || colClasses.length;\n var formLabel = !(check || colFormLabel);\n var classes = mapToCssModules(classNames(className, hidden ? 'visually-hidden' : false, check ? 'form-check-label' : false, size ? \"col-form-label-\".concat(size) : false, colClasses, colFormLabel ? 'col-form-label' : false, formLabel ? 'form-label' : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({\n htmlFor: htmlFor\n }, attributes, {\n className: classes\n }));\n}\nLabel.propTypes = propTypes;\nexport default Label;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"className\", \"cssModule\", \"type\", \"bsSize\", \"valid\", \"invalid\", \"tag\", \"addon\", \"plaintext\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n/* eslint react/prefer-stateless-function: 0 */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, warnOnce, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n type: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n bsSize: PropTypes.string,\n valid: PropTypes.bool,\n invalid: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n plaintext: PropTypes.bool,\n addon: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar Input = /*#__PURE__*/function (_React$Component) {\n _inherits(Input, _React$Component);\n var _super = _createSuper(Input);\n function Input(props) {\n var _this;\n _classCallCheck(this, Input);\n _this = _super.call(this, props);\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.focus = _this.focus.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(Input, [{\n key: \"getRef\",\n value: function getRef(ref) {\n if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n this.ref = ref;\n }\n }, {\n key: \"focus\",\n value: function focus() {\n if (this.ref) {\n this.ref.focus();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n _this$props$type = _this$props.type,\n type = _this$props$type === void 0 ? 'text' : _this$props$type,\n bsSize = _this$props.bsSize,\n valid = _this$props.valid,\n invalid = _this$props.invalid,\n tag = _this$props.tag,\n addon = _this$props.addon,\n plaintext = _this$props.plaintext,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutProperties(_this$props, _excluded);\n var checkInput = ['switch', 'radio', 'checkbox'].indexOf(type) > -1;\n var isNotaNumber = /\\D/g;\n var textareaInput = type === 'textarea';\n var selectInput = type === 'select';\n var rangeInput = type === 'range';\n var Tag = tag || (selectInput || textareaInput ? type : 'input');\n var formControlClass = 'form-control';\n if (plaintext) {\n formControlClass = \"\".concat(formControlClass, \"-plaintext\");\n Tag = tag || 'input';\n } else if (rangeInput) {\n formControlClass = 'form-range';\n } else if (selectInput) {\n formControlClass = 'form-select';\n } else if (checkInput) {\n if (addon) {\n formControlClass = null;\n } else {\n formControlClass = 'form-check-input';\n }\n }\n if (attributes.size && isNotaNumber.test(attributes.size)) {\n warnOnce('Please use the prop \"bsSize\" instead of the \"size\" to bootstrap\\'s input sizing.');\n bsSize = attributes.size;\n delete attributes.size;\n }\n var classes = mapToCssModules(classNames(className, invalid && 'is-invalid', valid && 'is-valid', bsSize ? selectInput ? \"form-select-\".concat(bsSize) : \"form-control-\".concat(bsSize) : false, formControlClass), cssModule);\n if (Tag === 'input' || tag && typeof tag === 'function') {\n attributes.type = type === 'switch' ? 'checkbox' : type;\n }\n if (attributes.children && !(plaintext || type === 'select' || typeof Tag !== 'string' || Tag === 'select')) {\n warnOnce(\"Input with a type of \\\"\".concat(type, \"\\\" cannot have children. Please use \\\"value\\\"/\\\"defaultValue\\\" instead.\"));\n delete attributes.children;\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes,\n \"aria-invalid\": invalid\n }));\n }\n }]);\n return Input;\n}(React.Component);\nInput.propTypes = propTypes;\nexport default Input;","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button, Col, FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { BadgesClient, FileParameter } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface CreateNewBadgeProps {\r\n setModBadge: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: CreateNewBadgeProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [badgeName, setBadgeName] = useState<string>('')\r\n const [badgeFile, setBadgeFile] = useState<FileParameter>()\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const submitEmote = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new BadgesClient()\r\n const response = (await client.create(badgeName, badgeFile).then((response) => response)) as number\r\n props.setModBadge(response)\r\n setBadgeName('')\r\n setBadgeFile(null)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const handleSetFile = async (evt: React.ChangeEvent<HTMLInputElement>) => {\r\n const upload: FileParameter = {\r\n data: evt.target.files[0],\r\n fileName: evt.target.files[0].name,\r\n }\r\n setBadgeFile(upload)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <h2>Create Badges</h2>\r\n <FormGroup row>\r\n <Label for='badgeName' sm={2}>\r\n Badge Name\r\n </Label>\r\n <Col sm={10}>\r\n <Input name='badgeName' value={badgeName} onChange={(e) => setBadgeName(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='badgeFile' sm={2}>\r\n Badge File\r\n </Label>\r\n <Col sm={10}>\r\n <input type='file' id='badgeFile' name='badgeFile' accept='image/png, image/jpeg' onChange={handleSetFile} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>\r\n <Button disabled={!badgeName || !badgeFile || loading} onClick={submitEmote}>\r\n Submit Badge\r\n </Button>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { BadgesClient, DeleteBadgeCommand, IBadgeListVm, IBadgesDto, IEmotesDto, IReactionsDto, IReactionsListVm, ReactionsClient } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface DeleteBadgeProps {\r\n modBadge: number\r\n setModBadge: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: DeleteBadgeProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [badges, setBadges] = useState<IBadgesDto[]>(null)\r\n const [selectedBadge, setSelectedBadge] = useState<IBadgesDto>(null)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new BadgesClient()\r\n const response = await client.get().then((response) => response.toJSON() as Promise<IBadgeListVm>)\r\n setBadges(response.badges)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [props.modBadge])\r\n\r\n useEffect(() => {\r\n if (badges && badges.length > 0) {\r\n setSelectedBadge(badges[0])\r\n }\r\n }, [badges])\r\n\r\n const submitDeleteBadge = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new BadgesClient()\r\n let command = new DeleteBadgeCommand()\r\n command.badgeId = selectedBadge.id\r\n const response = await client.delete(selectedBadge.id, command).then((response) => response as number)\r\n props.setModBadge(response)\r\n } catch (e) {\r\n error.setError(JSON.parse(e.response))\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <h2>Delete Badges</h2>\r\n <FormGroup row>\r\n <Label for='badgeSelect'>Badges</Label>\r\n <Col sm={10}>\r\n <Input\r\n type='select'\r\n id='badgeSelect'\r\n name='badgeSelect'\r\n onChange={(e) => setSelectedBadge(badges.find((f) => f.id === parseInt(e.target.value, 10)) ?? badges[0])}\r\n disabled={loading || !badges || badges.length <= 0}\r\n >\r\n {badges &&\r\n badges.map((s, idx) => (\r\n <option value={s.id} key={s.id}>\r\n {s.badgeName}\r\n </option>\r\n ))}\r\n </Input>\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>{selectedBadge && <img src={'/images/badges/' + selectedBadge.badgeFileName} />}</Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>\r\n <Button disabled={!badges || !selectedBadge || loading} onClick={submitDeleteBadge} color='danger'>\r\n Delete Badge\r\n </Button>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\n\r\nimport HelmetPages from '../../helmet/HelmetPages'\r\nimport AdminPanel from '../AdminPanel'\r\nimport CreateNewBadge from './CreateNewBadge'\r\nimport DeleteBadge from './DeleteBadge'\r\n\r\nexport default () => {\r\n const [modBadge, setModBadge] = useState<number>(0)\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage Badges'} />\r\n <AdminPanel>\r\n <h1>Manage Badges</h1>\r\n <CreateNewBadge setModBadge={setModBadge} />\r\n <hr />\r\n <DeleteBadge modBadge={modBadge} setModBadge={setModBadge} />\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button, Col, FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { EmotesClient, FileParameter } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface CreateNewEmoteProps {\r\n setModEmote: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: CreateNewEmoteProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [emoteName, setEmoteName] = useState<string>('')\r\n const [emoteFile, setEmoteFile] = useState<FileParameter>()\r\n const [emoteCode, setEmoteCode] = useState<string>('')\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const submitEmote = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new EmotesClient()\r\n const response = (await client.create(emoteName, emoteCode, emoteFile).then((response) => response)) as number\r\n props.setModEmote(response)\r\n setEmoteName('')\r\n setEmoteCode('')\r\n setEmoteFile(null)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const handleSetFile = async (evt: React.ChangeEvent<HTMLInputElement>) => {\r\n const upload: FileParameter = {\r\n data: evt.target.files[0],\r\n fileName: evt.target.files[0].name,\r\n }\r\n setEmoteFile(upload)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <h2>Create Emotes</h2>\r\n <FormGroup row>\r\n <Label for='emoteName' sm={2}>\r\n Emote Name\r\n </Label>\r\n <Col sm={10}>\r\n <Input value={emoteName} onChange={(e) => setEmoteName(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='emoteCode' sm={2}>\r\n Emote Code\r\n </Label>\r\n <Col sm={10}>\r\n <Input value={emoteCode} onChange={(e) => setEmoteCode(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='EmoteFile' sm={2}>\r\n Emote File\r\n </Label>\r\n <Col sm={10}>\r\n <input type='file' id='EmoteFile' name='EmoteFile' accept='image/png, image/jpeg' onChange={handleSetFile} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>\r\n <Button disabled={!emoteName || !emoteFile || !emoteCode || loading} onClick={submitEmote}>\r\n Submit Emote\r\n </Button>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { DeleteEmoteCommand, EmotesClient, IEmoteListVm, IEmotesDto } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface DeleteEmoteProps {\r\n modEmote: number\r\n setModEmote: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: DeleteEmoteProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [emotes, setEmotes] = useState<IEmotesDto[]>(null)\r\n const [selectedEmote, setSelectedEmotes] = useState<IEmotesDto>(null)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new EmotesClient()\r\n const response = await client.get().then((response) => response.toJSON() as Promise<IEmoteListVm>)\r\n setEmotes(response.emotes)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [props.modEmote])\r\n\r\n const submitDeleteEmote = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new EmotesClient()\r\n let command = new DeleteEmoteCommand()\r\n command.emoteId = selectedEmote.id\r\n const response = await client.delete(selectedEmote.id, command).then((response) => response as number)\r\n props.setModEmote(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <h2>Delete Emotes</h2>\r\n <FormGroup row>\r\n <Label>Emotes:</Label>\r\n <Col sm={10}>\r\n <Input\r\n type='select'\r\n value={selectedEmote?.id ?? 0}\r\n onChange={(e) => setSelectedEmotes(emotes.find((f) => f.id === parseInt(e.target.value, 10)) ?? emotes[0])}\r\n disabled={loading || !emotes || emotes.length <= 0}\r\n >\r\n {emotes &&\r\n emotes.map((s, idx) => (\r\n <option value={s.id} key={s.id}>\r\n {s.emoteName}\r\n </option>\r\n ))}\r\n </Input>\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>{selectedEmote && <img src={'/images/emotes/' + selectedEmote.emoteCode} />}</Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>\r\n <Button disabled={!emotes || emotes.length <= 0 || !selectedEmote || loading} onClick={submitDeleteEmote} color='danger'>\r\n Delete Emote\r\n </Button>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\n\r\nimport { EmotesClient, IEmoteListVm, IEmotesDto } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport HelmetPages from '../../helmet/HelmetPages'\r\nimport AdminPanel from '../AdminPanel'\r\nimport CreateNewEmote from './CreateNewEmote'\r\nimport DeleteEmote from './DeleteEmote'\r\n\r\nexport default () => {\r\n const [modEmote, setModEmote] = useState<number>(0)\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage Emotes'} />\r\n <AdminPanel>\r\n <h1>Manage Emotes</h1>\r\n <CreateNewEmote setModEmote={setModEmote} />\r\n <hr />\r\n <DeleteEmote modEmote={modEmote} setModEmote={setModEmote} />\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\ninterface EventOptionsProps {\r\n pageSize: number\r\n setPageSize: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: EventOptionsProps) => {\r\n return (\r\n <React.Fragment>\r\n <label>\r\n Page Size:\r\n <select value={props.pageSize} onChange={(e) => props.setPageSize(parseInt(e.target.value, 10))}>\r\n <option value={50}>50</option>\r\n <option value={75}>75</option>\r\n <option value={100}>100</option>\r\n <option value={250}>250</option>\r\n </select>\r\n </label>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport ReactPaginate from 'react-paginate'\r\n\r\ninterface EventPaginationProps {\r\n pageCount: number\r\n setPageChange: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: EventPaginationProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex justify-content-end my-2'>\r\n <ReactPaginate\r\n previousLabel={'← Previous'}\r\n nextLabel={'Next →'}\r\n pageCount={props.pageCount}\r\n onPageChange={(p) => props.setPageChange(p.selected)}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n containerClassName={'pagination pagination-sm'}\r\n previousLinkClassName={'page-link'}\r\n nextLinkClassName={'page-link'}\r\n disabledClassName={'page-item disabled'}\r\n activeClassName={'page-item active'}\r\n activeLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n previousClassName={'page-item'}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n renderOnZeroPageCount={null}\r\n />\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","var _excluded = [\"className\", \"cssModule\", \"size\", \"bordered\", \"borderless\", \"striped\", \"dark\", \"hover\", \"responsive\", \"tag\", \"responsiveTag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Adds border to all sides of table */\n bordered: PropTypes.bool,\n /** Removes all borders */\n borderless: PropTypes.bool,\n /** Adds custom class name to component */\n className: PropTypes.string,\n /** */\n cssModule: PropTypes.object,\n /** Makes the table dark */\n dark: PropTypes.bool,\n /** Enables a hover state on the rows within `<tbody>` */\n hover: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object]),\n /** Responsive tables allow tables to be scrolled horizontally with ease */\n responsive: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n responsiveTag: tagPropType,\n /** Make tables more compact by cutting cell padding in half when setting size as sm. */\n size: PropTypes.string,\n /** Adds zebra-striping to any table row within the `<tbody>` */\n striped: PropTypes.bool,\n /** Add custom tag to the component */\n tag: tagPropType\n};\nfunction Table(props) {\n var className = props.className,\n cssModule = props.cssModule,\n size = props.size,\n bordered = props.bordered,\n borderless = props.borderless,\n striped = props.striped,\n dark = props.dark,\n hover = props.hover,\n responsive = props.responsive,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'table' : _props$tag,\n _props$responsiveTag = props.responsiveTag,\n ResponsiveTag = _props$responsiveTag === void 0 ? 'div' : _props$responsiveTag,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'table', size ? 'table-' + size : false, bordered ? 'table-bordered' : false, borderless ? 'table-borderless' : false, striped ? 'table-striped' : false, dark ? 'table-dark' : false, hover ? 'table-hover' : false), cssModule);\n var table = /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes\n }));\n if (responsive) {\n var responsiveClassName = mapToCssModules(responsive === true ? 'table-responsive' : \"table-responsive-\".concat(responsive), cssModule);\n return /*#__PURE__*/React.createElement(ResponsiveTag, {\n className: responsiveClassName\n }, table);\n }\n return table;\n}\nTable.propTypes = propTypes;\nexport default Table;","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button, Table } from 'reactstrap'\r\n\r\nimport { DeleteDoomCentralEventCommand, DoomCentralEventsClient, IEventItemDto } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface EventTableProps {\r\n events: IEventItemDto[]\r\n setModEvent: React.Dispatch<React.SetStateAction<number>>\r\n loading: boolean\r\n}\r\n\r\nexport default (props: EventTableProps) => {\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const deleteSubmit = async (eventId: number) => {\r\n setLoading(true)\r\n try {\r\n let client = new DoomCentralEventsClient()\r\n let command = new DeleteDoomCentralEventCommand()\r\n command.eventId = eventId\r\n const response = (await client.delete(eventId, command).then((response) => response)) as number\r\n props.setModEvent(response)\r\n } catch (e) {\r\n error.setError(JSON.parse(e.response))\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Table>\r\n <thead>\r\n <th>Id</th>\r\n <th>Title</th>\r\n <th>Region</th>\r\n <th>Start Date</th>\r\n <th>End Date</th>\r\n <th>Delete</th>\r\n </thead>\r\n <tbody>\r\n {props.events &&\r\n props.events.map((s, idx) => (\r\n <tr>\r\n <td>{s.eventId}</td>\r\n <td>{s.title}</td>\r\n <td>{s.eventRegion}</td>\r\n <td>{s.eventStartDate.toISOString()}</td>\r\n <td>{s.eventEndDate.toISOString()}</td>\r\n <td>\r\n <Button color='danger' onClick={(e) => deleteSubmit(s.eventId)} disabled={loading || props.loading}>\r\n Delete Event\r\n </Button>\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </Table>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\n\r\nimport { DoomCentralEventsClient, IEventPaginatedListVm, IEventsPageVm } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport HelmetPages from '../../helmet/HelmetPages'\r\nimport AdminPanel from '../AdminPanel'\r\nimport EventOptions from './EventOptions'\r\nimport EventPagination from './EventPagination'\r\nimport EventTable from './EventTable'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [modEvent, setModEvent] = useState<number>(0)\r\n const [events, setEvents] = useState<IEventsPageVm>(null)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [upcomingEventsPageNumber, setUpcomingEventsPageNumber] = useState<number>(1)\r\n const [upcomingEventsPageSize, setUpcomingEventsPageSize] = useState<number>(10)\r\n const [pastEventsPageNumber, setPastEventsPageNumber] = useState<number>(1)\r\n const [pastEventsPageSize, setPastEventsPageSize] = useState<number>(10)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new DoomCentralEventsClient()\r\n const response = await client\r\n .getEvents(upcomingEventsPageNumber, upcomingEventsPageSize, pastEventsPageNumber, pastEventsPageSize)\r\n .then((response) => response.toJSON() as Promise<IEventsPageVm>)\r\n setEvents(response)\r\n } catch (e) {\r\n error.setError(e.response)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [modEvent])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage Events'} />\r\n <AdminPanel>\r\n {!loading && events?.liveEventItems?.eventList?.length > 0 && (\r\n <>\r\n <h2>Live Events</h2>\r\n <EventTable events={events?.liveEventItems?.eventList} setModEvent={setModEvent} loading={loading} />\r\n </>\r\n )}\r\n <h2>Upcoming Events</h2>\r\n <EventPagination pageCount={events?.upcomingEventItems?.totalCount ?? 0} setPageChange={setUpcomingEventsPageNumber} />\r\n <EventOptions pageSize={upcomingEventsPageSize} setPageSize={setUpcomingEventsPageSize} />\r\n <EventTable events={events?.upcomingEventItems?.eventList} setModEvent={setModEvent} loading={loading} />\r\n <h2>Past Events</h2>\r\n <EventPagination pageCount={events?.pastEventItems?.totalCount ?? 0} setPageChange={setPastEventsPageNumber} />\r\n <EventOptions pageSize={pastEventsPageSize} setPageSize={setPastEventsPageSize} />\r\n <EventTable events={events?.pastEventItems?.eventList} setModEvent={setModEvent} loading={loading} />\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { Input } from 'reactstrap'\r\n\r\nimport { IForumDto, IForumGroupsDto } from '../../../../lib/DoomCentral'\r\n\r\ninterface ForumGroupSelectProps {\r\n setGroupSelect: React.Dispatch<React.SetStateAction<IForumGroupsDto>>\r\n selectedForum: IForumDto\r\n forumGroups: IForumGroupsDto[]\r\n loading: boolean\r\n}\r\n\r\nexport default (props: ForumGroupSelectProps) => {\r\n const [selectedGroupId, setSelectedGroupId] = useState<number>(0)\r\n\r\n React.useEffect(() => {\r\n if (props.selectedForum) {\r\n selectGroup(props.selectedForum.forumGroupId)\r\n }\r\n }, [props.selectedForum])\r\n\r\n React.useEffect(() => {\r\n if (props.forumGroups && props.forumGroups.length > 0) {\r\n selectGroup(props.forumGroups[0].id)\r\n }\r\n }, [props.forumGroups])\r\n\r\n const selectGroup = (groupId: number) => {\r\n if (props.forumGroups && props.forumGroups.length > 0) {\r\n setSelectedGroupId(groupId)\r\n props.setGroupSelect(props.forumGroups.find((f) => f.id === groupId))\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <label>\r\n ForumGroup:\r\n <Input type='select' value={selectedGroupId} onChange={(e) => selectGroup(parseInt(e.target.value, 10))}>\r\n {props.forumGroups &&\r\n props.forumGroups.map((s, idx) => (\r\n <option value={s.id} key={s.id}>\r\n {s.name}\r\n </option>\r\n ))}\r\n </Input>\r\n </label>\r\n </React.Fragment>\r\n )\r\n}\r\n","var _excluded = [\"className\", \"cssModule\", \"inline\", \"color\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n inline: PropTypes.bool,\n tag: tagPropType,\n color: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nfunction FormText(props) {\n var className = props.className,\n cssModule = props.cssModule,\n inline = props.inline,\n _props$color = props.color,\n color = _props$color === void 0 ? 'muted' : _props$color,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'small' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, !inline ? 'form-text' : false, color ? \"text-\".concat(color) : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nFormText.propTypes = propTypes;\nexport default FormText;","import { formatBytes } from '@/utils/helpers'\r\nimport * as React from 'react'\r\n\r\ninterface DataCounterProps {\r\n maxFileSize: number\r\n}\r\n\r\nexport default (props: DataCounterProps) => {\r\n return (\r\n <React.Fragment>\r\n <p className='text-muted'>{formatBytes(props.maxFileSize)}</p>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\ninterface DataSizePresetButtonsProps {\r\n maxFileSize: number\r\n setMaxFileSize: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: DataSizePresetButtonsProps) => {\r\n return (\r\n <React.Fragment>\r\n <Button onClick={(e) => props.setMaxFileSize(2097152)} disabled={props.maxFileSize === 2097152}>\r\n 2 MB\r\n </Button>{' '}\r\n <Button onClick={(e) => props.setMaxFileSize(5242880)} disabled={props.maxFileSize === 5242880}>\r\n 5 MB\r\n </Button>{' '}\r\n <Button onClick={(e) => props.setMaxFileSize(10485760)} disabled={props.maxFileSize === 10485760}>\r\n 10 MB\r\n </Button>{' '}\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\ninterface DataSizePresetButtonsProps {\r\n tags: any[]\r\n setTags: React.Dispatch<React.SetStateAction<any[]>>\r\n}\r\n\r\nexport default (props: DataSizePresetButtonsProps) => {\r\n return (\r\n <React.Fragment>\r\n <Button onClick={(e) => e} disabled={true}>\r\n Image Formats\r\n </Button>{' '}\r\n <Button onClick={(e) => e} disabled={true}>\r\n WAD/PK3\r\n </Button>{' '}\r\n <Button onClick={(e) => e} disabled={true}>\r\n ZIP Package Formats\r\n </Button>{' '}\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\nimport TagsInput from 'react-tagsinput'\r\nimport 'react-tagsinput/react-tagsinput.css'\r\nimport { FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport DataCounter from './DataCounter'\r\nimport DataSizePresetButtons from './DataSizePresetButtons'\r\nimport DataTypePresetButtons from './DataTypePresetButtons'\r\n\r\ninterface PostFileSettingsProps {\r\n setTags: React.Dispatch<React.SetStateAction<any[]>>\r\n tags: any[]\r\n setMaxFilesPerPost: React.Dispatch<React.SetStateAction<number>>\r\n maxFilesPerPost: number\r\n setMaxFileSize: React.Dispatch<React.SetStateAction<number>>\r\n maxFileSize: number\r\n loading: boolean\r\n}\r\n\r\nexport default (props: PostFileSettingsProps) => {\r\n const [invalidTagNames, setInvalidTagNames] = useState<string>('')\r\n\r\n const handleChange = (tags: any[]) => {\r\n props.setTags(tags)\r\n setInvalidTagNames('')\r\n }\r\n\r\n const rejectTags = (tags: any[]) => {\r\n setInvalidTagNames(String(tags))\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <h5>Allowed File Extensions</h5>\r\n <TagsInput\r\n value={props.tags}\r\n onChange={handleChange}\r\n onlyUnique={true}\r\n validationRegex={new RegExp('^(\\\\.[a-zA-Z0-9]+)+$')}\r\n onValidationReject={(tags) => rejectTags(tags)}\r\n />\r\n {invalidTagNames.length > 0 && <div className='bg-danger text-white'>The following attempted file extensions are invalid: {invalidTagNames}</div>}{' '}\r\n <p className='text-muted'>Please lead each file extension with .</p>\r\n <DataTypePresetButtons tags={props.tags} setTags={props.setTags} />\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='fileSizeRange'>Maximum File Size Per Post File (in Bytes)</Label>\r\n <Input\r\n id='fileSizeRange'\r\n name='range'\r\n type='range'\r\n max={209715200}\r\n min={0}\r\n value={props.maxFileSize}\r\n onChange={(e) => props.setMaxFileSize(parseInt(e.target.value))}\r\n />\r\n <DataCounter maxFileSize={props.maxFileSize} />\r\n <DataSizePresetButtons maxFileSize={props.maxFileSize} setMaxFileSize={props.setMaxFileSize} />\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='filesPerPost'>Max Files Per Post</Label>\r\n <Input\r\n id='filesPerPost'\r\n name='number'\r\n placeholder='Max Files Per Post'\r\n type='number'\r\n value={props.maxFilesPerPost}\r\n onChange={(e) => props.setMaxFilesPerPost(parseInt(e.target.value))}\r\n />\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button, FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../../ErrorResponse'\r\nimport { CreateForumCommand, ForumsClient, IForumGroupsDto } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\nimport PostFileSettings from '../../../postfilesettings/PostFileSettings'\r\n\r\ninterface CreateNewForumProps {\r\n setNewForum: React.Dispatch<React.SetStateAction<number>>\r\n forumGroup: IForumGroupsDto\r\n loading: boolean\r\n}\r\n\r\nexport default (props: CreateNewForumProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [name, setName] = useState<string>('')\r\n const [desc, setDesc] = useState<string>('')\r\n const [hidden, setHidden] = useState<boolean>(false)\r\n const [locked, setLocked] = useState<boolean>(false)\r\n const [moderated, setModerated] = useState<boolean>(false)\r\n\r\n const [tags, setTags] = useState<any[]>([])\r\n const [maxFilesPerPost, setMaxFilesPerPost] = useState<number>(5)\r\n const [maxFileSizePerPost, setMaxFileSizePerPost] = useState<number>(2097152)\r\n\r\n const submitForum = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumsClient()\r\n let command = new CreateForumCommand()\r\n command.name = name\r\n command.description = desc\r\n command.forumGroupId = props.forumGroup.id\r\n command.hidden = hidden\r\n command.locked = locked\r\n command.moderated = moderated\r\n command.maxFilesPerPost = maxFilesPerPost\r\n command.maxFileSize = maxFileSizePerPost\r\n\r\n const response = await client.create(command).then((response) => response)\r\n\r\n props.setNewForum(response)\r\n\r\n setName('')\r\n setDesc('')\r\n setHidden(false)\r\n setLocked(false)\r\n setModerated(false)\r\n } catch (e) {\r\n console.log(e)\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='forum'>Create New Forum</Label>\r\n <Input value={name} onChange={(e) => setName(e.target.value)} />\r\n <FormText>Forum Name</FormText>\r\n <Input value={desc} onChange={(e) => setDesc(e.target.value)} />\r\n <FormText>Forum Description</FormText>\r\n <FormGroup row>\r\n <Label check>\r\n <Input type='checkbox' checked={hidden} onChange={(e) => setHidden(e.target.checked)} /> Hidden\r\n </Label>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label check>\r\n <Input type='checkbox' checked={locked} onChange={(e) => setLocked(e.target.checked)} /> Locked\r\n </Label>\r\n </FormGroup>\r\n <PostFileSettings\r\n setTags={setTags}\r\n tags={tags}\r\n setMaxFilesPerPost={setMaxFilesPerPost}\r\n maxFilesPerPost={maxFilesPerPost}\r\n setMaxFileSize={setMaxFileSizePerPost}\r\n maxFileSize={maxFileSizePerPost}\r\n loading={loading}\r\n />\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button onClick={submitForum} disabled={!name || !desc || loading || props.loading || !props.forumGroup}>\r\n Create New Forum\r\n </Button>\r\n </div>\r\n </div>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { DeleteForumCommand, ForumsClient, IForumDto } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\n\r\ninterface DeleteForumProps {\r\n setDeletedForum: React.Dispatch<React.SetStateAction<number>>\r\n selectedForum: IForumDto\r\n loading: boolean\r\n}\r\n\r\nexport default (props: DeleteForumProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const submitForumGroup = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumsClient()\r\n let command = new DeleteForumCommand()\r\n command.id = props.selectedForum.id\r\n\r\n const response = await client.delete(props.selectedForum.id, command).then((response) => response)\r\n props.setDeletedForum(response)\r\n } catch (e) {\r\n error.setError(JSON.parse(e.response))\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button onClick={submitForumGroup} disabled={!props.selectedForum || loading} color='danger'>\r\n Delete Forum\r\n </Button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Input, Label } from 'reactstrap'\r\n\r\nimport { ForumsClient, IForumDto, IForumListVm } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\n\r\ninterface ForumSelectProps {\r\n modForum: number\r\n setForumSelect: React.Dispatch<React.SetStateAction<IForumDto>>\r\n loading: boolean\r\n}\r\n\r\nexport default (props: ForumSelectProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [selectedForumId, setSelectedForumId] = useState<number>(0)\r\n const [forums, setForums] = useState<IForumListVm>(null)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumsClient()\r\n const response = await client.getForums().then((response) => response.toJSON() as Promise<IForumListVm>)\r\n setForums(response)\r\n } catch (e) {\r\n error.setError(JSON.parse(e.response))\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [props.modForum])\r\n\r\n useEffect(() => {\r\n if (forums && forums.forums && forums.forums.length > 0) {\r\n selectForum(forums.forums[0].id)\r\n }\r\n }, [forums])\r\n\r\n const selectForum = (forumId: number) => {\r\n setSelectedForumId(forumId)\r\n props.setForumSelect(forums.forums.find((f) => f.id === forumId) ?? forums.forums[0])\r\n return\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Label for='forumSelect'>Forum:</Label>\r\n <Input name='forumSelect' id='forumSelect' type='select' value={selectedForumId} onChange={(e) => selectForum(parseInt(e.target.value, 10))}>\r\n {forums &&\r\n forums.forums.map((s, idx) => (\r\n <option value={s.id} key={s.id}>\r\n {s.name}\r\n </option>\r\n ))}\r\n </Input>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../../ErrorResponse'\r\nimport { ForumsClient, IForumDto, IForumGroupsDto, UpdateForumCommand } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\nimport PostFileSettings from '../../../postfilesettings/PostFileSettings'\r\n\r\ninterface UpdateForumProps {\r\n setUpdatedForum: React.Dispatch<React.SetStateAction<number>>\r\n selectedForum: IForumDto\r\n selectedForumGroup: IForumGroupsDto\r\n loading: boolean\r\n}\r\n\r\nexport default (props: UpdateForumProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [name, setName] = useState<string>('')\r\n const [desc, setDesc] = useState<string>('')\r\n const [hidden, setHidden] = useState<boolean>(false)\r\n const [locked, setLocked] = useState<boolean>(false)\r\n const [moderated, setModerated] = useState<boolean>(false)\r\n\r\n const [tags, setTags] = useState<any[]>([])\r\n const [maxFilesPerPost, setMaxFilesPerPost] = useState<number>(5)\r\n const [maxFileSizePerPost, setMaxFileSizePerPost] = useState<number>(2097152)\r\n\r\n const [updateForum, setUpdateForum] = useState<number>(0)\r\n\r\n useEffect(() => {\r\n if (props.selectedForum) {\r\n setName(props.selectedForum.name)\r\n setDesc(props.selectedForum.description)\r\n setHidden(props.selectedForum.hidden)\r\n setLocked(props.selectedForum.locked)\r\n setModerated(props.selectedForum.moderated)\r\n setMaxFileSizePerPost(props.selectedForum.maxFilesPerPost)\r\n setMaxFileSizePerPost(props.selectedForum.maxFileSize)\r\n setTags(props.selectedForum.allowedFileExtensions?.split('/') ?? [])\r\n }\r\n }, [props.selectedForum])\r\n\r\n useEffect(() => {\r\n props.setUpdatedForum(updateForum)\r\n }, [updateForum])\r\n\r\n const submitForum = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumsClient()\r\n let command = new UpdateForumCommand()\r\n command.id = props.selectedForum.id\r\n command.name = name\r\n command.description = desc\r\n command.forumGroupId = props.selectedForumGroup.id\r\n command.hidden = hidden\r\n command.locked = locked\r\n command.moderated = moderated\r\n command.maxFilesPerPost = maxFilesPerPost\r\n command.maxFileSize = maxFileSizePerPost\r\n command.allowedFileExtensions = tags.length > 0 ? tags.join('/') : null\r\n\r\n const response = await client.update(props.selectedForum.id, command).then((response) => response)\r\n\r\n setUpdateForum(updateForum + 1)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='forum'>Update Forum</Label>\r\n <Input value={name} onChange={(e) => setName(e.target.value)} />\r\n <FormText>Forum Name</FormText>\r\n <Input value={desc} onChange={(e) => setDesc(e.target.value)} />\r\n <FormText>Forum Description</FormText>\r\n <FormGroup row>\r\n <Label check>\r\n <Input type='checkbox' checked={hidden} onChange={(e) => setHidden(e.target.checked)} /> Hidden\r\n </Label>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label check>\r\n <Input type='checkbox' checked={locked} onChange={(e) => setLocked(e.target.checked)} /> Locked\r\n </Label>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label check>\r\n <Input type='checkbox' checked={moderated} onChange={(e) => setModerated(e.target.checked)} /> Moderated\r\n </Label>\r\n </FormGroup>\r\n <PostFileSettings\r\n setTags={setTags}\r\n tags={tags}\r\n setMaxFilesPerPost={setMaxFilesPerPost}\r\n maxFilesPerPost={maxFilesPerPost}\r\n setMaxFileSize={setMaxFileSizePerPost}\r\n maxFileSize={maxFileSizePerPost}\r\n loading={loading}\r\n />\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button onClick={submitForum} disabled={!props.selectedForum || !props.selectedForumGroup || (!name && !desc) || loading}>\r\n Update Forum\r\n </Button>\r\n </div>\r\n </div>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IForumDto, IForumGroupListVm, IForumGroupsDto } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\nimport ForumGroupSelect from '../forumgroup/ForumGroupSelect'\r\nimport CreateNewForum from './CreateNewForum'\r\nimport DeleteForum from './DeleteForum'\r\nimport ForumSelect from './ForumSelect'\r\nimport UpdateForum from './UpdateForum'\r\n\r\ninterface ManageForumProps {\r\n forumGroups: IForumGroupListVm\r\n loading: boolean\r\n modForum: number\r\n setModForum: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: ManageForumProps) => {\r\n const [selectedForum, setSelectedForum] = useState<IForumDto>(null)\r\n const [selectedForumGroup, setSelectedForumGroup] = useState<IForumGroupsDto>(null)\r\n\r\n return (\r\n <React.Fragment>\r\n <Row>\r\n <h2>Forums</h2>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <p>This controls the forum group for creating a new forum, and for editing an existing forum.</p>\r\n <ForumGroupSelect forumGroups={props.forumGroups?.forumGroups} setGroupSelect={setSelectedForumGroup} selectedForum={selectedForum} loading={props.loading} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <CreateNewForum setNewForum={props.setModForum} forumGroup={selectedForumGroup} loading={props.loading} />\r\n </Col>\r\n <Col>\r\n <ForumSelect modForum={props.modForum} setForumSelect={setSelectedForum} loading={props.loading} />\r\n <UpdateForum selectedForum={selectedForum} selectedForumGroup={selectedForumGroup} setUpdatedForum={props.setModForum} loading={props.loading} />\r\n <DeleteForum selectedForum={selectedForum} setDeletedForum={props.setModForum} loading={props.loading} />\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button, FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../../ErrorResponse'\r\nimport { CreateForumGroupCommand, ForumGroupsClient } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\n\r\ninterface CreateNewForumGroupProps {\r\n setNewGroup: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: CreateNewForumGroupProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [name, setName] = useState<string>('')\r\n const [desc, setDesc] = useState<string>('')\r\n\r\n const submitForumGroup = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumGroupsClient()\r\n let command = new CreateForumGroupCommand()\r\n command.name = name\r\n command.description = desc\r\n\r\n const response = await client.create(command).then((response) => response)\r\n props.setNewGroup(response)\r\n\r\n setName('')\r\n setDesc('')\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='forumgroup'>Create New Forum Group</Label>\r\n <Input value={name} onChange={(e) => setName(e.target.value)} />\r\n <FormText>Forum Group Name</FormText>\r\n <Input value={desc} onChange={(e) => setDesc(e.target.value)} />\r\n <FormText>Forum Group Description</FormText>\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button onClick={submitForumGroup} disabled={(!name && !desc) || loading}>\r\n Create New Forum Group\r\n </Button>\r\n </div>\r\n </div>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\nimport { DeleteForumGroupCommand, ForumGroupsClient, IForumGroupsDto } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\n\r\ninterface DeleteForumGroupProps {\r\n setDeletedGroup: React.Dispatch<React.SetStateAction<number>>\r\n selectedGroup: IForumGroupsDto\r\n loading: boolean\r\n}\r\n\r\nexport default (props: DeleteForumGroupProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [clobber, setClobber] = useState<boolean>(false)\r\n\r\n const submitForumGroup = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumGroupsClient()\r\n let command = new DeleteForumGroupCommand()\r\n command.id = props.selectedGroup.id\r\n command.clobber = clobber\r\n\r\n const response = await client.delete(props.selectedGroup.id, command).then((response) => response)\r\n props.setDeletedGroup(response)\r\n } catch (e) {\r\n error.setError(JSON.parse(e.response))\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button onClick={submitForumGroup} disabled={!props.selectedGroup || loading} color='danger'>\r\n Delete Forum Group\r\n </Button>\r\n </div>\r\n </div>\r\n <FormGroup row>\r\n <Label check for='clobberForums'>\r\n <Input type='checkbox' id='clobberForums' name='clobberForums' value={+clobber} onChange={(e) => setClobber(!!e.target.value)} /> {' '}\r\n Clobber (Delete all forums as well)\r\n </Label>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../../ErrorResponse'\r\nimport { ForumGroupsClient, IForumGroupsDto, UpdateForumGroupCommand } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\n\r\ninterface UpdateForumGroupProps {\r\n setUpdatedGroup: React.Dispatch<React.SetStateAction<number>>\r\n selectedGroup: IForumGroupsDto\r\n loading: boolean\r\n}\r\n\r\nexport default (props: UpdateForumGroupProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [name, setName] = useState<string>('')\r\n const [desc, setDesc] = useState<string>('')\r\n\r\n useEffect(() => {\r\n if (props.selectedGroup) {\r\n setName(props.selectedGroup.name)\r\n setDesc(props.selectedGroup.description)\r\n }\r\n }, [props.selectedGroup])\r\n\r\n const submitForumGroup = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumGroupsClient()\r\n let command = new UpdateForumGroupCommand()\r\n command.id = props.selectedGroup.id\r\n command.name = name\r\n command.description = desc\r\n\r\n const response = await client.update(props.selectedGroup.id, command).then((response) => response)\r\n props.setUpdatedGroup(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='forumgroup'>Update Forum Group</Label>\r\n <Input value={name} onChange={(e) => setName(e.target.value)} />\r\n <FormText>Forum Group Name</FormText>\r\n <Input value={desc} onChange={(e) => setDesc(e.target.value)} />\r\n <FormText>Forum Group Description</FormText>\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button onClick={submitForumGroup} disabled={!props.selectedGroup || (!name && !desc) || loading}>\r\n Update Forum Group\r\n </Button>\r\n </div>\r\n </div>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { ForumGroupsClient, IForumDto, IForumGroupListVm, IForumGroupsDto } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\nimport CreateNewForumGroup from './CreateNewForumGroup'\r\nimport DeleteForumGroup from './DeleteForumGroup'\r\nimport ForumGroupSelect from './ForumGroupSelect'\r\nimport UpdateForumGroup from './UpdateForumGroup'\r\n\r\ninterface ManageForumGroupProps {\r\n setModGroup: React.Dispatch<React.SetStateAction<number>>\r\n forumGroups: IForumGroupListVm\r\n}\r\n\r\nexport default (props: ManageForumGroupProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [selectedGroup, setSelectedGroup] = useState<IForumGroupsDto>(null)\r\n\r\n return (\r\n <React.Fragment>\r\n <Row>\r\n <h2>Forum Groups</h2>\r\n <Col>\r\n <CreateNewForumGroup setNewGroup={props.setModGroup} />\r\n </Col>\r\n <Col>\r\n <ForumGroupSelect selectedForum={null} forumGroups={props.forumGroups?.forumGroups} setGroupSelect={setSelectedGroup} loading={loading} />\r\n <UpdateForumGroup selectedGroup={selectedGroup} setUpdatedGroup={props.setModGroup} loading={loading} />\r\n <DeleteForumGroup selectedGroup={selectedGroup} setDeletedGroup={props.setModGroup} loading={loading} />\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, FormGroup, FormText, Input, InputGroup, InputGroupText, Label, ListGroup, ListGroupItem } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../../ErrorResponse'\r\nimport { ForumGroupsClient, ForumOrderObject, IAllForumGroupDto, IForumOrderObject, ReorderForumGroupsAndForumsCommand } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\n\r\ninterface ForumOrderComponentProps {\r\n forums: IAllForumGroupDto[]\r\n loading: boolean\r\n setModOrder: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: ForumOrderComponentProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [orderArray, setOrderArray] = useState<IForumOrderObject[]>([])\r\n\r\n const changeGroupOrder = (groupId: number, newOrder: number) => {\r\n let order: ForumOrderObject[] = []\r\n\r\n orderArray.map((s, idx) => {\r\n let obj: ForumOrderObject = {} as ForumOrderObject\r\n let children: ForumOrderObject[] = []\r\n\r\n obj.resourceId = s.resourceId\r\n\r\n if (s.resourceId === groupId) {\r\n obj.order = newOrder\r\n } else {\r\n obj.order = s.order\r\n }\r\n\r\n s.children.map((t, _idx) => {\r\n let childobj: ForumOrderObject = {} as ForumOrderObject\r\n\r\n childobj.resourceId = t.resourceId\r\n childobj.order = t.order\r\n\r\n children = [...children, childobj]\r\n })\r\n\r\n obj.children = children\r\n\r\n order = [...order, obj]\r\n })\r\n\r\n setOrderArray(order)\r\n }\r\n\r\n const changeForumOrder = (groupId: number, forumId: number, newOrder: number) => {\r\n let order: ForumOrderObject[] = []\r\n\r\n orderArray.map((s, idx) => {\r\n let obj: ForumOrderObject = {} as ForumOrderObject\r\n let children: ForumOrderObject[] = []\r\n\r\n obj.resourceId = s.resourceId\r\n obj.order = s.order\r\n\r\n s.children.map((t, _idx) => {\r\n let childobj: ForumOrderObject = {} as ForumOrderObject\r\n\r\n childobj.resourceId = t.resourceId\r\n if (s.resourceId === groupId && t.resourceId === forumId) {\r\n childobj.order = newOrder\r\n } else {\r\n childobj.order = t.order\r\n }\r\n\r\n children = [...children, childobj]\r\n })\r\n\r\n obj.children = children\r\n\r\n order = [...order, obj]\r\n })\r\n\r\n setOrderArray(order)\r\n }\r\n\r\n const submitNewOrder = async () => {\r\n if (!loading && !props.loading) {\r\n setLoading(true)\r\n try {\r\n let client = new ForumGroupsClient()\r\n let command = new ReorderForumGroupsAndForumsCommand()\r\n\r\n let order: ForumOrderObject[] = []\r\n\r\n orderArray.map((s, idx) => {\r\n let orderItem: ForumOrderObject = new ForumOrderObject()\r\n let orderChildren: ForumOrderObject[] = []\r\n\r\n orderItem.resourceId = s.resourceId\r\n orderItem.order = s.order\r\n\r\n s.children.map((t, _idx) => {\r\n let child: ForumOrderObject = new ForumOrderObject()\r\n\r\n child.resourceId = t.resourceId\r\n child.order = t.order\r\n\r\n orderChildren = [...orderChildren, child]\r\n })\r\n\r\n orderItem.children = orderChildren\r\n\r\n order = [...order, orderItem]\r\n })\r\n\r\n command.orderArray = order\r\n\r\n const response = await client.reorder(command)\r\n\r\n props.setModOrder(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n let array: ForumOrderObject[] = []\r\n\r\n props.forums.map((s, idx) => {\r\n let obj: ForumOrderObject = {} as ForumOrderObject\r\n let children: ForumOrderObject[] = []\r\n\r\n s.forums.map((t, _idx) => {\r\n let childobj: ForumOrderObject = {} as ForumOrderObject\r\n\r\n childobj.resourceId = t.id\r\n childobj.order = t.order\r\n\r\n children = [...children, childobj]\r\n })\r\n\r\n obj.resourceId = s.id\r\n obj.order = s.order\r\n obj.children = children\r\n\r\n array = [...array, obj]\r\n })\r\n\r\n setOrderArray(array)\r\n }, [props.forums])\r\n\r\n return (\r\n <React.Fragment>\r\n {props.forums && props.forums.length > 0 && (\r\n <div>\r\n {props.forums.map((s, idx) => (\r\n <div>\r\n <div>\r\n <Label for={'group' + s.id}>\r\n <Input\r\n type='number'\r\n name='orderGroup'\r\n disabled={loading || props.loading}\r\n min='0'\r\n step='1'\r\n id={'group' + s.id}\r\n value={(orderArray.length > 0 && orderArray.find((f) => f.resourceId === s.id).order) ?? 0}\r\n onChange={(e) => changeGroupOrder(s.id, parseInt(e.target.value))}\r\n />{' '}\r\n {s.groupName}\r\n </Label>\r\n <p>{s.groupDescription}</p>\r\n <p>Original order: {s.order}</p>\r\n </div>\r\n\r\n {s.forums.map((t, _idx) => (\r\n <div className='ms-5'>\r\n <Label for={'forum' + t.id}>\r\n <Input\r\n type='number'\r\n name='orderForum'\r\n disabled={loading || props.loading}\r\n min='0'\r\n step='1'\r\n id={'forum' + t.id}\r\n value={(orderArray.length > 0 && orderArray.flatMap((f) => f.children).find((fi) => fi.resourceId === t.id).order) ?? 0}\r\n onChange={(e) => changeForumOrder(s.id, t.id, parseInt(e.target.value))}\r\n />{' '}\r\n {t.name}\r\n </Label>\r\n <p>{t.description}</p>\r\n <p>Original order: {t.order}</p>\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n <Button color='primary' onClick={(e) => submitNewOrder()} disabled={orderArray.length <= 0 && !loading && !props.loading}>\r\n Submit new forum order\r\n </Button>\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../../ErrorResponse'\r\nimport { ForumsClient, IAllForumGroupDto, IAllForumListingVm, IForumGroupListVm } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\nimport ForumOrderComponent from './ForumOrderComponent'\r\n\r\ninterface ManageForumOrderProps {\r\n loading: boolean\r\n modGroup: number\r\n modForum: number\r\n}\r\n\r\nexport default (props: ManageForumOrderProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [forums, setForums] = useState<IAllForumGroupDto[]>([])\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [modOrder, setModOrder] = useState<number>(0)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumsClient()\r\n const response = await client.getAllForumsAndGroups().then((response) => response.toJSON() as Promise<IAllForumListingVm>)\r\n setForums(response.forumGroups)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [props.modForum, props.modGroup, modOrder])\r\n\r\n return (\r\n <React.Fragment>\r\n <Row>\r\n <h2>Order Forum Groups</h2>\r\n <Col>\r\n <ForumOrderComponent forums={forums} loading={loading && props.loading} setModOrder={setModOrder} />\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { ForumGroupsClient, IForumGroupListVm } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport HelmetPages from '../../helmet/HelmetPages'\r\nimport AdminPanel from '../AdminPanel'\r\nimport ManageForum from './forum/ManageForum'\r\nimport ManageForumGroup from './forumgroup/ManageForumGroup'\r\nimport ManageForumOrder from './forumorder/ManageForumOrder'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [modGroup, setModGroup] = useState<number>(0)\r\n const [modForum, setModForum] = useState<number>(0)\r\n const [forumGroups, setForumGroups] = useState<IForumGroupListVm>(null)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumGroupsClient()\r\n const response = await client.get().then((response) => response.toJSON() as Promise<IForumGroupListVm>)\r\n setForumGroups(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [modGroup])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage Forums'} />\r\n <AdminPanel>\r\n <h1>Manage Forums</h1>\r\n <ManageForumGroup forumGroups={forumGroups} setModGroup={setModGroup} />\r\n <hr />\r\n <ManageForum modForum={modForum} setModForum={setModForum} forumGroups={forumGroups} loading={loading} />\r\n <hr />\r\n <ManageForumOrder loading={loading} modGroup={modGroup} modForum={modForum} />\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","var _excluded = [\"className\", \"closeClassName\", \"closeAriaLabel\", \"cssModule\", \"tag\", \"color\", \"isOpen\", \"toggle\", \"children\", \"transition\", \"fade\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Fade from './Fade';\nvar propTypes = {\n /** Pass children so this component can wrap the child elements */\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Add custom class for close button */\n closeClassName: PropTypes.string,\n /** Aria label for close button */\n closeAriaLabel: PropTypes.string,\n /** Change color of alert */\n color: PropTypes.string,\n /** Change existing className with a new className */\n cssModule: PropTypes.object,\n /** Toggle fade animation */\n fade: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** Control visibility state of Alert */\n isOpen: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Function to toggle visibility */\n toggle: PropTypes.func,\n /** Props to be passed to `Fade` to modify transition */\n transition: PropTypes.shape(Fade.propTypes)\n};\nfunction Alert(props) {\n var className = props.className,\n closeClassName = props.closeClassName,\n _props$closeAriaLabel = props.closeAriaLabel,\n closeAriaLabel = _props$closeAriaLabel === void 0 ? 'Close' : _props$closeAriaLabel,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n _props$color = props.color,\n color = _props$color === void 0 ? 'success' : _props$color,\n _props$isOpen = props.isOpen,\n isOpen = _props$isOpen === void 0 ? true : _props$isOpen,\n toggle = props.toggle,\n children = props.children,\n _props$transition = props.transition,\n transition = _props$transition === void 0 ? _objectSpread(_objectSpread({}, Fade.defaultProps), {}, {\n unmountOnExit: true\n }) : _props$transition,\n _props$fade = props.fade,\n fade = _props$fade === void 0 ? true : _props$fade,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'alert', \"alert-\".concat(color), {\n 'alert-dismissible': toggle\n }), cssModule);\n var closeClasses = mapToCssModules(classNames('btn-close', closeClassName), cssModule);\n var alertTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), transition), {}, {\n baseClass: fade ? transition.baseClass : '',\n timeout: fade ? transition.timeout : 0\n });\n return /*#__PURE__*/React.createElement(Fade, _extends({}, attributes, alertTransition, {\n tag: Tag,\n className: classes,\n \"in\": isOpen,\n role: \"alert\",\n innerRef: innerRef\n }), toggle ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: closeClasses,\n \"aria-label\": closeAriaLabel,\n onClick: toggle\n }) : null, children);\n}\nAlert.propTypes = propTypes;\nexport default Alert;","var _excluded = [\"className\", \"cssModule\", \"tag\", \"type\", \"size\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Dropdown from './Dropdown';\nimport { InputGroupContext } from './InputGroupContext';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Sets size of InputGroup */\n size: PropTypes.string,\n /** Set a custom element for this component */\n tag: tagPropType,\n type: PropTypes.string\n};\nfunction InputGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n type = props.type,\n size = props.size,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'input-group', size ? \"input-group-\".concat(size) : null), cssModule);\n if (props.type === 'dropdown') {\n return /*#__PURE__*/React.createElement(Dropdown, _extends({}, attributes, {\n className: classes\n }));\n }\n return /*#__PURE__*/React.createElement(InputGroupContext.Provider, {\n value: {\n insideInputGroup: true\n }\n }, /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n })));\n}\nInputGroup.propTypes = propTypes;\nexport default InputGroup;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction InputGroupText(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'span' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'input-group-text'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nInputGroupText.propTypes = propTypes;\nexport default InputGroupText;","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button, FormGroup, FormText, Input, InputGroup, InputGroupText, Label, ListGroup, ListGroupItem } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { ISearchUsersVm, IUserDto, UsersClient } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface AddUserToPermissionsGroupProps {\r\n loading: boolean\r\n users: IUserDto[]\r\n setUsers: React.Dispatch<React.SetStateAction<IUserDto[]>>\r\n}\r\n\r\nexport default (props: AddUserToPermissionsGroupProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [userName, setUserName] = useState<string>('')\r\n const [userSearchList, setUserSearchList] = useState<IUserDto[]>([])\r\n const [selectedAddUser, setSelectedAddUser] = useState<IUserDto>(null)\r\n const [selectedRemoveUser, setSelectedRemoveUser] = useState<IUserDto>(null)\r\n\r\n const searchUsers = async (userNameSearchQuery: string) => {\r\n setLoading(true)\r\n try {\r\n let client = new UsersClient()\r\n\r\n const response = await client.searchUsers(userNameSearchQuery).then((response) => response.toJSON() as Promise<ISearchUsersVm>)\r\n setUserSearchList(response.userList)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const addUser = (user: IUserDto): IUserDto[] => {\r\n let dupes: boolean = false\r\n props.users.map((s, idx) => {\r\n if (s.id === user.id) {\r\n dupes = true\r\n }\r\n })\r\n if (dupes) {\r\n return props.users\r\n }\r\n setSelectedAddUser(null)\r\n return [...props.users, user]\r\n }\r\n\r\n const dupeUser = (user: IUserDto): boolean => {\r\n let dupes: boolean = false\r\n props.users.map((s, idx) => {\r\n if (s.id === user.id) {\r\n dupes = true\r\n }\r\n })\r\n return dupes\r\n }\r\n\r\n const removeUser = (user: IUserDto): IUserDto[] => {\r\n setSelectedRemoveUser(null)\r\n return [...props.users.filter((_, i) => _.id !== user.id)]\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <InputGroup>\r\n <InputGroupText>User name</InputGroupText>\r\n <Input value={userName} onChange={(e) => setUserName(e.target.value)} />\r\n <Button color='primary' onClick={(e) => searchUsers(userName)}>\r\n Search\r\n </Button>\r\n </InputGroup>\r\n <InputGroup>\r\n <Input name='select' type='select'>\r\n {userSearchList.length > 0 &&\r\n userSearchList.map((s, idx) => (\r\n <option key={s.id} onClick={(e) => setSelectedAddUser(s)}>\r\n {s.userName}\r\n </option>\r\n ))}\r\n </Input>\r\n <Button color='primary' onClick={(e) => props.setUsers(addUser(selectedAddUser))} disabled={!selectedAddUser || dupeUser(selectedAddUser)}>\r\n Add User\r\n </Button>\r\n </InputGroup>\r\n {props.users.length > 0 && (\r\n <select size={10} style={{ width: '100%' }}>\r\n {props.users.map((s, idx) => (\r\n <option key={s.id} onClick={(e) => setSelectedRemoveUser(s)}>\r\n {s.userName}\r\n </option>\r\n ))}\r\n </select>\r\n )}\r\n <InputGroup>\r\n <Button color='danger' onClick={(e) => props.setUsers(removeUser(selectedRemoveUser))} disabled={!selectedRemoveUser}>\r\n Remove User\r\n </Button>\r\n </InputGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","export enum ForumPermission {\r\n Inherit,\r\n Viewer,\r\n Poster,\r\n Moderator,\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, FormGroup, FormText, Input, InputGroup, InputGroupText, Label, ListGroup, ListGroupItem } from 'reactstrap'\r\n\r\nimport { ForumPermission } from './ForumPermission'\r\nimport { IForumTreeObject } from './ForumPermissionTreeObject'\r\n\r\ninterface GrantPanelProps {\r\n loading: boolean\r\n selectedTreeItem: IForumTreeObject\r\n forumTree: IForumTreeObject[]\r\n setForumTree: React.Dispatch<React.SetStateAction<IForumTreeObject[]>>\r\n setSelectedTreeItem: React.Dispatch<React.SetStateAction<IForumTreeObject>>\r\n}\r\n\r\nexport default (props: GrantPanelProps) => {\r\n const [currentPermission, setCurrentPermission] = useState<ForumPermission>(ForumPermission.Inherit)\r\n\r\n const changeForumPermission = (permission: ForumPermission): IForumTreeObject => {\r\n setCurrentPermission(permission)\r\n let selectedItem = props.selectedTreeItem\r\n selectedItem.permission = permission\r\n\r\n return selectedItem\r\n }\r\n\r\n useEffect(() => {\r\n if (props.selectedTreeItem !== null) {\r\n setCurrentPermission(props.selectedTreeItem.permission)\r\n\r\n let tree = props.forumTree\r\n props.forumTree.map((s, idx) => {\r\n if (props.selectedTreeItem.id === s.id) {\r\n tree[idx].permission = props.selectedTreeItem.permission\r\n }\r\n\r\n s.children.map((t, _idx) => {\r\n if (props.selectedTreeItem.id === t.id) {\r\n tree[idx].children[_idx].permission = props.selectedTreeItem.permission\r\n }\r\n })\r\n })\r\n\r\n props.setForumTree(tree)\r\n }\r\n }, [props.selectedTreeItem])\r\n\r\n return (\r\n <React.Fragment>\r\n {!props.selectedTreeItem && <div>No forum or forum group selected...</div>}\r\n {props.selectedTreeItem && (\r\n <React.Fragment>\r\n <h2>{props.selectedTreeItem.name}</h2>\r\n <FormGroup>\r\n <Label for='permissionSelect'>Permission</Label>\r\n <Input\r\n id='permissionSelect'\r\n name='permissionSelect'\r\n type='select'\r\n value={ForumPermission[currentPermission]}\r\n onChange={(e) => props.setSelectedTreeItem(changeForumPermission(ForumPermission[e.target.value]))}\r\n >\r\n {Object.values(ForumPermission)\r\n .filter((value) => typeof value === 'string')\r\n .map((key) => (\r\n <option key={key} value={key}>\r\n {key}\r\n </option>\r\n ))}\r\n </Input>\r\n </FormGroup>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import { createContext, useContext } from \"react\";\nexport const TreeApiContext = createContext(null);\nexport function useTreeApi() {\n const value = useContext(TreeApiContext);\n if (value === null)\n throw new Error(\"No Tree Api Provided\");\n return value;\n}\nexport const NodesContext = createContext(null);\nexport function useNodesContext() {\n const value = useContext(NodesContext);\n if (value === null)\n throw new Error(\"Provide a NodesContext\");\n return value;\n}\nexport const DndContext = createContext(null);\nexport function useDndContext() {\n const value = useContext(DndContext);\n if (value === null)\n throw new Error(\"Provide a DnDContext\");\n return value;\n}\nexport const DataUpdatesContext = createContext(0);\nexport function useDataUpdates() {\n useContext(DataUpdatesContext);\n}\n","export function bound(n, min, max) {\n return Math.max(Math.min(n, max), min);\n}\nexport function isItem(node) {\n return node && node.isLeaf;\n}\nexport function isClosed(node) {\n return node && node.isInternal && !node.isOpen;\n}\nexport function isOpenWithEmptyChildren(node) {\n var _a;\n return node && node.isOpen && !((_a = node.children) === null || _a === void 0 ? void 0 : _a.length);\n}\n/**\n * Is first param a descendant of the second param\n */\nexport const isDescendant = (a, b) => {\n let n = a;\n while (n) {\n if (n.id === b.id)\n return true;\n n = n.parent;\n }\n return false;\n};\nexport const indexOf = (node) => {\n if (!node.parent)\n throw Error(\"Node does not have a parent\");\n return node.parent.children.findIndex((c) => c.id === node.id);\n};\nexport function noop() { }\nexport function dfs(node, id) {\n if (!node)\n return null;\n if (node.id === id)\n return node;\n if (node.children) {\n for (let child of node.children) {\n const result = dfs(child, id);\n if (result)\n return result;\n }\n }\n return null;\n}\nexport function walk(node, fn) {\n fn(node);\n if (node.children) {\n for (let child of node.children) {\n walk(child, fn);\n }\n }\n}\nexport function focusNextElement(target) {\n const elements = getFocusable(target);\n let next;\n for (let i = 0; i < elements.length; ++i) {\n const item = elements[i];\n if (item === target) {\n next = nextItem(elements, i);\n break;\n }\n }\n // @ts-ignore ??\n next === null || next === void 0 ? void 0 : next.focus();\n}\nexport function focusPrevElement(target) {\n const elements = getFocusable(target);\n let next;\n for (let i = 0; i < elements.length; ++i) {\n const item = elements[i];\n if (item === target) {\n next = prevItem(elements, i);\n break;\n }\n }\n // @ts-ignore\n next === null || next === void 0 ? void 0 : next.focus();\n}\nfunction nextItem(list, index) {\n if (index + 1 < list.length) {\n return list[index + 1];\n }\n else {\n return list[0];\n }\n}\nfunction prevItem(list, index) {\n if (index - 1 >= 0) {\n return list[index - 1];\n }\n else {\n return list[list.length - 1];\n }\n}\nfunction getFocusable(target) {\n return Array.from(document.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled]), details:not([disabled]), summary:not(:disabled)')).filter((e) => e === target || !target.contains(e));\n}\nexport function access(obj, accessor) {\n if (typeof accessor === \"boolean\")\n return accessor;\n if (typeof accessor === \"string\")\n return obj[accessor];\n return accessor(obj);\n}\nexport function identifyNull(obj) {\n if (obj === null)\n return null;\n else\n return identify(obj);\n}\nexport function identify(obj) {\n return typeof obj === \"string\" ? obj : obj.id;\n}\nexport function mergeRefs(...refs) {\n return (instance) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(instance);\n }\n else if (ref != null) {\n ref.current = instance;\n }\n });\n };\n}\nexport function safeRun(fn, ...args) {\n if (fn)\n return fn(...args);\n}\nexport function waitFor(fn) {\n return new Promise((resolve, reject) => {\n let tries = 0;\n function check() {\n tries += 1;\n if (tries === 100)\n reject();\n if (fn())\n resolve();\n else\n setTimeout(check, 10);\n }\n check();\n });\n}\nexport function getInsertIndex(tree) {\n var _a, _b;\n const focus = tree.focusedNode;\n if (!focus)\n return (_b = (_a = tree.root.children) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;\n if (focus.isOpen)\n return 0;\n if (focus.parent)\n return focus.childIndex + 1;\n return 0;\n}\nexport function getInsertParentId(tree) {\n const focus = tree.focusedNode;\n if (!focus)\n return null;\n if (focus.isOpen)\n return focus.id;\n if (focus.parent && !focus.parent.isRoot)\n return focus.parent.id;\n return null;\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from \"react\";\nconst placeholderStyle = {\n display: \"flex\",\n alignItems: \"center\",\n zIndex: 1,\n};\nconst lineStyle = {\n flex: 1,\n height: \"2px\",\n background: \"#4B91E2\",\n borderRadius: \"1px\",\n};\nconst circleStyle = {\n width: \"4px\",\n height: \"4px\",\n boxShadow: \"0 0 0 3px #4B91E2\",\n borderRadius: \"50%\",\n};\nexport const DefaultCursor = React.memo(function DefaultCursor({ top, left, indent, }) {\n const style = {\n position: \"absolute\",\n pointerEvents: \"none\",\n top: top - 2 + \"px\",\n left: left + \"px\",\n right: indent + \"px\",\n };\n return (_jsxs(\"div\", { style: Object.assign(Object.assign({}, placeholderStyle), style), children: [_jsx(\"div\", { style: Object.assign({}, circleStyle) }), _jsx(\"div\", { style: Object.assign({}, lineStyle) })] }));\n});\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function DefaultRow({ node, attrs, innerRef, children, }) {\n return (_jsx(\"div\", Object.assign({}, attrs, { ref: innerRef, onFocus: (e) => e.stopPropagation(), onClick: node.handleClick, children: children })));\n}\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useEffect, useRef } from \"react\";\nexport function DefaultNode(props) {\n return (_jsxs(\"div\", { ref: props.dragHandle, style: props.style, children: [_jsx(\"span\", { onClick: (e) => {\n e.stopPropagation();\n props.node.toggle();\n }, children: props.node.isLeaf ? \"🌳\" : props.node.isOpen ? \"🗁\" : \"🗀\" }), \" \", props.node.isEditing ? _jsx(Edit, Object.assign({}, props)) : _jsx(Show, Object.assign({}, props))] }));\n}\nfunction Show(props) {\n return (_jsx(_Fragment, { children: _jsx(\"span\", { children: props.node.data.name }) }));\n}\nfunction Edit({ node }) {\n const input = useRef();\n useEffect(() => {\n var _a, _b;\n (_a = input.current) === null || _a === void 0 ? void 0 : _a.focus();\n (_b = input.current) === null || _b === void 0 ? void 0 : _b.select();\n }, []);\n return (_jsx(\"input\", { ref: input, \n // @ts-ignore\n defaultValue: node.data.name, onBlur: () => node.reset(), onKeyDown: (e) => {\n var _a;\n if (e.key === \"Escape\")\n node.reset();\n if (e.key === \"Enter\")\n node.submit(((_a = input.current) === null || _a === void 0 ? void 0 : _a.value) || \"\");\n } }));\n}\n","/* Actions */\nexport function edit(id) {\n return { type: \"EDIT\", id };\n}\n/* Reducer */\nexport function reducer(state = { id: null }, action) {\n if (action.type === \"EDIT\") {\n return Object.assign(Object.assign({}, state), { id: action.id });\n }\n else {\n return state;\n }\n}\n","/* Types */\n/* Actions */\nexport function focus(id) {\n return { type: \"FOCUS\", id };\n}\nexport function treeBlur() {\n return { type: \"TREE_BLUR\" };\n}\n/* Reducer */\nexport function reducer(state = { id: null, treeFocused: false }, action) {\n if (action.type === \"FOCUS\") {\n return Object.assign(Object.assign({}, state), { id: action.id, treeFocused: true });\n }\n else if (action.type === \"TREE_BLUR\") {\n return Object.assign(Object.assign({}, state), { treeFocused: false });\n }\n else {\n return state;\n }\n}\n","import { ROOT_ID } from \"../data/create-root\";\nexport class NodeApi {\n constructor(params) {\n this.handleClick = (e) => {\n if (e.metaKey && !this.tree.props.disableMultiSelection) {\n this.isSelected ? this.deselect() : this.selectMulti();\n }\n else if (e.shiftKey && !this.tree.props.disableMultiSelection) {\n this.selectContiguous();\n }\n else {\n this.select();\n this.activate();\n }\n };\n this.tree = params.tree;\n this.id = params.id;\n this.data = params.data;\n this.level = params.level;\n this.children = params.children;\n this.parent = params.parent;\n this.isDraggable = params.isDraggable;\n this.rowIndex = params.rowIndex;\n }\n get isRoot() {\n return this.id === ROOT_ID;\n }\n get isLeaf() {\n return !Array.isArray(this.children);\n }\n get isInternal() {\n return !this.isLeaf;\n }\n get isOpen() {\n return this.isLeaf ? false : this.tree.isOpen(this.id);\n }\n get isClosed() {\n return this.isLeaf ? false : !this.tree.isOpen(this.id);\n }\n get isEditable() {\n return this.tree.isEditable(this.data);\n }\n get isEditing() {\n return this.tree.editingId === this.id;\n }\n get isSelected() {\n return this.tree.isSelected(this.id);\n }\n get isOnlySelection() {\n return this.isSelected && this.tree.hasOneSelection;\n }\n get isSelectedStart() {\n var _a;\n return this.isSelected && !((_a = this.prev) === null || _a === void 0 ? void 0 : _a.isSelected);\n }\n get isSelectedEnd() {\n var _a;\n return this.isSelected && !((_a = this.next) === null || _a === void 0 ? void 0 : _a.isSelected);\n }\n get isFocused() {\n return this.tree.isFocused(this.id);\n }\n get isDragging() {\n return this.tree.isDragging(this.id);\n }\n get willReceiveDrop() {\n return this.tree.willReceiveDrop(this.id);\n }\n get state() {\n return {\n isClosed: this.isClosed,\n isDragging: this.isDragging,\n isEditing: this.isEditing,\n isFocused: this.isFocused,\n isInternal: this.isInternal,\n isLeaf: this.isLeaf,\n isOpen: this.isOpen,\n isSelected: this.isSelected,\n isSelectedEnd: this.isSelectedEnd,\n isSelectedStart: this.isSelectedStart,\n willReceiveDrop: this.willReceiveDrop,\n };\n }\n get childIndex() {\n if (this.parent && this.parent.children) {\n return this.parent.children.findIndex((child) => child.id === this.id);\n }\n else {\n return -1;\n }\n }\n get next() {\n if (this.rowIndex === null)\n return null;\n return this.tree.at(this.rowIndex + 1);\n }\n get prev() {\n if (this.rowIndex === null)\n return null;\n return this.tree.at(this.rowIndex - 1);\n }\n get nextSibling() {\n var _a, _b;\n const i = this.childIndex;\n return (_b = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children[i + 1]) !== null && _b !== void 0 ? _b : null;\n }\n isAncestorOf(node) {\n if (!node)\n return false;\n let ancestor = node;\n while (ancestor) {\n if (ancestor.id === this.id)\n return true;\n ancestor = ancestor.parent;\n }\n return false;\n }\n select() {\n this.tree.select(this);\n }\n deselect() {\n this.tree.deselect(this);\n }\n selectMulti() {\n this.tree.selectMulti(this);\n }\n selectContiguous() {\n this.tree.selectContiguous(this);\n }\n activate() {\n this.tree.activate(this);\n }\n focus() {\n this.tree.focus(this);\n }\n toggle() {\n this.tree.toggle(this);\n }\n open() {\n this.tree.open(this);\n }\n openParents() {\n this.tree.openParents(this);\n }\n close() {\n this.tree.close(this);\n }\n submit(value) {\n this.tree.submit(this, value);\n }\n reset() {\n this.tree.reset();\n }\n clone() {\n return new NodeApi(Object.assign({}, this));\n }\n edit() {\n return this.tree.edit(this);\n }\n}\n","import { NodeApi } from \"../interfaces/node-api\";\nexport const ROOT_ID = \"__REACT_ARBORIST_INTERNAL_ROOT__\";\nexport function createRoot(tree) {\n var _a;\n function visitSelfAndChildren(data, level, parent) {\n const id = tree.accessId(data);\n const node = new NodeApi({\n tree,\n data,\n level,\n parent,\n id,\n children: null,\n isDraggable: tree.isDraggable(data),\n rowIndex: null,\n });\n const children = tree.accessChildren(data);\n if (children) {\n node.children = children.map((child) => visitSelfAndChildren(child, level + 1, node));\n }\n return node;\n }\n const root = new NodeApi({\n tree,\n id: ROOT_ID,\n // @ts-ignore\n data: { id: ROOT_ID },\n level: -1,\n parent: null,\n children: null,\n isDraggable: true,\n rowIndex: null,\n });\n const data = (_a = tree.props.data) !== null && _a !== void 0 ? _a : [];\n root.children = data.map((child) => {\n return visitSelfAndChildren(child, 0, root);\n });\n return root;\n}\n","/* Actions */\nexport const actions = {\n open(id, filtered) {\n return { type: \"VISIBILITY_OPEN\", id, filtered };\n },\n close(id, filtered) {\n return { type: \"VISIBILITY_CLOSE\", id, filtered };\n },\n toggle(id, filtered) {\n return { type: \"VISIBILITY_TOGGLE\", id, filtered };\n },\n clear(filtered) {\n return { type: \"VISIBILITY_CLEAR\", filtered };\n },\n};\n/* Reducer */\nfunction openMapReducer(state = {}, action) {\n if (action.type === \"VISIBILITY_OPEN\") {\n return Object.assign(Object.assign({}, state), { [action.id]: true });\n }\n else if (action.type === \"VISIBILITY_CLOSE\") {\n return Object.assign(Object.assign({}, state), { [action.id]: false });\n }\n else if (action.type === \"VISIBILITY_TOGGLE\") {\n const prev = state[action.id];\n return Object.assign(Object.assign({}, state), { [action.id]: !prev });\n }\n else if (action.type === \"VISIBILITY_CLEAR\") {\n return {};\n }\n else {\n return state;\n }\n}\nexport function reducer(state = { filtered: {}, unfiltered: {} }, action) {\n if (!action.type.startsWith(\"VISIBILITY\"))\n return state;\n if (action.filtered) {\n return Object.assign(Object.assign({}, state), { filtered: openMapReducer(state.filtered, action) });\n }\n else {\n return Object.assign(Object.assign({}, state), { unfiltered: openMapReducer(state.unfiltered, action) });\n }\n}\n","export const initialState = (props) => {\n var _a;\n return ({\n nodes: {\n // Changes together\n open: { filtered: {}, unfiltered: (_a = props === null || props === void 0 ? void 0 : props.initialOpenState) !== null && _a !== void 0 ? _a : {} },\n focus: { id: null, treeFocused: false },\n edit: { id: null },\n drag: {\n id: null,\n selectedIds: [],\n destinationParentId: null,\n destinationIndex: null,\n },\n selection: { ids: new Set(), anchor: null, mostRecent: null },\n },\n dnd: {\n cursor: { type: \"none\" },\n dragId: null,\n dragIds: [],\n parentId: null,\n index: -1,\n },\n });\n};\n","import { identify } from \"../utils\";\nimport { initialState } from \"./initial\";\n/* Actions */\nexport const actions = {\n clear: () => ({ type: \"SELECTION_CLEAR\" }),\n only: (id) => ({\n type: \"SELECTION_ONLY\",\n id: identify(id),\n }),\n add: (id) => ({\n type: \"SELECTION_ADD\",\n ids: (Array.isArray(id) ? id : [id]).map(identify),\n }),\n remove: (id) => ({\n type: \"SELECTION_REMOVE\",\n ids: (Array.isArray(id) ? id : [id]).map(identify),\n }),\n set: (args) => (Object.assign({ type: \"SELECTION_SET\" }, args)),\n mostRecent: (id) => ({\n type: \"SELECTION_MOST_RECENT\",\n id: id === null ? null : identify(id),\n }),\n anchor: (id) => ({\n type: \"SELECTION_ANCHOR\",\n id: id === null ? null : identify(id),\n }),\n};\n/* Reducer */\nexport function reducer(state = initialState()[\"nodes\"][\"selection\"], action) {\n const ids = state.ids;\n switch (action.type) {\n case \"SELECTION_CLEAR\":\n return Object.assign(Object.assign({}, state), { ids: new Set() });\n case \"SELECTION_ONLY\":\n return Object.assign(Object.assign({}, state), { ids: new Set([action.id]) });\n case \"SELECTION_ADD\":\n if (action.ids.length === 0)\n return state;\n action.ids.forEach((id) => ids.add(id));\n return Object.assign(Object.assign({}, state), { ids: new Set(ids) });\n case \"SELECTION_REMOVE\":\n if (action.ids.length === 0)\n return state;\n action.ids.forEach((id) => ids.delete(id));\n return Object.assign(Object.assign({}, state), { ids: new Set(ids) });\n case \"SELECTION_SET\":\n return Object.assign(Object.assign({}, state), { ids: action.ids, mostRecent: action.mostRecent, anchor: action.anchor });\n case \"SELECTION_MOST_RECENT\":\n return Object.assign(Object.assign({}, state), { mostRecent: action.id });\n case \"SELECTION_ANCHOR\":\n return Object.assign(Object.assign({}, state), { anchor: action.id });\n default:\n return state;\n }\n}\n","import { initialState } from \"./initial\";\n/* Actions */\nexport const actions = {\n cursor(cursor) {\n return { type: \"DND_CURSOR\", cursor };\n },\n dragStart(id, dragIds) {\n return { type: \"DND_DRAG_START\", id, dragIds };\n },\n dragEnd() {\n return { type: \"DND_DRAG_END\" };\n },\n hovering(parentId, index) {\n return { type: \"DND_HOVERING\", parentId, index };\n },\n};\n/* Reducer */\nexport function reducer(state = initialState()[\"dnd\"], action) {\n switch (action.type) {\n case \"DND_CURSOR\":\n return Object.assign(Object.assign({}, state), { cursor: action.cursor });\n case \"DND_DRAG_START\":\n return Object.assign(Object.assign({}, state), { dragId: action.id, dragIds: action.dragIds });\n case \"DND_DRAG_END\":\n return initialState()[\"dnd\"];\n case \"DND_HOVERING\":\n return Object.assign(Object.assign({}, state), { parentId: action.parentId, index: action.index });\n default:\n return state;\n }\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { memo } from \"react\";\nimport { useTreeApi } from \"../context\";\nconst layerStyles = {\n position: \"fixed\",\n pointerEvents: \"none\",\n zIndex: 100,\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n};\nconst getStyle = (offset) => {\n if (!offset)\n return { display: \"none\" };\n const { x, y } = offset;\n return { transform: `translate(${x}px, ${y}px)` };\n};\nconst getCountStyle = (offset) => {\n if (!offset)\n return { display: \"none\" };\n const { x, y } = offset;\n return { transform: `translate(${x + 10}px, ${y + 10}px)` };\n};\nexport function DefaultDragPreview({ offset, mouse, id, dragIds, isDragging, }) {\n return (_jsxs(Overlay, { isDragging: isDragging, children: [_jsx(Position, { offset: offset, children: _jsx(PreviewNode, { id: id, dragIds: dragIds }) }), _jsx(Count, { mouse: mouse, count: dragIds.length })] }));\n}\nconst Overlay = memo(function Overlay(props) {\n if (!props.isDragging)\n return null;\n return _jsx(\"div\", { style: layerStyles, children: props.children });\n});\nfunction Position(props) {\n return (_jsx(\"div\", { className: \"row preview\", style: getStyle(props.offset), children: props.children }));\n}\nfunction Count(props) {\n const { count, mouse } = props;\n if (count > 1)\n return (_jsx(\"div\", { className: \"selected-count\", style: getCountStyle(mouse), children: count }));\n else\n return null;\n}\nconst PreviewNode = memo(function PreviewNode(props) {\n const tree = useTreeApi();\n const node = tree.get(props.id);\n if (!node)\n return null;\n return (_jsx(tree.renderNode, { preview: true, node: node, style: {\n paddingLeft: node.level * tree.indent,\n opacity: 0.2,\n background: \"transparent\",\n }, tree: tree }));\n});\n","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","// @flow\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\n\nconst hasNativePerformanceNow =\n typeof performance === 'object' && typeof performance.now === 'function';\n\nconst now = hasNativePerformanceNow\n ? () => performance.now()\n : () => Date.now();\n\nexport type TimeoutID = {|\n id: AnimationFrameID,\n|};\n\nexport function cancelTimeout(timeoutID: TimeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\n\nexport function requestTimeout(callback: Function, delay: number): TimeoutID {\n const start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n const timeoutID: TimeoutID = {\n id: requestAnimationFrame(tick),\n };\n\n return timeoutID;\n}\n","// @flow\n\nlet size: number = -1;\n\n// This utility copied from \"dom-helpers\" package.\nexport function getScrollbarSize(recalculate?: boolean = false): number {\n if (size === -1 || recalculate) {\n const div = document.createElement('div');\n const style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n\n ((document.body: any): HTMLBodyElement).appendChild(div);\n\n size = div.offsetWidth - div.clientWidth;\n\n ((document.body: any): HTMLBodyElement).removeChild(div);\n }\n\n return size;\n}\n\nexport type RTLOffsetType =\n | 'negative'\n | 'positive-descending'\n | 'positive-ascending';\n\nlet cachedRTLResult: RTLOffsetType | null = null;\n\n// TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\nexport function getRTLOffsetType(recalculate?: boolean = false): RTLOffsetType {\n if (cachedRTLResult === null || recalculate) {\n const outerDiv = document.createElement('div');\n const outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n\n const innerDiv = document.createElement('div');\n const innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n\n outerDiv.appendChild(innerDiv);\n\n ((document.body: any): HTMLBodyElement).appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n ((document.body: any): HTMLBodyElement).removeChild(outerDiv);\n\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\ntype Direction = 'ltr' | 'rtl';\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n\ntype RenderComponentProps<T> = {|\n columnIndex: number,\n data: T,\n isScrolling?: boolean,\n rowIndex: number,\n style: Object,\n|};\nexport type RenderComponent<T> = React$ComponentType<\n $Shape<RenderComponentProps<T>>\n>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype OnItemsRenderedCallback = ({\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number,\n}) => void;\ntype OnScrollCallback = ({\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent<HTMLDivElement>;\ntype ItemStyleCache = { [key: string]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props<T> = {|\n children: RenderComponent<T>,\n className?: string,\n columnCount: number,\n columnWidth: itemSize,\n direction: Direction,\n height: number,\n initialScrollLeft?: number,\n initialScrollTop?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent<InnerProps, any>,\n innerTagName?: string, // deprecated\n itemData: T,\n itemKey?: (params: {|\n columnIndex: number,\n data: T,\n rowIndex: number,\n |}) => any,\n onItemsRendered?: OnItemsRenderedCallback,\n onScroll?: OnScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent<OuterProps, any>,\n outerTagName?: string, // deprecated\n overscanColumnCount?: number,\n overscanColumnsCount?: number, // deprecated\n overscanCount?: number, // deprecated\n overscanRowCount?: number,\n overscanRowsCount?: number, // deprecated\n rowCount: number,\n rowHeight: itemSize,\n style?: Object,\n useIsScrolling: boolean,\n width: number,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n|};\n\ntype getItemOffset = (\n props: Props<any>,\n index: number,\n instanceProps: any\n) => number;\ntype getItemSize = (\n props: Props<any>,\n index: number,\n instanceProps: any\n) => number;\ntype getEstimatedTotalSize = (props: Props<any>, instanceProps: any) => number;\ntype GetOffsetForItemAndAlignment = (\n props: Props<any>,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any,\n scrollbarSize: number\n) => number;\ntype GetStartIndexForOffset = (\n props: Props<any>,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props<any>,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props<any>, instance: any) => any;\ntype ValidateProps = (props: Props<any>) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = ({ columnIndex, data, rowIndex }) =>\n `${rowIndex}:${columnIndex}`;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsOverscanCount = null;\nlet devWarningsOverscanRowsColumnsCount = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount = new WeakSet();\n devWarningsOverscanRowsColumnsCount = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createGridComponent({\n getColumnOffset,\n getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex,\n getColumnWidth,\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment,\n getRowHeight,\n getRowOffset,\n getRowStartIndexForOffset,\n getRowStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getColumnOffset: getItemOffset,\n getColumnStartIndexForOffset: GetStartIndexForOffset,\n getColumnStopIndexForStartIndex: GetStopIndexForStartIndex,\n getColumnWidth: getItemSize,\n getEstimatedTotalHeight: getEstimatedTotalSize,\n getEstimatedTotalWidth: getEstimatedTotalSize,\n getOffsetForColumnAndAlignment: GetOffsetForItemAndAlignment,\n getOffsetForRowAndAlignment: GetOffsetForItemAndAlignment,\n getRowOffset: getItemOffset,\n getRowHeight: getItemSize,\n getRowStartIndexForOffset: GetStartIndexForOffset,\n getRowStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class Grid<T> extends PureComponent<Props<T>, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n _outerRef: ?HTMLDivElement;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft:\n typeof this.props.initialScrollLeft === 'number'\n ? this.props.initialScrollLeft\n : 0,\n scrollTop:\n typeof this.props.initialScrollTop === 'number'\n ? this.props.initialScrollTop\n : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward',\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props<T>) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props<T>,\n prevState: State\n ): $Shape<State> | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo({\n scrollLeft,\n scrollTop,\n }: {\n scrollLeft: number,\n scrollTop: number,\n }): void {\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n\n this.setState(prevState => {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n return null;\n }\n\n return {\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem({\n align = 'auto',\n columnIndex,\n rowIndex,\n }: {\n align: ScrollToAlign,\n columnIndex?: number,\n rowIndex?: number,\n }): void {\n const { columnCount, height, rowCount, width } = this.props;\n const { scrollLeft, scrollTop } = this.state;\n const scrollbarSize = getScrollbarSize();\n\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n const horizontalScrollbarSize =\n estimatedTotalWidth > width ? scrollbarSize : 0;\n const verticalScrollbarSize =\n estimatedTotalHeight > height ? scrollbarSize : 0;\n\n this.scrollTo({\n scrollLeft:\n columnIndex !== undefined\n ? getOffsetForColumnAndAlignment(\n this.props,\n columnIndex,\n align,\n scrollLeft,\n this._instanceProps,\n verticalScrollbarSize\n )\n : scrollLeft,\n scrollTop:\n rowIndex !== undefined\n ? getOffsetForRowAndAlignment(\n this.props,\n rowIndex,\n align,\n scrollTop,\n this._instanceProps,\n horizontalScrollbarSize\n )\n : scrollTop,\n });\n }\n\n componentDidMount() {\n const { initialScrollLeft, initialScrollTop } = this.props;\n\n if (this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction } = this.props;\n const { scrollLeft, scrollTop, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n columnCount,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemData,\n itemKey = defaultItemKey,\n outerElementType,\n outerTagName,\n rowCount,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n const [\n columnStartIndex,\n columnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [rowStartIndex, rowStopIndex] = this._getVerticalRangeToRender();\n\n const items = [];\n if (columnCount > 0 && rowCount) {\n for (\n let rowIndex = rowStartIndex;\n rowIndex <= rowStopIndex;\n rowIndex++\n ) {\n for (\n let columnIndex = columnStartIndex;\n columnIndex <= columnStopIndex;\n columnIndex++\n ) {\n items.push(\n createElement(children, {\n columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({ columnIndex, data: itemData, rowIndex }),\n rowIndex,\n style: this._getItemStyle(rowIndex, columnIndex),\n })\n );\n }\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth,\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): OnItemsRenderedCallback)({\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): OnScrollCallback)({\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n verticalScrollDirection,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n const { columnCount, onItemsRendered, onScroll, rowCount } = this.props;\n\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n const [\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n ] = this._getVerticalRangeToRender();\n this._callOnItemsRendered(\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex\n );\n }\n }\n\n if (typeof onScroll === 'function') {\n const {\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n scrollUpdateWasRequested,\n verticalScrollDirection,\n } = this.state;\n this._callOnScroll(\n scrollLeft,\n scrollTop,\n horizontalScrollDirection,\n verticalScrollDirection,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (rowIndex: number, columnIndex: number) => Object;\n _getItemStyle = (rowIndex: number, columnIndex: number): Object => {\n const { columnWidth, direction, rowHeight } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && columnWidth,\n shouldResetStyleCacheOnItemSizeChange && direction,\n shouldResetStyleCacheOnItemSizeChange && rowHeight\n );\n\n const key = `${rowIndex}:${columnIndex}`;\n\n let style;\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n const offset = getColumnOffset(\n this.props,\n columnIndex,\n this._instanceProps\n );\n const isRtl = direction === 'rtl';\n itemStyleCache[key] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offset,\n right: isRtl ? offset : undefined,\n top: getRowOffset(this.props, rowIndex, this._instanceProps),\n height: getRowHeight(this.props, rowIndex, this._instanceProps),\n width: getColumnWidth(this.props, columnIndex, this._instanceProps),\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getHorizontalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanColumnCount,\n overscanColumnsCount,\n overscanCount,\n rowCount,\n } = this.props;\n const { horizontalScrollDirection, isScrolling, scrollLeft } = this.state;\n\n const overscanCountResolved: number =\n overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getColumnStartIndexForOffset(\n this.props,\n scrollLeft,\n this._instanceProps\n );\n const stopIndex = getColumnStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollLeft,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || horizontalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || horizontalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _getVerticalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanCount,\n overscanRowCount,\n overscanRowsCount,\n rowCount,\n } = this.props;\n const { isScrolling, verticalScrollDirection, scrollTop } = this.state;\n\n const overscanCountResolved: number =\n overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getRowStartIndexForOffset(\n this.props,\n scrollTop,\n this._instanceProps\n );\n const stopIndex = getRowStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollTop,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || verticalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || verticalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScroll = (event: ScrollEvent): void => {\n const {\n clientHeight,\n clientWidth,\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth,\n } = event.currentTarget;\n this.setState(prevState => {\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n let calculatedScrollLeft = scrollLeft;\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n calculatedScrollLeft = Math.max(\n 0,\n Math.min(calculatedScrollLeft, scrollWidth - clientWidth)\n );\n const calculatedScrollTop = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1);\n });\n };\n };\n}\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n innerTagName,\n outerTagName,\n overscanColumnsCount,\n overscanCount,\n overscanRowsCount,\n width,\n }: Props<any>,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn(\n 'The overscanCount prop has been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (\n typeof overscanColumnsCount === 'number' ||\n typeof overscanRowsCount === 'number'\n ) {\n if (\n devWarningsOverscanRowsColumnsCount &&\n !devWarningsOverscanRowsColumnsCount.has(instance)\n ) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn(\n 'The overscanColumnsCount and overscanRowsCount props have been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n if (typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Grids must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n }\n\n if (typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Grids must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n// TODO Deprecate directions \"horizontal\" and \"vertical\"\ntype Direction = 'ltr' | 'rtl' | 'horizontal' | 'vertical';\ntype Layout = 'horizontal' | 'vertical';\n\ntype RenderComponentProps<T> = {|\n data: T,\n index: number,\n isScrolling?: boolean,\n style: Object,\n|};\ntype RenderComponent<T> = React$ComponentType<$Shape<RenderComponentProps<T>>>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype onItemsRenderedCallback = ({\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number,\n}) => void;\ntype onScrollCallback = ({\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent<HTMLDivElement>;\ntype ItemStyleCache = { [index: number]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props<T> = {|\n children: RenderComponent<T>,\n className?: string,\n direction: Direction,\n height: number | string,\n initialScrollOffset?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent<InnerProps, any>,\n innerTagName?: string, // deprecated\n itemCount: number,\n itemData: T,\n itemKey?: (index: number, data: T) => any,\n itemSize: itemSize,\n layout: Layout,\n onItemsRendered?: onItemsRenderedCallback,\n onScroll?: onScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent<OuterProps, any>,\n outerTagName?: string, // deprecated\n overscanCount: number,\n style?: Object,\n useIsScrolling: boolean,\n width: number | string,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n|};\n\ntype GetItemOffset = (\n props: Props<any>,\n index: number,\n instanceProps: any\n) => number;\ntype GetItemSize = (\n props: Props<any>,\n index: number,\n instanceProps: any\n) => number;\ntype GetEstimatedTotalSize = (props: Props<any>, instanceProps: any) => number;\ntype GetOffsetForIndexAndAlignment = (\n props: Props<any>,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype GetStartIndexForOffset = (\n props: Props<any>,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props<any>,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props<any>, instance: any) => any;\ntype ValidateProps = (props: Props<any>) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = (index: number, data: any) => index;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsDirection = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createListComponent({\n getItemOffset,\n getEstimatedTotalSize,\n getItemSize,\n getOffsetForIndexAndAlignment,\n getStartIndexForOffset,\n getStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getItemOffset: GetItemOffset,\n getEstimatedTotalSize: GetEstimatedTotalSize,\n getItemSize: GetItemSize,\n getOffsetForIndexAndAlignment: GetOffsetForIndexAndAlignment,\n getStartIndexForOffset: GetStartIndexForOffset,\n getStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class List<T> extends PureComponent<Props<T>, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _outerRef: ?HTMLDivElement;\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.props.initialScrollOffset === 'number'\n ? this.props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props<T>) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props<T>,\n prevState: State\n ): $Shape<State> | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo(scrollOffset: number): void {\n scrollOffset = Math.max(0, scrollOffset);\n\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n return {\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true,\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem(index: number, align: ScrollToAlign = 'auto'): void {\n const { itemCount, layout } = this.props;\n const { scrollOffset } = this.state;\n\n index = Math.max(0, Math.min(index, itemCount - 1));\n\n // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n // This is an edge case for lists; normally they only scroll in the dominant direction.\n let scrollbarSize = 0;\n if (this._outerRef) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (layout === 'vertical') {\n scrollbarSize =\n outerRef.scrollWidth > outerRef.clientWidth\n ? getScrollbarSize()\n : 0;\n } else {\n scrollbarSize =\n outerRef.scrollHeight > outerRef.clientHeight\n ? getScrollbarSize()\n : 0;\n }\n }\n\n this.scrollTo(\n getOffsetForIndexAndAlignment(\n this.props,\n index,\n align,\n scrollOffset,\n this._instanceProps,\n scrollbarSize\n )\n );\n }\n\n componentDidMount() {\n const { direction, initialScrollOffset, layout } = this.props;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction, layout } = this.props;\n const { scrollOffset, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n outerElementType,\n outerTagName,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical;\n\n const [startIndex, stopIndex] = this._getRangeToRender();\n\n const items = [];\n if (itemCount > 0) {\n for (let index = startIndex; index <= stopIndex; index++) {\n items.push(\n createElement(children, {\n data: itemData,\n key: itemKey(index, itemData),\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(index),\n })\n );\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = getEstimatedTotalSize(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%',\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): onItemsRenderedCallback)({\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): onScrollCallback)({\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n const { itemCount } = this.props;\n if (itemCount > 0) {\n const [\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n ] = this._getRangeToRender();\n this._callOnItemsRendered(\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n );\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n const {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n } = this.state;\n this._callOnScroll(\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (index: number) => Object;\n _getItemStyle = (index: number): Object => {\n const { direction, itemSize, layout } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && itemSize,\n shouldResetStyleCacheOnItemSizeChange && layout,\n shouldResetStyleCacheOnItemSizeChange && direction\n );\n\n let style;\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n const offset = getItemOffset(this.props, index, this._instanceProps);\n const size = getItemSize(this.props, index, this._instanceProps);\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const isRtl = direction === 'rtl';\n const offsetHorizontal = isHorizontal ? offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%',\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getRangeToRender(): [number, number, number, number] {\n const { itemCount, overscanCount } = this.props;\n const { isScrolling, scrollDirection, scrollOffset } = this.state;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getStartIndexForOffset(\n this.props,\n scrollOffset,\n this._instanceProps\n );\n const stopIndex = getStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollOffset,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || scrollDirection === 'backward'\n ? Math.max(1, overscanCount)\n : 1;\n const overscanForward =\n !isScrolling || scrollDirection === 'forward'\n ? Math.max(1, overscanCount)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScrollHorizontal = (event: ScrollEvent): void => {\n const { clientWidth, scrollLeft, scrollWidth } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n let scrollOffset = scrollLeft;\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n scrollOffset = Math.max(\n 0,\n Math.min(scrollOffset, scrollWidth - clientWidth)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _onScrollVertical = (event: ScrollEvent): void => {\n const { clientHeight, scrollHeight, scrollTop } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1, null);\n });\n };\n };\n}\n\n// NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n layout,\n innerTagName,\n outerTagName,\n width,\n }: Props<any>,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn(\n 'The direction prop should be either \"ltr\" (default) or \"rtl\". ' +\n 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.'\n );\n }\n break;\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"layout\" prop has been specified. ' +\n 'Value should be either \"horizontal\" or \"vertical\". ' +\n `\"${layout}\" was specified.`\n );\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Horizontal lists must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Vertical lists must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\n","// @flow\n\nimport createListComponent from './createListComponent';\n\nimport type { Props, ScrollToAlign } from './createListComponent';\n\ntype InstanceProps = any;\n\nconst FixedSizeList = createListComponent({\n getItemOffset: ({ itemSize }: Props<any>, index: number): number =>\n index * ((itemSize: any): number),\n\n getItemSize: ({ itemSize }: Props<any>, index: number): number =>\n ((itemSize: any): number),\n\n getEstimatedTotalSize: ({ itemCount, itemSize }: Props<any>) =>\n ((itemSize: any): number) * itemCount,\n\n getOffsetForIndexAndAlignment: (\n { direction, height, itemCount, itemSize, layout, width }: Props<any>,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: InstanceProps,\n scrollbarSize: number\n ): number => {\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n const size = (((isHorizontal ? width : height): any): number);\n const lastItemOffset = Math.max(\n 0,\n itemCount * ((itemSize: any): number) - size\n );\n const maxOffset = Math.min(\n lastItemOffset,\n index * ((itemSize: any): number)\n );\n const minOffset = Math.max(\n 0,\n index * ((itemSize: any): number) -\n size +\n ((itemSize: any): number) +\n scrollbarSize\n );\n\n if (align === 'smart') {\n if (\n scrollOffset >= minOffset - size &&\n scrollOffset <= maxOffset + size\n ) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center': {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n const middleOffset = Math.round(\n minOffset + (maxOffset - minOffset) / 2\n );\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n\n getStartIndexForOffset: (\n { itemCount, itemSize }: Props<any>,\n offset: number\n ): number =>\n Math.max(\n 0,\n Math.min(itemCount - 1, Math.floor(offset / ((itemSize: any): number)))\n ),\n\n getStopIndexForStartIndex: (\n { direction, height, itemCount, itemSize, layout, width }: Props<any>,\n startIndex: number,\n scrollOffset: number\n ): number => {\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n const offset = startIndex * ((itemSize: any): number);\n const size = (((isHorizontal ? width : height): any): number);\n const numVisibleItems = Math.ceil(\n (size + scrollOffset - offset) / ((itemSize: any): number)\n );\n return Math.max(\n 0,\n Math.min(\n itemCount - 1,\n startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n )\n );\n },\n\n initInstanceProps(props: Props<any>): any {\n // Noop\n },\n\n shouldResetStyleCacheOnItemSizeChange: true,\n\n validateProps: ({ itemSize }: Props<any>): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error(\n 'An invalid \"itemSize\" prop has been specified. ' +\n 'Value should be a number. ' +\n `\"${itemSize === null ? 'null' : typeof itemSize}\" was specified.`\n );\n }\n }\n },\n});\n\nexport default FixedSizeList;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useDndContext, useTreeApi } from \"../context\";\nexport function Cursor() {\n var _a, _b;\n const tree = useTreeApi();\n const state = useDndContext();\n const cursor = state.cursor;\n if (!cursor || cursor.type !== \"line\")\n return null;\n const indent = tree.indent;\n const top = tree.rowHeight * cursor.index +\n ((_b = (_a = tree.props.padding) !== null && _a !== void 0 ? _a : tree.props.paddingTop) !== null && _b !== void 0 ? _b : 0);\n const left = indent * cursor.level;\n const Cursor = tree.renderCursor;\n return _jsx(Cursor, { top, left, indent });\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { useTreeApi } from \"../context\";\nimport { Cursor } from \"./cursor\";\nexport const ListOuterElement = forwardRef(function Outer(props, ref) {\n const { children } = props, rest = __rest(props, [\"children\"]);\n const tree = useTreeApi();\n return (_jsxs(\"div\", Object.assign({ \n // @ts-ignore\n ref: ref }, rest, { onClick: (e) => {\n if (e.currentTarget === e.target)\n tree.deselectAll();\n }, children: [_jsx(DropContainer, {}), children] })));\n});\nconst DropContainer = () => {\n const tree = useTreeApi();\n return (_jsx(\"div\", { style: {\n height: tree.visibleNodes.length * tree.rowHeight,\n width: \"100%\",\n position: \"absolute\",\n left: \"0\",\n right: \"0\",\n }, children: _jsx(Cursor, {}) }));\n};\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { useTreeApi } from \"../context\";\nexport const ListInnerElement = forwardRef(function InnerElement(_a, ref) {\n var _b, _c, _d, _e;\n var { style } = _a, rest = __rest(_a, [\"style\"]);\n const tree = useTreeApi();\n const paddingTop = (_c = (_b = tree.props.padding) !== null && _b !== void 0 ? _b : tree.props.paddingTop) !== null && _c !== void 0 ? _c : 0;\n const paddingBottom = (_e = (_d = tree.props.padding) !== null && _d !== void 0 ? _d : tree.props.paddingBottom) !== null && _e !== void 0 ? _e : 0;\n return (_jsx(\"div\", Object.assign({ ref: ref, style: Object.assign(Object.assign({}, style), { height: `${parseFloat(style.height) + paddingTop + paddingBottom}px` }) }, rest)));\n});\n","import { useLayoutEffect, useEffect } from 'react'; // suppress the useLayoutEffect warning on server side.\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var DragSourceImpl = /*#__PURE__*/function () {\n function DragSourceImpl(spec, monitor, connector) {\n _classCallCheck(this, DragSourceImpl);\n\n _defineProperty(this, \"spec\", void 0);\n\n _defineProperty(this, \"monitor\", void 0);\n\n _defineProperty(this, \"connector\", void 0);\n\n this.spec = spec;\n this.monitor = monitor;\n this.connector = connector;\n }\n\n _createClass(DragSourceImpl, [{\n key: \"beginDrag\",\n value: function beginDrag() {\n var _result;\n\n var spec = this.spec;\n var monitor = this.monitor;\n var result = null;\n\n if (_typeof(spec.item) === 'object') {\n result = spec.item;\n } else if (typeof spec.item === 'function') {\n result = spec.item(monitor);\n } else {\n result = {};\n }\n\n return (_result = result) !== null && _result !== void 0 ? _result : null;\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n var spec = this.spec;\n var monitor = this.monitor;\n\n if (typeof spec.canDrag === 'boolean') {\n return spec.canDrag;\n } else if (typeof spec.canDrag === 'function') {\n return spec.canDrag(monitor);\n } else {\n return true;\n }\n }\n }, {\n key: \"isDragging\",\n value: function isDragging(globalMonitor, target) {\n var spec = this.spec;\n var monitor = this.monitor;\n var isDragging = spec.isDragging;\n return isDragging ? isDragging(monitor) : target === globalMonitor.getSourceId();\n }\n }, {\n key: \"endDrag\",\n value: function endDrag() {\n var spec = this.spec;\n var monitor = this.monitor;\n var connector = this.connector;\n var end = spec.end;\n\n if (end) {\n end(monitor.getItem(), monitor);\n }\n\n connector.reconnect();\n }\n }]);\n\n return DragSourceImpl;\n}();","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport function invariant(condition: any, format: string, ...args: any[]) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n let error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n let argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() {\n return args[argIndex++];\n })\n );\n error.name = 'Invariant Violation';\n }\n\n (error as any).framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n","import { createContext } from 'react';\n/**\n * Create the React Context\n */\n\nexport var DndContext = createContext({\n dragDropManager: undefined\n});","import { useContext } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { DndContext } from '../core';\n/**\n * A hook to retrieve the DragDropManager from Context\n */\n\nexport function useDragDropManager() {\n var _useContext = useContext(DndContext),\n dragDropManager = _useContext.dragDropManager;\n\n invariant(dragDropManager != null, 'Expected drag drop context');\n return dragDropManager;\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { registerSource } from '../../internals';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\nimport { useDragSource } from './useDragSource';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { useDragType } from './useDragType';\nexport function useRegisteredDragSource(spec, monitor, connector) {\n var manager = useDragDropManager();\n var handler = useDragSource(spec, monitor, connector);\n var itemType = useDragType(spec);\n useIsomorphicLayoutEffect(function registerDragSource() {\n if (itemType != null) {\n var _registerSource = registerSource(itemType, handler, manager),\n _registerSource2 = _slicedToArray(_registerSource, 2),\n handlerId = _registerSource2[0],\n unregister = _registerSource2[1];\n\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }\n }, [manager, monitor, connector, handler, itemType]);\n}","import { useEffect, useMemo } from 'react';\nimport { DragSourceImpl } from './DragSourceImpl';\nexport function useDragSource(spec, monitor, connector) {\n var handler = useMemo(function () {\n return new DragSourceImpl(spec, monitor, connector);\n }, [monitor, connector]);\n useEffect(function () {\n handler.spec = spec;\n }, [spec]);\n return handler;\n}","import { invariant } from '@react-dnd/invariant';\nimport { useMemo } from 'react';\nexport function useDragType(spec) {\n return useMemo(function () {\n var result = spec.type;\n invariant(result != null, 'spec.type must be defined');\n return result;\n }, [spec]);\n}","export function registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n return [targetId, function () {\n return registry.removeTarget(targetId);\n }];\n}\nexport function registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n return [sourceId, function () {\n return registry.removeSource(sourceId);\n }];\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { useMemo } from 'react';\nexport function useOptionalFactory(arg, deps) {\n var memoDeps = _toConsumableArray(deps || []);\n\n if (deps == null && typeof arg !== 'function') {\n memoDeps.push(arg);\n }\n\n return useMemo(function () {\n return typeof arg === 'function' ? arg() : arg;\n }, memoDeps);\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nexport var DragSourceMonitorImpl = /*#__PURE__*/function () {\n function DragSourceMonitorImpl(manager) {\n _classCallCheck(this, DragSourceMonitorImpl);\n\n _defineProperty(this, \"internalMonitor\", void 0);\n\n _defineProperty(this, \"sourceId\", null);\n\n this.internalMonitor = manager.getMonitor();\n }\n\n _createClass(DragSourceMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(sourceId) {\n this.sourceId = sourceId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.sourceId;\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n invariant(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n } finally {\n isCallingCanDrag = false;\n }\n }\n }, {\n key: \"isDragging\",\n value: function isDragging() {\n if (!this.sourceId) {\n return false;\n }\n\n invariant(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n } finally {\n isCallingIsDragging = false;\n }\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"isDraggingSource\",\n value: function isDraggingSource(sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n }\n }, {\n key: \"isOverTarget\",\n value: function isOverTarget(targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n }\n }, {\n key: \"getTargetIds\",\n value: function getTargetIds() {\n return this.internalMonitor.getTargetIds();\n }\n }, {\n key: \"isSourcePublic\",\n value: function isSourcePublic() {\n return this.internalMonitor.isSourcePublic();\n }\n }, {\n key: \"getSourceId\",\n value: function getSourceId() {\n return this.internalMonitor.getSourceId();\n }\n }, {\n key: \"subscribeToOffsetChange\",\n value: function subscribeToOffsetChange(listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n }\n }, {\n key: \"canDragSource\",\n value: function canDragSource(sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n }\n }, {\n key: \"canDropOnTarget\",\n value: function canDropOnTarget(targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n\n return DragSourceMonitorImpl;\n}();","import { invariant } from '@react-dnd/invariant';\nimport { cloneElement, isValidElement } from 'react';\n\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' + \"You can either wrap \".concat(displayName, \" into a <div>, or turn it into a \") + 'drag source or a drop target itself.');\n}\n\nfunction wrapHookToRecognizeElement(hook) {\n return function () {\n var elementOrNode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // When passed a node, call the hook straight away.\n if (!isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options); // return the node so it can be chained (e.g. when within callback refs\n // <div ref={node => connectDragSource(connectDropTarget(node))}/>\n\n return node;\n } // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n\n\n var element = elementOrNode;\n throwIfCompositeComponentElement(element); // When no options are passed, use the hook directly\n\n var ref = options ? function (node) {\n return hook(node, options);\n } : hook;\n return cloneWithRef(element, ref);\n };\n}\n\nexport function wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key]; // ref objects should be passed straight through without wrapping\n\n if (key.endsWith('Ref')) {\n wrappedHooks[key] = hooks[key];\n } else {\n var wrappedHook = wrapHookToRecognizeElement(hook);\n\n wrappedHooks[key] = function () {\n return wrappedHook;\n };\n }\n });\n return wrappedHooks;\n}\n\nfunction setRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n}\n\nfunction cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' + 'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' + 'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs');\n\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return cloneElement(element, {\n ref: newRef\n });\n } else {\n return cloneElement(element, {\n ref: function ref(node) {\n setRef(previousRef, node);\n setRef(newRef, node);\n }\n });\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexport function isRef(obj) {\n return (// eslint-disable-next-line no-prototype-builtins\n obj !== null && _typeof(obj) === 'object' && Object.prototype.hasOwnProperty.call(obj, 'current')\n );\n}","export function shallowEqual<T>(\n objA: T,\n objB: T,\n compare?: (a: T, b: T, key?: string) => boolean | void,\n compareContext?: any\n) {\n var compareResult = compare\n ? compare.call(compareContext, objA, objB)\n : void 0;\n if (compareResult !== void 0) {\n return !!compareResult;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = (objA as any)[key];\n var valueB = (objB as any)[key];\n\n compareResult = compare\n ? compare.call(compareContext, valueA, valueB, key)\n : void 0;\n\n if (\n compareResult === false ||\n (compareResult === void 0 && valueA !== valueB)\n ) {\n return false;\n }\n }\n\n return true;\n}\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from './isRef';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nexport var SourceConnector = /*#__PURE__*/function () {\n // The drop target may either be attached via ref or connect function\n // The drag preview may either be attached via ref or connect function\n function SourceConnector(backend) {\n var _this = this;\n\n _classCallCheck(this, SourceConnector);\n\n _defineProperty(this, \"hooks\", wrapConnectorHooks({\n dragSource: function dragSource(node, options) {\n _this.clearDragSource();\n\n _this.dragSourceOptions = options || null;\n\n if (isRef(node)) {\n _this.dragSourceRef = node;\n } else {\n _this.dragSourceNode = node;\n }\n\n _this.reconnectDragSource();\n },\n dragPreview: function dragPreview(node, options) {\n _this.clearDragPreview();\n\n _this.dragPreviewOptions = options || null;\n\n if (isRef(node)) {\n _this.dragPreviewRef = node;\n } else {\n _this.dragPreviewNode = node;\n }\n\n _this.reconnectDragPreview();\n }\n }));\n\n _defineProperty(this, \"handlerId\", null);\n\n _defineProperty(this, \"dragSourceRef\", null);\n\n _defineProperty(this, \"dragSourceNode\", void 0);\n\n _defineProperty(this, \"dragSourceOptionsInternal\", null);\n\n _defineProperty(this, \"dragSourceUnsubscribe\", void 0);\n\n _defineProperty(this, \"dragPreviewRef\", null);\n\n _defineProperty(this, \"dragPreviewNode\", void 0);\n\n _defineProperty(this, \"dragPreviewOptionsInternal\", null);\n\n _defineProperty(this, \"dragPreviewUnsubscribe\", void 0);\n\n _defineProperty(this, \"lastConnectedHandlerId\", null);\n\n _defineProperty(this, \"lastConnectedDragSource\", null);\n\n _defineProperty(this, \"lastConnectedDragSourceOptions\", null);\n\n _defineProperty(this, \"lastConnectedDragPreview\", null);\n\n _defineProperty(this, \"lastConnectedDragPreviewOptions\", null);\n\n _defineProperty(this, \"backend\", void 0);\n\n this.backend = backend;\n }\n\n _createClass(SourceConnector, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (this.handlerId === newHandlerId) {\n return;\n }\n\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"connectTarget\",\n get: function get() {\n return this.dragSource;\n }\n }, {\n key: \"dragSourceOptions\",\n get: function get() {\n return this.dragSourceOptionsInternal;\n },\n set: function set(options) {\n this.dragSourceOptionsInternal = options;\n }\n }, {\n key: \"dragPreviewOptions\",\n get: function get() {\n return this.dragPreviewOptionsInternal;\n },\n set: function set(options) {\n this.dragPreviewOptionsInternal = options;\n }\n }, {\n key: \"reconnect\",\n value: function reconnect() {\n this.reconnectDragSource();\n this.reconnectDragPreview();\n }\n }, {\n key: \"reconnectDragSource\",\n value: function reconnectDragSource() {\n var dragSource = this.dragSource; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragSourceChange() || this.didDragSourceOptionsChange();\n\n if (didChange) {\n this.disconnectDragSource();\n }\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dragSource) {\n this.lastConnectedDragSource = dragSource;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragSource = dragSource;\n this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n }\n }\n }, {\n key: \"reconnectDragPreview\",\n value: function reconnectDragPreview() {\n var dragPreview = this.dragPreview; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragPreviewChange() || this.didDragPreviewOptionsChange();\n\n if (didChange) {\n this.disconnectDragPreview();\n }\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dragPreview) {\n this.lastConnectedDragPreview = dragPreview;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragPreview = dragPreview;\n this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n }\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didConnectedDragSourceChange\",\n value: function didConnectedDragSourceChange() {\n return this.lastConnectedDragSource !== this.dragSource;\n }\n }, {\n key: \"didConnectedDragPreviewChange\",\n value: function didConnectedDragPreviewChange() {\n return this.lastConnectedDragPreview !== this.dragPreview;\n }\n }, {\n key: \"didDragSourceOptionsChange\",\n value: function didDragSourceOptionsChange() {\n return !shallowEqual(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n }\n }, {\n key: \"didDragPreviewOptionsChange\",\n value: function didDragPreviewOptionsChange() {\n return !shallowEqual(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n }\n }, {\n key: \"disconnectDragSource\",\n value: function disconnectDragSource() {\n if (this.dragSourceUnsubscribe) {\n this.dragSourceUnsubscribe();\n this.dragSourceUnsubscribe = undefined;\n }\n }\n }, {\n key: \"disconnectDragPreview\",\n value: function disconnectDragPreview() {\n if (this.dragPreviewUnsubscribe) {\n this.dragPreviewUnsubscribe();\n this.dragPreviewUnsubscribe = undefined;\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }\n }, {\n key: \"dragSource\",\n get: function get() {\n return this.dragSourceNode || this.dragSourceRef && this.dragSourceRef.current;\n }\n }, {\n key: \"dragPreview\",\n get: function get() {\n return this.dragPreviewNode || this.dragPreviewRef && this.dragPreviewRef.current;\n }\n }, {\n key: \"clearDragSource\",\n value: function clearDragSource() {\n this.dragSourceNode = null;\n this.dragSourceRef = null;\n }\n }, {\n key: \"clearDragPreview\",\n value: function clearDragPreview() {\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }]);\n\n return SourceConnector;\n}();","var emptyImage;\nexport function getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n\n return emptyImage;\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport equal from 'fast-deep-equal';\nimport { useState, useCallback } from 'react';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\n\nexport function useCollector(monitor, collect, onUpdate) {\n var _useState = useState(function () {\n return collect(monitor);\n }),\n _useState2 = _slicedToArray(_useState, 2),\n collected = _useState2[0],\n setCollected = _useState2[1];\n\n var updateCollected = useCallback(function () {\n var nextValue = collect(monitor); // This needs to be a deep-equality check because some monitor-collected values\n // include XYCoord objects that may be equivalent, but do not have instance equality.\n\n if (!equal(collected, nextValue)) {\n setCollected(nextValue);\n\n if (onUpdate) {\n onUpdate();\n }\n }\n }, [collected, monitor, onUpdate]); // update the collected properties after react renders.\n // Note that the \"Dustbin Stress Test\" fails if this is not\n // done when the component updates\n\n useIsomorphicLayoutEffect(updateCollected);\n return [collected, updateCollected];\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useCollector } from './useCollector';\nexport function useMonitorOutput(monitor, collect, onCollect) {\n var _useCollector = useCollector(monitor, collect, onCollect),\n _useCollector2 = _slicedToArray(_useCollector, 2),\n collected = _useCollector2[0],\n updateCollected = _useCollector2[1];\n\n useIsomorphicLayoutEffect(function subscribeToMonitorStateChange() {\n var handlerId = monitor.getHandlerId();\n\n if (handlerId == null) {\n return;\n }\n\n return monitor.subscribeToStateChange(updateCollected, {\n handlerIds: [handlerId]\n });\n }, [monitor, updateCollected]);\n return collected;\n}","import { useMonitorOutput } from './useMonitorOutput';\nexport function useCollectedProps(collector, monitor, connector) {\n return useMonitorOutput(monitor, collector || function () {\n return {};\n }, function () {\n return connector.reconnect();\n });\n}","import { useMemo } from 'react';\nexport function useConnectDragSource(connector) {\n return useMemo(function () {\n return connector.hooks.dragSource();\n }, [connector]);\n}\nexport function useConnectDragPreview(connector) {\n return useMemo(function () {\n return connector.hooks.dragPreview();\n }, [connector]);\n}","import { useRegisteredDragSource } from './useRegisteredDragSource';\nimport { useOptionalFactory } from '../useOptionalFactory';\nimport { useDragSourceMonitor } from './useDragSourceMonitor';\nimport { useDragSourceConnector } from './useDragSourceConnector';\nimport { useCollectedProps } from '../useCollectedProps';\nimport { useConnectDragPreview, useConnectDragSource } from './connectors';\nimport { invariant } from '@react-dnd/invariant';\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\n\nexport function useDrag(specArg, deps) {\n var spec = useOptionalFactory(specArg, deps);\n invariant(!spec.begin, \"useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)\");\n var monitor = useDragSourceMonitor();\n var connector = useDragSourceConnector(spec.options, spec.previewOptions);\n useRegisteredDragSource(spec, monitor, connector);\n return [useCollectedProps(spec.collect, monitor, connector), useConnectDragSource(connector), useConnectDragPreview(connector)];\n}","import { useMemo } from 'react';\nimport { DragSourceMonitorImpl } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nexport function useDragSourceMonitor() {\n var manager = useDragDropManager();\n return useMemo(function () {\n return new DragSourceMonitorImpl(manager);\n }, [manager]);\n}","import { useMemo } from 'react';\nimport { SourceConnector } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\nexport function useDragSourceConnector(dragSourceOptions, dragPreviewOptions) {\n var manager = useDragDropManager();\n var connector = useMemo(function () {\n return new SourceConnector(manager.getBackend());\n }, [manager]);\n useIsomorphicLayoutEffect(function () {\n connector.dragSourceOptions = dragSourceOptions || null;\n connector.reconnect();\n return function () {\n return connector.disconnectDragSource();\n };\n }, [connector, dragSourceOptions]);\n useIsomorphicLayoutEffect(function () {\n connector.dragPreviewOptions = dragPreviewOptions || null;\n connector.reconnect();\n return function () {\n return connector.disconnectDragPreview();\n };\n }, [connector, dragPreviewOptions]);\n return connector;\n}","import { useEffect } from \"react\";\nimport { useDrag } from \"react-dnd\";\nimport { getEmptyImage } from \"react-dnd-html5-backend\";\nimport { useTreeApi } from \"../context\";\nimport { actions as dnd } from \"../state/dnd-slice\";\nimport { safeRun } from \"../utils\";\nimport { ROOT_ID } from \"../data/create-root\";\nexport function useDragHook(node) {\n const tree = useTreeApi();\n const ids = tree.selectedIds;\n const [_, ref, preview] = useDrag(() => ({\n canDrag: () => node.isDraggable,\n type: \"NODE\",\n item: () => {\n // This is fired once at the begging of a drag operation\n const dragIds = tree.isSelected(node.id) ? Array.from(ids) : [node.id];\n tree.dispatch(dnd.dragStart(node.id, dragIds));\n return { id: node.id };\n },\n end: () => {\n tree.hideCursor();\n let { parentId, index, dragIds } = tree.state.dnd;\n // If they held down meta, we need to create a copy\n // if (drop.dropEffect === \"copy\")\n if (tree.canDrop()) {\n safeRun(tree.props.onMove, {\n dragIds,\n parentId: parentId === ROOT_ID ? null : parentId,\n index: index === null ? 0 : index, // When it's null it was dropped over a folder\n dragNodes: tree.dragNodes,\n parentNode: tree.get(parentId),\n });\n tree.open(parentId);\n }\n tree.dispatch(dnd.dragEnd());\n },\n }), [ids, node]);\n useEffect(() => {\n preview(getEmptyImage());\n }, [preview]);\n return ref;\n}\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var DropTargetImpl = /*#__PURE__*/function () {\n function DropTargetImpl(spec, monitor) {\n _classCallCheck(this, DropTargetImpl);\n\n _defineProperty(this, \"spec\", void 0);\n\n _defineProperty(this, \"monitor\", void 0);\n\n this.spec = spec;\n this.monitor = monitor;\n }\n\n _createClass(DropTargetImpl, [{\n key: \"canDrop\",\n value: function canDrop() {\n var spec = this.spec;\n var monitor = this.monitor;\n return spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true;\n }\n }, {\n key: \"hover\",\n value: function hover() {\n var spec = this.spec;\n var monitor = this.monitor;\n\n if (spec.hover) {\n spec.hover(monitor.getItem(), monitor);\n }\n }\n }, {\n key: \"drop\",\n value: function drop() {\n var spec = this.spec;\n var monitor = this.monitor;\n\n if (spec.drop) {\n return spec.drop(monitor.getItem(), monitor);\n }\n }\n }]);\n\n return DropTargetImpl;\n}();","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { registerTarget } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\nimport { useAccept } from './useAccept';\nimport { useDropTarget } from './useDropTarget';\nexport function useRegisteredDropTarget(spec, monitor, connector) {\n var manager = useDragDropManager();\n var dropTarget = useDropTarget(spec, monitor);\n var accept = useAccept(spec);\n useIsomorphicLayoutEffect(function registerDropTarget() {\n var _registerTarget = registerTarget(accept, dropTarget, manager),\n _registerTarget2 = _slicedToArray(_registerTarget, 2),\n handlerId = _registerTarget2[0],\n unregister = _registerTarget2[1];\n\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, [manager, monitor, dropTarget, connector, accept.map(function (a) {\n return a.toString();\n }).join('|')]);\n}","import { useEffect, useMemo } from 'react';\nimport { DropTargetImpl } from './DropTargetImpl';\nexport function useDropTarget(spec, monitor) {\n var dropTarget = useMemo(function () {\n return new DropTargetImpl(spec, monitor);\n }, [monitor]);\n useEffect(function () {\n dropTarget.spec = spec;\n }, [spec]);\n return dropTarget;\n}","import { invariant } from '@react-dnd/invariant';\nimport { useMemo } from 'react';\n/**\n * Internal utility hook to get an array-version of spec.accept.\n * The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.\n * @param spec\n */\n\nexport function useAccept(spec) {\n var accept = spec.accept;\n return useMemo(function () {\n invariant(spec.accept != null, 'accept must be defined');\n return Array.isArray(accept) ? accept : [accept];\n }, [accept]);\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrop = false;\nexport var DropTargetMonitorImpl = /*#__PURE__*/function () {\n function DropTargetMonitorImpl(manager) {\n _classCallCheck(this, DropTargetMonitorImpl);\n\n _defineProperty(this, \"internalMonitor\", void 0);\n\n _defineProperty(this, \"targetId\", null);\n\n this.internalMonitor = manager.getMonitor();\n }\n\n _createClass(DropTargetMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(targetId) {\n this.targetId = targetId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.targetId;\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"canDrop\",\n value: function canDrop() {\n // Cut out early if the target id has not been set. This should prevent errors\n // where the user has an older version of dnd-core like in\n // https://github.com/react-dnd/react-dnd/issues/1310\n if (!this.targetId) {\n return false;\n }\n\n invariant(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n } finally {\n isCallingCanDrop = false;\n }\n }\n }, {\n key: \"isOver\",\n value: function isOver(options) {\n if (!this.targetId) {\n return false;\n }\n\n return this.internalMonitor.isOverTarget(this.targetId, options);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n\n return DropTargetMonitorImpl;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from './isRef';\nexport var TargetConnector = /*#__PURE__*/function () {\n // The drop target may either be attached via ref or connect function\n function TargetConnector(backend) {\n var _this = this;\n\n _classCallCheck(this, TargetConnector);\n\n _defineProperty(this, \"hooks\", wrapConnectorHooks({\n dropTarget: function dropTarget(node, options) {\n _this.clearDropTarget();\n\n _this.dropTargetOptions = options;\n\n if (isRef(node)) {\n _this.dropTargetRef = node;\n } else {\n _this.dropTargetNode = node;\n }\n\n _this.reconnect();\n }\n }));\n\n _defineProperty(this, \"handlerId\", null);\n\n _defineProperty(this, \"dropTargetRef\", null);\n\n _defineProperty(this, \"dropTargetNode\", void 0);\n\n _defineProperty(this, \"dropTargetOptionsInternal\", null);\n\n _defineProperty(this, \"unsubscribeDropTarget\", void 0);\n\n _defineProperty(this, \"lastConnectedHandlerId\", null);\n\n _defineProperty(this, \"lastConnectedDropTarget\", null);\n\n _defineProperty(this, \"lastConnectedDropTargetOptions\", null);\n\n _defineProperty(this, \"backend\", void 0);\n\n this.backend = backend;\n }\n\n _createClass(TargetConnector, [{\n key: \"connectTarget\",\n get: function get() {\n return this.dropTarget;\n }\n }, {\n key: \"reconnect\",\n value: function reconnect() {\n // if nothing has changed then don't resubscribe\n var didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();\n\n if (didChange) {\n this.disconnectDropTarget();\n }\n\n var dropTarget = this.dropTarget;\n\n if (!this.handlerId) {\n return;\n }\n\n if (!dropTarget) {\n this.lastConnectedDropTarget = dropTarget;\n return;\n }\n\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDropTarget = dropTarget;\n this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n }\n }\n }, {\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (newHandlerId === this.handlerId) {\n return;\n }\n\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"dropTargetOptions\",\n get: function get() {\n return this.dropTargetOptionsInternal;\n },\n set: function set(options) {\n this.dropTargetOptionsInternal = options;\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didDropTargetChange\",\n value: function didDropTargetChange() {\n return this.lastConnectedDropTarget !== this.dropTarget;\n }\n }, {\n key: \"didOptionsChange\",\n value: function didOptionsChange() {\n return !shallowEqual(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n }\n }, {\n key: \"disconnectDropTarget\",\n value: function disconnectDropTarget() {\n if (this.unsubscribeDropTarget) {\n this.unsubscribeDropTarget();\n this.unsubscribeDropTarget = undefined;\n }\n }\n }, {\n key: \"dropTarget\",\n get: function get() {\n return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;\n }\n }, {\n key: \"clearDropTarget\",\n value: function clearDropTarget() {\n this.dropTargetRef = null;\n this.dropTargetNode = null;\n }\n }]);\n\n return TargetConnector;\n}();","import { useMemo } from 'react';\nexport function useConnectDropTarget(connector) {\n return useMemo(function () {\n return connector.hooks.dropTarget();\n }, [connector]);\n}","import { useRegisteredDropTarget } from './useRegisteredDropTarget';\nimport { useOptionalFactory } from '../useOptionalFactory';\nimport { useDropTargetMonitor } from './useDropTargetMonitor';\nimport { useDropTargetConnector } from './useDropTargetConnector';\nimport { useCollectedProps } from '../useCollectedProps';\nimport { useConnectDropTarget } from './connectors';\n/**\n * useDropTarget Hook\n * @param spec The drop target specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\n\nexport function useDrop(specArg, deps) {\n var spec = useOptionalFactory(specArg, deps);\n var monitor = useDropTargetMonitor();\n var connector = useDropTargetConnector(spec.options);\n useRegisteredDropTarget(spec, monitor, connector);\n return [useCollectedProps(spec.collect, monitor, connector), useConnectDropTarget(connector)];\n}","import { useMemo } from 'react';\nimport { DropTargetMonitorImpl } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nexport function useDropTargetMonitor() {\n var manager = useDragDropManager();\n return useMemo(function () {\n return new DropTargetMonitorImpl(manager);\n }, [manager]);\n}","import { useMemo } from 'react';\nimport { TargetConnector } from '../../internals';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\nexport function useDropTargetConnector(options) {\n var manager = useDragDropManager();\n var connector = useMemo(function () {\n return new TargetConnector(manager.getBackend());\n }, [manager]);\n useIsomorphicLayoutEffect(function () {\n connector.dropTargetOptions = options || null;\n connector.reconnect();\n return function () {\n return connector.disconnectDropTarget();\n };\n }, [options]);\n return connector;\n}","import { bound, indexOf, isClosed, isItem, isOpenWithEmptyChildren, } from \"../utils\";\nfunction measureHover(el, offset) {\n const rect = el.getBoundingClientRect();\n const x = offset.x - Math.round(rect.x);\n const y = offset.y - Math.round(rect.y);\n const height = rect.height;\n const inTopHalf = y < height / 2;\n const inBottomHalf = !inTopHalf;\n const pad = height / 4;\n const inMiddle = y > pad && y < height - pad;\n const atTop = !inMiddle && inTopHalf;\n const atBottom = !inMiddle && inBottomHalf;\n return { x, inTopHalf, inBottomHalf, inMiddle, atTop, atBottom };\n}\nfunction getNodesAroundCursor(node, prev, next, hover) {\n if (!node) {\n // We're hovering over the empty part of the list, not over an item,\n // Put the cursor below the last item which is \"prev\"\n return [prev, null];\n }\n if (node.isInternal) {\n if (hover.atTop) {\n return [prev, node];\n }\n else if (hover.inMiddle) {\n return [node, node];\n }\n else {\n return [node, next];\n }\n }\n else {\n if (hover.inTopHalf) {\n return [prev, node];\n }\n else {\n return [node, next];\n }\n }\n}\nfunction dropAt(parentId, index) {\n return { parentId: parentId || null, index };\n}\nfunction lineCursor(index, level) {\n return {\n type: \"line\",\n index,\n level,\n };\n}\nfunction noCursor() {\n return {\n type: \"none\",\n };\n}\nfunction highlightCursor(id) {\n return {\n type: \"highlight\",\n id,\n };\n}\nfunction walkUpFrom(node, level) {\n var _a;\n let drop = node;\n while (drop.parent && drop.level > level) {\n drop = drop.parent;\n }\n const parentId = ((_a = drop.parent) === null || _a === void 0 ? void 0 : _a.id) || null;\n const index = indexOf(drop) + 1;\n return { parentId, index };\n}\n/**\n * This is the most complex, tricky function in the whole repo.\n */\nexport function computeDrop(args) {\n var _a;\n const hover = measureHover(args.element, args.offset);\n const indent = args.indent;\n const hoverLevel = Math.round(Math.max(0, hover.x - indent) / indent);\n const { node, nextNode, prevNode } = args;\n const [above, below] = getNodesAroundCursor(node, prevNode, nextNode, hover);\n /* Hovering over the middle of a folder */\n if (node && node.isInternal && hover.inMiddle) {\n return {\n drop: dropAt(node.id, null),\n cursor: highlightCursor(node.id),\n };\n }\n /*\n * Now we only need to care about the node above the cursor\n * ----------- -------\n */\n /* There is no node above the cursor line */\n if (!above) {\n return {\n drop: dropAt((_a = below === null || below === void 0 ? void 0 : below.parent) === null || _a === void 0 ? void 0 : _a.id, 0),\n cursor: lineCursor(0, 0),\n };\n }\n /* The node above the cursor line is an item */\n if (isItem(above)) {\n const level = bound(hoverLevel, (below === null || below === void 0 ? void 0 : below.level) || 0, above.level);\n return {\n drop: walkUpFrom(above, level),\n cursor: lineCursor(above.rowIndex + 1, level),\n };\n }\n /* The node above the cursor line is a closed folder */\n if (isClosed(above)) {\n const level = bound(hoverLevel, (below === null || below === void 0 ? void 0 : below.level) || 0, above.level);\n return {\n drop: walkUpFrom(above, level),\n cursor: lineCursor(above.rowIndex + 1, level),\n };\n }\n /* The node above the cursor line is an open folder with no children */\n if (isOpenWithEmptyChildren(above)) {\n const level = bound(hoverLevel, 0, above.level + 1);\n if (level > above.level) {\n /* Will be the first child of the empty folder */\n return {\n drop: dropAt(above.id, 0),\n cursor: lineCursor(above.rowIndex + 1, level),\n };\n }\n else {\n /* Will be a sibling or grandsibling of the empty folder */\n return {\n drop: walkUpFrom(above, level),\n cursor: lineCursor(above.rowIndex + 1, level),\n };\n }\n }\n /* The node above the cursor is a an open folder with children */\n return {\n drop: dropAt(above === null || above === void 0 ? void 0 : above.id, 0),\n cursor: lineCursor(above.rowIndex + 1, above.level + 1),\n };\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { useDataUpdates, useNodesContext, useTreeApi } from \"../context\";\nimport { useDragHook } from \"../dnd/drag-hook\";\nimport { useDropHook } from \"../dnd/drop-hook\";\nimport { useFreshNode } from \"../hooks/use-fresh-node\";\nexport const RowContainer = React.memo(function RowContainer({ index, style, }) {\n /* When will the <Row> will re-render.\n *\n * The row component is memo'd so it will only render\n * when a new instance of the NodeApi class is passed\n * to it.\n *\n * The TreeApi instance is stable. It does not\n * change when the internal state changes.\n *\n * The TreeApi has all the references to the nodes.\n * We need to clone the nodes when their state\n * changes. The node class contains no state itself,\n * It always checks the tree for state. The tree's\n * state will always be up to date.\n */\n useDataUpdates(); // Re-render when tree props or visability changes\n const _ = useNodesContext(); // So that we re-render appropriately\n const tree = useTreeApi(); // Tree already has the fresh state\n const node = useFreshNode(index);\n const el = useRef(null);\n const dragRef = useDragHook(node);\n const dropRef = useDropHook(el, node);\n const innerRef = useCallback((n) => {\n el.current = n;\n dropRef(n);\n }, [dropRef]);\n const indent = tree.indent * node.level;\n const nodeStyle = useMemo(() => ({ paddingLeft: indent }), [indent]);\n const rowStyle = useMemo(() => {\n var _a, _b;\n return (Object.assign(Object.assign({}, style), { top: parseFloat(style.top) +\n ((_b = (_a = tree.props.padding) !== null && _a !== void 0 ? _a : tree.props.paddingTop) !== null && _b !== void 0 ? _b : 0) }));\n }, [style, tree.props.padding, tree.props.paddingTop]);\n const rowAttrs = {\n role: \"treeitem\",\n \"aria-level\": node.level + 1,\n \"aria-selected\": node.isSelected,\n style: rowStyle,\n tabIndex: -1,\n className: tree.props.rowClassName,\n };\n useEffect(() => {\n var _a;\n if (!node.isEditing && node.isFocused) {\n (_a = el.current) === null || _a === void 0 ? void 0 : _a.focus({ preventScroll: true });\n }\n }, [node.isEditing, node.isFocused, el.current]);\n const Node = tree.renderNode;\n const Row = tree.renderRow;\n return (_jsx(Row, { node: node, innerRef: innerRef, attrs: rowAttrs, children: _jsx(Node, { node: node, tree: tree, style: nodeStyle, dragHandle: dragRef }) }));\n});\n","import { useMemo } from \"react\";\nimport { useTreeApi } from \"../context\";\nexport function useFreshNode(index) {\n const tree = useTreeApi();\n const original = tree.at(index);\n if (!original)\n throw new Error(`Could not find node for index: ${index}`);\n return useMemo(() => {\n const fresh = original.clone();\n tree.visibleNodes[index] = fresh; // sneaky\n return fresh;\n // Return a fresh instance if the state values change\n }, [...Object.values(original.state), original]);\n}\n","import { useDrop } from \"react-dnd\";\nimport { useTreeApi } from \"../context\";\nimport { computeDrop } from \"./compute-drop\";\nimport { actions as dnd } from \"../state/dnd-slice\";\nexport function useDropHook(el, node) {\n const tree = useTreeApi();\n const [_, dropRef] = useDrop(() => ({\n accept: \"NODE\",\n canDrop: () => tree.canDrop(),\n hover: (_item, m) => {\n const offset = m.getClientOffset();\n if (!el.current || !offset)\n return;\n const { cursor, drop } = computeDrop({\n element: el.current,\n offset: offset,\n indent: tree.indent,\n node: node,\n prevNode: node.prev,\n nextNode: node.next,\n });\n if (drop)\n tree.dispatch(dnd.hovering(drop.parentId, drop.index));\n if (m.canDrop()) {\n if (cursor)\n tree.showCursor(cursor);\n }\n else {\n tree.hideCursor();\n }\n },\n drop: (_, m) => {\n if (!m.canDrop())\n return null;\n },\n }), [node, el.current, tree.props]);\n return dropRef;\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { FixedSizeList } from \"react-window\";\nimport { useDataUpdates, useTreeApi } from \"../context\";\nimport { focusNextElement, focusPrevElement } from \"../utils\";\nimport { ListOuterElement } from \"./list-outer-element\";\nimport { ListInnerElement } from \"./list-inner-element\";\nimport { RowContainer } from \"./row-container\";\nlet focusSearchTerm = \"\";\nlet timeoutId = null;\n/**\n * All these keyboard shortcuts seem like they should be configurable.\n * Each operation should be a given a name and separated from\n * the event handler. Future clean up welcome.\n */\nexport function DefaultContainer() {\n useDataUpdates();\n const tree = useTreeApi();\n return (_jsx(\"div\", { role: \"tree\", style: {\n height: tree.height,\n width: tree.width,\n minHeight: 0,\n minWidth: 0,\n }, onContextMenu: tree.props.onContextMenu, onClick: tree.props.onClick, tabIndex: 0, onFocus: (e) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n tree.onFocus();\n }\n }, onBlur: (e) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n tree.onBlur();\n }\n }, onKeyDown: (e) => {\n var _a;\n if (tree.isEditing) {\n return;\n }\n if (e.key === \"Backspace\") {\n if (!tree.props.onDelete)\n return;\n const ids = Array.from(tree.selectedIds);\n if (ids.length > 1) {\n let nextFocus = tree.mostRecentNode;\n while (nextFocus && nextFocus.isSelected) {\n nextFocus = nextFocus.nextSibling;\n }\n if (!nextFocus)\n nextFocus = tree.lastNode;\n tree.focus(nextFocus, { scroll: false });\n tree.delete(Array.from(ids));\n }\n else {\n const node = tree.focusedNode;\n if (node) {\n const sib = node.nextSibling;\n const parent = node.parent;\n tree.focus(sib || parent, { scroll: false });\n tree.delete(node);\n }\n }\n return;\n }\n if (e.key === \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n focusNextElement(e.currentTarget);\n return;\n }\n if (e.key === \"Tab\" && e.shiftKey) {\n e.preventDefault();\n focusPrevElement(e.currentTarget);\n return;\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const next = tree.nextNode;\n if (e.metaKey) {\n tree.select(tree.focusedNode);\n tree.activate(tree.focusedNode);\n return;\n }\n else if (!e.shiftKey || tree.props.disableMultiSelection) {\n tree.focus(next);\n return;\n }\n else {\n if (!next)\n return;\n const current = tree.focusedNode;\n if (!current) {\n tree.focus(tree.firstNode);\n }\n else if (current.isSelected) {\n tree.selectContiguous(next);\n }\n else {\n tree.selectMulti(next);\n }\n return;\n }\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prev = tree.prevNode;\n if (!e.shiftKey || tree.props.disableMultiSelection) {\n tree.focus(prev);\n return;\n }\n else {\n if (!prev)\n return;\n const current = tree.focusedNode;\n if (!current) {\n tree.focus(tree.lastNode); // ?\n }\n else if (current.isSelected) {\n tree.selectContiguous(prev);\n }\n else {\n tree.selectMulti(prev);\n }\n return;\n }\n }\n if (e.key === \"ArrowRight\") {\n const node = tree.focusedNode;\n if (!node)\n return;\n if (node.isInternal && node.isOpen) {\n tree.focus(tree.nextNode);\n }\n else if (node.isInternal)\n tree.open(node.id);\n return;\n }\n if (e.key === \"ArrowLeft\") {\n const node = tree.focusedNode;\n if (!node || node.isRoot)\n return;\n if (node.isInternal && node.isOpen)\n tree.close(node.id);\n else if (!((_a = node.parent) === null || _a === void 0 ? void 0 : _a.isRoot)) {\n tree.focus(node.parent);\n }\n return;\n }\n if (e.key === \"a\" && e.metaKey && !tree.props.disableMultiSelection) {\n e.preventDefault();\n tree.selectAll();\n return;\n }\n if (e.key === \"a\" && !e.metaKey && tree.props.onCreate) {\n tree.createLeaf();\n return;\n }\n if (e.key === \"A\" && !e.metaKey) {\n if (!tree.props.onCreate)\n return;\n tree.createInternal();\n return;\n }\n if (e.key === \"Home\") {\n // add shift keys\n e.preventDefault();\n tree.focus(tree.firstNode);\n return;\n }\n if (e.key === \"End\") {\n // add shift keys\n e.preventDefault();\n tree.focus(tree.lastNode);\n return;\n }\n if (e.key === \"Enter\") {\n const node = tree.focusedNode;\n if (!node)\n return;\n if (!node.isEditable || !tree.props.onRename)\n return;\n setTimeout(() => {\n if (node)\n tree.edit(node);\n });\n return;\n }\n if (e.key === \" \") {\n e.preventDefault();\n const node = tree.focusedNode;\n if (!node)\n return;\n if (node.isLeaf) {\n node.select();\n node.activate();\n }\n else {\n node.toggle();\n }\n return;\n }\n if (e.key === \"*\") {\n const node = tree.focusedNode;\n if (!node)\n return;\n tree.openSiblings(node);\n return;\n }\n if (e.key === \"PageUp\") {\n e.preventDefault();\n tree.pageUp();\n return;\n }\n if (e.key === \"PageDown\") {\n e.preventDefault();\n tree.pageDown();\n }\n // If they type a sequence of characters\n // collect them. Reset them after a timeout.\n // Use it to search the tree for a node, then focus it.\n // Clean this up a bit later\n clearTimeout(timeoutId);\n focusSearchTerm += e.key;\n timeoutId = setTimeout(() => {\n focusSearchTerm = \"\";\n }, 600);\n const node = tree.visibleNodes.find((n) => {\n // @ts-ignore\n const name = n.data.name;\n if (typeof name === \"string\") {\n return name.toLowerCase().startsWith(focusSearchTerm);\n }\n else\n return false;\n });\n if (node)\n tree.focus(node.id);\n }, children: _jsx(FixedSizeList, { className: tree.props.className, outerRef: tree.listEl, itemCount: tree.visibleNodes.length, height: tree.height, width: tree.width, itemSize: tree.rowHeight, overscanCount: tree.overscanCount, itemKey: (index) => { var _a; return ((_a = tree.visibleNodes[index]) === null || _a === void 0 ? void 0 : _a.id) || index; }, outerElementType: ListOuterElement, innerElementType: ListInnerElement, onScroll: tree.props.onScroll, onItemsRendered: tree.onItemsRendered.bind(tree), ref: tree.list, children: RowContainer }) }));\n}\n","export function createList(tree) {\n if (tree.isFiltered) {\n return flattenAndFilterTree(tree.root, tree.isMatch.bind(tree));\n }\n else {\n return flattenTree(tree.root);\n }\n}\nfunction flattenTree(root) {\n const list = [];\n function collect(node) {\n var _a;\n if (node.level >= 0) {\n list.push(node);\n }\n if (node.isOpen) {\n (_a = node.children) === null || _a === void 0 ? void 0 : _a.forEach(collect);\n }\n }\n collect(root);\n list.forEach(assignRowIndex);\n return list;\n}\nfunction flattenAndFilterTree(root, isMatch) {\n const matches = {};\n const list = [];\n function markMatch(node) {\n const yes = !node.isRoot && isMatch(node);\n if (yes) {\n matches[node.id] = true;\n let parent = node.parent;\n while (parent) {\n matches[parent.id] = true;\n parent = parent.parent;\n }\n }\n if (node.children) {\n for (let child of node.children)\n markMatch(child);\n }\n }\n function collect(node) {\n var _a;\n if (node.level >= 0 && matches[node.id]) {\n list.push(node);\n }\n if (node.isOpen) {\n (_a = node.children) === null || _a === void 0 ? void 0 : _a.forEach(collect);\n }\n }\n markMatch(root);\n collect(root);\n list.forEach(assignRowIndex);\n return list;\n}\nfunction assignRowIndex(node, index) {\n node.rowIndex = index;\n}\n","export const createIndex = (nodes) => {\n return nodes.reduce((map, node, index) => {\n map[node.id] = index;\n return map;\n }, {});\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as utils from \"../utils\";\nimport { DefaultCursor } from \"../components/default-cursor\";\nimport { DefaultRow } from \"../components/default-row\";\nimport { DefaultNode } from \"../components/default-node\";\nimport { edit } from \"../state/edit-slice\";\nimport { focus, treeBlur } from \"../state/focus-slice\";\nimport { createRoot, ROOT_ID } from \"../data/create-root\";\nimport { actions as visibility } from \"../state/open-slice\";\nimport { actions as selection } from \"../state/selection-slice\";\nimport { actions as dnd } from \"../state/dnd-slice\";\nimport { DefaultDragPreview } from \"../components/default-drag-preview\";\nimport { DefaultContainer } from \"../components/default-container\";\nimport { createList } from \"../data/create-list\";\nimport { createIndex } from \"../data/create-index\";\nconst { safeRun, identify, identifyNull } = utils;\nexport class TreeApi {\n constructor(store, props, list, listEl) {\n this.store = store;\n this.props = props;\n this.list = list;\n this.listEl = listEl;\n this.visibleStartIndex = 0;\n this.visibleStopIndex = 0;\n /* Changes here must also be made in update() */\n this.root = createRoot(this);\n this.visibleNodes = createList(this);\n this.idToIndex = createIndex(this.visibleNodes);\n }\n /* Changes here must also be made in constructor() */\n update(props) {\n this.props = props;\n this.root = createRoot(this);\n this.visibleNodes = createList(this);\n this.idToIndex = createIndex(this.visibleNodes);\n }\n /* Store helpers */\n dispatch(action) {\n return this.store.dispatch(action);\n }\n get state() {\n return this.store.getState();\n }\n get openState() {\n return this.state.nodes.open.unfiltered;\n }\n /* Tree Props */\n get width() {\n var _a;\n return (_a = this.props.width) !== null && _a !== void 0 ? _a : 300;\n }\n get height() {\n var _a;\n return (_a = this.props.height) !== null && _a !== void 0 ? _a : 500;\n }\n get indent() {\n var _a;\n return (_a = this.props.indent) !== null && _a !== void 0 ? _a : 24;\n }\n get rowHeight() {\n var _a;\n return (_a = this.props.rowHeight) !== null && _a !== void 0 ? _a : 24;\n }\n get overscanCount() {\n var _a;\n return (_a = this.props.overscanCount) !== null && _a !== void 0 ? _a : 1;\n }\n get searchTerm() {\n return (this.props.searchTerm || \"\").trim();\n }\n get matchFn() {\n var _a;\n const match = (_a = this.props.searchMatch) !== null && _a !== void 0 ? _a : ((node, term) => {\n const string = JSON.stringify(Object.values(node.data));\n return string.toLocaleLowerCase().includes(term.toLocaleLowerCase());\n });\n return (node) => match(node, this.searchTerm);\n }\n accessChildren(data) {\n var _a;\n const get = this.props.childrenAccessor || \"children\";\n return (_a = utils.access(data, get)) !== null && _a !== void 0 ? _a : null;\n }\n accessId(data) {\n const get = this.props.idAccessor || \"id\";\n const id = utils.access(data, get);\n if (!id)\n throw new Error(\"Data must contain an 'id' property or props.idAccessor must return a string\");\n return id;\n }\n /* Node Access */\n get firstNode() {\n var _a;\n return (_a = this.visibleNodes[0]) !== null && _a !== void 0 ? _a : null;\n }\n get lastNode() {\n var _a;\n return (_a = this.visibleNodes[this.visibleNodes.length - 1]) !== null && _a !== void 0 ? _a : null;\n }\n get focusedNode() {\n var _a;\n return (_a = this.get(this.state.nodes.focus.id)) !== null && _a !== void 0 ? _a : null;\n }\n get mostRecentNode() {\n var _a;\n return (_a = this.get(this.state.nodes.selection.mostRecent)) !== null && _a !== void 0 ? _a : null;\n }\n get nextNode() {\n const index = this.indexOf(this.focusedNode);\n if (index === null)\n return null;\n else\n return this.at(index + 1);\n }\n get prevNode() {\n const index = this.indexOf(this.focusedNode);\n if (index === null)\n return null;\n else\n return this.at(index - 1);\n }\n get(id) {\n if (!id)\n return null;\n if (id in this.idToIndex)\n return this.visibleNodes[this.idToIndex[id]] || null;\n else\n return null;\n }\n at(index) {\n return this.visibleNodes[index] || null;\n }\n nodesBetween(startId, endId) {\n var _a;\n if (startId === null || endId === null)\n return [];\n const index1 = (_a = this.indexOf(startId)) !== null && _a !== void 0 ? _a : 0;\n const index2 = this.indexOf(endId);\n if (index2 === null)\n return [];\n const start = Math.min(index1, index2);\n const end = Math.max(index1, index2);\n return this.visibleNodes.slice(start, end + 1);\n }\n indexOf(id) {\n const key = utils.identifyNull(id);\n if (!key)\n return null;\n return this.idToIndex[key];\n }\n /* Data Operations */\n get editingId() {\n return this.state.nodes.edit.id;\n }\n createInternal() {\n return this.create({ type: \"internal\" });\n }\n createLeaf() {\n return this.create({ type: \"leaf\" });\n }\n create(opts = {}) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n const parentId = opts.parentId === undefined\n ? utils.getInsertParentId(this)\n : opts.parentId;\n const index = (_a = opts.index) !== null && _a !== void 0 ? _a : utils.getInsertIndex(this);\n const type = (_b = opts.type) !== null && _b !== void 0 ? _b : \"leaf\";\n const data = yield safeRun(this.props.onCreate, {\n type,\n parentId,\n index,\n parentNode: this.get(parentId),\n });\n if (data) {\n this.focus(data);\n setTimeout(() => {\n this.edit(data).then(() => {\n this.select(data);\n this.activate(data);\n });\n });\n }\n });\n }\n delete(node) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!node)\n return;\n const idents = Array.isArray(node) ? node : [node];\n const ids = idents.map(identify);\n const nodes = ids.map((id) => this.get(id)).filter((n) => !!n);\n yield safeRun(this.props.onDelete, { nodes, ids });\n });\n }\n edit(node) {\n const id = identify(node);\n this.resolveEdit({ cancelled: true });\n this.scrollTo(id);\n this.dispatch(edit(id));\n return new Promise((resolve) => {\n TreeApi.editPromise = resolve;\n });\n }\n submit(identity, value) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!identity)\n return;\n const id = identify(identity);\n yield safeRun(this.props.onRename, {\n id,\n name: value,\n node: this.get(id),\n });\n this.dispatch(edit(null));\n this.resolveEdit({ cancelled: false, value });\n setTimeout(() => this.onFocus()); // Return focus to element;\n });\n }\n reset() {\n this.dispatch(edit(null));\n this.resolveEdit({ cancelled: true });\n setTimeout(() => this.onFocus()); // Return focus to element;\n }\n activate(id) {\n const node = this.get(identifyNull(id));\n if (!node)\n return;\n safeRun(this.props.onActivate, node);\n }\n resolveEdit(value) {\n const resolve = TreeApi.editPromise;\n if (resolve)\n resolve(value);\n TreeApi.editPromise = null;\n }\n /* Focus and Selection */\n get selectedIds() {\n return this.state.nodes.selection.ids;\n }\n get selectedNodes() {\n let nodes = [];\n for (let id of Array.from(this.selectedIds)) {\n const node = this.get(id);\n if (node)\n nodes.push(node);\n }\n return nodes;\n }\n focus(node, opts = {}) {\n if (!node)\n return;\n /* Focus is responsible for scrolling, while selection is\n * responsible for focus. If selectionFollowsFocus, then\n * just select it. */\n if (this.props.selectionFollowsFocus) {\n this.select(node);\n }\n else {\n this.dispatch(focus(identify(node)));\n if (opts.scroll !== false)\n this.scrollTo(node);\n if (this.focusedNode)\n safeRun(this.props.onFocus, this.focusedNode);\n }\n }\n pageUp() {\n var _a, _b;\n const start = this.visibleStartIndex;\n const stop = this.visibleStopIndex;\n const page = stop - start;\n let index = (_b = (_a = this.focusedNode) === null || _a === void 0 ? void 0 : _a.rowIndex) !== null && _b !== void 0 ? _b : 0;\n if (index > start) {\n index = start;\n }\n else {\n index = Math.max(start - page, 0);\n }\n this.focus(this.at(index));\n }\n pageDown() {\n var _a, _b;\n const start = this.visibleStartIndex;\n const stop = this.visibleStopIndex;\n const page = stop - start;\n let index = (_b = (_a = this.focusedNode) === null || _a === void 0 ? void 0 : _a.rowIndex) !== null && _b !== void 0 ? _b : 0;\n if (index < stop) {\n index = stop;\n }\n else {\n index = Math.min(index + page, this.visibleNodes.length - 1);\n }\n this.focus(this.at(index));\n }\n select(node, opts = {}) {\n if (!node)\n return;\n const changeFocus = opts.focus !== false;\n const id = identify(node);\n if (changeFocus)\n this.dispatch(focus(id));\n this.dispatch(selection.only(id));\n this.dispatch(selection.anchor(id));\n this.dispatch(selection.mostRecent(id));\n this.scrollTo(id, opts.align);\n if (this.focusedNode && changeFocus) {\n safeRun(this.props.onFocus, this.focusedNode);\n }\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n deselect(node) {\n if (!node)\n return;\n const id = identify(node);\n this.dispatch(selection.remove(id));\n }\n selectMulti(identity) {\n const node = this.get(identifyNull(identity));\n if (!node)\n return;\n this.dispatch(focus(node.id));\n this.dispatch(selection.add(node.id));\n this.dispatch(selection.anchor(node.id));\n this.dispatch(selection.mostRecent(node.id));\n this.scrollTo(node);\n if (this.focusedNode)\n safeRun(this.props.onFocus, this.focusedNode);\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n selectContiguous(identity) {\n if (!identity)\n return;\n const id = identify(identity);\n const { anchor, mostRecent } = this.state.nodes.selection;\n this.dispatch(focus(id));\n this.dispatch(selection.remove(this.nodesBetween(anchor, mostRecent)));\n this.dispatch(selection.add(this.nodesBetween(anchor, identifyNull(id))));\n this.dispatch(selection.mostRecent(id));\n this.scrollTo(id);\n if (this.focusedNode)\n safeRun(this.props.onFocus, this.focusedNode);\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n deselectAll() {\n this.setSelection({ ids: [], anchor: null, mostRecent: null });\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n selectAll() {\n var _a;\n this.setSelection({\n ids: Object.keys(this.idToIndex),\n anchor: this.firstNode,\n mostRecent: this.lastNode,\n });\n this.dispatch(focus((_a = this.lastNode) === null || _a === void 0 ? void 0 : _a.id));\n if (this.focusedNode)\n safeRun(this.props.onFocus, this.focusedNode);\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n setSelection(args) {\n var _a;\n const ids = new Set((_a = args.ids) === null || _a === void 0 ? void 0 : _a.map(identify));\n const anchor = identifyNull(args.anchor);\n const mostRecent = identifyNull(args.mostRecent);\n this.dispatch(selection.set({ ids, anchor, mostRecent }));\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n /* Drag and Drop */\n get cursorParentId() {\n const { cursor } = this.state.dnd;\n switch (cursor.type) {\n case \"highlight\":\n return cursor.id;\n default:\n return null;\n }\n }\n get cursorOverFolder() {\n return this.state.dnd.cursor.type === \"highlight\";\n }\n get dragNodes() {\n return this.state.dnd.dragIds\n .map((id) => this.get(id))\n .filter((n) => !!n);\n }\n get dragNode() {\n return this.get(this.state.nodes.drag.id);\n }\n get dragDestinationParent() {\n return this.get(this.state.nodes.drag.destinationParentId);\n }\n get dragDestinationIndex() {\n return this.state.nodes.drag.destinationIndex;\n }\n canDrop() {\n var _a;\n if (this.isFiltered)\n return false;\n const parentNode = (_a = this.get(this.state.dnd.parentId)) !== null && _a !== void 0 ? _a : this.root;\n const dragNodes = this.dragNodes;\n const isDisabled = this.props.disableDrop;\n for (const drag of dragNodes) {\n if (!drag)\n return false;\n if (!parentNode)\n return false;\n if (drag.isInternal && utils.isDescendant(parentNode, drag))\n return false;\n }\n // Allow the user to insert their own logic\n if (typeof isDisabled == \"function\") {\n return !isDisabled({\n parentNode,\n dragNodes: this.dragNodes,\n index: this.state.dnd.index || 0,\n });\n }\n else if (typeof isDisabled == \"string\") {\n // @ts-ignore\n return !parentNode.data[isDisabled];\n }\n else if (typeof isDisabled === \"boolean\") {\n return !isDisabled;\n }\n else {\n return true;\n }\n }\n hideCursor() {\n this.dispatch(dnd.cursor({ type: \"none\" }));\n }\n showCursor(cursor) {\n this.dispatch(dnd.cursor(cursor));\n }\n /* Visibility */\n open(identity) {\n const id = identifyNull(identity);\n if (!id)\n return;\n if (this.isOpen(id))\n return;\n this.dispatch(visibility.open(id, this.isFiltered));\n safeRun(this.props.onToggle, id);\n }\n close(identity) {\n const id = identifyNull(identity);\n if (!id)\n return;\n if (!this.isOpen(id))\n return;\n this.dispatch(visibility.close(id, this.isFiltered));\n safeRun(this.props.onToggle, id);\n }\n toggle(identity) {\n const id = identifyNull(identity);\n if (!id)\n return;\n return this.isOpen(id) ? this.close(id) : this.open(id);\n }\n openParents(identity) {\n const id = identifyNull(identity);\n if (!id)\n return;\n const node = utils.dfs(this.root, id);\n let parent = node === null || node === void 0 ? void 0 : node.parent;\n while (parent) {\n this.open(parent.id);\n parent = parent.parent;\n }\n }\n openSiblings(node) {\n const parent = node.parent;\n if (!parent) {\n this.toggle(node.id);\n }\n else if (parent.children) {\n const isOpen = node.isOpen;\n for (let sibling of parent.children) {\n if (sibling.isInternal) {\n isOpen ? this.close(sibling.id) : this.open(sibling.id);\n }\n }\n this.scrollTo(this.focusedNode);\n }\n }\n openAll() {\n utils.walk(this.root, (node) => {\n if (node.isInternal)\n node.open();\n });\n }\n closeAll() {\n utils.walk(this.root, (node) => {\n if (node.isInternal)\n node.close();\n });\n }\n /* Scrolling */\n scrollTo(identity, align = \"smart\") {\n if (!identity)\n return;\n const id = identify(identity);\n this.openParents(id);\n return utils\n .waitFor(() => id in this.idToIndex)\n .then(() => {\n var _a;\n const index = this.idToIndex[id];\n if (index === undefined)\n return;\n (_a = this.list.current) === null || _a === void 0 ? void 0 : _a.scrollToItem(index, align);\n })\n .catch(() => {\n // Id: ${id} never appeared in the list.\n });\n }\n /* State Checks */\n get isEditing() {\n return this.state.nodes.edit.id !== null;\n }\n get isFiltered() {\n var _a;\n return !!((_a = this.props.searchTerm) === null || _a === void 0 ? void 0 : _a.trim());\n }\n get hasFocus() {\n return this.state.nodes.focus.treeFocused;\n }\n get hasNoSelection() {\n return this.state.nodes.selection.ids.size === 0;\n }\n get hasOneSelection() {\n return this.state.nodes.selection.ids.size === 1;\n }\n get hasMultipleSelections() {\n return this.state.nodes.selection.ids.size > 1;\n }\n isSelected(id) {\n if (!id)\n return false;\n return this.state.nodes.selection.ids.has(id);\n }\n isOpen(id) {\n var _a, _b, _c;\n if (!id)\n return false;\n if (id === ROOT_ID)\n return true;\n const def = (_a = this.props.openByDefault) !== null && _a !== void 0 ? _a : true;\n if (this.isFiltered) {\n return (_b = this.state.nodes.open.filtered[id]) !== null && _b !== void 0 ? _b : true; // Filtered folders are always opened by default\n }\n else {\n return (_c = this.state.nodes.open.unfiltered[id]) !== null && _c !== void 0 ? _c : def;\n }\n }\n isEditable(data) {\n var _a;\n const check = this.props.disableEdit || (() => false);\n return (_a = !utils.access(data, check)) !== null && _a !== void 0 ? _a : true;\n }\n isDraggable(data) {\n var _a;\n const check = this.props.disableDrag || (() => false);\n return (_a = !utils.access(data, check)) !== null && _a !== void 0 ? _a : true;\n }\n isDragging(node) {\n const id = identifyNull(node);\n if (!id)\n return false;\n return this.state.nodes.drag.id === id;\n }\n isFocused(id) {\n return this.hasFocus && this.state.nodes.focus.id === id;\n }\n isMatch(node) {\n return this.matchFn(node);\n }\n willReceiveDrop(node) {\n const id = identifyNull(node);\n if (!id)\n return false;\n const { destinationParentId, destinationIndex } = this.state.nodes.drag;\n return id === destinationParentId && destinationIndex === null;\n }\n /* Tree Event Handlers */\n onFocus() {\n const node = this.focusedNode || this.firstNode;\n if (node)\n this.dispatch(focus(node.id));\n }\n onBlur() {\n this.dispatch(treeBlur());\n }\n onItemsRendered(args) {\n this.visibleStartIndex = args.visibleStartIndex;\n this.visibleStopIndex = args.visibleStopIndex;\n }\n /* Get Renderers */\n get renderContainer() {\n return this.props.renderContainer || DefaultContainer;\n }\n get renderRow() {\n return this.props.renderRow || DefaultRow;\n }\n get renderNode() {\n return this.props.children || DefaultNode;\n }\n get renderDragPreview() {\n return this.props.renderDragPreview || DefaultDragPreview;\n }\n get renderCursor() {\n return this.props.renderCursor || DefaultCursor;\n }\n}\n","/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nexport function formatProdErrorMessage(code: number) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or ` + 'use the non-minified dev environment for full errors. ';\n}","declare global {\n interface SymbolConstructor {\n readonly observable: symbol;\n }\n}\nconst $$observable = /* #__PURE__ */(() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\nexport default $$observable;","/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\n\nconst randomString = () => Math.random().toString(36).substring(7).split('').join('.');\nconst ActionTypes = {\n INIT: `@@redux/INIT${/* #__PURE__ */randomString()}`,\n REPLACE: `@@redux/REPLACE${/* #__PURE__ */randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nexport default ActionTypes;","/**\n * @param obj The object to inspect.\n * @returns True if the argument appears to be a plain object.\n */\nexport default function isPlainObject(obj: any): obj is object {\n if (typeof obj !== 'object' || obj === null) return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}","import { formatProdErrorMessage as _formatProdErrorMessage13 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage12 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage11 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage10 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage9 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage8 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage7 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage6 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage5 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage4 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport $$observable from './utils/symbol-observable';\nimport { Store, StoreEnhancer, Dispatch, Observer, ListenerCallback, UnknownIfNonSpecific } from './types/store';\nimport { Action } from './types/actions';\nimport { Reducer } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport { kindOf } from './utils/kindOf';\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\nexport function createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | StoreEnhancer<Ext, StateExt> | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext {\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = (preloadedState as StoreEnhancer<Ext, StateExt>);\n preloadedState = undefined;\n }\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, (preloadedState as PreloadedState | undefined));\n }\n let currentReducer = reducer;\n let currentState: S | PreloadedState | undefined = (preloadedState as PreloadedState | undefined);\n let currentListeners: Map<number, ListenerCallback> | null = new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns The current state tree of your application.\n */\n function getState(): S {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage4(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n return (currentState as S);\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param listener A callback to be invoked on every dispatch.\n * @returns A function to remove this change listener.\n */\n function subscribe(listener: () => void) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage5(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage6(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage7(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action: A) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage8(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage9(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== 'string') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage10(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage11(9) : 'Reducers may not dispatch actions.');\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach(listener => {\n listener();\n });\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param nextReducer The reducer for the store to use instead.\n */\n function replaceReducer(nextReducer: Reducer<S, A>): void {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage12(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = ((nextReducer as unknown) as Reducer<S, A, PreloadedState>);\n\n // This action has a similar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n dispatch(({\n type: ActionTypes.REPLACE\n } as A));\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer: unknown) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage13(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = (observer as Observer<S>);\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [$$observable]() {\n return this;\n }\n };\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch(({\n type: ActionTypes.INIT\n } as A));\n const store = (({\n dispatch: (dispatch as Dispatch<A>),\n subscribe,\n getState,\n replaceReducer,\n [$$observable]: observable\n } as unknown) as Store<S, A, StateExt> & Ext);\n return store;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}>(reducer: Reducer<S, A>, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A, PreloadedState>, preloadedState?: PreloadedState | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext;\nexport function legacy_createStore<S, A extends Action, Ext extends {} = {}, StateExt extends {} = {}, PreloadedState = S>(reducer: Reducer<S, A>, preloadedState?: PreloadedState | StoreEnhancer<Ext, StateExt> | undefined, enhancer?: StoreEnhancer<Ext, StateExt>): Store<S, A, UnknownIfNonSpecific<StateExt>> & Ext {\n return createStore(reducer, (preloadedState as any), enhancer);\n}","import { formatProdErrorMessage as _formatProdErrorMessage3 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage2 } from \"src/utils/formatProdErrorMessage\";\nimport { formatProdErrorMessage as _formatProdErrorMessage } from \"src/utils/formatProdErrorMessage\";\nimport { Action } from './types/actions';\nimport { ActionFromReducersMapObject, PreloadedStateShapeFromReducersMapObject, Reducer, StateFromReducersMapObject } from './types/reducers';\nimport ActionTypes from './utils/actionTypes';\nimport isPlainObject from './utils/isPlainObject';\nimport warning from './utils/warning';\nimport { kindOf } from './utils/kindOf';\nfunction getUnexpectedStateShapeWarningMessage(inputState: object, reducers: {\n [key: string]: Reducer<any, any, any>;\n}, action: Action, unexpectedKeyCache: {\n [key: string]: true;\n}) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following ` + `keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter(key => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach(key => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? 'keys' : 'key'} ` + `\"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. ` + `Expected to find one of the known reducer keys instead: ` + `\"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers: {\n [key: string]: Reducer<any, any, any>;\n}) {\n Object.keys(reducers).forEach(key => {\n const reducer = reducers[key];\n const initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. ` + `If the state passed to the reducer is undefined, you must ` + `explicitly return the initial state. The initial state may ` + `not be undefined. If you don't want to set a value for this reducer, ` + `you can use null instead of undefined.`);\n }\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage2(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. ` + `Don't try to handle '${ActionTypes.INIT}' or other actions in \"redux/*\" ` + `namespace. They are considered private. Instead, you must return the ` + `current state for any unknown actions, unless it is undefined, ` + `in which case you must return the initial state, regardless of the ` + `action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @template S Combined state object type.\n *\n * @param reducers An object whose values correspond to different reducer\n * functions that need to be combined into one. One handy way to obtain it\n * is to use `import * as reducers` syntax. The reducers may never\n * return undefined for any action. Instead, they should return their\n * initial state if the state passed to them was undefined, and the current\n * state for any unrecognized action.\n *\n * @returns A reducer function that invokes every reducer inside the passed\n * object, and builds a state object with the same shape.\n */\nexport default function combineReducers<M>(reducers: M): M[keyof M] extends Reducer<any, any, any> | undefined ? Reducer<StateFromReducersMapObject<M>, ActionFromReducersMapObject<M>, Partial<PreloadedStateShapeFromReducersMapObject<M>>> : never;\nexport default function combineReducers(reducers: {\n [key: string]: Reducer<any, any, any>;\n}) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers: {\n [key: string]: Reducer<any, any, any>;\n } = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n\n // This is used to make sure we don't warn about the same\n // keys multiple times.\n let unexpectedKeyCache: {\n [key: string]: true;\n };\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError: unknown;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state: StateFromReducersMapObject<typeof reducers> = {}, action: Action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== 'production') {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState: StateFromReducersMapObject<typeof reducers> = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? _formatProdErrorMessage3(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : '(unknown type)'}, the slice reducer for key \"${key}\" returned undefined. ` + `To ignore an action, you must explicitly return the previous state. ` + `If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}","import { combineReducers } from \"redux\";\nimport { reducer as focus } from \"./focus-slice\";\nimport { reducer as edit } from \"./edit-slice\";\nimport { reducer as dnd } from \"./dnd-slice\";\nimport { reducer as selection } from \"./selection-slice\";\nimport { reducer as open } from \"./open-slice\";\nimport { reducer as drag } from \"./drag-slice\";\nexport const rootReducer = combineReducers({\n nodes: combineReducers({\n focus,\n edit,\n open,\n selection,\n drag,\n }),\n dnd,\n});\n","import { initialState } from \"./initial\";\n/* Reducer */\nexport function reducer(state = initialState().nodes.drag, action) {\n switch (action.type) {\n case \"DND_DRAG_START\":\n return Object.assign(Object.assign({}, state), { id: action.id, selectedIds: action.dragIds });\n case \"DND_DRAG_END\":\n return Object.assign(Object.assign({}, state), { id: null, destinationParentId: null, destinationIndex: null, selectedIds: [] });\n case \"DND_HOVERING\":\n if (action.parentId !== state.destinationParentId ||\n action.index != state.destinationIndex) {\n return Object.assign(Object.assign({}, state), { destinationParentId: action.parentId, destinationIndex: action.index });\n }\n else {\n return state;\n }\n default:\n return state;\n }\n}\n","// cheap lodash replacements\nexport function memoize(fn) {\n var result = null;\n\n var memoized = function memoized() {\n if (result == null) {\n result = fn();\n }\n\n return result;\n };\n\n return memoized;\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n return items.filter(function (i) {\n return i !== item;\n });\n}\nexport function union(itemsA, itemsB) {\n var set = new Set();\n\n var insertItem = function insertItem(item) {\n return set.add(item);\n };\n\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n var result = [];\n set.forEach(function (key) {\n return result.push(key);\n });\n return result;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { union, without } from './utils/js_utils';\nexport var EnterLeaveCounter = /*#__PURE__*/function () {\n function EnterLeaveCounter(isNodeInDocument) {\n _classCallCheck(this, EnterLeaveCounter);\n\n _defineProperty(this, \"entered\", []);\n\n _defineProperty(this, \"isNodeInDocument\", void 0);\n\n this.isNodeInDocument = isNodeInDocument;\n }\n\n _createClass(EnterLeaveCounter, [{\n key: \"enter\",\n value: function enter(enteringNode) {\n var _this = this;\n\n var previousLength = this.entered.length;\n\n var isNodeEntered = function isNodeEntered(node) {\n return _this.isNodeInDocument(node) && (!node.contains || node.contains(enteringNode));\n };\n\n this.entered = union(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n }\n }, {\n key: \"leave\",\n value: function leave(leavingNode) {\n var previousLength = this.entered.length;\n this.entered = without(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.entered = [];\n }\n }]);\n\n return EnterLeaveCounter;\n}();","import { memoize } from './utils/js_utils';\nexport var isFirefox = memoize(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexport var isSafari = memoize(function () {\n return Boolean(window.safari);\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var MonotonicInterpolant = /*#__PURE__*/function () {\n function MonotonicInterpolant(xs, ys) {\n _classCallCheck(this, MonotonicInterpolant);\n\n _defineProperty(this, \"xs\", void 0);\n\n _defineProperty(this, \"ys\", void 0);\n\n _defineProperty(this, \"c1s\", void 0);\n\n _defineProperty(this, \"c2s\", void 0);\n\n _defineProperty(this, \"c3s\", void 0);\n\n var length = xs.length; // Rearrange xs and ys so that xs is sorted\n\n var indexes = [];\n\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n\n indexes.sort(function (a, b) {\n return xs[a] < xs[b] ? -1 : 1;\n }); // Get consecutive differences and slopes\n\n var dys = [];\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n\n for (var _i = 0; _i < length - 1; _i++) {\n dx = xs[_i + 1] - xs[_i];\n dy = ys[_i + 1] - ys[_i];\n dxs.push(dx);\n dys.push(dy);\n ms.push(dy / dx);\n } // Get degree-1 coefficients\n\n\n var c1s = [ms[0]];\n\n for (var _i2 = 0; _i2 < dxs.length - 1; _i2++) {\n var m2 = ms[_i2];\n var mNext = ms[_i2 + 1];\n\n if (m2 * mNext <= 0) {\n c1s.push(0);\n } else {\n dx = dxs[_i2];\n var dxNext = dxs[_i2 + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n\n c1s.push(ms[ms.length - 1]); // Get degree-2 and degree-3 coefficients\n\n var c2s = [];\n var c3s = [];\n var m;\n\n for (var _i3 = 0; _i3 < c1s.length - 1; _i3++) {\n m = ms[_i3];\n var c1 = c1s[_i3];\n var invDx = 1 / dxs[_i3];\n\n var _common = c1 + c1s[_i3 + 1] - m - m;\n\n c2s.push((m - c1 - _common) * invDx);\n c3s.push(_common * invDx * invDx);\n }\n\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n\n _createClass(MonotonicInterpolant, [{\n key: \"interpolate\",\n value: function interpolate(x) {\n var xs = this.xs,\n ys = this.ys,\n c1s = this.c1s,\n c2s = this.c2s,\n c3s = this.c3s; // The rightmost point in the dataset should give an exact result\n\n var i = xs.length - 1;\n\n if (x === xs[i]) {\n return ys[i];\n } // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\n\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n\n if (xHere < x) {\n low = mid + 1;\n } else if (xHere > x) {\n high = mid - 1;\n } else {\n return ys[mid];\n }\n }\n\n i = Math.max(0, high); // Interpolate\n\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n }\n }]);\n\n return MonotonicInterpolant;\n}();","import { isSafari, isFirefox } from './BrowserDetector';\nimport { MonotonicInterpolant } from './MonotonicInterpolant';\nvar ELEMENT_NODE = 1;\nexport function getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n\n if (!el) {\n return null;\n }\n\n var _el$getBoundingClient = el.getBoundingClientRect(),\n top = _el$getBoundingClient.top,\n left = _el$getBoundingClient.left;\n\n return {\n x: left,\n y: top\n };\n}\nexport function getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY\n };\n}\n\nfunction isImageNode(node) {\n var _document$documentEle;\n\n return node.nodeName === 'IMG' && (isFirefox() || !((_document$documentEle = document.documentElement) !== null && _document$documentEle !== void 0 && _document$documentEle.contains(node)));\n}\n\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight; // Work around @2x coordinate discrepancies in browsers\n\n if (isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n\n return {\n dragPreviewWidth: dragPreviewWidth,\n dragPreviewHeight: dragPreviewHeight\n };\n}\n\nexport function getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y\n };\n var sourceWidth = sourceNode.offsetWidth,\n sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX,\n anchorY = anchorPoint.anchorY;\n\n var _getDragPreviewSize = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight),\n dragPreviewWidth = _getDragPreviewSize.dragPreviewWidth,\n dragPreviewHeight = _getDragPreviewSize.dragPreviewHeight;\n\n var calculateYOffset = function calculateYOffset() {\n var interpolantY = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the top\n offsetFromDragPreview.y, // Align at the center\n offsetFromDragPreview.y / sourceHeight * dragPreviewHeight, // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight]);\n var y = interpolantY.interpolate(anchorY); // Work around Safari 8 positioning bug\n\n if (isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n\n return y;\n };\n\n var calculateXOffset = function calculateXOffset() {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant([0, 0.5, 1], [// Dock to the left\n offsetFromDragPreview.x, // Align at the center\n offsetFromDragPreview.x / sourceWidth * dragPreviewWidth, // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth]);\n return interpolantX.interpolate(anchorX);\n }; // Force offsets if specified in the options.\n\n\n var offsetX = offsetPoint.offsetX,\n offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset()\n };\n}","export var FILE = '__NATIVE_FILE__';\nexport var URL = '__NATIVE_URL__';\nexport var TEXT = '__NATIVE_TEXT__';\nexport var HTML = '__NATIVE_HTML__';","var _nativeTypesConfig;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport * as NativeTypes from '../NativeTypes';\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer';\nexport var nativeTypesConfig = (_nativeTypesConfig = {}, _defineProperty(_nativeTypesConfig, NativeTypes.FILE, {\n exposeProperties: {\n files: function files(dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n items: function items(dataTransfer) {\n return dataTransfer.items;\n },\n dataTransfer: function dataTransfer(_dataTransfer) {\n return _dataTransfer;\n }\n },\n matchesTypes: ['Files']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.HTML, {\n exposeProperties: {\n html: function html(dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n },\n dataTransfer: function dataTransfer(_dataTransfer2) {\n return _dataTransfer2;\n }\n },\n matchesTypes: ['Html', 'text/html']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.URL, {\n exposeProperties: {\n urls: function urls(dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n },\n dataTransfer: function dataTransfer(_dataTransfer3) {\n return _dataTransfer3;\n }\n },\n matchesTypes: ['Url', 'text/uri-list']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.TEXT, {\n exposeProperties: {\n text: function text(dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n },\n dataTransfer: function dataTransfer(_dataTransfer4) {\n return _dataTransfer4;\n }\n },\n matchesTypes: ['Text', 'text/plain']\n}), _nativeTypesConfig);","export function getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) {\n return resultSoFar || dataTransfer.getData(typeToTry);\n }, '');\n return result != null ? result : defaultValue;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var NativeDragSource = /*#__PURE__*/function () {\n function NativeDragSource(config) {\n _classCallCheck(this, NativeDragSource);\n\n _defineProperty(this, \"item\", void 0);\n\n _defineProperty(this, \"config\", void 0);\n\n this.config = config;\n this.item = {};\n this.initializeExposedProperties();\n }\n\n _createClass(NativeDragSource, [{\n key: \"initializeExposedProperties\",\n value: function initializeExposedProperties() {\n var _this = this;\n\n Object.keys(this.config.exposeProperties).forEach(function (property) {\n Object.defineProperty(_this.item, property, {\n configurable: true,\n enumerable: true,\n get: function get() {\n // eslint-disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\".concat(property, \"\\\" until the drop event.\"));\n return null;\n }\n });\n });\n }\n }, {\n key: \"loadDataTransfer\",\n value: function loadDataTransfer(dataTransfer) {\n var _this2 = this;\n\n if (dataTransfer) {\n var newProperties = {};\n Object.keys(this.config.exposeProperties).forEach(function (property) {\n newProperties[property] = {\n value: _this2.config.exposeProperties[property](dataTransfer, _this2.config.matchesTypes),\n configurable: true,\n enumerable: true\n };\n });\n Object.defineProperties(this.item, newProperties);\n }\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n return true;\n }\n }, {\n key: \"beginDrag\",\n value: function beginDrag() {\n return this.item;\n }\n }, {\n key: \"isDragging\",\n value: function isDragging(monitor, handle) {\n return handle === monitor.getSourceId();\n }\n }, {\n key: \"endDrag\",\n value: function endDrag() {// empty\n }\n }]);\n\n return NativeDragSource;\n}();","import { nativeTypesConfig } from './nativeTypesConfig';\nimport { NativeDragSource } from './NativeDragSource';\nexport function createNativeDragSource(type, dataTransfer) {\n var result = new NativeDragSource(nativeTypesConfig[type]);\n result.loadDataTransfer(dataTransfer);\n return result;\n}\nexport function matchNativeItemType(dataTransfer) {\n if (!dataTransfer) {\n return null;\n }\n\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) {\n return dataTransferTypes.indexOf(t) > -1;\n });\n })[0] || null;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport var OptionsReader = /*#__PURE__*/function () {\n function OptionsReader(globalContext, options) {\n _classCallCheck(this, OptionsReader);\n\n _defineProperty(this, \"ownerDocument\", null);\n\n _defineProperty(this, \"globalContext\", void 0);\n\n _defineProperty(this, \"optionsArgs\", void 0);\n\n this.globalContext = globalContext;\n this.optionsArgs = options;\n }\n\n _createClass(OptionsReader, [{\n key: \"window\",\n get: function get() {\n if (this.globalContext) {\n return this.globalContext;\n } else if (typeof window !== 'undefined') {\n return window;\n }\n\n return undefined;\n }\n }, {\n key: \"document\",\n get: function get() {\n var _this$globalContext;\n\n if ((_this$globalContext = this.globalContext) !== null && _this$globalContext !== void 0 && _this$globalContext.document) {\n return this.globalContext.document;\n } else if (this.window) {\n return this.window.document;\n } else {\n return undefined;\n }\n }\n }, {\n key: \"rootElement\",\n get: function get() {\n var _this$optionsArgs;\n\n return ((_this$optionsArgs = this.optionsArgs) === null || _this$optionsArgs === void 0 ? void 0 : _this$optionsArgs.rootElement) || this.window;\n }\n }]);\n\n return OptionsReader;\n}();","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter';\nimport { getNodeClientOffset, getEventClientOffset, getDragPreviewOffset } from './OffsetUtils';\nimport { createNativeDragSource, matchNativeItemType } from './NativeDragSources';\nimport * as NativeTypes from './NativeTypes';\nimport { OptionsReader } from './OptionsReader';\nexport var HTML5BackendImpl = /*#__PURE__*/function () {\n // React-Dnd Components\n // Internal State\n function HTML5BackendImpl(manager, globalContext, options) {\n var _this = this;\n\n _classCallCheck(this, HTML5BackendImpl);\n\n _defineProperty(this, \"options\", void 0);\n\n _defineProperty(this, \"actions\", void 0);\n\n _defineProperty(this, \"monitor\", void 0);\n\n _defineProperty(this, \"registry\", void 0);\n\n _defineProperty(this, \"enterLeaveCounter\", void 0);\n\n _defineProperty(this, \"sourcePreviewNodes\", new Map());\n\n _defineProperty(this, \"sourcePreviewNodeOptions\", new Map());\n\n _defineProperty(this, \"sourceNodes\", new Map());\n\n _defineProperty(this, \"sourceNodeOptions\", new Map());\n\n _defineProperty(this, \"dragStartSourceIds\", null);\n\n _defineProperty(this, \"dropTargetIds\", []);\n\n _defineProperty(this, \"dragEnterTargetIds\", []);\n\n _defineProperty(this, \"currentNativeSource\", null);\n\n _defineProperty(this, \"currentNativeHandle\", null);\n\n _defineProperty(this, \"currentDragSourceNode\", null);\n\n _defineProperty(this, \"altKeyPressed\", false);\n\n _defineProperty(this, \"mouseMoveTimeoutTimer\", null);\n\n _defineProperty(this, \"asyncEndDragFrameId\", null);\n\n _defineProperty(this, \"dragOverTargetIds\", null);\n\n _defineProperty(this, \"lastClientOffset\", null);\n\n _defineProperty(this, \"hoverRafId\", null);\n\n _defineProperty(this, \"getSourceClientOffset\", function (sourceId) {\n var source = _this.sourceNodes.get(sourceId);\n\n return source && getNodeClientOffset(source) || null;\n });\n\n _defineProperty(this, \"endDragNativeItem\", function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n\n _this.actions.endDrag();\n\n if (_this.currentNativeHandle) {\n _this.registry.removeSource(_this.currentNativeHandle);\n }\n\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n });\n\n _defineProperty(this, \"isNodeInDocument\", function (node) {\n // Check the node either in the main document or in the current context\n return Boolean(node && _this.document && _this.document.body && _this.document.body.contains(node));\n });\n\n _defineProperty(this, \"endDragIfSourceWasRemovedFromDOM\", function () {\n var node = _this.currentDragSourceNode;\n\n if (node == null || _this.isNodeInDocument(node)) {\n return;\n }\n\n if (_this.clearCurrentDragSourceNode() && _this.monitor.isDragging()) {\n _this.actions.endDrag();\n }\n });\n\n _defineProperty(this, \"handleTopDragStartCapture\", function () {\n _this.clearCurrentDragSourceNode();\n\n _this.dragStartSourceIds = [];\n });\n\n _defineProperty(this, \"handleTopDragStart\", function (e) {\n if (e.defaultPrevented) {\n return;\n }\n\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = getEventClientOffset(e); // Avoid crashing if we missed a drop event or our previous drag died\n\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n } // Don't publish the source just yet (see why below)\n\n\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset\n });\n\n var dataTransfer = e.dataTransfer;\n var nativeType = matchNativeItemType(dataTransfer);\n\n if (_this.monitor.isDragging()) {\n if (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n\n var sourceNode = _this.sourceNodes.get(sourceId);\n\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n\n if (dragPreview) {\n var _this$getCurrentSourc = _this.getCurrentSourcePreviewNodeOptions(),\n anchorX = _this$getCurrentSourc.anchorX,\n anchorY = _this$getCurrentSourc.anchorY,\n offsetX = _this$getCurrentSourc.offsetX,\n offsetY = _this$getCurrentSourc.offsetY;\n\n var anchorPoint = {\n anchorX: anchorX,\n anchorY: anchorY\n };\n var offsetPoint = {\n offsetX: offsetX,\n offsetY: offsetY\n };\n var dragPreviewOffset = getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n }\n\n try {\n // Firefox won't drag without setting data\n dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.setData('application/json', {});\n } catch (err) {// IE doesn't support MIME types in setData\n } // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n\n\n _this.setCurrentDragSourceNode(e.target); // Now we are ready to publish the drag source.. or are we not?\n\n\n var _this$getCurrentSourc2 = _this.getCurrentSourcePreviewNodeOptions(),\n captureDraggingState = _this$getCurrentSourc2.captureDraggingState;\n\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () {\n return _this.actions.publishDragSource();\n }, 0);\n } else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n } else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n } else if (dataTransfer && !dataTransfer.types && (e.target && !e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n } else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n });\n\n _defineProperty(this, \"handleTopDragEndCapture\", function () {\n if (_this.clearCurrentDragSourceNode() && _this.monitor.isDragging()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n });\n\n _defineProperty(this, \"handleTopDragEnterCapture\", function (e) {\n _this.dragEnterTargetIds = [];\n\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n\n var dataTransfer = e.dataTransfer;\n var nativeType = matchNativeItemType(dataTransfer);\n\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType, dataTransfer);\n }\n });\n\n _defineProperty(this, \"handleTopDragEnter\", function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n\n _this.altKeyPressed = e.altKey; // If the target changes position as the result of `dragenter`, `dragover` might still\n // get dispatched despite target being no longer there. The easy solution is to check\n // whether there actually is a target before firing `hover`.\n\n if (dragEnterTargetIds.length > 0) {\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: getEventClientOffset(e)\n });\n }\n\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n }\n });\n\n _defineProperty(this, \"handleTopDragOverCapture\", function () {\n _this.dragOverTargetIds = [];\n });\n\n _defineProperty(this, \"handleTopDragOver\", function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n\n return;\n }\n\n _this.altKeyPressed = e.altKey;\n _this.lastClientOffset = getEventClientOffset(e);\n\n if (_this.hoverRafId === null && typeof requestAnimationFrame !== 'undefined') {\n _this.hoverRafId = requestAnimationFrame(function () {\n if (_this.monitor.isDragging()) {\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: _this.lastClientOffset\n });\n }\n\n _this.hoverRafId = null;\n });\n }\n\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n } else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n } else {\n e.preventDefault();\n\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n }\n });\n\n _defineProperty(this, \"handleTopDragLeaveCapture\", function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n\n if (!isLastLeave) {\n return;\n }\n\n if (_this.isDraggingNativeItem()) {\n setTimeout(function () {\n return _this.endDragNativeItem();\n }, 0);\n }\n });\n\n _defineProperty(this, \"handleTopDropCapture\", function (e) {\n _this.dropTargetIds = [];\n\n if (_this.isDraggingNativeItem()) {\n var _this$currentNativeSo;\n\n e.preventDefault();\n (_this$currentNativeSo = _this.currentNativeSource) === null || _this$currentNativeSo === void 0 ? void 0 : _this$currentNativeSo.loadDataTransfer(e.dataTransfer);\n } else if (matchNativeItemType(e.dataTransfer)) {\n // Dragging some elements, like <a> and <img> may still behave like a native drag event,\n // even if the current drag event matches a user-defined type.\n // Stop the default behavior when we're not expecting a native item to be dropped.\n e.preventDefault();\n }\n\n _this.enterLeaveCounter.reset();\n });\n\n _defineProperty(this, \"handleTopDrop\", function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n\n _this.actions.hover(dropTargetIds, {\n clientOffset: getEventClientOffset(e)\n });\n\n _this.actions.drop({\n dropEffect: _this.getCurrentDropEffect()\n });\n\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n } else if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n }\n });\n\n _defineProperty(this, \"handleSelectStart\", function (e) {\n var target = e.target; // Only IE requires us to explicitly say\n // we want drag drop operation to start\n\n if (typeof target.dragDrop !== 'function') {\n return;\n } // Inputs and textareas should be selectable\n\n\n if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n } // For other targets, ask IE\n // to enable drag and drop\n\n\n e.preventDefault();\n target.dragDrop();\n });\n\n this.options = new OptionsReader(globalContext, options);\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument);\n }\n /**\n * Generate profiling statistics for the HTML5Backend.\n */\n\n\n _createClass(HTML5BackendImpl, [{\n key: \"profile\",\n value: function profile() {\n var _this$dragStartSource, _this$dragOverTargetI;\n\n return {\n sourcePreviewNodes: this.sourcePreviewNodes.size,\n sourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n sourceNodeOptions: this.sourceNodeOptions.size,\n sourceNodes: this.sourceNodes.size,\n dragStartSourceIds: ((_this$dragStartSource = this.dragStartSourceIds) === null || _this$dragStartSource === void 0 ? void 0 : _this$dragStartSource.length) || 0,\n dropTargetIds: this.dropTargetIds.length,\n dragEnterTargetIds: this.dragEnterTargetIds.length,\n dragOverTargetIds: ((_this$dragOverTargetI = this.dragOverTargetIds) === null || _this$dragOverTargetI === void 0 ? void 0 : _this$dragOverTargetI.length) || 0\n };\n } // public for test\n\n }, {\n key: \"window\",\n get: function get() {\n return this.options.window;\n }\n }, {\n key: \"document\",\n get: function get() {\n return this.options.document;\n }\n /**\n * Get the root element to use for event subscriptions\n */\n\n }, {\n key: \"rootElement\",\n get: function get() {\n return this.options.rootElement;\n }\n }, {\n key: \"setup\",\n value: function setup() {\n var root = this.rootElement;\n\n if (root === undefined) {\n return;\n }\n\n if (root.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n\n root.__isReactDndBackendSetUp = true;\n this.addEventListeners(root);\n }\n }, {\n key: \"teardown\",\n value: function teardown() {\n var root = this.rootElement;\n\n if (root === undefined) {\n return;\n }\n\n root.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.rootElement);\n this.clearCurrentDragSourceNode();\n\n if (this.asyncEndDragFrameId) {\n var _this$window;\n\n (_this$window = this.window) === null || _this$window === void 0 ? void 0 : _this$window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n }\n }, {\n key: \"connectDragPreview\",\n value: function connectDragPreview(sourceId, node, options) {\n var _this2 = this;\n\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this2.sourcePreviewNodes.delete(sourceId);\n\n _this2.sourcePreviewNodeOptions.delete(sourceId);\n };\n }\n }, {\n key: \"connectDragSource\",\n value: function connectDragSource(sourceId, node, options) {\n var _this3 = this;\n\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n\n var handleDragStart = function handleDragStart(e) {\n return _this3.handleDragStart(e, sourceId);\n };\n\n var handleSelectStart = function handleSelectStart(e) {\n return _this3.handleSelectStart(e);\n };\n\n node.setAttribute('draggable', 'true');\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this3.sourceNodes.delete(sourceId);\n\n _this3.sourceNodeOptions.delete(sourceId);\n\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', 'false');\n };\n }\n }, {\n key: \"connectDropTarget\",\n value: function connectDropTarget(targetId, node) {\n var _this4 = this;\n\n var handleDragEnter = function handleDragEnter(e) {\n return _this4.handleDragEnter(e, targetId);\n };\n\n var handleDragOver = function handleDragOver(e) {\n return _this4.handleDragOver(e, targetId);\n };\n\n var handleDrop = function handleDrop(e) {\n return _this4.handleDrop(e, targetId);\n };\n\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n }\n }, {\n key: \"addEventListeners\",\n value: function addEventListeners(target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n }\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners(target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n }\n }, {\n key: \"getCurrentSourceNodeOptions\",\n value: function getCurrentSourceNodeOptions() {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return _objectSpread({\n dropEffect: this.altKeyPressed ? 'copy' : 'move'\n }, sourceNodeOptions || {});\n }\n }, {\n key: \"getCurrentDropEffect\",\n value: function getCurrentDropEffect() {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n\n return this.getCurrentSourceNodeOptions().dropEffect;\n }\n }, {\n key: \"getCurrentSourcePreviewNodeOptions\",\n value: function getCurrentSourcePreviewNodeOptions() {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return _objectSpread({\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false\n }, sourcePreviewNodeOptions || {});\n }\n }, {\n key: \"isDraggingNativeItem\",\n value: function isDraggingNativeItem() {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) {\n return NativeTypes[key] === itemType;\n });\n }\n }, {\n key: \"beginDragNativeItem\",\n value: function beginDragNativeItem(type, dataTransfer) {\n this.clearCurrentDragSourceNode();\n this.currentNativeSource = createNativeDragSource(type, dataTransfer);\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n }\n }, {\n key: \"setCurrentDragSourceNode\",\n value: function setCurrentDragSourceNode(node) {\n var _this5 = this;\n\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node; // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n\n var MOUSE_MOVE_TIMEOUT = 1000; // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n var _this5$rootElement;\n\n return (_this5$rootElement = _this5.rootElement) === null || _this5$rootElement === void 0 ? void 0 : _this5$rootElement.addEventListener('mousemove', _this5.endDragIfSourceWasRemovedFromDOM, true);\n }, MOUSE_MOVE_TIMEOUT);\n }\n }, {\n key: \"clearCurrentDragSourceNode\",\n value: function clearCurrentDragSourceNode() {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n\n if (this.rootElement) {\n var _this$window2;\n\n (_this$window2 = this.window) === null || _this$window2 === void 0 ? void 0 : _this$window2.clearTimeout(this.mouseMoveTimeoutTimer || undefined);\n this.rootElement.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n\n return false;\n }\n }, {\n key: \"handleDragStart\",\n value: function handleDragStart(e, sourceId) {\n if (e.defaultPrevented) {\n return;\n }\n\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n\n this.dragStartSourceIds.unshift(sourceId);\n }\n }, {\n key: \"handleDragEnter\",\n value: function handleDragEnter(e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n }\n }, {\n key: \"handleDragOver\",\n value: function handleDragOver(e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n\n this.dragOverTargetIds.unshift(targetId);\n }\n }, {\n key: \"handleDrop\",\n value: function handleDrop(e, targetId) {\n this.dropTargetIds.unshift(targetId);\n }\n }]);\n\n return HTML5BackendImpl;\n}();","import { HTML5BackendImpl } from './HTML5BackendImpl';\nimport * as NativeTypes from './NativeTypes';\nexport { getEmptyImage } from './getEmptyImage';\nexport { NativeTypes };\nexport var HTML5Backend = function createBackend(manager, context, options) {\n return new HTML5BackendImpl(manager, context, options);\n};","export var INIT_COORDS = 'dnd-core/INIT_COORDS';\nexport var BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexport var PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexport var HOVER = 'dnd-core/HOVER';\nexport var DROP = 'dnd-core/DROP';\nexport var END_DRAG = 'dnd-core/END_DRAG';","import { INIT_COORDS } from '../types';\nexport function setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null\n }\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get(obj, path, defaultValue) {\n return path.split('.').reduce(function (a, c) {\n return a && a[c] ? a[c] : defaultValue || null;\n }, obj);\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n return items.filter(function (i) {\n return i !== item;\n });\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isString(input) {\n return typeof input === 'string';\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isObject(input) {\n return _typeof(input) === 'object';\n}\n/**\n * repalcement for _.xor\n * @param itemsA\n * @param itemsB\n */\n\nexport function xor(itemsA, itemsB) {\n var map = new Map();\n\n var insertItem = function insertItem(item) {\n map.set(item, map.has(item) ? map.get(item) + 1 : 1);\n };\n\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n var result = [];\n map.forEach(function (count, key) {\n if (count === 1) {\n result.push(key);\n }\n });\n return result;\n}\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\n\nexport function intersection(itemsA, itemsB) {\n return itemsA.filter(function (t) {\n return itemsB.indexOf(t) > -1;\n });\n}","import { invariant } from '@react-dnd/invariant';\nimport { setClientOffset } from './local/setClientOffset';\nimport { isObject } from '../../utils/js_utils';\nimport { BEGIN_DRAG, INIT_COORDS } from './types';\nvar ResetCoordinatesAction = {\n type: INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null\n }\n};\nexport function createBeginDrag(manager) {\n return function beginDrag() {\n var sourceIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n publishSource: true\n };\n var _options$publishSourc = options.publishSource,\n publishSource = _options$publishSourc === void 0 ? true : _options$publishSourc,\n clientOffset = options.clientOffset,\n getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry(); // Initialize the coordinates using the client offset\n\n manager.dispatch(setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry); // Get the draggable source\n\n var sourceId = getDraggableSource(sourceIds, monitor);\n\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n } // Get the source client offset\n\n\n var sourceClientOffset = null;\n\n if (clientOffset) {\n if (!getSourceClientOffset) {\n throw new Error('getSourceClientOffset must be defined');\n }\n\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n } // Initialize the full coordinates\n\n\n manager.dispatch(setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId); // If source.beginDrag returns null, this is an indicator to cancel the drag\n\n if (item == null) {\n return undefined;\n }\n\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource\n }\n };\n };\n}\n\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n sourceIds.forEach(function (sourceId) {\n invariant(registry.getSource(sourceId), 'Expected sourceIds to be registered.');\n });\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\n\nfunction verifyItemIsObject(item) {\n invariant(isObject(item), 'Item must be an object.');\n}\n\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n\n return sourceId;\n}","import { PUBLISH_DRAG_SOURCE } from './types';\nexport function createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n\n if (monitor.isDragging()) {\n return {\n type: PUBLISH_DRAG_SOURCE\n };\n }\n };\n}","export function matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n\n return Array.isArray(targetType) ? targetType.some(function (t) {\n return t === draggedItemType;\n }) : targetType === draggedItemType;\n}","import { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../../utils/matchesType';\nimport { HOVER } from './types';\nexport function createHover(manager) {\n return function hover(targetIdsArg) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n clientOffset = _ref.clientOffset;\n\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null\n }\n };\n };\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\n\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant(!monitor.didDrop(), 'Cannot call hover after drop.');\n\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant(target, 'Expected targetIds to be registered.');\n }\n}\n\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n\n if (!matchesType(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\n\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n targetIds.forEach(function (targetId) {\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { DROP } from './types';\nimport { isObject } from '../../utils/js_utils';\nexport function createDrop(manager) {\n return function drop() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor); // Multiple actions are dispatched here, which is why this doesn't return an action\n\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: DROP,\n payload: {\n dropResult: _objectSpread(_objectSpread({}, options), dropResult)\n }\n };\n manager.dispatch(action);\n });\n };\n}\n\nfunction verifyInvariants(monitor) {\n invariant(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\n\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target ? target.drop(monitor, targetId) : undefined;\n verifyDropResultType(dropResult);\n\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n\n return dropResult;\n}\n\nfunction verifyDropResultType(dropResult) {\n invariant(typeof dropResult === 'undefined' || isObject(dropResult), 'Drop result must either be an object or undefined.');\n}\n\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}","import { invariant } from '@react-dnd/invariant';\nimport { END_DRAG } from './types';\nexport function createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n\n if (sourceId != null) {\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n }\n\n return {\n type: END_DRAG\n };\n };\n}\n\nfunction verifyIsDragging(monitor) {\n invariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { createDragDropActions } from '../actions/dragDrop';\nexport var DragDropManagerImpl = /*#__PURE__*/function () {\n function DragDropManagerImpl(store, monitor) {\n var _this = this;\n\n _classCallCheck(this, DragDropManagerImpl);\n\n _defineProperty(this, \"store\", void 0);\n\n _defineProperty(this, \"monitor\", void 0);\n\n _defineProperty(this, \"backend\", void 0);\n\n _defineProperty(this, \"isSetUp\", false);\n\n _defineProperty(this, \"handleRefCountChange\", function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n\n if (_this.backend) {\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n\n _this.isSetUp = true;\n } else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n\n _this.isSetUp = false;\n }\n }\n });\n\n this.store = store;\n this.monitor = monitor;\n store.subscribe(this.handleRefCountChange);\n }\n\n _createClass(DragDropManagerImpl, [{\n key: \"receiveBackend\",\n value: function receiveBackend(backend) {\n this.backend = backend;\n }\n }, {\n key: \"getMonitor\",\n value: function getMonitor() {\n return this.monitor;\n }\n }, {\n key: \"getBackend\",\n value: function getBackend() {\n return this.backend;\n }\n }, {\n key: \"getRegistry\",\n value: function getRegistry() {\n return this.monitor.registry;\n }\n }, {\n key: \"getActions\",\n value: function getActions() {\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n var manager = this;\n var dispatch = this.store.dispatch;\n\n function bindActionCreator(actionCreator) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var action = actionCreator.apply(manager, args);\n\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n\n var actions = createDragDropActions(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(action) {\n this.store.dispatch(action);\n }\n }]);\n\n return DragDropManagerImpl;\n}();","import { createBeginDrag } from './beginDrag';\nimport { createPublishDragSource } from './publishDragSource';\nimport { createHover } from './hover';\nimport { createDrop } from './drop';\nimport { createEndDrag } from './endDrag';\nexport * from './types';\nexport function createDragDropActions(manager) {\n return {\n beginDrag: createBeginDrag(manager),\n publishDragSource: createPublishDragSource(manager),\n hover: createHover(manager),\n drop: createDrop(manager),\n endDrag: createEndDrag(manager)\n };\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","export var strictEquality = function strictEquality(a, b) {\n return a === b;\n};\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\n\nexport function areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n } else if (!offsetA || !offsetB) {\n return false;\n } else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\n\nexport function areArraysEqual(a, b) {\n var isEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : strictEquality;\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { INIT_COORDS, BEGIN_DRAG, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { areCoordsEqual } from '../utils/equality';\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null\n};\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var payload = action.payload;\n\n switch (action.type) {\n case INIT_COORDS:\n case BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset\n };\n\n case HOVER:\n if (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n clientOffset: payload.clientOffset\n });\n\n case END_DRAG:\n case DROP:\n return initialState;\n\n default:\n return state;\n }\n}","export var ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexport var ADD_TARGET = 'dnd-core/ADD_TARGET';\nexport var REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexport var REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nexport function addSource(sourceId) {\n return {\n type: ADD_SOURCE,\n payload: {\n sourceId: sourceId\n }\n };\n}\nexport function addTarget(targetId) {\n return {\n type: ADD_TARGET,\n payload: {\n targetId: targetId\n }\n };\n}\nexport function removeSource(sourceId) {\n return {\n type: REMOVE_SOURCE,\n payload: {\n sourceId: sourceId\n }\n };\n}\nexport function removeTarget(targetId) {\n return {\n type: REMOVE_TARGET,\n payload: {\n targetId: targetId\n }\n };\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { REMOVE_TARGET } from '../actions/registry';\nimport { without } from '../utils/js_utils';\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null\n};\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var payload = action.payload;\n\n switch (action.type) {\n case BEGIN_DRAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n itemType: payload.itemType,\n item: payload.item,\n sourceId: payload.sourceId,\n isSourcePublic: payload.isSourcePublic,\n dropResult: null,\n didDrop: false\n });\n\n case PUBLISH_DRAG_SOURCE:\n return _objectSpread(_objectSpread({}, state), {}, {\n isSourcePublic: true\n });\n\n case HOVER:\n return _objectSpread(_objectSpread({}, state), {}, {\n targetIds: payload.targetIds\n });\n\n case REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n targetIds: without(state.targetIds, payload.targetId)\n });\n\n case DROP:\n return _objectSpread(_objectSpread({}, state), {}, {\n dropResult: payload.dropResult,\n didDrop: true,\n targetIds: []\n });\n\n case END_DRAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n itemType: null,\n item: null,\n sourceId: null,\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n targetIds: []\n });\n\n default:\n return state;\n }\n}","import { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case ADD_SOURCE:\n case ADD_TARGET:\n return state + 1;\n\n case REMOVE_SOURCE:\n case REMOVE_TARGET:\n return state - 1;\n\n default:\n return state;\n }\n}","import { intersection } from './js_utils';\nexport var NONE = [];\nexport var ALL = [];\nNONE.__IS_NONE__ = true;\nALL.__IS_ALL__ = true;\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\n\nexport function areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === NONE) {\n return false;\n }\n\n if (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n\n var commonIds = intersection(handlerIds, dirtyIds);\n return commonIds.length > 0;\n}","import { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nimport { areArraysEqual } from '../utils/equality';\nimport { NONE, ALL } from '../utils/dirtiness';\nimport { xor } from '../utils/js_utils';\nexport function reduce() {\n var _state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NONE;\n\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case HOVER:\n break;\n\n case ADD_SOURCE:\n case ADD_TARGET:\n case REMOVE_TARGET:\n case REMOVE_SOURCE:\n return NONE;\n\n case BEGIN_DRAG:\n case PUBLISH_DRAG_SOURCE:\n case END_DRAG:\n case DROP:\n default:\n return ALL;\n }\n\n var _action$payload = action.payload,\n _action$payload$targe = _action$payload.targetIds,\n targetIds = _action$payload$targe === void 0 ? [] : _action$payload$targe,\n _action$payload$prevT = _action$payload.prevTargetIds,\n prevTargetIds = _action$payload$prevT === void 0 ? [] : _action$payload$prevT;\n var result = xor(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !areArraysEqual(targetIds, prevTargetIds);\n\n if (!didChange) {\n return NONE;\n } // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n\n\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n\n return result;\n}","export function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return state + 1;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { reduce as dragOffset } from './dragOffset';\nimport { reduce as dragOperation } from './dragOperation';\nimport { reduce as refCount } from './refCount';\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds';\nimport { reduce as stateId } from './stateId';\nimport { get } from '../utils/js_utils';\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n return {\n dirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n type: action.type,\n payload: _objectSpread(_objectSpread({}, action.payload), {}, {\n prevTargetIds: get(state, 'dragOperation.targetIds', [])\n })\n }),\n dragOffset: dragOffset(state.dragOffset, action),\n refCount: refCount(state.refCount, action),\n dragOperation: dragOperation(state.dragOperation, action),\n stateId: stateId(state.stateId)\n };\n}","/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y\n };\n}\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\n\nexport function subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n}\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\n\nexport function getSourceClientOffset(state) {\n var clientOffset = state.clientOffset,\n initialClientOffset = state.initialClientOffset,\n initialSourceClientOffset = state.initialSourceClientOffset;\n\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\n\nexport function getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset,\n initialClientOffset = state.initialClientOffset;\n\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n\n return subtract(clientOffset, initialClientOffset);\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../utils/matchesType';\nimport { getSourceClientOffset as _getSourceClientOffset, getDifferenceFromInitialOffset as _getDifferenceFromInitialOffset } from '../utils/coords';\nimport { areDirty } from '../utils/dirtiness';\nexport var DragDropMonitorImpl = /*#__PURE__*/function () {\n function DragDropMonitorImpl(store, registry) {\n _classCallCheck(this, DragDropMonitorImpl);\n\n _defineProperty(this, \"store\", void 0);\n\n _defineProperty(this, \"registry\", void 0);\n\n this.store = store;\n this.registry = registry;\n }\n\n _createClass(DragDropMonitorImpl, [{\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n handlerIds: undefined\n };\n var handlerIds = options.handlerIds;\n invariant(typeof listener === 'function', 'listener must be a function.');\n invariant(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n\n var handleChange = function handleChange() {\n var state = _this.store.getState();\n\n var currentStateId = state.stateId;\n\n try {\n var canSkipListener = currentStateId === prevStateId || currentStateId === prevStateId + 1 && !areDirty(state.dirtyHandlerIds, handlerIds);\n\n if (!canSkipListener) {\n listener();\n }\n } finally {\n prevStateId = currentStateId;\n }\n };\n\n return this.store.subscribe(handleChange);\n }\n }, {\n key: \"subscribeToOffsetChange\",\n value: function subscribeToOffsetChange(listener) {\n var _this2 = this;\n\n invariant(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n\n var handleChange = function handleChange() {\n var nextState = _this2.store.getState().dragOffset;\n\n if (nextState === previousState) {\n return;\n }\n\n previousState = nextState;\n listener();\n };\n\n return this.store.subscribe(handleChange);\n }\n }, {\n key: \"canDragSource\",\n value: function canDragSource(sourceId) {\n if (!sourceId) {\n return false;\n }\n\n var source = this.registry.getSource(sourceId);\n invariant(source, \"Expected to find a valid source. sourceId=\".concat(sourceId));\n\n if (this.isDragging()) {\n return false;\n }\n\n return source.canDrag(this, sourceId);\n }\n }, {\n key: \"canDropOnTarget\",\n value: function canDropOnTarget(targetId) {\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n\n var target = this.registry.getTarget(targetId);\n invariant(target, \"Expected to find a valid target. targetId=\".concat(targetId));\n\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return matchesType(targetType, draggedItemType) && target.canDrop(this, targetId);\n }\n }, {\n key: \"isDragging\",\n value: function isDragging() {\n return Boolean(this.getItemType());\n }\n }, {\n key: \"isDraggingSource\",\n value: function isDraggingSource(sourceId) {\n // undefined on initial render\n if (!sourceId) {\n return false;\n }\n\n var source = this.registry.getSource(sourceId, true);\n invariant(source, \"Expected to find a valid source. sourceId=\".concat(sourceId));\n\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n\n if (sourceType !== draggedItemType) {\n return false;\n }\n\n return source.isDragging(this, sourceId);\n }\n }, {\n key: \"isOverTarget\",\n value: function isOverTarget(targetId) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n shallow: false\n };\n\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n\n var shallow = options.shallow;\n\n if (!this.isDragging()) {\n return false;\n }\n\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n\n if (draggedItemType && !matchesType(targetType, draggedItemType)) {\n return false;\n }\n\n var targetIds = this.getTargetIds();\n\n if (!targetIds.length) {\n return false;\n }\n\n var index = targetIds.indexOf(targetId);\n\n if (shallow) {\n return index === targetIds.length - 1;\n } else {\n return index > -1;\n }\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.store.getState().dragOperation.itemType;\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.store.getState().dragOperation.item;\n }\n }, {\n key: \"getSourceId\",\n value: function getSourceId() {\n return this.store.getState().dragOperation.sourceId;\n }\n }, {\n key: \"getTargetIds\",\n value: function getTargetIds() {\n return this.store.getState().dragOperation.targetIds;\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.store.getState().dragOperation.dropResult;\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.store.getState().dragOperation.didDrop;\n }\n }, {\n key: \"isSourcePublic\",\n value: function isSourcePublic() {\n return Boolean(this.store.getState().dragOperation.isSourcePublic);\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.store.getState().dragOffset.initialClientOffset;\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.store.getState().dragOffset.clientOffset;\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return _getSourceClientOffset(this.store.getState().dragOffset);\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return _getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n }\n }]);\n\n return DragDropMonitorImpl;\n}();","export var HandlerRole;\n\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole || (HandlerRole = {}));","var nextUniqueId = 0;\nexport function getNextUniqueId() {\n return nextUniqueId++;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { invariant } from '@react-dnd/invariant';\nexport function validateSourceContract(source) {\n invariant(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexport function validateTargetContract(target) {\n invariant(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexport function validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) {\n return validateType(t, false);\n });\n return;\n }\n\n invariant(typeof type === 'string' || _typeof(type) === 'symbol', allowArray ? 'Type can only be a string, a symbol, or an array of either.' : 'Type can only be a string or a symbol.');\n}","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t // reliably everywhere they are implemented.\n\t\t // They are implemented in all modern browsers.\n\t\t //\n\t\t // - Android 4-4.3\n\t\t // - Chrome 26-34\n\t\t // - Firefox 14-29\n\t\t // - Internet Explorer 11\n\t\t // - iPad Safari 6-7.1\n\t\t // - iPhone Safari 7-7.1\n\t\t // - Safari 6-7\n\t\t makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t // 11-12, and in web workers in many engines.\n\t\t // Although message channels yield to any queued rendering and IO tasks, they\n\t\t // would be better than imposing the 4ms delay of timers.\n\t\t // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t // not have MutationObservers.\n\t\t // Although setImmediate yields to the browser's renderer, it would be\n\t\t // preferrable to falling back to setTimeout since it does not have\n\t\t // the minimum 4ms penalty.\n\t\t // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t // Desktop to a lesser extent) that renders both setImmediate and\n\t\t // MessageChannel useless for the purposes of ASAP.\n\t\t // https://github.com/kriskowal/q/issues/396\n\n\t\t // Timers are implemented universally.\n\t\t // We fall back to timers in workers in most engines, and in foreground\n\t\t // contexts in the following browsers.\n\t\t // However, note that even this simple case requires nuances to operate in a\n\t\t // broad spectrum of browsers.\n\t\t //\n\t\t // - Firefox 3-13\n\t\t // - Internet Explorer 6-9\n\t\t // - iPad Safari 4.3\n\t\t // - Lynx 2.8.7\n\t\t makeRequestCallFromTimer\n","// We wrap tasks with recyclable task objects. A task object implements\n\nimport type { TaskFn, Task } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport type { Task } from './types.js'\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","import type { Task } from './types.js'\nimport { RawTask } from './RawTask.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { invariant } from '@react-dnd/invariant';\nimport { addSource as _addSource, addTarget as _addTarget, removeSource as _removeSource, removeTarget as _removeTarget } from '../actions/registry';\nimport { getNextUniqueId } from '../utils/getNextUniqueId';\nimport { HandlerRole } from '../interfaces';\nimport { validateSourceContract, validateTargetContract, validateType } from '../contracts';\nimport { asap } from '@react-dnd/asap';\n\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId().toString();\n\n switch (role) {\n case HandlerRole.SOURCE:\n return \"S\".concat(id);\n\n case HandlerRole.TARGET:\n return \"T\".concat(id);\n\n default:\n throw new Error(\"Unknown Handler Role: \".concat(role));\n }\n}\n\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return HandlerRole.SOURCE;\n\n case 'T':\n return HandlerRole.TARGET;\n\n default:\n invariant(false, \"Cannot parse handler ID: \".concat(handlerId));\n }\n}\n\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n\n do {\n var _entries$next = entries.next(),\n done = _entries$next.done,\n _entries$next$value = _slicedToArray(_entries$next.value, 2),\n value = _entries$next$value[1];\n\n if (value === searchValue) {\n return true;\n }\n\n isDone = !!done;\n } while (!isDone);\n\n return false;\n}\n\nexport var HandlerRegistryImpl = /*#__PURE__*/function () {\n function HandlerRegistryImpl(store) {\n _classCallCheck(this, HandlerRegistryImpl);\n\n _defineProperty(this, \"types\", new Map());\n\n _defineProperty(this, \"dragSources\", new Map());\n\n _defineProperty(this, \"dropTargets\", new Map());\n\n _defineProperty(this, \"pinnedSourceId\", null);\n\n _defineProperty(this, \"pinnedSource\", null);\n\n _defineProperty(this, \"store\", void 0);\n\n this.store = store;\n }\n\n _createClass(HandlerRegistryImpl, [{\n key: \"addSource\",\n value: function addSource(type, source) {\n validateType(type);\n validateSourceContract(source);\n var sourceId = this.addHandler(HandlerRole.SOURCE, type, source);\n this.store.dispatch(_addSource(sourceId));\n return sourceId;\n }\n }, {\n key: \"addTarget\",\n value: function addTarget(type, target) {\n validateType(type, true);\n validateTargetContract(target);\n var targetId = this.addHandler(HandlerRole.TARGET, type, target);\n this.store.dispatch(_addTarget(targetId));\n return targetId;\n }\n }, {\n key: \"containsHandler\",\n value: function containsHandler(handler) {\n return mapContainsValue(this.dragSources, handler) || mapContainsValue(this.dropTargets, handler);\n }\n }, {\n key: \"getSource\",\n value: function getSource(sourceId) {\n var includePinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n }\n }, {\n key: \"getTarget\",\n value: function getTarget(targetId) {\n invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n }\n }, {\n key: \"getSourceType\",\n value: function getSourceType(sourceId) {\n invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n }\n }, {\n key: \"getTargetType\",\n value: function getTargetType(targetId) {\n invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n }\n }, {\n key: \"isSourceId\",\n value: function isSourceId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRole.SOURCE;\n }\n }, {\n key: \"isTargetId\",\n value: function isTargetId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRole.TARGET;\n }\n }, {\n key: \"removeSource\",\n value: function removeSource(sourceId) {\n var _this = this;\n\n invariant(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(_removeSource(sourceId));\n asap(function () {\n _this.dragSources.delete(sourceId);\n\n _this.types.delete(sourceId);\n });\n }\n }, {\n key: \"removeTarget\",\n value: function removeTarget(targetId) {\n invariant(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(_removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n }\n }, {\n key: \"pinSource\",\n value: function pinSource(sourceId) {\n var source = this.getSource(sourceId);\n invariant(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n }\n }, {\n key: \"unpinSource\",\n value: function unpinSource() {\n invariant(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n }, {\n key: \"addHandler\",\n value: function addHandler(role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n\n if (role === HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n } else if (role === HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n\n return id;\n }\n }]);\n\n return HandlerRegistryImpl;\n}();","import { DragDropManagerImpl } from './classes/DragDropManagerImpl';\nimport { createStore } from 'redux';\nimport { reduce } from './reducers';\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl';\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl';\nexport function createDragDropManager(backendFactory) {\n var globalContext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n var backendOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var debugMode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var store = makeStoreInstance(debugMode);\n var monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store));\n var manager = new DragDropManagerImpl(store, monitor);\n var backend = backendFactory(manager, globalContext, backendOptions);\n manager.receiveBackend(backend);\n return manager;\n}\n\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;\n return createStore(reduce, debugMode && reduxDevTools && reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core'\n }));\n}","var _excluded = [\"children\"];\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, memo } from 'react';\nimport { createDragDropManager } from 'dnd-core';\nimport { DndContext } from './DndContext';\nvar refCount = 0;\nvar INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__');\n/**\n * A React component that provides the React-DnD context\n */\n\nexport var DndProvider = memo(function DndProvider(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _getDndContextValue = getDndContextValue(props),\n _getDndContextValue2 = _slicedToArray(_getDndContextValue, 2),\n manager = _getDndContextValue2[0],\n isGlobalInstance = _getDndContextValue2[1]; // memoized from props\n\n /**\n * If the global context was used to store the DND context\n * then where theres no more references to it we should\n * clean it up to avoid memory leaks\n */\n\n\n useEffect(function () {\n if (isGlobalInstance) {\n var context = getGlobalContext();\n ++refCount;\n return function () {\n if (--refCount === 0) {\n context[INSTANCE_SYM] = null;\n }\n };\n }\n }, []);\n return _jsx(DndContext.Provider, Object.assign({\n value: manager\n }, {\n children: children\n }), void 0);\n});\n\nfunction getDndContextValue(props) {\n if ('manager' in props) {\n var _manager = {\n dragDropManager: props.manager\n };\n return [_manager, false];\n }\n\n var manager = createSingletonDndContext(props.backend, props.context, props.options, props.debugMode);\n var isGlobalInstance = !props.context;\n return [manager, isGlobalInstance];\n}\n\nfunction createSingletonDndContext(backend) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getGlobalContext();\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var debugMode = arguments.length > 3 ? arguments[3] : undefined;\n var ctx = context;\n\n if (!ctx[INSTANCE_SYM]) {\n ctx[INSTANCE_SYM] = {\n dragDropManager: createDragDropManager(backend, context, options, debugMode)\n };\n }\n\n return ctx[INSTANCE_SYM];\n}\n\nfunction getGlobalContext() {\n return typeof global !== 'undefined' ? global : window;\n}","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, useImperativeHandle, useMemo, useRef, } from \"react\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\nimport { DataUpdatesContext, DndContext, NodesContext, TreeApiContext, } from \"../context\";\nimport { TreeApi } from \"../interfaces/tree-api\";\nimport { initialState } from \"../state/initial\";\nimport { rootReducer } from \"../state/root-reducer\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { DndProvider } from \"react-dnd\";\nimport { createStore } from \"redux\";\nimport { actions as visibility } from \"../state/open-slice\";\nconst SERVER_STATE = initialState();\nexport function TreeProvider({ treeProps, imperativeHandle, children, }) {\n const list = useRef(null);\n const listEl = useRef(null);\n const store = useRef(\n // @ts-ignore\n createStore(rootReducer, initialState(treeProps)));\n const state = useSyncExternalStore(store.current.subscribe, store.current.getState, () => SERVER_STATE);\n /* The tree api object is stable. */\n const api = useMemo(() => {\n return new TreeApi(store.current, treeProps, list, listEl);\n }, []);\n /* Make sure the tree instance stays in sync */\n const updateCount = useRef(0);\n useMemo(() => {\n updateCount.current += 1;\n api.update(treeProps);\n }, [...Object.values(treeProps), state.nodes.open]);\n /* Expose the tree api */\n useImperativeHandle(imperativeHandle, () => api);\n /* Change selection based on props */\n useEffect(() => {\n if (api.props.selection) {\n api.select(api.props.selection, { focus: false });\n }\n else {\n api.deselectAll();\n }\n }, [api.props.selection]);\n /* Clear visability for filtered nodes */\n useEffect(() => {\n if (!api.props.searchTerm) {\n store.current.dispatch(visibility.clear(true));\n }\n }, [api.props.searchTerm]);\n return (_jsx(TreeApiContext.Provider, { value: api, children: _jsx(DataUpdatesContext.Provider, { value: updateCount.current, children: _jsx(NodesContext.Provider, { value: state.nodes, children: _jsx(DndContext.Provider, { value: state.dnd, children: _jsx(DndProvider, Object.assign({ backend: HTML5Backend, options: { rootElement: api.props.dndRootElement || undefined } }, (treeProps.dndManager && { manager: treeProps.dndManager }), { children: children })) }) }) }) }));\n}\n","import { useOuterDrop } from \"../dnd/outer-drop-hook\";\nexport function OuterDrop(props) {\n useOuterDrop();\n return props.children;\n}\n","import { useDrop } from \"react-dnd\";\nimport { useTreeApi } from \"../context\";\nimport { computeDrop } from \"./compute-drop\";\nimport { actions as dnd } from \"../state/dnd-slice\";\nexport function useOuterDrop() {\n const tree = useTreeApi();\n // In case we drop an item at the bottom of the list\n const [, drop] = useDrop(() => ({\n accept: \"NODE\",\n canDrop: (_item, m) => {\n if (!m.isOver({ shallow: true }))\n return false;\n return tree.canDrop();\n },\n hover: (_item, m) => {\n if (!m.isOver({ shallow: true }))\n return;\n const offset = m.getClientOffset();\n if (!tree.listEl.current || !offset)\n return;\n const { cursor, drop } = computeDrop({\n element: tree.listEl.current,\n offset: offset,\n indent: tree.indent,\n node: null,\n prevNode: tree.visibleNodes[tree.visibleNodes.length - 1],\n nextNode: null,\n });\n if (drop)\n tree.dispatch(dnd.hovering(drop.parentId, drop.index));\n if (m.canDrop()) {\n if (cursor)\n tree.showCursor(cursor);\n }\n else {\n tree.hideCursor();\n }\n },\n }), [tree]);\n drop(tree.listEl);\n}\n","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useTreeApi } from \"../context\";\nimport { DefaultContainer } from \"./default-container\";\nexport function TreeContainer() {\n const tree = useTreeApi();\n const Container = tree.props.renderContainer || DefaultContainer;\n return (_jsx(_Fragment, { children: _jsx(Container, {}) }));\n}\n","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { useEffect } from 'react';\nimport { useDragDropManager } from './useDragDropManager';\nimport { useCollector } from './useCollector';\n/**\n * useDragLayer Hook\n * @param collector The property collector\n */\n\nexport function useDragLayer(collect) {\n var dragDropManager = useDragDropManager();\n var monitor = dragDropManager.getMonitor();\n\n var _useCollector = useCollector(monitor, collect),\n _useCollector2 = _slicedToArray(_useCollector, 2),\n collected = _useCollector2[0],\n updateCollected = _useCollector2[1];\n\n useEffect(function () {\n return monitor.subscribeToOffsetChange(updateCollected);\n });\n useEffect(function () {\n return monitor.subscribeToStateChange(updateCollected);\n });\n return collected;\n}","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useDragLayer } from \"react-dnd\";\nimport { useTreeApi } from \"../context\";\nimport { DefaultDragPreview } from \"./default-drag-preview\";\nexport function DragPreviewContainer() {\n const tree = useTreeApi();\n const { offset, mouse, item, isDragging } = useDragLayer((m) => {\n return {\n offset: m.getSourceClientOffset(),\n mouse: m.getClientOffset(),\n item: m.getItem(),\n isDragging: m.isDragging(),\n };\n });\n const DragPreview = tree.props.renderDragPreview || DefaultDragPreview;\n return (_jsx(DragPreview, { offset: offset, mouse: mouse, id: (item === null || item === void 0 ? void 0 : item.id) || null, dragIds: (item === null || item === void 0 ? void 0 : item.dragIds) || [], isDragging: isDragging }));\n}\n","export class SimpleTree {\n constructor(data) {\n this.root = createRoot(data);\n }\n get data() {\n var _a, _b;\n return (_b = (_a = this.root.children) === null || _a === void 0 ? void 0 : _a.map((node) => node.data)) !== null && _b !== void 0 ? _b : [];\n }\n create(args) {\n const parent = args.parentId ? this.find(args.parentId) : this.root;\n if (!parent)\n return null;\n parent.addChild(args.data, args.index);\n }\n move(args) {\n const src = this.find(args.id);\n const parent = args.parentId ? this.find(args.parentId) : this.root;\n if (!src || !parent)\n return;\n parent.addChild(src.data, args.index);\n src.drop();\n }\n update(args) {\n const node = this.find(args.id);\n if (node)\n node.update(args.changes);\n }\n drop(args) {\n const node = this.find(args.id);\n if (node)\n node.drop();\n }\n find(id, node = this.root) {\n if (!node)\n return null;\n if (node.id === id)\n return node;\n if (node.children) {\n for (let child of node.children) {\n const found = this.find(id, child);\n if (found)\n return found;\n }\n return null;\n }\n return null;\n }\n}\nfunction createRoot(data) {\n const root = new SimpleNode({ id: \"ROOT\" }, null);\n root.children = data.map((d) => createNode(d, root));\n return root;\n}\nfunction createNode(data, parent) {\n const node = new SimpleNode(data, parent);\n if (data.children)\n node.children = data.children.map((d) => createNode(d, node));\n return node;\n}\nclass SimpleNode {\n constructor(data, parent) {\n this.data = data;\n this.parent = parent;\n this.id = data.id;\n }\n hasParent() {\n return !!this.parent;\n }\n get childIndex() {\n return this.hasParent() ? this.parent.children.indexOf(this) : -1;\n }\n addChild(data, index) {\n var _a, _b;\n const node = createNode(data, this);\n this.children = (_a = this.children) !== null && _a !== void 0 ? _a : [];\n this.children.splice(index, 0, node);\n this.data.children = (_b = this.data.children) !== null && _b !== void 0 ? _b : [];\n this.data.children.splice(index, 0, data);\n }\n removeChild(index) {\n var _a, _b;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.splice(index, 1);\n (_b = this.data.children) === null || _b === void 0 ? void 0 : _b.splice(index, 1);\n }\n update(changes) {\n if (this.hasParent()) {\n const i = this.childIndex;\n this.parent.addChild(Object.assign(Object.assign({}, this.data), changes), i);\n this.drop();\n }\n }\n drop() {\n if (this.hasParent())\n this.parent.removeChild(this.childIndex);\n }\n}\n","import { useMemo, useState } from \"react\";\nimport { SimpleTree } from \"../data/simple-tree\";\nlet nextId = 0;\nexport function useSimpleTree(initialData) {\n const [data, setData] = useState(initialData);\n const tree = useMemo(() => new SimpleTree(data), [data]);\n const onMove = (args) => {\n for (const id of args.dragIds) {\n tree.move({ id, parentId: args.parentId, index: args.index });\n }\n setData(tree.data);\n };\n const onRename = ({ name, id }) => {\n tree.update({ id, changes: { name } });\n setData(tree.data);\n };\n const onCreate = ({ parentId, index, type }) => {\n const data = { id: `simple-tree-id-${nextId++}`, name: \"\" };\n if (type === \"internal\")\n data.children = [];\n tree.create({ parentId, index, data });\n setData(tree.data);\n return data;\n };\n const onDelete = (args) => {\n args.ids.forEach((id) => tree.drop({ id }));\n setData(tree.data);\n };\n const controller = { onMove, onRename, onCreate, onDelete };\n return [data, controller];\n}\n","import { useSimpleTree } from \"./use-simple-tree\";\nexport function useValidatedProps(props) {\n if (props.initialData && props.data) {\n throw new Error(`React Arborist Tree => Provide either a data or initialData prop, but not both.`);\n }\n if (props.initialData &&\n (props.onCreate || props.onDelete || props.onMove || props.onRename)) {\n throw new Error(`React Arborist Tree => You passed the initialData prop along with a data handler.\nUse the data prop if you want to provide your own handlers.`);\n }\n if (props.initialData) {\n /**\n * Let's break the rules of hooks here. If the initialData prop\n * is provided, we will assume it will not change for the life of\n * the component.\n *\n * We will provide the real data and the handlers to update it.\n * */\n const [data, controller] = useSimpleTree(props.initialData);\n return Object.assign(Object.assign(Object.assign({}, props), controller), { data });\n }\n else {\n return props;\n }\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { TreeProvider } from \"./provider\";\nimport { OuterDrop } from \"./outer-drop\";\nimport { TreeContainer } from \"./tree-container\";\nimport { DragPreviewContainer } from \"./drag-preview-container\";\nimport { useValidatedProps } from \"../hooks/use-validated-props\";\nfunction TreeComponent(props, ref) {\n const treeProps = useValidatedProps(props);\n return (_jsxs(TreeProvider, { treeProps: treeProps, imperativeHandle: ref, children: [_jsx(OuterDrop, { children: _jsx(TreeContainer, {}) }), _jsx(DragPreviewContainer, {})] }));\n}\nexport const Tree = forwardRef(TreeComponent);\n","import { NodeApi, NodeRendererProps } from 'react-arborist'\r\n\r\nimport { ForumPermission } from './ForumPermission'\r\nimport { IForumTreeObject } from './ForumPermissionTreeObject'\r\n\r\nconst getNodeClasses = (node: NodeApi<IForumTreeObject>): string => {\r\n var classNames: string = ''\r\n\r\n if (node.children.length <= 0) {\r\n if (node.data.permission === ForumPermission.Inherit && node.parent.data.permission !== ForumPermission.Inherit) {\r\n if (node.parent.data.permission === ForumPermission.Moderator) {\r\n classNames += 'bg-danger'\r\n } else if (node.parent.data.permission === ForumPermission.Viewer) {\r\n classNames += 'bg-primary'\r\n } else if (node.parent.data.permission === ForumPermission.Poster) {\r\n classNames += 'bg-success'\r\n }\r\n } else {\r\n if (node.data.permission === ForumPermission.Moderator) {\r\n classNames += 'bg-danger'\r\n } else if (node.data.permission === ForumPermission.Viewer) {\r\n classNames += 'bg-primary'\r\n } else if (node.data.permission === ForumPermission.Poster) {\r\n classNames += 'bg-success'\r\n }\r\n }\r\n } else if (node.children.length > 0) {\r\n if (node.data.permission === ForumPermission.Moderator) {\r\n classNames += 'bg-danger'\r\n } else if (node.data.permission === ForumPermission.Viewer) {\r\n classNames += 'bg-primary'\r\n } else if (node.data.permission === ForumPermission.Poster) {\r\n classNames += 'bg-success'\r\n }\r\n }\r\n\r\n return classNames\r\n}\r\n\r\nexport const ForumTreeNode = ({ node, style, dragHandle }: NodeRendererProps<IForumTreeObject>) => {\r\n return (\r\n <div style={style} className={getNodeClasses(node)} ref={dragHandle}>\r\n <div className='ms-auto px-3'>\r\n {node.children.length > 0 ? <i className='bi bi-collection-fill'> </i> : <i className='bi bi-journal-text'> </i>}\r\n {node.data.name} {node.data.locked && <i className='bi bi-lock'> </i>}\r\n {node.data.moderated && <i className='bi bi-shield-exclamation'> </i>}\r\n {node.data.hidden && <i className='bi bi-search'> </i>}\r\n </div>\r\n </div>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { NodeApi, Tree } from 'react-arborist'\r\nimport { Button, FormGroup, FormText, Input, InputGroup, InputGroupText, Label, ListGroup, ListGroupItem } from 'reactstrap'\r\n\r\nimport { ForumTreeNode } from './ForumPermissionTreeNode'\r\nimport { IForumTreeObject } from './ForumPermissionTreeObject'\r\n\r\ninterface SelectForumAndGroupProps {\r\n loading: boolean\r\n forumTree: IForumTreeObject[]\r\n setSelectedTreeItem: React.Dispatch<React.SetStateAction<IForumTreeObject>>\r\n}\r\n\r\nconst selectTreeItem = (nodes: NodeApi<IForumTreeObject>[]): IForumTreeObject => {\r\n return nodes[0]?.data ?? null\r\n}\r\n\r\nexport default (props: SelectForumAndGroupProps) => {\r\n return (\r\n <React.Fragment>\r\n <Tree\r\n data={props.forumTree}\r\n openByDefault={true}\r\n width={400}\r\n height={400}\r\n indent={24}\r\n rowHeight={36}\r\n overscanCount={1}\r\n paddingTop={30}\r\n paddingBottom={10}\r\n padding={25 /* sets both */}\r\n disableMultiSelection={true}\r\n disableDrag={true}\r\n disableDrop={true}\r\n idAccessor={(d) => d.id.toString()}\r\n childrenAccessor={(d) => d.children}\r\n onSelect={(s) => props.setSelectedTreeItem(selectTreeItem(s))}\r\n >\r\n {ForumTreeNode}\r\n </Tree>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { setgroups } from 'process'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Alert, Button, Col, Fade, FormGroup, FormText, Input, InputGroup, InputGroupText, Label, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport {\r\n CreateForumPermissionGroupCommand,\r\n ForumGrants,\r\n ForumGroupGrants,\r\n ForumPermissionGroupsClient,\r\n ForumPermissionLevel,\r\n IAllForumGroupDto,\r\n IForumGrants,\r\n IForumGroupGrants,\r\n IUserDto,\r\n} from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport AddUserToPermissionsGroup from './AddUserToPermissionsGroup'\r\nimport { ForumPermission } from './ForumPermission'\r\nimport { IForumTreeObject } from './ForumPermissionTreeObject'\r\nimport GrantPanel from './GrantPanel'\r\nimport SelectForumAndGroup from './SelectForumAndGroup'\r\n\r\ninterface CreateNewForumPermissionGroupProps {\r\n setNewGroup: React.Dispatch<React.SetStateAction<number>>\r\n forumTree: IForumTreeObject[]\r\n setForumTree: React.Dispatch<React.SetStateAction<IForumTreeObject[]>>\r\n}\r\n\r\nexport default (props: CreateNewForumPermissionGroupProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [groupName, setGroupName] = useState<string>('')\r\n const [groupUsers, setGroupUsers] = useState<IUserDto[]>([])\r\n const [selectedTreeItem, setSelectedTreeItem] = useState<IForumTreeObject>(null)\r\n\r\n const submitForumPermissionGroup = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumPermissionGroupsClient()\r\n let command = new CreateForumPermissionGroupCommand()\r\n let users: string[] = []\r\n let forumGrants: ForumGrants[] = []\r\n let forumGroupGrants: ForumGroupGrants[] = []\r\n\r\n groupUsers.map((s, idx) => {\r\n users = [...users, s.id]\r\n })\r\n\r\n props.forumTree.map((s, idx) => {\r\n if (s.permission !== ForumPermission.Inherit) {\r\n let newGroupGrant: ForumGroupGrants = new ForumGroupGrants()\r\n let groupperm: ForumPermissionLevel = ForumPermissionLevel.Reader\r\n\r\n if (s.permission === ForumPermission.Viewer) {\r\n groupperm = ForumPermissionLevel.Reader\r\n } else if (s.permission === ForumPermission.Poster) {\r\n groupperm = ForumPermissionLevel.Poster\r\n } else if (s.permission === ForumPermission.Moderator) {\r\n groupperm = ForumPermissionLevel.Moderator\r\n }\r\n\r\n newGroupGrant.forumGroupId = s.entityId\r\n newGroupGrant.permissionLevel = groupperm\r\n forumGroupGrants = [...forumGroupGrants, newGroupGrant]\r\n }\r\n\r\n s.children.map((t, _idx) => {\r\n if (t.permission !== ForumPermission.Inherit) {\r\n let newGrant: ForumGrants = new ForumGrants()\r\n let perm: ForumPermissionLevel = ForumPermissionLevel.Reader\r\n\r\n if (t.permission === ForumPermission.Viewer) {\r\n perm = ForumPermissionLevel.Reader\r\n } else if (t.permission === ForumPermission.Poster) {\r\n perm = ForumPermissionLevel.Poster\r\n } else if (t.permission === ForumPermission.Moderator) {\r\n perm = ForumPermissionLevel.Moderator\r\n }\r\n\r\n newGrant.forumId = t.entityId\r\n newGrant.permissionLevel = perm\r\n forumGrants = [...forumGrants, newGrant]\r\n }\r\n })\r\n })\r\n\r\n command.groupName = groupName\r\n command.initialGroupMembers = users\r\n\r\n if (forumGroupGrants.length > 0) {\r\n command.initialForumGroupGrants = forumGroupGrants\r\n }\r\n\r\n if (forumGrants.length > 0) {\r\n command.initialForumGrants = forumGrants\r\n }\r\n\r\n const response = await client.create(command).then((response) => response)\r\n props.setNewGroup(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const checkIfNewGroupAllowed = (): boolean => {\r\n if (groupName.length > 0 && groupUsers.length > 0) {\r\n let treeChanged: boolean = false\r\n props.forumTree.map((s, idx) => {\r\n if (s.permission !== ForumPermission.Inherit) {\r\n treeChanged = true\r\n }\r\n\r\n s.children.map((t, _idx) => {\r\n if (t.permission !== ForumPermission.Inherit) {\r\n treeChanged = true\r\n }\r\n })\r\n })\r\n return treeChanged\r\n }\r\n return false\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Row className='mb-4'>\r\n <Col xs={12}>\r\n <InputGroup>\r\n <InputGroupText>Group Name</InputGroupText>\r\n <Input value={groupName} onChange={(e) => setGroupName(e.target.value)} />\r\n </InputGroup>\r\n </Col>\r\n </Row>\r\n <Row className='mb-4'>\r\n <Col xs={12}>\r\n <AddUserToPermissionsGroup loading={loading} users={groupUsers} setUsers={setGroupUsers} />\r\n </Col>\r\n </Row>\r\n <Row className='mb-4'>\r\n <Col xs={6}>\r\n <SelectForumAndGroup loading={loading} forumTree={props.forumTree} setSelectedTreeItem={setSelectedTreeItem} />\r\n </Col>\r\n <Col xs={6}>\r\n <GrantPanel\r\n loading={loading}\r\n setSelectedTreeItem={setSelectedTreeItem}\r\n selectedTreeItem={selectedTreeItem}\r\n forumTree={props.forumTree}\r\n setForumTree={props.setForumTree}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <Button color='primary' onClick={(e) => submitForumPermissionGroup()} disabled={!checkIfNewGroupAllowed()}>\r\n Submit New Forum Permission Group\r\n </Button>\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { ForumPermission } from './ForumPermission'\r\n\r\nexport interface IForumTreeObject {\r\n id: number\r\n entityId: number\r\n name: string\r\n description: string\r\n permission: ForumPermission\r\n locked: boolean\r\n hidden: boolean\r\n moderated: boolean\r\n children: IForumTreeObject[]\r\n}\r\n\r\nexport class ForumTreeObject implements IForumTreeObject {\r\n id: number\r\n entityId: number\r\n name: string\r\n description: string\r\n permission: ForumPermission\r\n locked: boolean\r\n hidden: boolean\r\n moderated: boolean\r\n children: IForumTreeObject[]\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Alert, Fade, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { ForumsClient, IAllForumGroupDto, IAllForumListingVm } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport HelmetPages from '../../helmet/HelmetPages'\r\nimport AdminPanel from '../AdminPanel'\r\nimport CreateNewForumPermissionGroup from './CreateNewForumPermissionGroup'\r\nimport { ForumPermission } from './ForumPermission'\r\nimport { ForumTreeObject, IForumTreeObject } from './ForumPermissionTreeObject'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [modGroup, setModGroup] = useState<number>(0)\r\n const [forums, setForums] = useState<IForumTreeObject[]>([])\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [hidden, setHidden] = useState<boolean>(true)\r\n\r\n useEffect(() => {\r\n if (modGroup > 0) {\r\n setHidden(false)\r\n const timer = setTimeout(() => {\r\n setHidden(true)\r\n }, 5000)\r\n return () => {\r\n clearTimeout(timer)\r\n }\r\n }\r\n }, [modGroup])\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumsClient()\r\n const response = await client.getAllForumsAndGroups().then((response) => response.toJSON() as Promise<IAllForumListingVm>)\r\n setForums(createForumTreeObjects(response.forumGroups))\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n const createForumTreeObjects = (groups: IAllForumGroupDto[]) => {\r\n var treeObjects: IForumTreeObject[] = []\r\n var index = 1\r\n\r\n groups.map((s, idx) => {\r\n let obj = new ForumTreeObject()\r\n\r\n obj.id = index\r\n obj.entityId = s.id\r\n obj.description = s.groupDescription\r\n obj.hidden = false\r\n obj.locked = false\r\n obj.moderated = false\r\n obj.name = s.groupName\r\n obj.permission = ForumPermission.Inherit\r\n obj.children = []\r\n\r\n index++\r\n\r\n s.forums.map((_, _idx) => {\r\n let child = new ForumTreeObject()\r\n\r\n child.id = index\r\n child.entityId = _.id\r\n child.description = _.description\r\n child.hidden = _.hidden\r\n child.locked = _.locked\r\n child.moderated = _.moderated\r\n child.name = _.name\r\n child.permission = ForumPermission.Inherit\r\n child.children = []\r\n\r\n index++\r\n\r\n obj.children = [...obj.children, child]\r\n })\r\n\r\n treeObjects = [...treeObjects, obj]\r\n })\r\n\r\n return treeObjects\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage Forum Permission Groups'} />\r\n <AdminPanel>\r\n <h1>Manage Forum Permission Groups</h1>\r\n <CreateNewForumPermissionGroup forumTree={forums} setForumTree={setForums} setNewGroup={setModGroup} />\r\n <Row className='my-2'>\r\n <Fade in={!hidden}>\r\n <Alert color='success' hidden={hidden}>\r\n Success!\r\n <br />\r\n {`The new mod group id ${modGroup} has been created!`}\r\n <br />\r\n </Alert>\r\n </Fade>\r\n </Row>\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\ninterface NewsOptionsProps {\r\n pageSize: number\r\n setPageSize: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: NewsOptionsProps) => {\r\n return (\r\n <React.Fragment>\r\n <label>\r\n Page Size:\r\n <select value={props.pageSize} onChange={(e) => props.setPageSize(parseInt(e.target.value, 10))}>\r\n <option value={50}>50</option>\r\n <option value={75}>75</option>\r\n <option value={100}>100</option>\r\n <option value={250}>250</option>\r\n </select>\r\n </label>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport ReactPaginate from 'react-paginate'\r\n\r\ninterface NewsPaginationProps {\r\n pageCount: number\r\n setPageChange: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: NewsPaginationProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex justify-content-end my-2'>\r\n <ReactPaginate\r\n previousLabel={'← Previous'}\r\n nextLabel={'Next →'}\r\n pageCount={props.pageCount}\r\n onPageChange={(p) => props.setPageChange(p.selected)}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n containerClassName={'pagination pagination-sm'}\r\n previousLinkClassName={'page-link'}\r\n nextLinkClassName={'page-link'}\r\n disabledClassName={'page-item disabled'}\r\n activeClassName={'page-item active'}\r\n activeLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n previousClassName={'page-item'}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n renderOnZeroPageCount={null}\r\n />\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button, Table } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport {\r\n DeleteDoomCentralEventCommand,\r\n DeleteNewsCommand,\r\n DoomCentralEventsClient,\r\n INewsListingItemDto,\r\n NewsClient,\r\n PublishNewsCommand,\r\n UnpublishNewsCommand,\r\n} from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface NewsTableProps {\r\n news: INewsListingItemDto[]\r\n setModNews: React.Dispatch<React.SetStateAction<number>>\r\n loading: boolean\r\n}\r\n\r\nexport default (props: NewsTableProps) => {\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const deleteSubmit = async (newsId: number) => {\r\n setLoading(true)\r\n try {\r\n let client = new NewsClient()\r\n let command = new DeleteNewsCommand()\r\n command.newsId = newsId\r\n const response = (await client.delete(newsId, command).then((response) => response)) as number\r\n props.setModNews(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const publishSubmit = async (newsId: number) => {\r\n setLoading(true)\r\n try {\r\n let client = new NewsClient()\r\n let command = new PublishNewsCommand()\r\n command.newsId = newsId\r\n const response = (await client.delete(newsId, command).then((response) => response)) as number\r\n props.setModNews(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const unpublishSubmit = async (newsId: number) => {\r\n setLoading(true)\r\n try {\r\n let client = new NewsClient()\r\n let command = new UnpublishNewsCommand()\r\n command.newsId = newsId\r\n const response = (await client.delete(newsId, command).then((response) => response)) as number\r\n props.setModNews(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Table>\r\n <tr>\r\n <th>Id</th>\r\n <th>Title</th>\r\n <th>Created By</th>\r\n <th>Published?</th>\r\n <th>Publish Date</th>\r\n <th>Publish</th>\r\n <th>Delete</th>\r\n </tr>\r\n <tbody>\r\n {props.news &&\r\n props.news.map((s, idx) => (\r\n <tr>\r\n <td>{s.id}</td>\r\n <td>{s.title}</td>\r\n <td>{s.newsPublisherDisplayName}</td>\r\n <td>{new Date(s.publishDate).toLocaleString()}</td>\r\n <td>\r\n <Button color='danger' onClick={(e) => deleteSubmit(s.id)} disabled={loading || props.loading}>\r\n Delete News\r\n </Button>\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </Table>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\n\r\nimport { INewsListingPageVm, INewsPaginatedListVm, NewsClient } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport HelmetPages from '../../helmet/HelmetPages'\r\nimport AdminPanel from '../AdminPanel'\r\nimport NewsOptions from './NewsOptions'\r\nimport NewsPagination from './NewsPagination'\r\nimport NewsTable from './NewsTable'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [modNews, setModNews] = useState<number>(0)\r\n const [news, setNews] = useState<INewsPaginatedListVm>(null)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [pageNumber, setPageNumber] = useState<number>(1)\r\n const [pageSize, setPageSize] = useState<number>(40)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new NewsClient()\r\n const response = await client.getNewsListingPage(pageNumber, pageSize).then((response) => response.toJSON() as Promise<INewsListingPageVm>)\r\n setNews(response.newsListing)\r\n } catch (e) {\r\n error.setError(JSON.parse(e.response))\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [modNews])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage News'} />\r\n <AdminPanel>\r\n <h1>Manage News</h1>\r\n <NewsPagination pageCount={news?.totalPages ?? 0} setPageChange={setPageNumber} />\r\n <NewsOptions pageSize={pageSize} setPageSize={setPageSize} />\r\n <NewsTable news={news?.newsList} setModNews={setModNews} loading={loading} />\r\n <NewsPagination pageCount={news?.totalPages ?? 0} setPageChange={setPageNumber} />\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button, Col, FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport { FileParameter, ReactionsClient } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface CreateNewReactionProps {\r\n setModReaction: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: CreateNewReactionProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [reactName, setReactName] = useState<string>('')\r\n const [reactFile, setReactFile] = useState<FileParameter>()\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const submitEmote = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ReactionsClient()\r\n const response = (await client.create(reactName, reactFile).then((response) => response)) as number\r\n props.setModReaction(response)\r\n setReactName('')\r\n setReactFile(null)\r\n } catch (e) {\r\n error.setError(JSON.parse(e.response))\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const handleSetFile = async (evt: React.ChangeEvent<HTMLInputElement>) => {\r\n const upload: FileParameter = {\r\n data: evt.target.files[0],\r\n fileName: evt.target.files[0].name,\r\n }\r\n setReactFile(upload)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <h2>Create Reaction</h2>\r\n <FormGroup row>\r\n <Label for='reactSelect' sm={2}>\r\n Reaction Name\r\n </Label>\r\n <Col sm={10}>\r\n <Input name='reactSelect' id='reactSelect' value={reactName} onChange={(e) => setReactName(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='ReactionFile' sm={2}>\r\n Reaction File\r\n </Label>\r\n <Col sm={10}>\r\n <input type='file' id='ReactionFile' name='ReactionFile' accept='image/png, image/jpeg' onChange={handleSetFile} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>\r\n <Button disabled={!reactName || !reactFile || loading} onClick={submitEmote}>\r\n Submit Reaction\r\n </Button>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { DeleteReactionCommand, IEmotesDto, IReactionsDto, IReactionsListVm, ReactionsClient } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface DeleteReactionProps {\r\n modReaction: number\r\n setModReaction: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: DeleteReactionProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [reactions, setReactions] = useState<IReactionsDto[]>(null)\r\n const [selectedReaction, setSelectedReaction] = useState<IReactionsDto>(null)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ReactionsClient()\r\n const response = await client.get().then((response) => response.toJSON() as Promise<IReactionsListVm>)\r\n setReactions(response.reactions)\r\n } catch (e) {\r\n error.setError(JSON.parse(e.response))\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [props.modReaction])\r\n\r\n const submitDeleteReaction = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ReactionsClient()\r\n let command = new DeleteReactionCommand()\r\n command.reactionId = selectedReaction.id\r\n const response = await client.delete(selectedReaction.id, command).then((response) => response as number)\r\n props.setModReaction(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <h2>Delete Reaction</h2>\r\n <FormGroup row>\r\n <Label>Reactions:</Label>\r\n <Col sm={10}>\r\n <Input\r\n type='select'\r\n value={selectedReaction?.id ?? 0}\r\n onChange={(e) => setSelectedReaction(reactions.find((f) => f.id === parseInt(e.target.value, 10)) ?? reactions[0])}\r\n disabled={loading || !reactions || reactions.length <= 0}\r\n >\r\n {reactions &&\r\n reactions.map((s, idx) => (\r\n <option value={s.id} key={s.id}>\r\n {s.reactName}\r\n </option>\r\n ))}\r\n </Input>\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>{selectedReaction && <img src={'/images/reactions/' + selectedReaction.reactFileName} />}</Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>\r\n <Button disabled={!reactions || reactions.length <= 0 || !selectedReaction || loading} onClick={submitDeleteReaction} color='danger'>\r\n Delete Reaction\r\n </Button>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\n\r\nimport { EmotesClient, IEmoteListVm, IEmotesDto } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport HelmetPages from '../../helmet/HelmetPages'\r\nimport AdminPanel from '../AdminPanel'\r\nimport CreateNewReaction from './CreateNewReaction'\r\nimport DeleteReaction from './DeleteReaction'\r\n\r\nexport default () => {\r\n const [modReaction, setModReaction] = useState<number>(0)\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage Reactions'} />\r\n <AdminPanel>\r\n <h1>Manage Reactions</h1>\r\n <CreateNewReaction setModReaction={setModReaction} />\r\n <hr />\r\n <DeleteReaction modReaction={modReaction} setModReaction={setModReaction} />\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { countries } from '../../../countries'\r\nimport { Country, EmotesClient, FileParameter, ICountry, StreamPlatform, StreamerClient } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface CreateNewStreamerProps {\r\n setModStreamer: React.Dispatch<React.SetStateAction<number>>\r\n countries: ICountry[]\r\n}\r\n\r\nexport default (props: CreateNewStreamerProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [streamerId, setStreamerId] = useState<string>('')\r\n const [streamerName, setStreamerName] = useState<string>('')\r\n const [countryCode, setCountryCode] = useState<string>('')\r\n const [platform, setPlatform] = useState<StreamPlatform>(StreamPlatform.Twitch)\r\n const [streamerProfileFile, setStreamerProfileFile] = useState<FileParameter>()\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const submitEmote = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new StreamerClient()\r\n const response = (await client.create(streamerId, streamerName, countryCode, platform, streamerProfileFile).then((response) => response)) as number\r\n props.setModStreamer(response)\r\n setStreamerId('')\r\n setStreamerName('')\r\n setCountryCode(props.countries[0]?.countryCode ?? '')\r\n setPlatform(StreamPlatform.Twitch)\r\n setStreamerProfileFile(null)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const handleSetFile = async (evt: React.ChangeEvent<HTMLInputElement>) => {\r\n const upload: FileParameter = {\r\n data: evt.target.files[0],\r\n fileName: evt.target.files[0].name,\r\n }\r\n setStreamerProfileFile(upload)\r\n }\r\n\r\n useEffect(() => {\r\n if (props.countries && props.countries.length > 0) {\r\n setCountryCode(props.countries[0].countryCode)\r\n }\r\n }, [props.countries])\r\n\r\n return (\r\n <React.Fragment>\r\n <h2>Create Streamer</h2>\r\n <FormGroup row>\r\n <Label for='streamerName' sm={2}>\r\n Streamer Name\r\n </Label>\r\n <Col sm={10}>\r\n <Input id='streamerName' name='streamerName' value={streamerName} onChange={(e) => setStreamerName(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='streamerId' sm={2}>\r\n Streamer Id\r\n </Label>\r\n <Col sm={10}>\r\n <Input id='streamerId' name='streamerId' value={streamerId} onChange={(e) => setStreamerId(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='streamPlatform' sm={2}>\r\n Stream Platform\r\n </Label>\r\n <Col sm={10}>\r\n <Input type='select' name='region' id='region' value={StreamPlatform[platform]} onChange={(e) => setPlatform(StreamPlatform[e.target.value])}>\r\n {(Object.keys(StreamPlatform).filter((v) => !isNaN(Number(v))) as (keyof typeof StreamPlatform)[]).map((key, index) => (\r\n <option key={key} value={StreamPlatform[key]}>\r\n {StreamPlatform[key]}\r\n </option>\r\n ))}\r\n </Input>\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='countries' sm={2}>\r\n Streamer Nationality\r\n </Label>\r\n <Col sm={10}>\r\n <Input type='select' name='countries' id='countries' value={countryCode} onChange={(e) => setCountryCode(e.target.value)}>\r\n {props.countries &&\r\n props.countries.length > 0 &&\r\n props.countries.map((key, index) => (\r\n <option key={key.countryCode} value={key.countryCode}>\r\n {key.countryCode + ' | ' + new Intl.DisplayNames(['en'], { type: 'region' }).of(key.countryCode)}\r\n </option>\r\n ))}\r\n </Input>\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>\r\n {countryCode && (\r\n <img width='200px' height='150px' className='img-thumbnail' src={'https://purecatamphetamine.github.io/country-flag-icons/3x2/' + countryCode + '.svg'} />\r\n )}\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='streamerPic' sm={2}>\r\n Streamer Profile Pic\r\n </Label>\r\n <Col sm={10}>\r\n <input type='file' id='streamerPic' name='streamerPic' accept='image/png, image/jpeg' onChange={handleSetFile} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>\r\n <Button disabled={!streamerId || !streamerName || !countryCode || loading} onClick={submitEmote}>\r\n Submit Streamer\r\n </Button>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { DeleteStreamerCommand, IStreamListVm, IStreamerDto, StreamerClient } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\n\r\ninterface DeleteStreamerProps {\r\n modStreamer: number\r\n setModStreamer: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: DeleteStreamerProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [streamers, setStreamers] = useState<IStreamerDto[]>(null)\r\n const [selectedStreamer, setSelectedStreamer] = useState<IStreamerDto>(null)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new StreamerClient()\r\n const response = await client.get().then((response) => response.toJSON() as Promise<IStreamListVm>)\r\n setStreamers(response.streamers)\r\n setSelectedStreamer(response.streamers[0] ?? null)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [props.modStreamer])\r\n\r\n const submitDeleteStreamer = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new StreamerClient()\r\n let command = new DeleteStreamerCommand()\r\n command.streamId = selectedStreamer.id\r\n const response = await client.delete(selectedStreamer.id, command).then((response) => response as number)\r\n props.setModStreamer(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <h2>Delete Streamer</h2>\r\n <FormGroup row>\r\n <Label>Streamer:</Label>\r\n <Col sm={10}>\r\n <Input\r\n type='select'\r\n value={selectedStreamer?.id ?? 0}\r\n onChange={(e) => setSelectedStreamer(streamers.find((f) => f.id === parseInt(e.target.value, 10)) ?? streamers[0])}\r\n disabled={loading || !streamers || streamers.length <= 0}\r\n >\r\n {streamers &&\r\n streamers.map((s, idx) => (\r\n <option value={s.id} key={s.id}>\r\n {s.channelName}\r\n </option>\r\n ))}\r\n </Input>\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Col>\r\n <Button disabled={!streamers || streamers.length <= 0 || !selectedStreamer || loading} onClick={submitDeleteStreamer} color='danger'>\r\n Delete Streamer\r\n </Button>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { CountriesClient, ICountry, ICountryListVm } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport HelmetPages from '../../helmet/HelmetPages'\r\nimport AdminPanel from '../AdminPanel'\r\nimport CreateNewStreamer from './CreateNewStreamer'\r\nimport DeleteStreamer from './DeleteStreamer'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [modStreamer, setModStreamer] = useState<number>(0)\r\n const [countries, setCountries] = useState<ICountry[]>([])\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n let client = new CountriesClient()\r\n const response = await client.get().then((response) => response.toJSON() as Promise<ICountryListVm>)\r\n setCountries(response.countries)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage Streamer'} />\r\n <AdminPanel>\r\n <h1>Manage Streamer</h1>\r\n <CreateNewStreamer countries={countries} setModStreamer={setModStreamer} />\r\n <hr />\r\n <DeleteStreamer modStreamer={modStreamer} setModStreamer={setModStreamer} />\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"className\", \"cssModule\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar Form = /*#__PURE__*/function (_Component) {\n _inherits(Form, _Component);\n var _super = _createSuper(Form);\n function Form(props) {\n var _this;\n _classCallCheck(this, Form);\n _this = _super.call(this, props);\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.submit = _this.submit.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(Form, [{\n key: \"getRef\",\n value: function getRef(ref) {\n if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n this.ref = ref;\n }\n }, {\n key: \"submit\",\n value: function submit() {\n if (this.ref) {\n this.ref.submit();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n _this$props$tag = _this$props.tag,\n Tag = _this$props$tag === void 0 ? 'form' : _this$props$tag,\n innerRef = _this$props.innerRef,\n attributes = _objectWithoutProperties(_this$props, _excluded);\n var classes = mapToCssModules(className, cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n ref: innerRef,\n className: classes\n }));\n }\n }]);\n return Form;\n}(Component);\nForm.propTypes = propTypes;\nexport default Form;","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, Form, FormGroup, Input, Label, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../../ErrorResponse'\r\nimport { AwardBadgeCommand, BadgesClient, IUserBadgeDto, IUserBadgeReportVm, IUserDto, RevokeBadgeCommand, SetPreferredBadgeCommand } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\n\r\ninterface UserBadgesProps {\r\n selectedUser: IUserDto\r\n setModUser: React.Dispatch<React.SetStateAction<string>>\r\n userBadges: IUserBadgeDto[]\r\n availableBadges: IUserBadgeDto[]\r\n setHidden: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: UserBadgesProps) => {\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [userBadge, setUserBadge] = useState<IUserBadgeDto>(null)\r\n const [allBadge, setAllBadge] = useState<IUserBadgeDto>(null)\r\n\r\n useEffect(() => {\r\n if (props.userBadges && props.userBadges.length > 0) {\r\n setUserBadge(props.userBadges[0])\r\n } else {\r\n setUserBadge(null)\r\n }\r\n }, [props.userBadges])\r\n\r\n useEffect(() => {\r\n if (props.availableBadges && props.availableBadges.length > 0) {\r\n setAllBadge(props.availableBadges[0])\r\n } else {\r\n setAllBadge(null)\r\n }\r\n }, [props.availableBadges])\r\n\r\n const setPreferredBadge = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new BadgesClient()\r\n const command = new SetPreferredBadgeCommand()\r\n command.badgeOwnerId = userBadge.id\r\n const response = await client.setPreferredBadge(command).then((response) => response as number)\r\n props.setModUser(props.selectedUser.id)\r\n props.setHidden(false)\r\n const timer = setTimeout(() => {\r\n props.setHidden(true)\r\n }, 5000)\r\n return () => {\r\n clearTimeout(timer)\r\n setLoading(false)\r\n }\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const revokeBadge = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new BadgesClient()\r\n const command = new RevokeBadgeCommand()\r\n command.badgeOwnerId = userBadge.id\r\n const response = await client.revoke(command).then((response) => response as number)\r\n props.setModUser(props.selectedUser.id)\r\n props.setHidden(false)\r\n const timer = setTimeout(() => {\r\n props.setHidden(true)\r\n }, 5000)\r\n return () => {\r\n clearTimeout(timer)\r\n setLoading(false)\r\n }\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const awardBadge = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new BadgesClient()\r\n const command = new AwardBadgeCommand()\r\n command.badgeId = allBadge.id\r\n command.badgeOwner = props.selectedUser.id\r\n const response = await client.award(command).then((response) => response as number)\r\n props.setModUser(props.selectedUser.id)\r\n props.setHidden(false)\r\n const timer = setTimeout(() => {\r\n props.setHidden(true)\r\n }, 5000)\r\n return () => {\r\n clearTimeout(timer)\r\n setLoading(false)\r\n }\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n {props.selectedUser && (\r\n <React.Fragment>\r\n <Form>\r\n <Row>\r\n <Col md={6}>\r\n <FormGroup>\r\n <Label for='userbadgeselect'>User Badges</Label>\r\n <Input\r\n type='select'\r\n value={userBadge?.id ?? 0}\r\n name='userbadgeselect'\r\n id='userbadgeselect'\r\n onChange={(e) => setUserBadge(props.userBadges.find((f) => f.id === parseInt(e.currentTarget.value)) ?? props.userBadges[0])}\r\n disabled={loading || !props.userBadges || props.userBadges.length <= 0}\r\n >\r\n {props.userBadges &&\r\n props.userBadges.map((s, idx) => (\r\n <option value={s.id} key={s.id}>\r\n {s.badgeName} ({s.badgeFileName})\r\n </option>\r\n ))}\r\n </Input>\r\n </FormGroup>\r\n </Col>\r\n <Col md={6}>\r\n <FormGroup>\r\n <Label for='allbadgeselect'>All Badges</Label>\r\n <Input\r\n type='select'\r\n value={allBadge?.id ?? 0}\r\n name='allbadgeselect'\r\n id='allbadgeselect'\r\n onChange={(e) => setAllBadge(props.availableBadges.find((f) => f.id === parseInt(e.currentTarget.value)) ?? props.availableBadges[0])}\r\n disabled={loading || !props.availableBadges || props.availableBadges.length <= 0}\r\n >\r\n {props.availableBadges &&\r\n props.availableBadges.map((s, idx) => (\r\n <option value={s.id} key={s.id}>\r\n {s.badgeName} ({s.badgeFileName})\r\n </option>\r\n ))}\r\n </Input>\r\n </FormGroup>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col md={6}>\r\n <FormGroup>{userBadge && <img src={'/images/badges/' + userBadge.badgeFileName} />}</FormGroup>\r\n </Col>\r\n <Col md={6}>\r\n <FormGroup>{allBadge && <img src={'/images/badges/' + allBadge.badgeFileName} />}</FormGroup>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col md={6}>\r\n <FormGroup>\r\n <Button onClick={setPreferredBadge} color='primary' disabled={loading || !props.userBadges || props.userBadges.length <= 0} className='my-2'>\r\n Set Preferred Badge\r\n </Button>\r\n </FormGroup>\r\n </Col>\r\n <Col md={6}>\r\n <FormGroup>\r\n <Button onClick={awardBadge} disabled={loading || !props.availableBadges || props.availableBadges.length <= 0} className='my-2'>\r\n Award User Badge\r\n </Button>\r\n </FormGroup>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col md={6}>\r\n <FormGroup>\r\n <Button onClick={revokeBadge} color='danger' disabled={loading || !props.userBadges || props.userBadges.length <= 0} className='my-2'>\r\n Remove Badge from User\r\n </Button>\r\n </FormGroup>\r\n </Col>\r\n <Col md={6}></Col>\r\n </Row>\r\n </Form>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, FormGroup, Input, Label, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../../ErrorResponse'\r\nimport { IUserDto, SetBanForUserCommand, UsersClient } from '../../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../../state'\r\n\r\ninterface UserBanProps {\r\n selectedUser: IUserDto\r\n setModUser: React.Dispatch<React.SetStateAction<string>>\r\n setHidden: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: UserBanProps) => {\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [banned, setBanned] = useState<boolean>(false)\r\n\r\n useEffect(() => {\r\n if (props.selectedUser) {\r\n setBanned(props.selectedUser.banned)\r\n }\r\n }, [props.selectedUser])\r\n\r\n const submitBan = async () => {\r\n if (props.selectedUser) {\r\n setLoading(true)\r\n try {\r\n let client = new UsersClient()\r\n const command = new SetBanForUserCommand()\r\n command.userId = props.selectedUser.id\r\n command.banned = banned\r\n const response = await client.setBanForUser(command).then((response) => response as boolean)\r\n props.setModUser(props.selectedUser.id)\r\n props.setHidden(false)\r\n const timer = setTimeout(() => {\r\n props.setHidden(true)\r\n }, 5000)\r\n return () => {\r\n clearTimeout(timer)\r\n setLoading(false)\r\n }\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <p>User Bans</p>\r\n {props.selectedUser && (\r\n <Row>\r\n <Col>\r\n <FormGroup check>\r\n <Label check>\r\n <Input type='checkbox' checked={banned} onChange={(e) => setBanned(e.target.checked)} />\r\n User Banned\r\n </Label>\r\n </FormGroup>\r\n </Col>\r\n </Row>\r\n )}\r\n <Row>\r\n <Button color='primary' onClick={(e) => submitBan()}>\r\n Submit Ban\r\n </Button>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Form, FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../../ErrorResponse'\r\nimport { IUserDto, SetRolesForUserCommand, UsersClient } from '../../../../lib/DoomCentral'\r\nimport DoomCentralEventRoles from '../../../../lib/DoomCentralEventRoles'\r\nimport DoomCentralRoles from '../../../../lib/DoomCentralRoles'\r\nimport ForumRoles from '../../../../lib/ForumRoles'\r\nimport NewsPostRoles from '../../../../lib/NewsPostRoles'\r\nimport { ErrorContext } from '../../../../state'\r\n\r\ninterface UserRolesProps {\r\n selectedUser: IUserDto\r\n setModUser: React.Dispatch<React.SetStateAction<string>>\r\n userRoles: string[]\r\n setHidden: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: UserRolesProps) => {\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [doomCentralUser, setDoomCentralUser] = useState<boolean>(false)\r\n const [globalAdministrator, setGlobalAdministrator] = useState<boolean>(false)\r\n const [globalEventAdministrator, setGlobalEventAdministrator] = useState<boolean>(false)\r\n const [globalForumAdministrator, setGlobalForumAdministrator] = useState<boolean>(false)\r\n const [globalNewsAdministrator, setGlobalNewsAdministrator] = useState<boolean>(false)\r\n const [eventOrganizer, setEventOrganizer] = useState<boolean>(false)\r\n const [promotionAdministrator, setPromotionAdministrator] = useState<boolean>(false)\r\n const [newsAuthor, setNewsAuthor] = useState<boolean>(false)\r\n\r\n useEffect(() => {\r\n setDoomCentralUser(false)\r\n setGlobalAdministrator(false)\r\n setGlobalEventAdministrator(false)\r\n setGlobalForumAdministrator(false)\r\n setGlobalNewsAdministrator(false)\r\n setEventOrganizer(false)\r\n setPromotionAdministrator(false)\r\n setNewsAuthor(false)\r\n\r\n props.userRoles &&\r\n props.userRoles.map((s, idx) => {\r\n if (s === DoomCentralRoles.DoomCentralUser) {\r\n setDoomCentralUser(true)\r\n } else if (s === DoomCentralRoles.GlobalAdministrator) {\r\n setGlobalAdministrator(true)\r\n } else if (s === DoomCentralEventRoles.GlobalEventAdministrator) {\r\n setGlobalEventAdministrator(true)\r\n } else if (s === ForumRoles.GlobalForumAdministrator) {\r\n setGlobalForumAdministrator(true)\r\n } else if (s === NewsPostRoles.GlobalNewsAdministrator) {\r\n setGlobalNewsAdministrator(true)\r\n } else if (s === DoomCentralEventRoles.EventOrganizer) {\r\n setEventOrganizer(true)\r\n } else if (s === DoomCentralRoles.PromotionAdministrator) {\r\n setPromotionAdministrator(true)\r\n } else if (s === NewsPostRoles.NewsAuthor) {\r\n setNewsAuthor(true)\r\n }\r\n })\r\n }, [props.userRoles])\r\n\r\n const createRolesArray = (): string[] => {\r\n let roles: string[] = []\r\n\r\n if (doomCentralUser) {\r\n roles.push(DoomCentralRoles.DoomCentralUser)\r\n }\r\n if (globalAdministrator) {\r\n roles.push(DoomCentralRoles.GlobalAdministrator)\r\n }\r\n if (globalEventAdministrator) {\r\n roles.push(DoomCentralEventRoles.GlobalEventAdministrator)\r\n }\r\n if (globalForumAdministrator) {\r\n roles.push(ForumRoles.GlobalForumAdministrator)\r\n }\r\n if (globalNewsAdministrator) {\r\n roles.push(NewsPostRoles.GlobalNewsAdministrator)\r\n }\r\n if (eventOrganizer) {\r\n roles.push(DoomCentralEventRoles.EventOrganizer)\r\n }\r\n if (promotionAdministrator) {\r\n roles.push(DoomCentralRoles.PromotionAdministrator)\r\n }\r\n if (newsAuthor) {\r\n roles.push(NewsPostRoles.NewsAuthor)\r\n }\r\n\r\n return roles\r\n }\r\n\r\n const submitNewUserRoles = async () => {\r\n if (props.selectedUser) {\r\n setLoading(true)\r\n try {\r\n let client = new UsersClient()\r\n const command = new SetRolesForUserCommand()\r\n command.userId = props.selectedUser.id\r\n command.roles = createRolesArray()\r\n const response = await client.setRoleForUser(command).then((response) => response as boolean)\r\n props.setModUser(props.selectedUser.id)\r\n props.setHidden(false)\r\n const timer = setTimeout(() => {\r\n props.setHidden(true)\r\n }, 5000)\r\n return () => {\r\n clearTimeout(timer)\r\n setLoading(false)\r\n }\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <p>User Roles</p>\r\n <Form>\r\n <FormGroup check>\r\n <ul>\r\n <li>\r\n <Label check>\r\n <Input\r\n type='checkbox'\r\n name={'doomCentralUser'}\r\n id={'doomCentralUser'}\r\n onChange={(e) => setDoomCentralUser(e.target.checked)}\r\n checked={doomCentralUser}\r\n />\r\n Doom Central User\r\n </Label>\r\n </li>\r\n <li>\r\n <Label check>\r\n <Input\r\n type='checkbox'\r\n name={'globalAdministrator'}\r\n id={'globalAdministrator'}\r\n onChange={(e) => setGlobalAdministrator(e.target.checked)}\r\n checked={globalAdministrator}\r\n />\r\n Global Administrator\r\n </Label>\r\n </li>\r\n <li>\r\n <Label check>\r\n <Input\r\n type='checkbox'\r\n name={'globalEventAdministrator'}\r\n id={'globalEventAdministrator'}\r\n onChange={(e) => setGlobalEventAdministrator(e.target.checked)}\r\n checked={globalEventAdministrator}\r\n />\r\n Global Event Administrator\r\n </Label>\r\n </li>\r\n <li>\r\n <Label check>\r\n <Input\r\n type='checkbox'\r\n name={'globalForumAdministrator'}\r\n id={'globalForumAdministrator'}\r\n onChange={(e) => setGlobalForumAdministrator(e.target.checked)}\r\n checked={globalForumAdministrator}\r\n />\r\n Global Forum Administrator\r\n </Label>\r\n </li>\r\n <li>\r\n <Label check>\r\n <Input\r\n type='checkbox'\r\n name={'globalNewsAdministrator'}\r\n id={'globalNewsAdministrator'}\r\n onChange={(e) => setGlobalNewsAdministrator(e.target.checked)}\r\n checked={globalNewsAdministrator}\r\n />\r\n Global News Administrator\r\n </Label>\r\n </li>\r\n <li>\r\n <Label check>\r\n <Input\r\n type='checkbox'\r\n name={'eventOrganizer'}\r\n id={'eventOrganizer'}\r\n onChange={(e) => setEventOrganizer(e.target.checked)}\r\n checked={eventOrganizer}\r\n />\r\n Event Organizer\r\n </Label>\r\n </li>\r\n <li>\r\n <Label check>\r\n <Input\r\n type='checkbox'\r\n name={'promotionAdministrator'}\r\n id={'promotionAdministrator'}\r\n onChange={(e) => setPromotionAdministrator(e.target.checked)}\r\n checked={promotionAdministrator}\r\n />\r\n Promotion Administrator\r\n </Label>\r\n </li>\r\n <li>\r\n <Label check>\r\n <Input type='checkbox' name={'newsAuthor'} id={'newsAuthor'} onChange={(e) => setNewsAuthor(e.target.checked)} checked={newsAuthor} />\r\n News Author\r\n </Label>\r\n </li>\r\n </ul>\r\n </FormGroup>\r\n <Button color='primary' onClick={(e) => submitNewUserRoles()}>\r\n Submit Roles\r\n </Button>\r\n </Form>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Alert, Col, Fade, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { IUserDto, IUserSummaryVm, UsersClient } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport UserBadges from './useractionpanel/UserBadges'\r\nimport UserBan from './useractionpanel/UserBan'\r\nimport UserRoles from './useractionpanel/UserRoles'\r\n\r\ninterface UserTableProps {\r\n selectedUser: IUserDto\r\n modUser: string\r\n setModUser: React.Dispatch<React.SetStateAction<string>>\r\n hidden: boolean\r\n setHidden: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: UserTableProps) => {\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [userSummary, setUserSummary] = useState<IUserSummaryVm>(null)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (props.selectedUser) {\r\n setLoading(true)\r\n try {\r\n let client = new UsersClient()\r\n const response = await client.getSummaryForUser(props.selectedUser.id).then((response) => response.toJSON() as Promise<IUserSummaryVm>)\r\n setUserSummary(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n }\r\n\r\n fetchData()\r\n }, [props.modUser, props.selectedUser])\r\n\r\n return (\r\n <React.Fragment>\r\n {props.selectedUser && (\r\n <Row className='my-2 py-2 border'>\r\n <Col>\r\n <UserRoles selectedUser={props.selectedUser} setModUser={props.setModUser} userRoles={userSummary?.userRoles} setHidden={props.setHidden} />\r\n </Col>\r\n <Col>\r\n <UserBan selectedUser={props.selectedUser} setModUser={props.setModUser} setHidden={props.setHidden} />\r\n </Col>\r\n <hr className='mt-4' />\r\n <Row>\r\n <UserBadges\r\n selectedUser={props.selectedUser}\r\n setModUser={props.setModUser}\r\n userBadges={userSummary?.userBadges}\r\n availableBadges={userSummary?.availableBadges}\r\n setHidden={props.setHidden}\r\n />\r\n </Row>\r\n </Row>\r\n )}\r\n <Row>\r\n <Fade in={!props.hidden}>\r\n <Alert color='success' hidden={props.hidden}>\r\n Changes have been saved successfully!\r\n </Alert>\r\n </Fade>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\ninterface UserOptionsProps {\r\n pageSize: number\r\n setPageSize: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: UserOptionsProps) => {\r\n return (\r\n <React.Fragment>\r\n <label>\r\n Page Size:\r\n <select value={props.pageSize} onChange={(e) => props.setPageSize(parseInt(e.target.value, 10))}>\r\n <option value={50}>50</option>\r\n <option value={75}>75</option>\r\n <option value={100}>100</option>\r\n <option value={250}>250</option>\r\n </select>\r\n </label>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport ReactPaginate from 'react-paginate'\r\n\r\ninterface UserPaginationProps {\r\n pageCount: number\r\n setPageChange: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: UserPaginationProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex justify-content-end my-2'>\r\n <ReactPaginate\r\n previousLabel={'← Previous'}\r\n nextLabel={'Next →'}\r\n pageCount={props.pageCount}\r\n onPageChange={(p) => props.setPageChange(p.selected)}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n containerClassName={'pagination pagination-sm'}\r\n previousLinkClassName={'page-link'}\r\n nextLinkClassName={'page-link'}\r\n disabledClassName={'page-item disabled'}\r\n activeClassName={'page-item active'}\r\n activeLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n previousClassName={'page-item'}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n renderOnZeroPageCount={null}\r\n />\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Input, Table } from 'reactstrap'\r\n\r\nimport { IUserDto } from '../../../lib/DoomCentral'\r\n\r\ninterface UserTableProps {\r\n users: IUserDto[]\r\n setSelectedUser: React.Dispatch<React.SetStateAction<IUserDto>>\r\n}\r\n\r\nexport default (props: UserTableProps) => {\r\n const selectUser = (id: string) => {\r\n props.setSelectedUser(props.users.find((f) => f.id == id) ?? props.users[0])\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Table>\r\n <thead>\r\n <tr key='header'>\r\n <th> </th>\r\n <th>User Id</th>\r\n <th>User Name</th>\r\n <th>User Banned?</th>\r\n <th>Lockout Enabled</th>\r\n <th>Locked out until</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {props.users &&\r\n props.users.map((s, idx) => (\r\n <tr key={s.id}>\r\n <td>\r\n <Input type='radio' name='usergroup' value={s.id} onClick={(s) => selectUser(s.currentTarget.value)} />\r\n </td>\r\n <td>{s.id}</td>\r\n <td>\r\n <NavLink to={`/user/${s.userName}`}>{s.userName}</NavLink>\r\n </td>\r\n <td>\r\n {!s.banned && '❌'}\r\n {s.banned && '✔️'}\r\n </td>\r\n <td>\r\n {!s.lockoutEnabled && '❌'}\r\n {s.lockoutEnabled && '✔️'}\r\n </td>\r\n <td>{s.lockoutEnd?.toISOString() ?? 'No lockout'}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </Table>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\n\r\nimport { IErrorResponse } from '../../../ErrorResponse'\r\nimport { IUserDto, IUsersVm, UsersClient } from '../../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../../state'\r\nimport HelmetPages from '../../helmet/HelmetPages'\r\nimport AdminPanel from '../AdminPanel'\r\nimport UserActionPanel from './UserActionPanel'\r\nimport UserOptions from './UserOptions'\r\nimport UserPagination from './UserPagination'\r\nimport UserTable from './UserTable'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [modUser, setModUser] = useState<string>('')\r\n const [users, setUsers] = useState<IUsersVm>(null)\r\n const [selectedUser, setSelectedUser] = useState<IUserDto>(null)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [pageNumber, setPageNumber] = useState<number>(1)\r\n const [pageSize, setPageSize] = useState<number>(40)\r\n const [hidden, setHidden] = useState<boolean>(true)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new UsersClient()\r\n const response = await client.get(pageNumber, pageSize).then((response) => response.toJSON() as Promise<IUsersVm>)\r\n setUsers(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage Users'} />\r\n <AdminPanel>\r\n <h1>Manage Users</h1>\r\n <UserPagination pageCount={users?.totalPages ?? 0} setPageChange={setPageNumber} />\r\n <UserOptions pageSize={pageSize} setPageSize={setPageSize} />\r\n <UserTable users={users?.userList} setSelectedUser={setSelectedUser} />\r\n <UserPagination pageCount={users?.totalPages ?? 0} setPageChange={setPageNumber} />\r\n <UserActionPanel selectedUser={selectedUser} modUser={modUser} setModUser={setModUser} hidden={hidden} setHidden={setHidden} />\r\n </AdminPanel>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { NavLink } from 'react-router-dom'\r\n\r\nexport default () => {\r\n return (\r\n <div>\r\n <p className='fs-2 text-danger mx-auto text-center'>Access Denied</p>\r\n <p className='mx-auto text-center'>You probably shouldn't be here. But you can't stay.</p>\r\n <p className='mx-auto text-center'>\r\n Please <NavLink to={'/'}> Go Home</NavLink>\r\n </p>\r\n </div>\r\n )\r\n}\r\n","import { containsDuplicate, convertStringArray } from '@/utils/helpers'\r\nimport React from 'react'\r\nimport { Component } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { Redirect, Route } from 'react-router'\r\n\r\nimport { ApplicationPaths, QueryParameterNames } from '../../configuration'\r\nimport AccessDenied from './AccessDenied'\r\n\r\ninterface AuthorizeRouteProps {\r\n exact?: boolean\r\n path: string\r\n component: React.FC\r\n componentroles: string[] | string\r\n}\r\n\r\nconst AuthorizeRoute = (props: AuthorizeRouteProps) => {\r\n const auth = useAuth()\r\n\r\n var link = document.createElement('a')\r\n link.href = props.path\r\n const returnUrl = `${link.protocol}//${link.host}${link.pathname}${link.search}${link.hash}`\r\n const loginRedirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURIComponent(returnUrl)}`\r\n if (auth.isLoading) {\r\n return <div></div>\r\n } else {\r\n return (\r\n <Route\r\n path={props.path}\r\n render={(renderprops) => {\r\n if (auth.user?.expired || !auth.isAuthenticated) {\r\n return <Redirect {...renderprops} to={loginRedirectUrl} />\r\n } else if (!containsDuplicate(props.componentroles, auth.user?.profile.role as string[])) {\r\n return <AccessDenied />\r\n } else {\r\n return <props.component />\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n}\r\n\r\nexport default AuthorizeRoute\r\n","import * as React from 'react'\r\nimport { Switch } from 'react-router'\r\n\r\nimport DoomCentralEventRoles from '../../lib/DoomCentralEventRoles'\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport ForumRoles from '../../lib/ForumRoles'\r\nimport NewsPostRoles from '../../lib/NewsPostRoles'\r\nimport StreamerRoles from '../../lib/StreamerRoles'\r\nimport AdminHome from '../admin/AdminHome'\r\nimport ManageBadges from '../admin/managebadges/ManageBadges'\r\nimport ManageEmotes from '../admin/manageemotes/ManageEmotes'\r\nimport ManageEvents from '../admin/manageevents/ManageEvents'\r\nimport ManageForums from '../admin/manageforum/ManageForums'\r\nimport ManageForumPermissionGroups from '../admin/manageforumpermissiongroups/ManageForumPermissionGroups'\r\nimport ManageNews from '../admin/managenews/ManageNews'\r\nimport ManageReactions from '../admin/managereactions/ManageReactions'\r\nimport ManageStreamer from '../admin/managestreamers/ManageStreamer'\r\nimport ManageUsers from '../admin/manageusers/ManageUsers'\r\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute'\r\n\r\nexport default () => (\r\n <React.Fragment>\r\n <Switch>\r\n <AuthorizeRoute\r\n exact\r\n path='/admin'\r\n component={AdminHome}\r\n componentroles={[\r\n DoomCentralRoles.GlobalAdministrator,\r\n DoomCentralRoles.PromotionAdministrator,\r\n ForumRoles.GlobalForumAdministrator,\r\n DoomCentralEventRoles.GlobalEventAdministrator,\r\n NewsPostRoles.GlobalNewsAdministrator,\r\n ]}\r\n />\r\n <AuthorizeRoute path='/admin/manageforums' component={ManageForums} componentroles={[DoomCentralRoles.GlobalAdministrator, ForumRoles.GlobalForumAdministrator]} />\r\n <AuthorizeRoute\r\n path='/admin/manageforumpermissiongroups'\r\n component={ManageForumPermissionGroups}\r\n componentroles={[DoomCentralRoles.GlobalAdministrator, ForumRoles.GlobalForumAdministrator]}\r\n />\r\n <AuthorizeRoute\r\n path='/admin/manageusers'\r\n component={ManageUsers}\r\n componentroles={[\r\n DoomCentralRoles.GlobalAdministrator,\r\n ForumRoles.GlobalForumAdministrator,\r\n DoomCentralEventRoles.GlobalEventAdministrator,\r\n NewsPostRoles.GlobalNewsAdministrator,\r\n ]}\r\n />\r\n <AuthorizeRoute\r\n path='/admin/manageemotes'\r\n component={ManageEmotes}\r\n componentroles={[\r\n DoomCentralRoles.GlobalAdministrator,\r\n ForumRoles.GlobalForumAdministrator,\r\n DoomCentralEventRoles.GlobalEventAdministrator,\r\n NewsPostRoles.GlobalNewsAdministrator,\r\n ]}\r\n />\r\n <AuthorizeRoute\r\n path='/admin/managebadges'\r\n component={ManageBadges}\r\n componentroles={[\r\n DoomCentralRoles.GlobalAdministrator,\r\n ForumRoles.GlobalForumAdministrator,\r\n DoomCentralEventRoles.GlobalEventAdministrator,\r\n NewsPostRoles.GlobalNewsAdministrator,\r\n ]}\r\n />\r\n <AuthorizeRoute\r\n path='/admin/managereactions'\r\n component={ManageReactions}\r\n componentroles={[\r\n DoomCentralRoles.GlobalAdministrator,\r\n ForumRoles.GlobalForumAdministrator,\r\n DoomCentralEventRoles.GlobalEventAdministrator,\r\n NewsPostRoles.GlobalNewsAdministrator,\r\n ]}\r\n />\r\n <AuthorizeRoute\r\n path='/admin/manageevents'\r\n component={ManageEvents}\r\n componentroles={[DoomCentralRoles.GlobalAdministrator, DoomCentralEventRoles.GlobalEventAdministrator]}\r\n />\r\n <AuthorizeRoute path='/admin/managenews' component={ManageNews} componentroles={[DoomCentralRoles.GlobalAdministrator, NewsPostRoles.GlobalNewsAdministrator]} />\r\n <AuthorizeRoute path='/admin/managestreamers' component={ManageStreamer} componentroles={[DoomCentralRoles.GlobalAdministrator, StreamerRoles.StreamAdministrator]} />\r\n </Switch>\r\n </React.Fragment>\r\n)\r\n","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Card, CardBody, CardHeader, CardTitle, Col, Row } from 'reactstrap'\r\n\r\nimport { countries } from '../../countries'\r\nimport { INewsItemsDto, IRecentThreadDto } from '../../lib/DoomCentral'\r\nimport ForumNav from '../forumnav/ForumNav'\r\n\r\ninterface SidebarProps {\r\n children?: React.ReactNode | React.ReactNode[]\r\n recentThreads?: IRecentThreadDto[]\r\n newsItems?: INewsItemsDto[]\r\n loading: boolean\r\n}\r\n\r\nexport default (props: SidebarProps) => {\r\n return (\r\n // <Row xs=\"1\" sm=\"1\" md=\"1\" lg=\"3\" xl=\"3\" xxl=\"3\">\r\n // <Col lg=\"2\" xl=\"2\" xxl=\"2\">\r\n\r\n // <aside>\r\n // <Card>\r\n // <CardHeader>\r\n // <CardTitle>Community News</CardTitle>\r\n // </CardHeader>\r\n // <CardBody>\r\n // {!props.loading && props.newsItems && props.newsItems.map((s) => (\r\n // <NavLink to={`/news/${s.id}`} key={s.id}>\r\n // <>\r\n // {s.title}\r\n // Posted on {new Intl.DateTimeFormat('default', { month: 'short', day: 'numeric' }).format(new Date(s.postDate))} by {s.postAuthor}\r\n // {s.posts}\r\n // </>\r\n // </NavLink>\r\n // ))}\r\n // {props.loading && props.newsItems && props.newsItems.length <= 0 && (\r\n // <Spinner />\r\n // )}\r\n\r\n // </CardBody>\r\n // </Card>\r\n // </aside>\r\n // </Col>\r\n // <Col lg=\"8\" xl=\"8\" xxl=\"8\">\r\n // <main>\r\n <div>{props.children}</div>\r\n // </main>\r\n // </Col>\r\n // <Col lg=\"2\" xl=\"2\" xxl=\"2\">\r\n // <aside>\r\n // <Card>\r\n // <CardHeader>\r\n // <CardTitle>Recent Threads</CardTitle>\r\n // </CardHeader>\r\n // <CardBody>\r\n // {!props.loading && props.recentThreads && props.recentThreads.map((s) => (\r\n // <>\r\n // <Spinner />\r\n // <NavLink to={`/thread/${s.id}`} key={s.id} className=\"module-link\">\r\n // {s.isSticky && (<i className=\"bi bi-pin-angle module-icon\"></i>)}\r\n // <span className=\"module-item-title\">{s.title}</span>\r\n // <span className=\"module-item-count\">{s.posts}</span>\r\n // </NavLink>\r\n // </>\r\n // ))}\r\n // {props.loading && props.recentThreads && props.recentThreads.length <= 0 && (\r\n // <Spinner />\r\n // )}\r\n // </CardBody>\r\n // </Card>\r\n // </aside>\r\n // </Col>\r\n // </Row>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext } from 'react'\r\nimport { Button, Row, Table } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { DeleteSubscriptionCommand, IPromotedItemDto, IThreadSubscriptionDto, SubscriptionClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface SubscriptionListProps {\r\n subscriptions: IThreadSubscriptionDto[]\r\n setModSub: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: SubscriptionListProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const submitDeleteSubscription = async (id: number) => {\r\n try {\r\n let client = new SubscriptionClient()\r\n let command = new DeleteSubscriptionCommand()\r\n command.subscriptionId = id\r\n const response = await client.deleteSubscriptions(command).then((response) => response)\r\n props.setModSub(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Table>\r\n <thead>\r\n <tr>\r\n <th>Title</th>\r\n <th>Author</th>\r\n <th>Created</th>\r\n <th>Last Post Date</th>\r\n <th>Manage</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {props.subscriptions &&\r\n props.subscriptions.map((s, idx) => (\r\n <tr key={s.id}>\r\n <td>{s.threadName}</td>\r\n <td>{s.authorName}</td>\r\n <td>{new Intl.DateTimeFormat('default', { dateStyle: 'full', timeStyle: 'long' }).format(new Date(s.created))}</td>\r\n <td>{new Intl.DateTimeFormat('default', { dateStyle: 'full', timeStyle: 'long' }).format(new Date(s.lastUpdate))}</td>\r\n <td>\r\n <Button color='danger' className='ms-auto' onClick={(e) => submitDeleteSubscription(s.id)}>\r\n <i className='bi bi-trash'></i>\r\n </Button>\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </Table>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, Form, FormGroup, Input, Label, Row } from 'reactstrap'\r\n\r\nimport { ForumsClient, IForumDto, IForumListVm } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface SubscriptionOptionsProps {\r\n includeEventsAndNews: boolean\r\n setIncludeEventsAndNews: React.Dispatch<React.SetStateAction<boolean>>\r\n forumId: number\r\n setForumId: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: SubscriptionOptionsProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [forums, setForums] = useState<IForumDto[]>()\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumsClient()\r\n const response = await client.getForums().then((response) => response.toJSON() as Promise<IForumListVm>)\r\n setForums(response.forums)\r\n } catch (e) {\r\n error.setError(e.response)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <Form>\r\n <Row>\r\n <Col md={6}>\r\n <FormGroup>\r\n <Label for='forumSelect'>Forum</Label>\r\n <Input id='forumSelect' name='forum' type='select' onSelect={(e) => props.setForumId(parseInt(e.currentTarget.value))}>\r\n <option id='0'>All Forums</option>\r\n {forums &&\r\n forums.length > 0 &&\r\n forums.map((s, idx) => (\r\n <option id={s.id.toString()} key={s.id}>\r\n {s.name}\r\n </option>\r\n ))}\r\n </Input>\r\n </FormGroup>\r\n </Col>\r\n </Row>\r\n <FormGroup check>\r\n <Input\r\n id='includeEventsandNews'\r\n name='events'\r\n type='checkbox'\r\n onChange={(e) => props.setIncludeEventsAndNews(e.currentTarget.checked)}\r\n checked={props.includeEventsAndNews}\r\n value={props.forumId}\r\n />\r\n <Label check for='includeEventsandNews'>\r\n Include Events & News Threads\r\n </Label>\r\n </FormGroup>\r\n </Form>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { ISidebarVm, IThreadSubscriptionDto, IUserSubscriptionVm, SidebarClient, SubscriptionClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport SubscriptionList from './SubscriptionList'\r\nimport SubscriptionOptions from './SubscriptionOptions'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [includeEventsAndNews, setIncludeEventsAndNews] = useState<boolean>(true)\r\n const [forumId, setForumId] = useState<number>(0)\r\n\r\n const [sidebarData, setSidebarData] = useState<ISidebarVm>()\r\n const [subData, setSubData] = useState<IThreadSubscriptionDto[]>()\r\n\r\n const [modSub, setModSub] = useState<number>(0)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new SidebarClient()\r\n const response = await client.getSidebars().then((response) => response.toJSON() as Promise<ISidebarVm>)\r\n setSidebarData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new SubscriptionClient()\r\n let id = forumId == 0 ? null : forumId\r\n const response = await client.getSubscriptions(includeEventsAndNews, id, 1, 15).then((response) => response.toJSON() as Promise<IUserSubscriptionVm>)\r\n setSubData(response.subscriptions)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [includeEventsAndNews, forumId, modSub])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={'Doom Central - Manage Subscriptions'} />\r\n <Sidebars loading={loading} newsItems={sidebarData?.newsItems} recentThreads={sidebarData?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n <Row>\r\n <Col>\r\n <SubscriptionOptions\r\n includeEventsAndNews={includeEventsAndNews}\r\n setIncludeEventsAndNews={setIncludeEventsAndNews}\r\n forumId={forumId}\r\n setForumId={setForumId}\r\n />\r\n </Col>\r\n <Col>\r\n <SubscriptionList subscriptions={subData} setModSub={setModSub} />\r\n </Col>\r\n </Row>\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { RouteComponentProps } from 'react-router-dom'\r\nimport { AccordionBody, AccordionHeader, AccordionItem, Card, Col, Row, UncontrolledAccordion } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { ISidebarVm, IThreadPostItemDto, IUserProfileVm, SidebarClient, UsersClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Sidebars from '../sidebars/Sidebars'\r\n\r\ninterface ProfilePageRouterProps {\r\n userName: string\r\n}\r\n\r\ninterface ProfilePageProps extends RouteComponentProps<ProfilePageRouterProps> {\r\n // Add your regular properties here\r\n}\r\n\r\nexport default (props: ProfilePageProps) => {\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [sidebarData, setSidebarData] = useState<ISidebarVm>(null)\r\n const [userData, setUserData] = useState<IUserProfileVm>(null)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new SidebarClient()\r\n const response = await client.getSidebars().then((response) => response.toJSON() as Promise<ISidebarVm>)\r\n setSidebarData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new UsersClient()\r\n const response = await client.getUserProfile(props.match.params.userName).then((response) => response.toJSON() as Promise<IUserProfileVm>)\r\n setUserData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [parseInt(props.match.params.userName)])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={`Doom Central - Profile - ${userData?.userSummary?.displayName ?? 'Loading...'}`} />\r\n <Sidebars loading={loading} newsItems={sidebarData?.newsItems} recentThreads={sidebarData?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n {userData && userData.userSummary && (\r\n <Row>\r\n <Col sm={8}>\r\n <h1 className='display-4'>{userData?.userSummary?.displayName ?? ''}</h1>\r\n </Col>\r\n <Col sm={4}>\r\n {userData?.userSummary?.badgeUrl && userData?.userSummary?.badgeUrl.length > 0 && (\r\n <div>\r\n <div className='d-flex justify-content-end align-items-center'>\r\n <h6>{userData?.userSummary?.badgeName}</h6>\r\n </div>\r\n <div className='d-flex justify-content-end align-items-center'>\r\n <img src={userData?.userSummary?.badgeUrl} />\r\n </div>\r\n </div>\r\n )}\r\n </Col>\r\n <Col sm={4}>\r\n <p className='lead fw-normal'>User Name</p>\r\n </Col>\r\n <Col sm={8}>\r\n <p className='fs-5 fw-bold text-end'>{userData?.userSummary?.userName ?? ''}</p>\r\n </Col>\r\n <Col sm={4}>\r\n <p className='lead fw-normal'>Register Date</p>\r\n </Col>\r\n <Col sm={8}>\r\n <p className='fs-5 fw-bold text-end'>\r\n {new Intl.DateTimeFormat('default', { dateStyle: 'full', timeStyle: 'long' }).format(new Date(userData?.userSummary?.registrationDate))}\r\n </p>\r\n </Col>\r\n <Col sm={4}>\r\n <p className='lead fw-normal'>Last Login Date</p>\r\n </Col>\r\n <Col sm={8}>\r\n <p className='fs-5 fw-bold text-end'>\r\n {new Intl.DateTimeFormat('default', { dateStyle: 'full', timeStyle: 'long' }).format(new Date(userData?.userSummary?.lastLoginDate))}\r\n </p>\r\n </Col>\r\n </Row>\r\n )}\r\n {userData && userData.threadPosts.length > 0 && <Row></Row>}\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Route } from 'react-router'\r\n\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute'\r\nimport ManageSubscriptions from '../managesubscriptions/ManageSubscriptions'\r\nimport ProfilePage from '../profilepage/ProfilePage'\r\n\r\nexport default () => (\r\n <React.Fragment>\r\n <AuthorizeRoute path='/managesubscriptions' component={ManageSubscriptions} componentroles={DoomCentralRoles.DoomCentralUser} />\r\n <Route exact path='/user/:userName' component={ProfilePage} />\r\n </React.Fragment>\r\n)\r\n","// useQueryParam.ts\r\nimport { useState } from 'react'\r\n\r\nconst getQuery = () => {\r\n if (typeof window !== 'undefined') {\r\n return new URLSearchParams(window.location.search)\r\n }\r\n return new URLSearchParams()\r\n}\r\n\r\nconst getQueryStringVal = (key: string): string | null => {\r\n return getQuery().get(key)\r\n}\r\n\r\nconst useQueryParam = (key: string, defaultVal: string): [string, (val: string) => void] => {\r\n const [query, setQuery] = useState(getQueryStringVal(key) || defaultVal)\r\n\r\n const updateUrl = (newVal: string) => {\r\n setQuery(newVal)\r\n\r\n const query = getQuery()\r\n\r\n if (newVal.trim() !== '') {\r\n query.set(key, newVal)\r\n } else {\r\n query.delete(key)\r\n }\r\n\r\n // This check is necessary if using the hook with Gatsby\r\n if (typeof window !== 'undefined') {\r\n const { protocol, pathname, host } = window.location\r\n const newUrl = `${protocol}//${host}${pathname}?${query.toString()}`\r\n window.history.pushState({}, '', newUrl)\r\n }\r\n }\r\n\r\n return [query, updateUrl]\r\n}\r\n\r\nexport default useQueryParam\r\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason` at `place` from `origin`.\n *\n * When an error is passed in as `reason`, the `stack` is copied.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n *\n * > 👉 **Note**: you should use markdown.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // To do: next major: expose `undefined` everywhere instead of `null`.\n constructor(reason, place, origin) {\n /** @type {[string | null, string | null]} */\n const parts = [null, null]\n /** @type {Position} */\n let position = {\n // @ts-expect-error: we always follows the structure of `position`.\n start: {line: null, column: null},\n // @ts-expect-error: \"\n end: {line: null, column: null}\n }\n\n super()\n\n if (typeof place === 'string') {\n origin = place\n place = undefined\n }\n\n if (typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n parts[1] = origin\n } else {\n parts[0] = origin.slice(0, index)\n parts[1] = origin.slice(index + 1)\n }\n }\n\n if (place) {\n // Node.\n if ('type' in place || 'position' in place) {\n if (place.position) {\n // To do: next major: deep clone.\n // @ts-expect-error: looks like a position.\n position = place.position\n }\n }\n // Position.\n else if ('start' in place || 'end' in place) {\n // @ts-expect-error: looks like a position.\n // To do: next major: deep clone.\n position = place\n }\n // Point.\n else if ('line' in place || 'column' in place) {\n // To do: next major: deep clone.\n position.start = place\n }\n }\n\n // Fields from `Error`.\n /**\n * Serialized positional info of error.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(place) || '1:1'\n\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = typeof reason === 'object' ? reason.message : reason\n\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack = ''\n\n if (typeof reason === 'object' && reason.stack) {\n this.stack = reason.stack\n }\n\n /**\n * Reason for message.\n *\n * > 👉 **Note**: you should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /* eslint-disable no-unused-expressions */\n /**\n * State of problem.\n *\n * * `true` — marks associated file as no longer processable (error)\n * * `false` — necessitates a (potential) change (warning)\n * * `null | undefined` — for things that might not need changing (info)\n *\n * @type {boolean | null | undefined}\n */\n this.fatal\n\n /**\n * Starting line of error.\n *\n * @type {number | null}\n */\n this.line = position.start.line\n\n /**\n * Starting column of error.\n *\n * @type {number | null}\n */\n this.column = position.start.column\n\n /**\n * Full unist position.\n *\n * @type {Position | null}\n */\n this.position = position\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | null}\n */\n this.source = parts[0]\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | null}\n */\n this.ruleId = parts[1]\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | null}\n */\n this.file\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | null}\n */\n this.actual\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | null}\n */\n this.expected\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | null}\n */\n this.url\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | null}\n */\n this.note\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.charCodeAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.charCodeAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.charCodeAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n result.charCodeAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * Check if `fileUrlOrPath` looks like a URL.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js#L1501>\nexport function isUrl(fileUrlOrPath) {\n return (\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n // @ts-expect-error: indexable.\n fileUrlOrPath.href &&\n // @ts-expect-error: indexable.\n fileUrlOrPath.origin\n )\n}\n","/// <reference lib=\"dom\" />\n\nimport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js>\n\n/**\n * @param {string | URL} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.charCodeAt(index) === 37 /* `%` */ &&\n pathname.charCodeAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.charCodeAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n\nexport {isUrl} from './minurl.shared.js'\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {Record<string, unknown> & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'} BufferEncoding\n * Encodings supported by the buffer class.\n *\n * This is a copy of the types from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/90a4ec8/types/node/buffer.d.ts#L170>\n *\n * @typedef {Options | URL | Value | VFile} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {Value | null | undefined} [value]\n * Set `value`.\n * @property {string | null | undefined} [cwd]\n * Set `cwd`.\n * @property {Array<string> | null | undefined} [history]\n * Set `history`.\n * @property {URL | string | null | undefined} [path]\n * Set `path`.\n * @property {string | null | undefined} [basename]\n * Set `basename`.\n * @property {string | null | undefined} [stem]\n * Set `stem`.\n * @property {string | null | undefined} [extname]\n * Set `extname`.\n * @property {string | null | undefined} [dirname]\n * Set `dirname`.\n * @property {Data | null | undefined} [data]\n * Set `data`.\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * <https://github.com/mozilla/source-map/blob/58819f0/source-map.d.ts#L15-L23>.\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array<string>} sources\n * An array of URLs to the original source files.\n * @property {Array<string>} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array<string> | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template {ReporterSettings} Settings\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array<VFile>} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport bufferLike from 'is-buffer'\nimport {VFileMessage} from 'vfile-message'\nimport {path} from './minpath.js'\nimport {proc} from './minproc.js'\nimport {urlToPath, isUrl} from './minurl.js'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n *\n * @type {Array<'basename' | 'dirname' | 'extname' | 'history' | 'path' | 'stem'>}\n */\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Buffer` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (typeof value === 'string' || buffer(value)) {\n options = {value}\n } else if (isUrl(value)) {\n options = {path: value}\n } else {\n options = value\n }\n\n /**\n * Place to store custom information (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * List of filepaths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /* eslint-disable no-unused-expressions */\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {string | URL} path\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the parent path (example: `'~'`).\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n /**\n * Serialize the file.\n *\n * @param {BufferEncoding | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Buffer`\n * (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n return (this.value || '').toString(encoding || undefined)\n }\n\n /**\n * Create a warning message associated with the file.\n *\n * Its `fatal` is set to `false` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(reason, place, origin) {\n const message = new VFileMessage(reason, place, origin)\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Create an info message associated with the file.\n *\n * Its `fatal` is set to `null` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = null\n\n return message\n }\n\n /**\n * Create a fatal error associated with the file.\n *\n * Its `fatal` is set to `true` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * > 👉 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Message.\n * @throws {VFileMessage}\n * Message.\n */\n fail(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = true\n\n throw message\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {void}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is a buffer.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Buffer}\n * Whether `value` is a Node.js buffer.\n */\nfunction buffer(value) {\n return bufferLike(value)\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n const transformers = trough()\n /** @type {Processor['attachers']} */\n const attachers = []\n /** @type {Record<string, unknown>} */\n let namespace = {}\n /** @type {boolean|undefined} */\n let frozen\n let freezeIndex = -1\n\n // Data management.\n // @ts-expect-error: overloads are handled.\n processor.data = data\n processor.Parser = undefined\n processor.Compiler = undefined\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n // @ts-expect-error: overloads are handled.\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n // @ts-expect-error: overloads are handled.\n processor.run = run\n processor.runSync = runSync\n // @ts-expect-error: overloads are handled.\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n /** @type {Processor} */\n function processor() {\n const destination = base()\n let index = -1\n\n while (++index < attachers.length) {\n destination.use(...attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n /**\n * @param {string|Record<string, unknown>} [key]\n * @param {unknown} [value]\n * @returns {unknown}\n */\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n namespace[key] = value\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n /** @type {Processor['freeze']} */\n function freeze() {\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n const [attacher, ...options] = attachers[freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n /** @type {Transformer|void} */\n const transformer = attacher.call(processor, ...options)\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Number.POSITIVE_INFINITY\n\n return processor\n }\n\n /**\n * @param {Pluggable|null|undefined} [value]\n * @param {...unknown} options\n * @returns {Processor}\n */\n function use(value, ...options) {\n /** @type {Record<string, unknown>|undefined} */\n let settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, ...options)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = Object.assign(namespace.settings || {}, settings)\n }\n\n return processor\n\n /**\n * @param {import('..').Pluggable<unknown[]>} value\n * @returns {void}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...options] = value\n addPlugin(plugin, ...options)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {void}\n */\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = Object.assign(settings || {}, result.settings)\n }\n }\n\n /**\n * @param {PluggableList|null|undefined} [plugins]\n * @returns {void}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {...unknown} [value]\n * @returns {void}\n */\n function addPlugin(plugin, value) {\n let index = -1\n /** @type {Processor['attachers'][number]|undefined} */\n let entry\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entry = attachers[index]\n break\n }\n }\n\n if (entry) {\n if (isPlainObj(entry[1]) && isPlainObj(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n // @ts-expect-error: fine.\n attachers.push([...arguments])\n }\n }\n }\n\n /** @type {Processor['parse']} */\n function parse(doc) {\n processor.freeze()\n const file = vfile(doc)\n const Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n // @ts-expect-error: `newable` checks this.\n return new Parser(String(file), file).parse()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n /** @type {Processor['stringify']} */\n function stringify(node, doc) {\n processor.freeze()\n const file = vfile(doc)\n const Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n // @ts-expect-error: `newable` checks this.\n return new Compiler(node, file).compile()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n /**\n * @param {Node} node\n * @param {VFileCompatible|RunCallback} [doc]\n * @param {RunCallback} [callback]\n * @returns {Promise<Node>|void}\n */\n function run(node, doc, callback) {\n assertNode(node)\n processor.freeze()\n\n if (!callback && typeof doc === 'function') {\n callback = doc\n doc = undefined\n }\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((node: Node) => void)} resolve\n * @param {(error: Error) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n transformers.run(node, vfile(doc), done)\n\n /**\n * @param {Error|null} error\n * @param {Node} tree\n * @param {VFile} file\n * @returns {void}\n */\n function done(error, tree, file) {\n tree = tree || node\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(tree)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, tree, file)\n }\n }\n }\n }\n\n /** @type {Processor['runSync']} */\n function runSync(node, file) {\n /** @type {Node|undefined} */\n let result\n /** @type {boolean|undefined} */\n let complete\n\n processor.run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n // @ts-expect-error: we either bailed on an error or have a tree.\n return result\n\n /**\n * @param {Error|null} [error]\n * @param {Node} [tree]\n * @returns {void}\n */\n function done(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * @param {VFileCompatible} doc\n * @param {ProcessCallback} [callback]\n * @returns {Promise<VFile>|undefined}\n */\n function process(doc, callback) {\n processor.freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((file: VFile) => void)} resolve\n * @param {(error?: Error|null|undefined) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n const file = vfile(doc)\n\n processor.run(processor.parse(file), file, (error, tree, file) => {\n if (error || !tree || !file) {\n done(error)\n } else {\n /** @type {unknown} */\n const result = processor.stringify(tree, file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (looksLikeAVFileValue(result)) {\n file.value = result\n } else {\n file.result = result\n }\n\n done(error, file)\n }\n })\n\n /**\n * @param {Error|null|undefined} [error]\n * @param {VFile|undefined} [file]\n * @returns {void}\n */\n function done(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, file)\n }\n }\n }\n }\n\n /** @type {Processor['processSync']} */\n function processSync(doc) {\n /** @type {boolean|undefined} */\n let complete\n\n processor.freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n\n const file = vfile(doc)\n\n processor.process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n /**\n * @param {Error|null|undefined} [error]\n * @returns {void}\n */\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n // type-coverage:ignore-next-line\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record<string, unknown>} value\n * @returns {boolean}\n */\nfunction keys(value) {\n /** @type {string} */\n let key\n\n for (key in value) {\n if (own.call(value, key)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n return typeof value === 'string' || isBuffer(value)\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array<string>} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Node}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array<T>} items\n * Items to inject into `list`.\n * @returns {void}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {Array<unknown>} */\n let parameters\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n remove = remove > 0 ? remove : 0\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove)\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {Array<T>} items\n * Items to add to `list`.\n * @returns {Array<T>}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array<Extension>} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record<string, unknown>} */\n const left = maybe || (all[hook] = {})\n /** @type {Record<string, unknown> | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n * @param {Array<unknown>} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array<unknown>} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array<HtmlExtension>} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * A single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nexport const unicodePunctuationRegex =\n /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/)\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownSpace} from 'micromark-util-character'\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n return ok(code)\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n effects.exit(type)\n return ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n let previous\n return contentStart\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n if (previous) {\n previous.next = token\n }\n previous = token\n return data(code)\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n}\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array<StackItem>} */\n const stack = []\n let continued = 0\n /** @type {TokenizeContext | undefined} */\n let childFlow\n /** @type {Token | undefined} */\n let childToken\n /** @type {number} */\n let lineStartOffset\n return start\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n }\n\n // Done.\n return checkNewContainers(code)\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n if (childFlow) {\n closeFlow()\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point | undefined} */\n let point\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n let index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n return checkNewContainers(code)\n }\n return start(code)\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n }\n\n // Check if there is a new container.\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState])\n // Try another.\n return documentContinued(code)\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow'))\n // Get ready for the next line.\n continued = 0\n self.interrupt = undefined\n return start\n }\n effects.consume(code)\n return flowContinue\n }\n\n /**\n * @param {Token} token\n * @param {boolean | undefined} [eof]\n * @returns {void}\n */\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream)\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset &&\n // …and either is not ended yet…\n (!childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean | undefined} */\n let seen\n /** @type {Point | undefined} */\n let point\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n seen = true\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n }\n }\n\n /**\n * @param {number} size\n * @returns {void}\n */\n function exitContainers(size) {\n let index = stack.length\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n stack.length = size\n }\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code)\n ? factorySpace(effects, after, 'linePrefix')(code)\n : after(code)\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\nimport {splice} from 'micromark-util-chunked'\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} events\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\nexport function subtokenize(events) {\n /** @type {Record<string, number>} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n let event\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number} */\n let otherIndex\n /** @type {Event} */\n let otherEvent\n /** @type {Array<Event>} */\n let parameters\n /** @type {Array<Event>} */\n let subevents\n /** @type {boolean | undefined} */\n let more\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n event = events[index]\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array<Event>} events\n * @param {number} eventIndex\n * @returns {Record<string, number>}\n */\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {Array<number>} */\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {Array<[number, number]>} */\n const jumps = []\n /** @type {Record<string, number>} */\n const gaps = {}\n /** @type {Array<Chunk>} */\n let stream\n /** @type {Token | undefined} */\n let previous\n let index = -1\n /** @type {Token | undefined} */\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start]\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition)\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n if (!current.next) {\n stream.push(null)\n }\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n tokenizer.write(stream)\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n }\n\n // Unravel the next token.\n previous = current\n current = current.next\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start)\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n }\n\n // Help GC.\n tokenizer.events = []\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n index = -1\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n\n/** @type {Construct} */\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous\n return chunkStart\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return chunkInside(code)\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n }\n\n // Data.\n effects.consume(code)\n return chunkInside\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return chunkInside\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1]\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n function atBreak(code) {\n if (code === null) {\n return true\n }\n const list = constructs[code]\n let index = -1\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index]\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n return false\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number | undefined} */\n let enter\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n enter = undefined\n }\n }\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean | undefined} */\n let tabs\n while (index--) {\n const chunk = chunks[index]\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n if (bufferIndex) break\n bufferIndex = -1\n }\n // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n eventIndex++\n }\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array<Event>}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array<Resolver>} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record<string, number>} */\n const columnStart = {}\n /** @type {Array<Construct>} */\n const resolveAllConstructs = []\n /** @type {Array<Chunk>} */\n let chunks = []\n /** @type {Array<Token>} */\n let stack = []\n /** @type {boolean | undefined} */\n let consumed = true\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n\n /**\n * The state function.\n *\n * @type {State | void}\n */\n let state = initialize.tokenize.call(context, effects)\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n return context\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice)\n main()\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n addResult(initialize, 0)\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {line, column, offset, _index, _bufferIndex} = point\n return {\n line,\n column,\n offset,\n _index,\n _bufferIndex\n }\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n function main() {\n /** @type {number} */\n let chunkIndex\n while (point._index < chunks.length) {\n const chunk = chunks[point._index]\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++\n\n // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n }\n\n // Expose the previous character.\n context.previous = code\n\n // Mark as consumed.\n consumed = true\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n */\n function constructFactory(onreturn, fields) {\n return hook\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array<Construct> | Construct | ConstructRecord} constructs\n * @param {State} returnState\n * @param {State | undefined} [bogusState]\n * @returns {State}\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {Array<Construct>} */\n let listOfConstructs\n /** @type {number} */\n let constructIndex\n /** @type {Construct} */\n let currentConstruct\n /** @type {Info} */\n let info\n return Array.isArray(constructs) /* c8 ignore next 1 */\n ? handleListOfConstructs(constructs)\n : 'tokenize' in constructs\n ? // @ts-expect-error Looks like a construct.\n handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n function handleMapOfConstructs(map) {\n return start\n\n /** @type {State} */\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {Array<Construct>} list\n * @returns {State}\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n if (list.length === 0) {\n return bogusState\n }\n return handleConstruct(list[constructIndex])\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n function handleConstruct(construct) {\n return start\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n // Always populated by defaults.\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true\n info.restore()\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n return bogusState\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n */\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n\n /**\n * Restore state.\n *\n * @returns {void}\n */\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array<Chunk>} chunks\n * @param {Pick<Token, 'end' | 'start'>} token\n * @returns {Array<Chunk>}\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array<Chunk>} */\n let view\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n if (startBufferIndex > -1) {\n const head = view[0]\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex)\n } else {\n view.shift()\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array<Chunk>} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array<string>} */\n const result = []\n /** @type {boolean | undefined} */\n let atTab\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n let value\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n case -4: {\n value = '\\n'\n break\n }\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n atTab = chunk === -2\n result.push(value)\n }\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable<Code>} */\n let marker\n return start\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('thematicBreak')\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code\n return atBreak(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit('thematicBreak')\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n effects.exit('thematicBreakSequence')\n return markdownSpace(code)\n ? factorySpace(effects, atBreak, 'whitespace')(code)\n : atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/** @type {Construct} */\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n return nok(code)\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n return nok(code)\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\n/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this\n return contStart\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n contBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return contBefore(code)\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code)\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return enclosedBefore\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return raw(code)\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return enclosed(code)\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return enclosedBefore(code)\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? enclosedEscape : enclosed\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | <a\\*a>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return enclosed\n }\n return enclosed(code)\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (\n !balance &&\n (code === null || code === 41 || markdownLineEndingOrSpace(code))\n ) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n if (balance < limit && code === 40) {\n effects.consume(code)\n balance++\n return raw\n }\n if (code === 41) {\n effects.consume(code)\n balance--\n return raw\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? rawEscape : raw\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return raw\n }\n return raw(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n let seen\n return start\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (\n size > 999 ||\n code === null ||\n code === 91 ||\n (code === 93 && !seen) ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return labelInside(code)\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n effects.consume(code)\n if (!seen) seen = !markdownSpace(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return labelInside\n }\n return labelInside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable<Code>} */\n let marker\n return start\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return begin\n }\n return nok(code)\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n effects.enter(stringType)\n return atBreak(code)\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return begin(marker)\n }\n if (code === null) {\n return nok(code)\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atBreak, 'linePrefix')\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return inside(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n effects.consume(code)\n return code === 92 ? escape : inside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return inside\n }\n return inside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n return ok(code)\n }\n}\n","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return (\n value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ')\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n\n/** @type {Construct} */\nconst titleBefore = {\n tokenize: tokenizeTitleBefore,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n let identifier\n return start\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter('definition')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n return markerAfter\n }\n return nok(code)\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, destinationBefore)(code)\n : destinationBefore(code)\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(\n effects,\n destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )(code)\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code)\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code)\n ? factorySpace(effects, afterWhitespace, 'whitespace')(code)\n : afterWhitespace(code)\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier)\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, beforeMarker)(code)\n : nok(code)\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(\n effects,\n titleAfter,\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code)\n ? factorySpace(effects, titleAfterOptionalWhitespace, 'whitespace')(code)\n : titleAfterOptionalWhitespace(code)\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n\n/** @type {Construct} */\nconst furtherStart = {\n tokenize: tokenizeFurtherStart,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter('codeIndented')\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? atBreak(code)\n : nok(code)\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code)\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return inside(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return atBreak(code)\n }\n effects.consume(code)\n return inside\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit('codeIndented')\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this\n return furtherStart\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return furtherStart\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? furtherStart(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n let content\n /** @type {Token} */\n let text\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n }\n\n // Suffix whitespace, part of the closing.\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter('atxHeading')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('atxHeadingSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return sequenceOpen\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n return nok(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequenceFurther(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter('atxHeadingText')\n return data(code)\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code)\n return sequenceFurther\n }\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return atBreak(code)\n }\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length\n /** @type {number | undefined} */\n let content\n /** @type {number | undefined} */\n let text\n /** @type {number | undefined} */\n let definition\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n }\n // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n\n // Change the paragraph to setext heading text.\n events[text][1].type = 'setextHeadingText'\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context])\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n /** @type {NonNullable<Code>} */\n let marker\n return start\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length\n /** @type {boolean | undefined} */\n let paragraph\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n marker = code\n return before(code)\n }\n return nok(code)\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('setextHeadingLineSequence')\n return inside(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n effects.exit('setextHeadingLineSequence')\n return markdownSpace(code)\n ? factorySpace(effects, after, 'lineSuffix')(code)\n : after(code)\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n\n/** @type {Construct} */\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n\n/** @type {Construct} */\nconst blankLineBefore = {\n tokenize: tokenizeBlankLineBefore,\n partial: true\n}\nconst nonLazyContinuationStart = {\n tokenize: tokenizeNonLazyContinuationStart,\n partial: true\n}\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start\n // Remove the line prefix.\n events.splice(index - 2, 2)\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n let marker\n /** @type {boolean} */\n let closingTag\n /** @type {string} */\n let buffer\n /** @type {number} */\n let index\n /** @type {Code} */\n let markerB\n return start\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | <x />\n * ^\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n closingTag = true\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n marker = 3\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n marker = 2\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n marker = 5\n index = 0\n return cdataOpenInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n marker = 4\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After `<!-`, inside a comment, at another `-`.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After `<![`, inside CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | </x>\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | <ab>\n * ^^\n * > | </ab>\n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n const slash = code === 47\n const name = buffer.toLowerCase()\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6\n if (slash) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n marker = 7\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : closingTag\n ? completeClosingTagAfter(code)\n : completeAttributeNameBefore(code)\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > | <div/>\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | <x/>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n return completeEnd(code)\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | <a />\n * ^\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * > | <a >\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n return completeEnd(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n return completeAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | <a b>\n * ^\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n return completeAttributeNameBefore(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n markerB = code\n return completeAttributeValueQuoted\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n return completeAttributeValueUnquoted(code)\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * > | <a b='c'>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code)\n markerB = null\n return completeAttributeValueQuotedAfter\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 47 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | <x>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n if (code === 60 && marker === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n if (code === 62 && marker === 4) {\n effects.consume(code)\n return continuationClose\n }\n if (code === 63 && marker === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n if (code === 93 && marker === 5) {\n effects.consume(code)\n return continuationCdataInside\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit('htmlFlowData')\n return effects.check(\n blankLineBefore,\n continuationAfter,\n continuationStart\n )(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationStart(code)\n }\n effects.consume(code)\n return continuation\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(\n nonLazyContinuationStart,\n continuationStartNonLazy,\n continuationAfter\n )(code)\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return continuationBefore\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | <x>\n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code)\n }\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after `</`, in a raw tag name.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | <!-->\n * ^\n * > | <?>\n * ^\n * > | <!q>\n * ^\n * > | <!--ab-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > | <div>\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable<Code>} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// <reference lib=\"dom\" />\n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a	b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a	b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a	b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a	b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array<Event>} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * \n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n * <p>!<a href=\\\"b\\\">^a</a></p>\n * <p>!<a href=\\\"c\\\">^a</a></p>\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array<Event>} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable<Code>} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | a<user.name@ex-ample.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable<Code> | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * > | a <![CDATA[>&<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after `<!-`, at another `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After `<![`, in CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a <!b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After `</x`, in a tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After `<x`, in opening tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a <!--a\n * ^\n * | b-->\n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array<Chunk>}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array<Chunk>} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > 126 && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract<Node, UnistParent>} Parent\n *\n * @typedef {Omit<UnistParent, 'type' | 'children'> & {type: 'fragment', children: Array<PhrasingContent>}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record<string, Handle>} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit<CompileContext, 'sliceSerialize'>} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit<CompileContext, 'sliceSerialize'>} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array<string>} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array<Transform>} transforms\n * Tree transforms.\n *\n * @typedef {Partial<Config>} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array<Node | Fragment>} stack\n * Stack of nodes.\n * @property {Array<TokenTuple>} tokenStack\n * Stack of tokens.\n * @property {<Key extends keyof CompileData>(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {<Key extends keyof CompileData>(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {<Kind extends Node>(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array<Extension | Array<Extension>> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array<Event>} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array<number>} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array<Event>} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n }\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n let tail = node.children[node.children.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {\n start: point(token.start)\n }\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n setData('inReference', true)\n if (node.type === 'link') {\n /** @type {Array<StaticPhrasingContent>} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Extension | Array<Extension>>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array<Event>} events\n * @returns {Array<Event>}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | void[], string, Root>}\n */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction<Root>} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array<string>} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record<string, unknown>} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array<string | Props | TestFunctionAnything>} Test\n * Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | void}\n * Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n * Node type.\n * @typedef {Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind> | Array<Kind['type'] | Partial<Kind> | TestFunctionPredicate<Kind>>} PredicateTest\n * Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback TestFunctionPredicate\n * Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific node.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n /**\n * @type {(\n * (() => false) &\n * (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index: number, parent: Parent, context?: unknown) => node is Kind) &\n * (<Kind extends Node = Node>(node: unknown, test: PredicateTest<Kind>, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n * ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n * ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convert =\n /**\n * @type {(\n * (<Kind extends Node>(test: PredicateTest<Kind>) => AssertPredicate<Kind>) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<string | Props | TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array<AssertAnything>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {Array<unknown>} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array<unknown>} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n 'type' in node &&\n // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters))\n )\n }\n}\n\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<Ancestor>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * Tree type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {Visitor<import('./complex-types.js').Matches<import('./complex-types.js').InclusiveDescendant<Tree>, Check>, Extract<import('./complex-types.js').InclusiveDescendant<Tree>, Parent>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visitParents =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor<Node>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Array<Parent>} parents\n */\n function factory(node, index, parents) {\n /** @type {Record<string, unknown>} */\n // @ts-expect-error: hush\n const value = node && typeof node === 'object' ? node : {}\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<Parent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n }\n )\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {ActionTuple}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n * Node type.\n * @template {Node} Child\n * Node type.\n * @typedef {(\n * Ancestor extends Parent\n * ? Child extends Ancestor['children'][number]\n * ? Ancestor\n * : never\n * : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends Node ? number | null : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n * Node type.\n * @template {Parent} Ancestor\n * Parent type.\n * @typedef {Visitor<Visited, ParentsOf<Ancestor, Visited>>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n * @typedef {(\n * BuildVisitorFromMatch<\n * import('unist-util-visit-parents/complex-types.js').Matches<Descendant, Check>,\n * Extract<Descendant, Parent>\n * >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n * Node type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {(\n * BuildVisitorFromDescendants<\n * import('unist-util-visit-parents/complex-types.js').InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visit =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: BuildVisitor<Tree, Check>, reverse?: boolean | null | undefined) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: BuildVisitor<Tree>, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array<Parent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * Node.\n * @returns {Position}\n * Position.\n */\nexport function position(node) {\n return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start' | 'end'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n // To do: next major: don’t return points when invalid.\n return {\n // @ts-expect-error: in practice, null is allowed.\n line: point.line || null,\n // @ts-expect-error: in practice, null is allowed.\n column: point.column || null,\n // @ts-expect-error: in practice, null is allowed.\n offset: point.offset > -1 ? point.offset : null\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n * Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n * Identifier of definition.\n * @returns {Definition | null}\n * Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n * Tree to check.\n * @returns {GetDefinition}\n * Getter.\n */\nexport function definitions(tree) {\n /** @type {Record<string, Definition>} */\n const cache = Object.create(null)\n\n if (!tree || !tree.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(tree, 'definition', (definition) => {\n const id = clean(definition.identifier)\n if (id && !own.call(cache, id)) {\n cache[id] = definition\n }\n })\n\n return definition\n\n /** @type {GetDefinition} */\n function definition(identifier) {\n const id = clean(identifier)\n // To do: next major: return `undefined` when not found.\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n if (index === -1) {\n state.footnoteOrder.push(id)\n state.footnoteCounts[id] = 1\n counter = state.footnoteOrder.length\n } else {\n state.footnoteCounts[id]++\n counter = index + 1\n }\n\n const reuseCounter = state.footnoteCounts[id]\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + state.clobberPrefix + 'fn-' + safeId,\n id:\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Reference>} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {References} node\n * Reference node (image, link).\n * @returns {ElementContent | Array<ElementContent>}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return {type: 'text', value: '![' + node.alt + suffix}\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | null | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array<ElementContent>} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array<string>} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n // To do: next major: return `undefined`.\n return null\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array<Element | Text>}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang ? node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/) : null\n /** @type {Properties} */\n const properties = {}\n\n if (lang) {\n properties.className = ['language-' + lang]\n }\n\n // Create `<code>`.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `<pre>`.\n result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n state.patch(node, result)\n return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Delete} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strikethrough(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'del',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Emphasis} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function emphasis(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'em',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n// To do: when both:\n// * <https://github.com/micromark/micromark-extension-footnote>\n// * <https://github.com/syntax-tree/mdast-util-footnote>\n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Footnote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnote(state, node) {\n const footnoteById = state.footnoteById\n let no = 1\n\n while (no in footnoteById) no++\n\n const identifier = String(no)\n\n footnoteById[identifier] = {\n type: 'footnoteDefinition',\n identifier,\n children: [{type: 'paragraph', children: node.children}],\n position: node.position\n }\n\n return footnoteReference(state, {\n type: 'footnoteReference',\n identifier,\n position: node.position\n })\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Heading} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function heading(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'h' + node.depth,\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n * Info passed around.\n * @param {Html} node\n * mdast node.\n * @returns {Raw | Element | null}\n * hast node.\n */\nexport function html(state, node) {\n if (state.dangerous) {\n /** @type {Raw} */\n const result = {type: 'raw', value: node.value}\n state.patch(node, result)\n return state.applyData(node, result)\n }\n\n // To do: next major: return `undefined`.\n return null\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ImageReference} node\n * mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n * hast node.\n */\nexport function imageReference(state, node) {\n const def = state.definition(node.identifier)\n\n if (!def) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n if (def.title !== null && def.title !== undefined) {\n properties.title = def.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Image} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function image(state, node) {\n /** @type {Properties} */\n const properties = {src: normalizeUri(node.url)}\n\n if (node.alt !== null && node.alt !== undefined) {\n properties.alt = node.alt\n }\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {InlineCode} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function inlineCode(state, node) {\n /** @type {Text} */\n const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n state.patch(node, text)\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'code',\n properties: {},\n children: [text]\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {LinkReference} node\n * mdast node.\n * @returns {ElementContent | Array<ElementContent>}\n * hast node.\n */\nexport function linkReference(state, node) {\n const def = state.definition(node.identifier)\n\n if (!def) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {href: normalizeUri(def.url || '')}\n\n if (def.title !== null && def.title !== undefined) {\n properties.title = def.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Link} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function link(state, node) {\n /** @type {Properties} */\n const properties = {href: normalizeUri(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {List} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function list(state, node) {\n /** @type {Properties} */\n const properties = {}\n const results = state.all(node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n properties.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < results.length) {\n const child = results[index]\n\n if (\n child.type === 'element' &&\n child.tagName === 'li' &&\n child.properties &&\n Array.isArray(child.properties.className) &&\n child.properties.className.includes('task-list-item')\n ) {\n properties.className = ['contains-task-list']\n break\n }\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: node.ordered ? 'ol' : 'ul',\n properties,\n children: state.wrap(results, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Paragraph} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function paragraph(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastRoot} node\n * mdast node.\n * @returns {HastRoot | HastElement}\n * hast node.\n */\nexport function root(state, node) {\n /** @type {HastRoot} */\n const result = {type: 'root', children: state.wrap(state.all(node))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Strong} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strong(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'strong',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Table} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function table(state, node) {\n const rows = state.all(node)\n const firstRow = rows.shift()\n /** @type {Array<Element>} */\n const tableContent = []\n\n if (firstRow) {\n /** @type {Element} */\n const head = {\n type: 'element',\n tagName: 'thead',\n properties: {},\n children: state.wrap([firstRow], true)\n }\n state.patch(node.children[0], head)\n tableContent.push(head)\n }\n\n if (rows.length > 0) {\n /** @type {Element} */\n const body = {\n type: 'element',\n tagName: 'tbody',\n properties: {},\n children: state.wrap(rows, true)\n }\n\n const start = pointStart(node.children[1])\n const end = pointEnd(node.children[node.children.length - 1])\n if (start.line && end.line) body.position = {start, end}\n tableContent.push(body)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'table',\n properties: {},\n children: state.wrap(tableContent, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableCell} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function tableCell(state, node) {\n // Note: this function is normally not called: see `table-row` for how rows\n // and their cells are compiled.\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'td', // Assume body cell.\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract<Nodes, Parent>} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableRow} node\n * mdast node.\n * @param {Parents | null | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function tableRow(state, node, parent) {\n const siblings = parent ? parent.children : undefined\n // Generate a body row when without parent.\n const rowIndex = siblings ? siblings.indexOf(node) : 1\n const tagName = rowIndex === 0 ? 'th' : 'td'\n const align = parent && parent.type === 'table' ? parent.align : undefined\n const length = align ? align.length : node.children.length\n let cellIndex = -1\n /** @type {Array<ElementContent>} */\n const cells = []\n\n while (++cellIndex < length) {\n // Note: can also be undefined.\n const cell = node.children[cellIndex]\n /** @type {Properties} */\n const properties = {}\n const alignValue = align ? align[cellIndex] : undefined\n\n if (alignValue) {\n properties.align = alignValue\n }\n\n /** @type {Element} */\n let result = {type: 'element', tagName, properties, children: []}\n\n if (cell) {\n result.children = state.all(cell)\n state.patch(cell, result)\n result = state.applyData(node, result)\n }\n\n cells.push(result)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'tr',\n properties: {},\n children: state.wrap(cells, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastText} node\n * mdast node.\n * @returns {HastText | HastElement}\n * hast node.\n */\nexport function text(state, node) {\n /** @type {HastText} */\n const result = {type: 'text', value: trimLines(String(node.value))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ThematicBreak} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function thematicBreak(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'hr',\n properties: {},\n children: []\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract<MdastNodes, MdastParent>} MdastParents\n *\n * @typedef EmbeddedHastFields\n * hast fields.\n * @property {string | null | undefined} [hName]\n * Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n * Generate an element with these properties instead.\n * @property {Array<HastElementContent> | null | undefined} [hChildren]\n * Generate an element with this content instead.\n *\n * @typedef {Record<string, unknown> & EmbeddedHastFields} MdastData\n * mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n * mdast node with embedded hast data.\n *\n * @typedef PointLike\n * Point-like value.\n * @property {number | null | undefined} [line]\n * Line.\n * @property {number | null | undefined} [column]\n * Column.\n * @property {number | null | undefined} [offset]\n * Offset.\n *\n * @typedef PositionLike\n * Position-like value.\n * @property {PointLike | null | undefined} [start]\n * Point-like value.\n * @property {PointLike | null | undefined} [end]\n * Point-like value.\n *\n * @callback Handler\n * Handle a node.\n * @param {State} state\n * Info passed around.\n * @param {any} node\n * mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n * Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n * hast node.\n *\n * @callback HFunctionProps\n * Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {HastProperties} props\n * Properties.\n * @param {Array<HastElementContent> | null | undefined} [children]\n * hast content.\n * @returns {HastElement}\n * Compiled element.\n *\n * @callback HFunctionNoProps\n * Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {Array<HastElementContent> | null | undefined} [children]\n * hast content.\n * @returns {HastElement}\n * Compiled element.\n *\n * @typedef HFields\n * Info on `state`.\n * @property {boolean} dangerous\n * Whether HTML is allowed.\n * @property {string} clobberPrefix\n * Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n * Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n * HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n * Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n * Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n * Definition cache.\n * @property {Record<string, MdastFootnoteDefinition>} footnoteById\n * Footnote definitions by their identifier.\n * @property {Array<string>} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Record<string, number>} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {Handler} unknownHandler\n * Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n * Copy a node’s positional info.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => Type | HastElement} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array<HastElementContent> | null | undefined} one\n * Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n * Transform the children of an mdast parent to hast.\n * @property {<Type extends HastContent>(nodes: Array<Type>, loose?: boolean | null | undefined) => Array<Type | HastText>} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n * Like `state` but lower-level and usable on non-elements.\n * Deprecated: use `patch` and `applyData`.\n * @property {Array<string>} passThrough\n * List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n * Prefix to use before the `id` attribute on footnotes to prevent it from\n * *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n * Label to use from backreferences back to their footnote call (affects\n * screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (note that `id: 'footnote-label'`\n * is always added as footnote calls use it with `aria-describedby` to\n * provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes.\n * @property {Array<string> | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes.\n *\n * @typedef {Record<string, Handler>} Handlers\n * Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n * Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || {}\n const dangerous = settings.allowDangerousHtml || false\n /** @type {Record<string, MdastFootnoteDefinition>} */\n const footnoteById = {}\n\n // To do: next major: add `options` to state, remove:\n // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n // `unknownHandler`.\n\n // To do: next major: move to `state.options.allowDangerousHtml`.\n state.dangerous = dangerous\n // To do: next major: move to `state.options`.\n state.clobberPrefix =\n settings.clobberPrefix === undefined || settings.clobberPrefix === null\n ? 'user-content-'\n : settings.clobberPrefix\n // To do: next major: move to `state.options`.\n state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n // To do: next major: move to `state.options`.\n state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n // To do: next major: move to `state.options`.\n state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n className: ['sr-only']\n }\n // To do: next major: move to `state.options`.\n state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n // To do: next major: move to `state.options`.\n state.unknownHandler = settings.unknownHandler\n // To do: next major: move to `state.options`.\n state.passThrough = settings.passThrough\n\n state.handlers = {...handlers, ...settings.handlers}\n\n // To do: next major: replace utility with `definitionById` object, so we\n // only walk once (as we need footnotes too).\n state.definition = definitions(tree)\n state.footnoteById = footnoteById\n /** @type {Array<string>} */\n state.footnoteOrder = []\n /** @type {Record<string, number>} */\n state.footnoteCounts = {}\n\n state.patch = patch\n state.applyData = applyData\n state.one = oneBound\n state.all = allBound\n state.wrap = wrap\n // To do: next major: remove `augment`.\n state.augment = augment\n\n visit(tree, 'footnoteDefinition', (definition) => {\n const id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n })\n\n // @ts-expect-error Hush, it’s fine!\n return state\n\n /**\n * Finalise the created `right`, a hast node, from `left`, an mdast node.\n *\n * @param {MdastNodeWithData | PositionLike | null | undefined} left\n * @param {HastElementContent} right\n * @returns {HastElementContent}\n */\n /* c8 ignore start */\n // To do: next major: remove.\n function augment(left, right) {\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && 'data' in left && left.data) {\n /** @type {MdastData} */\n const data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = {...right.properties, ...data.hProperties}\n }\n\n if ('children' in right && right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n if (left) {\n const ctx = 'type' in left ? left : {position: left}\n\n if (!generated(ctx)) {\n // @ts-expect-error: fine.\n right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n }\n }\n\n return right\n }\n /* c8 ignore stop */\n\n /**\n * Create an element for `node`.\n *\n * @type {HFunctionProps}\n */\n /* c8 ignore start */\n // To do: next major: remove.\n function state(node, tagName, props, children) {\n if (Array.isArray(props)) {\n children = props\n props = {}\n }\n\n // @ts-expect-error augmenting an element yields an element.\n return augment(node, {\n type: 'element',\n tagName,\n properties: props || {},\n children: children || []\n })\n }\n /* c8 ignore stop */\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | null | undefined} [parent]\n * Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n * Resulting hast node.\n */\n function oneBound(node, parent) {\n // @ts-expect-error: that’s a state :)\n return one(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array<HastElementContent>}\n * Resulting hast nodes.\n */\n function allBound(parent) {\n // @ts-expect-error: that’s a state :)\n return all(state, parent)\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {void}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {Type | HastElement}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {Type | HastElement} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent is likely to keep the content around (otherwise: pass\n // `hChildren`).\n else {\n result = {\n type: 'element',\n tagName: hName,\n properties: {},\n children: []\n }\n\n // To do: next major: take the children from the `root`, or inject the\n // raw/text/comment or so into the element?\n // if ('children' in node) {\n // // @ts-expect-error: assume `children` are allowed in elements.\n // result.children = node.children\n // } else {\n // // @ts-expect-error: assume `node` is allowed in elements.\n // result.children.push(node)\n // }\n }\n }\n\n if (result.type === 'element' && hProperties) {\n result.properties = {...result.properties, ...hProperties}\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n // @ts-expect-error: assume valid children are defined.\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | null | undefined} [parent]\n * Parent of `node`.\n * @returns {HastElementContent | Array<HastElementContent> | null | undefined}\n * Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n const type = node && node.type\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(state.handlers, type)) {\n return state.handlers[type](state, node, parent)\n }\n\n if (state.passThrough && state.passThrough.includes(type)) {\n // To do: next major: deep clone.\n // @ts-expect-error: types of passed through nodes are expected to be added manually.\n return 'children' in node ? {...node, children: all(state, node)} : node\n }\n\n if (state.unknownHandler) {\n return state.unknownHandler(state, node, parent)\n }\n\n return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array<HastElementContent>}\n * Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n /** @type {Array<HastElementContent>} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = one(state, nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = result.value.replace(/^\\s+/, '')\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = head.value.replace(/^\\s+/, '')\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastText | HastElement}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastText | HastElement} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: all(state, node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n * Node type.\n * @param {Array<Type>} nodes\n * List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n * Whether to add line endings at start and end.\n * @returns {Array<Type | HastText>}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array<Type | HastText>} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n","/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n * Node to check.\n * @returns {boolean}\n * Whether `node` is generated (does not have positional info).\n */\nexport function generated(node) {\n return (\n !node ||\n !node.position ||\n !node.position.start ||\n !node.position.start.line ||\n !node.position.start.column ||\n !node.position.end ||\n !node.position.end.line ||\n !node.position.end.column\n )\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `<div>` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {HastNodes | null | undefined}\n * hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, null)\n const foot = footer(state)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n // To do: next major: always return root?\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\nexport function footer(state) {\n /** @type {Array<ElementContent>} */\n const listItems = []\n let index = -1\n\n while (++index < state.footnoteOrder.length) {\n const def = state.footnoteById[state.footnoteOrder[index]]\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array<ElementContent>} */\n const backReferences = []\n\n while (++referenceIndex <= state.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: state.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: state.clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: state.footnoteLabelTagName,\n properties: {\n // To do: use structured clone.\n ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: state.footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor<any, any, any, any>} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `<MdastRoot, HastRoot>` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n})\n","import {\n boolean,\n number,\n spaceSeparated,\n commaSeparated,\n commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n})\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","import {visit} from 'unist-util-visit'\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef Options\n * @property {Array<string>} [allowedElements]\n * @property {Array<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[Options], Root>}\n */\nexport default function rehypeFilter(options) {\n if (options.allowedElements && options.disallowedElements) {\n throw new TypeError(\n 'Only one of `allowedElements` and `disallowedElements` should be defined'\n )\n }\n\n if (\n options.allowedElements ||\n options.disallowedElements ||\n options.allowElement\n ) {\n return (tree) => {\n visit(tree, 'element', (node, index, parent_) => {\n const parent = /** @type {Element|Root} */ (parent_)\n /** @type {boolean|undefined} */\n let remove\n\n if (options.allowedElements) {\n remove = !options.allowedElements.includes(node.tagName)\n } else if (options.disallowedElements) {\n remove = options.disallowedElements.includes(node.tagName)\n }\n\n if (!remove && options.allowElement && typeof index === 'number') {\n remove = !options.allowElement(node, index, parent)\n }\n\n if (remove && typeof index === 'number') {\n if (options.unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n\n return undefined\n })\n }\n }\n}\n","/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {unknown} thing\n * Thing to check (typically `Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`).\n * If a node is passed it must be a `Text` node, whose `value` field is\n * checked.\n */\nexport function whitespace(thing) {\n /** @type {string} */\n const value =\n // @ts-expect-error looks like a node.\n thing && typeof thing === 'object' && thing.type === 'text'\n ? // @ts-expect-error looks like a text.\n thing.value || ''\n : thing\n\n // HTML whitespace expression.\n // See <https://infra.spec.whatwg.org/#ascii-whitespace>.\n return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let prop = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","/**\n * `hast` is close to `React`, but differs in a couple of cases.\n *\n * To get a React property from a hast property, check if it is in\n * `hastToReact`, if it is, then use the corresponding value,\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","import StyleToObject from './index.js';\n\nexport default StyleToObject;\n","const protocols = ['http', 'https', 'mailto', 'tel']\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nexport function uriTransformer(uri) {\n const url = (uri || '').trim()\n const first = url.charAt(0)\n\n if (first === '#' || first === '/') {\n return url\n }\n\n const colon = url.indexOf(':')\n if (colon === -1) {\n return url\n }\n\n let index = -1\n\n while (++index < protocols.length) {\n const protocol = protocols[index]\n\n if (\n colon === protocol.length &&\n url.slice(0, protocol.length).toLowerCase() === protocol\n ) {\n return url\n }\n }\n\n index = url.indexOf('?')\n if (index !== -1 && colon > index) {\n return url\n }\n\n index = url.indexOf('#')\n if (index !== -1 && colon > index) {\n return url\n }\n\n // eslint-disable-next-line no-script-url\n return 'javascript:void(0)'\n}\n","/**\n * @template T\n * @typedef {import('react').ComponentType<T>} ComponentType<T>\n */\n\n/**\n * @template {import('react').ElementType} T\n * @typedef {import('react').ComponentPropsWithoutRef<T>} ComponentPropsWithoutRef<T>\n */\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('./complex-types.js').ReactMarkdownProps} ReactMarkdownProps\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {Options} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @typedef {import('react').HTMLAttributeAnchorTarget} TransformLinkTargetType\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {TransformLinkTargetType|undefined}\n *\n * @typedef {keyof JSX.IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef {ComponentPropsWithoutRef<'code'> & ReactMarkdownProps & {inline?: boolean}} CodeProps\n * @typedef {ComponentPropsWithoutRef<'h1'> & ReactMarkdownProps & {level: number}} HeadingProps\n * @typedef {ComponentPropsWithoutRef<'li'> & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} LiProps\n * @typedef {ComponentPropsWithoutRef<'ol'> & ReactMarkdownProps & {depth: number, ordered: true}} OrderedListProps\n * @typedef {ComponentPropsWithoutRef<'td'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: false}} TableDataCellProps\n * @typedef {ComponentPropsWithoutRef<'th'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: true}} TableHeaderCellProps\n * @typedef {ComponentPropsWithoutRef<'tr'> & ReactMarkdownProps & {isHeader: boolean}} TableRowProps\n * @typedef {ComponentPropsWithoutRef<'ul'> & ReactMarkdownProps & {depth: number, ordered: false}} UnorderedListProps\n *\n * @typedef {ComponentType<CodeProps>} CodeComponent\n * @typedef {ComponentType<HeadingProps>} HeadingComponent\n * @typedef {ComponentType<LiProps>} LiComponent\n * @typedef {ComponentType<OrderedListProps>} OrderedListComponent\n * @typedef {ComponentType<TableDataCellProps>} TableDataCellComponent\n * @typedef {ComponentType<TableHeaderCellProps>} TableHeaderCellComponent\n * @typedef {ComponentType<TableRowProps>} TableRowComponent\n * @typedef {ComponentType<UnorderedListProps>} UnorderedListComponent\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableDataCellComponent|ReactMarkdownNames} td\n * @property {TableHeaderCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial<Omit<import('./complex-types.js').NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n *\n * @typedef Options\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {TransformLinkTargetType|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nimport React from 'react'\nimport ReactIs from 'react-is'\nimport {whitespace} from 'hast-util-whitespace'\nimport {svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\nimport {uriTransformer} from './uri-transformer.js'\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nexport function childrenToReact(context, node) {\n /** @type {Array<ReactNode>} */\n const children = []\n let childIndex = -1\n /** @type {Comment|Doctype|Element|Raw|Text} */\n let child\n\n while (++childIndex < node.children.length) {\n child = node.children[childIndex]\n\n if (child.type === 'element') {\n children.push(toReact(context, child, childIndex, node))\n } else if (child.type === 'text') {\n // Currently, a warning is triggered by react for *any* white space in\n // tables.\n // So we drop it.\n // See: <https://github.com/facebook/react/pull/7081>.\n // See: <https://github.com/facebook/react/pull/7515>.\n // See: <https://github.com/remarkjs/remark-react/issues/64>.\n // See: <https://github.com/remarkjs/react-markdown/issues/576>.\n if (\n node.type !== 'element' ||\n !tableElements.has(node.tagName) ||\n !whitespace(child)\n ) {\n children.push(child.value)\n }\n } else if (child.type === 'raw' && !context.options.skipHtml) {\n // Default behavior is to show (encoded) HTML.\n children.push(child.value)\n }\n }\n\n return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n const options = context.options\n const transform =\n options.transformLinkUri === undefined\n ? uriTransformer\n : options.transformLinkUri\n const parentSchema = context.schema\n /** @type {ReactMarkdownNames} */\n // @ts-expect-error assume a known HTML/SVG element.\n const name = node.tagName\n /** @type {Record<string, unknown>} */\n const properties = {}\n let schema = parentSchema\n /** @type {string} */\n let property\n\n if (parentSchema.space === 'html' && name === 'svg') {\n schema = svg\n context.schema = schema\n }\n\n if (node.properties) {\n for (property in node.properties) {\n if (own.call(node.properties, property)) {\n addProperty(properties, property, node.properties[property], context)\n }\n }\n }\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth++\n }\n\n const children = childrenToReact(context, node)\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth--\n }\n\n // Restore parent schema.\n context.schema = parentSchema\n\n // Nodes created by plugins do not have positional info, in which case we use\n // an object that matches the position interface.\n const position = node.position || {\n start: {line: null, column: null, offset: null},\n end: {line: null, column: null, offset: null}\n }\n const component =\n options.components && own.call(options.components, name)\n ? options.components[name]\n : name\n const basic = typeof component === 'string' || component === React.Fragment\n\n if (!ReactIs.isValidElementType(component)) {\n throw new TypeError(\n `Component for name \\`${name}\\` not defined or is not renderable`\n )\n }\n\n properties.key = index\n\n if (name === 'a' && options.linkTarget) {\n properties.target =\n typeof options.linkTarget === 'function'\n ? options.linkTarget(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n : options.linkTarget\n }\n\n if (name === 'a' && transform) {\n properties.href = transform(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (\n !basic &&\n name === 'code' &&\n parent.type === 'element' &&\n parent.tagName !== 'pre'\n ) {\n properties.inline = true\n }\n\n if (\n !basic &&\n (name === 'h1' ||\n name === 'h2' ||\n name === 'h3' ||\n name === 'h4' ||\n name === 'h5' ||\n name === 'h6')\n ) {\n properties.level = Number.parseInt(name.charAt(1), 10)\n }\n\n if (name === 'img' && options.transformImageUri) {\n properties.src = options.transformImageUri(\n String(properties.src || ''),\n String(properties.alt || ''),\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (!basic && name === 'li' && parent.type === 'element') {\n const input = getInputElement(node)\n properties.checked =\n input && input.properties ? Boolean(input.properties.checked) : null\n properties.index = getElementsBeforeCount(parent, node)\n properties.ordered = parent.tagName === 'ol'\n }\n\n if (!basic && (name === 'ol' || name === 'ul')) {\n properties.ordered = name === 'ol'\n properties.depth = context.listDepth\n }\n\n if (name === 'td' || name === 'th') {\n if (properties.align) {\n if (!properties.style) properties.style = {}\n // @ts-expect-error assume `style` is an object\n properties.style.textAlign = properties.align\n delete properties.align\n }\n\n if (!basic) {\n properties.isHeader = name === 'th'\n }\n }\n\n if (!basic && name === 'tr' && parent.type === 'element') {\n properties.isHeader = Boolean(parent.tagName === 'thead')\n }\n\n // If `sourcePos` is given, pass source information (line/column info from markdown source).\n if (options.sourcePos) {\n properties['data-sourcepos'] = flattenPosition(position)\n }\n\n if (!basic && options.rawSourcePos) {\n properties.sourcePosition = node.position\n }\n\n // If `includeElementIndex` is given, pass node index info to components.\n if (!basic && options.includeElementIndex) {\n properties.index = getElementsBeforeCount(parent, node)\n properties.siblingCount = getElementsBeforeCount(parent)\n }\n\n if (!basic) {\n properties.node = node\n }\n\n // Ensure no React warnings are emitted for void elements w/ children.\n return children.length > 0\n ? React.createElement(component, properties, children)\n : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n let index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n\n if (child.type === 'element' && child.tagName === 'input') {\n return child\n }\n }\n\n return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n let index = -1\n let count = 0\n\n while (++index < parent.children.length) {\n if (parent.children[index] === node) break\n if (parent.children[index].type === 'element') count++\n }\n\n return count\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n const info = find(ctx.schema, prop)\n let result = value\n\n // Ignore nullish and `NaN` values.\n // eslint-disable-next-line no-self-compare\n if (result === null || result === undefined || result !== result) {\n return\n }\n\n // Accept `array`.\n // Most props are space-separated.\n if (Array.isArray(result)) {\n result = info.commaSeparated ? commas(result) : spaces(result)\n }\n\n if (info.property === 'style' && typeof result === 'string') {\n result = parseStyle(result)\n }\n\n if (info.space && info.property) {\n props[\n own.call(hastToReact, info.property)\n ? hastToReact[info.property]\n : info.property\n ] = result\n } else if (info.attribute) {\n props[info.attribute] = result\n }\n}\n\n/**\n * @param {string} value\n * @returns {Record<string, string>}\n */\nfunction parseStyle(value) {\n /** @type {Record<string, string>} */\n const result = {}\n\n try {\n style(value, iterator)\n } catch {\n // Silent.\n }\n\n return result\n\n /**\n * @param {string} name\n * @param {string} v\n */\n function iterator(name, v) {\n const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n result[k.replace(/-([a-z])/g, styleReplacer)] = v\n }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n return [\n pos.start.line,\n ':',\n pos.start.column,\n '-',\n pos.end.line,\n ':',\n pos.end.column\n ]\n .map(String)\n .join('')\n}\n","/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').Options} FilterOptions\n * @typedef {import('./ast-to-react.js').Options} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n * @property {import('remark-rehype').Options | undefined} [remarkRehypeOptions={}]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n *\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\nimport React from 'react'\nimport {VFile} from 'vfile'\nimport {unified} from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport PropTypes from 'prop-types'\nimport {html} from 'property-information'\nimport rehypeFilter from './rehype-filter.js'\nimport {childrenToReact} from './ast-to-react.js'\n\nconst own = {}.hasOwnProperty\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {Record<string, Deprecation>} */\nconst deprecated = {\n plugins: {to: 'remarkPlugins', id: 'change-plugins-to-remarkplugins'},\n renderers: {to: 'components', id: 'change-renderers-to-components'},\n astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n source: {to: 'children', id: 'change-source-to-children'},\n allowNode: {\n to: 'allowElement',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n allowedTypes: {\n to: 'allowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n disallowedTypes: {\n to: 'disallowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n includeNodeIndex: {\n to: 'includeElementIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n }\n}\n\n/**\n * React component to render markdown.\n *\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nexport function ReactMarkdown(options) {\n for (const key in deprecated) {\n if (own.call(deprecated, key) && own.call(options, key)) {\n const deprecation = deprecated[key]\n console.warn(\n `[react-markdown] Warning: please ${\n deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n )\n delete deprecated[key]\n }\n }\n\n const processor = unified()\n .use(remarkParse)\n .use(options.remarkPlugins || [])\n .use(remarkRehype, {\n ...options.remarkRehypeOptions,\n allowDangerousHtml: true\n })\n .use(options.rehypePlugins || [])\n .use(rehypeFilter, options)\n\n const file = new VFile()\n\n if (typeof options.children === 'string') {\n file.value = options.children\n } else if (options.children !== undefined && options.children !== null) {\n console.warn(\n `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n )\n }\n\n const hastNode = processor.runSync(processor.parse(file), file)\n\n if (hastNode.type !== 'root') {\n throw new TypeError('Expected a `root` node')\n }\n\n /** @type {ReactElement} */\n let result = React.createElement(\n React.Fragment,\n {},\n childrenToReact({options, schema: html, listDepth: 0}, hastNode)\n )\n\n if (options.className) {\n result = React.createElement('div', {className: options.className}, result)\n }\n\n return result\n}\n\nReactMarkdown.propTypes = {\n // Core options:\n children: PropTypes.string,\n // Layout options:\n className: PropTypes.string,\n // Filter options:\n allowElement: PropTypes.func,\n allowedElements: PropTypes.arrayOf(PropTypes.string),\n disallowedElements: PropTypes.arrayOf(PropTypes.string),\n unwrapDisallowed: PropTypes.bool,\n // Plugin options:\n remarkPlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n rehypePlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n // Transform options:\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n skipHtml: PropTypes.bool,\n includeElementIndex: PropTypes.bool,\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n components: PropTypes.object\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiControl,\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n}\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n}\nconst path = {\n tokenize: tokenizePath,\n partial: true\n}\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n}\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n}\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n}\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n}\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n}\n\n/** @type {ConstructRecord} */\nconst text = {}\n\n// To do: next major: expose functions that yields extension.\n\n/**\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n *\n * @type {Extension}\n */\nexport const gfmAutolinkLiteral = {\n text\n}\n\n/** @type {Code} */\nlet code = 48\n\n// Add alphanumerics.\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n if (code === 58) code = 65\n else if (code === 91) code = 97\n}\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, protocolAutolink]\ntext[104] = [emailAutolink, protocolAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this\n /** @type {boolean | undefined} */\n let dot\n /** @type {boolean} */\n let data\n return start\n\n /**\n * Start of email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (\n !gfmAtext(code) ||\n !previousEmail.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n if (code === 64) {\n effects.consume(code)\n return emailDomain\n }\n return nok(code)\n }\n\n /**\n * In email domain.\n *\n * The reference code is a bit overly complex as it handles the `@`, of which\n * there may be just one.\n * Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomain(code) {\n // Dot followed by alphanumerical (not `-` or `_`).\n if (code === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code)\n }\n\n // Alphanumerical, `-`, and `_`.\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n data = true\n effects.consume(code)\n return emailDomain\n }\n\n // To do: `/` if xmpp.\n\n // Note: normally we’d truncate trailing punctuation from the link.\n // However, email autolink literals cannot contain any of those markers,\n // except for `.`, but that can only occur if it isn’t trailing.\n // So we can ignore truncating!\n return emailDomainAfter(code)\n }\n\n /**\n * In email domain, on dot that is not a trail.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainDot(code) {\n effects.consume(code)\n dot = true\n return emailDomain\n }\n\n /**\n * After email domain.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainAfter(code) {\n // Domain must not be empty, must include a dot, and must end in alphabetical.\n // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this\n return wwwStart\n\n /**\n * Start of www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwStart(code) {\n if (\n (code !== 87 && code !== 119) ||\n !previousWww.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww')\n // Note: we *check*, so we can discard the `www.` we parsed.\n // If it worked, we consider it as a part of the domain.\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code)\n }\n\n /**\n * After a www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwAfter(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n const self = this\n let buffer = ''\n let seen = false\n return protocolStart\n\n /**\n * Start of protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolStart(code) {\n if (\n (code === 72 || code === 104) &&\n previousProtocol.call(self, self.previous) &&\n !previousUnbalanced(self.events)\n ) {\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n return nok(code)\n }\n\n /**\n * In protocol.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^^^^\n * ```\n *\n * @type {State}\n */\n function protocolPrefixInside(code) {\n // `5` is size of `https`\n if (asciiAlpha(code) && buffer.length < 5) {\n // @ts-expect-error: definitely number.\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n if (code === 58) {\n const protocol = buffer.toLowerCase()\n if (protocol === 'http' || protocol === 'https') {\n effects.consume(code)\n return protocolSlashesInside\n }\n }\n return nok(code)\n }\n\n /**\n * In slashes.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^\n * ```\n *\n * @type {State}\n */\n function protocolSlashesInside(code) {\n if (code === 47) {\n effects.consume(code)\n if (seen) {\n return afterProtocol\n }\n seen = true\n return protocolSlashesInside\n }\n return nok(code)\n }\n\n /**\n * After protocol, before domain.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function afterProtocol(code) {\n // To do: this is different from `markdown-rs`:\n // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n return code === null ||\n asciiControl(code) ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code)\n }\n\n /**\n * After a protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolAfter(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n let size = 0\n return wwwPrefixInside\n\n /**\n * In www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixInside(code) {\n if ((code === 87 || code === 119) && size < 3) {\n size++\n effects.consume(code)\n return wwwPrefixInside\n }\n if (code === 46 && size === 3) {\n effects.consume(code)\n return wwwPrefixAfter\n }\n return nok(code)\n }\n\n /**\n * After www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixAfter(code) {\n // If there is *anything*, we can link.\n return code === null ? nok(code) : ok(code)\n }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean | undefined} */\n let underscoreInLastSegment\n /** @type {boolean | undefined} */\n let underscoreInLastLastSegment\n /** @type {boolean | undefined} */\n let seen\n return domainInside\n\n /**\n * In domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^^^^^^^^^^\n * ```\n *\n * @type {State}\n */\n function domainInside(code) {\n // Check whether this marker, which is a trailing punctuation\n // marker, optionally followed by more trailing markers, and then\n // followed by an end.\n if (code === 46 || code === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code)\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 && unicodePunctuation(code))\n ) {\n return domainAfter(code)\n }\n seen = true\n effects.consume(code)\n return domainInside\n }\n\n /**\n * In domain, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function domainAtPunctuation(code) {\n // There is an underscore in the last segment of the domain\n if (code === 95) {\n underscoreInLastSegment = true\n }\n // Otherwise, it’s a `.`: save the last segment underscore in the\n // penultimate segment slot.\n else {\n underscoreInLastLastSegment = underscoreInLastSegment\n underscoreInLastSegment = undefined\n }\n effects.consume(code)\n return domainInside\n }\n\n /**\n * After domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^\n * ```\n *\n * @type {State} */\n function domainAfter(code) {\n // Note: that’s GH says a dot is needed, but it’s not true:\n // <https://github.com/github/cmark-gfm/issues/279>\n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code)\n }\n return ok(code)\n }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n * ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n let sizeOpen = 0\n let sizeClose = 0\n return pathInside\n\n /**\n * In path.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^\n * ```\n *\n * @type {State}\n */\n function pathInside(code) {\n if (code === 40) {\n sizeOpen++\n effects.consume(code)\n return pathInside\n }\n\n // To do: `markdown-rs` also needs this.\n // If this is a paren, and there are less closings than openings,\n // we don’t check for a trail.\n if (code === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code)\n }\n\n // Check whether this trailing punctuation marker is optionally\n // followed by more trailing markers, and then followed\n // by an end.\n if (\n code === 33 ||\n code === 34 ||\n code === 38 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 60 ||\n code === 63 ||\n code === 93 ||\n code === 95 ||\n code === 126\n ) {\n return effects.check(trail, ok, pathAtPunctuation)(code)\n }\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n effects.consume(code)\n return pathInside\n }\n\n /**\n * In path, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com/a\"b\n * ^\n * ```\n *\n * @type {State}\n */\n function pathAtPunctuation(code) {\n // Count closing parens.\n if (code === 41) {\n sizeClose++\n }\n effects.consume(code)\n return pathInside\n }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n * ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n return trail\n\n /**\n * In trail of domain or path.\n *\n * ```markdown\n * > | https://example.com\").\n * ^\n * ```\n *\n * @type {State}\n */\n function trail(code) {\n // Regular trailing punctuation.\n if (\n code === 33 ||\n code === 34 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 63 ||\n code === 95 ||\n code === 126\n ) {\n effects.consume(code)\n return trail\n }\n\n // `&` followed by one or more alphabeticals and then a `;`, is\n // as a whole considered as trailing punctuation.\n // In all other cases, it is considered as continuation of the URL.\n if (code === 38) {\n effects.consume(code)\n return trailCharRefStart\n }\n\n // Needed because we allow literals after `[`, as we fix:\n // <https://github.com/github/cmark-gfm/issues/278>.\n // Check that it is not followed by `(` or `[`.\n if (code === 93) {\n effects.consume(code)\n return trailBracketAfter\n }\n if (\n // `<` is an end.\n code === 60 ||\n // So is whitespace.\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In trail, after `]`.\n *\n * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n * > See end of <https://github.com/github/cmark-gfm/issues/278> for more.\n *\n * ```markdown\n * > | https://example.com](\n * ^\n * ```\n *\n * @type {State}\n */\n function trailBracketAfter(code) {\n // Whitespace or something that could start a resource or reference is the end.\n // Switch back to trail otherwise.\n if (\n code === null ||\n code === 40 ||\n code === 91 ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return trail(code)\n }\n\n /**\n * In character-reference like trail, after `&`.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefStart(code) {\n // When non-alpha, it’s not a trail.\n return asciiAlpha(code) ? trailCharRefInside(code) : nok(code)\n }\n\n /**\n * In character-reference like trail.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefInside(code) {\n // Switch back to trail if this is well-formed.\n if (code === 59) {\n effects.consume(code)\n return trail\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return trailCharRefInside\n }\n\n // It’s not a trail.\n return nok(code)\n }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n return start\n\n /**\n * Dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Must be dot.\n effects.consume(code)\n return after\n }\n\n /**\n * After dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Not a trail if alphanumeric.\n return asciiAlphanumeric(code) ? nok(code) : ok(code)\n }\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n return (\n code === null ||\n code === 40 ||\n code === 42 ||\n code === 95 ||\n code === 91 ||\n code === 93 ||\n code === 126 ||\n markdownLineEndingOrSpace(code)\n )\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n return !asciiAlpha(code)\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n // Do not allow a slash “inside” atext.\n // The reference code is a bit weird, but that’s what it results in.\n // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\n // Other than slash, every preceding character is allowed.\n return !(code === 47 || gfmAtext(code))\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n return (\n code === 43 ||\n code === 45 ||\n code === 46 ||\n code === 95 ||\n asciiAlphanumeric(code)\n )\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n let index = events.length\n let result = false\n while (index--) {\n const token = events[index][1]\n if (\n (token.type === 'labelLink' || token.type === 'labelImage') &&\n !token._balanced\n ) {\n result = true\n break\n }\n\n // If we’ve seen this token, and it was marked as not having any unbalanced\n // bracket before it, we can exit.\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false\n break\n }\n }\n if (events.length > 0 && !result) {\n // Mark the last token as “walked into” w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n }\n return result\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to\n * enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n }\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Array<string>} */\n // @ts-expect-error It’s fine!\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {Token} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n const token = self.events[index][1]\n if (token.type === 'labelImage') {\n labelStart = token\n break\n }\n\n // Exit if we’ve walked far enough.\n if (\n token.type === 'gfmFootnoteCall' ||\n token.type === 'labelLink' ||\n token.type === 'label' ||\n token.type === 'image' ||\n token.type === 'link'\n ) {\n break\n }\n }\n return start\n\n /**\n * @type {State}\n */\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code)\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return ok(code)\n }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length\n /** @type {Token | undefined} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n if (\n events[index][1].type === 'labelImage' &&\n events[index][0] === 'enter'\n ) {\n labelStart = events[index][1]\n break\n }\n }\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = 'data'\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker'\n\n // The whole (without `!`):\n /** @type {Token} */\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n // The `^` marker\n /** @type {Token} */\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n }\n // Increment the end 1 character.\n marker.end.column++\n marker.end.offset++\n marker.end._bufferIndex++\n /** @type {Token} */\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n }\n /** @type {Token} */\n const chunk = {\n type: 'chunkString',\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n }\n\n /** @type {Array<Event>} */\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n ['enter', call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n ['enter', marker, context],\n ['exit', marker, context],\n // Everything in between.\n ['enter', string, context],\n ['enter', chunk, context],\n ['exit', chunk, context],\n ['exit', string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n ['exit', call, context]\n ]\n events.splice(index, events.length - index + 1, ...replacement)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this\n /** @type {Array<string>} */\n // @ts-expect-error It’s fine!\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n let size = 0\n /** @type {boolean} */\n let data\n\n // Note: the implementation of `markdown-rs` is different, because it houses\n // core *and* extensions in one project.\n // Therefore, it can include footnote logic inside `label-end`.\n // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n // needed for labels.\n return start\n\n /**\n * Start of footnote label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteCall')\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return callStart\n }\n\n /**\n * After `[`, at `^`.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callStart(code) {\n if (code !== 94) return nok(code)\n effects.enter('gfmFootnoteCallMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallMarker')\n effects.enter('gfmFootnoteCallString')\n effects.enter('chunkString').contentType = 'string'\n return callData\n }\n\n /**\n * In label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callData(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteCallString')\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n effects.exit('gfmFootnoteCall')\n return ok\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? callEscape : callData\n }\n\n /**\n * On character after escape.\n *\n * ```markdown\n * > | a [^b\\c] d\n * ^\n * ```\n *\n * @type {State}\n */\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return callData\n }\n return callData(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this\n /** @type {Array<string>} */\n // @ts-expect-error It’s fine!\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {string} */\n let identifier\n let size = 0\n /** @type {boolean | undefined} */\n let data\n return start\n\n /**\n * Start of GFM footnote definition.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true\n effects.enter('gfmFootnoteDefinitionLabel')\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n return labelAtMarker\n }\n\n /**\n * In label, at caret.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAtMarker(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionMarker')\n effects.enter('gfmFootnoteDefinitionLabelString')\n effects.enter('chunkString').contentType = 'string'\n return labelInside\n }\n return nok(code)\n }\n\n /**\n * In label.\n *\n * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n * > definition labels.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteDefinitionLabelString')\n identifier = normalizeIdentifier(self.sliceSerialize(token))\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n effects.exit('gfmFootnoteDefinitionLabel')\n return labelAfter\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n * > <https://github.com/github/cmark-gfm/issues/240>\n *\n * ```markdown\n * > | [^a\\*b]: c\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return labelInside\n }\n return labelInside(code)\n }\n\n /**\n * After definition label.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n if (!defined.includes(identifier)) {\n defined.push(identifier)\n }\n\n // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n return factorySpace(\n effects,\n whitespaceAfter,\n 'gfmFootnoteDefinitionWhitespace'\n )\n }\n return nok(code)\n }\n\n /**\n * After definition prefix.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function whitespaceAfter(code) {\n // `markdown-rs` has a wrapping token for the prefix that is closed here.\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n /// Start of footnote definition continuation.\n ///\n /// ```markdown\n /// | [^a]: b\n /// > | c\n /// ^\n /// ```\n //\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition')\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'gfmFootnoteDefinitionIndent',\n 4 + 1\n )\n\n /**\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === 4\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean} [singleTilde=true]\n * Whether to support strikethrough with a single tilde.\n *\n * Single tildes work on github.com, but are technically prohibited by the\n * GFM spec.\n */\n\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n const options_ = options || {}\n let single = options_.singleTilde\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n if (single === null || single === undefined) {\n single = true\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n }\n\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n function resolveAllStrikethrough(events, context) {\n let index = -1\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'strikethroughSequenceTemporary' &&\n events[index][1]._close\n ) {\n let open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'strikethroughSequenceTemporary' &&\n events[open][1]._open &&\n // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset ===\n events[open][1].end.offset - events[open][1].start.offset\n ) {\n events[index][1].type = 'strikethroughSequence'\n events[open][1].type = 'strikethroughSequence'\n\n /** @type {Token} */\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n }\n\n /** @type {Token} */\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n\n // Opening.\n /** @type {Array<Event>} */\n const nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ]\n const insideSpan = context.parser.constructs.insideSpan.null\n if (insideSpan) {\n // Between.\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n )\n }\n\n // Closing.\n splice(nextEvents, nextEvents.length, 0, [\n ['exit', text, context],\n ['enter', events[index][1], context],\n ['exit', events[index][1], context],\n ['exit', strikethrough, context]\n ])\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n return events\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous\n const events = this.events\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (\n previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape'\n ) {\n return nok(code)\n }\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n\n /** @type {State} */\n function more(code) {\n const before = classifyCharacter(previous)\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code)\n effects.consume(code)\n size++\n return more\n }\n if (size < 2 && !single) return nok(code)\n const token = effects.exit('strikethroughSequenceTemporary')\n const after = classifyCharacter(code)\n token._open = !after || (after === 2 && Boolean(before))\n token._close = !before || (before === 2 && Boolean(after))\n return ok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n /**\n * Record of changes.\n *\n * @type {Array<Change>}\n */\n this.map = []\n }\n\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {void}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add)\n }\n\n // To do: not used here.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array<Event>} add\n // * @returns {void}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n\n /**\n * Done, change the events.\n *\n * @param {Array<Event>} events\n * @returns {void}\n */\n consume(events) {\n this.map.sort((a, b) => a[0] - b[0])\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (this.map.length === 0) {\n return\n }\n\n // To do: if links are added in events, like they are in `markdown-rs`,\n // this is needed.\n // // Calculate jumps: where items in the current list move to.\n // /** @type {Array<Jump>} */\n // const jumps = []\n // let index = 0\n // let addAcc = 0\n // let removeAcc = 0\n // while (index < this.map.length) {\n // const [at, remove, add] = this.map[index]\n // removeAcc += remove\n // addAcc += add.length\n // jumps.push([at, removeAcc, addAcc])\n // index += 1\n // }\n //\n // . shiftLinks(events, jumps)\n\n let index = this.map.length\n /** @type {Array<Array<Event>>} */\n const vecs = []\n while (index > 0) {\n index -= 1\n vecs.push(events.slice(this.map[index][0] + this.map[index][1]))\n // eslint-disable-next-line unicorn/no-array-push-push\n vecs.push(this.map[index][2])\n\n // Truncate rest.\n events.length = this.map[index][0]\n }\n vecs.push([...events])\n events.length = 0\n let slice = vecs.pop()\n while (slice) {\n events.push(...slice)\n slice = vecs.pop()\n }\n\n // Truncate everything.\n this.map.length = 0\n }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {void}\n */\nfunction addImpl(editMap, at, remove, add) {\n let index = 0\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (remove === 0 && add.length === 0) {\n return\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove\n\n // To do: before not used.\n // if (before) {\n // add.push(...editMap.map[index][2])\n // editMap.map[index][2] = add\n // } else {\n editMap.map[index][2].push(...add)\n // }\n\n return\n }\n index += 1\n }\n editMap.map.push([at, remove, add])\n}\n\n// /**\n// * Shift `previous` and `next` links according to `jumps`.\n// *\n// * This fixes links in case there are events removed or added between them.\n// *\n// * @param {Array<Event>} events\n// * @param {Array<Jump>} jumps\n// */\n// function shiftLinks(events, jumps) {\n// let jumpIndex = 0\n// let index = 0\n// let add = 0\n// let rm = 0\n\n// while (index < events.length) {\n// const rmCurr = rm\n\n// while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n// add = jumps[jumpIndex][2]\n// rm = jumps[jumpIndex][1]\n// jumpIndex += 1\n// }\n\n// // Ignore items that will be removed.\n// if (rm > rmCurr) {\n// index += rm - rmCurr\n// } else {\n// console.log('to do: links?', add, rmCurr)\n// // ?\n// // if let Some(link) = &events[index].link {\n// // if let Some(next) = link.next {\n// // events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n// // while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n// // add = jumps[jumpIndex].2;\n// // rm = jumps[jumpIndex].1;\n// // jumpIndex += 1;\n// // }\n// // events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n// // index = next;\n// // continue;\n// // }\n// // }\n// index += 1\n// }\n// }\n// }\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef {'left' | 'center' | 'right' | 'none'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Array<Event>} events\n * @param {number} index\n * @returns {Array<Align>}\n */\nexport function gfmTableAlign(events, index) {\n let inDelimiterRow = false\n /** @type {Array<Align>} */\n const align = []\n while (index < events.length) {\n const event = events[index]\n if (inDelimiterRow) {\n if (event[0] === 'enter') {\n // Start of alignment value: set a new column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n if (event[1].type === 'tableContent') {\n align.push(\n events[index + 1][1].type === 'tableDelimiterMarker'\n ? 'left'\n : 'none'\n )\n }\n }\n // Exits:\n // End of alignment value: change the column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n else if (event[1].type === 'tableContent') {\n if (events[index - 1][1].type === 'tableDelimiterMarker') {\n const alignIndex = align.length - 1\n align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right'\n }\n }\n // Done!\n else if (event[1].type === 'tableDelimiterRow') {\n break\n }\n } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n inDelimiterRow = true\n }\n index += 1\n }\n return align\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n * Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n * Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {EditMap} from './edit-map.js'\nimport {gfmTableAlign} from './infer.js'\n\n// To do: next major: expose functions.\n\n/**\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n *\n * @type {Extension}\n */\nexport const gfmTable = {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n const self = this\n let size = 0\n let sizeB = 0\n /** @type {boolean | undefined} */\n let seen\n return start\n\n /**\n * Start of a GFM table.\n *\n * If there is a valid table row or table head before, then we try to parse\n * another row.\n * Otherwise, we try to parse a head.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * > | | b |\n * ^\n * ```\n * @type {State}\n */\n function start(code) {\n let index = self.events.length - 1\n while (index > -1) {\n const type = self.events[index][1].type\n if (\n type === 'lineEnding' ||\n // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === 'linePrefix'\n )\n index--\n else break\n }\n const tail = index > -1 ? self.events[index][1].type : null\n const next =\n tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore\n\n // Don’t allow lazy body rows.\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n return next(code)\n }\n\n /**\n * Before table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBefore(code) {\n effects.enter('tableHead')\n effects.enter('tableRow')\n return headRowStart(code)\n }\n\n /**\n * Before table head row, after whitespace.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowStart(code) {\n if (code === 124) {\n return headRowBreak(code)\n }\n\n // To do: micromark-js should let us parse our own whitespace in extensions,\n // like `markdown-rs`:\n //\n // ```js\n // // 4+ spaces.\n // if (markdownSpace(code)) {\n // return nok(code)\n // }\n // ```\n\n seen = true\n // Count the first character, that isn’t a pipe, double.\n sizeB += 1\n return headRowBreak(code)\n }\n\n /**\n * At break in table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * ^\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBreak(code) {\n if (code === null) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n if (sizeB > 1) {\n sizeB = 0\n // To do: check if this works.\n // Feel free to interrupt:\n self.interrupt = true\n effects.exit('tableRow')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return headDelimiterStart\n }\n\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownSpace(code)) {\n // To do: check if this is fine.\n // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n // State::Retry(space_or_tab(tokenizer))\n return factorySpace(effects, headRowBreak, 'whitespace')(code)\n }\n sizeB += 1\n if (seen) {\n seen = false\n // Header cell count.\n size += 1\n }\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n // Whether a delimiter was seen.\n seen = true\n return headRowBreak\n }\n\n // Anything else is cell data.\n effects.enter('data')\n return headRowData(code)\n }\n\n /**\n * In table head row data.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return headRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? headRowEscape : headRowData\n }\n\n /**\n * In table head row escape.\n *\n * ```markdown\n * > | | a\\-b |\n * ^\n * | | ---- |\n * | | c |\n * ```\n *\n * @type {State}\n */\n function headRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return headRowData\n }\n return headRowData(code)\n }\n\n /**\n * Before delimiter row.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterStart(code) {\n // Reset `interrupt`.\n self.interrupt = false\n\n // Note: in `markdown-rs`, we need to handle piercing here too.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n effects.enter('tableDelimiterRow')\n // Track if we’ve seen a `:` or `|`.\n seen = false\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return headDelimiterBefore(code)\n }\n\n /**\n * Before delimiter row, after optional whitespace.\n *\n * Reused when a `|` is found later, to parse another cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterBefore(code) {\n if (code === 45 || code === 58) {\n return headDelimiterValueBefore(code)\n }\n if (code === 124) {\n seen = true\n // If we start with a pipe, we open a cell marker.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return headDelimiterCellBefore\n }\n\n // More whitespace / empty row not allowed at start.\n return headDelimiterNok(code)\n }\n\n /**\n * After `|`, before delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellBefore(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterValueBefore, 'whitespace')(code)\n }\n return headDelimiterValueBefore(code)\n }\n\n /**\n * Before delimiter cell value.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterValueBefore(code) {\n // Align: left.\n if (code === 58) {\n sizeB += 1\n seen = true\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterLeftAlignmentAfter\n }\n\n // Align: none.\n if (code === 45) {\n sizeB += 1\n // To do: seems weird that this *isn’t* left aligned, but that state is used?\n return headDelimiterLeftAlignmentAfter(code)\n }\n if (code === null || markdownLineEnding(code)) {\n return headDelimiterCellAfter(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * After delimiter cell left alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | :- |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterLeftAlignmentAfter(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n return headDelimiterFiller(code)\n }\n\n // Anything else is not ok after the left-align colon.\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter cell filler.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterFiller(code) {\n if (code === 45) {\n effects.consume(code)\n return headDelimiterFiller\n }\n\n // Align is `center` if it was `left`, `right` otherwise.\n if (code === 58) {\n seen = true\n effects.exit('tableDelimiterFiller')\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterRightAlignmentAfter\n }\n effects.exit('tableDelimiterFiller')\n return headDelimiterRightAlignmentAfter(code)\n }\n\n /**\n * After delimiter cell right alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterRightAlignmentAfter(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterCellAfter, 'whitespace')(code)\n }\n return headDelimiterCellAfter(code)\n }\n\n /**\n * After delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellAfter(code) {\n if (code === 124) {\n return headDelimiterBefore(code)\n }\n if (code === null || markdownLineEnding(code)) {\n // Exit when:\n // * there was no `:` or `|` at all (it’s a thematic break or setext\n // underline instead)\n // * the header cell count is not the delimiter cell count\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code)\n }\n\n // Note: in markdown-rs`, a reset is needed here.\n effects.exit('tableDelimiterRow')\n effects.exit('tableHead')\n // To do: in `markdown-rs`, resolvers need to be registered manually.\n // effects.register_resolver(ResolveName::GfmTable)\n return ok(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter row, at a disallowed byte.\n *\n * ```markdown\n * | | a |\n * > | | x |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterNok(code) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n\n /**\n * Before table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowStart(code) {\n // Note: in `markdown-rs` we need to manually take care of a prefix,\n // but in `micromark-js` that is done for us, so if we’re here, we’re\n // never at whitespace.\n effects.enter('tableRow')\n return bodyRowBreak(code)\n }\n\n /**\n * At break in table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ^\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowBreak(code) {\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return bodyRowBreak\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('tableRow')\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, bodyRowBreak, 'whitespace')(code)\n }\n\n // Anything else is cell content.\n effects.enter('data')\n return bodyRowData(code)\n }\n\n /**\n * In table body row data.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return bodyRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? bodyRowEscape : bodyRowData\n }\n\n /**\n * In table body row escape.\n *\n * ```markdown\n * | | a |\n * | | ---- |\n * > | | b\\-c |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return bodyRowData\n }\n return bodyRowData(code)\n }\n}\n\n/** @type {Resolver} */\n// eslint-disable-next-line complexity\nfunction resolveTable(events, context) {\n let index = -1\n let inFirstCellAwaitingPipe = true\n /** @type {RowKind} */\n let rowKind = 0\n /** @type {Range} */\n let lastCell = [0, 0, 0, 0]\n /** @type {Range} */\n let cell = [0, 0, 0, 0]\n let afterHeadAwaitingFirstBodyRow = false\n let lastTableEnd = 0\n /** @type {Token | undefined} */\n let currentTable\n /** @type {Token | undefined} */\n let currentBody\n /** @type {Token | undefined} */\n let currentCell\n const map = new EditMap()\n while (++index < events.length) {\n const event = events[index]\n const token = event[1]\n if (event[0] === 'enter') {\n // Start of head.\n if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = false\n\n // Inject previous (body end and) table end.\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n currentBody = undefined\n lastTableEnd = 0\n }\n\n // Inject table start.\n currentTable = {\n type: 'table',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentTable, context]])\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n inFirstCellAwaitingPipe = true\n currentCell = undefined\n lastCell = [0, 0, 0, 0]\n cell = [0, index + 1, 0, 0]\n\n // Inject table body start.\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false\n currentBody = {\n type: 'tableBody',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentBody, context]])\n }\n rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1\n }\n // Cell data.\n else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n inFirstCellAwaitingPipe = false\n\n // First value in cell.\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n lastCell = [0, 0, 0, 0]\n }\n cell[2] = index\n }\n } else if (token.type === 'tableCellDivider') {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n }\n lastCell = cell\n cell = [lastCell[1], index, 0, 0]\n }\n }\n }\n // Exit events.\n else if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = true\n lastTableEnd = index\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n lastTableEnd = index\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n )\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map, context, cell, rowKind, index, currentCell)\n }\n rowKind = 0\n } else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n cell[3] = index\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n }\n map.consume(context.events)\n\n // To do: move this into `html`, when events are exposed there.\n // That’s what `markdown-rs` does.\n // That needs updates to `mdast-util-gfm-table`.\n index = -1\n while (++index < context.events.length) {\n const event = context.events[index]\n if (event[0] === 'enter' && event[1].type === 'table') {\n event[1]._align = gfmTableAlign(context.events, index)\n }\n }\n return events\n}\n\n/// Generate a cell.\n/**\n *\n * @param {EditMap} map\n * @param {TokenizeContext} context\n * @param {Range} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n const groupName =\n rowKind === 1\n ? 'tableHeader'\n : rowKind === 2\n ? 'tableDelimiter'\n : 'tableData'\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n const valueName = 'tableContent'\n\n // Insert an exit for the previous cell, if there is one.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]))\n map.add(range[0], 0, [['exit', previousCell, context]])\n }\n\n // Insert enter of this cell.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^^^^-- this cell\n // ```\n const now = getPoint(context.events, range[1])\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n }\n map.add(range[1], 0, [['enter', previousCell, context]])\n\n // Insert text start at first data start and end at last data end, and\n // remove events between.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2])\n const relatedEnd = getPoint(context.events, range[3])\n /** @type {Token} */\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n }\n map.add(range[2], 0, [['enter', valueToken, context]])\n if (rowKind !== 2) {\n // Fix positional info on remaining events\n const start = context.events[range[2]]\n const end = context.events[range[3]]\n start[1].end = Object.assign({}, end[1].end)\n start[1].type = 'chunkText'\n start[1].contentType = 'text'\n\n // Remove if needed.\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1\n const b = range[3] - range[2] - 1\n map.add(a, b, [])\n }\n }\n map.add(range[3] + 1, 0, [['exit', valueToken, context]])\n }\n\n // Insert an exit for the last cell, if at the row end.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^^^-- this cell (the last one contains two “between” parts)\n // ```\n if (rowEnd !== undefined) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd))\n map.add(rowEnd, 0, [['exit', previousCell, context]])\n previousCell = undefined\n }\n return previousCell\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {EditMap} map\n * @param {TokenizeContext} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n /** @type {Array<Event>} */\n const exits = []\n const related = getPoint(context.events, index)\n if (tableBody) {\n tableBody.end = Object.assign({}, related)\n exits.push(['exit', tableBody, context])\n }\n table.end = Object.assign({}, related)\n exits.push(['exit', table, context])\n map.add(index + 1, 0, exits)\n}\n\n/**\n * @param {Array<Event>} events\n * @param {number} index\n * @returns {readonly Point}\n */\nfunction getPoint(events, index) {\n const event = events[index]\n const side = event[0] === 'enter' ? 'start' : 'end'\n return event[1][side]\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEndingOrSpace,\n markdownLineEnding,\n markdownSpace\n} from 'micromark-util-character'\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n}\n\n// To do: next major: expose function to make extension.\n\n/**\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM task list items syntax.\n *\n * @type {Extension}\n */\nexport const gfmTaskListItem = {\n text: {\n [91]: tasklistCheck\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this\n return open\n\n /**\n * At start of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code)\n }\n effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n\n /**\n * In task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // Currently we match how GH works in files.\n // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n return nok(code)\n }\n\n /**\n * At close of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return after\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n */\n function after(code) {\n // EOL in paragraph means there must be something else after it.\n if (markdownLineEnding(code)) {\n return ok(code)\n }\n\n // Space or tab?\n // Check what comes after.\n if (markdownSpace(code)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok,\n nok\n )(code)\n }\n\n // EOF, or non-whitespace, both wrong.\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n return factorySpace(effects, after, 'whitespace')\n\n /**\n * After whitespace, after task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // EOF means there was nothing, so bad.\n // EOL means there’s content after it, so good.\n // Impossible to have more spaces.\n // Anything else is good.\n return code === null ? nok(code) : ok(code)\n }\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {Extract<Node, MdastParent>} Parent\n * @typedef {Exclude<Parent, Root>} ContentParent\n *\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[Root, ...Array<ContentParent>, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array<string>`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | undefined | null}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {string | RegExp} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n * Several find and replaces, in array form.\n * @typedef {Record<string, Replace>} FindAndReplaceSchema\n * Several find and replaces, in object form.\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n * Find and replace in tuple form.\n * @typedef {string | ReplaceFunction} Replace\n * Thing to replace with.\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n * @typedef {Array<Pair>} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore.\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param tree\n * Tree to change.\n * @param find\n * Patterns to find.\n * @param replace\n * Things to replace with (when `find` is `Find`) or configuration.\n * @param options\n * Configuration (when `find` is not `Find`).\n * @returns\n * Given, modified, tree.\n */\n// To do: next major: remove `find` & `replace` combo, remove schema.\nexport const findAndReplace =\n /**\n * @type {(\n * (<Tree extends Node>(tree: Tree, find: Find, replace?: Replace | null | undefined, options?: Options | null | undefined) => Tree) &\n * (<Tree extends Node>(tree: Tree, schema: FindAndReplaceSchema | FindAndReplaceList, options?: Options | null | undefined) => Tree)\n * )}\n **/\n (\n /**\n * @template {Node} Tree\n * @param {Tree} tree\n * @param {Find | FindAndReplaceSchema | FindAndReplaceList} find\n * @param {Replace | Options | null | undefined} [replace]\n * @param {Options | null | undefined} [options]\n * @returns {Tree}\n */\n function (tree, find, replace, options) {\n /** @type {Options | null | undefined} */\n let settings\n /** @type {FindAndReplaceSchema|FindAndReplaceList} */\n let schema\n\n if (typeof find === 'string' || find instanceof RegExp) {\n // @ts-expect-error don’t expect options twice.\n schema = [[find, replace]]\n settings = options\n } else {\n schema = find\n // @ts-expect-error don’t expect replace twice.\n settings = replace\n }\n\n if (!settings) {\n settings = {}\n }\n\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(schema)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n // To do next major: don’t return the given tree.\n return tree\n\n /** @type {import('unist-util-visit-parents/complex-types.js').BuildVisitor<Root, 'text'>} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parent | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n\n if (\n ignored(\n parent,\n // @ts-expect-error: TS doesn’t understand but it’s perfect.\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array<Parent>} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n // @ts-expect-error: TS is wrong, some of these children can be text.\n const index = parent.children.indexOf(node)\n let change = false\n /** @type {Array<PhrasingContent>} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n // @ts-expect-error: stack is fine.\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value !== false) {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n }\n )\n\n/**\n * Turn a schema into pairs.\n *\n * @param {FindAndReplaceSchema | FindAndReplaceList} schema\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(schema) {\n /** @type {Pairs} */\n const result = []\n\n if (typeof schema !== 'object') {\n throw new TypeError('Expected array or object as schema')\n }\n\n if (Array.isArray(schema)) {\n let index = -1\n\n while (++index < schema.length) {\n result.push([\n toExpression(schema[index][0]),\n toFunction(schema[index][1])\n ])\n }\n } else {\n /** @type {string} */\n let key\n\n for (key in schema) {\n if (own.call(schema, key)) {\n result.push([toExpression(key), toFunction(schema[key])])\n }\n }\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function' ? replace : () => replace\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n */\n\nimport {ccount} from 'ccount'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n// To do: next major: expose functions instead of extensions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM autolink literals.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmAutolinkLiteralFromMarkdown = {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmAutolinkLiteralToMarkdown = {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {character: ':', before: '[ps]', after: '\\\\/', inConstruct, notInConstruct}\n ]\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = /** @type {Link} */ (this.stack[this.stack.length - 1])\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Link | Array<PhrasingContent> | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {Link} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n if (!trailExec) {\n return [url, undefined]\n }\n\n url = url.slice(0, trailExec.index)\n\n let trail = trailExec[0]\n let closingParenIndex = trail.indexOf(')')\n const openingParens = ccount(url, '(')\n let closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n","/**\n * @typedef {import('../types.js').AssociationId} AssociationId\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * Get an identifier from an association to match it to others.\n *\n * Associations are nodes that match to something else through an ID:\n * <https://github.com/syntax-tree/mdast#association>.\n *\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another:\n * controversially, character escapes and references don’t work in this\n * matching: `©` does not match `©`, and `\\+` does not match `+`.\n *\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we’re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character\n * escapes and all character references.\n *\n * @type {AssociationId}\n */\nexport function association(node) {\n if (node.label || !node.identifier) {\n return node.label || ''\n }\n\n return decodeString(node.identifier)\n}\n","/**\n * @typedef {import('../types.js').FlowContent} FlowContent\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\n/**\n * @param {Parent & {children: Array<FlowContent>}} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {TrackFields} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined by (blank) lines.\n */\nexport function containerFlow(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n const tracker = state.createTracker(info)\n /** @type {Array<string>} */\n const results = []\n let index = -1\n\n indexStack.push(-1)\n\n while (++index < children.length) {\n const child = children[index]\n\n indexStack[indexStack.length - 1] = index\n\n results.push(\n tracker.move(\n state.handle(child, parent, state, {\n before: '\\n',\n after: '\\n',\n ...tracker.current()\n })\n )\n )\n\n if (child.type !== 'list') {\n state.bulletLastUsed = undefined\n }\n\n if (index < children.length - 1) {\n results.push(\n tracker.move(between(child, children[index + 1], parent, state))\n )\n }\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n\n/**\n * @param {Node} left\n * @param {Node} right\n * @param {Parent} parent\n * @param {State} state\n * @returns {string}\n */\nfunction between(left, right, parent, state) {\n let index = state.join.length\n\n while (index--) {\n const result = state.join[index](left, right, parent, state)\n\n if (result === true || result === 1) {\n break\n }\n\n if (typeof result === 'number') {\n return '\\n'.repeat(1 + result)\n }\n\n if (result === false) {\n return '\\n\\n<!---->\\n\\n'\n }\n }\n\n return '\\n\\n'\n}\n","/**\n * @typedef {import('../types.js').IndentLines} IndentLines\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @type {IndentLines}\n */\nexport function indentLines(value, map) {\n /** @type {Array<string>} */\n const result = []\n let start = 0\n let line = 0\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = eol.exec(value))) {\n one(value.slice(start, match.index))\n result.push(match[0])\n start = match.index + match[0].length\n line++\n }\n\n one(value.slice(start))\n\n return result.join('')\n\n /**\n * @param {string} value\n */\n function one(value) {\n result.push(map(value, line, !value))\n }\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Unsafe} pattern\n * @returns {RegExp}\n */\nexport function patternCompile(pattern) {\n if (!pattern._compiled) {\n const before =\n (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (pattern.after ? '(?:' + pattern.after + ')' : ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n * @typedef {import('../types.js').ConstructName} ConstructName\n */\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (typeof list === 'string') {\n list = [list]\n }\n\n if (!list || list.length === 0) {\n return none\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').SafeConfig} SafeConfig\n */\n\nimport {patternCompile} from './pattern-compile.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What “constructs” we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {string | null | undefined} input\n * Raw value to make safe.\n * @param {SafeConfig} config\n * Configuration.\n * @returns {string}\n * Serialized markdown safe for embedding.\n */\nexport function safe(state, input, config) {\n const value = (config.before || '') + (input || '') + (config.after || '')\n /** @type {Array<number>} */\n const positions = []\n /** @type {Array<string>} */\n const result = []\n /** @type {Record<number, {before: boolean, after: boolean}>} */\n const infos = {}\n let index = -1\n\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n\n if (!patternInScope(state.stack, pattern)) {\n continue\n }\n\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(value))) {\n const before = 'before' in pattern || Boolean(pattern.atBreak)\n const after = 'after' in pattern\n const position = match.index + (before ? match[1].length : 0)\n\n if (positions.includes(position)) {\n if (infos[position].before && !before) {\n infos[position].before = false\n }\n\n if (infos[position].after && !after) {\n infos[position].after = false\n }\n } else {\n positions.push(position)\n infos[position] = {before, after}\n }\n }\n }\n\n positions.sort(numerical)\n\n let start = config.before ? config.before.length : 0\n const end = value.length - (config.after ? config.after.length : 0)\n index = -1\n\n while (++index < positions.length) {\n const position = positions[index]\n\n // Character before or after matched:\n if (position < start || position >= end) {\n continue\n }\n\n // If this character is supposed to be escaped because it has a condition on\n // the next character, and the next character is definitly being escaped,\n // then skip this escape.\n if (\n (position + 1 < end &&\n positions[index + 1] === position + 1 &&\n infos[position].after &&\n !infos[position + 1].before &&\n !infos[position + 1].after) ||\n (positions[index - 1] === position - 1 &&\n infos[position].before &&\n !infos[position - 1].before &&\n !infos[position - 1].after)\n ) {\n continue\n }\n\n if (start !== position) {\n // If we have to use a character reference, an ampersand would be more\n // correct, but as backslashes only care about punctuation, either will\n // do the trick\n result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n }\n\n start = position\n\n if (\n /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n (!config.encode || !config.encode.includes(value.charAt(position)))\n ) {\n // Character escape.\n result.push('\\\\')\n } else {\n // Character reference.\n result.push(\n '&#x' + value.charCodeAt(position).toString(16).toUpperCase() + ';'\n )\n start++\n }\n }\n\n result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n /** @type {Array<number>} */\n const positions = []\n /** @type {Array<string>} */\n const results = []\n const whole = value + after\n let index = -1\n let start = 0\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(whole))) {\n positions.push(match.index)\n }\n\n while (++index < positions.length) {\n if (start !== positions[index]) {\n results.push(value.slice(start, positions[index]))\n }\n\n results.push('\\\\')\n start = positions[index]\n }\n\n results.push(value.slice(start))\n\n return results.join('')\n}\n","/**\n * @typedef {import('../types.js').CreateTracker} CreateTracker\n * @typedef {import('../types.js').TrackCurrent} TrackCurrent\n * @typedef {import('../types.js').TrackMove} TrackMove\n * @typedef {import('../types.js').TrackShift} TrackShift\n */\n\n/**\n * Track positional info in the output.\n *\n * @type {CreateTracker}\n */\nexport function track(config) {\n // Defaults are used to prevent crashes when older utilities somehow activate\n // this code.\n /* c8 ignore next 5 */\n const options = config || {}\n const now = options.now || {}\n let lineShift = options.lineShift || 0\n let line = now.line || 1\n let column = now.column || 1\n\n return {move, current, shift}\n\n /**\n * Get the current tracked info.\n *\n * @type {TrackCurrent}\n */\n function current() {\n return {now: {line, column}, lineShift}\n }\n\n /**\n * Define an increased line shift (the typical indent for lines).\n *\n * @type {TrackShift}\n */\n function shift(value) {\n lineShift += value\n }\n\n /**\n * Move past some generated markdown.\n *\n * @type {TrackMove}\n */\n function move(input) {\n // eslint-disable-next-line unicorn/prefer-default-parameters\n const value = input || ''\n const chunks = value.split(/\\r?\\n|\\r/g)\n const tail = chunks[chunks.length - 1]\n line += chunks.length - 1\n column =\n chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n return value\n }\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n */\n\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {association} from 'mdast-util-to-markdown/lib/util/association.js'\nimport {containerFlow} from 'mdast-util-to-markdown/lib/util/container-flow.js'\nimport {indentLines} from 'mdast-util-to-markdown/lib/util/indent-lines.js'\nimport {safe} from 'mdast-util-to-markdown/lib/util/safe.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n// To do: next major: rename `context` -> `state`, `safeOptions` to `info`, use\n// utilities on `state`.\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteReference')\n const subexit = context.enter('reference')\n value += tracker.move(\n safe(context, association(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction footnoteDefinition(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteDefinition')\n const subexit = context.enter('label')\n value += tracker.move(\n safe(context, association(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n value += tracker.move(\n ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n )\n tracker.shift(4)\n value += tracker.move(\n indentLines(containerFlow(node, context, tracker.current()), map)\n )\n exit()\n\n return value\n}\n\n/** @type {Map} */\nfunction map(line, index, blank) {\n if (index === 0) {\n return line\n }\n\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('../types.js').Handle} Handle\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').PhrasingContent} PhrasingContent\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @param {Parent & {children: Array<PhrasingContent>}} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {Info} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined together.\n */\nexport function containerPhrasing(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n /** @type {Array<string>} */\n const results = []\n let index = -1\n let before = info.before\n\n indexStack.push(-1)\n let tracker = state.createTracker(info)\n\n while (++index < children.length) {\n const child = children[index]\n /** @type {string} */\n let after\n\n indexStack[indexStack.length - 1] = index\n\n if (index + 1 < children.length) {\n /** @type {Handle} */\n // @ts-expect-error: hush, it’s actually a `zwitch`.\n let handle = state.handle.handlers[children[index + 1].type]\n /** @type {Handle} */\n // @ts-expect-error: hush, it’s actually a `zwitch`.\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, state, {\n before: '',\n after: '',\n ...tracker.current()\n }).charAt(0)\n : ''\n } else {\n after = info.after\n }\n\n // In some cases, html (text) can be found in phrasing right after an eol.\n // When we’d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can’t escape or so to prevent it from happening, we take a somewhat\n // reasonable approach: replace that eol with a space.\n // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n if (\n results.length > 0 &&\n (before === '\\r' || before === '\\n') &&\n child.type === 'html'\n ) {\n results[results.length - 1] = results[results.length - 1].replace(\n /(\\r?\\n|\\r)$/,\n ' '\n )\n before = ' '\n\n // To do: does this work to reset tracker?\n tracker = state.createTracker(info)\n tracker.move(results.join(''))\n }\n\n results.push(\n tracker.move(\n state.handle(child, parent, state, {\n ...tracker.current(),\n before,\n after\n })\n )\n )\n\n before = results[results.length - 1].slice(-1)\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n// To do: next major: expose functions.\n// To do: next major: use `state`, state utilities.\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmStrikethroughFromMarkdown = {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmStrikethroughToMarkdown = {\n unsafe: [\n {\n character: '~',\n inConstruct: 'phrasing',\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: {delete: handleDelete}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n const exit = context.enter('strikethrough')\n let value = tracker.move('~~')\n value += containerPhrasing(node, context, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\nimport {patternCompile} from '../util/pattern-compile.js'\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parent | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n","/**\n * @typedef Options\n * Configuration (optional).\n * @property {string|null|ReadonlyArray<string|null|undefined>} [align]\n * One style for all columns, or styles for their respective columns.\n * Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n * Other values are treated as `''`, which doesn’t place the colon in the\n * alignment row but does align left.\n * *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n * Whether to add a space of padding between delimiters and cells.\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {boolean} [delimiterStart=true]\n * Whether to begin each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean} [delimiterEnd=true]\n * Whether to end each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean} [alignDelimiters=true]\n * Whether to align the delimiters.\n * By default, they are aligned:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {(value: string) => number} [stringLength]\n * Function to detect the length of table cell content.\n * This is used when aligning the delimiters (`|`) between table cells.\n * Full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source.\n * To fix this, you can pass this function, which receives the cell content\n * and returns its “visible” size.\n * Note that what is and isn’t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩❤️👩', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | 中文 | Charlie |\n * | 👩❤️👩 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩❤️👩', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | 中文 | Charlie |\n * | 👩❤️👩 | Delta |\n * ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n * Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {ReadonlyArray<ReadonlyArray<string|null|undefined>>} table\n * Table data (matrix of strings).\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {string}\n */\nexport function markdownTable(table, options = {}) {\n const align = (options.align || []).concat()\n const stringLength = options.stringLength || defaultStringLength\n /** @type {Array<number>} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array<Array<string>>} Cells per row. */\n const cellMatrix = []\n /** @type {Array<Array<number>>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array<number>} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array<string>} */\n const row = []\n /** @type {Array<number>} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array<string>} */\n const row = []\n /** @type {Array<number>} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n options.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array<string>} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array<string>} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (options.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (options.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n options.padding !== false &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === '') &&\n (options.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (options.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (options.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (options.padding !== false) {\n line.push(' ')\n }\n\n if (\n options.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n options.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n","/**\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').InlineCode} InlineCode\n *\n * @typedef {import('markdown-table').MarkdownTableOptions} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Context} ToMarkdownContext\n * @typedef {import('mdast-util-to-markdown').SafeOptions} SafeOptions\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n * Whether to add a space of padding between delimiters and cells.\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n * Whether to align the delimiters.\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n * Function to detect the length of table cell content, used when aligning\n * the delimiters between cells\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {inlineCode} from 'mdast-util-to-markdown/lib/handle/inline-code.js'\nimport {markdownTable} from 'markdown-table'\n\n// To do: next major: use `state` and `state` utilities from `mdast-util-to-markdown`.\n// To do: next major: use `defaultHandlers.inlineCode`.\n// To do: next major: expose functions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmTableFromMarkdown = {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n /** @type {Array<'left' | 'right' | 'center' | 'none'>} */\n // @ts-expect-error: `align` is custom.\n const align = token._align\n this.enter(\n {\n type: 'table',\n align: align.map((d) => (d === 'none' ? null : d)),\n children: []\n },\n token\n )\n this.setData('inTable', true)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n this.exit(token)\n this.setData('inTable')\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.getData('inTable')) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = /** @type {InlineCode} */ (this.stack[this.stack.length - 1])\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n table: handleTable,\n tableRow: handleTableRow,\n tableCell: handleTableCell,\n inlineCode: inlineCodeWithTable\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, context, safeOptions) {\n return serializeData(\n handleTableAsData(node, context, safeOptions),\n node.align\n )\n }\n\n /**\n * This function isn’t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, context, safeOptions) {\n const row = handleTableRowAsData(node, context, safeOptions)\n const value = serializeData([row])\n // `markdown-table` will always add an align row\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, context, safeOptions) {\n const exit = context.enter('tableCell')\n const subexit = context.enter('phrasing')\n const value = containerPhrasing(node, context, {\n ...safeOptions,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array<Array<string>>} matrix\n * @param {Array<string | null | undefined> | null | undefined} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array<Array<string>>} */\n const result = []\n const subexit = context.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(\n children[index],\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableRowAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array<string>} */\n const result = []\n const subexit = context.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(\n children[index],\n node,\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, context) {\n let value = inlineCode(node, parent, context)\n\n if (context.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Info} Info\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parent | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state)\n let bullet = state.bulletCurrent || checkBullet(state)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (state.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = state.createTracker(info)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = state.enter('listItem')\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n */\nexport function checkListItemIndent(state) {\n const style = state.options.listItemIndent || 'tab'\n\n // To do: remove in a major.\n // @ts-expect-error: deprecated.\n if (style === 1 || style === '1') {\n return 'one'\n }\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBullet(state) {\n const marker = state.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\n/**\n * @typedef {Extract<Root | Content, Parent>} Parents\n */\n\nimport {listItem} from 'mdast-util-to-markdown/lib/handle/list-item.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n// To do: next major: rename `context` -> `state`, `safeOptions` -> `info`, use\n// `track` from `state`.\n// To do: next major: replace exports with functions.\n// To do: next major: use `defaulthandlers.listItem`.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmTaskListItemFromMarkdown = {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmTaskListItemToMarkdown = {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n const node = /** @type {ListItem} */ (this.stack[this.stack.length - 2])\n // We’re always in a paragraph, in a list item.\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = /** @type {Parents} */ (this.stack[this.stack.length - 2])\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean'\n ) {\n const node = /** @type {Paragraph} */ (this.stack[this.stack.length - 1])\n const head = node.children[0]\n\n if (head && head.type === 'text') {\n const siblings = parent.children\n let index = -1\n /** @type {Paragraph | undefined} */\n let firstParaghraph\n\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, context, safeOptions) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = track(safeOptions)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = listItem(node, parent, context, {\n ...safeOptions,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options\n */\n\nimport {gfm} from 'micromark-extension-gfm'\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\n\n/**\n * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function remarkGfm(options = {}) {\n const data = this.data()\n\n add('micromarkExtensions', gfm(options))\n add('fromMarkdownExtensions', gfmFromMarkdown())\n add('toMarkdownExtensions', gfmToMarkdown(options))\n\n /**\n * @param {string} field\n * @param {unknown} value\n */\n function add(field, value) {\n const list = /** @type {unknown[]} */ (\n // Other extensions\n /* c8 ignore next 2 */\n data[field] ? data[field] : (data[field] = [])\n )\n\n list.push(value)\n }\n}\n","/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * syntax.\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral,\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable,\n gfmTaskListItem\n ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n * Configuration.\n *\n * Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml,\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml,\n gfmTableHtml,\n gfmTagfilterHtml,\n gfmTaskListItemHtml\n ])\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n * Configuration.\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n * Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown,\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown,\n gfmTableFromMarkdown,\n gfmTaskListItemFromMarkdown\n ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown,\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown,\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown\n ]\n }\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n */\n\nconst search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @template {string} Selector\n * Type of selector.\n * @template {string} [DefaultTagName='div']\n * Type of default tag name.\n * @param {Selector | null | undefined} [selector]\n * Simple CSS selector.\n *\n * Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).\n * Multiple classes are allowed.\n * Uses the last ID if multiple IDs are found.\n * @param {DefaultTagName | null | undefined} [defaultTagName='div']\n * Tag name to use if `selector` does not specify one (default: `'div'`).\n * @returns {Element & {tagName: import('./extract.js').ExtractTagName<Selector, DefaultTagName>}}\n * Built element.\n */\nexport function parseSelector(selector, defaultTagName) {\n const value = selector || ''\n /** @type {Properties} */\n const props = {}\n let start = 0\n /** @type {string | undefined} */\n let previous\n /** @type {string | undefined} */\n let tagName\n\n while (start < value.length) {\n search.lastIndex = start\n const match = search.exec(value)\n const subvalue = value.slice(start, match ? match.index : value.length)\n\n if (subvalue) {\n if (!previous) {\n tagName = subvalue\n } else if (previous === '#') {\n props.id = subvalue\n } else if (Array.isArray(props.className)) {\n props.className.push(subvalue)\n } else {\n props.className = [subvalue]\n }\n\n start += subvalue.length\n }\n\n if (match) {\n previous = match[0]\n start++\n }\n }\n\n return {\n type: 'element',\n // @ts-expect-error: fine.\n tagName: tagName || defaultTagName || 'div',\n properties: props,\n children: []\n }\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n */\n\n/**\n * @typedef {Content | Root} Node\n * Any concrete `hast` node.\n * @typedef {Root | Element} HResult\n * Result from a `h` (or `s`) call.\n *\n * @typedef {string | number} HStyleValue\n * Value for a CSS style field.\n * @typedef {Record<string, HStyleValue>} HStyle\n * Supported value of a `style` prop.\n * @typedef {string | number | boolean | null | undefined} HPrimitiveValue\n * Primitive property value.\n * @typedef {Array<string | number>} HArrayValue\n * List of property values for space- or comma separated values (such as `className`).\n * @typedef {HPrimitiveValue | HArrayValue} HPropertyValue\n * Primitive value or list value.\n * @typedef {{[property: string]: HPropertyValue | HStyle}} HProperties\n * Acceptable value for element properties.\n *\n * @typedef {string | number | null | undefined} HPrimitiveChild\n * Primitive children, either ignored (nullish), or turned into text nodes.\n * @typedef {Array<Node | HPrimitiveChild>} HArrayChild\n * List of children.\n * @typedef {Node | HPrimitiveChild | HArrayChild} HChild\n * Acceptable child value.\n */\n\nimport {find, normalize} from 'property-information'\nimport {parseSelector} from 'hast-util-parse-selector'\nimport {parse as spaces} from 'space-separated-tokens'\nimport {parse as commas} from 'comma-separated-tokens'\n\nconst buttonTypes = new Set(['menu', 'submit', 'reset', 'button'])\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Schema} schema\n * @param {string} defaultTagName\n * @param {Array<string>} [caseSensitive]\n */\nexport function core(schema, defaultTagName, caseSensitive) {\n const adjust = caseSensitive && createAdjustMap(caseSensitive)\n\n const h =\n /**\n * @type {{\n * (): Root\n * (selector: null | undefined, ...children: Array<HChild>): Root\n * (selector: string, properties?: HProperties, ...children: Array<HChild>): Element\n * (selector: string, ...children: Array<HChild>): Element\n * }}\n */\n (\n /**\n * Hyperscript compatible DSL for creating virtual hast trees.\n *\n * @param {string | null} [selector]\n * @param {HProperties | HChild} [properties]\n * @param {Array<HChild>} children\n * @returns {HResult}\n */\n function (selector, properties, ...children) {\n let index = -1\n /** @type {HResult} */\n let node\n\n if (selector === undefined || selector === null) {\n node = {type: 'root', children: []}\n // @ts-expect-error Properties are not supported for roots.\n children.unshift(properties)\n } else {\n node = parseSelector(selector, defaultTagName)\n // Normalize the name.\n node.tagName = node.tagName.toLowerCase()\n if (adjust && own.call(adjust, node.tagName)) {\n node.tagName = adjust[node.tagName]\n }\n\n // Handle props.\n if (isProperties(properties, node.tagName)) {\n /** @type {string} */\n let key\n\n for (key in properties) {\n if (own.call(properties, key)) {\n // @ts-expect-error `node.properties` is set.\n addProperty(schema, node.properties, key, properties[key])\n }\n }\n } else {\n children.unshift(properties)\n }\n }\n\n // Handle children.\n while (++index < children.length) {\n addChild(node.children, children[index])\n }\n\n if (node.type === 'element' && node.tagName === 'template') {\n node.content = {type: 'root', children: node.children}\n node.children = []\n }\n\n return node\n }\n )\n\n return h\n}\n\n/**\n * @param {HProperties | HChild} value\n * @param {string} name\n * @returns {value is HProperties}\n */\nfunction isProperties(value, name) {\n if (\n value === null ||\n value === undefined ||\n typeof value !== 'object' ||\n Array.isArray(value)\n ) {\n return false\n }\n\n if (name === 'input' || !value.type || typeof value.type !== 'string') {\n return true\n }\n\n if ('children' in value && Array.isArray(value.children)) {\n return false\n }\n\n if (name === 'button') {\n return buttonTypes.has(value.type.toLowerCase())\n }\n\n return !('value' in value)\n}\n\n/**\n * @param {Schema} schema\n * @param {Properties} properties\n * @param {string} key\n * @param {HStyle | HPropertyValue} value\n * @returns {void}\n */\nfunction addProperty(schema, properties, key, value) {\n const info = find(schema, key)\n let index = -1\n /** @type {HPropertyValue} */\n let result\n\n // Ignore nullish and NaN values.\n if (value === undefined || value === null) return\n\n if (typeof value === 'number') {\n // Ignore NaN.\n if (Number.isNaN(value)) return\n\n result = value\n }\n // Booleans.\n else if (typeof value === 'boolean') {\n result = value\n }\n // Handle list values.\n else if (typeof value === 'string') {\n if (info.spaceSeparated) {\n result = spaces(value)\n } else if (info.commaSeparated) {\n result = commas(value)\n } else if (info.commaOrSpaceSeparated) {\n result = spaces(commas(value).join(' '))\n } else {\n result = parsePrimitive(info, info.property, value)\n }\n } else if (Array.isArray(value)) {\n result = value.concat()\n } else {\n result = info.property === 'style' ? style(value) : String(value)\n }\n\n if (Array.isArray(result)) {\n /** @type {Array<string | number>} */\n const finalResult = []\n\n while (++index < result.length) {\n // @ts-expect-error Assume no booleans in array.\n finalResult[index] = parsePrimitive(info, info.property, result[index])\n }\n\n result = finalResult\n }\n\n // Class names (which can be added both on the `selector` and here).\n if (info.property === 'className' && Array.isArray(properties.className)) {\n // @ts-expect-error Assume no booleans in `className`.\n result = properties.className.concat(result)\n }\n\n properties[info.property] = result\n}\n\n/**\n * @param {Array<Content>} nodes\n * @param {HChild} value\n * @returns {void}\n */\nfunction addChild(nodes, value) {\n let index = -1\n\n if (value === undefined || value === null) {\n // Empty.\n } else if (typeof value === 'string' || typeof value === 'number') {\n nodes.push({type: 'text', value: String(value)})\n } else if (Array.isArray(value)) {\n while (++index < value.length) {\n addChild(nodes, value[index])\n }\n } else if (typeof value === 'object' && 'type' in value) {\n if (value.type === 'root') {\n addChild(nodes, value.children)\n } else {\n nodes.push(value)\n }\n } else {\n throw new Error('Expected node, nodes, or string, got `' + value + '`')\n }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n * @param {string} name\n * @param {HPrimitiveValue} value\n * @returns {HPrimitiveValue}\n */\nfunction parsePrimitive(info, name, value) {\n if (typeof value === 'string') {\n if (info.number && value && !Number.isNaN(Number(value))) {\n return Number(value)\n }\n\n if (\n (info.boolean || info.overloadedBoolean) &&\n (value === '' || normalize(value) === normalize(name))\n ) {\n return true\n }\n }\n\n return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {HStyle} value\n * Style object.\n * @returns {string}\n * CSS string.\n */\nfunction style(value) {\n /** @type {Array<string>} */\n const result = []\n /** @type {string} */\n let key\n\n for (key in value) {\n if (own.call(value, key)) {\n result.push([key, value[key]].join(': '))\n }\n }\n\n return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {Array<string>} values\n * List of properly cased keys.\n * @returns {Record<string, string>}\n * Map of lowercase keys to uppercase keys.\n */\nfunction createAdjustMap(values) {\n /** @type {Record<string, string>} */\n const result = {}\n let index = -1\n\n while (++index < values.length) {\n result[values[index].toLowerCase()] = values[index]\n }\n\n return result\n}\n","export const svgCaseSensitiveTagNames = [\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'solidColor',\n 'textArea',\n 'textPath'\n]\n","/**\n * @typedef {import('./core.js').HChild} Child\n * Acceptable child value.\n * @typedef {import('./core.js').HProperties} Properties\n * Acceptable value for element properties.\n * @typedef {import('./core.js').HResult} Result\n * Result from a `h` (or `s`) call.\n *\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n */\n\nimport {svg} from 'property-information'\nimport {core} from './core.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\nexport const s = core(svg, 'g', svgCaseSensitiveTagNames)\n","/**\n * @typedef {import('./core.js').HChild} Child\n * Acceptable child value.\n * @typedef {import('./core.js').HProperties} Properties\n * Acceptable value for element properties.\n * @typedef {import('./core.js').HResult} Result\n * Result from a `h` (or `s`) call.\n *\n * @typedef {import('./jsx-classic.js').Element} h.JSX.Element\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n */\n\nimport {html} from 'property-information'\nimport {core} from './core.js'\n\nexport const h = core(html, 'div')\n","/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg',\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace',\n xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n * @typedef {import('parse5').DefaultTreeAdapterMap} DefaultTreeAdapterMap\n * @typedef {import('parse5').Token.ElementLocation} P5ElementLocation\n * @typedef {import('parse5').Token.Location} P5Location\n */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {DefaultTreeAdapterMap['document']} P5Document\n * @typedef {DefaultTreeAdapterMap['documentFragment']} P5DocumentFragment\n * @typedef {DefaultTreeAdapterMap['documentType']} P5DocumentType\n * @typedef {DefaultTreeAdapterMap['commentNode']} P5Comment\n * @typedef {DefaultTreeAdapterMap['textNode']} P5Text\n * @typedef {DefaultTreeAdapterMap['element']} P5Element\n * @typedef {DefaultTreeAdapterMap['node']} P5Node\n * @typedef {DefaultTreeAdapterMap['template']} P5Template\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef Options\n * Configuration.\n * @property {Space | null | undefined} [space='html']\n * Which space the document is in.\n *\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it.\n * @property {VFile | null | undefined} [file]\n * File used to add positional info to nodes.\n *\n * If given, the file should represent the original HTML source.\n * @property {boolean} [verbose=false]\n * Whether to add extra positional info about starting tags, closing tags,\n * and attributes to elements.\n *\n * > 👉 **Note**: only used when `file` is given.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {Schema} schema\n * Current schema.\n * @property {VFile | undefined} file\n * Corresponding file.\n * @property {boolean | undefined} verbose\n * Add extra positional info.\n * @property {boolean} location\n * Whether location info was found.\n */\n\nimport {h, s} from 'hastscript'\nimport {html, svg, find} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n/** @type {unknown} */\n// type-coverage:ignore-next-line\nconst proto = Object.prototype\n\n/**\n * Transform a `parse5` AST to hast.\n *\n * @param {P5Node} tree\n * `parse5` tree to transform.\n * @param {Options | VFile | null | undefined} [options]\n * Configuration.\n * @returns {Node}\n * hast tree.\n */\nexport function fromParse5(tree, options) {\n const options_ = options || {}\n /** @type {Options} */\n let settings\n /** @type {VFile | undefined} */\n let file\n\n if (isFile(options_)) {\n file = options_\n settings = {}\n } else {\n file = options_.file || undefined\n settings = options_\n }\n\n return one(\n {\n schema: settings.space === 'svg' ? svg : html,\n file,\n verbose: settings.verbose,\n location: false\n },\n tree\n )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {P5Node} node\n * p5 node.\n * @returns {Node}\n * hast node.\n */\nfunction one(state, node) {\n /** @type {Node} */\n let result\n\n switch (node.nodeName) {\n case '#comment': {\n const reference = /** @type {P5Comment} */ (node)\n result = {type: 'comment', value: reference.data}\n patch(state, reference, result)\n return result\n }\n\n case '#document':\n case '#document-fragment': {\n const reference = /** @type {P5Document | P5DocumentFragment} */ (node)\n const quirksMode =\n 'mode' in reference\n ? reference.mode === 'quirks' || reference.mode === 'limited-quirks'\n : false\n\n result = {\n type: 'root',\n children: all(state, node.childNodes),\n data: {quirksMode}\n }\n\n if (state.file && state.location) {\n const doc = String(state.file)\n const loc = location(doc)\n const start = loc.toPoint(0)\n const end = loc.toPoint(doc.length)\n // @ts-expect-error: always defined as we give valid input.\n result.position = {start, end}\n }\n\n return result\n }\n\n case '#documentType': {\n const reference = /** @type {P5DocumentType} */ (node)\n // @ts-expect-error Types are out of date.\n result = {type: 'doctype'}\n patch(state, reference, result)\n return result\n }\n\n case '#text': {\n const reference = /** @type {P5Text} */ (node)\n result = {type: 'text', value: reference.value}\n patch(state, reference, result)\n return result\n }\n\n // Element.\n default: {\n const reference = /** @type {P5Element} */ (node)\n result = element(state, reference)\n return result\n }\n }\n}\n\n/**\n * Transform children.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Array<P5Node>} nodes\n * Nodes.\n * @returns {Array<Content>}\n * hast nodes.\n */\nfunction all(state, nodes) {\n let index = -1\n /** @type {Array<Content>} */\n const result = []\n\n while (++index < nodes.length) {\n // @ts-expect-error Assume no roots in `nodes`.\n result[index] = one(state, nodes[index])\n }\n\n return result\n}\n\n/**\n * Transform an element.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {P5Element} node\n * `parse5` node to transform.\n * @returns {Element}\n * hast node.\n */\nfunction element(state, node) {\n const schema = state.schema\n\n state.schema = node.namespaceURI === webNamespaces.svg ? svg : html\n\n // Props.\n let index = -1\n /** @type {Record<string, string>} */\n const props = {}\n\n while (++index < node.attrs.length) {\n const attribute = node.attrs[index]\n const name =\n (attribute.prefix ? attribute.prefix + ':' : '') + attribute.name\n if (!own.call(proto, name)) {\n props[name] = attribute.value\n }\n }\n\n // Build.\n const fn = state.schema.space === 'svg' ? s : h\n const result = fn(node.tagName, props, all(state, node.childNodes))\n patch(state, node, result)\n\n // Switch content.\n if (result.tagName === 'template') {\n const reference = /** @type {P5Template} */ (node)\n const pos = reference.sourceCodeLocation\n const startTag = pos && pos.startTag && position(pos.startTag)\n const endTag = pos && pos.endTag && position(pos.endTag)\n\n /** @type {Root} */\n // @ts-expect-error Types are wrong.\n const content = one(state, reference.content)\n\n if (startTag && endTag && state.file) {\n content.position = {start: startTag.end, end: endTag.start}\n }\n\n result.content = content\n }\n\n state.schema = schema\n\n return result\n}\n\n/**\n * Patch positional info from `from` onto `to`.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {P5Node} from\n * p5 node.\n * @param {Node} to\n * hast node.\n * @returns {void}\n * Nothing.\n */\nfunction patch(state, from, to) {\n if ('sourceCodeLocation' in from && from.sourceCodeLocation && state.file) {\n const position = createLocation(state, to, from.sourceCodeLocation)\n\n if (position) {\n state.location = true\n to.position = position\n }\n }\n}\n\n/**\n * Create clean positional information.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {Node} node\n * hast node.\n * @param {P5ElementLocation} location\n * p5 location info.\n * @returns {Position | undefined}\n * Position, or nothing.\n */\nfunction createLocation(state, node, location) {\n const result = position(location)\n\n if (node.type === 'element') {\n const tail = node.children[node.children.length - 1]\n\n // Bug for unclosed with children.\n // See: <https://github.com/inikulin/parse5/issues/109>.\n if (\n result &&\n !location.endTag &&\n tail &&\n tail.position &&\n tail.position.end\n ) {\n result.end = Object.assign({}, tail.position.end)\n }\n\n if (state.verbose) {\n /** @type {Record<string, Position | undefined>} */\n const props = {}\n /** @type {string} */\n let key\n\n if (location.attrs) {\n for (key in location.attrs) {\n if (own.call(location.attrs, key)) {\n props[find(state.schema, key).property] = position(\n location.attrs[key]\n )\n }\n }\n }\n\n node.data = {\n position: {\n // @ts-expect-error: assume not `undefined`.\n opening: position(location.startTag),\n closing: location.endTag ? position(location.endTag) : null,\n properties: props\n }\n }\n }\n }\n\n return result\n}\n\n/**\n * Turn a p5 location into a position.\n *\n * @param {P5Location} loc\n * Location.\n * @returns {Position | undefined}\n * Position or nothing.\n */\nfunction position(loc) {\n const start = point({\n line: loc.startLine,\n column: loc.startCol,\n offset: loc.startOffset\n })\n const end = point({\n line: loc.endLine,\n column: loc.endCol,\n offset: loc.endOffset\n })\n // @ts-expect-error `undefined` is fine.\n return start || end ? {start, end} : undefined\n}\n\n/**\n * Filter out invalid points.\n *\n * @param {Point} point\n * Point with potentially `undefined` values.\n * @returns {Point | undefined}\n * Point or nothing.\n */\nfunction point(point) {\n return point.line && point.column ? point : undefined\n}\n\n/**\n * Check if something is a file.\n *\n * @param {VFile | Options} value\n * File or options.\n * @returns {value is VFile}\n * Whether `value` is a file.\n */\nfunction isFile(value) {\n return 'messages' in value\n}\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('vfile').Value} Value\n */\n\n/**\n * @typedef Point\n * unist point, where `line` and `column` can be `undefined`.\n * @property {number | undefined} line\n * Line.\n * @property {number | undefined} column\n * Column.\n * @property {number | undefined} [offset]\n * Offset.\n *\n * @typedef PointLike\n * unist point, allowed as input.\n * @property {number | null | undefined} [line]\n * Line.\n * @property {number | null | undefined} [column]\n * Column.\n * @property {number | null | undefined} [offset]\n * Offset.\n *\n * @callback ToPoint\n * Get a line/column-based `point` from `offset`.\n * @param {number | null | undefined} [offset]\n * Something that should be an `offset.\n * @returns {Point}\n * Point, line/column are undefined for invalid or out of bounds input.\n *\n * @callback ToOffset\n * Get an offset from a line/column-based `point`.\n * @param {Point | null | undefined} [point]\n * Something that should be a `point.\n * @returns {number}\n * Offset or `-1` for invalid or out of bounds input.\n *\n * @typedef Location\n * Accessors for index.\n * @property {ToPoint} toPoint\n * Get a line/column-based `point` from `offset`.\n * @property {ToOffset} toOffset\n * Get an offset from a line/column-based `point`.\n */\n\n/**\n * Index the given document so you can translate between line/column and offset\n * based positional info.\n *\n * @param {VFile | Value} file\n * File to index.\n * @returns {Location}\n * Accessors for index.\n */\nexport function location(file) {\n const value = String(file)\n /** @type {Array<number>} */\n const indices = []\n const search = /\\r?\\n|\\r/g\n\n while (search.test(value)) {\n indices.push(search.lastIndex)\n }\n\n indices.push(value.length + 1)\n\n return {toPoint, toOffset}\n\n /** @type {ToPoint} */\n function toPoint(offset) {\n let index = -1\n\n if (\n typeof offset === 'number' &&\n offset > -1 &&\n offset < indices[indices.length - 1]\n ) {\n while (++index < indices.length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (index > 0 ? indices[index - 1] : 0) + 1,\n offset\n }\n }\n }\n }\n\n return {line: undefined, column: undefined, offset: undefined}\n }\n\n /** @type {ToOffset} */\n function toOffset(point) {\n const line = point && point.line\n const column = point && point.column\n\n if (\n typeof line === 'number' &&\n typeof column === 'number' &&\n !Number.isNaN(line) &&\n !Number.isNaN(column) &&\n line - 1 in indices\n ) {\n const offset = (indices[line - 2] || 0) + column - 1 || 0\n\n if (offset > -1 && offset < indices[indices.length - 1]) {\n return offset\n }\n }\n\n return -1\n }\n}\n","/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it’s value is this function’s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n * Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn’t have a `key` property, the special\n * “invalid” handler will be called.\n * If `value` has an unknown `key`, the special “unknown” handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it’s result is returned.\n *\n * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n","/**\n * @typedef {import('parse5').DefaultTreeAdapterMap} DefaultTreeAdapterMap\n * @typedef {DefaultTreeAdapterMap['document']} P5Document\n * @typedef {DefaultTreeAdapterMap['documentFragment']} P5Fragment\n * @typedef {DefaultTreeAdapterMap['element']} P5Element\n * @typedef {DefaultTreeAdapterMap['node']} P5Node\n * @typedef {DefaultTreeAdapterMap['documentType']} P5Doctype\n * @typedef {DefaultTreeAdapterMap['commentNode']} P5Comment\n * @typedef {DefaultTreeAdapterMap['textNode']} P5Text\n * @typedef {DefaultTreeAdapterMap['parentNode']} P5Parent\n * @typedef {import('parse5').Token.Attribute} P5Attribute\n * @typedef {Exclude<P5Node, P5Document | P5Fragment>} P5Child\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Content} Content\n */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {'html' | 'svg'} Space\n *\n * @typedef Options\n * Configuration.\n * @property {Space | null | undefined} [space='html']\n * Which space the document is in.\n *\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it.\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {html, svg, find} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nconst own = {}.hasOwnProperty\n\n/** @type {(from: Node, schema: Schema) => P5Node} */\nconst one = zwitch('type', {handlers: {root, element, text, comment, doctype}})\n\n/**\n * Transform a hast tree to Parse5’s AST.\n *\n * @param {Node} tree\n * Tree to transform.\n * @param {Options | Space | null | undefined} [options]\n * Configuration.\n * @returns {P5Node}\n * `parse5` node.\n */\nexport function toParse5(tree, options) {\n const space = options && typeof options === 'object' ? options.space : options\n return one(tree, space === 'svg' ? svg : html)\n}\n\n/**\n * @param {Root} node\n * @param {Schema} schema\n * Current schema.\n * @returns {P5Document}\n */\nfunction root(node, schema) {\n /** @type {P5Document} */\n const result = {\n nodeName: '#document',\n // @ts-expect-error: `parse5` uses enums, which are actually strings.\n mode: (node.data || {}).quirksMode ? 'quirks' : 'no-quirks',\n childNodes: []\n }\n result.childNodes = all(node.children, result, schema)\n patch(node, result)\n return result\n}\n\n/**\n * @param {Root} node\n * @param {Schema} schema\n * Current schema.\n * @returns {P5Fragment}\n */\nfunction fragment(node, schema) {\n /** @type {P5Fragment} */\n const result = {nodeName: '#document-fragment', childNodes: []}\n result.childNodes = all(node.children, result, schema)\n patch(node, result)\n return result\n}\n\n/**\n * @param {Doctype} node\n * @returns {P5Doctype}\n */\nfunction doctype(node) {\n /** @type {P5Doctype} */\n const result = {\n nodeName: '#documentType',\n name: 'html',\n publicId: '',\n systemId: '',\n // @ts-expect-error: change to `null` in a major?\n parentNode: undefined\n }\n\n patch(node, result)\n return result\n}\n\n/**\n * @param {Text} node\n * @returns {P5Text}\n */\nfunction text(node) {\n /** @type {P5Text} */\n const result = {\n nodeName: '#text',\n value: node.value,\n // @ts-expect-error: no `parentNode`\n parentNode: undefined\n }\n patch(node, result)\n return result\n}\n\n/**\n * @param {Comment} node\n * @returns {P5Comment}\n */\nfunction comment(node) {\n /** @type {P5Comment} */\n const result = {\n nodeName: '#comment',\n data: node.value,\n // @ts-expect-error: no `parentNode`\n parentNode: undefined\n }\n\n patch(node, result)\n\n return result\n}\n\n/**\n * @param {Element} node\n * @param {Schema} schema\n * Current schema.\n * @returns {P5Element}\n * `parse5` node.\n */\nfunction element(node, schema) {\n const parentSchema = schema\n let currentSchema = parentSchema\n\n if (\n node.type === 'element' &&\n node.tagName.toLowerCase() === 'svg' &&\n parentSchema.space === 'html'\n ) {\n currentSchema = svg\n }\n\n /** @type {Array<P5Attribute>} */\n const attrs = []\n /** @type {string} */\n let prop\n\n if (node.properties) {\n for (prop in node.properties) {\n if (prop !== 'children' && own.call(node.properties, prop)) {\n const result = createProperty(\n currentSchema,\n prop,\n node.properties[prop]\n )\n\n if (result) {\n attrs.push(result)\n }\n }\n }\n }\n\n /** @type {P5Element} */\n const result = {\n nodeName: node.tagName,\n tagName: node.tagName,\n attrs,\n // @ts-expect-error: html and svg both have a space.\n namespaceURI: webNamespaces[currentSchema.space],\n childNodes: [],\n // @ts-expect-error: no `parentNode`\n parentNode: undefined\n }\n result.childNodes = all(node.children, result, currentSchema)\n patch(node, result)\n\n if (node.tagName === 'template' && node.content) {\n // @ts-expect-error: `parse5` types are wrong.\n result.content = fragment(node.content, currentSchema)\n }\n\n return result\n}\n\n/**\n * Handle a property.\n *\n * @param {Schema} schema\n * Current schema.\n * @param {string} prop\n * Key.\n * @param {Array<string | number> | string | number | boolean | null | undefined} value\n * hast property value.\n * @returns {P5Attribute | void}\n * Field for runtime, optional.\n */\nfunction createProperty(schema, prop, value) {\n const info = find(schema, prop)\n\n // Ignore nullish and `NaN` values.\n if (\n value === undefined ||\n value === null ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value)) ||\n (!value && info.boolean)\n ) {\n return\n }\n\n if (Array.isArray(value)) {\n // Accept `array`.\n // Most props are space-separated.\n value = info.commaSeparated ? commas(value) : spaces(value)\n }\n\n /** @type {P5Attribute} */\n const attribute = {\n name: info.attribute,\n value: value === true ? '' : String(value)\n }\n\n if (info.space && info.space !== 'html' && info.space !== 'svg') {\n const index = attribute.name.indexOf(':')\n\n if (index < 0) {\n attribute.prefix = ''\n } else {\n attribute.name = attribute.name.slice(index + 1)\n attribute.prefix = info.attribute.slice(0, index)\n }\n\n attribute.namespace = webNamespaces[info.space]\n }\n\n return attribute\n}\n\n/**\n * Transform all hast nodes.\n *\n * @param {Array<Content>} children\n * List of children.\n * @param {P5Parent} parentNode\n * `parse5` parent node.\n * @param {Schema} schema\n * Current schema.\n * @returns {Array<P5Child>}\n * Transformed children.\n */\nfunction all(children, parentNode, schema) {\n let index = -1\n /** @type {Array<P5Child>} */\n const results = []\n\n if (children) {\n while (++index < children.length) {\n /** @type {P5Child} */\n // @ts-expect-error assume no document.\n const child = one(children[index], schema)\n\n child.parentNode = parentNode\n\n results.push(child)\n }\n }\n\n return results\n}\n\n/**\n * Add position info from `from` to `to`.\n *\n * @param {Node} from\n * hast node.\n * @param {P5Node} to\n * `parse5` node.\n * @returns {void}\n * Nothing.\n */\nfunction patch(from, to) {\n const position = from.position\n\n if (position && position.start && position.end) {\n to.sourceCodeLocation = {\n startLine: position.start.line,\n startCol: position.start.column,\n // @ts-expect-error assume this is set.\n startOffset: position.start.offset,\n endLine: position.end.line,\n endCol: position.end.column,\n // @ts-expect-error assume this is set.\n endOffset: position.end.offset\n }\n }\n}\n","/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'isindex',\n 'keygen',\n 'link',\n 'menuitem',\n 'meta',\n 'nextid',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n","/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('parse5').Document} P5Document\n * @typedef {import('parse5').DocumentFragment} P5Fragment\n * @typedef {Omit<import('parse5').Element, 'parentNode'>} P5Element\n * @typedef {import('parse5').Attribute} P5Attribute\n * @typedef {Omit<import('parse5').Location, 'startOffset' | 'endOffset'> & {startOffset: number|undefined, endOffset: number|undefined}} P5Location\n * @typedef {import('parse5').ParserOptions} P5ParserOptions\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {import('../complex-types').Raw} Raw\n *\n * @typedef {Omit<Comment, 'value'> & {value: {stitch: Node}}} Stitch\n *\n * @typedef Options\n * @property {Array<string>} [passThrough]\n * List of custom hast node types to pass through (keep) in hast.\n * If the passed through nodes have children, those children are expected to\n * be hast and will be handled.\n *\n * @typedef HiddenTokenizer\n * @property {Array<HiddenLocationTracker>} __mixins\n * Way too simple, but works for us.\n * @property {HiddenPreprocessor} preprocessor\n * @property {(value: string) => void} write\n * @property {() => number} _consume\n * @property {Array<HiddenToken>} tokenQueue\n * @property {string} state\n * @property {string} returnState\n * @property {number} charRefCode\n * @property {Array<number>} tempBuff\n * @property {Function} _flushCodePointsConsumedAsCharacterReference\n * @property {string} lastStartTagName\n * @property {number} consumedAfterSnapshot\n * @property {boolean} active\n * @property {HiddenToken|undefined} currentCharacterToken\n * @property {HiddenToken|undefined} currentToken\n * @property {unknown} currentAttr\n * @property {Function} NAMED_CHARACTER_REFERENCE_STATE\n * @property {Function} NUMERIC_CHARACTER_REFERENCE_END_STATE\n *\n * @typedef {Record<string, unknown> & {location: P5Location}} HiddenToken\n *\n * @typedef HiddenPreprocessor\n * @property {string|undefined} html\n * @property {number} pos\n * @property {number} lastGapPos\n * @property {number} lastCharPos\n * @property {Array<number>} gapStack\n * @property {boolean} skipNextNewLine\n * @property {boolean} lastChunkWritten\n * @property {boolean} endOfChunkHit\n *\n * @typedef HiddenLocationTracker\n * @property {P5Location|undefined} currentAttrLocation\n * @property {P5Location} ctLoc\n * @property {HiddenPosTracker} posTracker\n *\n * @typedef HiddenPosTracker\n * @property {boolean} isEol\n * @property {number} lineStartPos\n * @property {number} droppedBufferSize\n * @property {number} offset\n * @property {number} col\n * @property {number} line\n */\n\n// @ts-expect-error: untyped.\nimport Parser from 'parse5/lib/parser/index.js'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {visit} from 'unist-util-visit'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {toParse5} from 'hast-util-to-parse5'\nimport {htmlVoidElements} from 'html-void-elements'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nconst inTemplateMode = 'IN_TEMPLATE_MODE'\nconst dataState = 'DATA_STATE'\nconst characterToken = 'CHARACTER_TOKEN'\nconst startTagToken = 'START_TAG_TOKEN'\nconst endTagToken = 'END_TAG_TOKEN'\nconst commentToken = 'COMMENT_TOKEN'\nconst doctypeToken = 'DOCTYPE_TOKEN'\n\n/** @type {P5ParserOptions} */\nconst parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\n/**\n * Given a hast tree and an optional vfile (for positional info), return a new\n * parsed-again hast tree.\n *\n * @param tree\n * Original hast tree.\n * @param file\n * Virtual file for positional info, optional.\n * @param options\n * Configuration.\n */\nexport const raw =\n /**\n * @type {(\n * ((tree: Node, file: VFile|undefined, options?: Options) => Node) &\n * ((tree: Node, options?: Options) => Node)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {VFile} [file]\n * @param {Options} [options]\n */\n function (tree, file, options) {\n let index = -1\n const parser = new Parser(parseOptions)\n const one = zwitch('type', {\n handlers: {root, element, text, comment, doctype, raw: handleRaw},\n // @ts-expect-error: hush.\n unknown\n })\n /** @type {boolean|undefined} */\n let stitches\n /** @type {HiddenTokenizer|undefined} */\n let tokenizer\n /** @type {HiddenPreprocessor|undefined} */\n let preprocessor\n /** @type {HiddenPosTracker|undefined} */\n let posTracker\n /** @type {HiddenLocationTracker|undefined} */\n let locationTracker\n\n if (isOptions(file)) {\n options = file\n file = undefined\n }\n\n if (options && options.passThrough) {\n while (++index < options.passThrough.length) {\n // @ts-expect-error: hush.\n one.handlers[options.passThrough[index]] = stitch\n }\n }\n\n const result = fromParse5(\n documentMode(tree) ? document() : fragment(),\n file\n )\n\n if (stitches) {\n visit(result, 'comment', (node, index, parent) => {\n const stitch = /** @type {Stitch} */ (/** @type {unknown} */ (node))\n if (stitch.value.stitch && parent !== null && index !== null) {\n // @ts-expect-error: assume the stitch is allowed.\n parent.children[index] = stitch.value.stitch\n return index\n }\n })\n }\n\n // Unpack if possible and when not given a `root`.\n if (\n tree.type !== 'root' &&\n result.type === 'root' &&\n result.children.length === 1\n ) {\n return result.children[0]\n }\n\n return result\n\n /**\n * @returns {P5Fragment}\n */\n function fragment() {\n /** @type {P5Element} */\n const context = {\n nodeName: 'template',\n tagName: 'template',\n attrs: [],\n namespaceURI: webNamespaces.html,\n childNodes: []\n }\n /** @type {P5Element} */\n const mock = {\n nodeName: 'documentmock',\n tagName: 'documentmock',\n attrs: [],\n namespaceURI: webNamespaces.html,\n childNodes: []\n }\n /** @type {P5Fragment} */\n const doc = {nodeName: '#document-fragment', childNodes: []}\n\n parser._bootstrap(mock, context)\n parser._pushTmplInsertionMode(inTemplateMode)\n parser._initTokenizerForFragmentParsing()\n parser._insertFakeRootElement()\n parser._resetInsertionMode()\n parser._findFormInFragmentContext()\n\n tokenizer = parser.tokenizer\n /* c8 ignore next */\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n resetTokenizer()\n\n parser._adoptNodes(mock.childNodes[0], doc)\n\n return doc\n }\n\n /**\n * @returns {P5Document}\n */\n function document() {\n /** @type {P5Document} */\n const doc = parser.treeAdapter.createDocument()\n\n parser._bootstrap(doc, undefined)\n tokenizer = parser.tokenizer\n /* c8 ignore next */\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n preprocessor = tokenizer.preprocessor\n locationTracker = tokenizer.__mixins[0]\n posTracker = locationTracker.posTracker\n\n one(tree)\n\n resetTokenizer()\n\n return doc\n }\n\n /**\n * @param {Array<Content>} nodes\n * @returns {void}\n */\n function all(nodes) {\n let index = -1\n\n /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n if (nodes) {\n while (++index < nodes.length) {\n one(nodes[index])\n }\n }\n }\n\n /**\n * @param {Root} node\n * @returns {void}\n */\n function root(node) {\n all(node.children)\n }\n\n /**\n * @param {Element} node\n * @returns {void}\n */\n function element(node) {\n resetTokenizer()\n parser._processInputToken(startTag(node))\n\n all(node.children)\n\n if (!htmlVoidElements.includes(node.tagName)) {\n resetTokenizer()\n parser._processInputToken(endTag(node))\n }\n }\n\n /**\n * @param {Text} node\n * @returns {void}\n */\n function text(node) {\n resetTokenizer()\n parser._processInputToken({\n type: characterToken,\n chars: node.value,\n location: createParse5Location(node)\n })\n }\n\n /**\n * @param {Doctype} node\n * @returns {void}\n */\n function doctype(node) {\n resetTokenizer()\n parser._processInputToken({\n type: doctypeToken,\n name: 'html',\n forceQuirks: false,\n publicId: '',\n systemId: '',\n location: createParse5Location(node)\n })\n }\n\n /**\n * @param {Comment|Stitch} node\n * @returns {void}\n */\n function comment(node) {\n resetTokenizer()\n parser._processInputToken({\n type: commentToken,\n data: node.value,\n location: createParse5Location(node)\n })\n }\n\n /**\n * @param {Raw} node\n * @returns {void}\n */\n function handleRaw(node) {\n const start = pointStart(node)\n const line = start.line || 1\n const column = start.column || 1\n const offset = start.offset || 0\n\n /* c8 ignore next 4 */\n if (!preprocessor) throw new Error('Expected `preprocessor`')\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n if (!posTracker) throw new Error('Expected `posTracker`')\n if (!locationTracker) throw new Error('Expected `locationTracker`')\n\n // Reset preprocessor:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/preprocessor.js#L17>.\n preprocessor.html = undefined\n preprocessor.pos = -1\n preprocessor.lastGapPos = -1\n preprocessor.lastCharPos = -1\n preprocessor.gapStack = []\n preprocessor.skipNextNewLine = false\n preprocessor.lastChunkWritten = false\n preprocessor.endOfChunkHit = false\n\n // Reset preprocessor mixin:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/position-tracking/preprocessor-mixin.js>.\n posTracker.isEol = false\n posTracker.lineStartPos = -column + 1 // Looks weird, but ensures we get correct positional info.\n posTracker.droppedBufferSize = offset\n posTracker.offset = 0\n posTracker.col = 1\n posTracker.line = line\n\n // Reset location tracker:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js>.\n locationTracker.currentAttrLocation = undefined\n locationTracker.ctLoc = createParse5Location(node)\n\n // See the code for `parse` and `parseFragment`:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/parser/index.js#L371>.\n tokenizer.write(node.value)\n parser._runParsingLoop(null)\n\n // Character references hang, so if we ended there, we need to flush\n // those too.\n // We reset the preprocessor as if the document ends here.\n // Then one single call to the relevant state does the trick, parse5\n // consumes the whole token.\n if (\n tokenizer.state === 'NAMED_CHARACTER_REFERENCE_STATE' ||\n tokenizer.state === 'NUMERIC_CHARACTER_REFERENCE_END_STATE'\n ) {\n preprocessor.lastChunkWritten = true\n tokenizer[tokenizer.state](tokenizer._consume())\n }\n }\n\n /**\n * @param {Node} node\n */\n function stitch(node) {\n stitches = true\n\n /** @type {Node} */\n let clone\n\n // Recurse, because to somewhat handle `[<x>]</x>` (where `[]` denotes the\n // passed through node).\n if ('children' in node) {\n clone = {\n ...node,\n children: raw(\n {type: 'root', children: node.children},\n file,\n options\n // @ts-expect-error Assume a given parent yields a parent.\n ).children\n }\n } else {\n clone = {...node}\n }\n\n // Hack: `value` is supposed to be a string, but as none of the tools\n // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n // through.\n comment({type: 'comment', value: {stitch: clone}})\n }\n\n function resetTokenizer() {\n /* c8 ignore next 2 */\n if (!tokenizer) throw new Error('Expected `tokenizer`')\n if (!posTracker) throw new Error('Expected `posTracker`')\n\n // Process final characters if they’re still there after hibernating.\n // Similar to:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/extensions/location-info/tokenizer-mixin.js#L95>.\n const token = tokenizer.currentCharacterToken\n\n if (token) {\n token.location.endLine = posTracker.line\n token.location.endCol = posTracker.col + 1\n token.location.endOffset = posTracker.offset + 1\n parser._processInputToken(token)\n }\n\n // Reset tokenizer:\n // See: <https://github.com/inikulin/parse5/blob/9c683e1/packages/parse5/lib/tokenizer/index.js#L218-L234>.\n // Especially putting it back in the `data` state is useful: some elements,\n // like textareas and iframes, change the state.\n // See GH-7.\n // But also if broken HTML is in `raw`, and then a correct element is given.\n // See GH-11.\n tokenizer.tokenQueue = []\n tokenizer.state = dataState\n tokenizer.returnState = ''\n tokenizer.charRefCode = -1\n tokenizer.tempBuff = []\n tokenizer.lastStartTagName = ''\n tokenizer.consumedAfterSnapshot = -1\n tokenizer.active = false\n tokenizer.currentCharacterToken = undefined\n tokenizer.currentToken = undefined\n tokenizer.currentAttr = undefined\n }\n }\n )\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction startTag(node) {\n /** @type {P5Location} */\n const location = Object.assign(createParse5Location(node))\n // @ts-expect-error extra positional info.\n location.startTag = Object.assign({}, location)\n\n // Untyped token.\n return {\n type: startTagToken,\n tagName: node.tagName,\n selfClosing: false,\n attrs: attributes(node),\n location\n }\n}\n\n/**\n * @param {Element} node\n * @returns {Array<P5Attribute>}\n */\nfunction attributes(node) {\n return toParse5({\n tagName: node.tagName,\n type: 'element',\n properties: node.properties,\n children: []\n // @ts-expect-error Assume element.\n }).attrs\n}\n\n/**\n * @param {Element} node\n * @returns {HiddenToken}\n */\nfunction endTag(node) {\n /** @type {P5Location} */\n const location = Object.assign(createParse5Location(node))\n // @ts-expect-error extra positional info.\n location.startTag = Object.assign({}, location)\n\n // Untyped token.\n return {\n type: endTagToken,\n tagName: node.tagName,\n attrs: [],\n location\n }\n}\n\n/**\n * @param {Node} node\n */\nfunction unknown(node) {\n throw new Error('Cannot compile `' + node.type + '` node')\n}\n\n/**\n * @param {Node} node\n * @returns {boolean}\n */\nfunction documentMode(node) {\n const head = node.type === 'root' ? node.children[0] : node\n return Boolean(\n head &&\n (head.type === 'doctype' ||\n (head.type === 'element' && head.tagName === 'html'))\n )\n}\n\n/**\n * @param {Node|Stitch} node\n * @returns {P5Location}\n */\nfunction createParse5Location(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n return {\n startLine: start.line,\n startCol: start.column,\n startOffset: start.offset,\n endLine: end.line,\n endCol: end.column,\n endOffset: end.offset\n }\n}\n\n/**\n * @param {VFile|Options|undefined} value\n * @return {value is Options}\n */\nfunction isOptions(value) {\n return Boolean(value && !('message' in value && 'messages' in value))\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-raw').Options} Options\n * @typedef {import('hast-util-raw')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {raw} from 'hast-util-raw'\n\n/**\n * Plugin to parse the tree again (and raw nodes).\n * Keeping positional info OK. 🙌\n *\n * @type {import('unified').Plugin<[Options?] | Array<void>, Root>}\n */\nexport default function rehypeRaw(options = {}) {\n return (tree, file) => {\n // Assume that when a root was given, it’s also returned.\n const result = /** @type {Root} */ (raw(tree, file, options))\n return result\n }\n}\n","import copyTextToClipboard from '@uiw/copy-to-clipboard';\nimport { useEffect } from 'react';\nfunction getParentElement(target) {\n if (!target) return null;\n var dom = target;\n if (dom.dataset.code && dom.classList.contains('copied')) {\n return dom;\n }\n if (dom.parentElement) {\n return getParentElement(dom.parentElement);\n }\n return null;\n}\nexport function useCopied(container) {\n var handle = event => {\n var target = getParentElement(event.target);\n if (!target) return;\n target.classList.add('active');\n copyTextToClipboard(target.dataset.code, function () {\n setTimeout(() => {\n target.classList.remove('active');\n }, 2000);\n });\n };\n useEffect(() => {\n var _container$current, _container$current2;\n (_container$current = container.current) == null || _container$current.removeEventListener('click', handle, false);\n (_container$current2 = container.current) == null || _container$current2.addEventListener('click', handle, false);\n return () => {\n var _container$current3;\n (_container$current3 = container.current) == null || _container$current3.removeEventListener('click', handle, false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [container]);\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"source\", \"style\", \"disableCopy\", \"skipHtml\", \"onScroll\", \"onMouseOver\", \"pluginsFilter\", \"rehypeRewrite\", \"wrapperElement\", \"warpperElement\"];\nimport React, { useImperativeHandle } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport gfm from 'remark-gfm';\nimport raw from 'rehype-raw';\nimport { useCopied } from './plugins/useCopied';\nimport \"./styles/markdown.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport * from './preview';\nexport default /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n prefixCls = 'wmde-markdown wmde-markdown-color',\n className,\n source,\n style,\n disableCopy = false,\n skipHtml = true,\n onScroll,\n onMouseOver,\n pluginsFilter,\n wrapperElement = {},\n warpperElement = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n var mdp = React.useRef(null);\n useImperativeHandle(ref, () => _extends({}, props, {\n mdp\n }), [mdp, props]);\n var cls = (prefixCls || '') + \" \" + (className || '');\n useCopied(mdp);\n var rehypePlugins = [...(other.rehypePlugins || [])];\n var customProps = {\n allowElement: (element, index, parent) => {\n if (other.allowElement) {\n return other.allowElement(element, index, parent);\n }\n return /^[A-Za-z0-9]+$/.test(element.tagName);\n }\n };\n if (skipHtml) {\n rehypePlugins.push(raw);\n }\n var remarkPlugins = [...(other.remarkPlugins || []), gfm];\n var wrapperProps = _extends({}, warpperElement, wrapperElement);\n return /*#__PURE__*/_jsx(\"div\", _extends({\n ref: mdp,\n onScroll: onScroll,\n onMouseOver: onMouseOver\n }, wrapperProps, {\n className: cls,\n style: style,\n children: /*#__PURE__*/_jsx(ReactMarkdown, _extends({}, customProps, other, {\n skipHtml: skipHtml,\n rehypePlugins: pluginsFilter ? pluginsFilter('rehype', rehypePlugins) : rehypePlugins,\n remarkPlugins: pluginsFilter ? pluginsFilter('remark', remarkPlugins) : remarkPlugins,\n children: source || ''\n }))\n }));\n});","/**\n * @fileoverview\n * Get the plain-text value of a hast node.\n * @longdescription\n * ## Use\n *\n * ```js\n * import {h} from 'hastscript'\n * import {toString} from 'hast-util-to-string'\n *\n * toString(h('p', 'Alpha'))\n * //=> 'Alpha'\n * toString(h('div', [h('b', 'Bold'), ' and ', h('i', 'italic'), '.']))\n * //=> 'Bold and italic.'\n * ```\n *\n * ## API\n *\n * ### `toString(node)`\n *\n * Transform a node to a string.\n */\n\n/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {Root|Root['children'][number]} Node\n */\n\n/**\n * Get the plain-text value of a hast node.\n *\n * @param {Node} node\n * @returns {string}\n */\nexport function toString(node) {\n // “The concatenation of data of all the Text node descendants of the context\n // object, in tree order.”\n if ('children' in node) {\n return all(node)\n }\n\n // “Context object’s data.”\n return 'value' in node ? node.value : ''\n}\n\n/**\n * @param {Node} node\n * @returns {string}\n */\nfunction one(node) {\n if (node.type === 'text') {\n return node.value\n }\n\n return 'children' in node ? all(node) : ''\n}\n\n/**\n * @param {Root|Element} node\n * @returns {string}\n */\nfunction all(node) {\n let index = -1\n /** @type {string[]} */\n const result = []\n\n while (++index < node.children.length) {\n result[index] = one(node.children[index])\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [cascade=true]\n * Whether to drop parent nodes if they had children, but all their children\n * were filtered out.\n */\n\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create a new `tree` of copies of all nodes that pass `test`.\n *\n * The tree is walked in *preorder* (NLR), visiting the node itself, then its\n * head, etc.\n *\n * @param tree\n * Tree to filter.\n * @param options\n * Configuration (optional).\n * @param test\n * `unist-util-is` compatible test.\n * @returns\n * New filtered tree.\n *\n * `null` is returned if `tree` itself didn’t pass the test, or is cascaded\n * away.\n */\nexport const filter =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(node: Tree, options: Options | null | undefined, test: Check | null | undefined) => import('./complex-types.js').Matches<Tree, Check>) &\n * (<Tree extends Node, Check extends Test>(node: Tree, test: Check) => import('./complex-types.js').Matches<Tree, Check>) &\n * (<Tree extends Node>(node: Tree, options?: Options | null | undefined) => Tree)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Options | Test | null | undefined} [options]\n * @param {Test | null | undefined} [test]\n * @returns {Node | null}\n */\n function (tree, options, test) {\n const is = convert(test || options)\n /** @type {boolean | null | undefined} */\n const cascadeRaw =\n options && typeof options === 'object' && 'cascade' in options\n ? /** @type {boolean | null | undefined} */ (options.cascade)\n : undefined\n const cascade =\n cascadeRaw === undefined || cascadeRaw === null ? true : cascadeRaw\n\n return preorder(tree)\n\n /**\n * @param {Node} node\n * Current node.\n * @param {number | undefined} [index]\n * Index of `node` in `parent`.\n * @param {Parent | undefined} [parent]\n * Parent node.\n * @returns {Node | null}\n * Shallow copy of `node`.\n */\n function preorder(node, index, parent) {\n /** @type {Array<Node>} */\n const children = []\n\n if (!is(node, index, parent)) return null\n\n // @ts-expect-error: Looks like a parent.\n if (node.children) {\n let childIndex = -1\n\n // @ts-expect-error Looks like a parent.\n while (++childIndex < node.children.length) {\n // @ts-expect-error Looks like a parent.\n const result = preorder(node.children[childIndex], childIndex, node)\n\n if (result) {\n children.push(result)\n }\n }\n\n // @ts-expect-error Looks like a parent.\n if (cascade && node.children.length > 0 && children.length === 0)\n return null\n }\n\n // Create a shallow clone, using the new children.\n /** @type {typeof node} */\n // @ts-expect-error all the fields will be copied over.\n const next = {}\n /** @type {string} */\n let key\n\n for (key in node) {\n if (own.call(node, key)) {\n // @ts-expect-error: Looks like a record.\n next[key] = key === 'children' ? children : node[key]\n }\n }\n\n return next\n }\n }\n )\n","// @ts-nocheck\nclike.displayName = 'clike'\nclike.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function clike(Prism) {\n Prism.languages.clike = {\n comment: [\n {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n string: {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n 'class-name': {\n pattern:\n /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n punctuation: /[.\\\\]/\n }\n },\n keyword:\n /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n function: /\\b\\w+(?=\\()/,\n number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n operator: /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n punctuation: /[{}[\\];(),.:]/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nc.displayName = 'c'\nc.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function c(Prism) {\n Prism.register(refractorClike)\n Prism.languages.c = Prism.languages.extend('clike', {\n comment: {\n pattern:\n /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n string: {\n // https://en.cppreference.com/w/c/language/string_literal\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n greedy: true\n },\n 'class-name': {\n pattern:\n /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n lookbehind: true\n },\n keyword:\n /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n number:\n /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n operator: />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n })\n Prism.languages.insertBefore('c', 'string', {\n char: {\n // https://en.cppreference.com/w/c/language/character_constant\n pattern: /'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,\n greedy: true\n }\n })\n Prism.languages.insertBefore('c', 'string', {\n macro: {\n // allow for multiline macro definitions\n // spaces after the # character compile fine with gcc\n pattern:\n /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n greedy: true,\n alias: 'property',\n inside: {\n string: [\n {\n // highlight the path of the include statement as a string\n pattern: /^(#\\s*include\\s*)<[^>]+>/,\n lookbehind: true\n },\n Prism.languages.c['string']\n ],\n char: Prism.languages.c['char'],\n comment: Prism.languages.c['comment'],\n 'macro-name': [\n {\n pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n lookbehind: true\n },\n {\n pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n lookbehind: true,\n alias: 'function'\n }\n ],\n // highlight macro directives as keywords\n directive: {\n pattern: /^(#\\s*)[a-z]+/,\n lookbehind: true,\n alias: 'keyword'\n },\n 'directive-hash': /^#/,\n punctuation: /##|\\\\(?=[\\r\\n])/,\n expression: {\n pattern: /\\S[\\s\\S]*/,\n inside: Prism.languages.c\n }\n }\n }\n })\n Prism.languages.insertBefore('c', 'function', {\n // highlight predefined macros as constants\n constant:\n /\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/\n })\n delete Prism.languages.c['boolean']\n}\n","// @ts-nocheck\nimport refractorC from './c.js'\ncpp.displayName = 'cpp'\ncpp.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function cpp(Prism) {\n Prism.register(refractorC)\n ;(function (Prism) {\n var keyword =\n /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/\n var modName = /\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(\n /<keyword>/g,\n function () {\n return keyword.source\n }\n )\n Prism.languages.cpp = Prism.languages.extend('c', {\n 'class-name': [\n {\n pattern: RegExp(\n /(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+/.source.replace(\n /<keyword>/g,\n function () {\n return keyword.source\n }\n )\n ),\n lookbehind: true\n },\n // This is intended to capture the class name of method implementations like:\n // void foo::bar() const {}\n // However! The `foo` in the above example could also be a namespace, so we only capture the class name if\n // it starts with an uppercase letter. This approximation should give decent results.\n /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/,\n // This will capture the class name before destructors like:\n // Foo::~Foo() {}\n /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i,\n // This also intends to capture the class name of method implementations but here the class has template\n // parameters, so it can't be a namespace (until C++ adds generic namespaces).\n /\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/\n ],\n keyword: keyword,\n number: {\n pattern:\n /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n greedy: true\n },\n operator:\n />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n boolean: /\\b(?:false|true)\\b/\n })\n Prism.languages.insertBefore('cpp', 'string', {\n module: {\n // https://en.cppreference.com/w/cpp/language/modules\n pattern: RegExp(\n /(\\b(?:import|module)\\s+)/.source +\n '(?:' +\n // header-name\n /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source +\n '|' +\n // module name or partition or both\n /<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>/.source.replace(\n /<mod-name>/g,\n function () {\n return modName\n }\n ) +\n ')'\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n string: /^[<\"][\\s\\S]+/,\n operator: /:/,\n punctuation: /\\./\n }\n },\n 'raw-string': {\n pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n alias: 'string',\n greedy: true\n }\n })\n Prism.languages.insertBefore('cpp', 'keyword', {\n 'generic-function': {\n pattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n inside: {\n function: /^\\w+/,\n generic: {\n pattern: /<[\\s\\S]+/,\n alias: 'class-name',\n inside: Prism.languages.cpp\n }\n }\n }\n })\n Prism.languages.insertBefore('cpp', 'operator', {\n 'double-colon': {\n pattern: /::/,\n alias: 'punctuation'\n }\n })\n Prism.languages.insertBefore('cpp', 'class-name', {\n // the base clause is an optional list of parent classes\n // https://en.cppreference.com/w/cpp/language/class\n 'base-clause': {\n pattern:\n /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n lookbehind: true,\n greedy: true,\n inside: Prism.languages.extend('cpp', {})\n }\n })\n Prism.languages.insertBefore(\n 'inside',\n 'double-colon',\n {\n // All untokenized words that are not namespaces should be class names\n 'class-name': /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n },\n Prism.languages.cpp['base-clause']\n )\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorCpp from './cpp.js'\narduino.displayName = 'arduino'\narduino.aliases = ['ino']\n\n/** @type {import('../core.js').Syntax} */\nexport default function arduino(Prism) {\n Prism.register(refractorCpp)\n Prism.languages.arduino = Prism.languages.extend('cpp', {\n keyword:\n /\\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\\b/,\n constant:\n /\\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\\b/,\n builtin:\n /\\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\\b/\n })\n Prism.languages.ino = Prism.languages.arduino\n}\n","// @ts-nocheck\nbash.displayName = 'bash'\nbash.aliases = ['sh', 'shell']\n\n/** @type {import('../core.js').Syntax} */\nexport default function bash(Prism) {\n ;(function (Prism) {\n // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n // + LC_ALL, RANDOM, REPLY, SECONDS.\n // + make sure PS1..4 are here as they are not always set,\n // - some useless things.\n var envVars =\n '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b'\n var commandAfterHeredoc = {\n pattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n lookbehind: true,\n alias: 'punctuation',\n // this looks reasonably well in all themes\n inside: null // see below\n }\n\n var insideString = {\n bash: commandAfterHeredoc,\n environment: {\n pattern: RegExp('\\\\$' + envVars),\n alias: 'constant'\n },\n variable: [\n // [0]: Arithmetic Environment\n {\n pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n greedy: true,\n inside: {\n // If there is a $ sign at the beginning highlight $(( and )) as variable\n variable: [\n {\n pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n lookbehind: true\n },\n /^\\$\\(\\(/\n ],\n number:\n /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n operator:\n /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n // If there is no $ sign at the beginning highlight (( and )) as punctuation\n punctuation: /\\(\\(?|\\)\\)?|,|;/\n }\n },\n // [1]: Command Substitution\n {\n pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n greedy: true,\n inside: {\n variable: /^\\$\\(|^`|\\)$|`$/\n }\n },\n // [2]: Brace expansion\n {\n pattern: /\\$\\{[^}]+\\}/,\n greedy: true,\n inside: {\n operator: /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n punctuation: /[\\[\\]]/,\n environment: {\n pattern: RegExp('(\\\\{)' + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n }\n },\n /\\$(?:\\w+|[#?*!@$])/\n ],\n // Escape sequences from echo and printf's manuals, and escaped quotes.\n entity:\n /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n }\n Prism.languages.bash = {\n shebang: {\n pattern: /^#!\\s*\\/.*/,\n alias: 'important'\n },\n comment: {\n pattern: /(^|[^\"{\\\\$])#.*/,\n lookbehind: true\n },\n 'function-name': [\n // a) function foo {\n // b) foo() {\n // c) function foo() {\n // but not “foo {”\n {\n // a) and c)\n pattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n lookbehind: true,\n alias: 'function'\n },\n {\n // b)\n pattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n alias: 'function'\n }\n ],\n // Highlight variable names as variables in for and select beginnings.\n 'for-or-select': {\n pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n alias: 'variable',\n lookbehind: true\n },\n // Highlight variable names as variables in the left-hand part\n // of assignments (“=” and “+=”).\n 'assign-left': {\n pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n inside: {\n environment: {\n pattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n },\n alias: 'variable',\n lookbehind: true\n },\n // Highlight parameter names as variables\n parameter: {\n pattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n alias: 'variable',\n lookbehind: true\n },\n string: [\n // Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n {\n pattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n },\n // Here-document with quotes around the tag\n // → No expansion (so no “inside”).\n {\n pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n lookbehind: true,\n greedy: true,\n inside: {\n bash: commandAfterHeredoc\n }\n },\n // “Normal” string\n {\n // https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n pattern:\n /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n },\n {\n // https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n pattern: /(^|[^$\\\\])'[^']*'/,\n lookbehind: true,\n greedy: true\n },\n {\n // https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n pattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n greedy: true,\n inside: {\n entity: insideString.entity\n }\n }\n ],\n environment: {\n pattern: RegExp('\\\\$?' + envVars),\n alias: 'constant'\n },\n variable: insideString.variable,\n function: {\n pattern:\n /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n keyword: {\n pattern:\n /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n builtin: {\n pattern:\n /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n lookbehind: true,\n // Alias added to make those easier to distinguish from strings.\n alias: 'class-name'\n },\n boolean: {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'file-descriptor': {\n pattern: /\\B&\\d\\b/,\n alias: 'important'\n },\n operator: {\n // Lots of redirections here, but not just that.\n pattern:\n /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n inside: {\n 'file-descriptor': {\n pattern: /^\\d/,\n alias: 'important'\n }\n }\n },\n punctuation: /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n number: {\n pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n lookbehind: true\n }\n }\n commandAfterHeredoc.inside = Prism.languages.bash\n\n /* Patterns in command substitution. */\n var toBeCopied = [\n 'comment',\n 'function-name',\n 'for-or-select',\n 'assign-left',\n 'parameter',\n 'string',\n 'environment',\n 'function',\n 'keyword',\n 'builtin',\n 'boolean',\n 'file-descriptor',\n 'operator',\n 'punctuation',\n 'number'\n ]\n var inside = insideString.variable[1].inside\n for (var i = 0; i < toBeCopied.length; i++) {\n inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]]\n }\n Prism.languages.sh = Prism.languages.bash\n Prism.languages.shell = Prism.languages.bash\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\ncsharp.displayName = 'csharp'\ncsharp.aliases = ['cs', 'dotnet']\n\n/** @type {import('../core.js').Syntax} */\nexport default function csharp(Prism) {\n Prism.register(refractorClike)\n ;(function (Prism) {\n /**\n * Replaces all placeholders \"<<n>>\" of given pattern with the n-th replacement (zero based).\n *\n * Note: This is a simple text based replacement. Be careful when using backreferences!\n *\n * @param {string} pattern the given pattern.\n * @param {string[]} replacements a list of replacement which can be inserted into the given pattern.\n * @returns {string} the pattern with all placeholders replaced with their corresponding replacements.\n * @example replace(/a<<0>>a/.source, [/b+/.source]) === /a(?:b+)a/.source\n */\n function replace(pattern, replacements) {\n return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n return '(?:' + replacements[+index] + ')'\n })\n }\n /**\n * @param {string} pattern\n * @param {string[]} replacements\n * @param {string} [flags]\n * @returns {RegExp}\n */\n function re(pattern, replacements, flags) {\n return RegExp(replace(pattern, replacements), flags || '')\n }\n\n /**\n * Creates a nested pattern where all occurrences of the string `<<self>>` are replaced with the pattern itself.\n *\n * @param {string} pattern\n * @param {number} depthLog2\n * @returns {string}\n */\n function nested(pattern, depthLog2) {\n for (var i = 0; i < depthLog2; i++) {\n pattern = pattern.replace(/<<self>>/g, function () {\n return '(?:' + pattern + ')'\n })\n }\n return pattern.replace(/<<self>>/g, '[^\\\\s\\\\S]')\n }\n\n // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/\n var keywordKinds = {\n // keywords which represent a return or variable type\n type: 'bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void',\n // keywords which are used to declare a type\n typeDeclaration: 'class enum interface record struct',\n // contextual keywords\n // (\"var\" and \"dynamic\" are missing because they are used like types)\n contextual:\n 'add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)',\n // all other keywords\n other:\n 'abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield'\n }\n\n // keywords\n function keywordsToPattern(words) {\n return '\\\\b(?:' + words.trim().replace(/ /g, '|') + ')\\\\b'\n }\n var typeDeclarationKeywords = keywordsToPattern(\n keywordKinds.typeDeclaration\n )\n var keywords = RegExp(\n keywordsToPattern(\n keywordKinds.type +\n ' ' +\n keywordKinds.typeDeclaration +\n ' ' +\n keywordKinds.contextual +\n ' ' +\n keywordKinds.other\n )\n )\n var nonTypeKeywords = keywordsToPattern(\n keywordKinds.typeDeclaration +\n ' ' +\n keywordKinds.contextual +\n ' ' +\n keywordKinds.other\n )\n var nonContextualKeywords = keywordsToPattern(\n keywordKinds.type +\n ' ' +\n keywordKinds.typeDeclaration +\n ' ' +\n keywordKinds.other\n )\n\n // types\n var generic = nested(/<(?:[^<>;=+\\-*/%&|^]|<<self>>)*>/.source, 2) // the idea behind the other forbidden characters is to prevent false positives. Same for tupleElement.\n var nestedRound = nested(/\\((?:[^()]|<<self>>)*\\)/.source, 2)\n var name = /@?\\b[A-Za-z_]\\w*\\b/.source\n var genericName = replace(/<<0>>(?:\\s*<<1>>)?/.source, [name, generic])\n var identifier = replace(/(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*/.source, [\n nonTypeKeywords,\n genericName\n ])\n var array = /\\[\\s*(?:,\\s*)*\\]/.source\n var typeExpressionWithoutTuple = replace(\n /<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?/.source,\n [identifier, array]\n )\n var tupleElement = replace(\n /[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,\n [generic, nestedRound, array]\n )\n var tuple = replace(/\\(<<0>>+(?:,<<0>>+)+\\)/.source, [tupleElement])\n var typeExpression = replace(\n /(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?/.source,\n [tuple, identifier, array]\n )\n var typeInside = {\n keyword: keywords,\n punctuation: /[<>()?,.:[\\]]/\n }\n\n // strings & characters\n // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#character-literals\n // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#string-literals\n var character = /'(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'/.source // simplified pattern\n var regularString = /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/.source\n var verbatimString = /@\"(?:\"\"|\\\\[\\s\\S]|[^\\\\\"])*\"(?!\")/.source\n Prism.languages.csharp = Prism.languages.extend('clike', {\n string: [\n {\n pattern: re(/(^|[^$\\\\])<<0>>/.source, [verbatimString]),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: re(/(^|[^@$\\\\])<<0>>/.source, [regularString]),\n lookbehind: true,\n greedy: true\n }\n ],\n 'class-name': [\n {\n // Using static\n // using static System.Math;\n pattern: re(/(\\busing\\s+static\\s+)<<0>>(?=\\s*;)/.source, [\n identifier\n ]),\n lookbehind: true,\n inside: typeInside\n },\n {\n // Using alias (type)\n // using Project = PC.MyCompany.Project;\n pattern: re(/(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)/.source, [\n name,\n typeExpression\n ]),\n lookbehind: true,\n inside: typeInside\n },\n {\n // Using alias (alias)\n // using Project = PC.MyCompany.Project;\n pattern: re(/(\\busing\\s+)<<0>>(?=\\s*=)/.source, [name]),\n lookbehind: true\n },\n {\n // Type declarations\n // class Foo<A, B>\n // interface Foo<out A, B>\n pattern: re(/(\\b<<0>>\\s+)<<1>>/.source, [\n typeDeclarationKeywords,\n genericName\n ]),\n lookbehind: true,\n inside: typeInside\n },\n {\n // Single catch exception declaration\n // catch(Foo)\n // (things like catch(Foo e) is covered by variable declaration)\n pattern: re(/(\\bcatch\\s*\\(\\s*)<<0>>/.source, [identifier]),\n lookbehind: true,\n inside: typeInside\n },\n {\n // Name of the type parameter of generic constraints\n // where Foo : class\n pattern: re(/(\\bwhere\\s+)<<0>>/.source, [name]),\n lookbehind: true\n },\n {\n // Casts and checks via as and is.\n // as Foo<A>, is Bar<B>\n // (things like if(a is Foo b) is covered by variable declaration)\n pattern: re(/(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>/.source, [\n typeExpressionWithoutTuple\n ]),\n lookbehind: true,\n inside: typeInside\n },\n {\n // Variable, field and parameter declaration\n // (Foo bar, Bar baz, Foo[,,] bay, Foo<Bar, FooBar<Bar>> bax)\n pattern: re(\n /\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))/\n .source,\n [typeExpression, nonContextualKeywords, name]\n ),\n inside: typeInside\n }\n ],\n keyword: keywords,\n // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#literals\n number:\n /(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:[dflmu]|lu|ul)?\\b/i,\n operator: />>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,\n punctuation: /\\?\\.?|::|[{}[\\];(),.:]/\n })\n Prism.languages.insertBefore('csharp', 'number', {\n range: {\n pattern: /\\.\\./,\n alias: 'operator'\n }\n })\n Prism.languages.insertBefore('csharp', 'punctuation', {\n 'named-parameter': {\n pattern: re(/([(,]\\s*)<<0>>(?=\\s*:)/.source, [name]),\n lookbehind: true,\n alias: 'punctuation'\n }\n })\n Prism.languages.insertBefore('csharp', 'class-name', {\n namespace: {\n // namespace Foo.Bar {}\n // using Foo.Bar;\n pattern: re(\n /(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])/.source,\n [name]\n ),\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n },\n 'type-expression': {\n // default(Foo), typeof(Foo<Bar>), sizeof(int)\n pattern: re(\n /(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))/\n .source,\n [nestedRound]\n ),\n lookbehind: true,\n alias: 'class-name',\n inside: typeInside\n },\n 'return-type': {\n // Foo<Bar> ForBar(); Foo IFoo.Bar() => 0\n // int this[int index] => 0; T IReadOnlyList<T>.this[int index] => this[index];\n // int Foo => 0; int Foo { get; set } = 0;\n pattern: re(\n /<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))/.source,\n [typeExpression, identifier]\n ),\n inside: typeInside,\n alias: 'class-name'\n },\n 'constructor-invocation': {\n // new List<Foo<Bar[]>> { }\n pattern: re(/(\\bnew\\s+)<<0>>(?=\\s*[[({])/.source, [typeExpression]),\n lookbehind: true,\n inside: typeInside,\n alias: 'class-name'\n },\n /*'explicit-implementation': {\n// int IFoo<Foo>.Bar => 0; void IFoo<Foo<Foo>>.Foo<T>();\npattern: replace(/\\b<<0>>(?=\\.<<1>>)/, className, methodOrPropertyDeclaration),\ninside: classNameInside,\nalias: 'class-name'\n},*/\n 'generic-method': {\n // foo<Bar>()\n pattern: re(/<<0>>\\s*<<1>>(?=\\s*\\()/.source, [name, generic]),\n inside: {\n function: re(/^<<0>>/.source, [name]),\n generic: {\n pattern: RegExp(generic),\n alias: 'class-name',\n inside: typeInside\n }\n }\n },\n 'type-list': {\n // The list of types inherited or of generic constraints\n // class Foo<F> : Bar, IList<FooBar>\n // where F : Bar, IList<int>\n pattern: re(\n /\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))/\n .source,\n [\n typeDeclarationKeywords,\n genericName,\n name,\n typeExpression,\n keywords.source,\n nestedRound,\n /\\bnew\\s*\\(\\s*\\)/.source\n ]\n ),\n lookbehind: true,\n inside: {\n 'record-arguments': {\n pattern: re(/(^(?!new\\s*\\()<<0>>\\s*)<<1>>/.source, [\n genericName,\n nestedRound\n ]),\n lookbehind: true,\n greedy: true,\n inside: Prism.languages.csharp\n },\n keyword: keywords,\n 'class-name': {\n pattern: RegExp(typeExpression),\n greedy: true,\n inside: typeInside\n },\n punctuation: /[,()]/\n }\n },\n preprocessor: {\n pattern: /(^[\\t ]*)#.*/m,\n lookbehind: true,\n alias: 'property',\n inside: {\n // highlight preprocessor directives as keywords\n directive: {\n pattern:\n /(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,\n lookbehind: true,\n alias: 'keyword'\n }\n }\n }\n })\n\n // attributes\n var regularStringOrCharacter = regularString + '|' + character\n var regularStringCharacterOrComment = replace(\n /\\/(?![*/])|\\/\\/[^\\r\\n]*[\\r\\n]|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>/.source,\n [regularStringOrCharacter]\n )\n var roundExpression = nested(\n replace(/[^\"'/()]|<<0>>|\\(<<self>>*\\)/.source, [\n regularStringCharacterOrComment\n ]),\n 2\n )\n\n // https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/attributes/#attribute-targets\n var attrTarget =\n /\\b(?:assembly|event|field|method|module|param|property|return|type)\\b/\n .source\n var attr = replace(/<<0>>(?:\\s*\\(<<1>>*\\))?/.source, [\n identifier,\n roundExpression\n ])\n Prism.languages.insertBefore('csharp', 'class-name', {\n attribute: {\n // Attributes\n // [Foo], [Foo(1), Bar(2, Prop = \"foo\")], [return: Foo(1), Bar(2)], [assembly: Foo(Bar)]\n pattern: re(\n /((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])/\n .source,\n [attrTarget, attr]\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n target: {\n pattern: re(/^<<0>>(?=\\s*:)/.source, [attrTarget]),\n alias: 'keyword'\n },\n 'attribute-arguments': {\n pattern: re(/\\(<<0>>*\\)/.source, [roundExpression]),\n inside: Prism.languages.csharp\n },\n 'class-name': {\n pattern: RegExp(identifier),\n inside: {\n punctuation: /\\./\n }\n },\n punctuation: /[:,]/\n }\n }\n })\n\n // string interpolation\n var formatString = /:[^}\\r\\n]+/.source\n // multi line\n var mInterpolationRound = nested(\n replace(/[^\"'/()]|<<0>>|\\(<<self>>*\\)/.source, [\n regularStringCharacterOrComment\n ]),\n 2\n )\n var mInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [\n mInterpolationRound,\n formatString\n ])\n // single line\n var sInterpolationRound = nested(\n replace(\n /[^\"'/()]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>|\\(<<self>>*\\)/\n .source,\n [regularStringOrCharacter]\n ),\n 2\n )\n var sInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [\n sInterpolationRound,\n formatString\n ])\n function createInterpolationInside(interpolation, interpolationRound) {\n return {\n interpolation: {\n pattern: re(/((?:^|[^{])(?:\\{\\{)*)<<0>>/.source, [interpolation]),\n lookbehind: true,\n inside: {\n 'format-string': {\n pattern: re(/(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)/.source, [\n interpolationRound,\n formatString\n ]),\n lookbehind: true,\n inside: {\n punctuation: /^:/\n }\n },\n punctuation: /^\\{|\\}$/,\n expression: {\n pattern: /[\\s\\S]+/,\n alias: 'language-csharp',\n inside: Prism.languages.csharp\n }\n }\n },\n string: /[\\s\\S]+/\n }\n }\n Prism.languages.insertBefore('csharp', 'string', {\n 'interpolation-string': [\n {\n pattern: re(\n /(^|[^\\\\])(?:\\$@|@\\$)\"(?:\"\"|\\\\[\\s\\S]|\\{\\{|<<0>>|[^\\\\{\"])*\"/.source,\n [mInterpolation]\n ),\n lookbehind: true,\n greedy: true,\n inside: createInterpolationInside(mInterpolation, mInterpolationRound)\n },\n {\n pattern: re(/(^|[^@\\\\])\\$\"(?:\\\\.|\\{\\{|<<0>>|[^\\\\\"{])*\"/.source, [\n sInterpolation\n ]),\n lookbehind: true,\n greedy: true,\n inside: createInterpolationInside(sInterpolation, sInterpolationRound)\n }\n ],\n char: {\n pattern: RegExp(character),\n greedy: true\n }\n })\n Prism.languages.dotnet = Prism.languages.cs = Prism.languages.csharp\n })(Prism)\n}\n","// @ts-nocheck\nmarkup.displayName = 'markup'\nmarkup.aliases = ['atom', 'html', 'mathml', 'rss', 'ssml', 'svg', 'xml']\n\n/** @type {import('../core.js').Syntax} */\nexport default function markup(Prism) {\n Prism.languages.markup = {\n comment: {\n pattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n greedy: true\n },\n prolog: {\n pattern: /<\\?[\\s\\S]+?\\?>/,\n greedy: true\n },\n doctype: {\n // https://www.w3.org/TR/xml/#NT-doctypedecl\n pattern:\n /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n greedy: true,\n inside: {\n 'internal-subset': {\n pattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n lookbehind: true,\n greedy: true,\n inside: null // see below\n },\n\n string: {\n pattern: /\"[^\"]*\"|'[^']*'/,\n greedy: true\n },\n punctuation: /^<!|>$|[[\\]]/,\n 'doctype-tag': /^DOCTYPE/i,\n name: /[^\\s<>'\"]+/\n }\n },\n cdata: {\n pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n greedy: true\n },\n tag: {\n pattern:\n /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n greedy: true,\n inside: {\n tag: {\n pattern: /^<\\/?[^\\s>\\/]+/,\n inside: {\n punctuation: /^<\\/?/,\n namespace: /^[^\\s>\\/:]+:/\n }\n },\n 'special-attr': [],\n 'attr-value': {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n inside: {\n punctuation: [\n {\n pattern: /^=/,\n alias: 'attr-equals'\n },\n {\n pattern: /^(\\s*)[\"']|[\"']$/,\n lookbehind: true\n }\n ]\n }\n },\n punctuation: /\\/?>/,\n 'attr-name': {\n pattern: /[^\\s>\\/]+/,\n inside: {\n namespace: /^[^\\s>\\/:]+:/\n }\n }\n }\n },\n entity: [\n {\n pattern: /&[\\da-z]{1,8};/i,\n alias: 'named-entity'\n },\n /&#x?[\\da-f]{1,8};/i\n ]\n }\n Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n Prism.languages.markup['entity']\n Prism.languages.markup['doctype'].inside['internal-subset'].inside =\n Prism.languages.markup\n\n // Plugin to make entity title show the real entity, idea by Roman Komarov\n Prism.hooks.add('wrap', function (env) {\n if (env.type === 'entity') {\n env.attributes['title'] = env.content.value.replace(/&/, '&')\n }\n })\n Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n /**\n * Adds an inlined language to markup.\n *\n * An example of an inlined language is CSS with `<style>` tags.\n *\n * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n * case insensitive.\n * @param {string} lang The language key.\n * @example\n * addInlined('style', 'css');\n */\n value: function addInlined(tagName, lang) {\n var includedCdataInside = {}\n includedCdataInside['language-' + lang] = {\n pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n lookbehind: true,\n inside: Prism.languages[lang]\n }\n includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i\n var inside = {\n 'included-cdata': {\n pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n inside: includedCdataInside\n }\n }\n inside['language-' + lang] = {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages[lang]\n }\n var def = {}\n def[tagName] = {\n pattern: RegExp(\n /(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(\n /__/g,\n function () {\n return tagName\n }\n ),\n 'i'\n ),\n lookbehind: true,\n greedy: true,\n inside: inside\n }\n Prism.languages.insertBefore('markup', 'cdata', def)\n }\n })\n Object.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n /**\n * Adds an pattern to highlight languages embedded in HTML attributes.\n *\n * An example of an inlined language is CSS with `style` attributes.\n *\n * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n * case insensitive.\n * @param {string} lang The language key.\n * @example\n * addAttribute('style', 'css');\n */\n value: function (attrName, lang) {\n Prism.languages.markup.tag.inside['special-attr'].push({\n pattern: RegExp(\n /(^|[\"'\\s])/.source +\n '(?:' +\n attrName +\n ')' +\n /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n 'i'\n ),\n lookbehind: true,\n inside: {\n 'attr-name': /^[^\\s=]+/,\n 'attr-value': {\n pattern: /=[\\s\\S]+/,\n inside: {\n value: {\n pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n lookbehind: true,\n alias: [lang, 'language-' + lang],\n inside: Prism.languages[lang]\n },\n punctuation: [\n {\n pattern: /^=/,\n alias: 'attr-equals'\n },\n /\"|'/\n ]\n }\n }\n }\n })\n }\n })\n Prism.languages.html = Prism.languages.markup\n Prism.languages.mathml = Prism.languages.markup\n Prism.languages.svg = Prism.languages.markup\n Prism.languages.xml = Prism.languages.extend('markup', {})\n Prism.languages.ssml = Prism.languages.xml\n Prism.languages.atom = Prism.languages.xml\n Prism.languages.rss = Prism.languages.xml\n}\n","// @ts-nocheck\ncss.displayName = 'css'\ncss.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function css(Prism) {\n ;(function (Prism) {\n var string =\n /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/\n Prism.languages.css = {\n comment: /\\/\\*[\\s\\S]*?\\*\\//,\n atrule: {\n pattern: RegExp(\n '@[\\\\w-](?:' +\n /[^;{\\s\"']|\\s+(?!\\s)/.source +\n '|' +\n string.source +\n ')*?' +\n /(?:;|(?=\\s*\\{))/.source\n ),\n inside: {\n rule: /^@[\\w-]+/,\n 'selector-function-argument': {\n pattern:\n /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n lookbehind: true,\n alias: 'selector'\n },\n keyword: {\n pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n lookbehind: true\n }\n // See rest below\n }\n },\n\n url: {\n // https://drafts.csswg.org/css-values-3/#urls\n pattern: RegExp(\n '\\\\burl\\\\((?:' +\n string.source +\n '|' +\n /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source +\n ')\\\\)',\n 'i'\n ),\n greedy: true,\n inside: {\n function: /^url/i,\n punctuation: /^\\(|\\)$/,\n string: {\n pattern: RegExp('^' + string.source + '$'),\n alias: 'url'\n }\n }\n },\n selector: {\n pattern: RegExp(\n '(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' +\n string.source +\n ')*(?=\\\\s*\\\\{)'\n ),\n lookbehind: true\n },\n string: {\n pattern: string,\n greedy: true\n },\n property: {\n pattern:\n /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n lookbehind: true\n },\n important: /!important\\b/i,\n function: {\n pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n lookbehind: true\n },\n punctuation: /[(){};:,]/\n }\n Prism.languages.css['atrule'].inside.rest = Prism.languages.css\n var markup = Prism.languages.markup\n if (markup) {\n markup.tag.addInlined('style', 'css')\n markup.tag.addAttribute('style', 'css')\n }\n })(Prism)\n}\n","// @ts-nocheck\ndiff.displayName = 'diff'\ndiff.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function diff(Prism) {\n ;(function (Prism) {\n Prism.languages.diff = {\n coord: [\n // Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n /^(?:\\*{3}|-{3}|\\+{3}).*$/m,\n // Match \"@@ ... @@\" coord lines in unified diff.\n /^@@.*@@$/m,\n // Match coord lines in normal diff (starts with a number).\n /^\\d.*$/m\n ]\n\n // deleted, inserted, unchanged, diff\n }\n\n /**\n * A map from the name of a block to its line prefix.\n *\n * @type {Object<string, string>}\n */\n var PREFIXES = {\n 'deleted-sign': '-',\n 'deleted-arrow': '<',\n 'inserted-sign': '+',\n 'inserted-arrow': '>',\n unchanged: ' ',\n diff: '!'\n }\n\n // add a token for each prefix\n Object.keys(PREFIXES).forEach(function (name) {\n var prefix = PREFIXES[name]\n var alias = []\n if (!/^\\w+$/.test(name)) {\n // \"deleted-sign\" -> \"deleted\"\n alias.push(/\\w+/.exec(name)[0])\n }\n if (name === 'diff') {\n alias.push('bold')\n }\n Prism.languages.diff[name] = {\n pattern: RegExp(\n '^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+',\n 'm'\n ),\n alias: alias,\n inside: {\n line: {\n pattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n lookbehind: true\n },\n prefix: {\n pattern: /[\\s\\S]/,\n alias: /\\w+/.exec(name)[0]\n }\n }\n }\n })\n\n // make prefixes available to Diff plugin\n Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n value: PREFIXES\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\ngo.displayName = 'go'\ngo.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function go(Prism) {\n Prism.register(refractorClike)\n Prism.languages.go = Prism.languages.extend('clike', {\n string: {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`[^`]*`/,\n lookbehind: true,\n greedy: true\n },\n keyword:\n /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n boolean: /\\b(?:_|false|iota|nil|true)\\b/,\n number: [\n // binary and octal integers\n /\\b0(?:b[01_]+|o[0-7_]+)i?\\b/i,\n // hexadecimal integers and floats\n /\\b0x(?:[a-f\\d_]+(?:\\.[a-f\\d_]*)?|\\.[a-f\\d_]+)(?:p[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i,\n // decimal integers and floats\n /(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?[\\d_]+)?i?(?!\\w)/i\n ],\n operator:\n /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n builtin:\n /\\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\\b/\n })\n Prism.languages.insertBefore('go', 'string', {\n char: {\n pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){0,10}'/,\n greedy: true\n }\n })\n delete Prism.languages.go['class-name']\n}\n","// @ts-nocheck\nini.displayName = 'ini'\nini.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function ini(Prism) {\n Prism.languages.ini = {\n /**\n * The component mimics the behavior of the Win32 API parser.\n *\n * @see {@link https://github.com/PrismJS/prism/issues/2775#issuecomment-787477723}\n */\n\n comment: {\n pattern: /(^[ \\f\\t\\v]*)[#;][^\\n\\r]*/m,\n lookbehind: true\n },\n section: {\n pattern: /(^[ \\f\\t\\v]*)\\[[^\\n\\r\\]]*\\]?/m,\n lookbehind: true,\n inside: {\n 'section-name': {\n pattern: /(^\\[[ \\f\\t\\v]*)[^ \\f\\t\\v\\]]+(?:[ \\f\\t\\v]+[^ \\f\\t\\v\\]]+)*/,\n lookbehind: true,\n alias: 'selector'\n },\n punctuation: /\\[|\\]/\n }\n },\n key: {\n pattern:\n /(^[ \\f\\t\\v]*)[^ \\f\\n\\r\\t\\v=]+(?:[ \\f\\t\\v]+[^ \\f\\n\\r\\t\\v=]+)*(?=[ \\f\\t\\v]*=)/m,\n lookbehind: true,\n alias: 'attr-name'\n },\n value: {\n pattern: /(=[ \\f\\t\\v]*)[^ \\f\\n\\r\\t\\v]+(?:[ \\f\\t\\v]+[^ \\f\\n\\r\\t\\v]+)*/,\n lookbehind: true,\n alias: 'attr-value',\n inside: {\n 'inner-value': {\n pattern: /^(\"|').+(?=\\1$)/,\n lookbehind: true\n }\n }\n },\n punctuation: /=/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\njava.displayName = 'java'\njava.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function java(Prism) {\n Prism.register(refractorClike)\n ;(function (Prism) {\n var keywords =\n /\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/\n\n // full package (optional) + parent classes (optional)\n var classNamePrefix = /(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source\n\n // based on the java naming conventions\n var className = {\n pattern: RegExp(\n /(^|[^\\w.])/.source +\n classNamePrefix +\n /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source\n ),\n lookbehind: true,\n inside: {\n namespace: {\n pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n inside: {\n punctuation: /\\./\n }\n },\n punctuation: /\\./\n }\n }\n Prism.languages.java = Prism.languages.extend('clike', {\n string: {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n lookbehind: true,\n greedy: true\n },\n 'class-name': [\n className,\n {\n // variables, parameters, and constructor references\n // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n pattern: RegExp(\n /(^|[^\\w.])/.source +\n classNamePrefix +\n /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)/\n .source\n ),\n lookbehind: true,\n inside: className.inside\n },\n {\n // class names based on keyword\n // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n pattern: RegExp(\n /(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)/\n .source +\n classNamePrefix +\n /[A-Z]\\w*\\b/.source\n ),\n lookbehind: true,\n inside: className.inside\n }\n ],\n keyword: keywords,\n function: [\n Prism.languages.clike.function,\n {\n pattern: /(::\\s*)[a-z_]\\w*/,\n lookbehind: true\n }\n ],\n number:\n /\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n operator: {\n pattern:\n /(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,\n lookbehind: true\n },\n constant: /\\b[A-Z][A-Z_\\d]+\\b/\n })\n Prism.languages.insertBefore('java', 'string', {\n 'triple-quoted-string': {\n // http://openjdk.java.net/jeps/355#Description\n pattern: /\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,\n greedy: true,\n alias: 'string'\n },\n char: {\n pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,\n greedy: true\n }\n })\n Prism.languages.insertBefore('java', 'class-name', {\n annotation: {\n pattern: /(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,\n lookbehind: true,\n alias: 'punctuation'\n },\n generics: {\n pattern:\n /<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,\n inside: {\n 'class-name': className,\n keyword: keywords,\n punctuation: /[<>(),.:]/,\n operator: /[?&|]/\n }\n },\n import: [\n {\n pattern: RegExp(\n /(\\bimport\\s+)/.source +\n classNamePrefix +\n /(?:[A-Z]\\w*|\\*)(?=\\s*;)/.source\n ),\n lookbehind: true,\n inside: {\n namespace: className.inside.namespace,\n punctuation: /\\./,\n operator: /\\*/,\n 'class-name': /\\w+/\n }\n },\n {\n pattern: RegExp(\n /(\\bimport\\s+static\\s+)/.source +\n classNamePrefix +\n /(?:\\w+|\\*)(?=\\s*;)/.source\n ),\n lookbehind: true,\n alias: 'static',\n inside: {\n namespace: className.inside.namespace,\n static: /\\b\\w+$/,\n punctuation: /\\./,\n operator: /\\*/,\n 'class-name': /\\w+/\n }\n }\n ],\n namespace: {\n pattern: RegExp(\n /(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?/.source.replace(\n /<keyword>/g,\n function () {\n return keywords.source\n }\n )\n ),\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n }\n })\n })(Prism)\n}\n","// @ts-nocheck\nregex.displayName = 'regex'\nregex.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function regex(Prism) {\n ;(function (Prism) {\n var specialEscape = {\n pattern: /\\\\[\\\\(){}[\\]^$+*?|.]/,\n alias: 'escape'\n }\n var escape =\n /\\\\(?:x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u\\{[\\da-fA-F]+\\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/\n var charSet = {\n pattern: /\\.|\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,\n alias: 'class-name'\n }\n var charSetWithoutDot = {\n pattern: /\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,\n alias: 'class-name'\n }\n var rangeChar = '(?:[^\\\\\\\\-]|' + escape.source + ')'\n var range = RegExp(rangeChar + '-' + rangeChar)\n\n // the name of a capturing group\n var groupName = {\n pattern: /(<|')[^<>']+(?=[>']$)/,\n lookbehind: true,\n alias: 'variable'\n }\n Prism.languages.regex = {\n 'char-class': {\n pattern: /((?:^|[^\\\\])(?:\\\\\\\\)*)\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/,\n lookbehind: true,\n inside: {\n 'char-class-negation': {\n pattern: /(^\\[)\\^/,\n lookbehind: true,\n alias: 'operator'\n },\n 'char-class-punctuation': {\n pattern: /^\\[|\\]$/,\n alias: 'punctuation'\n },\n range: {\n pattern: range,\n inside: {\n escape: escape,\n 'range-punctuation': {\n pattern: /-/,\n alias: 'operator'\n }\n }\n },\n 'special-escape': specialEscape,\n 'char-set': charSetWithoutDot,\n escape: escape\n }\n },\n 'special-escape': specialEscape,\n 'char-set': charSet,\n backreference: [\n {\n // a backreference which is not an octal escape\n pattern: /\\\\(?![123][0-7]{2})[1-9]/,\n alias: 'keyword'\n },\n {\n pattern: /\\\\k<[^<>']+>/,\n alias: 'keyword',\n inside: {\n 'group-name': groupName\n }\n }\n ],\n anchor: {\n pattern: /[$^]|\\\\[ABbGZz]/,\n alias: 'function'\n },\n escape: escape,\n group: [\n {\n // https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html\n // https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference?view=netframework-4.7.2#grouping-constructs\n\n // (), (?<name>), (?'name'), (?>), (?:), (?=), (?!), (?<=), (?<!), (?is-m), (?i-m:)\n pattern:\n /\\((?:\\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,\n alias: 'punctuation',\n inside: {\n 'group-name': groupName\n }\n },\n {\n pattern: /\\)/,\n alias: 'punctuation'\n }\n ],\n quantifier: {\n pattern: /(?:[+*?]|\\{\\d+(?:,\\d*)?\\})[?+]?/,\n alias: 'number'\n },\n alternation: {\n pattern: /\\|/,\n alias: 'keyword'\n }\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\njavascript.displayName = 'javascript'\njavascript.aliases = ['js']\n\n/** @type {import('../core.js').Syntax} */\nexport default function javascript(Prism) {\n Prism.register(refractorClike)\n Prism.languages.javascript = Prism.languages.extend('clike', {\n 'class-name': [\n Prism.languages.clike['class-name'],\n {\n pattern:\n /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n lookbehind: true\n }\n ],\n keyword: [\n {\n pattern: /((?:^|\\})\\s*)catch\\b/,\n lookbehind: true\n },\n {\n pattern:\n /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true\n }\n ],\n // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n function:\n /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n number: {\n pattern: RegExp(\n /(^|[^\\w$])/.source +\n '(?:' +\n // constant\n (/NaN|Infinity/.source +\n '|' +\n // binary integer\n /0[bB][01]+(?:_[01]+)*n?/.source +\n '|' +\n // octal integer\n /0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n '|' +\n // hexadecimal integer\n /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n '|' +\n // decimal bigint\n /\\d+(?:_\\d+)*n/.source +\n '|' +\n // decimal number (integer or float) but no bigint\n /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/\n .source) +\n ')' +\n /(?![\\w$])/.source\n ),\n lookbehind: true\n },\n operator:\n /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n })\n Prism.languages.javascript['class-name'][0].pattern =\n /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/\n Prism.languages.insertBefore('javascript', 'keyword', {\n regex: {\n pattern: RegExp(\n // lookbehind\n // eslint-disable-next-line regexp/no-dupe-characters-character-class\n /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n // Regex pattern:\n // There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n // classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n // with the only syntax, so we have to define 2 different regex patterns.\n /\\//.source +\n '(?:' +\n /(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/\n .source +\n '|' +\n // `v` flag syntax. This supports 3 levels of nested character classes.\n /(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/\n .source +\n ')' +\n // lookahead\n /(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/\n .source\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n 'regex-source': {\n pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n lookbehind: true,\n alias: 'language-regex',\n inside: Prism.languages.regex\n },\n 'regex-delimiter': /^\\/|\\/$/,\n 'regex-flags': /^[a-z]+$/\n }\n },\n // This must be declared before keyword because we use \"function\" inside the look-forward\n 'function-variable': {\n pattern:\n /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n alias: 'function'\n },\n parameter: [\n {\n pattern:\n /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n {\n pattern:\n /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n {\n pattern:\n /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n {\n pattern:\n /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }\n ],\n constant: /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n })\n Prism.languages.insertBefore('javascript', 'string', {\n hashbang: {\n pattern: /^#!.*/,\n greedy: true,\n alias: 'comment'\n },\n 'template-string': {\n pattern:\n /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n interpolation: {\n pattern:\n /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\$\\{|\\}$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.javascript\n }\n },\n string: /[\\s\\S]+/\n }\n },\n 'string-property': {\n pattern:\n /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n lookbehind: true,\n greedy: true,\n alias: 'property'\n }\n })\n Prism.languages.insertBefore('javascript', 'operator', {\n 'literal-property': {\n pattern:\n /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n lookbehind: true,\n alias: 'property'\n }\n })\n if (Prism.languages.markup) {\n Prism.languages.markup.tag.addInlined('script', 'javascript')\n\n // add attribute support for all DOM events.\n // https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n Prism.languages.markup.tag.addAttribute(\n /on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/\n .source,\n 'javascript'\n )\n }\n Prism.languages.js = Prism.languages.javascript\n}\n","// @ts-nocheck\njson.displayName = 'json'\njson.aliases = ['webmanifest']\n\n/** @type {import('../core.js').Syntax} */\nexport default function json(Prism) {\n // https://www.json.org/json-en.html\n Prism.languages.json = {\n property: {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n lookbehind: true,\n greedy: true\n },\n string: {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n lookbehind: true,\n greedy: true\n },\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n punctuation: /[{}[\\],]/,\n operator: /:/,\n boolean: /\\b(?:false|true)\\b/,\n null: {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n }\n }\n Prism.languages.webmanifest = Prism.languages.json\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nkotlin.displayName = 'kotlin'\nkotlin.aliases = ['kt', 'kts']\n\n/** @type {import('../core.js').Syntax} */\nexport default function kotlin(Prism) {\n Prism.register(refractorClike)\n ;(function (Prism) {\n Prism.languages.kotlin = Prism.languages.extend('clike', {\n keyword: {\n // The lookbehind prevents wrong highlighting of e.g. kotlin.properties.get\n pattern:\n /(^|[^.])\\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\\b/,\n lookbehind: true\n },\n function: [\n {\n pattern: /(?:`[^\\r\\n`]+`|\\b\\w+)(?=\\s*\\()/,\n greedy: true\n },\n {\n pattern: /(\\.)(?:`[^\\r\\n`]+`|\\w+)(?=\\s*\\{)/,\n lookbehind: true,\n greedy: true\n }\n ],\n number:\n /\\b(?:0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?[fFL]?)\\b/,\n operator:\n /\\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\\/*%<>]=?|[?:]:?|\\.\\.|&&|\\|\\||\\b(?:and|inv|or|shl|shr|ushr|xor)\\b/\n })\n delete Prism.languages.kotlin['class-name']\n var interpolationInside = {\n 'interpolation-punctuation': {\n pattern: /^\\$\\{?|\\}$/,\n alias: 'punctuation'\n },\n expression: {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages.kotlin\n }\n }\n Prism.languages.insertBefore('kotlin', 'string', {\n // https://kotlinlang.org/spec/expressions.html#string-interpolation-expressions\n 'string-literal': [\n {\n pattern: /\"\"\"(?:[^$]|\\$(?:(?!\\{)|\\{[^{}]*\\}))*?\"\"\"/,\n alias: 'multiline',\n inside: {\n interpolation: {\n pattern: /\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i,\n inside: interpolationInside\n },\n string: /[\\s\\S]+/\n }\n },\n {\n pattern: /\"(?:[^\"\\\\\\r\\n$]|\\\\.|\\$(?:(?!\\{)|\\{[^{}]*\\}))*\"/,\n alias: 'singleline',\n inside: {\n interpolation: {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i,\n lookbehind: true,\n inside: interpolationInside\n },\n string: /[\\s\\S]+/\n }\n }\n ],\n char: {\n // https://kotlinlang.org/spec/expressions.html#character-literals\n pattern: /'(?:[^'\\\\\\r\\n]|\\\\(?:.|u[a-fA-F0-9]{0,4}))'/,\n greedy: true\n }\n })\n delete Prism.languages.kotlin['string']\n Prism.languages.insertBefore('kotlin', 'keyword', {\n annotation: {\n pattern: /\\B@(?:\\w+:)?(?:[A-Z]\\w*|\\[[^\\]]+\\])/,\n alias: 'builtin'\n }\n })\n Prism.languages.insertBefore('kotlin', 'function', {\n label: {\n pattern: /\\b\\w+@|@\\w+\\b/,\n alias: 'symbol'\n }\n })\n Prism.languages.kt = Prism.languages.kotlin\n Prism.languages.kts = Prism.languages.kotlin\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorCss from './css.js'\nless.displayName = 'less'\nless.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function less(Prism) {\n Prism.register(refractorCss)\n /* FIXME :\n:extend() is not handled specifically : its highlighting is buggy.\nMixin usage must be inside a ruleset to be highlighted.\nAt-rules (e.g. import) containing interpolations are buggy.\nDetached rulesets are highlighted as at-rules.\nA comment before a mixin usage prevents the latter to be properly highlighted.\n*/\n\n Prism.languages.less = Prism.languages.extend('css', {\n comment: [\n /\\/\\*[\\s\\S]*?\\*\\//,\n {\n pattern: /(^|[^\\\\])\\/\\/.*/,\n lookbehind: true\n }\n ],\n atrule: {\n pattern:\n /@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n punctuation: /[:()]/\n }\n },\n // selectors and mixins are considered the same\n selector: {\n pattern:\n /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n inside: {\n // mixin parameters\n variable: /@+[\\w-]+/\n }\n },\n property: /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/,\n operator: /[+\\-*\\/]/\n })\n Prism.languages.insertBefore('less', 'property', {\n variable: [\n // Variable declaration (the colon must be consumed!)\n {\n pattern: /@[\\w-]+\\s*:/,\n inside: {\n punctuation: /:/\n }\n },\n // Variable usage\n /@@?[\\w-]+/\n ],\n 'mixin-usage': {\n pattern: /([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,\n lookbehind: true,\n alias: 'function'\n }\n })\n}\n","// @ts-nocheck\nlua.displayName = 'lua'\nlua.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function lua(Prism) {\n Prism.languages.lua = {\n comment: /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n // \\z may be used to skip the following space\n string: {\n pattern:\n /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[^z]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n greedy: true\n },\n number:\n /\\b0x[a-f\\d]+(?:\\.[a-f\\d]*)?(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|(?:\\.\\d*)?(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n keyword:\n /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n function: /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n operator: [\n /[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n {\n // Match \"..\" but don't break \"...\"\n pattern: /(^|[^.])\\.\\.(?!\\.)/,\n lookbehind: true\n }\n ],\n punctuation: /[\\[\\](){},;]|\\.+|:+/\n }\n}\n","// @ts-nocheck\nmakefile.displayName = 'makefile'\nmakefile.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function makefile(Prism) {\n Prism.languages.makefile = {\n comment: {\n pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n lookbehind: true\n },\n string: {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n 'builtin-target': {\n pattern: /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n alias: 'builtin'\n },\n target: {\n pattern: /^(?:[^:=\\s]|[ \\t]+(?![\\s:]))+(?=\\s*:(?!=))/m,\n alias: 'symbol',\n inside: {\n variable: /\\$+(?:(?!\\$)[^(){}:#=\\s]+|(?=[({]))/\n }\n },\n variable: /\\$+(?:(?!\\$)[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n // Directives\n keyword:\n /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n function: {\n pattern:\n /(\\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \\t])/,\n lookbehind: true\n },\n operator: /(?:::|[?:+!])?=|[|@]/,\n punctuation: /[:;(){}]/\n }\n}\n","// @ts-nocheck\nyaml.displayName = 'yaml'\nyaml.aliases = ['yml']\n\n/** @type {import('../core.js').Syntax} */\nexport default function yaml(Prism) {\n ;(function (Prism) {\n // https://yaml.org/spec/1.2/spec.html#c-ns-anchor-property\n // https://yaml.org/spec/1.2/spec.html#c-ns-alias-node\n var anchorOrAlias = /[*&][^\\s[\\]{},]+/\n // https://yaml.org/spec/1.2/spec.html#c-ns-tag-property\n var tag =\n /!(?:<[\\w\\-%#;/?:@&=+$,.!~*'()[\\]]+>|(?:[a-zA-Z\\d-]*!)?[\\w\\-%#;/?:@&=+$.~*'()]+)?/\n // https://yaml.org/spec/1.2/spec.html#c-ns-properties(n,c)\n var properties =\n '(?:' +\n tag.source +\n '(?:[ \\t]+' +\n anchorOrAlias.source +\n ')?|' +\n anchorOrAlias.source +\n '(?:[ \\t]+' +\n tag.source +\n ')?)'\n // https://yaml.org/spec/1.2/spec.html#ns-plain(n,c)\n // This is a simplified version that doesn't support \"#\" and multiline keys\n // All these long scarry character classes are simplified versions of YAML's characters\n var plainKey =\n /(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ \\t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(\n /<PLAIN>/g,\n function () {\n return /[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]/\n .source\n }\n )\n var string = /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/.source\n\n /**\n *\n * @param {string} value\n * @param {string} [flags]\n * @returns {RegExp}\n */\n function createValuePattern(value, flags) {\n flags = (flags || '').replace(/m/g, '') + 'm' // add m flag\n var pattern =\n /([:\\-,[{]\\s*(?:\\s<<prop>>[ \\t]+)?)(?:<<value>>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))/.source\n .replace(/<<prop>>/g, function () {\n return properties\n })\n .replace(/<<value>>/g, function () {\n return value\n })\n return RegExp(pattern, flags)\n }\n Prism.languages.yaml = {\n scalar: {\n pattern: RegExp(\n /([\\-:]\\s*(?:\\s<<prop>>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)/.source.replace(\n /<<prop>>/g,\n function () {\n return properties\n }\n )\n ),\n lookbehind: true,\n alias: 'string'\n },\n comment: /#.*/,\n key: {\n pattern: RegExp(\n /((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<<prop>>[ \\t]+)?)<<key>>(?=\\s*:\\s)/.source\n .replace(/<<prop>>/g, function () {\n return properties\n })\n .replace(/<<key>>/g, function () {\n return '(?:' + plainKey + '|' + string + ')'\n })\n ),\n lookbehind: true,\n greedy: true,\n alias: 'atrule'\n },\n directive: {\n pattern: /(^[ \\t]*)%.+/m,\n lookbehind: true,\n alias: 'important'\n },\n datetime: {\n pattern: createValuePattern(\n /\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?/\n .source\n ),\n lookbehind: true,\n alias: 'number'\n },\n boolean: {\n pattern: createValuePattern(/false|true/.source, 'i'),\n lookbehind: true,\n alias: 'important'\n },\n null: {\n pattern: createValuePattern(/null|~/.source, 'i'),\n lookbehind: true,\n alias: 'important'\n },\n string: {\n pattern: createValuePattern(string),\n lookbehind: true,\n greedy: true\n },\n number: {\n pattern: createValuePattern(\n /[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)/\n .source,\n 'i'\n ),\n lookbehind: true\n },\n tag: tag,\n important: anchorOrAlias,\n punctuation: /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n }\n Prism.languages.yml = Prism.languages.yaml\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkup from './markup.js'\nmarkdown.displayName = 'markdown'\nmarkdown.aliases = ['md']\n\n/** @type {import('../core.js').Syntax} */\nexport default function markdown(Prism) {\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n // Allow only one line break\n var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))/.source\n\n /**\n * This function is intended for the creation of the bold or italic pattern.\n *\n * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n *\n * _Note:_ Keep in mind that this adds a capturing group.\n *\n * @param {string} pattern\n * @returns {RegExp}\n */\n function createInline(pattern) {\n pattern = pattern.replace(/<inner>/g, function () {\n return inner\n })\n return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')')\n }\n var tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/\n .source\n var tableRow =\n /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(\n /__/g,\n function () {\n return tableCell\n }\n )\n var tableLine =\n /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/\n .source\n Prism.languages.markdown = Prism.languages.extend('markup', {})\n Prism.languages.insertBefore('markdown', 'prolog', {\n 'front-matter-block': {\n pattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n lookbehind: true,\n greedy: true,\n inside: {\n punctuation: /^---|---$/,\n 'front-matter': {\n pattern: /\\S+(?:\\s+\\S+)*/,\n alias: ['yaml', 'language-yaml'],\n inside: Prism.languages.yaml\n }\n }\n },\n blockquote: {\n // > ...\n pattern: /^>(?:[\\t ]*>)*/m,\n alias: 'punctuation'\n },\n table: {\n pattern: RegExp(\n '^' + tableRow + tableLine + '(?:' + tableRow + ')*',\n 'm'\n ),\n inside: {\n 'table-data-rows': {\n pattern: RegExp(\n '^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'\n ),\n lookbehind: true,\n inside: {\n 'table-data': {\n pattern: RegExp(tableCell),\n inside: Prism.languages.markdown\n },\n punctuation: /\\|/\n }\n },\n 'table-line': {\n pattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n lookbehind: true,\n inside: {\n punctuation: /\\||:?-{3,}:?/\n }\n },\n 'table-header-row': {\n pattern: RegExp('^' + tableRow + '$'),\n inside: {\n 'table-header': {\n pattern: RegExp(tableCell),\n alias: 'important',\n inside: Prism.languages.markdown\n },\n punctuation: /\\|/\n }\n }\n }\n },\n code: [\n {\n // Prefixed by 4 spaces or 1 tab and preceded by an empty line\n pattern:\n /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n lookbehind: true,\n alias: 'keyword'\n },\n {\n // ```optional language\n // code block\n // ```\n pattern: /^```[\\s\\S]*?^```$/m,\n greedy: true,\n inside: {\n 'code-block': {\n pattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n lookbehind: true\n },\n 'code-language': {\n pattern: /^(```).+/,\n lookbehind: true\n },\n punctuation: /```/\n }\n }\n ],\n title: [\n {\n // title 1\n // =======\n\n // title 2\n // -------\n pattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n alias: 'important',\n inside: {\n punctuation: /==+$|--+$/\n }\n },\n {\n // # title 1\n // ###### title 6\n pattern: /(^\\s*)#.+/m,\n lookbehind: true,\n alias: 'important',\n inside: {\n punctuation: /^#+|#+$/\n }\n }\n ],\n hr: {\n // ***\n // ---\n // * * *\n // -----------\n pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n list: {\n // * item\n // + item\n // - item\n // 1. item\n pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'url-reference': {\n // [id]: http://example.com \"Optional title\"\n // [id]: http://example.com 'Optional title'\n // [id]: http://example.com (Optional title)\n // [id]: <http://example.com> \"Optional title\"\n pattern:\n /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n inside: {\n variable: {\n pattern: /^(!?\\[)[^\\]]+/,\n lookbehind: true\n },\n string:\n /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n punctuation: /^[\\[\\]!:]|[<>]/\n },\n alias: 'url'\n },\n bold: {\n // **strong**\n // __strong__\n\n // allow one nested instance of italic text using the same delimiter\n pattern: createInline(\n /\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*/\n .source\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n content: {\n pattern: /(^..)[\\s\\S]+(?=..$)/,\n lookbehind: true,\n inside: {} // see below\n },\n\n punctuation: /\\*\\*|__/\n }\n },\n italic: {\n // *em*\n // _em_\n\n // allow one nested instance of bold text using the same delimiter\n pattern: createInline(\n /\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*/\n .source\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n content: {\n pattern: /(^.)[\\s\\S]+(?=.$)/,\n lookbehind: true,\n inside: {} // see below\n },\n\n punctuation: /[*_]/\n }\n },\n strike: {\n // ~~strike through~~\n // ~strike~\n // eslint-disable-next-line regexp/strict\n pattern: createInline(/(~~?)(?:(?!~)<inner>)+\\2/.source),\n lookbehind: true,\n greedy: true,\n inside: {\n content: {\n pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: {} // see below\n },\n\n punctuation: /~~?/\n }\n },\n 'code-snippet': {\n // `code`\n // ``code``\n pattern:\n /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,\n lookbehind: true,\n greedy: true,\n alias: ['code', 'keyword']\n },\n url: {\n // [example](http://example.com \"Optional title\")\n // [example][id]\n // [example] [id]\n pattern: createInline(\n /!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])/\n .source\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n operator: /^!/,\n content: {\n pattern: /(^\\[)[^\\]]+(?=\\])/,\n lookbehind: true,\n inside: {} // see below\n },\n\n variable: {\n pattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n lookbehind: true\n },\n url: {\n pattern: /(^\\]\\()[^\\s)]+/,\n lookbehind: true\n },\n string: {\n pattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n lookbehind: true\n }\n }\n }\n })\n ;['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n ;['url', 'bold', 'italic', 'strike', 'code-snippet'].forEach(function (\n inside\n ) {\n if (token !== inside) {\n Prism.languages.markdown[token].inside.content.inside[inside] =\n Prism.languages.markdown[inside]\n }\n })\n })\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'markdown' && env.language !== 'md') {\n return\n }\n function walkTokens(tokens) {\n if (!tokens || typeof tokens === 'string') {\n return\n }\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i]\n if (token.type !== 'code') {\n walkTokens(token.content)\n continue\n }\n\n /*\n * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n * is optional. But the grammar is defined so that there is only one case we have to handle:\n *\n * token.content = [\n * <span class=\"punctuation\">```</span>,\n * <span class=\"code-language\">xxxx</span>,\n * '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n * <span class=\"code-block\">...</span>,\n * '\\n', // exactly one new lines again\n * <span class=\"punctuation\">```</span>\n * ];\n */\n\n var codeLang = token.content[1]\n var codeBlock = token.content[3]\n if (\n codeLang &&\n codeBlock &&\n codeLang.type === 'code-language' &&\n codeBlock.type === 'code-block' &&\n typeof codeLang.content === 'string'\n ) {\n // this might be a language that Prism does not support\n\n // do some replacements to support C++, C#, and F#\n var lang = codeLang.content\n .replace(/\\b#/g, 'sharp')\n .replace(/\\b\\+\\+/g, 'pp')\n // only use the first word\n lang = (/[a-z][\\w-]*/i.exec(lang) || [''])[0].toLowerCase()\n var alias = 'language-' + lang\n\n // add alias\n if (!codeBlock.alias) {\n codeBlock.alias = [alias]\n } else if (typeof codeBlock.alias === 'string') {\n codeBlock.alias = [codeBlock.alias, alias]\n } else {\n codeBlock.alias.push(alias)\n }\n }\n }\n }\n walkTokens(env.tokens)\n })\n Prism.hooks.add('wrap', function (env) {\n if (env.type !== 'code-block') {\n return\n }\n var codeLang = ''\n for (var i = 0, l = env.classes.length; i < l; i++) {\n var cls = env.classes[i]\n var match = /language-(.+)/.exec(cls)\n if (match) {\n codeLang = match[1]\n break\n }\n }\n var grammar = Prism.languages[codeLang]\n if (!grammar) {\n if (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n var id =\n 'md-' +\n new Date().valueOf() +\n '-' +\n Math.floor(Math.random() * 1e16)\n env.attributes['id'] = id\n Prism.plugins.autoloader.loadLanguages(codeLang, function () {\n var ele = document.getElementById(id)\n if (ele) {\n ele.innerHTML = Prism.highlight(\n ele.textContent,\n Prism.languages[codeLang],\n codeLang\n )\n }\n })\n }\n } else {\n env.content = Prism.highlight(env.content.value, grammar, codeLang)\n }\n })\n var tagPattern = RegExp(Prism.languages.markup.tag.pattern.source, 'gi')\n\n /**\n * A list of known entity names.\n *\n * This will always be incomplete to save space. The current list is the one used by lowdash's unescape function.\n *\n * @see {@link https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/unescape.js#L2}\n */\n var KNOWN_ENTITY_NAMES = {\n amp: '&',\n lt: '<',\n gt: '>',\n quot: '\"'\n }\n\n // IE 11 doesn't support `String.fromCodePoint`\n var fromCodePoint = String.fromCodePoint || String.fromCharCode\n\n /**\n * Returns the text content of a given HTML source code string.\n *\n * @param {string} html\n * @returns {string}\n */\n function textContent(html) {\n // remove all tags\n var text = html.replace(tagPattern, '')\n\n // decode known entities\n text = text.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function (m, code) {\n code = code.toLowerCase()\n if (code[0] === '#') {\n var value\n if (code[1] === 'x') {\n value = parseInt(code.slice(2), 16)\n } else {\n value = Number(code.slice(1))\n }\n return fromCodePoint(value)\n } else {\n var known = KNOWN_ENTITY_NAMES[code]\n if (known) {\n return known\n }\n\n // unable to decode\n return m\n }\n })\n return text\n }\n Prism.languages.md = Prism.languages.markdown\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorC from './c.js'\nobjectivec.displayName = 'objectivec'\nobjectivec.aliases = ['objc']\n\n/** @type {import('../core.js').Syntax} */\nexport default function objectivec(Prism) {\n Prism.register(refractorC)\n Prism.languages.objectivec = Prism.languages.extend('c', {\n string: {\n pattern: /@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n greedy: true\n },\n keyword:\n /\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n operator: /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n })\n delete Prism.languages.objectivec['class-name']\n Prism.languages.objc = Prism.languages.objectivec\n}\n","// @ts-nocheck\nperl.displayName = 'perl'\nperl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function perl(Prism) {\n ;(function (Prism) {\n var brackets =\n /(?:\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}|\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)/\n .source\n Prism.languages.perl = {\n comment: [\n {\n // POD\n pattern: /(^\\s*)=\\w[\\s\\S]*?=cut.*/m,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^\\\\$])#.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n // TODO Could be nice to handle Heredoc too.\n string: [\n {\n pattern: RegExp(\n /\\b(?:q|qq|qw|qx)(?![a-zA-Z0-9])\\s*/.source +\n '(?:' +\n [\n // q/.../\n /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n // q a...a\n // eslint-disable-next-line regexp/strict\n /([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2/.source,\n // q(...)\n // q{...}\n // q[...]\n // q<...>\n brackets\n ].join('|') +\n ')'\n ),\n greedy: true\n },\n // \"...\", `...`\n {\n pattern: /(\"|`)(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n greedy: true\n },\n // '...'\n // FIXME Multi-line single-quoted strings are not supported as they would break variables containing '\n {\n pattern: /'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n greedy: true\n }\n ],\n regex: [\n {\n pattern: RegExp(\n /\\b(?:m|qr)(?![a-zA-Z0-9])\\s*/.source +\n '(?:' +\n [\n // m/.../\n /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n // m a...a\n // eslint-disable-next-line regexp/strict\n /([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2/.source,\n // m(...)\n // m{...}\n // m[...]\n // m<...>\n brackets\n ].join('|') +\n ')' +\n /[msixpodualngc]*/.source\n ),\n greedy: true\n },\n // The lookbehinds prevent -s from breaking\n {\n pattern: RegExp(\n /(^|[^-])\\b(?:s|tr|y)(?![a-zA-Z0-9])\\s*/.source +\n '(?:' +\n [\n // s/.../.../\n // eslint-disable-next-line regexp/strict\n /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2/\n .source,\n // s a...a...a\n // eslint-disable-next-line regexp/strict\n /([a-zA-Z0-9])(?:(?!\\3)[^\\\\]|\\\\[\\s\\S])*\\3(?:(?!\\3)[^\\\\]|\\\\[\\s\\S])*\\3/\n .source,\n // s(...)(...)\n // s{...}{...}\n // s[...][...]\n // s<...><...>\n // s(...)[...]\n brackets + /\\s*/.source + brackets\n ].join('|') +\n ')' +\n /[msixpodualngcer]*/.source\n ),\n lookbehind: true,\n greedy: true\n },\n // /.../\n // The look-ahead tries to prevent two divisions on\n // the same line from being highlighted as regex.\n // This does not support multi-line regex.\n {\n pattern:\n /\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|x|xor)\\b))/,\n greedy: true\n }\n ],\n // FIXME Not sure about the handling of ::, ', and #\n variable: [\n // ${^POSTMATCH}\n /[&*$@%]\\{\\^[A-Z]+\\}/,\n // $^V\n /[&*$@%]\\^[A-Z_]/,\n // ${...}\n /[&*$@%]#?(?=\\{)/,\n // $foo\n /[&*$@%]#?(?:(?:::)*'?(?!\\d)[\\w$]+(?![\\w$]))+(?:::)*/,\n // $1\n /[&*$@%]\\d+/,\n // $_, @_, %!\n // The negative lookahead prevents from breaking the %= operator\n /(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n ],\n filehandle: {\n // <>, <FOO>, _\n pattern: /<(?![<=])\\S*?>|\\b_\\b/,\n alias: 'symbol'\n },\n 'v-string': {\n // v1.2, 1.2.3\n pattern: /v\\d+(?:\\.\\d+)*|\\d+(?:\\.\\d+){2,}/,\n alias: 'string'\n },\n function: {\n pattern: /(\\bsub[ \\t]+)\\w+/,\n lookbehind: true\n },\n keyword:\n /\\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n number:\n /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)\\b/,\n operator:\n /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\\b/,\n punctuation: /[{}[\\];(),:]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkup from './markup.js'\nmarkupTemplating.displayName = 'markup-templating'\nmarkupTemplating.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function markupTemplating(Prism) {\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n /**\n * Returns the placeholder for the given language id and index.\n *\n * @param {string} language\n * @param {string|number} index\n * @returns {string}\n */\n function getPlaceholder(language, index) {\n return '___' + language.toUpperCase() + index + '___'\n }\n Object.defineProperties((Prism.languages['markup-templating'] = {}), {\n buildPlaceholders: {\n /**\n * Tokenize all inline templating expressions matching `placeholderPattern`.\n *\n * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns\n * `true` will be replaced.\n *\n * @param {object} env The environment of the `before-tokenize` hook.\n * @param {string} language The language id.\n * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.\n * @param {(match: string) => boolean} [replaceFilter]\n */\n value: function (env, language, placeholderPattern, replaceFilter) {\n if (env.language !== language) {\n return\n }\n var tokenStack = (env.tokenStack = [])\n env.code = env.code.replace(placeholderPattern, function (match) {\n if (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n return match\n }\n var i = tokenStack.length\n var placeholder\n\n // Check for existing strings\n while (\n env.code.indexOf((placeholder = getPlaceholder(language, i))) !==\n -1\n ) {\n ++i\n }\n\n // Create a sparse array\n tokenStack[i] = match\n return placeholder\n })\n\n // Switch the grammar to markup\n env.grammar = Prism.languages.markup\n }\n },\n tokenizePlaceholders: {\n /**\n * Replace placeholders with proper tokens after tokenizing.\n *\n * @param {object} env The environment of the `after-tokenize` hook.\n * @param {string} language The language id.\n */\n value: function (env, language) {\n if (env.language !== language || !env.tokenStack) {\n return\n }\n\n // Switch the grammar back\n env.grammar = Prism.languages[language]\n var j = 0\n var keys = Object.keys(env.tokenStack)\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n // all placeholders are replaced already\n if (j >= keys.length) {\n break\n }\n var token = tokens[i]\n if (\n typeof token === 'string' ||\n (token.content && typeof token.content === 'string')\n ) {\n var k = keys[j]\n var t = env.tokenStack[k]\n var s = typeof token === 'string' ? token : token.content\n var placeholder = getPlaceholder(language, k)\n var index = s.indexOf(placeholder)\n if (index > -1) {\n ++j\n var before = s.substring(0, index)\n var middle = new Prism.Token(\n language,\n Prism.tokenize(t, env.grammar),\n 'language-' + language,\n t\n )\n var after = s.substring(index + placeholder.length)\n var replacement = []\n if (before) {\n replacement.push.apply(replacement, walkTokens([before]))\n }\n replacement.push(middle)\n if (after) {\n replacement.push.apply(replacement, walkTokens([after]))\n }\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement))\n } else {\n token.content = replacement\n }\n }\n } else if (\n token.content /* && typeof token.content !== 'string' */\n ) {\n walkTokens(token.content)\n }\n }\n return tokens\n }\n walkTokens(env.tokens)\n }\n }\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkupTemplating from './markup-templating.js'\nphp.displayName = 'php'\nphp.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function php(Prism) {\n Prism.register(refractorMarkupTemplating)\n /**\n * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n * Modified by Miles Johnson: http://milesj.me\n * Rewritten by Tom Pavelec\n *\n * Supports PHP 5.3 - 8.0\n */\n ;(function (Prism) {\n var comment = /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*|#(?!\\[).*/\n var constant = [\n {\n pattern: /\\b(?:false|true)\\b/i,\n alias: 'boolean'\n },\n {\n pattern: /(::\\s*)\\b[a-z_]\\w*\\b(?!\\s*\\()/i,\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\b(?:case|const)\\s+)\\b[a-z_]\\w*(?=\\s*[;=])/i,\n greedy: true,\n lookbehind: true\n },\n /\\b(?:null)\\b/i,\n /\\b[A-Z_][A-Z0-9_]*\\b(?!\\s*\\()/\n ]\n var number =\n /\\b0b[01]+(?:_[01]+)*\\b|\\b0o[0-7]+(?:_[0-7]+)*\\b|\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b|(?:\\b\\d+(?:_\\d+)*\\.?(?:\\d+(?:_\\d+)*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i\n var operator =\n /<?=>|\\?\\?=?|\\.{3}|\\??->|[!=]=?=?|::|\\*\\*=?|--|\\+\\+|&&|\\|\\||<<|>>|[?~]|[/^|%*&<>.+-]=?/\n var punctuation = /[{}\\[\\](),:;]/\n Prism.languages.php = {\n delimiter: {\n pattern: /\\?>$|^<\\?(?:php(?=\\s)|=)?/i,\n alias: 'important'\n },\n comment: comment,\n variable: /\\$+(?:\\w+\\b|(?=\\{))/,\n package: {\n pattern:\n /(namespace\\s+|use\\s+(?:function\\s+)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n lookbehind: true,\n inside: {\n punctuation: /\\\\/\n }\n },\n 'class-name-definition': {\n pattern: /(\\b(?:class|enum|interface|trait)\\s+)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n lookbehind: true,\n alias: 'class-name'\n },\n 'function-definition': {\n pattern: /(\\bfunction\\s+)[a-z_]\\w*(?=\\s*\\()/i,\n lookbehind: true,\n alias: 'function'\n },\n keyword: [\n {\n pattern:\n /(\\(\\s*)\\b(?:array|bool|boolean|float|int|integer|object|string)\\b(?=\\s*\\))/i,\n alias: 'type-casting',\n greedy: true,\n lookbehind: true\n },\n {\n pattern:\n /([(,?]\\s*)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|object|self|static|string)\\b(?=\\s*\\$)/i,\n alias: 'type-hint',\n greedy: true,\n lookbehind: true\n },\n {\n pattern:\n /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|never|object|self|static|string|void)\\b/i,\n alias: 'return-type',\n greedy: true,\n lookbehind: true\n },\n {\n pattern:\n /\\b(?:array(?!\\s*\\()|bool|float|int|iterable|mixed|object|string|void)\\b/i,\n alias: 'type-declaration',\n greedy: true\n },\n {\n pattern: /(\\|\\s*)(?:false|null)\\b|\\b(?:false|null)(?=\\s*\\|)/i,\n alias: 'type-declaration',\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /\\b(?:parent|self|static)(?=\\s*::)/i,\n alias: 'static-context',\n greedy: true\n },\n {\n // yield from\n pattern: /(\\byield\\s+)from\\b/i,\n lookbehind: true\n },\n // `class` is always a keyword unlike other keywords\n /\\bclass\\b/i,\n {\n // https://www.php.net/manual/en/reserved.keywords.php\n //\n // keywords cannot be preceded by \"->\"\n // the complex lookbehind means `(?<!(?:->|::)\\s*)`\n pattern:\n /((?:^|[^\\s>:]|(?:^|[^-])>|(?:^|[^:]):)\\s*)\\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\\b/i,\n lookbehind: true\n }\n ],\n 'argument-name': {\n pattern: /([(,]\\s*)\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n lookbehind: true\n },\n 'class-name': [\n {\n pattern:\n /(\\b(?:extends|implements|instanceof|new(?!\\s+self|\\s+static))\\s+|\\bcatch\\s*\\()\\b[a-z_]\\w*(?!\\\\)\\b/i,\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\|\\s*)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /\\b[a-z_]\\w*(?!\\\\)\\b(?=\\s*\\|)/i,\n greedy: true\n },\n {\n pattern: /(\\|\\s*)(?:\\\\?\\b[a-z_]\\w*)+\\b/i,\n alias: 'class-name-fully-qualified',\n greedy: true,\n lookbehind: true,\n inside: {\n punctuation: /\\\\/\n }\n },\n {\n pattern: /(?:\\\\?\\b[a-z_]\\w*)+\\b(?=\\s*\\|)/i,\n alias: 'class-name-fully-qualified',\n greedy: true,\n inside: {\n punctuation: /\\\\/\n }\n },\n {\n pattern:\n /(\\b(?:extends|implements|instanceof|new(?!\\s+self\\b|\\s+static\\b))\\s+|\\bcatch\\s*\\()(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n alias: 'class-name-fully-qualified',\n greedy: true,\n lookbehind: true,\n inside: {\n punctuation: /\\\\/\n }\n },\n {\n pattern: /\\b[a-z_]\\w*(?=\\s*\\$)/i,\n alias: 'type-declaration',\n greedy: true\n },\n {\n pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n alias: ['class-name-fully-qualified', 'type-declaration'],\n greedy: true,\n inside: {\n punctuation: /\\\\/\n }\n },\n {\n pattern: /\\b[a-z_]\\w*(?=\\s*::)/i,\n alias: 'static-context',\n greedy: true\n },\n {\n pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*::)/i,\n alias: ['class-name-fully-qualified', 'static-context'],\n greedy: true,\n inside: {\n punctuation: /\\\\/\n }\n },\n {\n pattern: /([(,?]\\s*)[a-z_]\\w*(?=\\s*\\$)/i,\n alias: 'type-hint',\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([(,?]\\s*)(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n alias: ['class-name-fully-qualified', 'type-hint'],\n greedy: true,\n lookbehind: true,\n inside: {\n punctuation: /\\\\/\n }\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n alias: 'return-type',\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n alias: ['class-name-fully-qualified', 'return-type'],\n greedy: true,\n lookbehind: true,\n inside: {\n punctuation: /\\\\/\n }\n }\n ],\n constant: constant,\n function: {\n pattern: /(^|[^\\\\\\w])\\\\?[a-z_](?:[\\w\\\\]*\\w)?(?=\\s*\\()/i,\n lookbehind: true,\n inside: {\n punctuation: /\\\\/\n }\n },\n property: {\n pattern: /(->\\s*)\\w+/,\n lookbehind: true\n },\n number: number,\n operator: operator,\n punctuation: punctuation\n }\n var string_interpolation = {\n pattern:\n /\\{\\$(?:\\{(?:\\{[^{}]+\\}|[^{}]+)\\}|[^{}])+\\}|(^|[^\\\\{])\\$+(?:\\w+(?:\\[[^\\r\\n\\[\\]]+\\]|->\\w+)?)/,\n lookbehind: true,\n inside: Prism.languages.php\n }\n var string = [\n {\n pattern: /<<<'([^']+)'[\\r\\n](?:.*[\\r\\n])*?\\1;/,\n alias: 'nowdoc-string',\n greedy: true,\n inside: {\n delimiter: {\n pattern: /^<<<'[^']+'|[a-z_]\\w*;$/i,\n alias: 'symbol',\n inside: {\n punctuation: /^<<<'?|[';]$/\n }\n }\n }\n },\n {\n pattern:\n /<<<(?:\"([^\"]+)\"[\\r\\n](?:.*[\\r\\n])*?\\1;|([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\2;)/i,\n alias: 'heredoc-string',\n greedy: true,\n inside: {\n delimiter: {\n pattern: /^<<<(?:\"[^\"]+\"|[a-z_]\\w*)|[a-z_]\\w*;$/i,\n alias: 'symbol',\n inside: {\n punctuation: /^<<<\"?|[\";]$/\n }\n },\n interpolation: string_interpolation\n }\n },\n {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n alias: 'backtick-quoted-string',\n greedy: true\n },\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n alias: 'single-quoted-string',\n greedy: true\n },\n {\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n alias: 'double-quoted-string',\n greedy: true,\n inside: {\n interpolation: string_interpolation\n }\n }\n ]\n Prism.languages.insertBefore('php', 'variable', {\n string: string,\n attribute: {\n pattern:\n /#\\[(?:[^\"'\\/#]|\\/(?![*/])|\\/\\/.*$|#(?!\\[).*$|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*')+\\](?=\\s*[a-z$#])/im,\n greedy: true,\n inside: {\n 'attribute-content': {\n pattern: /^(#\\[)[\\s\\S]+(?=\\]$)/,\n lookbehind: true,\n // inside can appear subset of php\n inside: {\n comment: comment,\n string: string,\n 'attribute-class-name': [\n {\n pattern: /([^:]|^)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n alias: 'class-name',\n greedy: true,\n lookbehind: true\n },\n {\n pattern: /([^:]|^)(?:\\\\?\\b[a-z_]\\w*)+/i,\n alias: ['class-name', 'class-name-fully-qualified'],\n greedy: true,\n lookbehind: true,\n inside: {\n punctuation: /\\\\/\n }\n }\n ],\n constant: constant,\n number: number,\n operator: operator,\n punctuation: punctuation\n }\n },\n delimiter: {\n pattern: /^#\\[|\\]$/,\n alias: 'punctuation'\n }\n }\n }\n })\n Prism.hooks.add('before-tokenize', function (env) {\n if (!/<\\?/.test(env.code)) {\n return\n }\n var phpPattern =\n /<\\?(?:[^\"'/#]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|(?:\\/\\/|#(?!\\[))(?:[^?\\n\\r]|\\?(?!>))*(?=$|\\?>|[\\r\\n])|#\\[|\\/\\*(?:[^*]|\\*(?!\\/))*(?:\\*\\/|$))*?(?:\\?>|$)/g\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'php',\n phpPattern\n )\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php')\n })\n })(Prism)\n}\n","// @ts-nocheck\npython.displayName = 'python'\npython.aliases = ['py']\n\n/** @type {import('../core.js').Syntax} */\nexport default function python(Prism) {\n Prism.languages.python = {\n comment: {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true,\n greedy: true\n },\n 'string-interpolation': {\n pattern:\n /(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n greedy: true,\n inside: {\n interpolation: {\n // \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n pattern:\n /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n lookbehind: true,\n inside: {\n 'format-spec': {\n pattern: /(:)[^:(){}]+(?=\\}$)/,\n lookbehind: true\n },\n 'conversion-option': {\n pattern: //,\n alias: 'punctuation'\n },\n rest: null\n }\n },\n string: /[\\s\\S]+/\n }\n },\n 'triple-quoted-string': {\n pattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n greedy: true,\n alias: 'string'\n },\n string: {\n pattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n greedy: true\n },\n function: {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n lookbehind: true\n },\n 'class-name': {\n pattern: /(\\bclass\\s+)\\w+/i,\n lookbehind: true\n },\n decorator: {\n pattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,\n lookbehind: true,\n alias: ['annotation', 'punctuation'],\n inside: {\n punctuation: /\\./\n }\n },\n keyword:\n /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n builtin:\n /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n boolean: /\\b(?:False|None|True)\\b/,\n number:\n /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,\n operator: /[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n punctuation: /[{}[\\];(),.:]/\n }\n Prism.languages.python['string-interpolation'].inside[\n 'interpolation'\n ].inside.rest = Prism.languages.python\n Prism.languages.py = Prism.languages.python\n}\n","// @ts-nocheck\nr.displayName = 'r'\nr.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function r(Prism) {\n Prism.languages.r = {\n comment: /#.*/,\n string: {\n pattern: /(['\"])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n 'percent-operator': {\n // Includes user-defined operators\n // and %%, %*%, %/%, %in%, %o%, %x%\n pattern: /%[^%\\s]*%/,\n alias: 'operator'\n },\n boolean: /\\b(?:FALSE|TRUE)\\b/,\n ellipsis: /\\.\\.(?:\\.|\\d+)/,\n number: [\n /\\b(?:Inf|NaN)\\b/,\n /(?:\\b0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[EePp][+-]?\\d+)?[iL]?/\n ],\n keyword:\n /\\b(?:NA|NA_character_|NA_complex_|NA_integer_|NA_real_|NULL|break|else|for|function|if|in|next|repeat|while)\\b/,\n operator: /->?>?|<(?:=|<?-)?|[>=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n punctuation: /[(){}\\[\\],;]/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nruby.displayName = 'ruby'\nruby.aliases = ['rb']\n\n/** @type {import('../core.js').Syntax} */\nexport default function ruby(Prism) {\n Prism.register(refractorClike)\n /**\n * Original by Samuel Flores\n *\n * Adds the following new token classes:\n * constant, builtin, variable, symbol, regex\n */\n ;(function (Prism) {\n Prism.languages.ruby = Prism.languages.extend('clike', {\n comment: {\n pattern: /#.*|^=begin\\s[\\s\\S]*?^=end/m,\n greedy: true\n },\n 'class-name': {\n pattern:\n /(\\b(?:class|module)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+|\\b[A-Z_]\\w*(?=\\s*\\.\\s*new\\b)/,\n lookbehind: true,\n inside: {\n punctuation: /[.\\\\]/\n }\n },\n keyword:\n /\\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\\b/,\n operator:\n /\\.{2,3}|&\\.|===|<?=>|[!=]?~|(?:&&|\\|\\||<<|>>|\\*\\*|[+\\-*/%<>!^&|=])=?|[?:]/,\n punctuation: /[(){}[\\].,;]/\n })\n Prism.languages.insertBefore('ruby', 'operator', {\n 'double-colon': {\n pattern: /::/,\n alias: 'punctuation'\n }\n })\n var interpolation = {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)#\\{(?:[^{}]|\\{[^{}]*\\})*\\}/,\n lookbehind: true,\n inside: {\n content: {\n pattern: /^(#\\{)[\\s\\S]+(?=\\}$)/,\n lookbehind: true,\n inside: Prism.languages.ruby\n },\n delimiter: {\n pattern: /^#\\{|\\}$/,\n alias: 'punctuation'\n }\n }\n }\n delete Prism.languages.ruby.function\n var percentExpression =\n '(?:' +\n [\n /([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n /\\((?:[^()\\\\]|\\\\[\\s\\S]|\\((?:[^()\\\\]|\\\\[\\s\\S])*\\))*\\)/.source,\n /\\{(?:[^{}\\\\]|\\\\[\\s\\S]|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\})*\\}/.source,\n /\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S]|\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\])*\\]/.source,\n /<(?:[^<>\\\\]|\\\\[\\s\\S]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)*>/.source\n ].join('|') +\n ')'\n var symbolName =\n /(?:\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|(?:\\b[a-zA-Z_]\\w*|[^\\s\\0-\\x7F]+)[?!]?|\\$.)/\n .source\n Prism.languages.insertBefore('ruby', 'keyword', {\n 'regex-literal': [\n {\n pattern: RegExp(\n /%r/.source + percentExpression + /[egimnosux]{0,6}/.source\n ),\n greedy: true,\n inside: {\n interpolation: interpolation,\n regex: /[\\s\\S]+/\n }\n },\n {\n pattern:\n /(^|[^/])\\/(?!\\/)(?:\\[[^\\r\\n\\]]+\\]|\\\\.|[^[/\\\\\\r\\n])+\\/[egimnosux]{0,6}(?=\\s*(?:$|[\\r\\n,.;})#]))/,\n lookbehind: true,\n greedy: true,\n inside: {\n interpolation: interpolation,\n regex: /[\\s\\S]+/\n }\n }\n ],\n variable: /[@$]+[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n symbol: [\n {\n pattern: RegExp(/(^|[^:]):/.source + symbolName),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: RegExp(\n /([\\r\\n{(,][ \\t]*)/.source + symbolName + /(?=:(?!:))/.source\n ),\n lookbehind: true,\n greedy: true\n }\n ],\n 'method-definition': {\n pattern: /(\\bdef\\s+)\\w+(?:\\s*\\.\\s*\\w+)?/,\n lookbehind: true,\n inside: {\n function: /\\b\\w+$/,\n keyword: /^self\\b/,\n 'class-name': /^\\w+/,\n punctuation: /\\./\n }\n }\n })\n Prism.languages.insertBefore('ruby', 'string', {\n 'string-literal': [\n {\n pattern: RegExp(/%[qQiIwWs]?/.source + percentExpression),\n greedy: true,\n inside: {\n interpolation: interpolation,\n string: /[\\s\\S]+/\n }\n },\n {\n pattern:\n /(\"|')(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\#\\r\\n])*\\1/,\n greedy: true,\n inside: {\n interpolation: interpolation,\n string: /[\\s\\S]+/\n }\n },\n {\n pattern: /<<[-~]?([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n alias: 'heredoc-string',\n greedy: true,\n inside: {\n delimiter: {\n pattern: /^<<[-~]?[a-z_]\\w*|\\b[a-z_]\\w*$/i,\n inside: {\n symbol: /\\b\\w+/,\n punctuation: /^<<[-~]?/\n }\n },\n interpolation: interpolation,\n string: /[\\s\\S]+/\n }\n },\n {\n pattern: /<<[-~]?'([a-z_]\\w*)'[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n alias: 'heredoc-string',\n greedy: true,\n inside: {\n delimiter: {\n pattern: /^<<[-~]?'[a-z_]\\w*'|\\b[a-z_]\\w*$/i,\n inside: {\n symbol: /\\b\\w+/,\n punctuation: /^<<[-~]?'|'$/\n }\n },\n string: /[\\s\\S]+/\n }\n }\n ],\n 'command-literal': [\n {\n pattern: RegExp(/%x/.source + percentExpression),\n greedy: true,\n inside: {\n interpolation: interpolation,\n command: {\n pattern: /[\\s\\S]+/,\n alias: 'string'\n }\n }\n },\n {\n pattern: /`(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|[^\\\\`#\\r\\n])*`/,\n greedy: true,\n inside: {\n interpolation: interpolation,\n command: {\n pattern: /[\\s\\S]+/,\n alias: 'string'\n }\n }\n }\n ]\n })\n delete Prism.languages.ruby.string\n Prism.languages.insertBefore('ruby', 'number', {\n builtin:\n /\\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\\b/,\n constant: /\\b[A-Z][A-Z0-9_]*(?:[?!]|\\b)/\n })\n Prism.languages.rb = Prism.languages.ruby\n })(Prism)\n}\n","// @ts-nocheck\nrust.displayName = 'rust'\nrust.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function rust(Prism) {\n ;(function (Prism) {\n var multilineComment = /\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|<self>)*\\*\\//.source\n for (var i = 0; i < 2; i++) {\n // support 4 levels of nested comments\n multilineComment = multilineComment.replace(/<self>/g, function () {\n return multilineComment\n })\n }\n multilineComment = multilineComment.replace(/<self>/g, function () {\n return /[^\\s\\S]/.source\n })\n Prism.languages.rust = {\n comment: [\n {\n pattern: RegExp(/(^|[^\\\\])/.source + multilineComment),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n string: {\n pattern: /b?\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|b?r(#*)\"(?:[^\"]|\"(?!\\1))*\"\\1/,\n greedy: true\n },\n char: {\n pattern:\n /b?'(?:\\\\(?:x[0-7][\\da-fA-F]|u\\{(?:[\\da-fA-F]_*){1,6}\\}|.)|[^\\\\\\r\\n\\t'])'/,\n greedy: true\n },\n attribute: {\n pattern: /#!?\\[(?:[^\\[\\]\"]|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")*\\]/,\n greedy: true,\n alias: 'attr-name',\n inside: {\n string: null // see below\n }\n },\n\n // Closure params should not be confused with bitwise OR |\n 'closure-params': {\n pattern: /([=(,:]\\s*|\\bmove\\s*)\\|[^|]*\\||\\|[^|]*\\|(?=\\s*(?:\\{|->))/,\n lookbehind: true,\n greedy: true,\n inside: {\n 'closure-punctuation': {\n pattern: /^\\||\\|$/,\n alias: 'punctuation'\n },\n rest: null // see below\n }\n },\n\n 'lifetime-annotation': {\n pattern: /'\\w+/,\n alias: 'symbol'\n },\n 'fragment-specifier': {\n pattern: /(\\$\\w+:)[a-z]+/,\n lookbehind: true,\n alias: 'punctuation'\n },\n variable: /\\$\\w+/,\n 'function-definition': {\n pattern: /(\\bfn\\s+)\\w+/,\n lookbehind: true,\n alias: 'function'\n },\n 'type-definition': {\n pattern: /(\\b(?:enum|struct|trait|type|union)\\s+)\\w+/,\n lookbehind: true,\n alias: 'class-name'\n },\n 'module-declaration': [\n {\n pattern: /(\\b(?:crate|mod)\\s+)[a-z][a-z_\\d]*/,\n lookbehind: true,\n alias: 'namespace'\n },\n {\n pattern:\n /(\\b(?:crate|self|super)\\s*)::\\s*[a-z][a-z_\\d]*\\b(?:\\s*::(?:\\s*[a-z][a-z_\\d]*\\s*::)*)?/,\n lookbehind: true,\n alias: 'namespace',\n inside: {\n punctuation: /::/\n }\n }\n ],\n keyword: [\n // https://github.com/rust-lang/reference/blob/master/src/keywords.md\n /\\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\\b/,\n // primitives and str\n // https://doc.rust-lang.org/stable/rust-by-example/primitives.html\n /\\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\\b/\n ],\n // functions can technically start with an upper-case letter, but this will introduce a lot of false positives\n // and Rust's naming conventions recommend snake_case anyway.\n // https://doc.rust-lang.org/1.0.0/style/style/naming/README.html\n function: /\\b[a-z_]\\w*(?=\\s*(?:::\\s*<|\\())/,\n macro: {\n pattern: /\\b\\w+!/,\n alias: 'property'\n },\n constant: /\\b[A-Z_][A-Z_\\d]+\\b/,\n 'class-name': /\\b[A-Z]\\w*\\b/,\n namespace: {\n pattern: /(?:\\b[a-z][a-z_\\d]*\\s*::\\s*)*\\b[a-z][a-z_\\d]*\\s*::(?!\\s*<)/,\n inside: {\n punctuation: /::/\n }\n },\n // Hex, oct, bin, dec numbers with visual separators and type suffix\n number:\n /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\\b/,\n boolean: /\\b(?:false|true)\\b/,\n punctuation: /->|\\.\\.=|\\.{1,3}|::|[{}[\\];(),:]/,\n operator: /[-+*\\/%!^]=?|=[=>]?|&[&=]?|\\|[|=]?|<<?=?|>>?=?|[@?]/\n }\n Prism.languages.rust['closure-params'].inside.rest = Prism.languages.rust\n Prism.languages.rust['attribute'].inside['string'] =\n Prism.languages.rust['string']\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorCss from './css.js'\nsass.displayName = 'sass'\nsass.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function sass(Prism) {\n Prism.register(refractorCss)\n ;(function (Prism) {\n Prism.languages.sass = Prism.languages.extend('css', {\n // Sass comments don't need to be closed, only indented\n comment: {\n pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t].+)*/m,\n lookbehind: true,\n greedy: true\n }\n })\n Prism.languages.insertBefore('sass', 'atrule', {\n // We want to consume the whole line\n 'atrule-line': {\n // Includes support for = and + shortcuts\n pattern: /^(?:[ \\t]*)[@+=].+/m,\n greedy: true,\n inside: {\n atrule: /(?:@[\\w-]+|[+=])/\n }\n }\n })\n delete Prism.languages.sass.atrule\n var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n var operator = [\n /[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|not|or)\\b/,\n {\n pattern: /(\\s)-(?=\\s)/,\n lookbehind: true\n }\n ]\n Prism.languages.insertBefore('sass', 'property', {\n // We want to consume the whole line\n 'variable-line': {\n pattern: /^[ \\t]*\\$.+/m,\n greedy: true,\n inside: {\n punctuation: /:/,\n variable: variable,\n operator: operator\n }\n },\n // We want to consume the whole line\n 'property-line': {\n pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s].*)/m,\n greedy: true,\n inside: {\n property: [\n /[^:\\s]+(?=\\s*:)/,\n {\n pattern: /(:)[^:\\s]+/,\n lookbehind: true\n }\n ],\n punctuation: /:/,\n variable: variable,\n operator: operator,\n important: Prism.languages.sass.important\n }\n }\n })\n delete Prism.languages.sass.property\n delete Prism.languages.sass.important\n\n // Now that whole lines for other patterns are consumed,\n // what's left should be selectors\n Prism.languages.insertBefore('sass', 'punctuation', {\n selector: {\n pattern:\n /^([ \\t]*)\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*)*/m,\n lookbehind: true,\n greedy: true\n }\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorCss from './css.js'\nscss.displayName = 'scss'\nscss.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function scss(Prism) {\n Prism.register(refractorCss)\n Prism.languages.scss = Prism.languages.extend('css', {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n atrule: {\n pattern: /@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,\n inside: {\n rule: /@[\\w-]+/\n // See rest below\n }\n },\n\n // url, compassified\n url: /(?:[-a-z]+-)?url(?=\\()/i,\n // CSS selector regex is not appropriate for Sass\n // since there can be lot more things (var, @ directive, nesting..)\n // a selector must start at the end of a property or after a brace (end of other rules or nesting)\n // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable\n // the end of a selector is found when there is no rules in it ( {} or {\\s}) or if there is a property (because an interpolated var\n // can \"pass\" as a selector- e.g: proper#{$erty})\n // this one was hard to do, so please be careful if you edit this one :)\n selector: {\n // Initial look-ahead is used to prevent matching of blank selectors\n pattern:\n /(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/,\n inside: {\n parent: {\n pattern: /&/,\n alias: 'important'\n },\n placeholder: /%[-\\w]+/,\n variable: /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n },\n property: {\n pattern: /(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n inside: {\n variable: /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n }\n })\n Prism.languages.insertBefore('scss', 'atrule', {\n keyword: [\n /@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\\b/i,\n {\n pattern: /( )(?:from|through)(?= )/,\n lookbehind: true\n }\n ]\n })\n Prism.languages.insertBefore('scss', 'important', {\n // var and interpolated vars\n variable: /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n })\n Prism.languages.insertBefore('scss', 'function', {\n 'module-modifier': {\n pattern: /\\b(?:as|hide|show|with)\\b/i,\n alias: 'keyword'\n },\n placeholder: {\n pattern: /%[-\\w]+/,\n alias: 'selector'\n },\n statement: {\n pattern: /\\B!(?:default|optional)\\b/i,\n alias: 'keyword'\n },\n boolean: /\\b(?:false|true)\\b/,\n null: {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n },\n operator: {\n pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|not|or)(?=\\s)/,\n lookbehind: true\n }\n })\n Prism.languages.scss['atrule'].inside.rest = Prism.languages.scss\n}\n","// @ts-nocheck\nsql.displayName = 'sql'\nsql.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function sql(Prism) {\n Prism.languages.sql = {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n variable: [\n {\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n },\n /@[\\w.$]+/\n ],\n string: {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n identifier: {\n pattern: /(^|[^@\\\\])`(?:\\\\[\\s\\S]|[^`\\\\]|``)*`/,\n greedy: true,\n lookbehind: true,\n inside: {\n punctuation: /^`|`$/\n }\n },\n function:\n /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n // Should we highlight user defined functions too?\n keyword:\n /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n boolean: /\\b(?:FALSE|NULL|TRUE)\\b/i,\n number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n operator:\n /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n punctuation: /[;[\\]()`,.]/\n }\n}\n","// @ts-nocheck\nswift.displayName = 'swift'\nswift.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function swift(Prism) {\n Prism.languages.swift = {\n comment: {\n // Nested comments are supported up to 2 levels\n pattern:\n /(^|[^\\\\:])(?:\\/\\/.*|\\/\\*(?:[^/*]|\\/(?!\\*)|\\*(?!\\/)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\/)/,\n lookbehind: true,\n greedy: true\n },\n 'string-literal': [\n // https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html\n {\n pattern: RegExp(\n /(^|[^\"#])/.source +\n '(?:' +\n // single-line string\n /\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^(])|[^\\\\\\r\\n\"])*\"/\n .source +\n '|' +\n // multi-line string\n /\"\"\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\\"]|\"(?!\"\"))*\"\"\"/\n .source +\n ')' +\n /(?![\"#])/.source\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /(\\\\\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n lookbehind: true,\n inside: null // see below\n },\n\n 'interpolation-punctuation': {\n pattern: /^\\)|\\\\\\($/,\n alias: 'punctuation'\n },\n punctuation: /\\\\(?=[\\r\\n])/,\n string: /[\\s\\S]+/\n }\n },\n {\n pattern: RegExp(\n /(^|[^\"#])(#+)/.source +\n '(?:' +\n // single-line string\n /\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^#])|[^\\\\\\r\\n])*?\"/\n .source +\n '|' +\n // multi-line string\n /\"\"\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?\"\"\"/.source +\n ')' +\n '\\\\2'\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /(\\\\#+\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n lookbehind: true,\n inside: null // see below\n },\n\n 'interpolation-punctuation': {\n pattern: /^\\)|\\\\#+\\($/,\n alias: 'punctuation'\n },\n string: /[\\s\\S]+/\n }\n }\n ],\n directive: {\n // directives with conditions\n pattern: RegExp(\n /#/.source +\n '(?:' +\n (/(?:elseif|if)\\b/.source +\n '(?:[ \\t]*' +\n // This regex is a little complex. It's equivalent to this:\n // (?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*<round>)?|<round>)(?:[ \\t]*(?:&&|\\|\\|))?\n // where <round> is a general parentheses expression.\n /(?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \\t]*(?:&&|\\|\\|))?/\n .source +\n ')+') +\n '|' +\n /(?:else|endif)\\b/.source +\n ')'\n ),\n alias: 'property',\n inside: {\n 'directive-name': /^#\\w+/,\n boolean: /\\b(?:false|true)\\b/,\n number: /\\b\\d+(?:\\.\\d+)*\\b/,\n operator: /!|&&|\\|\\||[<>]=?/,\n punctuation: /[(),]/\n }\n },\n literal: {\n pattern:\n /#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\\b/,\n alias: 'constant'\n },\n 'other-directive': {\n pattern: /#\\w+\\b/,\n alias: 'property'\n },\n attribute: {\n pattern: /@\\w+/,\n alias: 'atrule'\n },\n 'function-definition': {\n pattern: /(\\bfunc\\s+)\\w+/,\n lookbehind: true,\n alias: 'function'\n },\n label: {\n // https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID141\n pattern:\n /\\b(break|continue)\\s+\\w+|\\b[a-zA-Z_]\\w*(?=\\s*:\\s*(?:for|repeat|while)\\b)/,\n lookbehind: true,\n alias: 'important'\n },\n keyword:\n /\\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n nil: {\n pattern: /\\bnil\\b/,\n alias: 'constant'\n },\n 'short-argument': /\\$\\d+\\b/,\n omit: {\n pattern: /\\b_\\b/,\n alias: 'keyword'\n },\n number:\n /\\b(?:[\\d_]+(?:\\.[\\de_]+)?|0x[a-f0-9_]+(?:\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n // A class name must start with an upper-case letter and be either 1 letter long or contain a lower-case letter.\n 'class-name': /\\b[A-Z](?:[A-Z_\\d]*[a-z]\\w*)?\\b/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n constant: /\\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n // Operators are generic in Swift. Developers can even create new operators (e.g. +++).\n // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html#ID481\n // This regex only supports ASCII operators.\n operator: /[-+*/%=!<>&|^~?]+|\\.[.\\-+*/%=!<>&|^~?]+/,\n punctuation: /[{}[\\]();,.:\\\\]/\n }\n Prism.languages.swift['string-literal'].forEach(function (rule) {\n rule.inside['interpolation'].inside = Prism.languages.swift\n })\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\ntypescript.displayName = 'typescript'\ntypescript.aliases = ['ts']\n\n/** @type {import('../core.js').Syntax} */\nexport default function typescript(Prism) {\n Prism.register(refractorJavascript)\n ;(function (Prism) {\n Prism.languages.typescript = Prism.languages.extend('javascript', {\n 'class-name': {\n pattern:\n /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n lookbehind: true,\n greedy: true,\n inside: null // see below\n },\n\n builtin:\n /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/\n })\n\n // The keywords TypeScript adds to JavaScript\n Prism.languages.typescript.keyword.push(\n /\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,\n // keywords that have to be followed by an identifier\n /\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,\n // This is for `import type *, {}`\n /\\btype\\b(?=\\s*(?:[\\{*]|$))/\n )\n\n // doesn't work with TS because TS is too complex\n delete Prism.languages.typescript['parameter']\n delete Prism.languages.typescript['literal-property']\n\n // a version of typescript specifically for highlighting types\n var typeInside = Prism.languages.extend('typescript', {})\n delete typeInside['class-name']\n Prism.languages.typescript['class-name'].inside = typeInside\n Prism.languages.insertBefore('typescript', 'function', {\n decorator: {\n pattern: /@[$\\w\\xA0-\\uFFFF]+/,\n inside: {\n at: {\n pattern: /^@/,\n alias: 'operator'\n },\n function: /^[\\s\\S]+/\n }\n },\n 'generic-function': {\n // e.g. foo<T extends \"bar\" | \"baz\">( ...\n pattern:\n /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n greedy: true,\n inside: {\n function: /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n generic: {\n pattern: /<[\\s\\S]+/,\n // everything after the first <\n alias: 'class-name',\n inside: typeInside\n }\n }\n }\n })\n Prism.languages.ts = Prism.languages.typescript\n })(Prism)\n}\n","// @ts-nocheck\nbasic.displayName = 'basic'\nbasic.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function basic(Prism) {\n Prism.languages.basic = {\n comment: {\n pattern: /(?:!|REM\\b).+/i,\n inside: {\n keyword: /^REM/i\n }\n },\n string: {\n pattern: /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^\\w +\\-.])*\"/,\n greedy: true\n },\n number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n keyword:\n /\\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SELECT CASE|SHARED|SHELL|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\\$|\\b)/i,\n function:\n /\\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\\$|\\b)/i,\n operator: /<[=>]?|>=?|[+\\-*\\/^=&]|\\b(?:AND|EQV|IMP|NOT|OR|XOR)\\b/i,\n punctuation: /[,;:()]/\n }\n}\n","// @ts-nocheck\nimport refractorBasic from './basic.js'\nvbnet.displayName = 'vbnet'\nvbnet.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function vbnet(Prism) {\n Prism.register(refractorBasic)\n Prism.languages.vbnet = Prism.languages.extend('basic', {\n comment: [\n {\n pattern: /(?:!|REM\\b).+/i,\n inside: {\n keyword: /^REM/i\n }\n },\n {\n pattern: /(^|[^\\\\:])'.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n string: {\n pattern: /(^|[^\"])\"(?:\"\"|[^\"])*\"(?!\")/,\n lookbehind: true,\n greedy: true\n },\n keyword:\n /(?:\\b(?:ADDHANDLER|ADDRESSOF|ALIAS|AND|ANDALSO|AS|BEEP|BLOAD|BOOLEAN|BSAVE|BYREF|BYTE|BYVAL|CALL(?: ABSOLUTE)?|CASE|CATCH|CBOOL|CBYTE|CCHAR|CDATE|CDBL|CDEC|CHAIN|CHAR|CHDIR|CINT|CLASS|CLEAR|CLNG|CLOSE|CLS|COBJ|COM|COMMON|CONST|CONTINUE|CSBYTE|CSHORT|CSNG|CSTR|CTYPE|CUINT|CULNG|CUSHORT|DATA|DATE|DECIMAL|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DEFAULT|DELEGATE|DIM|DIRECTCAST|DO|DOUBLE|ELSE|ELSEIF|END|ENUM|ENVIRON|ERASE|ERROR|EVENT|EXIT|FALSE|FIELD|FILES|FINALLY|FOR(?: EACH)?|FRIEND|FUNCTION|GET|GETTYPE|GETXMLNAMESPACE|GLOBAL|GOSUB|GOTO|HANDLES|IF|IMPLEMENTS|IMPORTS|IN|INHERITS|INPUT|INTEGER|INTERFACE|IOCTL|IS|ISNOT|KEY|KILL|LET|LIB|LIKE|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|ME|MKDIR|MOD|MODULE|MUSTINHERIT|MUSTOVERRIDE|MYBASE|MYCLASS|NAME|NAMESPACE|NARROWING|NEW|NEXT|NOT|NOTHING|NOTINHERITABLE|NOTOVERRIDABLE|OBJECT|OF|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPERATOR|OPTION(?: BASE)?|OPTIONAL|OR|ORELSE|OUT|OVERLOADS|OVERRIDABLE|OVERRIDES|PARAMARRAY|PARTIAL|POKE|PRIVATE|PROPERTY|PROTECTED|PUBLIC|PUT|RAISEEVENT|READ|READONLY|REDIM|REM|REMOVEHANDLER|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SBYTE|SELECT(?: CASE)?|SET|SHADOWS|SHARED|SHELL|SHORT|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|STRUCTURE|SUB|SWAP|SYNCLOCK|SYSTEM|THEN|THROW|TIMER|TO|TROFF|TRON|TRUE|TRY|TRYCAST|TYPE|TYPEOF|UINTEGER|ULONG|UNLOCK|UNTIL|USHORT|USING|VIEW PRINT|WAIT|WEND|WHEN|WHILE|WIDENING|WITH|WITHEVENTS|WRITE|WRITEONLY|XOR)|\\B(?:#CONST|#ELSE|#ELSEIF|#END|#IF))(?:\\$|\\b)/i,\n punctuation: /[,;:(){}]/\n })\n}\n","/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n 'AElig',\n 'AMP',\n 'Aacute',\n 'Acirc',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Auml',\n 'COPY',\n 'Ccedil',\n 'ETH',\n 'Eacute',\n 'Ecirc',\n 'Egrave',\n 'Euml',\n 'GT',\n 'Iacute',\n 'Icirc',\n 'Igrave',\n 'Iuml',\n 'LT',\n 'Ntilde',\n 'Oacute',\n 'Ocirc',\n 'Ograve',\n 'Oslash',\n 'Otilde',\n 'Ouml',\n 'QUOT',\n 'REG',\n 'THORN',\n 'Uacute',\n 'Ucirc',\n 'Ugrave',\n 'Uuml',\n 'Yacute',\n 'aacute',\n 'acirc',\n 'acute',\n 'aelig',\n 'agrave',\n 'amp',\n 'aring',\n 'atilde',\n 'auml',\n 'brvbar',\n 'ccedil',\n 'cedil',\n 'cent',\n 'copy',\n 'curren',\n 'deg',\n 'divide',\n 'eacute',\n 'ecirc',\n 'egrave',\n 'eth',\n 'euml',\n 'frac12',\n 'frac14',\n 'frac34',\n 'gt',\n 'iacute',\n 'icirc',\n 'iexcl',\n 'igrave',\n 'iquest',\n 'iuml',\n 'laquo',\n 'lt',\n 'macr',\n 'micro',\n 'middot',\n 'nbsp',\n 'not',\n 'ntilde',\n 'oacute',\n 'ocirc',\n 'ograve',\n 'ordf',\n 'ordm',\n 'oslash',\n 'otilde',\n 'ouml',\n 'para',\n 'plusmn',\n 'pound',\n 'quot',\n 'raquo',\n 'reg',\n 'sect',\n 'shy',\n 'sup1',\n 'sup2',\n 'sup3',\n 'szlig',\n 'thorn',\n 'times',\n 'uacute',\n 'ucirc',\n 'ugrave',\n 'uml',\n 'uuml',\n 'yacute',\n 'yen',\n 'yuml'\n]\n","/**\n * Map of invalid numeric character references to their replacements, according to HTML.\n *\n * @type {Record<number, string>}\n */\nexport const characterReferenceInvalid = {\n 0: '�',\n 128: '€',\n 130: '‚',\n 131: 'ƒ',\n 132: '„',\n 133: '…',\n 134: '†',\n 135: '‡',\n 136: 'ˆ',\n 137: '‰',\n 138: 'Š',\n 139: '‹',\n 140: 'Œ',\n 142: 'Ž',\n 145: '‘',\n 146: '’',\n 147: '“',\n 148: '”',\n 149: '•',\n 150: '–',\n 151: '—',\n 152: '˜',\n 153: '™',\n 154: 'š',\n 155: '›',\n 156: 'œ',\n 158: 'ž',\n 159: 'Ÿ'\n}\n","/**\n * Check if the given character code, or the character code at the first\n * character, is decimal.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is a decimal\n */\nexport function isDecimal(character) {\n const code =\n typeof character === 'string' ? character.charCodeAt(0) : character\n\n return code >= 48 && code <= 57 /* 0-9 */\n}\n","/**\n * Check if the given character code, or the character code at the first\n * character, is hexadecimal.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is hexadecimal\n */\nexport function isHexadecimal(character) {\n const code =\n typeof character === 'string' ? character.charCodeAt(0) : character\n\n return (\n (code >= 97 /* a */ && code <= 102) /* z */ ||\n (code >= 65 /* A */ && code <= 70) /* Z */ ||\n (code >= 48 /* A */ && code <= 57) /* Z */\n )\n}\n","import {isAlphabetical} from 'is-alphabetical'\nimport {isDecimal} from 'is-decimal'\n\n/**\n * Check if the given character code, or the character code at the first\n * character, is alphanumerical.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is alphanumerical.\n */\nexport function isAlphanumerical(character) {\n return isAlphabetical(character) || isDecimal(character)\n}\n","/**\n * Check if the given character code, or the character code at the first\n * character, is alphabetical.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is alphabetical.\n */\nexport function isAlphabetical(character) {\n const code =\n typeof character === 'string' ? character.charCodeAt(0) : character\n\n return (\n (code >= 97 && code <= 122) /* a-z */ ||\n (code >= 65 && code <= 90) /* A-Z */\n )\n}\n","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\nimport {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterReferenceInvalid} from 'character-reference-invalid'\nimport {isDecimal} from 'is-decimal'\nimport {isHexadecimal} from 'is-hexadecimal'\nimport {isAlphanumerical} from 'is-alphanumerical'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\n\nconst fromCharCode = String.fromCharCode\n\n// Warning messages.\nconst messages = [\n '',\n /* 1: Non terminated (named) */\n 'Named character references must be terminated by a semicolon',\n /* 2: Non terminated (numeric) */\n 'Numeric character references must be terminated by a semicolon',\n /* 3: Empty (named) */\n 'Named character references cannot be empty',\n /* 4: Empty (numeric) */\n 'Numeric character references cannot be empty',\n /* 5: Unknown (named) */\n 'Named character references must be known',\n /* 6: Disallowed (numeric) */\n 'Numeric character references cannot be disallowed',\n /* 7: Prohibited (numeric) */\n 'Numeric character references cannot be outside the permissible Unicode range'\n]\n\n/**\n * Parse HTML character references.\n *\n * @param {string} value\n * @param {import('../index.js').Options} [options={}]\n */\nexport function parseEntities(value, options = {}) {\n const additional =\n typeof options.additional === 'string'\n ? options.additional.charCodeAt(0)\n : options.additional\n /** @type {Array<string>} */\n const result = []\n let index = 0\n let lines = -1\n let queue = ''\n /** @type {Point|undefined} */\n let point\n /** @type {Array<number>|undefined} */\n let indent\n\n if (options.position) {\n if ('start' in options.position || 'indent' in options.position) {\n // @ts-expect-error: points don’t have indent.\n indent = options.position.indent\n // @ts-expect-error: points don’t have indent.\n point = options.position.start\n } else {\n point = options.position\n }\n }\n\n let line = (point ? point.line : 0) || 1\n let column = (point ? point.column : 0) || 1\n\n // Cache the current point.\n let previous = now()\n /** @type {number|undefined} */\n let character\n\n // Ensure the algorithm walks over the first character (inclusive).\n index--\n\n while (++index <= value.length) {\n // If the previous character was a newline.\n if (character === 10 /* `\\n` */) {\n column = (indent ? indent[lines] : 0) || 1\n }\n\n character = value.charCodeAt(index)\n\n if (character === 38 /* `&` */) {\n const following = value.charCodeAt(index + 1)\n\n // The behavior depends on the identity of the next character.\n if (\n following === 9 /* `\\t` */ ||\n following === 10 /* `\\n` */ ||\n following === 12 /* `\\f` */ ||\n following === 32 /* ` ` */ ||\n following === 38 /* `&` */ ||\n following === 60 /* `<` */ ||\n Number.isNaN(following) ||\n (additional && following === additional)\n ) {\n // Not a character reference.\n // No characters are consumed, and nothing is returned.\n // This is not an error, either.\n queue += fromCharCode(character)\n column++\n continue\n }\n\n const start = index + 1\n let begin = start\n let end = start\n /** @type {string} */\n let type\n\n if (following === 35 /* `#` */) {\n // Numerical reference.\n end = ++begin\n\n // The behavior further depends on the next character.\n const following = value.charCodeAt(end)\n\n if (following === 88 /* `X` */ || following === 120 /* `x` */) {\n // ASCII hexadecimal digits.\n type = 'hexadecimal'\n end = ++begin\n } else {\n // ASCII decimal digits.\n type = 'decimal'\n }\n } else {\n // Named reference.\n type = 'named'\n }\n\n let characterReferenceCharacters = ''\n let characterReference = ''\n let characters = ''\n // Each type of character reference accepts different characters.\n // This test is used to detect whether a reference has ended (as the semicolon\n // is not strictly needed).\n const test =\n type === 'named'\n ? isAlphanumerical\n : type === 'decimal'\n ? isDecimal\n : isHexadecimal\n\n end--\n\n while (++end <= value.length) {\n const following = value.charCodeAt(end)\n\n if (!test(following)) {\n break\n }\n\n characters += fromCharCode(following)\n\n // Check if we can match a legacy named reference.\n // If so, we cache that as the last viable named reference.\n // This ensures we do not need to walk backwards later.\n if (type === 'named' && characterEntitiesLegacy.includes(characters)) {\n characterReferenceCharacters = characters\n // @ts-expect-error: always able to decode.\n characterReference = decodeNamedCharacterReference(characters)\n }\n }\n\n let terminated = value.charCodeAt(end) === 59 /* `;` */\n\n if (terminated) {\n end++\n\n const namedReference =\n type === 'named' ? decodeNamedCharacterReference(characters) : false\n\n if (namedReference) {\n characterReferenceCharacters = characters\n characterReference = namedReference\n }\n }\n\n let diff = 1 + end - start\n let reference = ''\n\n if (!terminated && options.nonTerminated === false) {\n // Empty.\n } else if (!characters) {\n // An empty (possible) reference is valid, unless it’s numeric (thus an\n // ampersand followed by an octothorp).\n if (type !== 'named') {\n warning(4 /* Empty (numeric) */, diff)\n }\n } else if (type === 'named') {\n // An ampersand followed by anything unknown, and not terminated, is\n // invalid.\n if (terminated && !characterReference) {\n warning(5 /* Unknown (named) */, 1)\n } else {\n // If there’s something after an named reference which is not known,\n // cap the reference.\n if (characterReferenceCharacters !== characters) {\n end = begin + characterReferenceCharacters.length\n diff = 1 + end - begin\n terminated = false\n }\n\n // If the reference is not terminated, warn.\n if (!terminated) {\n const reason = characterReferenceCharacters\n ? 1 /* Non terminated (named) */\n : 3 /* Empty (named) */\n\n if (options.attribute) {\n const following = value.charCodeAt(end)\n\n if (following === 61 /* `=` */) {\n warning(reason, diff)\n characterReference = ''\n } else if (isAlphanumerical(following)) {\n characterReference = ''\n } else {\n warning(reason, diff)\n }\n } else {\n warning(reason, diff)\n }\n }\n }\n\n reference = characterReference\n } else {\n if (!terminated) {\n // All nonterminated numeric references are not rendered, and emit a\n // warning.\n warning(2 /* Non terminated (numeric) */, diff)\n }\n\n // When terminated and numerical, parse as either hexadecimal or\n // decimal.\n let referenceCode = Number.parseInt(\n characters,\n type === 'hexadecimal' ? 16 : 10\n )\n\n // Emit a warning when the parsed number is prohibited, and replace with\n // replacement character.\n if (prohibited(referenceCode)) {\n warning(7 /* Prohibited (numeric) */, diff)\n reference = fromCharCode(65533 /* `�` */)\n } else if (referenceCode in characterReferenceInvalid) {\n // Emit a warning when the parsed number is disallowed, and replace by\n // an alternative.\n warning(6 /* Disallowed (numeric) */, diff)\n reference = characterReferenceInvalid[referenceCode]\n } else {\n // Parse the number.\n let output = ''\n\n // Emit a warning when the parsed number should not be used.\n if (disallowed(referenceCode)) {\n warning(6 /* Disallowed (numeric) */, diff)\n }\n\n // Serialize the number.\n if (referenceCode > 0xffff) {\n referenceCode -= 0x10000\n output += fromCharCode((referenceCode >>> (10 & 0x3ff)) | 0xd800)\n referenceCode = 0xdc00 | (referenceCode & 0x3ff)\n }\n\n reference = output + fromCharCode(referenceCode)\n }\n }\n\n // Found it!\n // First eat the queued characters as normal text, then eat a reference.\n if (reference) {\n flush()\n\n previous = now()\n index = end - 1\n column += end - start + 1\n result.push(reference)\n const next = now()\n next.offset++\n\n if (options.reference) {\n options.reference.call(\n options.referenceContext,\n reference,\n {start: previous, end: next},\n value.slice(start - 1, end)\n )\n }\n\n previous = next\n } else {\n // If we could not find a reference, queue the checked characters (as\n // normal characters), and move the pointer to their end.\n // This is possible because we can be certain neither newlines nor\n // ampersands are included.\n characters = value.slice(start - 1, end)\n queue += characters\n column += characters.length\n index = end - 1\n }\n } else {\n // Handle anything other than an ampersand, including newlines and EOF.\n if (character === 10 /* `\\n` */) {\n line++\n lines++\n column = 0\n }\n\n if (Number.isNaN(character)) {\n flush()\n } else {\n queue += fromCharCode(character)\n column++\n }\n }\n }\n\n // Return the reduced nodes.\n return result.join('')\n\n // Get current position.\n function now() {\n return {\n line,\n column,\n offset: index + ((point ? point.offset : 0) || 0)\n }\n }\n\n /**\n * Handle the warning.\n *\n * @param {1|2|3|4|5|6|7} code\n * @param {number} offset\n */\n function warning(code, offset) {\n /** @type {ReturnType<now>} */\n let position\n\n if (options.warning) {\n position = now()\n position.column += offset\n position.offset += offset\n\n options.warning.call(\n options.warningContext,\n messages[code],\n position,\n code\n )\n }\n }\n\n /**\n * Flush `queue` (normal text).\n * Macro invoked before each reference and at the end of `value`.\n * Does nothing when `queue` is empty.\n */\n function flush() {\n if (queue) {\n result.push(queue)\n\n if (options.text) {\n options.text.call(options.textContext, queue, {\n start: previous,\n end: now()\n })\n }\n\n queue = ''\n }\n }\n}\n\n/**\n * Check if `character` is outside the permissible unicode range.\n *\n * @param {number} code\n * @returns {boolean}\n */\nfunction prohibited(code) {\n return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff\n}\n\n/**\n * Check if `character` is disallowed.\n *\n * @param {number} code\n * @returns {boolean}\n */\nfunction disallowed(code) {\n return (\n (code >= 0x0001 && code <= 0x0008) ||\n code === 0x000b ||\n (code >= 0x000d && code <= 0x001f) ||\n (code >= 0x007f && code <= 0x009f) ||\n (code >= 0xfdd0 && code <= 0xfdef) ||\n (code & 0xffff) === 0xffff ||\n (code & 0xffff) === 0xfffe\n )\n}\n","// @ts-nocheck\n\n// This is a slimmed down version of `prism-core.js`, to remove globals,\n// document, workers, `util.encode`, `Token.stringify`\n\n// Private helper vars\nvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i\nvar uniqueId = 0\n\n// The grammar object for plaintext\nvar plainTextGrammar = {}\n\nvar _ = {\n /**\n * A namespace for utility methods.\n *\n * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n * change or disappear at any time.\n *\n * @namespace\n * @memberof Prism\n */\n util: {\n /**\n * Returns the name of the type of the given value.\n *\n * @param {any} o\n * @returns {string}\n * @example\n * type(null) === 'Null'\n * type(undefined) === 'Undefined'\n * type(123) === 'Number'\n * type('foo') === 'String'\n * type(true) === 'Boolean'\n * type([1, 2]) === 'Array'\n * type({}) === 'Object'\n * type(String) === 'Function'\n * type(/abc+/) === 'RegExp'\n */\n type: function (o) {\n return Object.prototype.toString.call(o).slice(8, -1)\n },\n\n /**\n * Returns a unique number for the given object. Later calls will still return the same number.\n *\n * @param {Object} obj\n * @returns {number}\n */\n objId: function (obj) {\n if (!obj['__id']) {\n Object.defineProperty(obj, '__id', {value: ++uniqueId})\n }\n return obj['__id']\n },\n\n /**\n * Creates a deep clone of the given object.\n *\n * The main intended use of this function is to clone language definitions.\n *\n * @param {T} o\n * @param {Record<number, any>} [visited]\n * @returns {T}\n * @template T\n */\n clone: function deepClone(o, visited) {\n visited = visited || {}\n\n var clone\n var id\n switch (_.util.type(o)) {\n case 'Object':\n id = _.util.objId(o)\n if (visited[id]) {\n return visited[id]\n }\n clone = /** @type {Record<string, any>} */ ({})\n visited[id] = clone\n\n for (var key in o) {\n if (o.hasOwnProperty(key)) {\n clone[key] = deepClone(o[key], visited)\n }\n }\n\n return /** @type {any} */ (clone)\n\n case 'Array':\n id = _.util.objId(o)\n if (visited[id]) {\n return visited[id]\n }\n clone = []\n visited[id] = clone\n\n o.forEach(function (v, i) {\n clone[i] = deepClone(v, visited)\n })\n\n return /** @type {any} */ (clone)\n\n default:\n return o\n }\n }\n },\n\n /**\n * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n *\n * @namespace\n * @memberof Prism\n * @public\n */\n languages: {\n /**\n * The grammar for plain, unformatted text.\n */\n plain: plainTextGrammar,\n plaintext: plainTextGrammar,\n text: plainTextGrammar,\n txt: plainTextGrammar,\n\n /**\n * Creates a deep copy of the language with the given id and appends the given tokens.\n *\n * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n * will be overwritten at its original position.\n *\n * ## Best practices\n *\n * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n *\n * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n *\n * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n * @param {Grammar} redef The new tokens to append.\n * @returns {Grammar} The new language created.\n * @public\n * @example\n * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n * // at its original position\n * 'comment': { ... },\n * // CSS doesn't have a 'color' token, so this token will be appended\n * 'color': /\\b(?:red|green|blue)\\b/\n * });\n */\n extend: function (id, redef) {\n var lang = _.util.clone(_.languages[id])\n\n for (var key in redef) {\n lang[key] = redef[key]\n }\n\n return lang\n },\n\n /**\n * Inserts tokens _before_ another token in a language definition or any other grammar.\n *\n * ## Usage\n *\n * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n * this:\n *\n * ```js\n * Prism.languages.markup.style = {\n * // token\n * };\n * ```\n *\n * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n * before existing tokens. For the CSS example above, you would use it like this:\n *\n * ```js\n * Prism.languages.insertBefore('markup', 'cdata', {\n * 'style': {\n * // token\n * }\n * });\n * ```\n *\n * ## Special cases\n *\n * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n * will be ignored.\n *\n * This behavior can be used to insert tokens after `before`:\n *\n * ```js\n * Prism.languages.insertBefore('markup', 'comment', {\n * 'comment': Prism.languages.markup.comment,\n * // tokens after 'comment'\n * });\n * ```\n *\n * ## Limitations\n *\n * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n * deleting properties which is necessary to insert at arbitrary positions.\n *\n * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n * Instead, it will create a new object and replace all references to the target object with the new one. This\n * can be done without temporarily deleting properties, so the iteration order is well-defined.\n *\n * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n * you hold the target object in a variable, then the value of the variable will not change.\n *\n * ```js\n * var oldMarkup = Prism.languages.markup;\n * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n *\n * assert(oldMarkup !== Prism.languages.markup);\n * assert(newMarkup === Prism.languages.markup);\n * ```\n *\n * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n * object to be modified.\n * @param {string} before The key to insert before.\n * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n * object to be modified.\n *\n * Defaults to `Prism.languages`.\n * @returns {Grammar} The new grammar object.\n * @public\n */\n insertBefore: function (inside, before, insert, root) {\n root = root || /** @type {any} */ (_.languages)\n var grammar = root[inside]\n /** @type {Grammar} */\n var ret = {}\n\n for (var token in grammar) {\n if (grammar.hasOwnProperty(token)) {\n if (token == before) {\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n ret[newToken] = insert[newToken]\n }\n }\n }\n\n // Do not insert token which also occur in insert. See #1525\n if (!insert.hasOwnProperty(token)) {\n ret[token] = grammar[token]\n }\n }\n }\n\n var old = root[inside]\n root[inside] = ret\n\n // Update references in other language definitions\n _.languages.DFS(_.languages, function (key, value) {\n if (value === old && key != inside) {\n this[key] = ret\n }\n })\n\n return ret\n },\n\n // Traverse a language definition with Depth First Search\n DFS: function DFS(o, callback, type, visited) {\n visited = visited || {}\n\n var objId = _.util.objId\n\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n callback.call(o, i, o[i], type || i)\n\n var property = o[i]\n var propertyType = _.util.type(property)\n\n if (propertyType === 'Object' && !visited[objId(property)]) {\n visited[objId(property)] = true\n DFS(property, callback, null, visited)\n } else if (propertyType === 'Array' && !visited[objId(property)]) {\n visited[objId(property)] = true\n DFS(property, callback, i, visited)\n }\n }\n }\n }\n },\n\n plugins: {},\n\n /**\n * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n * and the language definitions to use, and returns a string with the HTML produced.\n *\n * The following hooks will be run:\n * 1. `before-tokenize`\n * 2. `after-tokenize`\n * 3. `wrap`: On each {@link Token}.\n *\n * @param {string} text A string with the code to be highlighted.\n * @param {Grammar} grammar An object containing the tokens to use.\n *\n * Usually a language definition like `Prism.languages.markup`.\n * @param {string} language The name of the language definition passed to `grammar`.\n * @returns {string} The highlighted HTML.\n * @memberof Prism\n * @public\n * @example\n * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n */\n highlight: function (text, grammar, language) {\n var env = {\n code: text,\n grammar: grammar,\n language: language\n }\n _.hooks.run('before-tokenize', env)\n if (!env.grammar) {\n throw new Error('The language \"' + env.language + '\" has no grammar.')\n }\n env.tokens = _.tokenize(env.code, env.grammar)\n _.hooks.run('after-tokenize', env)\n return Token.stringify(_.util.encode(env.tokens), env.language)\n },\n\n /**\n * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n * and the language definitions to use, and returns an array with the tokenized code.\n *\n * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n *\n * This method could be useful in other contexts as well, as a very crude parser.\n *\n * @param {string} text A string with the code to be highlighted.\n * @param {Grammar} grammar An object containing the tokens to use.\n *\n * Usually a language definition like `Prism.languages.markup`.\n * @returns {TokenStream} An array of strings and tokens, a token stream.\n * @memberof Prism\n * @public\n * @example\n * let code = `var foo = 0;`;\n * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n * tokens.forEach(token => {\n * if (token instanceof Prism.Token && token.type === 'number') {\n * console.log(`Found numeric literal: ${token.content}`);\n * }\n * });\n */\n tokenize: function (text, grammar) {\n var rest = grammar.rest\n if (rest) {\n for (var token in rest) {\n grammar[token] = rest[token]\n }\n\n delete grammar.rest\n }\n\n var tokenList = new LinkedList()\n addAfter(tokenList, tokenList.head, text)\n\n matchGrammar(text, tokenList, grammar, tokenList.head, 0)\n\n return toArray(tokenList)\n },\n\n /**\n * @namespace\n * @memberof Prism\n * @public\n */\n hooks: {\n all: {},\n\n /**\n * Adds the given callback to the list of callbacks for the given hook.\n *\n * The callback will be invoked when the hook it is registered for is run.\n * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n *\n * One callback function can be registered to multiple hooks and the same hook multiple times.\n *\n * @param {string} name The name of the hook.\n * @param {HookCallback} callback The callback function which is given environment variables.\n * @public\n */\n add: function (name, callback) {\n var hooks = _.hooks.all\n\n hooks[name] = hooks[name] || []\n\n hooks[name].push(callback)\n },\n\n /**\n * Runs a hook invoking all registered callbacks with the given environment variables.\n *\n * Callbacks will be invoked synchronously and in the order in which they were registered.\n *\n * @param {string} name The name of the hook.\n * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n * @public\n */\n run: function (name, env) {\n var callbacks = _.hooks.all[name]\n\n if (!callbacks || !callbacks.length) {\n return\n }\n\n for (var i = 0, callback; (callback = callbacks[i++]); ) {\n callback(env)\n }\n }\n },\n\n Token: Token\n}\n\n// Typescript note:\n// The following can be used to import the Token type in JSDoc:\n//\n// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n/**\n * Creates a new token.\n *\n * @param {string} type See {@link Token#type type}\n * @param {string | TokenStream} content See {@link Token#content content}\n * @param {string|string[]} [alias] The alias(es) of the token.\n * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n * @class\n * @global\n * @public\n */\nfunction Token(type, content, alias, matchedStr) {\n /**\n * The type of the token.\n *\n * This is usually the key of a pattern in a {@link Grammar}.\n *\n * @type {string}\n * @see GrammarToken\n * @public\n */\n this.type = type\n /**\n * The strings or tokens contained by this token.\n *\n * This will be a token stream if the pattern matched also defined an `inside` grammar.\n *\n * @type {string | TokenStream}\n * @public\n */\n this.content = content\n /**\n * The alias(es) of the token.\n *\n * @type {string|string[]}\n * @see GrammarToken\n * @public\n */\n this.alias = alias\n // Copy of the full string this token was created from\n this.length = (matchedStr || '').length | 0\n}\n\n/**\n * A token stream is an array of strings and {@link Token Token} objects.\n *\n * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n * them.\n *\n * 1. No adjacent strings.\n * 2. No empty strings.\n *\n * The only exception here is the token stream that only contains the empty string and nothing else.\n *\n * @typedef {Array<string | Token>} TokenStream\n * @global\n * @public\n */\n\n/**\n * @param {RegExp} pattern\n * @param {number} pos\n * @param {string} text\n * @param {boolean} lookbehind\n * @returns {RegExpExecArray | null}\n */\nfunction matchPattern(pattern, pos, text, lookbehind) {\n pattern.lastIndex = pos\n var match = pattern.exec(text)\n if (match && lookbehind && match[1]) {\n // change the match to remove the text matched by the Prism lookbehind group\n var lookbehindLength = match[1].length\n match.index += lookbehindLength\n match[0] = match[0].slice(lookbehindLength)\n }\n return match\n}\n\n/**\n * @param {string} text\n * @param {LinkedList<string | Token>} tokenList\n * @param {any} grammar\n * @param {LinkedListNode<string | Token>} startNode\n * @param {number} startPos\n * @param {RematchOptions} [rematch]\n * @returns {void}\n * @private\n *\n * @typedef RematchOptions\n * @property {string} cause\n * @property {number} reach\n */\nfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n for (var token in grammar) {\n if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n continue\n }\n\n var patterns = grammar[token]\n patterns = Array.isArray(patterns) ? patterns : [patterns]\n\n for (var j = 0; j < patterns.length; ++j) {\n if (rematch && rematch.cause == token + ',' + j) {\n return\n }\n\n var patternObj = patterns[j]\n var inside = patternObj.inside\n var lookbehind = !!patternObj.lookbehind\n var greedy = !!patternObj.greedy\n var alias = patternObj.alias\n\n if (greedy && !patternObj.pattern.global) {\n // Without the global flag, lastIndex won't work\n var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0]\n patternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g')\n }\n\n /** @type {RegExp} */\n var pattern = patternObj.pattern || patternObj\n\n for (\n // iterate the token list and keep track of the current token/string position\n var currentNode = startNode.next, pos = startPos;\n currentNode !== tokenList.tail;\n pos += currentNode.value.length, currentNode = currentNode.next\n ) {\n if (rematch && pos >= rematch.reach) {\n break\n }\n\n var str = currentNode.value\n\n if (tokenList.length > text.length) {\n // Something went terribly wrong, ABORT, ABORT!\n return\n }\n\n if (str instanceof Token) {\n continue\n }\n\n var removeCount = 1 // this is the to parameter of removeBetween\n var match\n\n if (greedy) {\n match = matchPattern(pattern, pos, text, lookbehind)\n if (!match || match.index >= text.length) {\n break\n }\n\n var from = match.index\n var to = match.index + match[0].length\n var p = pos\n\n // find the node that contains the match\n p += currentNode.value.length\n while (from >= p) {\n currentNode = currentNode.next\n p += currentNode.value.length\n }\n // adjust pos (and p)\n p -= currentNode.value.length\n pos = p\n\n // the current node is a Token, then the match starts inside another Token, which is invalid\n if (currentNode.value instanceof Token) {\n continue\n }\n\n // find the last node which is affected by this match\n for (\n var k = currentNode;\n k !== tokenList.tail && (p < to || typeof k.value === 'string');\n k = k.next\n ) {\n removeCount++\n p += k.value.length\n }\n removeCount--\n\n // replace with the new match\n str = text.slice(pos, p)\n match.index -= pos\n } else {\n match = matchPattern(pattern, 0, str, lookbehind)\n if (!match) {\n continue\n }\n }\n\n // eslint-disable-next-line no-redeclare\n var from = match.index\n var matchStr = match[0]\n var before = str.slice(0, from)\n var after = str.slice(from + matchStr.length)\n\n var reach = pos + str.length\n if (rematch && reach > rematch.reach) {\n rematch.reach = reach\n }\n\n var removeFrom = currentNode.prev\n\n if (before) {\n removeFrom = addAfter(tokenList, removeFrom, before)\n pos += before.length\n }\n\n removeRange(tokenList, removeFrom, removeCount)\n\n var wrapped = new Token(\n token,\n inside ? _.tokenize(matchStr, inside) : matchStr,\n alias,\n matchStr\n )\n currentNode = addAfter(tokenList, removeFrom, wrapped)\n\n if (after) {\n addAfter(tokenList, currentNode, after)\n }\n\n if (removeCount > 1) {\n // at least one Token object was removed, so we have to do some rematching\n // this can only happen if the current pattern is greedy\n\n /** @type {RematchOptions} */\n var nestedRematch = {\n cause: token + ',' + j,\n reach: reach\n }\n matchGrammar(\n text,\n tokenList,\n grammar,\n currentNode.prev,\n pos,\n nestedRematch\n )\n\n // the reach might have been extended because of the rematching\n if (rematch && nestedRematch.reach > rematch.reach) {\n rematch.reach = nestedRematch.reach\n }\n }\n }\n }\n }\n}\n\n/**\n * @typedef LinkedListNode\n * @property {T} value\n * @property {LinkedListNode<T> | null} prev The previous node.\n * @property {LinkedListNode<T> | null} next The next node.\n * @template T\n * @private\n */\n\n/**\n * @template T\n * @private\n */\nfunction LinkedList() {\n /** @type {LinkedListNode<T>} */\n var head = {value: null, prev: null, next: null}\n /** @type {LinkedListNode<T>} */\n var tail = {value: null, prev: head, next: null}\n head.next = tail\n\n /** @type {LinkedListNode<T>} */\n this.head = head\n /** @type {LinkedListNode<T>} */\n this.tail = tail\n this.length = 0\n}\n\n/**\n * Adds a new node with the given value to the list.\n *\n * @param {LinkedList<T>} list\n * @param {LinkedListNode<T>} node\n * @param {T} value\n * @returns {LinkedListNode<T>} The added node.\n * @template T\n */\nfunction addAfter(list, node, value) {\n // assumes that node != list.tail && values.length >= 0\n var next = node.next\n\n var newNode = {value: value, prev: node, next: next}\n node.next = newNode\n next.prev = newNode\n list.length++\n\n return newNode\n}\n/**\n * Removes `count` nodes after the given node. The given node will not be removed.\n *\n * @param {LinkedList<T>} list\n * @param {LinkedListNode<T>} node\n * @param {number} count\n * @template T\n */\nfunction removeRange(list, node, count) {\n var next = node.next\n for (var i = 0; i < count && next !== list.tail; i++) {\n next = next.next\n }\n node.next = next\n next.prev = node\n list.length -= i\n}\n/**\n * @param {LinkedList<T>} list\n * @returns {T[]}\n * @template T\n */\nfunction toArray(list) {\n var array = []\n var node = list.head.next\n while (node !== list.tail) {\n array.push(node.value)\n node = node.next\n }\n return array\n}\n\nexport const Prism = _\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n","/**\n * @typedef _Token A hidden Prism token\n * @property {string} type\n * @property {string} content\n * @property {string} alias\n * @property {number} length\n *\n * @typedef _Env A hidden Prism environment\n * @property {string} type\n * @property {string} tag\n * @property {Text|RefractorElement|Array<Text|RefractorElement>} content\n * @property {Array<string>} classes\n * @property {Record<string, string>} attributes\n * @property {string} language\n *\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {Omit<Element, 'children'> & {children: Array<RefractorElement|Text>}} RefractorElement\n * @typedef {Omit<Root, 'children'> & {children: Array<RefractorElement|Text>}} RefractorRoot\n *\n * @typedef {import('prismjs').Languages} Languages\n * @typedef {import('prismjs').Grammar} Grammar Whatever this is, Prism handles it.\n * @typedef {((prism: unknown) => void) & {displayName: string, aliases?: Array<string>}} Syntax A refractor syntax function\n *\n * @typedef Refractor Virtual syntax highlighting\n * @property {highlight} highlight\n * @property {alias} alias\n * @property {register} register\n * @property {registered} registered\n * @property {listLanguages} listLanguages\n * @property {Languages} languages\n */\n\n// Load all stuff in `prism.js` itself, except for `prism-file-highlight.js`.\n// The wrapped non-leaky grammars are loaded instead of Prism’s originals.\nimport {h} from 'hastscript'\nimport {parseEntities} from 'parse-entities'\nimport {Prism} from './prism-core.js'\n\nconst own = {}.hasOwnProperty\n\n// Inherit.\nfunction Refractor() {}\n\nRefractor.prototype = Prism\n\n/** @type {Refractor} */\n// @ts-expect-error: TS is wrong.\nexport const refractor = new Refractor()\n\n// Create.\nrefractor.highlight = highlight\nrefractor.register = register\nrefractor.alias = alias\nrefractor.registered = registered\nrefractor.listLanguages = listLanguages\n\n// @ts-expect-error Overwrite Prism.\nrefractor.util.encode = encode\n// @ts-expect-error Overwrite Prism.\nrefractor.Token.stringify = stringify\n\n/**\n * Highlight `value` (code) as `language` (programming language).\n *\n * @param {string} value\n * Code to highlight.\n * @param {string|Grammar} language\n * Programming language name, alias, or grammar.\n * @returns {RefractorRoot}\n * Node representing highlighted code.\n */\nfunction highlight(value, language) {\n if (typeof value !== 'string') {\n throw new TypeError('Expected `string` for `value`, got `' + value + '`')\n }\n\n /** @type {Grammar} */\n let grammar\n /** @type {string|undefined} */\n let name\n\n // `name` is a grammar object.\n // This was called internally by Prism.js before 1.28.0.\n /* c8 ignore next 2 */\n if (language && typeof language === 'object') {\n grammar = language\n } else {\n name = language\n\n if (typeof name !== 'string') {\n throw new TypeError('Expected `string` for `name`, got `' + name + '`')\n }\n\n if (own.call(refractor.languages, name)) {\n grammar = refractor.languages[name]\n } else {\n throw new Error('Unknown language: `' + name + '` is not registered')\n }\n }\n\n return {\n type: 'root',\n // @ts-expect-error: we hacked Prism to accept and return the things we want.\n children: Prism.highlight.call(refractor, value, grammar, name)\n }\n}\n\n/**\n * Register a syntax.\n *\n * @param {Syntax} syntax\n * Language function made for refractor, as in, the files in\n * `refractor/lang/*.js`.\n * @returns {void}\n */\nfunction register(syntax) {\n if (typeof syntax !== 'function' || !syntax.displayName) {\n throw new Error('Expected `function` for `syntax`, got `' + syntax + '`')\n }\n\n // Do not duplicate registrations.\n if (!own.call(refractor.languages, syntax.displayName)) {\n syntax(refractor)\n }\n}\n\n/**\n * Register aliases for already registered languages.\n *\n * @param {Record<string, string|Array<string>>|string} language\n * @param {string|Array<string>} [alias]\n * @returns {void}\n */\nfunction alias(language, alias) {\n const languages = refractor.languages\n /** @type {Record<string, string|Array<string>>} */\n let map = {}\n\n if (typeof language === 'string') {\n if (alias) {\n map[language] = alias\n }\n } else {\n map = language\n }\n\n /** @type {string} */\n let key\n\n for (key in map) {\n if (own.call(map, key)) {\n const value = map[key]\n const list = typeof value === 'string' ? [value] : value\n let index = -1\n\n while (++index < list.length) {\n languages[list[index]] = languages[key]\n }\n }\n }\n}\n\n/**\n * Check whether an `alias` or `language` is registered.\n *\n * @param {string} aliasOrLanguage\n * @returns {boolean}\n */\nfunction registered(aliasOrLanguage) {\n if (typeof aliasOrLanguage !== 'string') {\n throw new TypeError(\n 'Expected `string` for `aliasOrLanguage`, got `' + aliasOrLanguage + '`'\n )\n }\n\n return own.call(refractor.languages, aliasOrLanguage)\n}\n\n/**\n * List all registered languages (names and aliases).\n *\n * @returns {Array<string>}\n */\nfunction listLanguages() {\n const languages = refractor.languages\n /** @type {Array<string>} */\n const list = []\n /** @type {string} */\n let language\n\n for (language in languages) {\n if (\n own.call(languages, language) &&\n typeof languages[language] === 'object'\n ) {\n list.push(language)\n }\n }\n\n return list\n}\n\n/**\n * @param {string|_Token|Array<string|_Token>} value\n * @param {string} language\n * @returns {Text|RefractorElement|Array<Text|RefractorElement>}\n */\nfunction stringify(value, language) {\n if (typeof value === 'string') {\n return {type: 'text', value}\n }\n\n if (Array.isArray(value)) {\n /** @type {Array<Text|RefractorElement>} */\n const result = []\n let index = -1\n\n while (++index < value.length) {\n if (\n value[index] !== '' &&\n value[index] !== null &&\n value[index] !== undefined\n ) {\n // @ts-expect-error Assume no sub-arrays.\n result.push(stringify(value[index], language))\n }\n }\n\n return result\n }\n\n /** @type {_Env} */\n const env = {\n type: value.type,\n content: stringify(value.content, language),\n tag: 'span',\n classes: ['token', value.type],\n attributes: {},\n language\n }\n\n if (value.alias) {\n env.classes.push(\n ...(typeof value.alias === 'string' ? [value.alias] : value.alias)\n )\n }\n\n // @ts-expect-error Prism.\n refractor.hooks.run('wrap', env)\n\n // @ts-expect-error Hush, it’s fine.\n return h(\n env.tag + '.' + env.classes.join('.'),\n attributes(env.attributes),\n env.content\n )\n}\n\n/**\n * @template {unknown} T\n * @param {T} tokens\n * @returns {T}\n */\nfunction encode(tokens) {\n return tokens\n}\n\n/**\n * @param {Record<string, string>} attrs\n * @returns {Record<string, string>}\n */\nfunction attributes(attrs) {\n /** @type {string} */\n let key\n\n for (key in attrs) {\n if (own.call(attrs, key)) {\n attrs[key] = parseEntities(attrs[key])\n }\n }\n\n return attrs\n}\n","// @ts-nocheck\nabap.displayName = 'abap'\nabap.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function abap(Prism) {\n Prism.languages.abap = {\n comment: /^\\*.*/m,\n string: /(`|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n 'string-template': {\n pattern: /([|}])(?:\\\\.|[^\\\\|{\\r\\n])*(?=[|{])/,\n lookbehind: true,\n alias: 'string'\n },\n /* End Of Line comments should not interfere with strings when the\nquote character occurs within them. We assume a string being highlighted\ninside an EOL comment is more acceptable than the opposite.\n*/\n 'eol-comment': {\n pattern: /(^|\\s)\".*/m,\n lookbehind: true,\n alias: 'comment'\n },\n keyword: {\n pattern:\n /(\\s|\\.|^)(?:\\*-INPUT|\\?TO|ABAP-SOURCE|ABBREVIATED|ABS|ABSTRACT|ACCEPT|ACCEPTING|ACCESSPOLICY|ACCORDING|ACOS|ACTIVATION|ACTUAL|ADD|ADD-CORRESPONDING|ADJACENT|AFTER|ALIAS|ALIASES|ALIGN|ALL|ALLOCATE|ALPHA|ANALYSIS|ANALYZER|AND|ANY|APPEND|APPENDAGE|APPENDING|APPLICATION|ARCHIVE|AREA|ARITHMETIC|AS|ASCENDING|ASIN|ASPECT|ASSERT|ASSIGN|ASSIGNED|ASSIGNING|ASSOCIATION|ASYNCHRONOUS|AT|ATAN|ATTRIBUTES|AUTHORITY|AUTHORITY-CHECK|AVG|BACK|BACKGROUND|BACKUP|BACKWARD|BADI|BASE|BEFORE|BEGIN|BETWEEN|BIG|BINARY|BINDING|BIT|BIT-AND|BIT-NOT|BIT-OR|BIT-XOR|BLACK|BLANK|BLANKS|BLOB|BLOCK|BLOCKS|BLUE|BOUND|BOUNDARIES|BOUNDS|BOXED|BREAK-POINT|BT|BUFFER|BY|BYPASSING|BYTE|BYTE-CA|BYTE-CN|BYTE-CO|BYTE-CS|BYTE-NA|BYTE-NS|BYTE-ORDER|C|CA|CALL|CALLING|CASE|CAST|CASTING|CATCH|CEIL|CENTER|CENTERED|CHAIN|CHAIN-INPUT|CHAIN-REQUEST|CHANGE|CHANGING|CHANNELS|CHAR-TO-HEX|CHARACTER|CHARLEN|CHECK|CHECKBOX|CIRCULAR|CI_|CLASS|CLASS-CODING|CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|CLEANUP|CLEAR|CLIENT|CLOB|CLOCK|CLOSE|CN|CNT|CO|COALESCE|CODE|CODING|COLLECT|COLOR|COLUMN|COLUMNS|COL_BACKGROUND|COL_GROUP|COL_HEADING|COL_KEY|COL_NEGATIVE|COL_NORMAL|COL_POSITIVE|COL_TOTAL|COMMENT|COMMENTS|COMMIT|COMMON|COMMUNICATION|COMPARING|COMPONENT|COMPONENTS|COMPRESSION|COMPUTE|CONCAT|CONCATENATE|COND|CONDENSE|CONDITION|CONNECT|CONNECTION|CONSTANTS|CONTEXT|CONTEXTS|CONTINUE|CONTROL|CONTROLS|CONV|CONVERSION|CONVERT|COPIES|COPY|CORRESPONDING|COS|COSH|COUNT|COUNTRY|COVER|CP|CPI|CREATE|CREATING|CRITICAL|CS|CURRENCY|CURRENCY_CONVERSION|CURRENT|CURSOR|CURSOR-SELECTION|CUSTOMER|CUSTOMER-FUNCTION|DANGEROUS|DATA|DATABASE|DATAINFO|DATASET|DATE|DAYLIGHT|DBMAXLEN|DD\\/MM\\/YY|DD\\/MM\\/YYYY|DDMMYY|DEALLOCATE|DECIMALS|DECIMAL_SHIFT|DECLARATIONS|DEEP|DEFAULT|DEFERRED|DEFINE|DEFINING|DEFINITION|DELETE|DELETING|DEMAND|DEPARTMENT|DESCENDING|DESCRIBE|DESTINATION|DETAIL|DIALOG|DIRECTORY|DISCONNECT|DISPLAY|DISPLAY-MODE|DISTANCE|DISTINCT|DIV|DIVIDE|DIVIDE-CORRESPONDING|DIVISION|DO|DUMMY|DUPLICATE|DUPLICATES|DURATION|DURING|DYNAMIC|DYNPRO|E|EACH|EDIT|EDITOR-CALL|ELSE|ELSEIF|EMPTY|ENABLED|ENABLING|ENCODING|END|END-ENHANCEMENT-SECTION|END-LINES|END-OF-DEFINITION|END-OF-FILE|END-OF-PAGE|END-OF-SELECTION|ENDAT|ENDCASE|ENDCATCH|ENDCHAIN|ENDCLASS|ENDDO|ENDENHANCEMENT|ENDEXEC|ENDFOR|ENDFORM|ENDFUNCTION|ENDIAN|ENDIF|ENDING|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDON|ENDPROVIDE|ENDSELECT|ENDTRY|ENDWHILE|ENGINEERING|ENHANCEMENT|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|ENHANCEMENTS|ENTRIES|ENTRY|ENVIRONMENT|EQ|EQUAL|EQUIV|ERRORMESSAGE|ERRORS|ESCAPE|ESCAPING|EVENT|EVENTS|EXACT|EXCEPT|EXCEPTION|EXCEPTION-TABLE|EXCEPTIONS|EXCLUDE|EXCLUDING|EXEC|EXECUTE|EXISTS|EXIT|EXIT-COMMAND|EXP|EXPAND|EXPANDING|EXPIRATION|EXPLICIT|EXPONENT|EXPORT|EXPORTING|EXTEND|EXTENDED|EXTENSION|EXTRACT|FAIL|FETCH|FIELD|FIELD-GROUPS|FIELD-SYMBOL|FIELD-SYMBOLS|FIELDS|FILE|FILTER|FILTER-TABLE|FILTERS|FINAL|FIND|FIRST|FIRST-LINE|FIXED-POINT|FKEQ|FKGE|FLOOR|FLUSH|FONT|FOR|FORM|FORMAT|FORWARD|FOUND|FRAC|FRAME|FRAMES|FREE|FRIENDS|FROM|FUNCTION|FUNCTION-POOL|FUNCTIONALITY|FURTHER|GAPS|GE|GENERATE|GET|GIVING|GKEQ|GKGE|GLOBAL|GRANT|GREATER|GREEN|GROUP|GROUPS|GT|HANDLE|HANDLER|HARMLESS|HASHED|HAVING|HDB|HEAD-LINES|HEADER|HEADERS|HEADING|HELP-ID|HELP-REQUEST|HIDE|HIGH|HINT|HOLD|HOTSPOT|I|ICON|ID|IDENTIFICATION|IDENTIFIER|IDS|IF|IGNORE|IGNORING|IMMEDIATELY|IMPLEMENTATION|IMPLEMENTATIONS|IMPLEMENTED|IMPLICIT|IMPORT|IMPORTING|IN|INACTIVE|INCL|INCLUDE|INCLUDES|INCLUDING|INCREMENT|INDEX|INDEX-LINE|INFOTYPES|INHERITING|INIT|INITIAL|INITIALIZATION|INNER|INOUT|INPUT|INSERT|INSTANCES|INTENSIFIED|INTERFACE|INTERFACE-POOL|INTERFACES|INTERNAL|INTERVALS|INTO|INVERSE|INVERTED-DATE|IS|ISO|ITERATOR|ITNO|JOB|JOIN|KEEP|KEEPING|KERNEL|KEY|KEYS|KEYWORDS|KIND|LANGUAGE|LAST|LATE|LAYOUT|LE|LEADING|LEAVE|LEFT|LEFT-JUSTIFIED|LEFTPLUS|LEFTSPACE|LEGACY|LENGTH|LESS|LET|LEVEL|LEVELS|LIKE|LINE|LINE-COUNT|LINE-SELECTION|LINE-SIZE|LINEFEED|LINES|LIST|LIST-PROCESSING|LISTBOX|LITTLE|LLANG|LOAD|LOAD-OF-PROGRAM|LOB|LOCAL|LOCALE|LOCATOR|LOG|LOG-POINT|LOG10|LOGFILE|LOGICAL|LONG|LOOP|LOW|LOWER|LPAD|LPI|LT|M|MAIL|MAIN|MAJOR-ID|MAPPING|MARGIN|MARK|MASK|MATCH|MATCHCODE|MAX|MAXIMUM|MEDIUM|MEMBERS|MEMORY|MESH|MESSAGE|MESSAGE-ID|MESSAGES|MESSAGING|METHOD|METHODS|MIN|MINIMUM|MINOR-ID|MM\\/DD\\/YY|MM\\/DD\\/YYYY|MMDDYY|MOD|MODE|MODIF|MODIFIER|MODIFY|MODULE|MOVE|MOVE-CORRESPONDING|MULTIPLY|MULTIPLY-CORRESPONDING|NA|NAME|NAMETAB|NATIVE|NB|NE|NESTED|NESTING|NEW|NEW-LINE|NEW-PAGE|NEW-SECTION|NEXT|NO|NO-DISPLAY|NO-EXTENSION|NO-GAP|NO-GAPS|NO-GROUPING|NO-HEADING|NO-SCROLLING|NO-SIGN|NO-TITLE|NO-TOPOFPAGE|NO-ZERO|NODE|NODES|NON-UNICODE|NON-UNIQUE|NOT|NP|NS|NULL|NUMBER|NUMOFCHAR|O|OBJECT|OBJECTS|OBLIGATORY|OCCURRENCE|OCCURRENCES|OCCURS|OF|OFF|OFFSET|OLE|ON|ONLY|OPEN|OPTION|OPTIONAL|OPTIONS|OR|ORDER|OTHER|OTHERS|OUT|OUTER|OUTPUT|OUTPUT-LENGTH|OVERFLOW|OVERLAY|PACK|PACKAGE|PAD|PADDING|PAGE|PAGES|PARAMETER|PARAMETER-TABLE|PARAMETERS|PART|PARTIALLY|PATTERN|PERCENTAGE|PERFORM|PERFORMING|PERSON|PF|PF-STATUS|PINK|PLACES|POOL|POSITION|POS_HIGH|POS_LOW|PRAGMAS|PRECOMPILED|PREFERRED|PRESERVING|PRIMARY|PRINT|PRINT-CONTROL|PRIORITY|PRIVATE|PROCEDURE|PROCESS|PROGRAM|PROPERTY|PROTECTED|PROVIDE|PUBLIC|PUSHBUTTON|PUT|QUEUE-ONLY|QUICKINFO|RADIOBUTTON|RAISE|RAISING|RANGE|RANGES|RAW|READ|READ-ONLY|READER|RECEIVE|RECEIVED|RECEIVER|RECEIVING|RED|REDEFINITION|REDUCE|REDUCED|REF|REFERENCE|REFRESH|REGEX|REJECT|REMOTE|RENAMING|REPLACE|REPLACEMENT|REPLACING|REPORT|REQUEST|REQUESTED|RESERVE|RESET|RESOLUTION|RESPECTING|RESPONSIBLE|RESULT|RESULTS|RESUMABLE|RESUME|RETRY|RETURN|RETURNCODE|RETURNING|RIGHT|RIGHT-JUSTIFIED|RIGHTPLUS|RIGHTSPACE|RISK|RMC_COMMUNICATION_FAILURE|RMC_INVALID_STATUS|RMC_SYSTEM_FAILURE|ROLE|ROLLBACK|ROUND|ROWS|RTTI|RUN|SAP|SAP-SPOOL|SAVING|SCALE_PRESERVING|SCALE_PRESERVING_SCIENTIFIC|SCAN|SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO|SCREEN|SCROLL|SCROLL-BOUNDARY|SCROLLING|SEARCH|SECONDARY|SECONDS|SECTION|SELECT|SELECT-OPTIONS|SELECTION|SELECTION-SCREEN|SELECTION-SET|SELECTION-SETS|SELECTION-TABLE|SELECTIONS|SELECTOR|SEND|SEPARATE|SEPARATED|SET|SHARED|SHIFT|SHORT|SHORTDUMP-ID|SIGN|SIGN_AS_POSTFIX|SIMPLE|SIN|SINGLE|SINH|SIZE|SKIP|SKIPPING|SMART|SOME|SORT|SORTABLE|SORTED|SOURCE|SPACE|SPECIFIED|SPLIT|SPOOL|SPOTS|SQL|SQLSCRIPT|SQRT|STABLE|STAMP|STANDARD|START-OF-SELECTION|STARTING|STATE|STATEMENT|STATEMENTS|STATIC|STATICS|STATUSINFO|STEP-LOOP|STOP|STRLEN|STRUCTURE|STRUCTURES|STYLE|SUBKEY|SUBMATCHES|SUBMIT|SUBROUTINE|SUBSCREEN|SUBSTRING|SUBTRACT|SUBTRACT-CORRESPONDING|SUFFIX|SUM|SUMMARY|SUMMING|SUPPLIED|SUPPLY|SUPPRESS|SWITCH|SWITCHSTATES|SYMBOL|SYNCPOINTS|SYNTAX|SYNTAX-CHECK|SYNTAX-TRACE|SYSTEM-CALL|SYSTEM-EXCEPTIONS|SYSTEM-EXIT|TAB|TABBED|TABLE|TABLES|TABLEVIEW|TABSTRIP|TAN|TANH|TARGET|TASK|TASKS|TEST|TESTING|TEXT|TEXTPOOL|THEN|THROW|TIME|TIMES|TIMESTAMP|TIMEZONE|TITLE|TITLE-LINES|TITLEBAR|TO|TOKENIZATION|TOKENS|TOP-LINES|TOP-OF-PAGE|TRACE-FILE|TRACE-TABLE|TRAILING|TRANSACTION|TRANSFER|TRANSFORMATION|TRANSLATE|TRANSPORTING|TRMAC|TRUNC|TRUNCATE|TRUNCATION|TRY|TYPE|TYPE-POOL|TYPE-POOLS|TYPES|ULINE|UNASSIGN|UNDER|UNICODE|UNION|UNIQUE|UNIT|UNIT_CONVERSION|UNIX|UNPACK|UNTIL|UNWIND|UP|UPDATE|UPPER|USER|USER-COMMAND|USING|UTF-8|VALID|VALUE|VALUE-REQUEST|VALUES|VARY|VARYING|VERIFICATION-MESSAGE|VERSION|VIA|VIEW|VISIBLE|WAIT|WARNING|WHEN|WHENEVER|WHERE|WHILE|WIDTH|WINDOW|WINDOWS|WITH|WITH-HEADING|WITH-TITLE|WITHOUT|WORD|WORK|WRITE|WRITER|X|XML|XOR|XSD|XSTRLEN|YELLOW|YES|YYMMDD|Z|ZERO|ZONE)(?![\\w-])/i,\n lookbehind: true\n },\n /* Numbers can be only integers. Decimal or Hex appear only as strings */\n number: /\\b\\d+\\b/,\n /* Operators must always be surrounded by whitespace, they cannot be put\nadjacent to operands.\n*/\n operator: {\n pattern: /(\\s)(?:\\*\\*?|<[=>]?|>=?|\\?=|[-+\\/=])(?=\\s)/,\n lookbehind: true\n },\n 'string-operator': {\n pattern: /(\\s)&&?(?=\\s)/,\n lookbehind: true,\n /* The official editor highlights */\n alias: 'keyword'\n },\n 'token-operator': [\n {\n /* Special operators used to access structure components, class methods/attributes, etc. */\n pattern: /(\\w)(?:->?|=>|[~|{}])(?=\\w)/,\n lookbehind: true,\n alias: 'punctuation'\n },\n {\n /* Special tokens used do delimit string templates */\n pattern: /[|{}]/,\n alias: 'punctuation'\n }\n ],\n punctuation: /[,.:()]/\n }\n}\n","// @ts-nocheck\nabnf.displayName = 'abnf'\nabnf.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function abnf(Prism) {\n ;(function (Prism) {\n var coreRules =\n '(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)'\n Prism.languages.abnf = {\n comment: /;.*/,\n string: {\n pattern: /(?:%[is])?\"[^\"\\n\\r]*\"/,\n greedy: true,\n inside: {\n punctuation: /^%[is]/\n }\n },\n range: {\n pattern: /%(?:b[01]+-[01]+|d\\d+-\\d+|x[A-F\\d]+-[A-F\\d]+)/i,\n alias: 'number'\n },\n terminal: {\n pattern:\n /%(?:b[01]+(?:\\.[01]+)*|d\\d+(?:\\.\\d+)*|x[A-F\\d]+(?:\\.[A-F\\d]+)*)/i,\n alias: 'number'\n },\n repetition: {\n pattern: /(^|[^\\w-])(?:\\d*\\*\\d*|\\d+)/,\n lookbehind: true,\n alias: 'operator'\n },\n definition: {\n pattern: /(^[ \\t]*)(?:[a-z][\\w-]*|<[^<>\\r\\n]*>)(?=\\s*=)/m,\n lookbehind: true,\n alias: 'keyword',\n inside: {\n punctuation: /<|>/\n }\n },\n 'core-rule': {\n pattern: RegExp(\n '(?:(^|[^<\\\\w-])' + coreRules + '|<' + coreRules + '>)(?![\\\\w-])',\n 'i'\n ),\n lookbehind: true,\n alias: ['rule', 'constant'],\n inside: {\n punctuation: /<|>/\n }\n },\n rule: {\n pattern: /(^|[^<\\w-])[a-z][\\w-]*|<[^<>\\r\\n]*>/i,\n lookbehind: true,\n inside: {\n punctuation: /<|>/\n }\n },\n operator: /=\\/?|\\//,\n punctuation: /[()\\[\\]]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\nactionscript.displayName = 'actionscript'\nactionscript.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function actionscript(Prism) {\n Prism.register(refractorJavascript)\n Prism.languages.actionscript = Prism.languages.extend('javascript', {\n keyword:\n /\\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\\b/,\n operator: /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/\n })\n Prism.languages.actionscript['class-name'].alias = 'function'\n\n // doesn't work with AS because AS is too complex\n delete Prism.languages.actionscript['parameter']\n delete Prism.languages.actionscript['literal-property']\n if (Prism.languages.markup) {\n Prism.languages.insertBefore('actionscript', 'string', {\n xml: {\n pattern:\n /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2)*\\s*\\/?>/,\n lookbehind: true,\n inside: Prism.languages.markup\n }\n })\n }\n}\n","// @ts-nocheck\nada.displayName = 'ada'\nada.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function ada(Prism) {\n Prism.languages.ada = {\n comment: /--.*/,\n string: /\"(?:\"\"|[^\"\\r\\f\\n])*\"/,\n number: [\n {\n pattern:\n /\\b\\d(?:_?\\d)*#[\\dA-F](?:_?[\\dA-F])*(?:\\.[\\dA-F](?:_?[\\dA-F])*)?#(?:E[+-]?\\d(?:_?\\d)*)?/i\n },\n {\n pattern: /\\b\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:E[+-]?\\d(?:_?\\d)*)?\\b/i\n }\n ],\n attribute: {\n pattern: /\\b'\\w+/,\n alias: 'attr-name'\n },\n keyword:\n /\\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\\b/i,\n boolean: /\\b(?:false|true)\\b/i,\n operator: /<[=>]?|>=?|=>?|:=|\\/=?|\\*\\*?|[&+-]/,\n punctuation: /\\.\\.?|[,;():]/,\n char: /'.'/,\n variable: /\\b[a-z](?:\\w)*\\b/i\n }\n}\n","// @ts-nocheck\nagda.displayName = 'agda'\nagda.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function agda(Prism) {\n ;(function (Prism) {\n Prism.languages.agda = {\n comment: /\\{-[\\s\\S]*?(?:-\\}|$)|--.*/,\n string: {\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n punctuation: /[(){}⦃⦄.;@]/,\n 'class-name': {\n pattern: /((?:data|record) +)\\S+/,\n lookbehind: true\n },\n function: {\n pattern: /(^[ \\t]*)(?!\\s)[^:\\r\\n]+(?=:)/m,\n lookbehind: true\n },\n operator: {\n pattern: /(^\\s*|\\s)(?:[=|:∀→λ\\\\?_]|->)(?=\\s)/,\n lookbehind: true\n },\n keyword:\n /\\b(?:Set|abstract|constructor|data|eta-equality|field|forall|hiding|import|in|inductive|infix|infixl|infixr|instance|let|macro|module|mutual|no-eta-equality|open|overlap|pattern|postulate|primitive|private|public|quote|quoteContext|quoteGoal|quoteTerm|record|renaming|rewrite|syntax|tactic|unquote|unquoteDecl|unquoteDef|using|variable|where|with)\\b/\n }\n })(Prism)\n}\n","// @ts-nocheck\nal.displayName = 'al'\nal.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function al(Prism) {\n // based on https://github.com/microsoft/AL/blob/master/grammar/alsyntax.tmlanguage\n\n Prism.languages.al = {\n comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n string: {\n pattern: /'(?:''|[^'\\r\\n])*'(?!')|\"(?:\"\"|[^\"\\r\\n])*\"(?!\")/,\n greedy: true\n },\n function: {\n pattern:\n /(\\b(?:event|procedure|trigger)\\s+|(?:^|[^.])\\.\\s*)[a-z_]\\w*(?=\\s*\\()/i,\n lookbehind: true\n },\n keyword: [\n // keywords\n /\\b(?:array|asserterror|begin|break|case|do|downto|else|end|event|exit|for|foreach|function|if|implements|in|indataset|interface|internal|local|of|procedure|program|protected|repeat|runonclient|securityfiltering|suppressdispose|temporary|then|to|trigger|until|var|while|with|withevents)\\b/i,\n // objects and metadata that are used like keywords\n /\\b(?:action|actions|addafter|addbefore|addfirst|addlast|area|assembly|chartpart|codeunit|column|controladdin|cuegroup|customizes|dataitem|dataset|dotnet|elements|enum|enumextension|extends|field|fieldattribute|fieldelement|fieldgroup|fieldgroups|fields|filter|fixed|grid|group|key|keys|label|labels|layout|modify|moveafter|movebefore|movefirst|movelast|page|pagecustomization|pageextension|part|profile|query|repeater|report|requestpage|schema|separator|systempart|table|tableelement|tableextension|textattribute|textelement|type|usercontrol|value|xmlport)\\b/i\n ],\n number:\n /\\b(?:0x[\\da-f]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?)(?:F|LL?|U(?:LL?)?)?\\b/i,\n boolean: /\\b(?:false|true)\\b/i,\n variable: /\\b(?:Curr(?:FieldNo|Page|Report)|x?Rec|RequestOptionsPage)\\b/,\n 'class-name':\n /\\b(?:automation|biginteger|bigtext|blob|boolean|byte|char|clienttype|code|completiontriggererrorlevel|connectiontype|database|dataclassification|datascope|date|dateformula|datetime|decimal|defaultlayout|dialog|dictionary|dotnetassembly|dotnettypedeclaration|duration|errorinfo|errortype|executioncontext|executionmode|fieldclass|fieldref|fieldtype|file|filterpagebuilder|guid|httpclient|httpcontent|httpheaders|httprequestmessage|httpresponsemessage|instream|integer|joker|jsonarray|jsonobject|jsontoken|jsonvalue|keyref|list|moduledependencyinfo|moduleinfo|none|notification|notificationscope|objecttype|option|outstream|pageresult|record|recordid|recordref|reportformat|securityfilter|sessionsettings|tableconnectiontype|tablefilter|testaction|testfield|testfilterfield|testpage|testpermissions|testrequestpage|text|textbuilder|textconst|textencoding|time|transactionmodel|transactiontype|variant|verbosity|version|view|views|webserviceactioncontext|webserviceactionresultcode|xmlattribute|xmlattributecollection|xmlcdata|xmlcomment|xmldeclaration|xmldocument|xmldocumenttype|xmlelement|xmlnamespacemanager|xmlnametable|xmlnode|xmlnodelist|xmlprocessinginstruction|xmlreadoptions|xmltext|xmlwriteoptions)\\b/i,\n operator: /\\.\\.|:[=:]|[-+*/]=?|<>|[<>]=?|=|\\b(?:and|div|mod|not|or|xor)\\b/i,\n punctuation: /[()\\[\\]{}:.;,]/\n }\n}\n","// @ts-nocheck\nantlr4.displayName = 'antlr4'\nantlr4.aliases = ['g4']\n\n/** @type {import('../core.js').Syntax} */\nexport default function antlr4(Prism) {\n Prism.languages.antlr4 = {\n comment: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n string: {\n pattern: /'(?:\\\\.|[^\\\\'\\r\\n])*'/,\n greedy: true\n },\n 'character-class': {\n pattern: /\\[(?:\\\\.|[^\\\\\\]\\r\\n])*\\]/,\n greedy: true,\n alias: 'regex',\n inside: {\n range: {\n pattern: /([^[]|(?:^|[^\\\\])(?:\\\\\\\\)*\\\\\\[)-(?!\\])/,\n lookbehind: true,\n alias: 'punctuation'\n },\n escape:\n /\\\\(?:u(?:[a-fA-F\\d]{4}|\\{[a-fA-F\\d]+\\})|[pP]\\{[=\\w-]+\\}|[^\\r\\nupP])/,\n punctuation: /[\\[\\]]/\n }\n },\n action: {\n pattern: /\\{(?:[^{}]|\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\\}/,\n greedy: true,\n inside: {\n content: {\n // this might be C, C++, Python, Java, C#, or any other language ANTLR4 compiles to\n pattern: /(\\{)[\\s\\S]+(?=\\})/,\n lookbehind: true\n },\n punctuation: /[{}]/\n }\n },\n command: {\n pattern:\n /(->\\s*(?!\\s))(?:\\s*(?:,\\s*)?\\b[a-z]\\w*(?:\\s*\\([^()\\r\\n]*\\))?)+(?=\\s*;)/i,\n lookbehind: true,\n inside: {\n function: /\\b\\w+(?=\\s*(?:[,(]|$))/,\n punctuation: /[,()]/\n }\n },\n annotation: {\n pattern: /@\\w+(?:::\\w+)*/,\n alias: 'keyword'\n },\n label: {\n pattern: /#[ \\t]*\\w+/,\n alias: 'punctuation'\n },\n keyword:\n /\\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\\b/,\n definition: [\n {\n pattern: /\\b[a-z]\\w*(?=\\s*:)/,\n alias: ['rule', 'class-name']\n },\n {\n pattern: /\\b[A-Z]\\w*(?=\\s*:)/,\n alias: ['token', 'constant']\n }\n ],\n constant: /\\b[A-Z][A-Z_]*\\b/,\n operator: /\\.\\.|->|[|~]|[*+?]\\??/,\n punctuation: /[;:()=]/\n }\n Prism.languages.g4 = Prism.languages.antlr4\n}\n","// @ts-nocheck\napacheconf.displayName = 'apacheconf'\napacheconf.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function apacheconf(Prism) {\n Prism.languages.apacheconf = {\n comment: /#.*/,\n 'directive-inline': {\n pattern:\n /(^[\\t ]*)\\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|Type|UserFile|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|Limit(?:InternalRecursion|Request(?:Body|Fields|FieldSize|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|SRPUnknownUserSeed|SRPVerifierFile|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UserName|UseStapling|VerifyClient|VerifyDepth)|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\\b/im,\n lookbehind: true,\n alias: 'property'\n },\n 'directive-block': {\n pattern:\n /<\\/?\\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\\b.*>/i,\n inside: {\n 'directive-block': {\n pattern: /^<\\/?\\w+/,\n inside: {\n punctuation: /^<\\/?/\n },\n alias: 'tag'\n },\n 'directive-block-parameter': {\n pattern: /.*[^>]/,\n inside: {\n punctuation: /:/,\n string: {\n pattern: /(\"|').*\\1/,\n inside: {\n variable: /[$%]\\{?(?:\\w\\.?[-+:]?)+\\}?/\n }\n }\n },\n alias: 'attr-value'\n },\n punctuation: />/\n },\n alias: 'tag'\n },\n 'directive-flags': {\n pattern: /\\[(?:[\\w=],?)+\\]/,\n alias: 'keyword'\n },\n string: {\n pattern: /(\"|').*\\1/,\n inside: {\n variable: /[$%]\\{?(?:\\w\\.?[-+:]?)+\\}?/\n }\n },\n variable: /[$%]\\{?(?:\\w\\.?[-+:]?)+\\}?/,\n regex: /\\^?.*\\$|\\^.*\\$?/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nimport refractorSql from './sql.js'\napex.displayName = 'apex'\napex.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function apex(Prism) {\n Prism.register(refractorClike)\n Prism.register(refractorSql)\n ;(function (Prism) {\n var keywords =\n /\\b(?:(?:after|before)(?=\\s+[a-z])|abstract|activate|and|any|array|as|asc|autonomous|begin|bigdecimal|blob|boolean|break|bulk|by|byte|case|cast|catch|char|class|collect|commit|const|continue|currency|date|datetime|decimal|default|delete|desc|do|double|else|end|enum|exception|exit|export|extends|final|finally|float|for|from|get(?=\\s*[{};])|global|goto|group|having|hint|if|implements|import|in|inner|insert|instanceof|int|integer|interface|into|join|like|limit|list|long|loop|map|merge|new|not|null|nulls|number|object|of|on|or|outer|override|package|parallel|pragma|private|protected|public|retrieve|return|rollback|select|set|short|sObject|sort|static|string|super|switch|synchronized|system|testmethod|then|this|throw|time|transaction|transient|trigger|try|undelete|update|upsert|using|virtual|void|webservice|when|where|while|(?:inherited|with|without)\\s+sharing)\\b/i\n var className =\n /\\b(?:(?=[a-z_]\\w*\\s*[<\\[])|(?!<keyword>))[A-Z_]\\w*(?:\\s*\\.\\s*[A-Z_]\\w*)*\\b(?:\\s*(?:\\[\\s*\\]|<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>))*/.source.replace(\n /<keyword>/g,\n function () {\n return keywords.source\n }\n )\n /** @param {string} pattern */\n function insertClassName(pattern) {\n return RegExp(\n pattern.replace(/<CLASS-NAME>/g, function () {\n return className\n }),\n 'i'\n )\n }\n var classNameInside = {\n keyword: keywords,\n punctuation: /[()\\[\\]{};,:.<>]/\n }\n Prism.languages.apex = {\n comment: Prism.languages.clike.comment,\n string: Prism.languages.clike.string,\n sql: {\n pattern: /((?:[=,({:]|\\breturn)\\s*)\\[[^\\[\\]]*\\]/i,\n lookbehind: true,\n greedy: true,\n alias: 'language-sql',\n inside: Prism.languages.sql\n },\n annotation: {\n pattern: /@\\w+\\b/,\n alias: 'punctuation'\n },\n 'class-name': [\n {\n pattern: insertClassName(\n /(\\b(?:class|enum|extends|implements|instanceof|interface|new|trigger\\s+\\w+\\s+on)\\s+)<CLASS-NAME>/\n .source\n ),\n lookbehind: true,\n inside: classNameInside\n },\n {\n // cast\n pattern: insertClassName(\n /(\\(\\s*)<CLASS-NAME>(?=\\s*\\)\\s*[\\w(])/.source\n ),\n lookbehind: true,\n inside: classNameInside\n },\n {\n // variable/parameter declaration and return types\n pattern: insertClassName(/<CLASS-NAME>(?=\\s*\\w+\\s*[;=,(){:])/.source),\n inside: classNameInside\n }\n ],\n trigger: {\n pattern: /(\\btrigger\\s+)\\w+\\b/i,\n lookbehind: true,\n alias: 'class-name'\n },\n keyword: keywords,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n boolean: /\\b(?:false|true)\\b/i,\n number: /(?:\\B\\.\\d+|\\b\\d+(?:\\.\\d+|L)?)\\b/i,\n operator:\n /[!=](?:==?)?|\\?\\.?|&&|\\|\\||--|\\+\\+|[-+*/^&|]=?|:|<<?=?|>{1,3}=?/,\n punctuation: /[()\\[\\]{};,.]/\n }\n })(Prism)\n}\n","// @ts-nocheck\napl.displayName = 'apl'\napl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function apl(Prism) {\n Prism.languages.apl = {\n comment: /(?:⍝|#[! ]).*$/m,\n string: {\n pattern: /'(?:[^'\\r\\n]|'')*'/,\n greedy: true\n },\n number:\n /¯?(?:\\d*\\.?\\b\\d+(?:e[+¯]?\\d+)?|¯|∞)(?:j¯?(?:(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+¯]?\\d+)?|¯|∞))?/i,\n statement: /:[A-Z][a-z][A-Za-z]*\\b/,\n 'system-function': {\n pattern: /⎕[A-Z]+/i,\n alias: 'function'\n },\n constant: /[⍬⌾#⎕⍞]/,\n function: /[-+×÷⌈⌊∣|⍳⍸?*⍟○!⌹<≤=>≥≠≡≢∊⍷∪∩~∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⊆⊇⌷⍋⍒⊤⊥⍕⍎⊣⊢⍁⍂≈⍯↗¤→]/,\n 'monadic-operator': {\n pattern: /[\\\\\\/⌿⍀¨⍨⌶&∥]/,\n alias: 'operator'\n },\n 'dyadic-operator': {\n pattern: /[.⍣⍠⍤∘⌸@⌺⍥]/,\n alias: 'operator'\n },\n assignment: {\n pattern: /←/,\n alias: 'keyword'\n },\n punctuation: /[\\[;\\]()◇⋄]/,\n dfn: {\n pattern: /[{}⍺⍵⍶⍹∇⍫:]/,\n alias: 'builtin'\n }\n }\n}\n","// @ts-nocheck\napplescript.displayName = 'applescript'\napplescript.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function applescript(Prism) {\n Prism.languages.applescript = {\n comment: [\n // Allow one level of nesting\n /\\(\\*(?:\\(\\*(?:[^*]|\\*(?!\\)))*\\*\\)|(?!\\(\\*)[\\s\\S])*?\\*\\)/,\n /--.+/,\n /#.+/\n ],\n string: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e-?\\d+)?\\b/i,\n operator: [\n /[&=≠≤≥*+\\-\\/÷^]|[<>]=?/,\n /\\b(?:(?:begin|end|start)s? with|(?:contains?|(?:does not|doesn't) contain)|(?:is|isn't|is not) (?:contained by|in)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:comes|(?:does not|doesn't) come) (?:after|before)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equal to|equals|is not|isn't)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|as|div|mod|not|or))\\b/\n ],\n keyword:\n /\\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\b/,\n 'class-name':\n /\\b(?:POSIX file|RGB color|alias|application|boolean|centimeters|centimetres|class|constant|cubic centimeters|cubic centimetres|cubic feet|cubic inches|cubic meters|cubic metres|cubic yards|date|degrees Celsius|degrees Fahrenheit|degrees Kelvin|feet|file|gallons|grams|inches|integer|kilograms|kilometers|kilometres|list|liters|litres|meters|metres|miles|number|ounces|pounds|quarts|real|record|reference|script|square feet|square kilometers|square kilometres|square meters|square metres|square miles|square yards|text|yards)\\b/,\n punctuation: /[{}():,¬«»《》]/\n }\n}\n","// @ts-nocheck\naql.displayName = 'aql'\naql.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function aql(Prism) {\n Prism.languages.aql = {\n comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n property: {\n pattern:\n /([{,]\\s*)(?:(?!\\d)\\w+|([\"'´`])(?:(?!\\2)[^\\\\\\r\\n]|\\\\.)*\\2)(?=\\s*:)/,\n lookbehind: true,\n greedy: true\n },\n string: {\n pattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\.)*\\1/,\n greedy: true\n },\n identifier: {\n pattern: /([´`])(?:(?!\\1)[^\\\\\\r\\n]|\\\\.)*\\1/,\n greedy: true\n },\n variable: /@@?\\w+/,\n keyword: [\n {\n pattern: /(\\bWITH\\s+)COUNT(?=\\s+INTO\\b)/i,\n lookbehind: true\n },\n /\\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\\b/i,\n // pseudo keywords get a lookbehind to avoid false positives\n {\n pattern: /(^|[^\\w.[])(?:KEEP|PRUNE|SEARCH|TO)\\b/i,\n lookbehind: true\n },\n {\n pattern: /(^|[^\\w.[])(?:CURRENT|NEW|OLD)\\b/,\n lookbehind: true\n },\n {\n pattern: /\\bOPTIONS(?=\\s*\\{)/i\n }\n ],\n function: /\\b(?!\\d)\\w+(?=\\s*\\()/,\n boolean: /\\b(?:false|true)\\b/i,\n range: {\n pattern: /\\.\\./,\n alias: 'operator'\n },\n number: [\n /\\b0b[01]+/i,\n /\\b0x[0-9a-f]+/i,\n /(?:\\B\\.\\d+|\\b(?:0|[1-9]\\d*)(?:\\.\\d+)?)(?:e[+-]?\\d+)?/i\n ],\n operator: /\\*{2,}|[=!]~|[!=<>]=?|&&|\\|\\||[-+*/%]/,\n punctuation: /::|[?.:,;()[\\]{}]/\n }\n}\n","// @ts-nocheck\narff.displayName = 'arff'\narff.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function arff(Prism) {\n Prism.languages.arff = {\n comment: /%.*/,\n string: {\n pattern: /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n keyword: /@(?:attribute|data|end|relation)\\b/i,\n number: /\\b\\d+(?:\\.\\d+)?\\b/,\n punctuation: /[{},]/\n }\n}\n","// @ts-nocheck\narmasm.displayName = 'armasm'\narmasm.aliases = ['arm-asm']\n\n/** @type {import('../core.js').Syntax} */\nexport default function armasm(Prism) {\n Prism.languages.armasm = {\n comment: {\n pattern: /;.*/,\n greedy: true\n },\n string: {\n pattern: /\"(?:[^\"\\r\\n]|\"\")*\"/,\n greedy: true,\n inside: {\n variable: {\n pattern: /((?:^|[^$])(?:\\${2})*)\\$\\w+/,\n lookbehind: true\n }\n }\n },\n char: {\n pattern: /'(?:[^'\\r\\n]{0,4}|'')'/,\n greedy: true\n },\n 'version-symbol': {\n pattern: /\\|[\\w@]+\\|/,\n greedy: true,\n alias: 'property'\n },\n boolean: /\\b(?:FALSE|TRUE)\\b/,\n directive: {\n pattern:\n /\\b(?:ALIAS|ALIGN|AREA|ARM|ASSERT|ATTR|CN|CODE|CODE16|CODE32|COMMON|CP|DATA|DCB|DCD|DCDO|DCDU|DCFD|DCFDU|DCI|DCQ|DCQU|DCW|DCWU|DN|ELIF|ELSE|END|ENDFUNC|ENDIF|ENDP|ENTRY|EQU|EXPORT|EXPORTAS|EXTERN|FIELD|FILL|FN|FUNCTION|GBLA|GBLL|GBLS|GET|GLOBAL|IF|IMPORT|INCBIN|INCLUDE|INFO|KEEP|LCLA|LCLL|LCLS|LTORG|MACRO|MAP|MEND|MEXIT|NOFP|OPT|PRESERVE8|PROC|QN|READONLY|RELOC|REQUIRE|REQUIRE8|RLIST|ROUT|SETA|SETL|SETS|SN|SPACE|SUBT|THUMB|THUMBX|TTL|WEND|WHILE)\\b/,\n alias: 'property'\n },\n instruction: {\n pattern:\n /((?:^|(?:^|[^\\\\])(?:\\r\\n?|\\n))[ \\t]*(?:(?:[A-Z][A-Z0-9_]*[a-z]\\w*|[a-z]\\w*|\\d+)[ \\t]+)?)\\b[A-Z.]+\\b/,\n lookbehind: true,\n alias: 'keyword'\n },\n variable: /\\$\\w+/,\n number:\n /(?:\\b[2-9]_\\d+|(?:\\b\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e-?\\d+)?|\\b0(?:[fd]_|x)[0-9a-f]+|&[0-9a-f]+)\\b/i,\n register: {\n pattern: /\\b(?:r\\d|lr)\\b/,\n alias: 'symbol'\n },\n operator: /<>|<<|>>|&&|\\|\\||[=!<>/]=?|[+\\-*%#?&|^]|:[A-Z]+:/,\n punctuation: /[()[\\],]/\n }\n Prism.languages['arm-asm'] = Prism.languages.armasm\n}\n","// @ts-nocheck\narturo.displayName = 'arturo'\narturo.aliases = ['art']\n\n/** @type {import('../core.js').Syntax} */\nexport default function arturo(Prism) {\n ;(function (Prism) {\n /**\n * @param {string} lang\n * @param {string} pattern\n */\n var createLanguageString = function (lang, pattern) {\n return {\n pattern: RegExp(\n /\\{!/.source + '(?:' + (pattern || lang) + ')' + /$[\\s\\S]*\\}/.source,\n 'm'\n ),\n greedy: true,\n inside: {\n embedded: {\n pattern: /(^\\{!\\w+\\b)[\\s\\S]+(?=\\}$)/,\n lookbehind: true,\n alias: 'language-' + lang,\n inside: Prism.languages[lang]\n },\n string: /[\\s\\S]+/\n }\n }\n }\n Prism.languages.arturo = {\n comment: {\n pattern: /;.*/,\n greedy: true\n },\n character: {\n pattern: /`.`/,\n alias: 'char',\n greedy: true\n },\n number: {\n pattern: /\\b\\d+(?:\\.\\d+(?:\\.\\d+(?:-[\\w+-]+)?)?)?\\b/\n },\n string: {\n pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"/,\n greedy: true\n },\n regex: {\n pattern: /\\{\\/.*?\\/\\}/,\n greedy: true\n },\n 'html-string': createLanguageString('html'),\n 'css-string': createLanguageString('css'),\n 'js-string': createLanguageString('js'),\n 'md-string': createLanguageString('md'),\n 'sql-string': createLanguageString('sql'),\n 'sh-string': createLanguageString('shell', 'sh'),\n multistring: {\n pattern: /».*|\\{:[\\s\\S]*?:\\}|\\{[\\s\\S]*?\\}|^-{6}$[\\s\\S]*/m,\n alias: 'string',\n greedy: true\n },\n label: {\n pattern: /\\w+\\b\\??:/,\n alias: 'property'\n },\n literal: {\n pattern: /'(?:\\w+\\b\\??:?)/,\n alias: 'constant'\n },\n type: {\n pattern: /:(?:\\w+\\b\\??:?)/,\n alias: 'class-name'\n },\n color: /#\\w+/,\n predicate: {\n pattern:\n /\\b(?:all|and|any|ascii|attr|attribute|attributeLabel|binary|block|char|contains|database|date|dictionary|empty|equal|even|every|exists|false|floating|function|greater|greaterOrEqual|if|in|inline|integer|is|key|label|leap|less|lessOrEqual|literal|logical|lower|nand|negative|nor|not|notEqual|null|numeric|odd|or|path|pathLabel|positive|prefix|prime|regex|same|set|some|sorted|standalone|string|subset|suffix|superset|symbol|symbolLiteral|true|try|type|unless|upper|when|whitespace|word|xnor|xor|zero)\\?/,\n alias: 'keyword'\n },\n 'builtin-function': {\n pattern:\n /\\b(?:abs|acos|acosh|acsec|acsech|actan|actanh|add|after|alert|alias|and|angle|append|arg|args|arity|array|as|asec|asech|asin|asinh|atan|atan2|atanh|attr|attrs|average|before|benchmark|blend|break|call|capitalize|case|ceil|chop|clear|clip|close|color|combine|conj|continue|copy|cos|cosh|crc|csec|csech|ctan|ctanh|cursor|darken|dec|decode|define|delete|desaturate|deviation|dialog|dictionary|difference|digest|digits|div|do|download|drop|dup|e|else|empty|encode|ensure|env|escape|execute|exit|exp|extend|extract|factors|fdiv|filter|first|flatten|floor|fold|from|function|gamma|gcd|get|goto|hash|hypot|if|inc|indent|index|infinity|info|input|insert|inspect|intersection|invert|jaro|join|keys|kurtosis|last|let|levenshtein|lighten|list|ln|log|loop|lower|mail|map|match|max|median|min|mod|module|mul|nand|neg|new|nor|normalize|not|now|null|open|or|outdent|pad|palette|panic|path|pause|permissions|permutate|pi|pop|popup|pow|powerset|powmod|prefix|print|prints|process|product|query|random|range|read|relative|remove|rename|render|repeat|replace|request|return|reverse|round|sample|saturate|script|sec|sech|select|serve|set|shl|shr|shuffle|sin|sinh|size|skewness|slice|sort|spin|split|sqrt|squeeze|stack|strip|sub|suffix|sum|switch|symbols|symlink|sys|take|tan|tanh|terminal|terminate|to|truncate|try|type|unclip|union|unique|unless|until|unzip|upper|values|var|variance|volume|webview|while|with|wordwrap|write|xnor|xor|zip)\\b/,\n alias: 'keyword'\n },\n sugar: {\n pattern: /->|=>|\\||::/,\n alias: 'operator'\n },\n punctuation: /[()[\\],]/,\n symbol: {\n pattern: /<:|-:|ø|@|#|\\+|\\||\\*|\\$|---|-|%|\\/|\\.\\.|\\^|~|=|<|>|\\\\/\n },\n boolean: {\n pattern: /\\b(?:false|maybe|true)\\b/\n }\n }\n Prism.languages.art = Prism.languages['arturo']\n })(Prism)\n}\n","// @ts-nocheck\nasciidoc.displayName = 'asciidoc'\nasciidoc.aliases = ['adoc']\n\n/** @type {import('../core.js').Syntax} */\nexport default function asciidoc(Prism) {\n ;(function (Prism) {\n var attributes = {\n pattern:\n /(^[ \\t]*)\\[(?!\\[)(?:([\"'$`])(?:(?!\\2)[^\\\\]|\\\\.)*\\2|\\[(?:[^\\[\\]\\\\]|\\\\.)*\\]|[^\\[\\]\\\\\"'$`]|\\\\.)*\\]/m,\n lookbehind: true,\n inside: {\n quoted: {\n pattern: /([$`])(?:(?!\\1)[^\\\\]|\\\\.)*\\1/,\n inside: {\n punctuation: /^[$`]|[$`]$/\n }\n },\n interpreted: {\n pattern: /'(?:[^'\\\\]|\\\\.)*'/,\n inside: {\n punctuation: /^'|'$/\n // See rest below\n }\n },\n\n string: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n variable: /\\w+(?==)/,\n punctuation: /^\\[|\\]$|,/,\n operator: /=/,\n // The negative look-ahead prevents blank matches\n 'attr-value': /(?!^\\s+$).+/\n }\n }\n var asciidoc = (Prism.languages.asciidoc = {\n 'comment-block': {\n pattern: /^(\\/{4,})$[\\s\\S]*?^\\1/m,\n alias: 'comment'\n },\n table: {\n pattern: /^\\|={3,}(?:(?:\\r?\\n|\\r(?!\\n)).*)*?(?:\\r?\\n|\\r)\\|={3,}$/m,\n inside: {\n specifiers: {\n pattern:\n /(?:(?:(?:\\d+(?:\\.\\d+)?|\\.\\d+)[+*](?:[<^>](?:\\.[<^>])?|\\.[<^>])?|[<^>](?:\\.[<^>])?|\\.[<^>])[a-z]*|[a-z]+)(?=\\|)/,\n alias: 'attr-value'\n },\n punctuation: {\n pattern: /(^|[^\\\\])[|!]=*/,\n lookbehind: true\n }\n // See rest below\n }\n },\n\n 'passthrough-block': {\n pattern: /^(\\+{4,})$[\\s\\S]*?^\\1$/m,\n inside: {\n punctuation: /^\\++|\\++$/\n // See rest below\n }\n },\n\n // Literal blocks and listing blocks\n 'literal-block': {\n pattern: /^(-{4,}|\\.{4,})$[\\s\\S]*?^\\1$/m,\n inside: {\n punctuation: /^(?:-+|\\.+)|(?:-+|\\.+)$/\n // See rest below\n }\n },\n\n // Sidebar blocks, quote blocks, example blocks and open blocks\n 'other-block': {\n pattern: /^(--|\\*{4,}|_{4,}|={4,})$[\\s\\S]*?^\\1$/m,\n inside: {\n punctuation: /^(?:-+|\\*+|_+|=+)|(?:-+|\\*+|_+|=+)$/\n // See rest below\n }\n },\n\n // list-punctuation and list-label must appear before indented-block\n 'list-punctuation': {\n pattern:\n /(^[ \\t]*)(?:-|\\*{1,5}|\\.{1,5}|(?:[a-z]|\\d+)\\.|[xvi]+\\))(?= )/im,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'list-label': {\n pattern: /(^[ \\t]*)[a-z\\d].+(?::{2,4}|;;)(?=\\s)/im,\n lookbehind: true,\n alias: 'symbol'\n },\n 'indented-block': {\n pattern: /((\\r?\\n|\\r)\\2)([ \\t]+)\\S.*(?:(?:\\r?\\n|\\r)\\3.+)*(?=\\2{2}|$)/,\n lookbehind: true\n },\n comment: /^\\/\\/.*/m,\n title: {\n pattern:\n /^.+(?:\\r?\\n|\\r)(?:={3,}|-{3,}|~{3,}|\\^{3,}|\\+{3,})$|^={1,5} .+|^\\.(?![\\s.]).*/m,\n alias: 'important',\n inside: {\n punctuation: /^(?:\\.|=+)|(?:=+|-+|~+|\\^+|\\++)$/\n // See rest below\n }\n },\n\n 'attribute-entry': {\n pattern: /^:[^:\\r\\n]+:(?: .*?(?: \\+(?:\\r?\\n|\\r).*?)*)?$/m,\n alias: 'tag'\n },\n attributes: attributes,\n hr: {\n pattern: /^'{3,}$/m,\n alias: 'punctuation'\n },\n 'page-break': {\n pattern: /^<{3,}$/m,\n alias: 'punctuation'\n },\n admonition: {\n pattern: /^(?:CAUTION|IMPORTANT|NOTE|TIP|WARNING):/m,\n alias: 'keyword'\n },\n callout: [\n {\n pattern: /(^[ \\t]*)<?\\d*>/m,\n lookbehind: true,\n alias: 'symbol'\n },\n {\n pattern: /<\\d+>/,\n alias: 'symbol'\n }\n ],\n macro: {\n pattern:\n /\\b[a-z\\d][a-z\\d-]*::?(?:[^\\s\\[\\]]*\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*\\1|\\\\.)*\\])/,\n inside: {\n function: /^[a-z\\d-]+(?=:)/,\n punctuation: /^::?/,\n attributes: {\n pattern: /(?:\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*\\1|\\\\.)*\\])/,\n inside: attributes.inside\n }\n }\n },\n inline: {\n /*\nThe initial look-behind prevents the highlighting of escaped quoted text.\nQuoted text can be multi-line but cannot span an empty line.\nAll quoted text can have attributes before [foobar, 'foobar', baz=\"bar\"].\nFirst, we handle the constrained quotes.\nThose must be bounded by non-word chars and cannot have spaces between the delimiter and the first char.\nThey are, in order: _emphasis_, ``double quotes'', `single quotes', `monospace`, 'emphasis', *strong*, +monospace+ and #unquoted#\nThen we handle the unconstrained quotes.\nThose do not have the restrictions of the constrained quotes.\nThey are, in order: __emphasis__, **strong**, ++monospace++, +++passthrough+++, ##unquoted##, $$passthrough$$, ~subscript~, ^superscript^, {attribute-reference}, [[anchor]], [[[bibliography anchor]]], <<xref>>, (((indexes))) and ((indexes))\n*/\n pattern:\n /(^|[^\\\\])(?:(?:\\B\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\2)[^\\\\]|\\\\.)*\\2|\\\\.)*\\])?(?:\\b_(?!\\s)(?: _|[^_\\\\\\r\\n]|\\\\.)+(?:(?:\\r?\\n|\\r)(?: _|[^_\\\\\\r\\n]|\\\\.)+)*_\\b|\\B``(?!\\s).+?(?:(?:\\r?\\n|\\r).+?)*''\\B|\\B`(?!\\s)(?:[^`'\\s]|\\s+\\S)+['`]\\B|\\B(['*+#])(?!\\s)(?: \\3|(?!\\3)[^\\\\\\r\\n]|\\\\.)+(?:(?:\\r?\\n|\\r)(?: \\3|(?!\\3)[^\\\\\\r\\n]|\\\\.)+)*\\3\\B)|(?:\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\4)[^\\\\]|\\\\.)*\\4|\\\\.)*\\])?(?:(__|\\*\\*|\\+\\+\\+?|##|\\$\\$|[~^]).+?(?:(?:\\r?\\n|\\r).+?)*\\5|\\{[^}\\r\\n]+\\}|\\[\\[\\[?.+?(?:(?:\\r?\\n|\\r).+?)*\\]?\\]\\]|<<.+?(?:(?:\\r?\\n|\\r).+?)*>>|\\(\\(\\(?.+?(?:(?:\\r?\\n|\\r).+?)*\\)?\\)\\)))/m,\n lookbehind: true,\n inside: {\n attributes: attributes,\n url: {\n pattern: /^(?:\\[\\[\\[?.+?\\]?\\]\\]|<<.+?>>)$/,\n inside: {\n punctuation: /^(?:\\[\\[\\[?|<<)|(?:\\]\\]\\]?|>>)$/\n }\n },\n 'attribute-ref': {\n pattern: /^\\{.+\\}$/,\n inside: {\n variable: {\n pattern: /(^\\{)[a-z\\d,+_-]+/,\n lookbehind: true\n },\n operator: /^[=?!#%@$]|!(?=[:}])/,\n punctuation: /^\\{|\\}$|::?/\n }\n },\n italic: {\n pattern: /^(['_])[\\s\\S]+\\1$/,\n inside: {\n punctuation: /^(?:''?|__?)|(?:''?|__?)$/\n }\n },\n bold: {\n pattern: /^\\*[\\s\\S]+\\*$/,\n inside: {\n punctuation: /^\\*\\*?|\\*\\*?$/\n }\n },\n punctuation:\n /^(?:``?|\\+{1,3}|##?|\\$\\$|[~^]|\\(\\(\\(?)|(?:''?|\\+{1,3}|##?|\\$\\$|[~^`]|\\)?\\)\\))$/\n }\n },\n replacement: {\n pattern: /\\((?:C|R|TM)\\)/,\n alias: 'builtin'\n },\n entity: /&#?[\\da-z]{1,8};/i,\n 'line-continuation': {\n pattern: /(^| )\\+$/m,\n lookbehind: true,\n alias: 'punctuation'\n }\n })\n\n // Allow some nesting. There is no recursion though, so cloning should not be needed.\n\n function copyFromAsciiDoc(keys) {\n keys = keys.split(' ')\n var o = {}\n for (var i = 0, l = keys.length; i < l; i++) {\n o[keys[i]] = asciidoc[keys[i]]\n }\n return o\n }\n attributes.inside['interpreted'].inside.rest = copyFromAsciiDoc(\n 'macro inline replacement entity'\n )\n asciidoc['passthrough-block'].inside.rest = copyFromAsciiDoc('macro')\n asciidoc['literal-block'].inside.rest = copyFromAsciiDoc('callout')\n asciidoc['table'].inside.rest = copyFromAsciiDoc(\n 'comment-block passthrough-block literal-block other-block list-punctuation indented-block comment title attribute-entry attributes hr page-break admonition list-label callout macro inline replacement entity line-continuation'\n )\n asciidoc['other-block'].inside.rest = copyFromAsciiDoc(\n 'table list-punctuation indented-block comment attribute-entry attributes hr page-break admonition list-label macro inline replacement entity line-continuation'\n )\n asciidoc['title'].inside.rest = copyFromAsciiDoc(\n 'macro inline replacement entity'\n )\n\n // Plugin to make entity title show the real entity, idea by Roman Komarov\n Prism.hooks.add('wrap', function (env) {\n if (env.type === 'entity') {\n env.attributes['title'] = env.content.value.replace(/&/, '&')\n }\n })\n Prism.languages.adoc = Prism.languages.asciidoc\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorCsharp from './csharp.js'\nimport refractorMarkup from './markup.js'\naspnet.displayName = 'aspnet'\naspnet.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function aspnet(Prism) {\n Prism.register(refractorCsharp)\n Prism.register(refractorMarkup)\n Prism.languages.aspnet = Prism.languages.extend('markup', {\n 'page-directive': {\n pattern: /<%\\s*@.*%>/,\n alias: 'tag',\n inside: {\n 'page-directive': {\n pattern:\n /<%\\s*@\\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,\n alias: 'tag'\n },\n rest: Prism.languages.markup.tag.inside\n }\n },\n directive: {\n pattern: /<%.*%>/,\n alias: 'tag',\n inside: {\n directive: {\n pattern: /<%\\s*?[$=%#:]{0,2}|%>/,\n alias: 'tag'\n },\n rest: Prism.languages.csharp\n }\n }\n })\n // Regexp copied from prism-markup, with a negative look-ahead added\n Prism.languages.aspnet.tag.pattern =\n /<(?!%)\\/?[^\\s>\\/]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/\n\n // match directives of attribute value foo=\"<% Bar %>\"\n Prism.languages.insertBefore(\n 'inside',\n 'punctuation',\n {\n directive: Prism.languages.aspnet['directive']\n },\n Prism.languages.aspnet.tag.inside['attr-value']\n )\n Prism.languages.insertBefore('aspnet', 'comment', {\n 'asp-comment': {\n pattern: /<%--[\\s\\S]*?--%>/,\n alias: ['asp', 'comment']\n }\n })\n\n // script runat=\"server\" contains csharp, not javascript\n Prism.languages.insertBefore(\n 'aspnet',\n Prism.languages.javascript ? 'script' : 'tag',\n {\n 'asp-script': {\n pattern:\n /(<script(?=.*runat=['\"]?server\\b)[^>]*>)[\\s\\S]*?(?=<\\/script>)/i,\n lookbehind: true,\n alias: ['asp', 'script'],\n inside: Prism.languages.csharp || {}\n }\n }\n )\n}\n","// @ts-nocheck\nasm6502.displayName = 'asm6502'\nasm6502.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function asm6502(Prism) {\n Prism.languages.asm6502 = {\n comment: /;.*/,\n directive: {\n pattern: /\\.\\w+(?= )/,\n alias: 'property'\n },\n string: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n 'op-code': {\n pattern:\n /\\b(?:ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRK|BVC|BVS|CLC|CLD|CLI|CLV|CMP|CPX|CPY|DEC|DEX|DEY|EOR|INC|INX|INY|JMP|JSR|LDA|LDX|LDY|LSR|NOP|ORA|PHA|PHP|PLA|PLP|ROL|ROR|RTI|RTS|SBC|SEC|SED|SEI|STA|STX|STY|TAX|TAY|TSX|TXA|TXS|TYA|adc|and|asl|bcc|bcs|beq|bit|bmi|bne|bpl|brk|bvc|bvs|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|jmp|jsr|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|rti|rts|sbc|sec|sed|sei|sta|stx|sty|tax|tay|tsx|txa|txs|tya)\\b/,\n alias: 'keyword'\n },\n 'hex-number': {\n pattern: /#?\\$[\\da-f]{1,4}\\b/i,\n alias: 'number'\n },\n 'binary-number': {\n pattern: /#?%[01]+\\b/,\n alias: 'number'\n },\n 'decimal-number': {\n pattern: /#?\\b\\d+\\b/,\n alias: 'number'\n },\n register: {\n pattern: /\\b[xya]\\b/i,\n alias: 'variable'\n },\n punctuation: /[(),:]/\n }\n}\n","// @ts-nocheck\nasmatmel.displayName = 'asmatmel'\nasmatmel.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function asmatmel(Prism) {\n Prism.languages.asmatmel = {\n comment: {\n pattern: /;.*/,\n greedy: true\n },\n string: {\n pattern: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n constant: /\\b(?:PORT[A-Z]|DDR[A-Z]|(?:DD|P)[A-Z](?:\\d|[0-2]\\d|3[01]))\\b/,\n directive: {\n pattern: /\\.\\w+(?= )/,\n alias: 'property'\n },\n 'r-register': {\n pattern: /\\br(?:\\d|[12]\\d|3[01])\\b/,\n alias: 'variable'\n },\n 'op-code': {\n pattern:\n /\\b(?:ADC|ADD|ADIW|AND|ANDI|ASR|BCLR|BLD|BRBC|BRBS|BRCC|BRCS|BREAK|BREQ|BRGE|BRHC|BRHS|BRID|BRIE|BRLO|BRLT|BRMI|BRNE|BRPL|BRSH|BRTC|BRTS|BRVC|BRVS|BSET|BST|CALL|CBI|CBR|CLC|CLH|CLI|CLN|CLR|CLS|CLT|CLV|CLZ|COM|CP|CPC|CPI|CPSE|DEC|DES|EICALL|EIJMP|ELPM|EOR|FMUL|FMULS|FMULSU|ICALL|IJMP|IN|INC|JMP|LAC|LAS|LAT|LD|LD[A-Za-z0-9]|LPM|LSL|LSR|MOV|MOVW|MUL|MULS|MULSU|NEG|NOP|OR|ORI|OUT|POP|PUSH|RCALL|RET|RETI|RJMP|ROL|ROR|SBC|SBCI|SBI|SBIC|SBIS|SBIW|SBR|SBRC|SBRS|SEC|SEH|SEI|SEN|SER|SES|SET|SEV|SEZ|SLEEP|SPM|ST|ST[A-Z0-9]|SUB|SUBI|SWAP|TST|WDR|XCH|adc|add|adiw|and|andi|asr|bclr|bld|brbc|brbs|brcc|brcs|break|breq|brge|brhc|brhs|brid|brie|brlo|brlt|brmi|brne|brpl|brsh|brtc|brts|brvc|brvs|bset|bst|call|cbi|cbr|clc|clh|cli|cln|clr|cls|clt|clv|clz|com|cp|cpc|cpi|cpse|dec|des|eicall|eijmp|elpm|eor|fmul|fmuls|fmulsu|icall|ijmp|in|inc|jmp|lac|las|lat|ld|ld[a-z0-9]|lpm|lsl|lsr|mov|movw|mul|muls|mulsu|neg|nop|or|ori|out|pop|push|rcall|ret|reti|rjmp|rol|ror|sbc|sbci|sbi|sbic|sbis|sbiw|sbr|sbrc|sbrs|sec|seh|sei|sen|ser|ses|set|sev|sez|sleep|spm|st|st[a-zA-Z0-9]|sub|subi|swap|tst|wdr|xch)\\b/,\n alias: 'keyword'\n },\n 'hex-number': {\n pattern: /#?\\$[\\da-f]{2,4}\\b/i,\n alias: 'number'\n },\n 'binary-number': {\n pattern: /#?%[01]+\\b/,\n alias: 'number'\n },\n 'decimal-number': {\n pattern: /#?\\b\\d+\\b/,\n alias: 'number'\n },\n register: {\n pattern: /\\b[acznvshtixy]\\b/i,\n alias: 'variable'\n },\n operator: />>=?|<<=?|&[&=]?|\\|[\\|=]?|[-+*/%^!=<>?]=?/,\n punctuation: /[(),:]/\n }\n}\n","// @ts-nocheck\nautohotkey.displayName = 'autohotkey'\nautohotkey.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function autohotkey(Prism) {\n // NOTES - follows first-first highlight method, block is locked after highlight, different from SyntaxHl\n Prism.languages.autohotkey = {\n comment: [\n {\n pattern: /(^|\\s);.*/,\n lookbehind: true\n },\n {\n pattern:\n /(^[\\t ]*)\\/\\*(?:[\\r\\n](?![ \\t]*\\*\\/)|[^\\r\\n])*(?:[\\r\\n][ \\t]*\\*\\/)?/m,\n lookbehind: true,\n greedy: true\n }\n ],\n tag: {\n // labels\n pattern: /^([ \\t]*)[^\\s,`\":]+(?=:[ \\t]*$)/m,\n lookbehind: true\n },\n string: /\"(?:[^\"\\n\\r]|\"\")*\"/,\n variable: /%\\w+%/,\n number: /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n operator:\n /\\?|\\/\\/?=?|:=|\\|[=|]?|&[=&]?|\\+[=+]?|-[=-]?|\\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\\b(?:AND|NOT|OR)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n command: {\n pattern:\n /\\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetRegView|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\\b/i,\n alias: 'selector'\n },\n constant:\n /\\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guicontrol|a_guicontrolevent|a_guievent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles)\\b/i,\n builtin:\n /\\b(?:abs|acos|asc|asin|atan|ceil|chr|class|comobjactive|comobjarray|comobjconnect|comobjcreate|comobjerror|comobjflags|comobjget|comobjquery|comobjtype|comobjvalue|cos|dllcall|exp|fileexist|Fileopen|floor|format|il_add|il_create|il_destroy|instr|isfunc|islabel|IsObject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|numget|numput|onmessage|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strlen|strreplace|strsplit|substr|tan|tv_add|tv_delete|tv_get|tv_getchild|tv_getcount|tv_getnext|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__Call|__Get|__New|__Set)\\b/i,\n symbol:\n /\\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\\b/i,\n directive: {\n pattern: /#[a-z]+\\b/i,\n alias: 'important'\n },\n keyword:\n /\\b(?:Abort|AboveNormal|Add|ahk_class|ahk_exe|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Catch|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|Finally|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|Region|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Throw|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|Try|TryAgain|Type|UnCheck|underline|Unicode|Unlock|Until|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\\b/i,\n function: /[^(); \\t,\\n+*\\-=?>:\\\\\\/<&%\\[\\]]+(?=\\()/,\n punctuation: /[{}[\\]():,]/\n }\n}\n","// @ts-nocheck\nautoit.displayName = 'autoit'\nautoit.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function autoit(Prism) {\n Prism.languages.autoit = {\n comment: [\n /;.*/,\n {\n // The multi-line comments delimiters can actually be commented out with \";\"\n pattern:\n /(^[\\t ]*)#(?:comments-start|cs)[\\s\\S]*?^[ \\t]*#(?:ce|comments-end)/m,\n lookbehind: true\n }\n ],\n url: {\n pattern: /(^[\\t ]*#include\\s+)(?:<[^\\r\\n>]+>|\"[^\\r\\n\"]+\")/m,\n lookbehind: true\n },\n string: {\n pattern: /([\"'])(?:\\1\\1|(?!\\1)[^\\r\\n])*\\1/,\n greedy: true,\n inside: {\n variable: /([%$@])\\w+\\1/\n }\n },\n directive: {\n pattern: /(^[\\t ]*)#[\\w-]+/m,\n lookbehind: true,\n alias: 'keyword'\n },\n function: /\\b\\w+(?=\\()/,\n // Variables and macros\n variable: /[$@]\\w+/,\n keyword:\n /\\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\\b/i,\n number: /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/i,\n boolean: /\\b(?:False|True)\\b/i,\n operator: /<[=>]?|[-+*\\/=&>]=?|[?^]|\\b(?:And|Not|Or)\\b/i,\n punctuation: /[\\[\\]().,:]/\n }\n}\n","// @ts-nocheck\navisynth.displayName = 'avisynth'\navisynth.aliases = ['avs']\n\n/** @type {import('../core.js').Syntax} */\nexport default function avisynth(Prism) {\n // http://avisynth.nl/index.php/The_full_AviSynth_grammar\n ;(function (Prism) {\n function replace(pattern, replacements) {\n return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n return replacements[+index]\n })\n }\n function re(pattern, replacements, flags) {\n return RegExp(replace(pattern, replacements), flags || '')\n }\n var types = /bool|clip|float|int|string|val/.source\n var internals = [\n // bools\n /is(?:bool|clip|float|int|string)|defined|(?:(?:internal)?function|var)?exists?/\n .source,\n // control\n /apply|assert|default|eval|import|nop|select|undefined/.source,\n // global\n /opt_(?:allowfloataudio|avipadscanlines|dwchannelmask|enable_(?:b64a|planartopackedrgb|v210|y3_10_10|y3_10_16)|usewaveextensible|vdubplanarhack)|set(?:cachemode|maxcpu|memorymax|planarlegacyalignment|workingdir)/\n .source,\n // conv\n /hex(?:value)?|value/.source,\n // numeric\n /abs|ceil|continued(?:denominator|numerator)?|exp|floor|fmod|frac|log(?:10)?|max|min|muldiv|pi|pow|rand|round|sign|spline|sqrt/\n .source,\n // trig\n /a?sinh?|a?cosh?|a?tan[2h]?/.source,\n // bit\n /(?:bit(?:and|not|x?or|[lr]?shift[aslu]?|sh[lr]|sa[lr]|[lr]rotatel?|ro[rl]|te?st|set(?:count)?|cl(?:ea)?r|ch(?:an)?ge?))/\n .source,\n // runtime\n /average(?:[bgr]|chroma[uv]|luma)|(?:[rgb]|chroma[uv]|luma|rgb|[yuv](?=difference(?:fromprevious|tonext)))difference(?:fromprevious|tonext)?|[yuvrgb]plane(?:median|min|max|minmaxdifference)/\n .source,\n // script\n /getprocessinfo|logmsg|script(?:dir(?:utf8)?|file(?:utf8)?|name(?:utf8)?)|setlogparams/\n .source,\n // string\n /chr|(?:fill|find|left|mid|replace|rev|right)str|format|[lu]case|ord|str(?:cmpi?|fromutf8|len|toutf8)|time|trim(?:all|left|right)/\n .source,\n // version\n /isversionorgreater|version(?:number|string)/.source,\n // helper\n /buildpixeltype|colorspacenametopixeltype/.source,\n // avsplus\n /addautoloaddir|on(?:cpu|cuda)|prefetch|setfiltermtmode/.source\n ].join('|')\n var properties = [\n // content\n /has(?:audio|video)/.source,\n // resolution\n /height|width/.source,\n // framerate\n /frame(?:count|rate)|framerate(?:denominator|numerator)/.source,\n // interlacing\n /getparity|is(?:field|frame)based/.source,\n // color format\n /bitspercomponent|componentsize|hasalpha|is(?:planar(?:rgba?)?|interleaved|rgb(?:24|32|48|64)?|y(?:8|u(?:va?|y2))?|yv(?:12|16|24|411)|420|422|444|packedrgb)|numcomponents|pixeltype/\n .source,\n // audio\n /audio(?:bits|channels|duration|length(?:[fs]|hi|lo)?|rate)|isaudio(?:float|int)/\n .source\n ].join('|')\n var filters = [\n // source\n /avi(?:file)?source|directshowsource|image(?:reader|source|sourceanim)|opendmlsource|segmented(?:avisource|directshowsource)|wavsource/\n .source,\n // color\n /coloryuv|convertbacktoyuy2|convertto(?:RGB(?:24|32|48|64)|(?:planar)?RGBA?|Y8?|YV(?:12|16|24|411)|YUVA?(?:411|420|422|444)|YUY2)|fixluminance|gr[ae]yscale|invert|levels|limiter|mergea?rgb|merge(?:chroma|luma)|rgbadjust|show(?:alpha|blue|green|red)|swapuv|tweak|[uv]toy8?|ytouv/\n .source,\n // overlay\n /(?:colorkey|reset)mask|layer|mask(?:hs)?|merge|overlay|subtract/.source,\n // geometry\n /addborders|(?:bicubic|bilinear|blackman|gauss|lanczos4|lanczos|point|sinc|spline(?:16|36|64))resize|crop(?:bottom)?|flip(?:horizontal|vertical)|(?:horizontal|vertical)?reduceby2|letterbox|skewrows|turn(?:180|left|right)/\n .source,\n // pixel\n /blur|fixbrokenchromaupsampling|generalconvolution|(?:spatial|temporal)soften|sharpen/\n .source,\n // timeline\n /trim|(?:un)?alignedsplice|(?:assume|assumescaled|change|convert)FPS|(?:delete|duplicate)frame|dissolve|fade(?:in|io|out)[02]?|freezeframe|interleave|loop|reverse|select(?:even|odd|(?:range)?every)/\n .source,\n // interlace\n /assume[bt]ff|assume(?:field|frame)based|bob|complementparity|doubleweave|peculiarblend|pulldown|separate(?:columns|fields|rows)|swapfields|weave(?:columns|rows)?/\n .source,\n // audio\n /amplify(?:db)?|assumesamplerate|audiodub(?:ex)?|audiotrim|convertaudioto(?:(?:8|16|24|32)bit|float)|converttomono|delayaudio|ensurevbrmp3sync|get(?:left|right)?channel|kill(?:audio|video)|mergechannels|mixaudio|monotostereo|normalize|resampleaudio|ssrc|supereq|timestretch/\n .source,\n // conditional\n /animate|applyrange|conditional(?:filter|reader|select)|frameevaluate|scriptclip|tcp(?:server|source)|writefile(?:end|if|start)?/\n .source,\n // export\n /imagewriter/.source,\n // debug\n /blackness|blankclip|colorbars(?:hd)?|compare|dumpfiltergraph|echo|histogram|info|messageclip|preroll|setgraphanalysis|show(?:framenumber|smpte|time)|showfiveversions|stack(?:horizontal|vertical)|subtitle|tone|version/\n .source\n ].join('|')\n var allinternals = [internals, properties, filters].join('|')\n Prism.languages.avisynth = {\n comment: [\n {\n // Matches [* *] nestable block comments, but only supports 1 level of nested comments\n // /\\[\\*(?:[^\\[*]|\\[(?!\\*)|\\*(?!\\])|<self>)*\\*\\]/\n pattern:\n /(^|[^\\\\])\\[\\*(?:[^\\[*]|\\[(?!\\*)|\\*(?!\\])|\\[\\*(?:[^\\[*]|\\[(?!\\*)|\\*(?!\\]))*\\*\\])*\\*\\]/,\n lookbehind: true,\n greedy: true\n },\n {\n // Matches /* */ block comments\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n greedy: true\n },\n {\n // Matches # comments\n pattern: /(^|[^\\\\$])#.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n // Handle before strings because optional arguments are surrounded by double quotes\n argument: {\n pattern: re(/\\b(?:<<0>>)\\s+(\"?)\\w+\\1/.source, [types], 'i'),\n inside: {\n keyword: /^\\w+/\n }\n },\n // Optional argument assignment\n 'argument-label': {\n pattern: /([,(][\\s\\\\]*)\\w+\\s*=(?!=)/,\n lookbehind: true,\n inside: {\n 'argument-name': {\n pattern: /^\\w+/,\n alias: 'punctuation'\n },\n punctuation: /=$/\n }\n },\n string: [\n {\n // triple double-quoted\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true\n },\n {\n // single double-quoted\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n greedy: true,\n inside: {\n constant: {\n // These *are* case-sensitive!\n pattern:\n /\\b(?:DEFAULT_MT_MODE|(?:MAINSCRIPT|PROGRAM|SCRIPT)DIR|(?:MACHINE|USER)_(?:CLASSIC|PLUS)_PLUGINS)\\b/\n }\n }\n }\n ],\n // The special \"last\" variable that takes the value of the last implicitly returned clip\n variable: /\\b(?:last)\\b/i,\n boolean: /\\b(?:false|no|true|yes)\\b/i,\n keyword:\n /\\b(?:catch|else|for|function|global|if|return|try|while|__END__)\\b/i,\n constant: /\\bMT_(?:MULTI_INSTANCE|NICE_FILTER|SERIALIZED|SPECIAL_MT)\\b/,\n // AviSynth's internal functions, filters, and properties\n 'builtin-function': {\n pattern: re(/\\b(?:<<0>>)\\b/.source, [allinternals], 'i'),\n alias: 'function'\n },\n 'type-cast': {\n pattern: re(/\\b(?:<<0>>)(?=\\s*\\()/.source, [types], 'i'),\n alias: 'keyword'\n },\n // External/user-defined filters\n function: {\n pattern: /\\b[a-z_]\\w*(?=\\s*\\()|(\\.)[a-z_]\\w*\\b/i,\n lookbehind: true\n },\n // Matches a \\ as the first or last character on a line\n 'line-continuation': {\n pattern: /(^[ \\t]*)\\\\|\\\\(?=[ \\t]*$)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n number:\n /\\B\\$(?:[\\da-f]{6}|[\\da-f]{8})\\b|(?:(?:\\b|\\B-)\\d+(?:\\.\\d*)?\\b|\\B\\.\\d+\\b)/i,\n operator: /\\+\\+?|[!=<>]=?|&&|\\|\\||[?:*/%-]/,\n punctuation: /[{}\\[\\]();,.]/\n }\n Prism.languages.avs = Prism.languages.avisynth\n })(Prism)\n}\n","// @ts-nocheck\navroIdl.displayName = 'avro-idl'\navroIdl.aliases = ['avdl']\n\n/** @type {import('../core.js').Syntax} */\nexport default function avroIdl(Prism) {\n // GitHub: https://github.com/apache/avro\n // Docs: https://avro.apache.org/docs/current/idl.html\n\n Prism.languages['avro-idl'] = {\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n greedy: true\n },\n string: {\n pattern: /(^|[^\\\\])\"(?:[^\\r\\n\"\\\\]|\\\\.)*\"/,\n lookbehind: true,\n greedy: true\n },\n annotation: {\n pattern: /@(?:[$\\w.-]|`[^\\r\\n`]+`)+/,\n greedy: true,\n alias: 'function'\n },\n 'function-identifier': {\n pattern: /`[^\\r\\n`]+`(?=\\s*\\()/,\n greedy: true,\n alias: 'function'\n },\n identifier: {\n pattern: /`[^\\r\\n`]+`/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:enum|error|protocol|record|throws)\\b\\s+)[$\\w]+/,\n lookbehind: true,\n greedy: true\n },\n keyword:\n /\\b(?:array|boolean|bytes|date|decimal|double|enum|error|false|fixed|float|idl|import|int|local_timestamp_ms|long|map|null|oneway|protocol|record|schema|string|throws|time_ms|timestamp_ms|true|union|uuid|void)\\b/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n number: [\n {\n pattern:\n /(^|[^\\w.])-?(?:(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|0x(?:[a-f0-9]+(?:\\.[a-f0-9]*)?|\\.[a-f0-9]+)(?:p[+-]?\\d+)?)[dfl]?(?![\\w.])/i,\n lookbehind: true\n },\n /-?\\b(?:Infinity|NaN)\\b/\n ],\n operator: /=/,\n punctuation: /[()\\[\\]{}<>.:,;-]/\n }\n Prism.languages.avdl = Prism.languages['avro-idl']\n}\n","// @ts-nocheck\nawk.displayName = 'awk'\nawk.aliases = ['gawk']\n\n/** @type {import('../core.js').Syntax} */\nexport default function awk(Prism) {\n Prism.languages.awk = {\n hashbang: {\n pattern: /^#!.*/,\n greedy: true,\n alias: 'comment'\n },\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n string: {\n pattern: /(^|[^\\\\])\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"/,\n lookbehind: true,\n greedy: true\n },\n regex: {\n pattern: /((?:^|[^\\w\\s)])\\s*)\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\//,\n lookbehind: true,\n greedy: true\n },\n variable: /\\$\\w+/,\n keyword:\n /\\b(?:BEGIN|BEGINFILE|END|ENDFILE|break|case|continue|default|delete|do|else|exit|for|function|getline|if|in|next|nextfile|printf?|return|switch|while)\\b|@(?:include|load)\\b/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n number: /\\b(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|0x[a-fA-F0-9]+)\\b/,\n operator: /--|\\+\\+|!?~|>&|>>|<<|(?:\\*\\*|[<>!=+\\-*/%^])=?|&&|\\|[|&]|[?:]/,\n punctuation: /[()[\\]{},;]/\n }\n Prism.languages.gawk = Prism.languages.awk\n}\n","// @ts-nocheck\nbatch.displayName = 'batch'\nbatch.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function batch(Prism) {\n ;(function (Prism) {\n var variable = /%%?[~:\\w]+%?|!\\S+!/\n var parameter = {\n pattern: /\\/[a-z?]+(?=[ :]|$):?|-[a-z]\\b|--[a-z-]+\\b/im,\n alias: 'attr-name',\n inside: {\n punctuation: /:/\n }\n }\n var string = /\"(?:[\\\\\"]\"|[^\"])*\"(?!\")/\n var number = /(?:\\b|-)\\d+\\b/\n Prism.languages.batch = {\n comment: [\n /^::.*/m,\n {\n pattern: /((?:^|[&(])[ \\t]*)rem\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true\n }\n ],\n label: {\n pattern: /^:.*/m,\n alias: 'property'\n },\n command: [\n {\n // FOR command\n pattern:\n /((?:^|[&(])[ \\t]*)for(?: \\/[a-z?](?:[ :](?:\"[^\"]*\"|[^\\s\"/]\\S*))?)* \\S+ in \\([^)]+\\) do/im,\n lookbehind: true,\n inside: {\n keyword: /\\b(?:do|in)\\b|^for\\b/i,\n string: string,\n parameter: parameter,\n variable: variable,\n number: number,\n punctuation: /[()',]/\n }\n },\n {\n // IF command\n pattern:\n /((?:^|[&(])[ \\t]*)if(?: \\/[a-z?](?:[ :](?:\"[^\"]*\"|[^\\s\"/]\\S*))?)* (?:not )?(?:cmdextversion \\d+|defined \\w+|errorlevel \\d+|exist \\S+|(?:\"[^\"]*\"|(?!\")(?:(?!==)\\S)+)?(?:==| (?:equ|geq|gtr|leq|lss|neq) )(?:\"[^\"]*\"|[^\\s\"]\\S*))/im,\n lookbehind: true,\n inside: {\n keyword:\n /\\b(?:cmdextversion|defined|errorlevel|exist|not)\\b|^if\\b/i,\n string: string,\n parameter: parameter,\n variable: variable,\n number: number,\n operator: /\\^|==|\\b(?:equ|geq|gtr|leq|lss|neq)\\b/i\n }\n },\n {\n // ELSE command\n pattern: /((?:^|[&()])[ \\t]*)else\\b/im,\n lookbehind: true,\n inside: {\n keyword: /^else\\b/i\n }\n },\n {\n // SET command\n pattern:\n /((?:^|[&(])[ \\t]*)set(?: \\/[a-z](?:[ :](?:\"[^\"]*\"|[^\\s\"/]\\S*))?)* (?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n inside: {\n keyword: /^set\\b/i,\n string: string,\n parameter: parameter,\n variable: [variable, /\\w+(?=(?:[*\\/%+\\-&^|]|<<|>>)?=)/],\n number: number,\n operator: /[*\\/%+\\-&^|]=?|<<=?|>>=?|[!~_=]/,\n punctuation: /[()',]/\n }\n },\n {\n // Other commands\n pattern:\n /((?:^|[&(])[ \\t]*@?)\\w+\\b(?:\"(?:[\\\\\"]\"|[^\"])*\"(?!\")|[^\"^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/m,\n lookbehind: true,\n inside: {\n keyword: /^\\w+\\b/,\n string: string,\n parameter: parameter,\n label: {\n pattern: /(^\\s*):\\S+/m,\n lookbehind: true,\n alias: 'property'\n },\n variable: variable,\n number: number,\n operator: /\\^/\n }\n }\n ],\n operator: /[&@]/,\n punctuation: /[()']/\n }\n })(Prism)\n}\n","// @ts-nocheck\nbbcode.displayName = 'bbcode'\nbbcode.aliases = ['shortcode']\n\n/** @type {import('../core.js').Syntax} */\nexport default function bbcode(Prism) {\n Prism.languages.bbcode = {\n tag: {\n pattern:\n /\\[\\/?[^\\s=\\]]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\"\\]=]+))?(?:\\s+[^\\s=\\]]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\"\\]=]+))*\\s*\\]/,\n inside: {\n tag: {\n pattern: /^\\[\\/?[^\\s=\\]]+/,\n inside: {\n punctuation: /^\\[\\/?/\n }\n },\n 'attr-value': {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\"\\]=]+)/,\n inside: {\n punctuation: [\n /^=/,\n {\n pattern: /^(\\s*)[\"']|[\"']$/,\n lookbehind: true\n }\n ]\n }\n },\n punctuation: /\\]/,\n 'attr-name': /[^\\s=\\]]+/\n }\n }\n }\n Prism.languages.shortcode = Prism.languages.bbcode\n}\n","// @ts-nocheck\nbbj.displayName = 'bbj'\nbbj.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function bbj(Prism) {\n ;(function (Prism) {\n Prism.languages.bbj = {\n comment: {\n pattern: /(^|[^\\\\:])rem\\s+.*/i,\n lookbehind: true,\n greedy: true\n },\n string: {\n pattern: /(['\"])(?:(?!\\1|\\\\).|\\\\.)*\\1/,\n greedy: true\n },\n number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n keyword:\n /\\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|declare|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\\b/i,\n function: /\\b\\w+(?=\\()/,\n boolean: /\\b(?:BBjAPI\\.TRUE|BBjAPI\\.FALSE)\\b/i,\n operator: /<[=>]?|>=?|[+\\-*\\/^=&]|\\b(?:and|not|or|xor)\\b/i,\n punctuation: /[.,;:()]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nbicep.displayName = 'bicep'\nbicep.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function bicep(Prism) {\n // based loosely upon: https://github.com/Azure/bicep/blob/main/src/textmate/bicep.tmlanguage\n Prism.languages.bicep = {\n comment: [\n {\n // multiline comments eg /* ASDF */\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n greedy: true\n },\n {\n // singleline comments eg // ASDF\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n property: [\n {\n pattern: /([\\r\\n][ \\t]*)[a-z_]\\w*(?=[ \\t]*:)/i,\n lookbehind: true\n },\n {\n pattern: /([\\r\\n][ \\t]*)'(?:\\\\.|\\$(?!\\{)|[^'\\\\\\r\\n$])*'(?=[ \\t]*:)/,\n lookbehind: true,\n greedy: true\n }\n ],\n string: [\n {\n pattern: /'''[^'][\\s\\S]*?'''/,\n greedy: true\n },\n {\n pattern: /(^|[^\\\\'])'(?:\\\\.|\\$(?!\\{)|[^'\\\\\\r\\n$])*'/,\n lookbehind: true,\n greedy: true\n }\n ],\n 'interpolated-string': {\n pattern: /(^|[^\\\\'])'(?:\\\\.|\\$(?:(?!\\{)|\\{[^{}\\r\\n]*\\})|[^'\\\\\\r\\n$])*'/,\n lookbehind: true,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /\\$\\{[^{}\\r\\n]*\\}/,\n inside: {\n expression: {\n pattern: /(^\\$\\{)[\\s\\S]+(?=\\}$)/,\n lookbehind: true\n },\n punctuation: /^\\$\\{|\\}$/\n }\n },\n string: /[\\s\\S]+/\n }\n },\n datatype: {\n pattern: /(\\b(?:output|param)\\b[ \\t]+\\w+[ \\t]+)\\w+\\b/,\n lookbehind: true,\n alias: 'class-name'\n },\n boolean: /\\b(?:false|true)\\b/,\n // https://github.com/Azure/bicep/blob/114a3251b4e6e30082a58729f19a8cc4e374ffa6/src/textmate/bicep.tmlanguage#L184\n keyword:\n /\\b(?:existing|for|if|in|module|null|output|param|resource|targetScope|var)\\b/,\n decorator: /@\\w+\\b/,\n function: /\\b[a-z_]\\w*(?=[ \\t]*\\()/i,\n number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n operator:\n /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/,\n punctuation: /[{}[\\];(),.:]/\n }\n Prism.languages.bicep['interpolated-string'].inside['interpolation'].inside[\n 'expression'\n ].inside = Prism.languages.bicep\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nbirb.displayName = 'birb'\nbirb.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function birb(Prism) {\n Prism.register(refractorClike)\n Prism.languages.birb = Prism.languages.extend('clike', {\n string: {\n pattern: /r?(\"|')(?:\\\\.|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n },\n 'class-name': [\n /\\b[A-Z](?:[\\d_]*[a-zA-Z]\\w*)?\\b/,\n // matches variable and function return types (parameters as well).\n /\\b(?:[A-Z]\\w*|(?!(?:var|void)\\b)[a-z]\\w*)(?=\\s+\\w+\\s*[;,=()])/\n ],\n keyword:\n /\\b(?:assert|break|case|class|const|default|else|enum|final|follows|for|grab|if|nest|new|next|noSeeb|return|static|switch|throw|var|void|while)\\b/,\n operator: /\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?|:/,\n variable: /\\b[a-z_]\\w*\\b/\n })\n Prism.languages.insertBefore('birb', 'function', {\n metadata: {\n pattern: /<\\w+>/,\n greedy: true,\n alias: 'symbol'\n }\n })\n}\n","// @ts-nocheck\nimport refractorC from './c.js'\nbison.displayName = 'bison'\nbison.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function bison(Prism) {\n Prism.register(refractorC)\n Prism.languages.bison = Prism.languages.extend('c', {})\n Prism.languages.insertBefore('bison', 'comment', {\n bison: {\n // This should match all the beginning of the file\n // including the prologue(s), the bison declarations and\n // the grammar rules.\n pattern: /^(?:[^%]|%(?!%))*%%[\\s\\S]*?%%/,\n inside: {\n c: {\n // Allow for one level of nested braces\n pattern: /%\\{[\\s\\S]*?%\\}|\\{(?:\\{[^}]*\\}|[^{}])*\\}/,\n inside: {\n delimiter: {\n pattern: /^%?\\{|%?\\}$/,\n alias: 'punctuation'\n },\n 'bison-variable': {\n pattern: /[$@](?:<[^\\s>]+>)?[\\w$]+/,\n alias: 'variable',\n inside: {\n punctuation: /<|>/\n }\n },\n rest: Prism.languages.c\n }\n },\n comment: Prism.languages.c.comment,\n string: Prism.languages.c.string,\n property: /\\S+(?=:)/,\n keyword: /%\\w+/,\n number: {\n pattern: /(^|[^@])\\b(?:0x[\\da-f]+|\\d+)/i,\n lookbehind: true\n },\n punctuation: /%[%?]|[|:;\\[\\]<>]/\n }\n }\n })\n}\n","// @ts-nocheck\nbnf.displayName = 'bnf'\nbnf.aliases = ['rbnf']\n\n/** @type {import('../core.js').Syntax} */\nexport default function bnf(Prism) {\n Prism.languages.bnf = {\n string: {\n pattern: /\"[^\\r\\n\"]*\"|'[^\\r\\n']*'/\n },\n definition: {\n pattern: /<[^<>\\r\\n\\t]+>(?=\\s*::=)/,\n alias: ['rule', 'keyword'],\n inside: {\n punctuation: /^<|>$/\n }\n },\n rule: {\n pattern: /<[^<>\\r\\n\\t]+>/,\n inside: {\n punctuation: /^<|>$/\n }\n },\n operator: /::=|[|()[\\]{}*+?]|\\.{3}/\n }\n Prism.languages.rbnf = Prism.languages.bnf\n}\n","// @ts-nocheck\nbqn.displayName = 'bqn'\nbqn.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function bqn(Prism) {\n Prism.languages.bqn = {\n shebang: {\n pattern: /^#![ \\t]*\\/.*/,\n alias: 'important',\n greedy: true\n },\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n 'string-literal': {\n pattern: /\"(?:[^\"]|\"\")*\"/,\n greedy: true,\n alias: 'string'\n },\n 'character-literal': {\n pattern: /'(?:[\\s\\S]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])'/,\n greedy: true,\n alias: 'char'\n },\n function: /•[\\w¯.∞π]+[\\w¯.∞π]*/,\n 'dot-notation-on-brackets': {\n pattern: /\\{(?=.*\\}\\.)|\\}\\./,\n alias: 'namespace'\n },\n 'special-name': {\n pattern: /(?:𝕨|𝕩|𝕗|𝕘|𝕤|𝕣|𝕎|𝕏|𝔽|𝔾|𝕊|_𝕣_|_𝕣)/,\n alias: 'keyword'\n },\n 'dot-notation-on-name': {\n pattern: /[A-Za-z_][\\w¯∞π]*\\./,\n alias: 'namespace'\n },\n 'word-number-scientific': {\n pattern: /\\d+(?:\\.\\d+)?[eE]¯?\\d+/,\n alias: 'number'\n },\n 'word-name': {\n pattern: /[A-Za-z_][\\w¯∞π]*/,\n alias: 'symbol'\n },\n 'word-number': {\n pattern:\n /[¯∞π]?(?:\\d*\\.?\\b\\d+(?:e[+¯]?\\d+|E[+¯]?\\d+)?|¯|∞|π)(?:j¯?(?:(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+¯]?\\d+|E[+¯]?\\d+)?|¯|∞|π))?/,\n alias: 'number'\n },\n 'null-literal': {\n pattern: /@/,\n alias: 'char'\n },\n 'primitive-functions': {\n pattern: /[-+×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍⋈↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!]/,\n alias: 'operator'\n },\n 'primitive-1-operators': {\n pattern: /[`˜˘¨⁼⌜´˝˙]/,\n alias: 'operator'\n },\n 'primitive-2-operators': {\n pattern: /[∘⊸⟜○⌾⎉⚇⍟⊘◶⎊]/,\n alias: 'operator'\n },\n punctuation: /[←⇐↩(){}⟨⟩[\\]‿·⋄,.;:?]/\n }\n}\n","// @ts-nocheck\nbrainfuck.displayName = 'brainfuck'\nbrainfuck.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function brainfuck(Prism) {\n Prism.languages.brainfuck = {\n pointer: {\n pattern: /<|>/,\n alias: 'keyword'\n },\n increment: {\n pattern: /\\+/,\n alias: 'inserted'\n },\n decrement: {\n pattern: /-/,\n alias: 'deleted'\n },\n branching: {\n pattern: /\\[|\\]/,\n alias: 'important'\n },\n operator: /[.,]/,\n comment: /\\S+/\n }\n}\n","// @ts-nocheck\nbrightscript.displayName = 'brightscript'\nbrightscript.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function brightscript(Prism) {\n Prism.languages.brightscript = {\n comment: /(?:\\brem|').*/i,\n 'directive-statement': {\n pattern: /(^[\\t ]*)#(?:const|else(?:[\\t ]+if)?|end[\\t ]+if|error|if).*/im,\n lookbehind: true,\n alias: 'property',\n inside: {\n 'error-message': {\n pattern: /(^#error).+/,\n lookbehind: true\n },\n directive: {\n pattern: /^#(?:const|else(?:[\\t ]+if)?|end[\\t ]+if|error|if)/,\n alias: 'keyword'\n },\n expression: {\n pattern: /[\\s\\S]+/,\n inside: null // see below\n }\n }\n },\n\n property: {\n pattern:\n /([\\r\\n{,][\\t ]*)(?:(?!\\d)\\w+|\"(?:[^\"\\r\\n]|\"\")*\"(?!\"))(?=[ \\t]*:)/,\n lookbehind: true,\n greedy: true\n },\n string: {\n pattern: /\"(?:[^\"\\r\\n]|\"\")*\"(?!\")/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\bAs[\\t ]+)\\w+/i,\n lookbehind: true\n },\n keyword:\n /\\b(?:As|Dim|Each|Else|Elseif|End|Exit|For|Function|Goto|If|In|Print|Return|Step|Stop|Sub|Then|To|While)\\b/i,\n boolean: /\\b(?:false|true)\\b/i,\n function: /\\b(?!\\d)\\w+(?=[\\t ]*\\()/,\n number: /(?:\\b\\d+(?:\\.\\d+)?(?:[ed][+-]\\d+)?|&h[a-f\\d]+)\\b[%&!#]?/i,\n operator:\n /--|\\+\\+|>>=?|<<=?|<>|[-+*/\\\\<>]=?|[:^=?]|\\b(?:and|mod|not|or)\\b/i,\n punctuation: /[.,;()[\\]{}]/,\n constant: /\\b(?:LINE_NUM)\\b/i\n }\n Prism.languages.brightscript['directive-statement'].inside.expression.inside =\n Prism.languages.brightscript\n}\n","// @ts-nocheck\nbro.displayName = 'bro'\nbro.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function bro(Prism) {\n Prism.languages.bro = {\n comment: {\n pattern: /(^|[^\\\\$])#.*/,\n lookbehind: true,\n inside: {\n italic: /\\b(?:FIXME|TODO|XXX)\\b/\n }\n },\n string: {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n boolean: /\\b[TF]\\b/,\n function: {\n pattern: /(\\b(?:event|function|hook)[ \\t]+)\\w+(?:::\\w+)?/,\n lookbehind: true\n },\n builtin:\n /(?:@(?:load(?:-(?:plugin|sigs))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:add_func|create_expire|default|delete_func|encrypt|error_handler|expire_func|group|log|mergeable|optional|persistent|priority|raw_output|read_expire|redef|rotate_interval|rotate_size|synchronized|type_column|write_expire))/,\n constant: {\n pattern: /(\\bconst[ \\t]+)\\w+/i,\n lookbehind: true\n },\n keyword:\n /\\b(?:add|addr|alarm|any|bool|break|const|continue|count|delete|double|else|enum|event|export|file|for|function|global|hook|if|in|int|interval|local|module|next|of|opaque|pattern|port|print|record|return|schedule|set|string|subnet|table|time|timeout|using|vector|when)\\b/,\n operator: /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n punctuation: /[{}[\\];(),.:]/\n }\n}\n","// @ts-nocheck\nbsl.displayName = 'bsl'\nbsl.aliases = ['oscript']\n\n/** @type {import('../core.js').Syntax} */\nexport default function bsl(Prism) {\n /* eslint-disable no-misleading-character-class */\n\n // 1C:Enterprise\n // https://github.com/Diversus23/\n //\n Prism.languages.bsl = {\n comment: /\\/\\/.*/,\n string: [\n // Строки\n // Strings\n {\n pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n greedy: true\n },\n // Дата и время\n // Date & time\n {\n pattern: /'(?:[^'\\r\\n\\\\]|\\\\.)*'/\n }\n ],\n keyword: [\n {\n // RU\n pattern:\n /(^|[^\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])(?:пока|для|новый|прервать|попытка|исключение|вызватьисключение|иначе|конецпопытки|неопределено|функция|перем|возврат|конецфункции|если|иначеесли|процедура|конецпроцедуры|тогда|знач|экспорт|конецесли|из|каждого|истина|ложь|по|цикл|конеццикла|выполнить)(?![\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])/i,\n lookbehind: true\n },\n {\n // EN\n pattern:\n /\\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\\b/i\n }\n ],\n number: {\n pattern:\n /(^(?=\\d)|[^\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:E[+-]?\\d+)?/i,\n lookbehind: true\n },\n operator: [\n /[<>+\\-*/]=?|[%=]/,\n // RU\n {\n pattern:\n /(^|[^\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])(?:и|или|не)(?![\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])/i,\n lookbehind: true\n },\n // EN\n {\n pattern: /\\b(?:and|not|or)\\b/i\n }\n ],\n punctuation: /\\(\\.|\\.\\)|[()\\[\\]:;,.]/,\n directive: [\n // Теги препроцессора вида &Клиент, &Сервер, ...\n // Preprocessor tags of the type &Client, &Server, ...\n {\n pattern: /^([ \\t]*)&.*/m,\n lookbehind: true,\n greedy: true,\n alias: 'important'\n },\n // Инструкции препроцессора вида:\n // #Если Сервер Тогда\n // ...\n // #КонецЕсли\n // Preprocessor instructions of the form:\n // #If Server Then\n // ...\n // #EndIf\n {\n pattern: /^([ \\t]*)#.*/gm,\n lookbehind: true,\n greedy: true,\n alias: 'important'\n }\n ]\n }\n Prism.languages.oscript = Prism.languages['bsl']\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\ncfscript.displayName = 'cfscript'\ncfscript.aliases = ['cfc']\n\n/** @type {import('../core.js').Syntax} */\nexport default function cfscript(Prism) {\n Prism.register(refractorClike)\n // https://cfdocs.org/script\n Prism.languages.cfscript = Prism.languages.extend('clike', {\n comment: [\n {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n inside: {\n annotation: {\n pattern: /(?:^|[^.])@[\\w\\.]+/,\n alias: 'punctuation'\n }\n }\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n keyword:\n /\\b(?:abstract|break|catch|component|continue|default|do|else|extends|final|finally|for|function|if|in|include|package|private|property|public|remote|required|rethrow|return|static|switch|throw|try|var|while|xml)\\b(?!\\s*=)/,\n operator: [\n /\\+\\+|--|&&|\\|\\||::|=>|[!=]==|[-+*/%&|^!=<>]=?|\\?(?:\\.|:)?|:/,\n /\\b(?:and|contains|eq|equal|eqv|gt|gte|imp|is|lt|lte|mod|not|or|xor)\\b/\n ],\n scope: {\n pattern:\n /\\b(?:application|arguments|cgi|client|cookie|local|session|super|this|variables)\\b/,\n alias: 'global'\n },\n type: {\n pattern:\n /\\b(?:any|array|binary|boolean|date|guid|numeric|query|string|struct|uuid|void|xml)\\b/,\n alias: 'builtin'\n }\n })\n Prism.languages.insertBefore('cfscript', 'keyword', {\n // This must be declared before keyword because we use \"function\" inside the lookahead\n 'function-variable': {\n pattern:\n /[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n alias: 'function'\n }\n })\n delete Prism.languages.cfscript['class-name']\n Prism.languages.cfc = Prism.languages['cfscript']\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nimport refractorCpp from './cpp.js'\nchaiscript.displayName = 'chaiscript'\nchaiscript.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function chaiscript(Prism) {\n Prism.register(refractorClike)\n Prism.register(refractorCpp)\n Prism.languages.chaiscript = Prism.languages.extend('clike', {\n string: {\n pattern: /(^|[^\\\\])'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n lookbehind: true,\n greedy: true\n },\n 'class-name': [\n {\n // e.g. class Rectangle { ... }\n pattern: /(\\bclass\\s+)\\w+/,\n lookbehind: true\n },\n {\n // e.g. attr Rectangle::height, def Rectangle::area() { ... }\n pattern: /(\\b(?:attr|def)\\s+)\\w+(?=\\s*::)/,\n lookbehind: true\n }\n ],\n keyword:\n /\\b(?:attr|auto|break|case|catch|class|continue|def|default|else|finally|for|fun|global|if|return|switch|this|try|var|while)\\b/,\n number: [Prism.languages.cpp.number, /\\b(?:Infinity|NaN)\\b/],\n operator:\n />>=?|<<=?|\\|\\||&&|:[:=]?|--|\\+\\+|[=!<>+\\-*/%|&^]=?|[?~]|`[^`\\r\\n]{1,4}`/\n })\n Prism.languages.insertBefore('chaiscript', 'operator', {\n 'parameter-type': {\n // e.g. def foo(int x, Vector y) {...}\n pattern: /([,(]\\s*)\\w+(?=\\s+\\w)/,\n lookbehind: true,\n alias: 'class-name'\n }\n })\n Prism.languages.insertBefore('chaiscript', 'string', {\n 'string-interpolation': {\n pattern:\n /(^|[^\\\\])\"(?:[^\"$\\\\]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\"/,\n lookbehind: true,\n greedy: true,\n inside: {\n interpolation: {\n pattern:\n /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\}/,\n lookbehind: true,\n inside: {\n 'interpolation-expression': {\n pattern: /(^\\$\\{)[\\s\\S]+(?=\\}$)/,\n lookbehind: true,\n inside: Prism.languages.chaiscript\n },\n 'interpolation-punctuation': {\n pattern: /^\\$\\{|\\}$/,\n alias: 'punctuation'\n }\n }\n },\n string: /[\\s\\S]+/\n }\n }\n })\n}\n","// @ts-nocheck\ncil.displayName = 'cil'\ncil.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function cil(Prism) {\n Prism.languages.cil = {\n comment: /\\/\\/.*/,\n string: {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n directive: {\n pattern: /(^|\\W)\\.[a-z]+(?=\\s)/,\n lookbehind: true,\n alias: 'class-name'\n },\n // Actually an assembly reference\n variable: /\\[[\\w\\.]+\\]/,\n keyword:\n /\\b(?:abstract|ansi|assembly|auto|autochar|beforefieldinit|bool|bstr|byvalstr|catch|char|cil|class|currency|date|decimal|default|enum|error|explicit|extends|extern|famandassem|family|famorassem|final(?:ly)?|float32|float64|hidebysig|u?int(?:8|16|32|64)?|iant|idispatch|implements|import|initonly|instance|interface|iunknown|literal|lpstr|lpstruct|lptstr|lpwstr|managed|method|native(?:Type)?|nested|newslot|object(?:ref)?|pinvokeimpl|private|privatescope|public|reqsecobj|rtspecialname|runtime|sealed|sequential|serializable|specialname|static|string|struct|syschar|tbstr|unicode|unmanagedexp|unsigned|value(?:type)?|variant|virtual|void)\\b/,\n function:\n /\\b(?:(?:constrained|no|readonly|tail|unaligned|volatile)\\.)?(?:conv\\.(?:[iu][1248]?|ovf\\.[iu][1248]?(?:\\.un)?|r\\.un|r4|r8)|ldc\\.(?:i4(?:\\.\\d+|\\.[mM]1|\\.s)?|i8|r4|r8)|ldelem(?:\\.[iu][1248]?|\\.r[48]|\\.ref|a)?|ldind\\.(?:[iu][1248]?|r[48]|ref)|stelem\\.?(?:i[1248]?|r[48]|ref)?|stind\\.(?:i[1248]?|r[48]|ref)?|end(?:fault|filter|finally)|ldarg(?:\\.[0-3s]|a(?:\\.s)?)?|ldloc(?:\\.\\d+|\\.s)?|sub(?:\\.ovf(?:\\.un)?)?|mul(?:\\.ovf(?:\\.un)?)?|add(?:\\.ovf(?:\\.un)?)?|stloc(?:\\.[0-3s])?|refany(?:type|val)|blt(?:\\.un)?(?:\\.s)?|ble(?:\\.un)?(?:\\.s)?|bgt(?:\\.un)?(?:\\.s)?|bge(?:\\.un)?(?:\\.s)?|unbox(?:\\.any)?|init(?:blk|obj)|call(?:i|virt)?|brfalse(?:\\.s)?|bne\\.un(?:\\.s)?|ldloca(?:\\.s)?|brzero(?:\\.s)?|brtrue(?:\\.s)?|brnull(?:\\.s)?|brinst(?:\\.s)?|starg(?:\\.s)?|leave(?:\\.s)?|shr(?:\\.un)?|rem(?:\\.un)?|div(?:\\.un)?|clt(?:\\.un)?|alignment|castclass|ldvirtftn|beq(?:\\.s)?|ckfinite|ldsflda|ldtoken|localloc|mkrefany|rethrow|cgt\\.un|arglist|switch|stsfld|sizeof|newobj|newarr|ldsfld|ldnull|ldflda|isinst|throw|stobj|stfld|ldstr|ldobj|ldlen|ldftn|ldfld|cpobj|cpblk|break|br\\.s|xor|shl|ret|pop|not|nop|neg|jmp|dup|cgt|ceq|box|and|or|br)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n number: /\\b-?(?:0x[0-9a-f]+|\\d+)(?:\\.[0-9a-f]+)?\\b/i,\n punctuation: /[{}[\\];(),:=]|IL_[0-9A-Za-z]+/\n }\n}\n","// @ts-nocheck\nimport refractorC from './c.js'\ncilkc.displayName = 'cilkc'\ncilkc.aliases = ['cilk-c']\n\n/** @type {import('../core.js').Syntax} */\nexport default function cilkc(Prism) {\n Prism.register(refractorC)\n Prism.languages.cilkc = Prism.languages.insertBefore('c', 'function', {\n 'parallel-keyword': {\n pattern: /\\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\\b/,\n alias: 'keyword'\n }\n })\n Prism.languages['cilk-c'] = Prism.languages['cilkc']\n}\n","// @ts-nocheck\nimport refractorCpp from './cpp.js'\ncilkcpp.displayName = 'cilkcpp'\ncilkcpp.aliases = ['cilk', 'cilk-cpp']\n\n/** @type {import('../core.js').Syntax} */\nexport default function cilkcpp(Prism) {\n Prism.register(refractorCpp)\n Prism.languages.cilkcpp = Prism.languages.insertBefore('cpp', 'function', {\n 'parallel-keyword': {\n pattern: /\\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\\b/,\n alias: 'keyword'\n }\n })\n Prism.languages['cilk-cpp'] = Prism.languages['cilkcpp']\n Prism.languages['cilk'] = Prism.languages['cilkcpp']\n}\n","// @ts-nocheck\nclojure.displayName = 'clojure'\nclojure.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function clojure(Prism) {\n // Copied from https://github.com/jeluard/prism-clojure\n Prism.languages.clojure = {\n comment: {\n pattern: /;.*/,\n greedy: true\n },\n string: {\n pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n greedy: true\n },\n char: /\\\\\\w+/,\n symbol: {\n pattern: /(^|[\\s()\\[\\]{},])::?[\\w*+!?'<>=/.-]+/,\n lookbehind: true\n },\n keyword: {\n pattern:\n /(\\()(?:-|->|->>|\\.|\\.\\.|\\*|\\/|\\+|<|<=|=|==|>|>=|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|cond|conj|cons|constantly|construct-proxy|contains\\?|count|create-ns|create-struct|cycle|dec|declare|def|def-|definline|definterface|defmacro|defmethod|defmulti|defn|defn-|defonce|defproject|defprotocol|defrecord|defstruct|deftype|deref|difference|disj|dissoc|distinct|do|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\\?|ensure|eval|every\\?|false\\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|fn|fnseq|for|frest|gensym|get|get-proxy-class|hash-map|hash-set|identical\\?|identity|if|if-let|if-not|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\\?|last|lazy-cat|lazy-cons|left|lefts|let|line-seq|list|list\\*|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|monitor-enter|name|namespace|neg\\?|new|newline|next|nil\\?|node|not|not-any\\?|not-every\\?|not=|ns|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|quote|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|recur|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\\?|set|set!|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\\?|split-at|split-with|str|string\\?|struct|struct-map|subs|subvec|symbol|symbol\\?|sync|take|take-nth|take-while|test|throw|time|to-array|to-array-2d|tree-seq|true\\?|try|union|up|update-proxy|val|vals|var|var-get|var-set|var\\?|vector|vector-zip|vector\\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\\?|zipmap|zipper)(?=[\\s)]|$)/,\n lookbehind: true\n },\n boolean: /\\b(?:false|nil|true)\\b/,\n number: {\n pattern:\n /(^|[^\\w$@])(?:\\d+(?:[/.]\\d+)?(?:e[+-]?\\d+)?|0x[a-f0-9]+|[1-9]\\d?r[a-z0-9]+)[lmn]?(?![\\w$@])/i,\n lookbehind: true\n },\n function: {\n pattern: /((?:^|[^'])\\()[\\w*+!?'<>=/.-]+(?=[\\s)]|$)/,\n lookbehind: true\n },\n operator: /[#@^`~]/,\n punctuation: /[{}\\[\\](),]/\n }\n}\n","// @ts-nocheck\ncmake.displayName = 'cmake'\ncmake.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function cmake(Prism) {\n Prism.languages.cmake = {\n comment: /#.*/,\n string: {\n pattern: /\"(?:[^\\\\\"]|\\\\.)*\"/,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /\\$\\{(?:[^{}$]|\\$\\{[^{}$]*\\})*\\}/,\n inside: {\n punctuation: /\\$\\{|\\}/,\n variable: /\\w+/\n }\n }\n }\n },\n variable:\n /\\b(?:CMAKE_\\w+|\\w+_(?:(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT|VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_NAME|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE))\\b/,\n property:\n /\\b(?:cxx_\\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\\w+|\\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\\b/,\n keyword:\n /\\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\\s*\\()\\b/,\n boolean: /\\b(?:FALSE|OFF|ON|TRUE)\\b/,\n namespace:\n /\\b(?:INTERFACE|PRIVATE|PROPERTIES|PUBLIC|SHARED|STATIC|TARGET_OBJECTS)\\b/,\n operator:\n /\\b(?:AND|DEFINED|EQUAL|GREATER|LESS|MATCHES|NOT|OR|STREQUAL|STRGREATER|STRLESS|VERSION_EQUAL|VERSION_GREATER|VERSION_LESS)\\b/,\n inserted: {\n pattern: /\\b\\w+::\\w+\\b/,\n alias: 'class-name'\n },\n number: /\\b\\d+(?:\\.\\d+)*\\b/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()\\b/i,\n punctuation: /[()>}]|\\$[<{]/\n }\n}\n","// @ts-nocheck\ncobol.displayName = 'cobol'\ncobol.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function cobol(Prism) {\n Prism.languages.cobol = {\n comment: {\n pattern: /\\*>.*|(^[ \\t]*)\\*.*/m,\n lookbehind: true,\n greedy: true\n },\n string: {\n pattern: /[xzgn]?(?:\"(?:[^\\r\\n\"]|\"\")*\"(?!\")|'(?:[^\\r\\n']|'')*'(?!'))/i,\n greedy: true\n },\n level: {\n pattern: /(^[ \\t]*)\\d+\\b/m,\n lookbehind: true,\n greedy: true,\n alias: 'number'\n },\n 'class-name': {\n // https://github.com/antlr/grammars-v4/blob/42edd5b687d183b5fa679e858a82297bd27141e7/cobol85/Cobol85.g4#L1015\n pattern:\n /(\\bpic(?:ture)?\\s+)(?:(?:[-\\w$/,:*+<>]|\\.(?!\\s|$))(?:\\(\\d+\\))?)+/i,\n lookbehind: true,\n inside: {\n number: {\n pattern: /(\\()\\d+/,\n lookbehind: true\n },\n punctuation: /[()]/\n }\n },\n keyword: {\n pattern:\n /(^|[^\\w-])(?:ABORT|ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALIGNED|ALL|ALPHABET|ALPHABETIC|ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALSO|ALTER|ALTERNATE|ANY|ARE|AREA|AREAS|AS|ASCENDING|ASCII|ASSIGN|ASSOCIATED-DATA|ASSOCIATED-DATA-LENGTH|AT|ATTRIBUTE|AUTHOR|AUTO|AUTO-SKIP|BACKGROUND-COLOR|BACKGROUND-COLOUR|BASIS|BEEP|BEFORE|BEGINNING|BELL|BINARY|BIT|BLANK|BLINK|BLOCK|BOTTOM|BOUNDS|BY|BYFUNCTION|BYTITLE|CALL|CANCEL|CAPABLE|CCSVERSION|CD|CF|CH|CHAINING|CHANGED|CHANNEL|CHARACTER|CHARACTERS|CLASS|CLASS-ID|CLOCK-UNITS|CLOSE|CLOSE-DISPOSITION|COBOL|CODE|CODE-SET|COL|COLLATING|COLUMN|COM-REG|COMMA|COMMITMENT|COMMON|COMMUNICATION|COMP|COMP-1|COMP-2|COMP-3|COMP-4|COMP-5|COMPUTATIONAL|COMPUTATIONAL-1|COMPUTATIONAL-2|COMPUTATIONAL-3|COMPUTATIONAL-4|COMPUTATIONAL-5|COMPUTE|CONFIGURATION|CONTAINS|CONTENT|CONTINUE|CONTROL|CONTROL-POINT|CONTROLS|CONVENTION|CONVERTING|COPY|CORR|CORRESPONDING|COUNT|CRUNCH|CURRENCY|CURSOR|DATA|DATA-BASE|DATE|DATE-COMPILED|DATE-WRITTEN|DAY|DAY-OF-WEEK|DBCS|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE|DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT|DECLARATIVES|DEFAULT|DEFAULT-DISPLAY|DEFINITION|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION|DETAIL|DFHRESP|DFHVALUE|DISABLE|DISK|DISPLAY|DISPLAY-1|DIVIDE|DIVISION|DONTCARE|DOUBLE|DOWN|DUPLICATES|DYNAMIC|EBCDIC|EGCS|EGI|ELSE|EMI|EMPTY-CHECK|ENABLE|END|END-ACCEPT|END-ADD|END-CALL|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF|END-MULTIPLY|END-OF-PAGE|END-PERFORM|END-READ|END-RECEIVE|END-RETURN|END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING|END-WRITE|ENDING|ENTER|ENTRY|ENTRY-PROCEDURE|ENVIRONMENT|EOL|EOP|EOS|ERASE|ERROR|ESCAPE|ESI|EVALUATE|EVENT|EVERY|EXCEPTION|EXCLUSIVE|EXHIBIT|EXIT|EXPORT|EXTEND|EXTENDED|EXTERNAL|FD|FILE|FILE-CONTROL|FILLER|FINAL|FIRST|FOOTING|FOR|FOREGROUND-COLOR|FOREGROUND-COLOUR|FROM|FULL|FUNCTION|FUNCTION-POINTER|FUNCTIONNAME|GENERATE|GIVING|GLOBAL|GO|GOBACK|GRID|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|HIGHLIGHT|I-O|I-O-CONTROL|ID|IDENTIFICATION|IF|IMPLICIT|IMPORT|IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE|INITIATE|INPUT|INPUT-OUTPUT|INSPECT|INSTALLATION|INTEGER|INTO|INVALID|INVOKE|IS|JUST|JUSTIFIED|KANJI|KEPT|KEY|KEYBOARD|LABEL|LANGUAGE|LAST|LB|LD|LEADING|LEFT|LEFTLINE|LENGTH|LENGTH-CHECK|LIBACCESS|LIBPARAMETER|LIBRARY|LIMIT|LIMITS|LINAGE|LINAGE-COUNTER|LINE|LINE-COUNTER|LINES|LINKAGE|LIST|LOCAL|LOCAL-STORAGE|LOCK|LONG-DATE|LONG-TIME|LOW-VALUE|LOW-VALUES|LOWER|LOWLIGHT|MEMORY|MERGE|MESSAGE|MMDDYYYY|MODE|MODULES|MORE-LABELS|MOVE|MULTIPLE|MULTIPLY|NAMED|NATIONAL|NATIONAL-EDITED|NATIVE|NEGATIVE|NETWORK|NEXT|NO|NO-ECHO|NULL|NULLS|NUMBER|NUMERIC|NUMERIC-DATE|NUMERIC-EDITED|NUMERIC-TIME|OBJECT-COMPUTER|OCCURS|ODT|OF|OFF|OMITTED|ON|OPEN|OPTIONAL|ORDER|ORDERLY|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|OVERLINE|OWN|PACKED-DECIMAL|PADDING|PAGE|PAGE-COUNTER|PASSWORD|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|PORT|POSITION|POSITIVE|PRINTER|PRINTING|PRIVATE|PROCEDURE|PROCEDURE-POINTER|PROCEDURES|PROCEED|PROCESS|PROGRAM|PROGRAM-ID|PROGRAM-LIBRARY|PROMPT|PURGE|QUEUE|QUOTE|QUOTES|RANDOM|RD|READ|READER|REAL|RECEIVE|RECEIVED|RECORD|RECORDING|RECORDS|RECURSIVE|REDEFINES|REEL|REF|REFERENCE|REFERENCES|RELATIVE|RELEASE|REMAINDER|REMARKS|REMOTE|REMOVAL|REMOVE|RENAMES|REPLACE|REPLACING|REPORT|REPORTING|REPORTS|REQUIRED|RERUN|RESERVE|RESET|RETURN|RETURN-CODE|RETURNING|REVERSE-VIDEO|REVERSED|REWIND|REWRITE|RF|RH|RIGHT|ROUNDED|RUN|SAME|SAVE|SCREEN|SD|SEARCH|SECTION|SECURE|SECURITY|SEGMENT|SEGMENT-LIMIT|SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SHARED|SHAREDBYALL|SHAREDBYRUNUNIT|SHARING|SHIFT-IN|SHIFT-OUT|SHORT-DATE|SIGN|SIZE|SORT|SORT-CONTROL|SORT-CORE-SIZE|SORT-FILE-SIZE|SORT-MERGE|SORT-MESSAGE|SORT-MODE-SIZE|SORT-RETURN|SOURCE|SOURCE-COMPUTER|SPACE|SPACES|SPECIAL-NAMES|STANDARD|STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2|SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOL|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLY|TALLYING|TAPE|TASK|TERMINAL|TERMINATE|TEST|TEXT|THEN|THREAD|THREAD-LOCAL|THROUGH|THRU|TIME|TIMER|TIMES|TITLE|TO|TODAYS-DATE|TODAYS-NAME|TOP|TRAILING|TRUNCATED|TYPE|TYPEDEF|UNDERLINE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES|VARYING|VIRTUAL|WAIT|WHEN|WHEN-COMPILED|WITH|WORDS|WORKING-STORAGE|WRITE|YEAR|YYYYDDD|YYYYMMDD|ZERO-FILL|ZEROES|ZEROS)(?![\\w-])/i,\n lookbehind: true\n },\n boolean: {\n pattern: /(^|[^\\w-])(?:false|true)(?![\\w-])/i,\n lookbehind: true\n },\n number: {\n pattern:\n /(^|[^\\w-])(?:[+-]?(?:(?:\\d+(?:[.,]\\d+)?|[.,]\\d+)(?:e[+-]?\\d+)?|zero))(?![\\w-])/i,\n lookbehind: true\n },\n operator: [\n /<>|[<>]=?|[=+*/&]/,\n {\n pattern: /(^|[^\\w-])(?:-|and|equal|greater|less|not|or|than)(?![\\w-])/i,\n lookbehind: true\n }\n ],\n punctuation: /[.:,()]/\n }\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\ncoffeescript.displayName = 'coffeescript'\ncoffeescript.aliases = ['coffee']\n\n/** @type {import('../core.js').Syntax} */\nexport default function coffeescript(Prism) {\n Prism.register(refractorJavascript)\n ;(function (Prism) {\n // Ignore comments starting with { to privilege string interpolation highlighting\n var comment = /#(?!\\{).+/\n var interpolation = {\n pattern: /#\\{[^}]+\\}/,\n alias: 'variable'\n }\n Prism.languages.coffeescript = Prism.languages.extend('javascript', {\n comment: comment,\n string: [\n // Strings are multiline\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true\n },\n {\n // Strings are multiline\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n inside: {\n interpolation: interpolation\n }\n }\n ],\n keyword:\n /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n 'class-member': {\n pattern: /@(?!\\d)\\w+/,\n alias: 'variable'\n }\n })\n Prism.languages.insertBefore('coffeescript', 'comment', {\n 'multiline-comment': {\n pattern: /###[\\s\\S]+?###/,\n alias: 'comment'\n },\n // Block regexp can contain comments and interpolation\n 'block-regex': {\n pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n alias: 'regex',\n inside: {\n comment: comment,\n interpolation: interpolation\n }\n }\n })\n Prism.languages.insertBefore('coffeescript', 'string', {\n 'inline-javascript': {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n inside: {\n delimiter: {\n pattern: /^`|`$/,\n alias: 'punctuation'\n },\n script: {\n pattern: /[\\s\\S]+/,\n alias: 'language-javascript',\n inside: Prism.languages.javascript\n }\n }\n },\n // Block strings\n 'multiline-string': [\n {\n pattern: /'''[\\s\\S]*?'''/,\n greedy: true,\n alias: 'string'\n },\n {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: 'string',\n inside: {\n interpolation: interpolation\n }\n }\n ]\n })\n Prism.languages.insertBefore('coffeescript', 'keyword', {\n // Object property\n property: /(?!\\d)\\w+(?=\\s*:(?!:))/\n })\n delete Prism.languages.coffeescript['template-string']\n Prism.languages.coffee = Prism.languages.coffeescript\n })(Prism)\n}\n","// @ts-nocheck\nconcurnas.displayName = 'concurnas'\nconcurnas.aliases = ['conc']\n\n/** @type {import('../core.js').Syntax} */\nexport default function concurnas(Prism) {\n Prism.languages.concurnas = {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$)|\\/\\/.*)/,\n lookbehind: true,\n greedy: true\n },\n langext: {\n pattern: /\\b\\w+\\s*\\|\\|[\\s\\S]+?\\|\\|/,\n greedy: true,\n inside: {\n 'class-name': /^\\w+/,\n string: {\n pattern: /(^\\s*\\|\\|)[\\s\\S]+(?=\\|\\|$)/,\n lookbehind: true\n },\n punctuation: /\\|\\|/\n }\n },\n function: {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/,\n lookbehind: true\n },\n keyword:\n /\\b(?:abstract|actor|also|annotation|assert|async|await|bool|boolean|break|byte|case|catch|changed|char|class|closed|constant|continue|def|default|del|double|elif|else|enum|every|extends|false|finally|float|for|from|global|gpudef|gpukernel|if|import|in|init|inject|int|lambda|local|long|loop|match|new|nodefault|null|of|onchange|open|out|override|package|parfor|parforsync|post|pre|private|protected|provide|provider|public|return|shared|short|single|size_t|sizeof|super|sync|this|throw|trait|trans|transient|true|try|typedef|unchecked|using|val|var|void|while|with)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n number:\n /\\b0b[01][01_]*L?\\b|\\b0x(?:[\\da-f_]*\\.)?[\\da-f_p+-]+\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfls]?/i,\n punctuation: /[{}[\\];(),.:]/,\n operator:\n /<==|>==|=>|->|<-|<>|&==|&<>|\\?:?|\\.\\?|\\+\\+|--|[-+*/=<>]=?|[!^~]|\\b(?:and|as|band|bor|bxor|comp|is|isnot|mod|or)\\b=?/,\n annotation: {\n pattern: /@(?:\\w+:)?(?:\\w+|\\[[^\\]]+\\])?/,\n alias: 'builtin'\n }\n }\n Prism.languages.insertBefore('concurnas', 'langext', {\n 'regex-literal': {\n pattern: /\\br(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true,\n inside: {\n interpolation: {\n pattern:\n /((?:^|[^\\\\])(?:\\\\{2})*)\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n lookbehind: true,\n inside: Prism.languages.concurnas\n },\n regex: /[\\s\\S]+/\n }\n },\n 'string-literal': {\n pattern: /(?:\\B|\\bs)(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true,\n inside: {\n interpolation: {\n pattern:\n /((?:^|[^\\\\])(?:\\\\{2})*)\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n lookbehind: true,\n inside: Prism.languages.concurnas\n },\n string: /[\\s\\S]+/\n }\n }\n })\n Prism.languages.conc = Prism.languages.concurnas\n}\n","// @ts-nocheck\ncsp.displayName = 'csp'\ncsp.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function csp(Prism) {\n /**\n * Original by Scott Helme.\n *\n * Reference: https://scotthelme.co.uk/csp-cheat-sheet/\n *\n * Supports the following:\n * - https://www.w3.org/TR/CSP1/\n * - https://www.w3.org/TR/CSP2/\n * - https://www.w3.org/TR/CSP3/\n */\n\n ;(function (Prism) {\n /**\n * @param {string} source\n * @returns {RegExp}\n */\n function value(source) {\n return RegExp(\n /([ \\t])/.source + '(?:' + source + ')' + /(?=[\\s;]|$)/.source,\n 'i'\n )\n }\n Prism.languages.csp = {\n directive: {\n pattern:\n /(^|[\\s;])(?:base-uri|block-all-mixed-content|(?:child|connect|default|font|frame|img|manifest|media|object|prefetch|script|style|worker)-src|disown-opener|form-action|frame-(?:ancestors|options)|input-protection(?:-(?:clip|selectors))?|navigate-to|plugin-types|policy-uri|referrer|reflected-xss|report-(?:to|uri)|require-sri-for|sandbox|(?:script|style)-src-(?:attr|elem)|upgrade-insecure-requests)(?=[\\s;]|$)/i,\n lookbehind: true,\n alias: 'property'\n },\n scheme: {\n pattern: value(/[a-z][a-z0-9.+-]*:/.source),\n lookbehind: true\n },\n none: {\n pattern: value(/'none'/.source),\n lookbehind: true,\n alias: 'keyword'\n },\n nonce: {\n pattern: value(/'nonce-[-+/\\w=]+'/.source),\n lookbehind: true,\n alias: 'number'\n },\n hash: {\n pattern: value(/'sha(?:256|384|512)-[-+/\\w=]+'/.source),\n lookbehind: true,\n alias: 'number'\n },\n host: {\n pattern: value(\n /[a-z][a-z0-9.+-]*:\\/\\/[^\\s;,']*/.source +\n '|' +\n /\\*[^\\s;,']*/.source +\n '|' +\n /[a-z0-9-]+(?:\\.[a-z0-9-]+)+(?::[\\d*]+)?(?:\\/[^\\s;,']*)?/.source\n ),\n lookbehind: true,\n alias: 'url',\n inside: {\n important: /\\*/\n }\n },\n keyword: [\n {\n pattern: value(/'unsafe-[a-z-]+'/.source),\n lookbehind: true,\n alias: 'unsafe'\n },\n {\n pattern: value(/'[a-z-]+'/.source),\n lookbehind: true,\n alias: 'safe'\n }\n ],\n punctuation: /;/\n }\n })(Prism)\n}\n","// @ts-nocheck\ncooklang.displayName = 'cooklang'\ncooklang.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function cooklang(Prism) {\n ;(function (Prism) {\n // see https://github.com/cooklang/spec/blob/main/EBNF.md\n\n var single_token_suffix = /(?:(?!\\s)[\\d$+<=a-zA-Z\\x80-\\uFFFF])+/.source\n var multi_token_infix = /[^{}@#]+/.source\n var multi_token_suffix = /\\{[^}#@]*\\}/.source\n var multi_token = multi_token_infix + multi_token_suffix\n var timer_units = /(?:h|hours|hrs|m|min|minutes)/.source\n var amount_group_impl = {\n pattern: /\\{[^{}]*\\}/,\n inside: {\n amount: {\n pattern: /([\\{|])[^{}|*%]+/,\n lookbehind: true,\n alias: 'number'\n },\n unit: {\n pattern: /(%)[^}]+/,\n lookbehind: true,\n alias: 'symbol'\n },\n 'servings-scaler': {\n pattern: /\\*/,\n alias: 'operator'\n },\n 'servings-alternative-separator': {\n pattern: /\\|/,\n alias: 'operator'\n },\n 'unit-separator': {\n pattern: /(?:%|(\\*)%)/,\n lookbehind: true,\n alias: 'operator'\n },\n punctuation: /[{}]/\n }\n }\n Prism.languages.cooklang = {\n comment: {\n // [- comment -]\n // -- comment\n pattern: /\\[-[\\s\\S]*?-\\]|--.*/,\n greedy: true\n },\n meta: {\n // >> key: value\n pattern: />>.*:.*/,\n inside: {\n property: {\n // key:\n pattern: /(>>\\s*)[^\\s:](?:[^:]*[^\\s:])?/,\n lookbehind: true\n }\n }\n },\n 'cookware-group': {\n // #...{...}, #...\n pattern: new RegExp(\n '#(?:' + multi_token + '|' + single_token_suffix + ')'\n ),\n inside: {\n cookware: {\n pattern: new RegExp('(^#)(?:' + multi_token_infix + ')'),\n lookbehind: true,\n alias: 'variable'\n },\n 'cookware-keyword': {\n pattern: /^#/,\n alias: 'keyword'\n },\n 'quantity-group': {\n pattern: new RegExp(/\\{[^{}@#]*\\}/),\n inside: {\n quantity: {\n pattern: new RegExp(/(^\\{)/.source + multi_token_infix),\n lookbehind: true,\n alias: 'number'\n },\n punctuation: /[{}]/\n }\n }\n }\n },\n 'ingredient-group': {\n // @...{...}, @...\n pattern: new RegExp(\n '@(?:' + multi_token + '|' + single_token_suffix + ')'\n ),\n inside: {\n ingredient: {\n pattern: new RegExp('(^@)(?:' + multi_token_infix + ')'),\n lookbehind: true,\n alias: 'variable'\n },\n 'ingredient-keyword': {\n pattern: /^@/,\n alias: 'keyword'\n },\n 'amount-group': amount_group_impl\n }\n },\n 'timer-group': {\n // ~timer{...}\n // eslint-disable-next-line regexp/sort-alternatives\n pattern: /~(?!\\s)[^@#~{}]*\\{[^{}]*\\}/,\n inside: {\n timer: {\n pattern: /(^~)[^{]+/,\n lookbehind: true,\n alias: 'variable'\n },\n 'duration-group': {\n // {...}\n pattern: /\\{[^{}]*\\}/,\n inside: {\n punctuation: /[{}]/,\n unit: {\n pattern: new RegExp(\n /(%\\s*)/.source + timer_units + /\\b/.source\n ),\n lookbehind: true,\n alias: 'symbol'\n },\n operator: /%/,\n duration: {\n pattern: /\\d+/,\n alias: 'number'\n }\n }\n },\n 'timer-keyword': {\n pattern: /^~/,\n alias: 'keyword'\n }\n }\n }\n }\n })(Prism)\n}\n","// @ts-nocheck\ncoq.displayName = 'coq'\ncoq.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function coq(Prism) {\n ;(function (Prism) {\n // https://github.com/coq/coq\n\n var commentSource = /\\(\\*(?:[^(*]|\\((?!\\*)|\\*(?!\\))|<self>)*\\*\\)/.source\n for (var i = 0; i < 2; i++) {\n commentSource = commentSource.replace(/<self>/g, function () {\n return commentSource\n })\n }\n commentSource = commentSource.replace(/<self>/g, '[]')\n Prism.languages.coq = {\n comment: RegExp(commentSource),\n string: {\n pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n greedy: true\n },\n attribute: [\n {\n pattern: RegExp(\n /#\\[(?:[^\\[\\](\"]|\"(?:[^\"]|\"\")*\"(?!\")|\\((?!\\*)|<comment>)*\\]/.source.replace(\n /<comment>/g,\n function () {\n return commentSource\n }\n )\n ),\n greedy: true,\n alias: 'attr-name',\n inside: {\n comment: RegExp(commentSource),\n string: {\n pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n greedy: true\n },\n operator: /=/,\n punctuation: /^#\\[|\\]$|[,()]/\n }\n },\n {\n pattern:\n /\\b(?:Cumulative|Global|Local|Monomorphic|NonCumulative|Polymorphic|Private|Program)\\b/,\n alias: 'attr-name'\n }\n ],\n keyword:\n /\\b(?:Abort|About|Add|Admit|Admitted|All|Arguments|As|Assumptions|Axiom|Axioms|Back|BackTo|Backtrace|BinOp|BinOpSpec|BinRel|Bind|Blacklist|Canonical|Case|Cd|Check|Class|Classes|Close|CoFixpoint|CoInductive|Coercion|Coercions|Collection|Combined|Compute|Conjecture|Conjectures|Constant|Constants|Constraint|Constructors|Context|Corollary|Create|CstOp|Custom|Cut|Debug|Declare|Defined|Definition|Delimit|Dependencies|Dependent|Derive|Diffs|Drop|Elimination|End|Entry|Equality|Eval|Example|Existential|Existentials|Existing|Export|Extern|Extraction|Fact|Fail|Field|File|Firstorder|Fixpoint|Flags|Focus|From|Funclass|Function|Functional|GC|Generalizable|Goal|Grab|Grammar|Graph|Guarded|Haskell|Heap|Hide|Hint|HintDb|Hints|Hypotheses|Hypothesis|IF|Identity|Immediate|Implicit|Implicits|Import|Include|Induction|Inductive|Infix|Info|Initial|InjTyp|Inline|Inspect|Instance|Instances|Intro|Intros|Inversion|Inversion_clear|JSON|Language|Left|Lemma|Let|Lia|Libraries|Library|Load|LoadPath|Locate|Ltac|Ltac2|ML|Match|Method|Minimality|Module|Modules|Morphism|Next|NoInline|Notation|Number|OCaml|Obligation|Obligations|Opaque|Open|Optimize|Parameter|Parameters|Parametric|Path|Paths|Prenex|Preterm|Primitive|Print|Profile|Projections|Proof|Prop|PropBinOp|PropOp|PropUOp|Property|Proposition|Pwd|Qed|Quit|Rec|Record|Recursive|Redirect|Reduction|Register|Relation|Remark|Remove|Require|Reserved|Reset|Resolve|Restart|Rewrite|Right|Ring|Rings|SProp|Saturate|Save|Scheme|Scope|Scopes|Search|SearchHead|SearchPattern|SearchRewrite|Section|Separate|Set|Setoid|Show|Signatures|Solve|Solver|Sort|Sortclass|Sorted|Spec|Step|Strategies|Strategy|String|Structure|SubClass|Subgraph|SuchThat|Tactic|Term|TestCompile|Theorem|Time|Timeout|To|Transparent|Type|Typeclasses|Types|Typing|UnOp|UnOpSpec|Undelimit|Undo|Unfocus|Unfocused|Unfold|Universe|Universes|Unshelve|Variable|Variables|Variant|Verbose|View|Visibility|Zify|_|apply|as|at|by|cofix|else|end|exists|exists2|fix|for|forall|fun|if|in|let|match|measure|move|removed|return|struct|then|using|wf|where|with)\\b/,\n number:\n /\\b(?:0x[a-f0-9][a-f0-9_]*(?:\\.[a-f0-9_]+)?(?:p[+-]?\\d[\\d_]*)?|\\d[\\d_]*(?:\\.[\\d_]+)?(?:e[+-]?\\d[\\d_]*)?)\\b/i,\n punct: {\n pattern: /@\\{|\\{\\||\\[=|:>/,\n alias: 'punctuation'\n },\n operator:\n /\\/\\\\|\\\\\\/|\\.{2,3}|:{1,2}=|\\*\\*|[-=]>|<(?:->?|[+:=>]|<:)|>(?:=|->)|\\|[-|]?|[-!%&*+/<=>?@^~']/,\n punctuation: /\\.\\(|`\\(|@\\{|`\\{|\\{\\||\\[=|:>|[:.,;(){}\\[\\]]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorRuby from './ruby.js'\ncrystal.displayName = 'crystal'\ncrystal.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function crystal(Prism) {\n Prism.register(refractorRuby)\n ;(function (Prism) {\n Prism.languages.crystal = Prism.languages.extend('ruby', {\n keyword: [\n /\\b(?:__DIR__|__END_LINE__|__FILE__|__LINE__|abstract|alias|annotation|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|ifdef|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|ptr|require|rescue|return|select|self|sizeof|struct|super|then|type|typeof|undef|uninitialized|union|unless|until|when|while|with|yield)\\b/,\n {\n pattern: /(\\.\\s*)(?:is_a|responds_to)\\?/,\n lookbehind: true\n }\n ],\n number:\n /\\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\\da-fA-F_]*[\\da-fA-F]|(?:\\d(?:[\\d_]*\\d)?)(?:\\.[\\d_]*\\d)?(?:[eE][+-]?[\\d_]*\\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\\b/,\n operator: [/->/, Prism.languages.ruby.operator],\n punctuation: /[(){}[\\].,;\\\\]/\n })\n Prism.languages.insertBefore('crystal', 'string-literal', {\n attribute: {\n pattern: /@\\[.*?\\]/,\n inside: {\n delimiter: {\n pattern: /^@\\[|\\]$/,\n alias: 'punctuation'\n },\n attribute: {\n pattern: /^(\\s*)\\w+/,\n lookbehind: true,\n alias: 'class-name'\n },\n args: {\n pattern: /\\S(?:[\\s\\S]*\\S)?/,\n inside: Prism.languages.crystal\n }\n }\n },\n expansion: {\n pattern: /\\{(?:\\{.*?\\}|%.*?%)\\}/,\n inside: {\n content: {\n pattern: /^(\\{.)[\\s\\S]+(?=.\\}$)/,\n lookbehind: true,\n inside: Prism.languages.crystal\n },\n delimiter: {\n pattern: /^\\{[\\{%]|[\\}%]\\}$/,\n alias: 'operator'\n }\n }\n },\n char: {\n pattern:\n /'(?:[^\\\\\\r\\n]{1,2}|\\\\(?:.|u(?:[A-Fa-f0-9]{1,4}|\\{[A-Fa-f0-9]{1,6}\\})))'/,\n greedy: true\n }\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorCss from './css.js'\ncssExtras.displayName = 'css-extras'\ncssExtras.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function cssExtras(Prism) {\n Prism.register(refractorCss)\n ;(function (Prism) {\n var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/\n var selectorInside\n Prism.languages.css.selector = {\n pattern: Prism.languages.css.selector.pattern,\n lookbehind: true,\n inside: (selectorInside = {\n 'pseudo-element':\n /:(?:after|before|first-letter|first-line|selection)|::[-\\w]+/,\n 'pseudo-class': /:[-\\w]+/,\n class: /\\.[-\\w]+/,\n id: /#[-\\w]+/,\n attribute: {\n pattern: RegExp('\\\\[(?:[^[\\\\]\"\\']|' + string.source + ')*\\\\]'),\n greedy: true,\n inside: {\n punctuation: /^\\[|\\]$/,\n 'case-sensitivity': {\n pattern: /(\\s)[si]$/i,\n lookbehind: true,\n alias: 'keyword'\n },\n namespace: {\n pattern: /^(\\s*)(?:(?!\\s)[-*\\w\\xA0-\\uFFFF])*\\|(?!=)/,\n lookbehind: true,\n inside: {\n punctuation: /\\|$/\n }\n },\n 'attr-name': {\n pattern: /^(\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+/,\n lookbehind: true\n },\n 'attr-value': [\n string,\n {\n pattern: /(=\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+(?=\\s*$)/,\n lookbehind: true\n }\n ],\n operator: /[|~*^$]?=/\n }\n },\n 'n-th': [\n {\n pattern: /(\\(\\s*)[+-]?\\d*[\\dn](?:\\s*[+-]\\s*\\d+)?(?=\\s*\\))/,\n lookbehind: true,\n inside: {\n number: /[\\dn]+/,\n operator: /[+-]/\n }\n },\n {\n pattern: /(\\(\\s*)(?:even|odd)(?=\\s*\\))/i,\n lookbehind: true\n }\n ],\n combinator: />|\\+|~|\\|\\|/,\n // the `tag` token has been existed and removed.\n // because we can't find a perfect tokenize to match it.\n // if you want to add it, please read https://github.com/PrismJS/prism/pull/2373 first.\n\n punctuation: /[(),]/\n })\n }\n Prism.languages.css['atrule'].inside['selector-function-argument'].inside =\n selectorInside\n Prism.languages.insertBefore('css', 'property', {\n variable: {\n pattern:\n /(^|[^-\\w\\xA0-\\uFFFF])--(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*/i,\n lookbehind: true\n }\n })\n var unit = {\n pattern: /(\\b\\d+)(?:%|[a-z]+(?![\\w-]))/,\n lookbehind: true\n }\n // 123 -123 .123 -.123 12.3 -12.3\n var number = {\n pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n lookbehind: true\n }\n Prism.languages.insertBefore('css', 'function', {\n operator: {\n pattern: /(\\s)[+\\-*\\/](?=\\s)/,\n lookbehind: true\n },\n // CAREFUL!\n // Previewers and Inline color use hexcode and color.\n hexcode: {\n pattern: /\\B#[\\da-f]{3,8}\\b/i,\n alias: 'color'\n },\n color: [\n {\n pattern:\n /(^|[^\\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\\w-])/i,\n lookbehind: true\n },\n {\n pattern:\n /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n inside: {\n unit: unit,\n number: number,\n function: /[\\w-]+(?=\\()/,\n punctuation: /[(),]/\n }\n }\n ],\n // it's important that there is no boundary assertion after the hex digits\n entity: /\\\\[\\da-f]{1,8}/i,\n unit: unit,\n number: number\n })\n })(Prism)\n}\n","// @ts-nocheck\ncsv.displayName = 'csv'\ncsv.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function csv(Prism) {\n // https://tools.ietf.org/html/rfc4180\n\n Prism.languages.csv = {\n value: /[^\\r\\n,\"]+|\"(?:[^\"]|\"\")*\"(?!\")/,\n punctuation: /,/\n }\n}\n","// @ts-nocheck\ncue.displayName = 'cue'\ncue.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function cue(Prism) {\n ;(function (Prism) {\n // https://cuelang.org/docs/references/spec/\n\n // eslint-disable-next-line regexp/strict\n var stringEscape = /\\\\(?:(?!\\2)|\\2(?:[^()\\r\\n]|\\([^()]*\\)))/.source\n // eslint-disable-next-line regexp/strict\n var stringTypes =\n /\"\"\"(?:[^\\\\\"]|\"(?!\"\"\\2)|<esc>)*\"\"\"/.source +\n // eslint-disable-next-line regexp/strict\n '|' +\n /'''(?:[^\\\\']|'(?!''\\2)|<esc>)*'''/.source +\n // eslint-disable-next-line regexp/strict\n '|' +\n /\"(?:[^\\\\\\r\\n\"]|\"(?!\\2)|<esc>)*\"/.source +\n // eslint-disable-next-line regexp/strict\n '|' +\n /'(?:[^\\\\\\r\\n']|'(?!\\2)|<esc>)*'/.source\n var stringLiteral =\n '(?:' + stringTypes.replace(/<esc>/g, stringEscape) + ')'\n Prism.languages.cue = {\n comment: {\n pattern: /\\/\\/.*/,\n greedy: true\n },\n 'string-literal': {\n // eslint-disable-next-line regexp/strict\n pattern: RegExp(\n /(^|[^#\"'\\\\])(#*)/.source + stringLiteral + /(?![\"'])\\2/.source\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n // I'm using dirty hack here. We have to know the number hashes at the start of the string somehow,\n // but we can't look back. So instead, we will use a lookahead, go to the end of the string, and\n // capture the hashes at the end of the string.\n escape: {\n pattern:\n /(?=[\\s\\S]*[\"'](#*)$)\\\\\\1(?:U[a-fA-F0-9]{1,8}|u[a-fA-F0-9]{1,4}|x[a-fA-F0-9]{1,2}|\\d{2,3}|[^(])/,\n greedy: true,\n alias: 'string'\n },\n interpolation: {\n pattern: /(?=[\\s\\S]*[\"'](#*)$)\\\\\\1\\([^()]*\\)/,\n greedy: true,\n inside: {\n punctuation: /^\\\\#*\\(|\\)$/,\n expression: {\n pattern: /[\\s\\S]+/,\n inside: null\n }\n }\n },\n string: /[\\s\\S]+/\n }\n },\n keyword: {\n pattern: /(^|[^\\w$])(?:for|if|import|in|let|null|package)(?![\\w$])/,\n lookbehind: true\n },\n boolean: {\n pattern: /(^|[^\\w$])(?:false|true)(?![\\w$])/,\n lookbehind: true\n },\n builtin: {\n pattern:\n /(^|[^\\w$])(?:bool|bytes|float|float(?:32|64)|u?int(?:8|16|32|64|128)?|number|rune|string)(?![\\w$])/,\n lookbehind: true\n },\n attribute: {\n pattern: /@[\\w$]+(?=\\s*\\()/,\n alias: 'function'\n },\n function: {\n pattern: /(^|[^\\w$])[a-z_$][\\w$]*(?=\\s*\\()/i,\n lookbehind: true\n },\n number: {\n pattern:\n /(^|[^\\w$.])(?:0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|0[xX][0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[eE][+-]?\\d+(?:_\\d+)*)?(?:[KMGTP]i?)?)(?![\\w$])/,\n lookbehind: true\n },\n operator: /\\.{3}|_\\|_|&&?|\\|\\|?|[=!]~|[<>=!]=?|[+\\-*/?]/,\n punctuation: /[()[\\]{},.:]/\n }\n Prism.languages.cue[\n 'string-literal'\n ].inside.interpolation.inside.expression.inside = Prism.languages.cue\n })(Prism)\n}\n","// @ts-nocheck\ncypher.displayName = 'cypher'\ncypher.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function cypher(Prism) {\n Prism.languages.cypher = {\n // https://neo4j.com/docs/cypher-manual/current/syntax/comments/\n comment: /\\/\\/.*/,\n string: {\n pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n greedy: true\n },\n 'class-name': {\n pattern: /(:\\s*)(?:\\w+|`(?:[^`\\\\\\r\\n])*`)(?=\\s*[{):])/,\n lookbehind: true,\n greedy: true\n },\n relationship: {\n pattern:\n /(-\\[\\s*(?:\\w+\\s*|`(?:[^`\\\\\\r\\n])*`\\s*)?:\\s*|\\|\\s*:\\s*)(?:\\w+|`(?:[^`\\\\\\r\\n])*`)/,\n lookbehind: true,\n greedy: true,\n alias: 'property'\n },\n identifier: {\n pattern: /`(?:[^`\\\\\\r\\n])*`/,\n greedy: true\n },\n variable: /\\$\\w+/,\n // https://neo4j.com/docs/cypher-manual/current/syntax/reserved/\n keyword:\n /\\b(?:ADD|ALL|AND|AS|ASC|ASCENDING|ASSERT|BY|CALL|CASE|COMMIT|CONSTRAINT|CONTAINS|CREATE|CSV|DELETE|DESC|DESCENDING|DETACH|DISTINCT|DO|DROP|ELSE|END|ENDS|EXISTS|FOR|FOREACH|IN|INDEX|IS|JOIN|KEY|LIMIT|LOAD|MANDATORY|MATCH|MERGE|NODE|NOT|OF|ON|OPTIONAL|OR|ORDER(?=\\s+BY)|PERIODIC|REMOVE|REQUIRE|RETURN|SCALAR|SCAN|SET|SKIP|START|STARTS|THEN|UNION|UNIQUE|UNWIND|USING|WHEN|WHERE|WITH|XOR|YIELD)\\b/i,\n function: /\\b\\w+\\b(?=\\s*\\()/,\n boolean: /\\b(?:false|null|true)\\b/i,\n number: /\\b(?:0x[\\da-fA-F]+|\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)\\b/,\n // https://neo4j.com/docs/cypher-manual/current/syntax/operators/\n operator: /:|<--?|--?>?|<>|=~?|[<>]=?|[+*/%^|]|\\.\\.\\.?/,\n punctuation: /[()[\\]{},;.]/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nd.displayName = 'd'\nd.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function d(Prism) {\n Prism.register(refractorClike)\n Prism.languages.d = Prism.languages.extend('clike', {\n comment: [\n {\n // Shebang\n pattern: /^\\s*#!.+/,\n greedy: true\n },\n {\n pattern: RegExp(\n /(^|[^\\\\])/.source +\n '(?:' +\n [\n // /+ comment +/\n // Allow one level of nesting\n /\\/\\+(?:\\/\\+(?:[^+]|\\+(?!\\/))*\\+\\/|(?!\\/\\+)[\\s\\S])*?\\+\\//.source,\n // // comment\n /\\/\\/.*/.source,\n // /* comment */\n /\\/\\*[\\s\\S]*?\\*\\//.source\n ].join('|') +\n ')'\n ),\n lookbehind: true,\n greedy: true\n }\n ],\n string: [\n {\n pattern: RegExp(\n [\n // r\"\", x\"\"\n /\\b[rx]\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"[cwd]?/.source,\n // q\"[]\", q\"()\", q\"<>\", q\"{}\"\n /\\bq\"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})\"/.source,\n // q\"IDENT\n // ...\n // IDENT\"\n /\\bq\"((?!\\d)\\w+)$[\\s\\S]*?^\\1\"/.source,\n // q\"//\", q\"||\", etc.\n // eslint-disable-next-line regexp/strict\n /\\bq\"(.)[\\s\\S]*?\\2\"/.source,\n // eslint-disable-next-line regexp/strict\n /([\"`])(?:\\\\[\\s\\S]|(?!\\3)[^\\\\])*\\3[cwd]?/.source\n ].join('|'),\n 'm'\n ),\n greedy: true\n },\n {\n pattern: /\\bq\\{(?:\\{[^{}]*\\}|[^{}])*\\}/,\n greedy: true,\n alias: 'token-string'\n }\n ],\n // In order: $, keywords and special tokens, globally defined symbols\n keyword:\n /\\$|\\b(?:__(?:(?:DATE|EOF|FILE|FUNCTION|LINE|MODULE|PRETTY_FUNCTION|TIMESTAMP|TIME|VENDOR|VERSION)__|gshared|parameters|traits|vector)|abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|dstring|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|ptrdiff_t|public|pure|real|ref|return|scope|shared|short|size_t|static|string|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|wstring)\\b/,\n number: [\n // The lookbehind and the negative look-ahead try to prevent bad highlighting of the .. operator\n // Hexadecimal numbers must be handled separately to avoid problems with exponent \"e\"\n /\\b0x\\.?[a-f\\d_]+(?:(?!\\.\\.)\\.[a-f\\d_]*)?(?:p[+-]?[a-f\\d_]+)?[ulfi]{0,4}/i,\n {\n pattern:\n /((?:\\.\\.)?)(?:\\b0b\\.?|\\b|\\.)\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?[ulfi]{0,4}/i,\n lookbehind: true\n }\n ],\n operator:\n /\\|[|=]?|&[&=]?|\\+[+=]?|-[-=]?|\\.?\\.\\.|=[>=]?|!(?:i[ns]\\b|<>?=?|>=?|=)?|\\bi[ns]\\b|(?:<[<>]?|>>?>?|\\^\\^|[*\\/%^~])=?/\n })\n Prism.languages.insertBefore('d', 'string', {\n // Characters\n // 'a', '\\\\', '\\n', '\\xFF', '\\377', '\\uFFFF', '\\U0010FFFF', '\\quot'\n char: /'(?:\\\\(?:\\W|\\w+)|[^\\\\])'/\n })\n Prism.languages.insertBefore('d', 'keyword', {\n property: /\\B@\\w*/\n })\n Prism.languages.insertBefore('d', 'function', {\n register: {\n // Iasm registers\n pattern:\n /\\b(?:[ABCD][LHX]|E?(?:BP|DI|SI|SP)|[BS]PL|[ECSDGF]S|CR[0234]|[DS]IL|DR[012367]|E[ABCD]X|X?MM[0-7]|R(?:1[0-5]|[89])[BWD]?|R[ABCD]X|R[BS]P|R[DS]I|TR[3-7]|XMM(?:1[0-5]|[89])|YMM(?:1[0-5]|\\d))\\b|\\bST(?:\\([0-7]\\)|\\b)/,\n alias: 'variable'\n }\n })\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\ndart.displayName = 'dart'\ndart.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function dart(Prism) {\n Prism.register(refractorClike)\n ;(function (Prism) {\n var keywords = [\n /\\b(?:async|sync|yield)\\*/,\n /\\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\\b/\n ]\n\n // Handles named imports, such as http.Client\n var packagePrefix = /(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/\n .source\n\n // based on the dart naming conventions\n var className = {\n pattern: RegExp(packagePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n lookbehind: true,\n inside: {\n namespace: {\n pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n inside: {\n punctuation: /\\./\n }\n }\n }\n }\n Prism.languages.dart = Prism.languages.extend('clike', {\n 'class-name': [\n className,\n {\n // variables and parameters\n // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n pattern: RegExp(\n packagePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])/.source\n ),\n lookbehind: true,\n inside: className.inside\n }\n ],\n keyword: keywords,\n operator:\n /\\bis!|\\b(?:as|is)\\b|\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?/\n })\n Prism.languages.insertBefore('dart', 'string', {\n 'string-literal': {\n pattern:\n /r?(?:(\"\"\"|''')[\\s\\S]*?\\1|([\"'])(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2(?!\\2))/,\n greedy: true,\n inside: {\n interpolation: {\n pattern:\n /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,\n lookbehind: true,\n inside: {\n punctuation: /^\\$\\{?|\\}$/,\n expression: {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages.dart\n }\n }\n },\n string: /[\\s\\S]+/\n }\n },\n string: undefined\n })\n Prism.languages.insertBefore('dart', 'class-name', {\n metadata: {\n pattern: /@\\w+/,\n alias: 'function'\n }\n })\n Prism.languages.insertBefore('dart', 'class-name', {\n generics: {\n pattern:\n /<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<[\\w\\s,.&?]*>)*>)*>)*>/,\n inside: {\n 'class-name': className,\n keyword: keywords,\n punctuation: /[<>(),.:]/,\n operator: /[?&|]/\n }\n }\n })\n })(Prism)\n}\n","// @ts-nocheck\ndataweave.displayName = 'dataweave'\ndataweave.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function dataweave(Prism) {\n ;(function (Prism) {\n Prism.languages.dataweave = {\n url: /\\b[A-Za-z]+:\\/\\/[\\w/:.?=&-]+|\\burn:[\\w:.?=&-]+/,\n property: {\n pattern: /(?:\\b\\w+#)?(?:\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|\\b\\w+)(?=\\s*[:@])/,\n greedy: true\n },\n string: {\n pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n },\n 'mime-type':\n /\\b(?:application|audio|image|multipart|text|video)\\/[\\w+-]+/,\n date: {\n pattern: /\\|[\\w:+-]+\\|/,\n greedy: true\n },\n comment: [\n {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n regex: {\n pattern: /\\/(?:[^\\\\\\/\\r\\n]|\\\\[^\\r\\n])+\\//,\n greedy: true\n },\n keyword:\n /\\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\\b/,\n function: /\\b[A-Z_]\\w*(?=\\s*\\()/i,\n number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n punctuation: /[{}[\\];(),.:@]/,\n operator: /<<|>>|->|[<>~=]=?|!=|--?-?|\\+\\+?|!|\\?/,\n boolean: /\\b(?:false|true)\\b/\n }\n })(Prism)\n}\n","// @ts-nocheck\ndax.displayName = 'dax'\ndax.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function dax(Prism) {\n Prism.languages.dax = {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/).*)/,\n lookbehind: true\n },\n 'data-field': {\n pattern:\n /'(?:[^']|'')*'(?!')(?:\\[[ \\w\\xA0-\\uFFFF]+\\])?|\\w+\\[[ \\w\\xA0-\\uFFFF]+\\]/,\n alias: 'symbol'\n },\n measure: {\n pattern: /\\[[ \\w\\xA0-\\uFFFF]+\\]/,\n alias: 'constant'\n },\n string: {\n pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n greedy: true\n },\n function:\n /\\b(?:ABS|ACOS|ACOSH|ACOT|ACOTH|ADDCOLUMNS|ADDMISSINGITEMS|ALL|ALLCROSSFILTERED|ALLEXCEPT|ALLNOBLANKROW|ALLSELECTED|AND|APPROXIMATEDISTINCTCOUNT|ASIN|ASINH|ATAN|ATANH|AVERAGE|AVERAGEA|AVERAGEX|BETA\\.DIST|BETA\\.INV|BLANK|CALCULATE|CALCULATETABLE|CALENDAR|CALENDARAUTO|CEILING|CHISQ\\.DIST|CHISQ\\.DIST\\.RT|CHISQ\\.INV|CHISQ\\.INV\\.RT|CLOSINGBALANCEMONTH|CLOSINGBALANCEQUARTER|CLOSINGBALANCEYEAR|COALESCE|COMBIN|COMBINA|COMBINEVALUES|CONCATENATE|CONCATENATEX|CONFIDENCE\\.NORM|CONFIDENCE\\.T|CONTAINS|CONTAINSROW|CONTAINSSTRING|CONTAINSSTRINGEXACT|CONVERT|COS|COSH|COT|COTH|COUNT|COUNTA|COUNTAX|COUNTBLANK|COUNTROWS|COUNTX|CROSSFILTER|CROSSJOIN|CURRENCY|CURRENTGROUP|CUSTOMDATA|DATATABLE|DATE|DATEADD|DATEDIFF|DATESBETWEEN|DATESINPERIOD|DATESMTD|DATESQTD|DATESYTD|DATEVALUE|DAY|DEGREES|DETAILROWS|DISTINCT|DISTINCTCOUNT|DISTINCTCOUNTNOBLANK|DIVIDE|EARLIER|EARLIEST|EDATE|ENDOFMONTH|ENDOFQUARTER|ENDOFYEAR|EOMONTH|ERROR|EVEN|EXACT|EXCEPT|EXP|EXPON\\.DIST|FACT|FALSE|FILTER|FILTERS|FIND|FIRSTDATE|FIRSTNONBLANK|FIRSTNONBLANKVALUE|FIXED|FLOOR|FORMAT|GCD|GENERATE|GENERATEALL|GENERATESERIES|GEOMEAN|GEOMEANX|GROUPBY|HASONEFILTER|HASONEVALUE|HOUR|IF|IF\\.EAGER|IFERROR|IGNORE|INT|INTERSECT|ISBLANK|ISCROSSFILTERED|ISEMPTY|ISERROR|ISEVEN|ISFILTERED|ISINSCOPE|ISLOGICAL|ISNONTEXT|ISNUMBER|ISO\\.CEILING|ISODD|ISONORAFTER|ISSELECTEDMEASURE|ISSUBTOTAL|ISTEXT|KEEPFILTERS|KEYWORDMATCH|LASTDATE|LASTNONBLANK|LASTNONBLANKVALUE|LCM|LEFT|LEN|LN|LOG|LOG10|LOOKUPVALUE|LOWER|MAX|MAXA|MAXX|MEDIAN|MEDIANX|MID|MIN|MINA|MINUTE|MINX|MOD|MONTH|MROUND|NATURALINNERJOIN|NATURALLEFTOUTERJOIN|NEXTDAY|NEXTMONTH|NEXTQUARTER|NEXTYEAR|NONVISUAL|NORM\\.DIST|NORM\\.INV|NORM\\.S\\.DIST|NORM\\.S\\.INV|NOT|NOW|ODD|OPENINGBALANCEMONTH|OPENINGBALANCEQUARTER|OPENINGBALANCEYEAR|OR|PARALLELPERIOD|PATH|PATHCONTAINS|PATHITEM|PATHITEMREVERSE|PATHLENGTH|PERCENTILE\\.EXC|PERCENTILE\\.INC|PERCENTILEX\\.EXC|PERCENTILEX\\.INC|PERMUT|PI|POISSON\\.DIST|POWER|PREVIOUSDAY|PREVIOUSMONTH|PREVIOUSQUARTER|PREVIOUSYEAR|PRODUCT|PRODUCTX|QUARTER|QUOTIENT|RADIANS|RAND|RANDBETWEEN|RANK\\.EQ|RANKX|RELATED|RELATEDTABLE|REMOVEFILTERS|REPLACE|REPT|RIGHT|ROLLUP|ROLLUPADDISSUBTOTAL|ROLLUPGROUP|ROLLUPISSUBTOTAL|ROUND|ROUNDDOWN|ROUNDUP|ROW|SAMEPERIODLASTYEAR|SAMPLE|SEARCH|SECOND|SELECTCOLUMNS|SELECTEDMEASURE|SELECTEDMEASUREFORMATSTRING|SELECTEDMEASURENAME|SELECTEDVALUE|SIGN|SIN|SINH|SQRT|SQRTPI|STARTOFMONTH|STARTOFQUARTER|STARTOFYEAR|STDEV\\.P|STDEV\\.S|STDEVX\\.P|STDEVX\\.S|SUBSTITUTE|SUBSTITUTEWITHINDEX|SUM|SUMMARIZE|SUMMARIZECOLUMNS|SUMX|SWITCH|T\\.DIST|T\\.DIST\\.2T|T\\.DIST\\.RT|T\\.INV|T\\.INV\\.2T|TAN|TANH|TIME|TIMEVALUE|TODAY|TOPN|TOPNPERLEVEL|TOPNSKIP|TOTALMTD|TOTALQTD|TOTALYTD|TREATAS|TRIM|TRUE|TRUNC|UNICHAR|UNICODE|UNION|UPPER|USERELATIONSHIP|USERNAME|USEROBJECTID|USERPRINCIPALNAME|UTCNOW|UTCTODAY|VALUE|VALUES|VAR\\.P|VAR\\.S|VARX\\.P|VARX\\.S|WEEKDAY|WEEKNUM|XIRR|XNPV|YEAR|YEARFRAC)(?=\\s*\\()/i,\n keyword:\n /\\b(?:DEFINE|EVALUATE|MEASURE|ORDER\\s+BY|RETURN|VAR|START\\s+AT|ASC|DESC)\\b/i,\n boolean: {\n pattern: /\\b(?:FALSE|NULL|TRUE)\\b/i,\n alias: 'constant'\n },\n number: /\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/,\n operator: /:=|[-+*\\/=^]|&&?|\\|\\||<(?:=>?|<|>)?|>[>=]?|\\b(?:IN|NOT)\\b/i,\n punctuation: /[;\\[\\](){}`,.]/\n }\n}\n","// @ts-nocheck\ndhall.displayName = 'dhall'\ndhall.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function dhall(Prism) {\n // ABNF grammar:\n // https://github.com/dhall-lang/dhall-lang/blob/master/standard/dhall.abnf\n\n Prism.languages.dhall = {\n // Multi-line comments can be nested. E.g. {- foo {- bar -} -}\n // The multi-line pattern is essentially this:\n // \\{-(?:[^-{]|-(?!\\})|\\{(?!-)|<SELF>)*-\\}\n comment:\n /--.*|\\{-(?:[^-{]|-(?!\\})|\\{(?!-)|\\{-(?:[^-{]|-(?!\\})|\\{(?!-))*-\\})*-\\}/,\n string: {\n pattern: /\"(?:[^\"\\\\]|\\\\.)*\"|''(?:[^']|'(?!')|'''|''\\$\\{)*''(?!'|\\$)/,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /\\$\\{[^{}]*\\}/,\n inside: {\n expression: {\n pattern: /(^\\$\\{)[\\s\\S]+(?=\\}$)/,\n lookbehind: true,\n alias: 'language-dhall',\n inside: null // see blow\n },\n\n punctuation: /\\$\\{|\\}/\n }\n }\n }\n },\n label: {\n pattern: /`[^`]*`/,\n greedy: true\n },\n url: {\n // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L596\n pattern:\n /\\bhttps?:\\/\\/[\\w.:%!$&'*+;=@~-]+(?:\\/[\\w.:%!$&'*+;=@~-]*)*(?:\\?[/?\\w.:%!$&'*+;=@~-]*)?/,\n greedy: true\n },\n env: {\n // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L661\n pattern: /\\benv:(?:(?!\\d)\\w+|\"(?:[^\"\\\\=]|\\\\.)*\")/,\n greedy: true,\n inside: {\n function: /^env/,\n operator: /^:/,\n variable: /[\\s\\S]+/\n }\n },\n hash: {\n // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L725\n pattern: /\\bsha256:[\\da-fA-F]{64}\\b/,\n inside: {\n function: /sha256/,\n operator: /:/,\n number: /[\\da-fA-F]{64}/\n }\n },\n // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L359\n keyword:\n /\\b(?:as|assert|else|forall|if|in|let|merge|missing|then|toMap|using|with)\\b|\\u2200/,\n builtin: /\\b(?:None|Some)\\b/,\n boolean: /\\b(?:False|True)\\b/,\n number:\n /\\bNaN\\b|-?\\bInfinity\\b|[+-]?\\b(?:0x[\\da-fA-F]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/,\n operator:\n /\\/\\\\|\\/\\/\\\\\\\\|&&|\\|\\||===|[!=]=|\\/\\/|->|\\+\\+|::|[+*#@=:?<>|\\\\\\u2227\\u2a53\\u2261\\u2afd\\u03bb\\u2192]/,\n punctuation: /\\.\\.|[{}\\[\\](),./]/,\n // we'll just assume that every capital word left is a type name\n 'class-name': /\\b[A-Z]\\w*\\b/\n }\n Prism.languages.dhall.string.inside.interpolation.inside.expression.inside =\n Prism.languages.dhall\n}\n","// @ts-nocheck\nimport refractorMarkupTemplating from './markup-templating.js'\ndjango.displayName = 'django'\ndjango.aliases = ['jinja2']\n\n/** @type {import('../core.js').Syntax} */\nexport default function django(Prism) {\n Prism.register(refractorMarkupTemplating)\n // Django/Jinja2 syntax definition for Prism.js <http://prismjs.com> syntax highlighter.\n // Mostly it works OK but can paint code incorrectly on complex html/template tag combinations.\n\n ;(function (Prism) {\n Prism.languages.django = {\n comment: /^\\{#[\\s\\S]*?#\\}$/,\n tag: {\n pattern: /(^\\{%[+-]?\\s*)\\w+/,\n lookbehind: true,\n alias: 'keyword'\n },\n delimiter: {\n pattern: /^\\{[{%][+-]?|[+-]?[}%]\\}$/,\n alias: 'punctuation'\n },\n string: {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n filter: {\n pattern: /(\\|)\\w+/,\n lookbehind: true,\n alias: 'function'\n },\n test: {\n pattern: /(\\bis\\s+(?:not\\s+)?)(?!not\\b)\\w+/,\n lookbehind: true,\n alias: 'function'\n },\n function: /\\b[a-z_]\\w+(?=\\s*\\()/i,\n keyword:\n /\\b(?:and|as|by|else|for|if|import|in|is|loop|not|or|recursive|with|without)\\b/,\n operator: /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n number: /\\b\\d+(?:\\.\\d+)?\\b/,\n boolean: /[Ff]alse|[Nn]one|[Tt]rue/,\n variable: /\\b\\w+\\b/,\n punctuation: /[{}[\\](),.:;]/\n }\n var pattern = /\\{\\{[\\s\\S]*?\\}\\}|\\{%[\\s\\S]*?%\\}|\\{#[\\s\\S]*?#\\}/g\n var markupTemplating = Prism.languages['markup-templating']\n Prism.hooks.add('before-tokenize', function (env) {\n markupTemplating.buildPlaceholders(env, 'django', pattern)\n })\n Prism.hooks.add('after-tokenize', function (env) {\n markupTemplating.tokenizePlaceholders(env, 'django')\n })\n\n // Add an Jinja2 alias\n Prism.languages.jinja2 = Prism.languages.django\n Prism.hooks.add('before-tokenize', function (env) {\n markupTemplating.buildPlaceholders(env, 'jinja2', pattern)\n })\n Prism.hooks.add('after-tokenize', function (env) {\n markupTemplating.tokenizePlaceholders(env, 'jinja2')\n })\n })(Prism)\n}\n","// @ts-nocheck\ndnsZoneFile.displayName = 'dns-zone-file'\ndnsZoneFile.aliases = ['dns-zone']\n\n/** @type {import('../core.js').Syntax} */\nexport default function dnsZoneFile(Prism) {\n Prism.languages['dns-zone-file'] = {\n comment: /;.*/,\n string: {\n pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n greedy: true\n },\n variable: [\n {\n pattern: /(^\\$ORIGIN[ \\t]+)\\S+/m,\n lookbehind: true\n },\n {\n pattern: /(^|\\s)@(?=\\s|$)/,\n lookbehind: true\n }\n ],\n keyword: /^\\$(?:INCLUDE|ORIGIN|TTL)(?=\\s|$)/m,\n class: {\n // https://tools.ietf.org/html/rfc1035#page-13\n pattern: /(^|\\s)(?:CH|CS|HS|IN)(?=\\s|$)/,\n lookbehind: true,\n alias: 'keyword'\n },\n type: {\n // https://en.wikipedia.org/wiki/List_of_DNS_record_types\n pattern:\n /(^|\\s)(?:A|A6|AAAA|AFSDB|APL|ATMA|CAA|CDNSKEY|CDS|CERT|CNAME|DHCID|DLV|DNAME|DNSKEY|DS|EID|GID|GPOS|HINFO|HIP|IPSECKEY|ISDN|KEY|KX|LOC|MAILA|MAILB|MB|MD|MF|MG|MINFO|MR|MX|NAPTR|NB|NBSTAT|NIMLOC|NINFO|NS|NSAP|NSAP-PTR|NSEC|NSEC3|NSEC3PARAM|NULL|NXT|OPENPGPKEY|PTR|PX|RKEY|RP|RRSIG|RT|SIG|SINK|SMIMEA|SOA|SPF|SRV|SSHFP|TA|TKEY|TLSA|TSIG|TXT|UID|UINFO|UNSPEC|URI|WKS|X25)(?=\\s|$)/,\n lookbehind: true,\n alias: 'keyword'\n },\n punctuation: /[()]/\n }\n Prism.languages['dns-zone'] = Prism.languages['dns-zone-file']\n}\n","// @ts-nocheck\ndocker.displayName = 'docker'\ndocker.aliases = ['dockerfile']\n\n/** @type {import('../core.js').Syntax} */\nexport default function docker(Prism) {\n ;(function (Prism) {\n // Many of the following regexes will contain negated lookaheads like `[ \\t]+(?![ \\t])`. This is a trick to ensure\n // that quantifiers behave *atomically*. Atomic quantifiers are necessary to prevent exponential backtracking.\n\n var spaceAfterBackSlash =\n /\\\\[\\r\\n](?:\\s|\\\\[\\r\\n]|#.*(?!.))*(?![\\s#]|\\\\[\\r\\n])/.source\n // At least one space, comment, or line break\n var space = /(?:[ \\t]+(?![ \\t])(?:<SP_BS>)?|<SP_BS>)/.source.replace(\n /<SP_BS>/g,\n function () {\n return spaceAfterBackSlash\n }\n )\n var string =\n /\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"|'(?:[^'\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*'/\n .source\n var option = /--[\\w-]+=(?:<STR>|(?![\"'])(?:[^\\s\\\\]|\\\\.)+)/.source.replace(\n /<STR>/g,\n function () {\n return string\n }\n )\n var stringRule = {\n pattern: RegExp(string),\n greedy: true\n }\n var commentRule = {\n pattern: /(^[ \\t]*)#.*/m,\n lookbehind: true,\n greedy: true\n }\n\n /**\n * @param {string} source\n * @param {string} flags\n * @returns {RegExp}\n */\n function re(source, flags) {\n source = source\n .replace(/<OPT>/g, function () {\n return option\n })\n .replace(/<SP>/g, function () {\n return space\n })\n return RegExp(source, flags)\n }\n Prism.languages.docker = {\n instruction: {\n pattern:\n /(^[ \\t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\\s)(?:\\\\.|[^\\r\\n\\\\])*(?:\\\\$(?:\\s|#.*$)*(?![\\s#])(?:\\\\.|[^\\r\\n\\\\])*)*/im,\n lookbehind: true,\n greedy: true,\n inside: {\n options: {\n pattern: re(\n /(^(?:ONBUILD<SP>)?\\w+<SP>)<OPT>(?:<SP><OPT>)*/.source,\n 'i'\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n property: {\n pattern: /(^|\\s)--[\\w-]+/,\n lookbehind: true\n },\n string: [\n stringRule,\n {\n pattern: /(=)(?![\"'])(?:[^\\s\\\\]|\\\\.)+/,\n lookbehind: true\n }\n ],\n operator: /\\\\$/m,\n punctuation: /=/\n }\n },\n keyword: [\n {\n // https://docs.docker.com/engine/reference/builder/#healthcheck\n pattern: re(\n /(^(?:ONBUILD<SP>)?HEALTHCHECK<SP>(?:<OPT><SP>)*)(?:CMD|NONE)\\b/\n .source,\n 'i'\n ),\n lookbehind: true,\n greedy: true\n },\n {\n // https://docs.docker.com/engine/reference/builder/#from\n pattern: re(\n /(^(?:ONBUILD<SP>)?FROM<SP>(?:<OPT><SP>)*(?!--)[^ \\t\\\\]+<SP>)AS/\n .source,\n 'i'\n ),\n lookbehind: true,\n greedy: true\n },\n {\n // https://docs.docker.com/engine/reference/builder/#onbuild\n pattern: re(/(^ONBUILD<SP>)\\w+/.source, 'i'),\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /^\\w+/,\n greedy: true\n }\n ],\n comment: commentRule,\n string: stringRule,\n variable: /\\$(?:\\w+|\\{[^{}\"'\\\\]*\\})/,\n operator: /\\\\$/m\n }\n },\n comment: commentRule\n }\n Prism.languages.dockerfile = Prism.languages.docker\n })(Prism)\n}\n","// @ts-nocheck\ndot.displayName = 'dot'\ndot.aliases = ['gv']\n\n/** @type {import('../core.js').Syntax} */\nexport default function dot(Prism) {\n // https://www.graphviz.org/doc/info/lang.html\n\n ;(function (Prism) {\n var ID =\n '(?:' +\n [\n // an identifier\n /[a-zA-Z_\\x80-\\uFFFF][\\w\\x80-\\uFFFF]*/.source,\n // a number\n /-?(?:\\.\\d+|\\d+(?:\\.\\d*)?)/.source,\n // a double-quoted string\n /\"[^\"\\\\]*(?:\\\\[\\s\\S][^\"\\\\]*)*\"/.source,\n // HTML-like string\n /<(?:[^<>]|(?!<!--)<(?:[^<>\"']|\"[^\"]*\"|'[^']*')+>|<!--(?:[^-]|-(?!->))*-->)*>/\n .source\n ].join('|') +\n ')'\n var IDInside = {\n markup: {\n pattern: /(^<)[\\s\\S]+(?=>$)/,\n lookbehind: true,\n alias: ['language-markup', 'language-html', 'language-xml'],\n inside: Prism.languages.markup\n }\n }\n\n /**\n * @param {string} source\n * @param {string} flags\n * @returns {RegExp}\n */\n function withID(source, flags) {\n return RegExp(\n source.replace(/<ID>/g, function () {\n return ID\n }),\n flags\n )\n }\n Prism.languages.dot = {\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/|^#.*/m,\n greedy: true\n },\n 'graph-name': {\n pattern: withID(\n /(\\b(?:digraph|graph|subgraph)[ \\t\\r\\n]+)<ID>/.source,\n 'i'\n ),\n lookbehind: true,\n greedy: true,\n alias: 'class-name',\n inside: IDInside\n },\n 'attr-value': {\n pattern: withID(/(=[ \\t\\r\\n]*)<ID>/.source),\n lookbehind: true,\n greedy: true,\n inside: IDInside\n },\n 'attr-name': {\n pattern: withID(/([\\[;, \\t\\r\\n])<ID>(?=[ \\t\\r\\n]*=)/.source),\n lookbehind: true,\n greedy: true,\n inside: IDInside\n },\n keyword: /\\b(?:digraph|edge|graph|node|strict|subgraph)\\b/i,\n 'compass-point': {\n pattern: /(:[ \\t\\r\\n]*)(?:[ewc_]|[ns][ew]?)(?![\\w\\x80-\\uFFFF])/,\n lookbehind: true,\n alias: 'builtin'\n },\n node: {\n pattern: withID(/(^|[^-.\\w\\x80-\\uFFFF\\\\])<ID>/.source),\n lookbehind: true,\n greedy: true,\n inside: IDInside\n },\n operator: /[=:]|-[->]/,\n punctuation: /[\\[\\]{};,]/\n }\n Prism.languages.gv = Prism.languages.dot\n })(Prism)\n}\n","// @ts-nocheck\nebnf.displayName = 'ebnf'\nebnf.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function ebnf(Prism) {\n Prism.languages.ebnf = {\n comment: /\\(\\*[\\s\\S]*?\\*\\)/,\n string: {\n pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n greedy: true\n },\n special: {\n pattern: /\\?[^?\\r\\n]*\\?/,\n greedy: true,\n alias: 'class-name'\n },\n definition: {\n pattern: /^([\\t ]*)[a-z]\\w*(?:[ \\t]+[a-z]\\w*)*(?=\\s*=)/im,\n lookbehind: true,\n alias: ['rule', 'keyword']\n },\n rule: /\\b[a-z]\\w*(?:[ \\t]+[a-z]\\w*)*\\b/i,\n punctuation: /\\([:/]|[:/]\\)|[.,;()[\\]{}]/,\n operator: /[-=|*/!]/\n }\n}\n","// @ts-nocheck\neditorconfig.displayName = 'editorconfig'\neditorconfig.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function editorconfig(Prism) {\n Prism.languages.editorconfig = {\n // https://editorconfig-specification.readthedocs.io\n comment: /[;#].*/,\n section: {\n pattern: /(^[ \\t]*)\\[.+\\]/m,\n lookbehind: true,\n alias: 'selector',\n inside: {\n regex: /\\\\\\\\[\\[\\]{},!?.*]/,\n // Escape special characters with '\\\\'\n operator: /[!?]|\\.\\.|\\*{1,2}/,\n punctuation: /[\\[\\]{},]/\n }\n },\n key: {\n pattern: /(^[ \\t]*)[^\\s=]+(?=[ \\t]*=)/m,\n lookbehind: true,\n alias: 'attr-name'\n },\n value: {\n pattern: /=.*/,\n alias: 'attr-value',\n inside: {\n punctuation: /^=/\n }\n }\n }\n}\n","// @ts-nocheck\neiffel.displayName = 'eiffel'\neiffel.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function eiffel(Prism) {\n Prism.languages.eiffel = {\n comment: /--.*/,\n string: [\n // Aligned-verbatim-strings\n {\n pattern: /\"([^[]*)\\[[\\s\\S]*?\\]\\1\"/,\n greedy: true\n },\n // Non-aligned-verbatim-strings\n {\n pattern: /\"([^{]*)\\{[\\s\\S]*?\\}\\1\"/,\n greedy: true\n },\n // Single-line string\n {\n pattern: /\"(?:%(?:(?!\\n)\\s)*\\n\\s*%|%\\S|[^%\"\\r\\n])*\"/,\n greedy: true\n }\n ],\n // normal char | special char | char code\n char: /'(?:%.|[^%'\\r\\n])+'/,\n keyword:\n /\\b(?:across|agent|alias|all|and|as|assign|attached|attribute|check|class|convert|create|Current|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|implies|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|or|Precursor|redefine|rename|require|rescue|Result|retry|select|separate|some|then|undefine|until|variant|Void|when|xor)\\b/i,\n boolean: /\\b(?:False|True)\\b/i,\n // Convention: class-names are always all upper-case characters\n 'class-name': /\\b[A-Z][\\dA-Z_]*\\b/,\n number: [\n // hexa | octal | bin\n /\\b0[xcb][\\da-f](?:_*[\\da-f])*\\b/i,\n // Decimal\n /(?:\\b\\d(?:_*\\d)*)?\\.(?:(?:\\d(?:_*\\d)*)?e[+-]?)?\\d(?:_*\\d)*\\b|\\b\\d(?:_*\\d)*\\b\\.?/i\n ],\n punctuation: /:=|<<|>>|\\(\\||\\|\\)|->|\\.(?=\\w)|[{}[\\];(),:?]/,\n operator: /\\\\\\\\|\\|\\.\\.\\||\\.\\.|\\/[~\\/=]?|[><]=?|[-+*^=~]/\n }\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\nimport refractorMarkupTemplating from './markup-templating.js'\nejs.displayName = 'ejs'\nejs.aliases = ['eta']\n\n/** @type {import('../core.js').Syntax} */\nexport default function ejs(Prism) {\n Prism.register(refractorJavascript)\n Prism.register(refractorMarkupTemplating)\n ;(function (Prism) {\n Prism.languages.ejs = {\n delimiter: {\n pattern: /^<%[-_=]?|[-_]?%>$/,\n alias: 'punctuation'\n },\n comment: /^#[\\s\\S]*/,\n 'language-javascript': {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages.javascript\n }\n }\n Prism.hooks.add('before-tokenize', function (env) {\n var ejsPattern = /<%(?!%)[\\s\\S]+?%>/g\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'ejs',\n ejsPattern\n )\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'ejs')\n })\n Prism.languages.eta = Prism.languages.ejs\n })(Prism)\n}\n","// @ts-nocheck\nelixir.displayName = 'elixir'\nelixir.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function elixir(Prism) {\n Prism.languages.elixir = {\n doc: {\n pattern:\n /@(?:doc|moduledoc)\\s+(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2)/,\n inside: {\n attribute: /^@\\w+/,\n string: /['\"][\\s\\S]+/\n }\n },\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n // ~r\"\"\"foo\"\"\" (multi-line), ~r'''foo''' (multi-line), ~r/foo/, ~r|foo|, ~r\"foo\", ~r'foo', ~r(foo), ~r[foo], ~r{foo}, ~r<foo>\n regex: {\n pattern:\n /~[rR](?:(\"\"\"|''')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1|([\\/|\"'])(?:\\\\.|(?!\\2)[^\\\\\\r\\n])+\\2|\\((?:\\\\.|[^\\\\)\\r\\n])+\\)|\\[(?:\\\\.|[^\\\\\\]\\r\\n])+\\]|\\{(?:\\\\.|[^\\\\}\\r\\n])+\\}|<(?:\\\\.|[^\\\\>\\r\\n])+>)[uismxfr]*/,\n greedy: true\n },\n string: [\n {\n // ~s\"\"\"foo\"\"\" (multi-line), ~s'''foo''' (multi-line), ~s/foo/, ~s|foo|, ~s\"foo\", ~s'foo', ~s(foo), ~s[foo], ~s{foo} (with interpolation care), ~s<foo>\n pattern:\n /~[cCsSwW](?:(\"\"\"|''')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1|([\\/|\"'])(?:\\\\.|(?!\\2)[^\\\\\\r\\n])+\\2|\\((?:\\\\.|[^\\\\)\\r\\n])+\\)|\\[(?:\\\\.|[^\\\\\\]\\r\\n])+\\]|\\{(?:\\\\.|#\\{[^}]+\\}|#(?!\\{)|[^#\\\\}\\r\\n])+\\}|<(?:\\\\.|[^\\\\>\\r\\n])+>)[csa]?/,\n greedy: true,\n inside: {\n // See interpolation below\n }\n },\n {\n pattern: /(\"\"\"|''')[\\s\\S]*?\\1/,\n greedy: true,\n inside: {\n // See interpolation below\n }\n },\n {\n // Multi-line strings are allowed\n pattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true,\n inside: {\n // See interpolation below\n }\n }\n ],\n atom: {\n // Look-behind prevents bad highlighting of the :: operator\n pattern: /(^|[^:]):\\w+/,\n lookbehind: true,\n alias: 'symbol'\n },\n module: {\n pattern: /\\b[A-Z]\\w*\\b/,\n alias: 'class-name'\n },\n // Look-ahead prevents bad highlighting of the :: operator\n 'attr-name': /\\b\\w+\\??:(?!:)/,\n argument: {\n // Look-behind prevents bad highlighting of the && operator\n pattern: /(^|[^&])&\\d+/,\n lookbehind: true,\n alias: 'variable'\n },\n attribute: {\n pattern: /@\\w+/,\n alias: 'variable'\n },\n function: /\\b[_a-zA-Z]\\w*[?!]?(?:(?=\\s*(?:\\.\\s*)?\\()|(?=\\/\\d))/,\n number: /\\b(?:0[box][a-f\\d_]+|\\d[\\d_]*)(?:\\.[\\d_]+)?(?:e[+-]?[\\d_]+)?\\b/i,\n keyword:\n /\\b(?:after|alias|and|case|catch|cond|def(?:callback|delegate|exception|impl|macro|module|n|np|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|quote|raise|require|rescue|try|unless|unquote|use|when)\\b/,\n boolean: /\\b(?:false|nil|true)\\b/,\n operator: [\n /\\bin\\b|&&?|\\|[|>]?|\\\\\\\\|::|\\.\\.\\.?|\\+\\+?|-[->]?|<[-=>]|>=|!==?|\\B!|=(?:==?|[>~])?|[*\\/^]/,\n {\n // We don't want to match <<\n pattern: /([^<])<(?!<)/,\n lookbehind: true\n },\n {\n // We don't want to match >>\n pattern: /([^>])>(?!>)/,\n lookbehind: true\n }\n ],\n punctuation: /<<|>>|[.,%\\[\\]{}()]/\n }\n Prism.languages.elixir.string.forEach(function (o) {\n o.inside = {\n interpolation: {\n pattern: /#\\{[^}]+\\}/,\n inside: {\n delimiter: {\n pattern: /^#\\{|\\}$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.elixir\n }\n }\n }\n })\n}\n","// @ts-nocheck\nelm.displayName = 'elm'\nelm.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function elm(Prism) {\n Prism.languages.elm = {\n comment: /--.*|\\{-[\\s\\S]*?-\\}/,\n char: {\n pattern:\n /'(?:[^\\\\'\\r\\n]|\\\\(?:[abfnrtv\\\\']|\\d+|x[0-9a-fA-F]+|u\\{[0-9a-fA-F]+\\}))'/,\n greedy: true\n },\n string: [\n {\n // Multiline strings are wrapped in triple \". Quotes may appear unescaped.\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true\n },\n {\n pattern: /\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"/,\n greedy: true\n }\n ],\n 'import-statement': {\n // The imported or hidden names are not included in this import\n // statement. This is because we want to highlight those exactly like\n // we do for the names in the program.\n pattern:\n /(^[\\t ]*)import\\s+[A-Z]\\w*(?:\\.[A-Z]\\w*)*(?:\\s+as\\s+(?:[A-Z]\\w*)(?:\\.[A-Z]\\w*)*)?(?:\\s+exposing\\s+)?/m,\n lookbehind: true,\n inside: {\n keyword: /\\b(?:as|exposing|import)\\b/\n }\n },\n keyword:\n /\\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\\b/,\n // These are builtin variables only. Constructors are highlighted later as a constant.\n builtin:\n /\\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\\b/,\n // decimal integers and floating point numbers | hexadecimal integers\n number: /\\b(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|0x[0-9a-f]+)\\b/i,\n // Most of this is needed because of the meaning of a single '.'.\n // If it stands alone freely, it is the function composition.\n // It may also be a separator between a module name and an identifier => no\n // operator. If it comes together with other special characters it is an\n // operator too.\n // Valid operator characters in 0.18: +-/*=.$<>:&|^?%#@~!\n // Ref: https://groups.google.com/forum/#!msg/elm-dev/0AHSnDdkSkQ/E0SVU70JEQAJ\n operator: /\\s\\.\\s|[+\\-/*=.$<>:&|^?%#@~!]{2,}|[+\\-/*=$<>:&|^?%#@~!]/,\n // In Elm, nearly everything is a variable, do not highlight these.\n hvariable: /\\b(?:[A-Z]\\w*\\.)*[a-z]\\w*\\b/,\n constant: /\\b(?:[A-Z]\\w*\\.)*[A-Z]\\w*\\b/,\n punctuation: /[{}[\\]|(),.:]/\n }\n}\n","// @ts-nocheck\nimport refractorLua from './lua.js'\nimport refractorMarkupTemplating from './markup-templating.js'\netlua.displayName = 'etlua'\netlua.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function etlua(Prism) {\n Prism.register(refractorLua)\n Prism.register(refractorMarkupTemplating)\n ;(function (Prism) {\n Prism.languages.etlua = {\n delimiter: {\n pattern: /^<%[-=]?|-?%>$/,\n alias: 'punctuation'\n },\n 'language-lua': {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages.lua\n }\n }\n Prism.hooks.add('before-tokenize', function (env) {\n var pattern = /<%[\\s\\S]+?%>/g\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'etlua',\n pattern\n )\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'etlua')\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkupTemplating from './markup-templating.js'\nimport refractorRuby from './ruby.js'\nerb.displayName = 'erb'\nerb.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function erb(Prism) {\n Prism.register(refractorMarkupTemplating)\n Prism.register(refractorRuby)\n ;(function (Prism) {\n Prism.languages.erb = {\n delimiter: {\n pattern: /^(\\s*)<%=?|%>(?=\\s*$)/,\n lookbehind: true,\n alias: 'punctuation'\n },\n ruby: {\n pattern: /\\s*\\S[\\s\\S]*/,\n alias: 'language-ruby',\n inside: Prism.languages.ruby\n }\n }\n Prism.hooks.add('before-tokenize', function (env) {\n var erbPattern =\n /<%=?(?:[^\\r\\n]|[\\r\\n](?!=begin)|[\\r\\n]=begin\\s(?:[^\\r\\n]|[\\r\\n](?!=end))*[\\r\\n]=end)+?%>/g\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'erb',\n erbPattern\n )\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'erb')\n })\n })(Prism)\n}\n","// @ts-nocheck\nerlang.displayName = 'erlang'\nerlang.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function erlang(Prism) {\n Prism.languages.erlang = {\n comment: /%.+/,\n string: {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n 'quoted-function': {\n pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'(?=\\()/,\n alias: 'function'\n },\n 'quoted-atom': {\n pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'/,\n alias: 'atom'\n },\n boolean: /\\b(?:false|true)\\b/,\n keyword: /\\b(?:after|begin|case|catch|end|fun|if|of|receive|try|when)\\b/,\n number: [\n /\\$\\\\?./,\n /\\b\\d+#[a-z0-9]+/i,\n /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i\n ],\n function: /\\b[a-z][\\w@]*(?=\\()/,\n variable: {\n // Look-behind is used to prevent wrong highlighting of atoms containing \"@\"\n pattern: /(^|[^@])(?:\\b|\\?)[A-Z_][\\w@]*/,\n lookbehind: true\n },\n operator: [\n /[=\\/<>:]=|=[:\\/]=|\\+\\+?|--?|[=*\\/!]|\\b(?:and|andalso|band|bnot|bor|bsl|bsr|bxor|div|not|or|orelse|rem|xor)\\b/,\n {\n // We don't want to match <<\n pattern: /(^|[^<])<(?!<)/,\n lookbehind: true\n },\n {\n // We don't want to match >>\n pattern: /(^|[^>])>(?!>)/,\n lookbehind: true\n }\n ],\n atom: /\\b[a-z][\\w@]*/,\n punctuation: /[()[\\]{}:;,.#|]|<<|>>/\n }\n}\n","// @ts-nocheck\nexcelFormula.displayName = 'excel-formula'\nexcelFormula.aliases = ['xls', 'xlsx']\n\n/** @type {import('../core.js').Syntax} */\nexport default function excelFormula(Prism) {\n Prism.languages['excel-formula'] = {\n comment: {\n pattern: /(\\bN\\(\\s*)\"(?:[^\"]|\"\")*\"(?=\\s*\\))/i,\n lookbehind: true,\n greedy: true\n },\n string: {\n pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n greedy: true\n },\n reference: {\n // https://www.ablebits.com/office-addins-blog/2015/12/08/excel-reference-another-sheet-workbook/\n\n // Sales!B2\n // 'Winter sales'!B2\n // [Sales.xlsx]Jan!B2:B5\n // D:\\Reports\\[Sales.xlsx]Jan!B2:B5\n // '[Sales.xlsx]Jan sales'!B2:B5\n // 'D:\\Reports\\[Sales.xlsx]Jan sales'!B2:B5\n\n pattern:\n /(?:'[^']*'|(?:[^\\s()[\\]{}<>*?\"';,$&]*\\[[^^\\s()[\\]{}<>*?\"']+\\])?\\w+)!/,\n greedy: true,\n alias: 'string',\n inside: {\n operator: /!$/,\n punctuation: /'/,\n sheet: {\n pattern: /[^[\\]]+$/,\n alias: 'function'\n },\n file: {\n pattern: /\\[[^[\\]]+\\]$/,\n inside: {\n punctuation: /[[\\]]/\n }\n },\n path: /[\\s\\S]+/\n }\n },\n 'function-name': {\n pattern: /\\b[A-Z]\\w*(?=\\()/i,\n alias: 'builtin'\n },\n range: {\n pattern:\n /\\$?\\b(?:[A-Z]+\\$?\\d+:\\$?[A-Z]+\\$?\\d+|[A-Z]+:\\$?[A-Z]+|\\d+:\\$?\\d+)\\b/i,\n alias: 'selector',\n inside: {\n operator: /:/,\n cell: /\\$?[A-Z]+\\$?\\d+/i,\n column: /\\$?[A-Z]+/i,\n row: /\\$?\\d+/\n }\n },\n cell: {\n // Excel is case insensitive, so the string \"foo1\" could be either a variable or a cell.\n // To combat this, we match cells case insensitive, if the contain at least one \"$\", and case sensitive otherwise.\n pattern: /\\b[A-Z]+\\d+\\b|\\$[A-Za-z]+\\$?\\d+\\b|\\b[A-Za-z]+\\$\\d+\\b/,\n alias: 'selector'\n },\n number: /(?:\\b\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e[+-]?\\d+)?\\b/i,\n boolean: /\\b(?:FALSE|TRUE)\\b/i,\n operator: /[-+*/^%=&,]|<[=>]?|>=?/,\n punctuation: /[[\\]();{}|]/\n }\n Prism.languages['xlsx'] = Prism.languages['xls'] =\n Prism.languages['excel-formula']\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nfsharp.displayName = 'fsharp'\nfsharp.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function fsharp(Prism) {\n Prism.register(refractorClike)\n Prism.languages.fsharp = Prism.languages.extend('clike', {\n comment: [\n {\n pattern: /(^|[^\\\\])\\(\\*(?!\\))[\\s\\S]*?\\*\\)/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n string: {\n pattern: /(?:\"\"\"[\\s\\S]*?\"\"\"|@\"(?:\"\"|[^\"])*\"|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")B?/,\n greedy: true\n },\n 'class-name': {\n pattern:\n /(\\b(?:exception|inherit|interface|new|of|type)\\s+|\\w\\s*:\\s*|\\s:\\??>\\s*)[.\\w]+\\b(?:\\s*(?:->|\\*)\\s*[.\\w]+\\b)*(?!\\s*[:.])/,\n lookbehind: true,\n inside: {\n operator: /->|\\*/,\n punctuation: /\\./\n }\n },\n keyword:\n /\\b(?:let|return|use|yield)(?:!\\B|\\b)|\\b(?:abstract|and|as|asr|assert|atomic|base|begin|break|checked|class|component|const|constraint|constructor|continue|default|delegate|do|done|downcast|downto|eager|elif|else|end|event|exception|extern|external|false|finally|fixed|for|fun|function|functor|global|if|in|include|inherit|inline|interface|internal|land|lazy|lor|lsl|lsr|lxor|match|member|method|mixin|mod|module|mutable|namespace|new|not|null|object|of|open|or|override|parallel|private|process|protected|public|pure|rec|sealed|select|sig|static|struct|tailcall|then|to|trait|true|try|type|upcast|val|virtual|void|volatile|when|while|with)\\b/,\n number: [\n /\\b0x[\\da-fA-F]+(?:LF|lf|un)?\\b/,\n /\\b0b[01]+(?:uy|y)?\\b/,\n /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[fm]|e[+-]?\\d+)?\\b/i,\n /\\b\\d+(?:[IlLsy]|UL|u[lsy]?)?\\b/\n ],\n operator:\n /([<>~&^])\\1\\1|([*.:<>&])\\2|<-|->|[!=:]=|<?\\|{1,3}>?|\\??(?:<=|>=|<>|[-+*/%=<>])\\??|[!?^&]|~[+~-]|:>|:\\?>?/\n })\n Prism.languages.insertBefore('fsharp', 'keyword', {\n preprocessor: {\n pattern: /(^[\\t ]*)#.*/m,\n lookbehind: true,\n alias: 'property',\n inside: {\n directive: {\n pattern: /(^#)\\b(?:else|endif|if|light|line|nowarn)\\b/,\n lookbehind: true,\n alias: 'keyword'\n }\n }\n }\n })\n Prism.languages.insertBefore('fsharp', 'punctuation', {\n 'computation-expression': {\n pattern: /\\b[_a-z]\\w*(?=\\s*\\{)/i,\n alias: 'keyword'\n }\n })\n Prism.languages.insertBefore('fsharp', 'string', {\n annotation: {\n pattern: /\\[<.+?>\\]/,\n greedy: true,\n inside: {\n punctuation: /^\\[<|>\\]$/,\n 'class-name': {\n pattern: /^\\w+$|(^|;\\s*)[A-Z]\\w*(?=\\()/,\n lookbehind: true\n },\n 'annotation-content': {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages.fsharp\n }\n }\n },\n char: {\n pattern:\n /'(?:[^\\\\']|\\\\(?:.|\\d{3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}|U[a-fA-F\\d]{8}))'B?/,\n greedy: true\n }\n })\n}\n","// @ts-nocheck\nfactor.displayName = 'factor'\nfactor.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function factor(Prism) {\n ;(function (Prism) {\n var comment_inside = {\n function:\n /\\b(?:BUGS?|FIX(?:MES?)?|NOTES?|TODOS?|XX+|HACKS?|WARN(?:ING)?|\\?{2,}|!{2,})\\b/\n }\n var string_inside = {\n number: /\\\\[^\\s']|%\\w/\n }\n var factor = {\n comment: [\n {\n // ! single-line exclamation point comments with whitespace after/around the !\n pattern: /(^|\\s)(?:! .*|!$)/,\n lookbehind: true,\n inside: comment_inside\n } /* from basis/multiline: */,\n {\n // /* comment */, /* comment*/\n pattern: /(^|\\s)\\/\\*\\s[\\s\\S]*?\\*\\/(?=\\s|$)/,\n lookbehind: true,\n greedy: true,\n inside: comment_inside\n },\n {\n // ![[ comment ]] , ![===[ comment]===]\n pattern: /(^|\\s)!\\[(={0,6})\\[\\s[\\s\\S]*?\\]\\2\\](?=\\s|$)/,\n lookbehind: true,\n greedy: true,\n inside: comment_inside\n }\n ],\n number: [\n {\n // basic base 10 integers 9, -9\n pattern: /(^|\\s)[+-]?\\d+(?=\\s|$)/,\n lookbehind: true\n },\n {\n // base prefix integers 0b010 0o70 0xad 0d10 0XAD -0xa9\n pattern: /(^|\\s)[+-]?0(?:b[01]+|o[0-7]+|d\\d+|x[\\dA-F]+)(?=\\s|$)/i,\n lookbehind: true\n },\n {\n // fractional ratios 1/5 -1/5 and the literal float approximations 1/5. -1/5.\n pattern: /(^|\\s)[+-]?\\d+\\/\\d+\\.?(?=\\s|$)/,\n lookbehind: true\n },\n {\n // positive mixed numbers 23+1/5 +23+1/5\n pattern: /(^|\\s)\\+?\\d+\\+\\d+\\/\\d+(?=\\s|$)/,\n lookbehind: true\n },\n {\n // negative mixed numbers -23-1/5\n pattern: /(^|\\s)-\\d+-\\d+\\/\\d+(?=\\s|$)/,\n lookbehind: true\n },\n {\n // basic decimal floats -0.01 0. .0 .1 -.1 -1. -12.13 +12.13\n // and scientific notation with base 10 exponents 3e4 3e-4 .3e-4\n pattern:\n /(^|\\s)[+-]?(?:\\d*\\.\\d+|\\d+\\.\\d*|\\d+)(?:e[+-]?\\d+)?(?=\\s|$)/i,\n lookbehind: true\n },\n {\n // NAN literal syntax NAN: 80000deadbeef, NAN: a\n pattern: /(^|\\s)NAN:\\s+[\\da-fA-F]+(?=\\s|$)/,\n lookbehind: true\n },\n {\n /*\nbase prefix floats 0x1.0p3 (8.0) 0b1.010p2 (5.0) 0x1.p1 0b1.11111111p11111...\n\"The normalized hex form ±0x1.MMMMMMMMMMMMM[pP]±EEEE allows any floating-point number to be specified precisely.\nThe values of MMMMMMMMMMMMM and EEEE map directly to the mantissa and exponent fields of the binary IEEE 754 representation.\"\n<https://docs.factorcode.org/content/article-syntax-floats.html>\n*/\n pattern:\n /(^|\\s)[+-]?0(?:b1\\.[01]*|o1\\.[0-7]*|d1\\.\\d*|x1\\.[\\dA-F]*)p\\d+(?=\\s|$)/i,\n lookbehind: true\n }\n ],\n // R/ regexp?\\/\\\\/\n regexp: {\n pattern:\n /(^|\\s)R\\/\\s(?:\\\\\\S|[^\\\\/])*\\/(?:[idmsr]*|[idmsr]+-[idmsr]+)(?=\\s|$)/,\n lookbehind: true,\n alias: 'number',\n inside: {\n variable: /\\\\\\S/,\n keyword: /[+?*\\[\\]^$(){}.|]/,\n operator: {\n pattern: /(\\/)[idmsr]+(?:-[idmsr]+)?/,\n lookbehind: true\n }\n }\n },\n boolean: {\n pattern: /(^|\\s)[tf](?=\\s|$)/,\n lookbehind: true\n },\n // SBUF\" asd\", URL\" ://...\", P\" /etc/\"\n 'custom-string': {\n pattern: /(^|\\s)[A-Z0-9\\-]+\"\\s(?:\\\\\\S|[^\"\\\\])*\"/,\n lookbehind: true,\n greedy: true,\n alias: 'string',\n inside: {\n number: /\\\\\\S|%\\w|\\//\n }\n },\n 'multiline-string': [\n {\n // STRING: name \\n content \\n ; -> CONSTANT: name \"content\" (symbol)\n pattern: /(^|\\s)STRING:\\s+\\S+(?:\\n|\\r\\n).*(?:\\n|\\r\\n)\\s*;(?=\\s|$)/,\n lookbehind: true,\n greedy: true,\n alias: 'string',\n inside: {\n number: string_inside.number,\n // trailing semicolon on its own line\n 'semicolon-or-setlocal': {\n pattern: /([\\r\\n][ \\t]*);(?=\\s|$)/,\n lookbehind: true,\n alias: 'function'\n }\n }\n },\n {\n // HEREDOC: marker \\n content \\n marker ; -> \"content\" (immediate)\n pattern: /(^|\\s)HEREDOC:\\s+\\S+(?:\\n|\\r\\n).*(?:\\n|\\r\\n)\\s*\\S+(?=\\s|$)/,\n lookbehind: true,\n greedy: true,\n alias: 'string',\n inside: string_inside\n },\n {\n // [[ string ]], [==[ string]==]\n pattern: /(^|\\s)\\[(={0,6})\\[\\s[\\s\\S]*?\\]\\2\\](?=\\s|$)/,\n lookbehind: true,\n greedy: true,\n alias: 'string',\n inside: string_inside\n }\n ],\n 'special-using': {\n pattern: /(^|\\s)USING:(?:\\s\\S+)*(?=\\s+;(?:\\s|$))/,\n lookbehind: true,\n alias: 'function',\n inside: {\n // this is essentially a regex for vocab names, which i don't want to specify\n // but the USING: gets picked up as a vocab name\n string: {\n pattern: /(\\s)[^:\\s]+/,\n lookbehind: true\n }\n }\n },\n /* this description of stack effect literal syntax is not complete and not as specific as theoretically possible\ntrying to do better is more work and regex-computation-time than it's worth though.\n- we'd like to have the \"delimiter\" parts of the stack effect [ (, --, and ) ] be a different (less-important or comment-like) colour to the stack effect contents\n- we'd like if nested stack effects were treated as such rather than just appearing flat (with `inside`)\n- we'd like if the following variable name conventions were recognised specifically:\nspecial row variables = ..a b..\ntype and stack effect annotations end with a colon = ( quot: ( a: ( -- ) -- b ) -- x ), ( x: number -- )\nword throws unconditional error = *\nany other word-like variable name = a ? q' etc\nhttps://docs.factorcode.org/content/article-effects.html\nthese are pretty complicated to highlight properly without a real parser, and therefore out of scope\nthe old pattern, which may be later useful, was: (^|\\s)(?:call|execute|eval)?\\((?:\\s+[^\"\\r\\n\\t ]\\S*)*?\\s+--(?:\\s+[^\"\\n\\t ]\\S*)*?\\s+\\)(?=\\s|$)\n*/\n\n // current solution is not great\n 'stack-effect-delimiter': [\n {\n // opening parenthesis\n pattern: /(^|\\s)(?:call|eval|execute)?\\((?=\\s)/,\n lookbehind: true,\n alias: 'operator'\n },\n {\n // middle --\n pattern: /(\\s)--(?=\\s)/,\n lookbehind: true,\n alias: 'operator'\n },\n {\n // closing parenthesis\n pattern: /(\\s)\\)(?=\\s|$)/,\n lookbehind: true,\n alias: 'operator'\n }\n ],\n combinators: {\n pattern: null,\n lookbehind: true,\n alias: 'keyword'\n },\n 'kernel-builtin': {\n pattern: null,\n lookbehind: true,\n alias: 'variable'\n },\n 'sequences-builtin': {\n pattern: null,\n lookbehind: true,\n alias: 'variable'\n },\n 'math-builtin': {\n pattern: null,\n lookbehind: true,\n alias: 'variable'\n },\n 'constructor-word': {\n // <array> but not <=>\n pattern: /(^|\\s)<(?!=+>|-+>)\\S+>(?=\\s|$)/,\n lookbehind: true,\n alias: 'keyword'\n },\n 'other-builtin-syntax': {\n pattern: null,\n lookbehind: true,\n alias: 'operator'\n },\n /*\nfull list of supported word naming conventions: (the convention appears outside of the [brackets])\nset-[x]\nchange-[x]\nwith-[x]\nnew-[x]\n>[string]\n[base]>\n[string]>[number]\n+[symbol]+\n[boolean-word]?\n?[of]\n[slot-reader]>>\n>>[slot-setter]\n[slot-writer]<<\n([implementation-detail])\n[mutater]!\n[variant]*\n[prettyprint].\n$[help-markup]\n<constructors>, SYNTAX:, etc are supported by their own patterns.\n`with` and `new` from `kernel` are their own builtins.\nsee <https://docs.factorcode.org/content/article-conventions.html>\n*/\n 'conventionally-named-word': {\n pattern:\n /(^|\\s)(?!\")(?:(?:change|new|set|with)-\\S+|\\$\\S+|>[^>\\s]+|[^:>\\s]+>|[^>\\s]+>[^>\\s]+|\\+[^+\\s]+\\+|[^?\\s]+\\?|\\?[^?\\s]+|[^>\\s]+>>|>>[^>\\s]+|[^<\\s]+<<|\\([^()\\s]+\\)|[^!\\s]+!|[^*\\s]\\S*\\*|[^.\\s]\\S*\\.)(?=\\s|$)/,\n lookbehind: true,\n alias: 'keyword'\n },\n 'colon-syntax': {\n pattern: /(^|\\s)(?:[A-Z0-9\\-]+#?)?:{1,2}\\s+(?:;\\S+|(?!;)\\S+)(?=\\s|$)/,\n lookbehind: true,\n greedy: true,\n alias: 'function'\n },\n 'semicolon-or-setlocal': {\n pattern: /(\\s)(?:;|:>)(?=\\s|$)/,\n lookbehind: true,\n alias: 'function'\n },\n // do not highlight leading } or trailing X{ at the begin/end of the file as it's invalid syntax\n 'curly-brace-literal-delimiter': [\n {\n // opening\n pattern: /(^|\\s)[a-z]*\\{(?=\\s)/i,\n lookbehind: true,\n alias: 'operator'\n },\n {\n // closing\n pattern: /(\\s)\\}(?=\\s|$)/,\n lookbehind: true,\n alias: 'operator'\n }\n ],\n // do not highlight leading ] or trailing [ at the begin/end of the file as it's invalid syntax\n 'quotation-delimiter': [\n {\n // opening\n pattern: /(^|\\s)\\[(?=\\s)/,\n lookbehind: true,\n alias: 'operator'\n },\n {\n // closing\n pattern: /(\\s)\\](?=\\s|$)/,\n lookbehind: true,\n alias: 'operator'\n }\n ],\n 'normal-word': {\n pattern: /(^|\\s)[^\"\\s]\\S*(?=\\s|$)/,\n lookbehind: true\n },\n /*\nbasic first-class string \"a\"\nwith escaped double-quote \"a\\\"\"\nescaped backslash \"\\\\\"\nand general escapes since Factor has so many \"\\N\"\nsyntax that works in the reference implementation that isn't fully\nsupported because it's an implementation detail:\n\"string 1\"\"string 2\" -> 2 strings (works anyway)\n\"string\"5 -> string, 5\n\"string\"[ ] -> string, quotation\n{ \"a\"} -> array<string>\nthe rest of those examples all properly recognise the string, but not\nthe other object (number, quotation, etc)\nthis is fine for a regex-only implementation.\n*/\n string: {\n pattern: /\"(?:\\\\\\S|[^\"\\\\])*\"/,\n greedy: true,\n inside: string_inside\n }\n }\n var escape = function (str) {\n return (str + '').replace(/([.?*+\\^$\\[\\]\\\\(){}|\\-])/g, '\\\\$1')\n }\n var arrToWordsRegExp = function (arr) {\n return new RegExp('(^|\\\\s)(?:' + arr.map(escape).join('|') + ')(?=\\\\s|$)')\n }\n var builtins = {\n 'kernel-builtin': [\n 'or',\n '2nipd',\n '4drop',\n 'tuck',\n 'wrapper',\n 'nip',\n 'wrapper?',\n 'callstack>array',\n 'die',\n 'dupd',\n 'callstack',\n 'callstack?',\n '3dup',\n 'hashcode',\n 'pick',\n '4nip',\n 'build',\n '>boolean',\n 'nipd',\n 'clone',\n '5nip',\n 'eq?',\n '?',\n '=',\n 'swapd',\n '2over',\n 'clear',\n '2dup',\n 'get-retainstack',\n 'not',\n 'tuple?',\n 'dup',\n '3nipd',\n 'call',\n '-rotd',\n 'object',\n 'drop',\n 'assert=',\n 'assert?',\n '-rot',\n 'execute',\n 'boa',\n 'get-callstack',\n 'curried?',\n '3drop',\n 'pickd',\n 'overd',\n 'over',\n 'roll',\n '3nip',\n 'swap',\n 'and',\n '2nip',\n 'rotd',\n 'throw',\n '(clone)',\n 'hashcode*',\n 'spin',\n 'reach',\n '4dup',\n 'equal?',\n 'get-datastack',\n 'assert',\n '2drop',\n '<wrapper>',\n 'boolean?',\n 'identity-hashcode',\n 'identity-tuple?',\n 'null',\n 'composed?',\n 'new',\n '5drop',\n 'rot',\n '-roll',\n 'xor',\n 'identity-tuple',\n 'boolean'\n ],\n 'other-builtin-syntax': [\n // syntax\n '=======',\n 'recursive',\n 'flushable',\n '>>',\n '<<<<<<',\n 'M\\\\',\n 'B',\n 'PRIVATE>',\n '\\\\',\n '======',\n 'final',\n 'inline',\n 'delimiter',\n 'deprecated',\n '<PRIVATE',\n '>>>>>>',\n '<<<<<<<',\n 'parse-complex',\n 'malformed-complex',\n 'read-only',\n '>>>>>>>',\n 'call-next-method',\n '<<',\n 'foldable',\n // literals\n '$',\n '$[',\n '${'\n ],\n 'sequences-builtin': [\n 'member-eq?',\n 'mismatch',\n 'append',\n 'assert-sequence=',\n 'longer',\n 'repetition',\n 'clone-like',\n '3sequence',\n 'assert-sequence?',\n 'last-index-from',\n 'reversed',\n 'index-from',\n 'cut*',\n 'pad-tail',\n 'join-as',\n 'remove-eq!',\n 'concat-as',\n 'but-last',\n 'snip',\n 'nths',\n 'nth',\n 'sequence',\n 'longest',\n 'slice?',\n '<slice>',\n 'remove-nth',\n 'tail-slice',\n 'empty?',\n 'tail*',\n 'member?',\n 'virtual-sequence?',\n 'set-length',\n 'drop-prefix',\n 'iota',\n 'unclip',\n 'bounds-error?',\n 'unclip-last-slice',\n 'non-negative-integer-expected',\n 'non-negative-integer-expected?',\n 'midpoint@',\n 'longer?',\n '?set-nth',\n '?first',\n 'rest-slice',\n 'prepend-as',\n 'prepend',\n 'fourth',\n 'sift',\n 'subseq-start',\n 'new-sequence',\n '?last',\n 'like',\n 'first4',\n '1sequence',\n 'reverse',\n 'slice',\n 'virtual@',\n 'repetition?',\n 'set-last',\n 'index',\n '4sequence',\n 'max-length',\n 'set-second',\n 'immutable-sequence',\n 'first2',\n 'first3',\n 'supremum',\n 'unclip-slice',\n 'suffix!',\n 'insert-nth',\n 'tail',\n '3append',\n 'short',\n 'suffix',\n 'concat',\n 'flip',\n 'immutable?',\n 'reverse!',\n '2sequence',\n 'sum',\n 'delete-all',\n 'indices',\n 'snip-slice',\n '<iota>',\n 'check-slice',\n 'sequence?',\n 'head',\n 'append-as',\n 'halves',\n 'sequence=',\n 'collapse-slice',\n '?second',\n 'slice-error?',\n 'product',\n 'bounds-check?',\n 'bounds-check',\n 'immutable',\n 'virtual-exemplar',\n 'harvest',\n 'remove',\n 'pad-head',\n 'last',\n 'set-fourth',\n 'cartesian-product',\n 'remove-eq',\n 'shorten',\n 'shorter',\n 'reversed?',\n 'shorter?',\n 'shortest',\n 'head-slice',\n 'pop*',\n 'tail-slice*',\n 'but-last-slice',\n 'iota?',\n 'append!',\n 'cut-slice',\n 'new-resizable',\n 'head-slice*',\n 'sequence-hashcode',\n 'pop',\n 'set-nth',\n '?nth',\n 'second',\n 'join',\n 'immutable-sequence?',\n '<reversed>',\n '3append-as',\n 'virtual-sequence',\n 'subseq?',\n 'remove-nth!',\n 'length',\n 'last-index',\n 'lengthen',\n 'assert-sequence',\n 'copy',\n 'move',\n 'third',\n 'first',\n 'tail?',\n 'set-first',\n 'prefix',\n 'bounds-error',\n '<repetition>',\n 'exchange',\n 'surround',\n 'cut',\n 'min-length',\n 'set-third',\n 'push-all',\n 'head?',\n 'subseq-start-from',\n 'delete-slice',\n 'rest',\n 'sum-lengths',\n 'head*',\n 'infimum',\n 'remove!',\n 'glue',\n 'slice-error',\n 'subseq',\n 'push',\n 'replace-slice',\n 'subseq-as',\n 'unclip-last'\n ],\n 'math-builtin': [\n 'number=',\n 'next-power-of-2',\n '?1+',\n 'fp-special?',\n 'imaginary-part',\n 'float>bits',\n 'number?',\n 'fp-infinity?',\n 'bignum?',\n 'fp-snan?',\n 'denominator',\n 'gcd',\n '*',\n '+',\n 'fp-bitwise=',\n '-',\n 'u>=',\n '/',\n '>=',\n 'bitand',\n 'power-of-2?',\n 'log2-expects-positive',\n 'neg?',\n '<',\n 'log2',\n '>',\n 'integer?',\n 'number',\n 'bits>double',\n '2/',\n 'zero?',\n 'bits>float',\n 'float?',\n 'shift',\n 'ratio?',\n 'rect>',\n 'even?',\n 'ratio',\n 'fp-sign',\n 'bitnot',\n '>fixnum',\n 'complex?',\n '/i',\n 'integer>fixnum',\n '/f',\n 'sgn',\n '>bignum',\n 'next-float',\n 'u<',\n 'u>',\n 'mod',\n 'recip',\n 'rational',\n '>float',\n '2^',\n 'integer',\n 'fixnum?',\n 'neg',\n 'fixnum',\n 'sq',\n 'bignum',\n '>rect',\n 'bit?',\n 'fp-qnan?',\n 'simple-gcd',\n 'complex',\n '<fp-nan>',\n 'real',\n '>fraction',\n 'double>bits',\n 'bitor',\n 'rem',\n 'fp-nan-payload',\n 'real-part',\n 'log2-expects-positive?',\n 'prev-float',\n 'align',\n 'unordered?',\n 'float',\n 'fp-nan?',\n 'abs',\n 'bitxor',\n 'integer>fixnum-strict',\n 'u<=',\n 'odd?',\n '<=',\n '/mod',\n '>integer',\n 'real?',\n 'rational?',\n 'numerator'\n ]\n // that's all for now\n }\n\n Object.keys(builtins).forEach(function (k) {\n factor[k].pattern = arrToWordsRegExp(builtins[k])\n })\n var combinators = [\n // kernel\n '2bi',\n 'while',\n '2tri',\n 'bi*',\n '4dip',\n 'both?',\n 'same?',\n 'tri@',\n 'curry',\n 'prepose',\n '3bi',\n '?if',\n 'tri*',\n '2keep',\n '3keep',\n 'curried',\n '2keepd',\n 'when',\n '2bi*',\n '2tri*',\n '4keep',\n 'bi@',\n 'keepdd',\n 'do',\n 'unless*',\n 'tri-curry',\n 'if*',\n 'loop',\n 'bi-curry*',\n 'when*',\n '2bi@',\n '2tri@',\n 'with',\n '2with',\n 'either?',\n 'bi',\n 'until',\n '3dip',\n '3curry',\n 'tri-curry*',\n 'tri-curry@',\n 'bi-curry',\n 'keepd',\n 'compose',\n '2dip',\n 'if',\n '3tri',\n 'unless',\n 'tuple',\n 'keep',\n '2curry',\n 'tri',\n 'most',\n 'while*',\n 'dip',\n 'composed',\n 'bi-curry@',\n // sequences\n 'find-last-from',\n 'trim-head-slice',\n 'map-as',\n 'each-from',\n 'none?',\n 'trim-tail',\n 'partition',\n 'if-empty',\n 'accumulate*',\n 'reject!',\n 'find-from',\n 'accumulate-as',\n 'collector-for-as',\n 'reject',\n 'map',\n 'map-sum',\n 'accumulate!',\n '2each-from',\n 'follow',\n 'supremum-by',\n 'map!',\n 'unless-empty',\n 'collector',\n 'padding',\n 'reduce-index',\n 'replicate-as',\n 'infimum-by',\n 'trim-tail-slice',\n 'count',\n 'find-index',\n 'filter',\n 'accumulate*!',\n 'reject-as',\n 'map-integers',\n 'map-find',\n 'reduce',\n 'selector',\n 'interleave',\n '2map',\n 'filter-as',\n 'binary-reduce',\n 'map-index-as',\n 'find',\n 'produce',\n 'filter!',\n 'replicate',\n 'cartesian-map',\n 'cartesian-each',\n 'find-index-from',\n 'map-find-last',\n '3map-as',\n '3map',\n 'find-last',\n 'selector-as',\n '2map-as',\n '2map-reduce',\n 'accumulate',\n 'each',\n 'each-index',\n 'accumulate*-as',\n 'when-empty',\n 'all?',\n 'collector-as',\n 'push-either',\n 'new-like',\n 'collector-for',\n '2selector',\n 'push-if',\n '2all?',\n 'map-reduce',\n '3each',\n 'any?',\n 'trim-slice',\n '2reduce',\n 'change-nth',\n 'produce-as',\n '2each',\n 'trim',\n 'trim-head',\n 'cartesian-find',\n 'map-index',\n // math\n 'if-zero',\n 'each-integer',\n 'unless-zero',\n '(find-integer)',\n 'when-zero',\n 'find-last-integer',\n '(all-integers?)',\n 'times',\n '(each-integer)',\n 'find-integer',\n 'all-integers?',\n // math.combinators\n 'unless-negative',\n 'if-positive',\n 'when-positive',\n 'when-negative',\n 'unless-positive',\n 'if-negative',\n // combinators\n 'case',\n '2cleave',\n 'cond>quot',\n 'case>quot',\n '3cleave',\n 'wrong-values',\n 'to-fixed-point',\n 'alist>quot',\n 'cond',\n 'cleave',\n 'call-effect',\n 'recursive-hashcode',\n 'spread',\n 'deep-spread>quot',\n // combinators.short-circuit\n '2||',\n '0||',\n 'n||',\n '0&&',\n '2&&',\n '3||',\n '1||',\n '1&&',\n 'n&&',\n '3&&',\n // combinators.smart\n 'smart-unless*',\n 'keep-inputs',\n 'reduce-outputs',\n 'smart-when*',\n 'cleave>array',\n 'smart-with',\n 'smart-apply',\n 'smart-if',\n 'inputs/outputs',\n 'output>sequence-n',\n 'map-outputs',\n 'map-reduce-outputs',\n 'dropping',\n 'output>array',\n 'smart-map-reduce',\n 'smart-2map-reduce',\n 'output>array-n',\n 'nullary',\n 'input<sequence',\n 'append-outputs',\n 'drop-inputs',\n 'inputs',\n 'smart-2reduce',\n 'drop-outputs',\n 'smart-reduce',\n 'preserving',\n 'smart-when',\n 'outputs',\n 'append-outputs-as',\n 'smart-unless',\n 'smart-if*',\n 'sum-outputs',\n 'input<sequence-unsafe',\n 'output>sequence'\n // tafn\n ]\n\n factor.combinators.pattern = arrToWordsRegExp(combinators)\n Prism.languages.factor = factor\n })(Prism)\n}\n","// @ts-nocheck\n$false.displayName = 'false'\n$false.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function $false(Prism) {\n ;(function (Prism) {\n /**\n * Based on the manual by Wouter van Oortmerssen.\n *\n * @see {@link https://github.com/PrismJS/prism/issues/2801#issue-829717504}\n */\n Prism.languages['false'] = {\n comment: {\n pattern: /\\{[^}]*\\}/\n },\n string: {\n pattern: /\"[^\"]*\"/,\n greedy: true\n },\n 'character-code': {\n pattern: /'(?:[^\\r]|\\r\\n?)/,\n alias: 'number'\n },\n 'assembler-code': {\n pattern: /\\d+`/,\n alias: 'important'\n },\n number: /\\d+/,\n operator: /[-!#$%&'*+,./:;=>?@\\\\^_`|~ßø]/,\n punctuation: /\\[|\\]/,\n variable: /[a-z]/,\n 'non-standard': {\n pattern: /[()<BDO®]/,\n alias: 'bold'\n }\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nfirestoreSecurityRules.displayName = 'firestore-security-rules'\nfirestoreSecurityRules.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function firestoreSecurityRules(Prism) {\n Prism.register(refractorClike)\n Prism.languages['firestore-security-rules'] = Prism.languages.extend(\n 'clike',\n {\n comment: /\\/\\/.*/,\n keyword:\n /\\b(?:allow|function|if|match|null|return|rules_version|service)\\b/,\n operator: /&&|\\|\\||[<>!=]=?|[-+*/%]|\\b(?:in|is)\\b/\n }\n )\n delete Prism.languages['firestore-security-rules']['class-name']\n Prism.languages.insertBefore('firestore-security-rules', 'keyword', {\n path: {\n pattern:\n /(^|[\\s(),])(?:\\/(?:[\\w\\xA0-\\uFFFF]+|\\{[\\w\\xA0-\\uFFFF]+(?:=\\*\\*)?\\}|\\$\\([\\w\\xA0-\\uFFFF.]+\\)))+/,\n lookbehind: true,\n greedy: true,\n inside: {\n variable: {\n pattern: /\\{[\\w\\xA0-\\uFFFF]+(?:=\\*\\*)?\\}|\\$\\([\\w\\xA0-\\uFFFF.]+\\)/,\n inside: {\n operator: /=/,\n keyword: /\\*\\*/,\n punctuation: /[.$(){}]/\n }\n },\n punctuation: /\\//\n }\n },\n method: {\n // to make the pattern shorter, the actual method names are omitted\n pattern: /(\\ballow\\s+)[a-z]+(?:\\s*,\\s*[a-z]+)*(?=\\s*[:;])/,\n lookbehind: true,\n alias: 'builtin',\n inside: {\n punctuation: /,/\n }\n }\n })\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\nflow.displayName = 'flow'\nflow.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function flow(Prism) {\n Prism.register(refractorJavascript)\n ;(function (Prism) {\n Prism.languages.flow = Prism.languages.extend('javascript', {})\n Prism.languages.insertBefore('flow', 'keyword', {\n type: [\n {\n pattern:\n /\\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\\b/,\n alias: 'class-name'\n }\n ]\n })\n Prism.languages.flow['function-variable'].pattern =\n /(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)(?:\\s*:\\s*\\w+)?|(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/i\n delete Prism.languages.flow['parameter']\n Prism.languages.insertBefore('flow', 'operator', {\n 'flow-punctuation': {\n pattern: /\\{\\||\\|\\}/,\n alias: 'punctuation'\n }\n })\n if (!Array.isArray(Prism.languages.flow.keyword)) {\n Prism.languages.flow.keyword = [Prism.languages.flow.keyword]\n }\n Prism.languages.flow.keyword.unshift(\n {\n pattern: /(^|[^$]\\b)(?:Class|declare|opaque|type)\\b(?!\\$)/,\n lookbehind: true\n },\n {\n pattern:\n /(^|[^$]\\B)\\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\\b(?!\\$)/,\n lookbehind: true\n }\n )\n })(Prism)\n}\n","// @ts-nocheck\nfortran.displayName = 'fortran'\nfortran.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function fortran(Prism) {\n Prism.languages.fortran = {\n 'quoted-number': {\n pattern: /[BOZ](['\"])[A-F0-9]+\\1/i,\n alias: 'number'\n },\n string: {\n pattern:\n /(?:\\b\\w+_)?(['\"])(?:\\1\\1|&(?:\\r\\n?|\\n)(?:[ \\t]*!.*(?:\\r\\n?|\\n)|(?![ \\t]*!))|(?!\\1).)*(?:\\1|&)/,\n inside: {\n comment: {\n pattern: /(&(?:\\r\\n?|\\n)\\s*)!.*/,\n lookbehind: true\n }\n }\n },\n comment: {\n pattern: /!.*/,\n greedy: true\n },\n boolean: /\\.(?:FALSE|TRUE)\\.(?:_\\w+)?/i,\n number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[ED][+-]?\\d+)?(?:_\\w+)?/i,\n keyword: [\n // Types\n /\\b(?:CHARACTER|COMPLEX|DOUBLE ?PRECISION|INTEGER|LOGICAL|REAL)\\b/i,\n // END statements\n /\\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\\b/i,\n // Statements\n /\\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\\b/i,\n // Others\n /\\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEIF|ELSEWHERE|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\\b/i\n ],\n operator: [\n /\\*\\*|\\/\\/|=>|[=\\/]=|[<>]=?|::|[+\\-*=%]|\\.[A-Z]+\\./i,\n {\n // Use lookbehind to prevent confusion with (/ /)\n pattern: /(^|(?!\\().)\\/(?!\\))/,\n lookbehind: true\n }\n ],\n punctuation: /\\(\\/|\\/\\)|[(),;:&]/\n }\n}\n","// @ts-nocheck\nimport refractorMarkupTemplating from './markup-templating.js'\nftl.displayName = 'ftl'\nftl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function ftl(Prism) {\n Prism.register(refractorMarkupTemplating)\n ;(function (Prism) {\n // https://freemarker.apache.org/docs/dgui_template_exp.html\n\n // FTL expression with 4 levels of nesting supported\n var FTL_EXPR =\n /[^<()\"']|\\((?:<expr>)*\\)|<(?!#--)|<#--(?:[^-]|-(?!->))*-->|\"(?:[^\\\\\"]|\\\\.)*\"|'(?:[^\\\\']|\\\\.)*'/\n .source\n for (var i = 0; i < 2; i++) {\n FTL_EXPR = FTL_EXPR.replace(/<expr>/g, function () {\n return FTL_EXPR\n })\n }\n FTL_EXPR = FTL_EXPR.replace(/<expr>/g, /[^\\s\\S]/.source)\n var ftl = {\n comment: /<#--[\\s\\S]*?-->/,\n string: [\n {\n // raw string\n pattern: /\\br(\"|')(?:(?!\\1)[^\\\\]|\\\\.)*\\1/,\n greedy: true\n },\n {\n pattern: RegExp(\n /(\"|')(?:(?!\\1|\\$\\{)[^\\\\]|\\\\.|\\$\\{(?:(?!\\})(?:<expr>))*\\})*\\1/.source.replace(\n /<expr>/g,\n function () {\n return FTL_EXPR\n }\n )\n ),\n greedy: true,\n inside: {\n interpolation: {\n pattern: RegExp(\n /((?:^|[^\\\\])(?:\\\\\\\\)*)\\$\\{(?:(?!\\})(?:<expr>))*\\}/.source.replace(\n /<expr>/g,\n function () {\n return FTL_EXPR\n }\n )\n ),\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\$\\{|\\}$/,\n alias: 'punctuation'\n },\n rest: null\n }\n }\n }\n }\n ],\n keyword: /\\b(?:as)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n 'builtin-function': {\n pattern: /((?:^|[^?])\\?\\s*)\\w+/,\n lookbehind: true,\n alias: 'function'\n },\n function: /\\b\\w+(?=\\s*\\()/,\n number: /\\b\\d+(?:\\.\\d+)?\\b/,\n operator:\n /\\.\\.[<*!]?|->|--|\\+\\+|&&|\\|\\||\\?{1,2}|[-+*/%!=<>]=?|\\b(?:gt|gte|lt|lte)\\b/,\n punctuation: /[,;.:()[\\]{}]/\n }\n ftl.string[1].inside.interpolation.inside.rest = ftl\n Prism.languages.ftl = {\n 'ftl-comment': {\n // the pattern is shortened to be more efficient\n pattern: /^<#--[\\s\\S]*/,\n alias: 'comment'\n },\n 'ftl-directive': {\n pattern: /^<[\\s\\S]+>$/,\n inside: {\n directive: {\n pattern: /(^<\\/?)[#@][a-z]\\w*/i,\n lookbehind: true,\n alias: 'keyword'\n },\n punctuation: /^<\\/?|\\/?>$/,\n content: {\n pattern: /\\s*\\S[\\s\\S]*/,\n alias: 'ftl',\n inside: ftl\n }\n }\n },\n 'ftl-interpolation': {\n pattern: /^\\$\\{[\\s\\S]*\\}$/,\n inside: {\n punctuation: /^\\$\\{|\\}$/,\n content: {\n pattern: /\\s*\\S[\\s\\S]*/,\n alias: 'ftl',\n inside: ftl\n }\n }\n }\n }\n Prism.hooks.add('before-tokenize', function (env) {\n // eslint-disable-next-line regexp/no-useless-lazy\n var pattern = RegExp(\n /<#--[\\s\\S]*?-->|<\\/?[#@][a-zA-Z](?:<expr>)*?>|\\$\\{(?:<expr>)*?\\}/.source.replace(\n /<expr>/g,\n function () {\n return FTL_EXPR\n }\n ),\n 'gi'\n )\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'ftl',\n pattern\n )\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'ftl')\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\ngml.displayName = 'gml'\ngml.aliases = ['gamemakerlanguage']\n\n/** @type {import('../core.js').Syntax} */\nexport default function gml(Prism) {\n Prism.register(refractorClike)\n Prism.languages.gamemakerlanguage = Prism.languages.gml =\n Prism.languages.extend('clike', {\n keyword:\n /\\b(?:break|case|continue|default|do|else|enum|exit|for|globalvar|if|repeat|return|switch|until|var|while)\\b/,\n number:\n /(?:\\b0x[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ulf]{0,4}/i,\n operator:\n /--|\\+\\+|[-+%/=]=?|!=|\\*\\*?=?|<[<=>]?|>[=>]?|&&?|\\^\\^?|\\|\\|?|~|\\b(?:and|at|not|or|with|xor)\\b/,\n constant:\n /\\b(?:GM_build_date|GM_version|action_(?:continue|restart|reverse|stop)|all|gamespeed_(?:fps|microseconds)|global|local|noone|other|pi|pointer_(?:invalid|null)|self|timezone_(?:local|utc)|undefined|ev_(?:create|destroy|step|alarm|keyboard|mouse|collision|other|draw|draw_(?:begin|end|post|pre)|keypress|keyrelease|trigger|(?:left|middle|no|right)_button|(?:left|middle|right)_press|(?:left|middle|right)_release|mouse_(?:enter|leave|wheel_down|wheel_up)|global_(?:left|middle|right)_button|global_(?:left|middle|right)_press|global_(?:left|middle|right)_release|joystick(?:1|2)_(?:button1|button2|button3|button4|button5|button6|button7|button8|down|left|right|up)|outside|boundary|game_start|game_end|room_start|room_end|no_more_lives|animation_end|end_of_path|no_more_health|user\\d|gui|gui_begin|gui_end|step_(?:begin|end|normal))|vk_(?:alt|anykey|backspace|control|delete|down|end|enter|escape|home|insert|left|nokey|pagedown|pageup|pause|printscreen|return|right|shift|space|tab|up|f\\d|numpad\\d|add|decimal|divide|lalt|lcontrol|lshift|multiply|ralt|rcontrol|rshift|subtract)|achievement_(?:filter_(?:all_players|favorites_only|friends_only)|friends_info|info|leaderboard_info|our_info|pic_loaded|show_(?:achievement|bank|friend_picker|leaderboard|profile|purchase_prompt|ui)|type_challenge|type_score_challenge)|asset_(?:font|object|path|room|script|shader|sound|sprite|tiles|timeline|unknown)|audio_(?:3d|falloff_(?:exponent_distance|exponent_distance_clamped|inverse_distance|inverse_distance_clamped|linear_distance|linear_distance_clamped|none)|mono|new_system|old_system|stereo)|bm_(?:add|complex|dest_alpha|dest_color|dest_colour|inv_dest_alpha|inv_dest_color|inv_dest_colour|inv_src_alpha|inv_src_color|inv_src_colour|max|normal|one|src_alpha|src_alpha_sat|src_color|src_colour|subtract|zero)|browser_(?:chrome|firefox|ie|ie_mobile|not_a_browser|opera|safari|safari_mobile|tizen|unknown|windows_store)|buffer_(?:bool|f16|f32|f64|fast|fixed|generalerror|grow|invalidtype|network|outofbounds|outofspace|s16|s32|s8|seek_end|seek_relative|seek_start|string|text|u16|u32|u64|u8|vbuffer|wrap)|c_(?:aqua|black|blue|dkgray|fuchsia|gray|green|lime|ltgray|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)|cmpfunc_(?:always|equal|greater|greaterequal|less|lessequal|never|notequal)|cr_(?:appstart|arrow|beam|cross|default|drag|handpoint|hourglass|none|size_all|size_nesw|size_ns|size_nwse|size_we|uparrow)|cull_(?:clockwise|counterclockwise|noculling)|device_(?:emulator|tablet)|device_ios_(?:ipad|ipad_retina|iphone|iphone5|iphone6|iphone6plus|iphone_retina|unknown)|display_(?:landscape|landscape_flipped|portrait|portrait_flipped)|dll_(?:cdecl|cdel|stdcall)|ds_type_(?:grid|list|map|priority|queue|stack)|ef_(?:cloud|ellipse|explosion|firework|flare|rain|ring|smoke|smokeup|snow|spark|star)|fa_(?:archive|bottom|center|directory|hidden|left|middle|readonly|right|sysfile|top|volumeid)|fb_login_(?:default|fallback_to_webview|forcing_safari|forcing_webview|no_fallback_to_webview|use_system_account)|iap_(?:available|canceled|ev_consume|ev_product|ev_purchase|ev_restore|ev_storeload|failed|purchased|refunded|status_available|status_loading|status_processing|status_restoring|status_unavailable|status_uninitialised|storeload_failed|storeload_ok|unavailable)|leaderboard_type_(?:number|time_mins_secs)|lighttype_(?:dir|point)|matrix_(?:projection|view|world)|mb_(?:any|left|middle|none|right)|network_(?:config_(?:connect_timeout|disable_reliable_udp|enable_reliable_udp|use_non_blocking_socket)|socket_(?:bluetooth|tcp|udp)|type_(?:connect|data|disconnect|non_blocking_connect))|of_challenge_(?:lose|tie|win)|os_(?:android|ios|linux|macosx|ps3|ps4|psvita|unknown|uwp|win32|win8native|windows|winphone|xboxone)|phy_debug_render_(?:aabb|collision_pairs|coms|core_shapes|joints|obb|shapes)|phy_joint_(?:anchor_1_x|anchor_1_y|anchor_2_x|anchor_2_y|angle|angle_limits|damping_ratio|frequency|length_1|length_2|lower_angle_limit|max_force|max_length|max_motor_force|max_motor_torque|max_torque|motor_force|motor_speed|motor_torque|reaction_force_x|reaction_force_y|reaction_torque|speed|translation|upper_angle_limit)|phy_particle_data_flag_(?:category|color|colour|position|typeflags|velocity)|phy_particle_flag_(?:colormixing|colourmixing|elastic|powder|spring|tensile|viscous|wall|water|zombie)|phy_particle_group_flag_(?:rigid|solid)|pr_(?:linelist|linestrip|pointlist|trianglefan|trianglelist|trianglestrip)|ps_(?:distr|shape)_(?:diamond|ellipse|gaussian|invgaussian|line|linear|rectangle)|pt_shape_(?:circle|cloud|disk|explosion|flare|line|pixel|ring|smoke|snow|spark|sphere|square|star)|ty_(?:real|string)|gp_(?:face\\d|axislh|axislv|axisrh|axisrv|padd|padl|padr|padu|select|shoulderl|shoulderlb|shoulderr|shoulderrb|start|stickl|stickr)|lb_disp_(?:none|numeric|time_ms|time_sec)|lb_sort_(?:ascending|descending|none)|ov_(?:achievements|community|friends|gamegroup|players|settings)|ugc_(?:filetype_(?:community|microtrans)|list_(?:Favorited|Followed|Published|Subscribed|UsedOrPlayed|VotedDown|VotedOn|VotedUp|WillVoteLater)|match_(?:AllGuides|Artwork|Collections|ControllerBindings|IntegratedGuides|Items|Items_Mtx|Items_ReadyToUse|Screenshots|UsableInGame|Videos|WebGuides)|query_(?:AcceptedForGameRankedByAcceptanceDate|CreatedByFriendsRankedByPublicationDate|FavoritedByFriendsRankedByPublicationDate|NotYetRated)|query_RankedBy(?:NumTimesReported|PublicationDate|TextSearch|TotalVotesAsc|Trend|Vote|VotesUp)|result_success|sortorder_CreationOrder(?:Asc|Desc)|sortorder_(?:ForModeration|LastUpdatedDesc|SubscriptionDateDesc|TitleAsc|VoteScoreDesc)|visibility_(?:friends_only|private|public))|vertex_usage_(?:binormal|blendindices|blendweight|color|colour|depth|fog|normal|position|psize|sample|tangent|texcoord|textcoord)|vertex_type_(?:float\\d|color|colour|ubyte4)|input_type|layerelementtype_(?:background|instance|oldtilemap|particlesystem|sprite|tile|tilemap|undefined)|se_(?:chorus|compressor|echo|equalizer|flanger|gargle|none|reverb)|text_type|tile_(?:flip|index_mask|mirror|rotate)|(?:obj|rm|scr|spr)\\w+)\\b/,\n variable:\n /\\b(?:alarm|application_surface|async_load|background_(?:alpha|blend|color|colour|foreground|height|hspeed|htiled|index|showcolor|showcolour|visible|vspeed|vtiled|width|x|xscale|y|yscale)|bbox_(?:bottom|left|right|top)|browser_(?:height|width)|caption_(?:health|lives|score)|current_(?:day|hour|minute|month|second|time|weekday|year)|cursor_sprite|debug_mode|delta_time|direction|display_aa|error_(?:last|occurred)|event_(?:action|number|object|type)|fps|fps_real|friction|game_(?:display|project|save)_(?:id|name)|gamemaker_(?:pro|registered|version)|gravity|gravity_direction|(?:h|v)speed|health|iap_data|id|image_(?:alpha|angle|blend|depth|index|number|speed|xscale|yscale)|instance_(?:count|id)|keyboard_(?:key|lastchar|lastkey|string)|layer|lives|mask_index|mouse_(?:button|lastbutton|x|y)|object_index|os_(?:browser|device|type|version)|path_(?:endaction|index|orientation|position|positionprevious|scale|speed)|persistent|phy_(?:rotation|(?:col_normal|collision|com|linear_velocity|position|speed)_(?:x|y)|angular_(?:damping|velocity)|position_(?:x|y)previous|speed|linear_damping|bullet|fixed_rotation|active|mass|inertia|dynamic|kinematic|sleeping|collision_points)|pointer_(?:invalid|null)|room|room_(?:caption|first|height|last|persistent|speed|width)|score|secure_mode|show_(?:health|lives|score)|solid|speed|sprite_(?:height|index|width|xoffset|yoffset)|temp_directory|timeline_(?:index|loop|position|running|speed)|transition_(?:color|kind|steps)|undefined|view_(?:angle|current|enabled|(?:h|v)(?:border|speed)|(?:h|w|x|y)port|(?:h|w|x|y)view|object|surface_id|visible)|visible|webgl_enabled|working_directory|(?:x|y)(?:previous|start)|x|y|argument(?:_relitive|_count|\\d)|argument|global|local|other|self)\\b/\n })\n}\n","// @ts-nocheck\ngap.displayName = 'gap'\ngap.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function gap(Prism) {\n // https://www.gap-system.org/Manuals/doc/ref/chap4.html\n // https://www.gap-system.org/Manuals/doc/ref/chap27.html\n\n Prism.languages.gap = {\n shell: {\n pattern: /^gap>[\\s\\S]*?(?=^gap>|$(?![\\s\\S]))/m,\n greedy: true,\n inside: {\n gap: {\n pattern: /^(gap>).+(?:(?:\\r(?:\\n|(?!\\n))|\\n)>.*)*/,\n lookbehind: true,\n inside: null // see below\n },\n\n punctuation: /^gap>/\n }\n },\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n string: {\n pattern:\n /(^|[^\\\\'\"])(?:'(?:[^\\r\\n\\\\']|\\\\.){1,10}'|\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"(?!\")|\"\"\"[\\s\\S]*?\"\"\")/,\n lookbehind: true,\n greedy: true,\n inside: {\n continuation: {\n pattern: /([\\r\\n])>/,\n lookbehind: true,\n alias: 'punctuation'\n }\n }\n },\n keyword:\n /\\b(?:Assert|Info|IsBound|QUIT|TryNextMethod|Unbind|and|atomic|break|continue|do|elif|else|end|fi|for|function|if|in|local|mod|not|od|or|quit|readonly|readwrite|rec|repeat|return|then|until|while)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n number: {\n pattern:\n /(^|[^\\w.]|\\.\\.)(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?:_[a-z]?)?(?=$|[^\\w.]|\\.\\.)/,\n lookbehind: true\n },\n continuation: {\n pattern: /([\\r\\n])>/,\n lookbehind: true,\n alias: 'punctuation'\n },\n operator: /->|[-+*/^~=!]|<>|[<>]=?|:=|\\.\\./,\n punctuation: /[()[\\]{},;.:]/\n }\n Prism.languages.gap.shell.inside.gap.inside = Prism.languages.gap\n}\n","// @ts-nocheck\ngcode.displayName = 'gcode'\ngcode.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function gcode(Prism) {\n Prism.languages.gcode = {\n comment: /;.*|\\B\\(.*?\\)\\B/,\n string: {\n pattern: /\"(?:\"\"|[^\"])*\"/,\n greedy: true\n },\n keyword: /\\b[GM]\\d+(?:\\.\\d+)?\\b/,\n property: /\\b[A-Z]/,\n checksum: {\n pattern: /(\\*)\\d+/,\n lookbehind: true,\n alias: 'number'\n },\n // T0:0:0\n punctuation: /[:*]/\n }\n}\n","// @ts-nocheck\ngdscript.displayName = 'gdscript'\ngdscript.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function gdscript(Prism) {\n Prism.languages.gdscript = {\n comment: /#.*/,\n string: {\n pattern:\n /@?(?:(\"|')(?:(?!\\1)[^\\n\\\\]|\\\\[\\s\\S])*\\1(?!\"|')|\"\"\"(?:[^\\\\]|\\\\[\\s\\S])*?\"\"\")/,\n greedy: true\n },\n 'class-name': {\n // class_name Foo, extends Bar, class InnerClass\n // export(int) var baz, export(int, 0) var i\n // as Node\n // const FOO: int = 9, var bar: bool = true\n // func add(reference: Item, amount: int) -> Item:\n pattern:\n /(^(?:class|class_name|extends)[ \\t]+|^export\\([ \\t]*|\\bas[ \\t]+|(?:\\b(?:const|var)[ \\t]|[,(])[ \\t]*\\w+[ \\t]*:[ \\t]*|->[ \\t]*)[a-zA-Z_]\\w*/m,\n lookbehind: true\n },\n keyword:\n /\\b(?:and|as|assert|break|breakpoint|class|class_name|const|continue|elif|else|enum|export|extends|for|func|if|in|is|master|mastersync|match|not|null|onready|or|pass|preload|puppet|puppetsync|remote|remotesync|return|self|setget|signal|static|tool|var|while|yield)\\b/,\n function: /\\b[a-z_]\\w*(?=[ \\t]*\\()/i,\n variable: /\\$\\w+/,\n number: [\n /\\b0b[01_]+\\b|\\b0x[\\da-fA-F_]+\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.[\\d_]+)(?:e[+-]?[\\d_]+)?\\b/,\n /\\b(?:INF|NAN|PI|TAU)\\b/\n ],\n constant: /\\b[A-Z][A-Z_\\d]*\\b/,\n boolean: /\\b(?:false|true)\\b/,\n operator: /->|:=|&&|\\|\\||<<|>>|[-+*/%&|!<>=]=?|[~^]/,\n punctuation: /[.:,;()[\\]{}]/\n }\n}\n","// @ts-nocheck\ngedcom.displayName = 'gedcom'\ngedcom.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function gedcom(Prism) {\n Prism.languages.gedcom = {\n 'line-value': {\n // Preceded by level, optional pointer, and tag\n pattern:\n /(^[\\t ]*\\d+ +(?:@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@ +)?\\w+ ).+/m,\n lookbehind: true,\n inside: {\n pointer: {\n pattern: /^@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@$/,\n alias: 'variable'\n }\n }\n },\n record: {\n // Preceded by level and optional pointer\n pattern:\n /(^[\\t ]*\\d+ +(?:@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@ +)?)\\w+/m,\n lookbehind: true,\n alias: 'tag'\n },\n level: {\n pattern: /(^[\\t ]*)\\d+/m,\n lookbehind: true,\n alias: 'number'\n },\n pointer: {\n pattern: /@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@/,\n alias: 'variable'\n }\n }\n}\n","// @ts-nocheck\ngettext.displayName = 'gettext'\ngettext.aliases = ['po']\n\n/** @type {import('../core.js').Syntax} */\nexport default function gettext(Prism) {\n Prism.languages.gettext = {\n comment: [\n {\n pattern: /# .*/,\n greedy: true,\n alias: 'translator-comment'\n },\n {\n pattern: /#\\..*/,\n greedy: true,\n alias: 'extracted-comment'\n },\n {\n pattern: /#:.*/,\n greedy: true,\n alias: 'reference-comment'\n },\n {\n pattern: /#,.*/,\n greedy: true,\n alias: 'flag-comment'\n },\n {\n pattern: /#\\|.*/,\n greedy: true,\n alias: 'previously-untranslated-comment'\n },\n {\n pattern: /#.*/,\n greedy: true\n }\n ],\n string: {\n pattern: /(^|[^\\\\])\"(?:[^\"\\\\]|\\\\.)*\"/,\n lookbehind: true,\n greedy: true\n },\n keyword: /^msg(?:ctxt|id|id_plural|str)\\b/m,\n number: /\\b\\d+\\b/,\n punctuation: /[\\[\\]]/\n }\n Prism.languages.po = Prism.languages.gettext\n}\n","// @ts-nocheck\ngherkin.displayName = 'gherkin'\ngherkin.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function gherkin(Prism) {\n ;(function (Prism) {\n var tableRow = /(?:\\r?\\n|\\r)[ \\t]*\\|.+\\|(?:(?!\\|).)*/.source\n Prism.languages.gherkin = {\n pystring: {\n pattern: /(\"\"\"|''')[\\s\\S]+?\\1/,\n alias: 'string'\n },\n comment: {\n pattern: /(^[ \\t]*)#.*/m,\n lookbehind: true\n },\n tag: {\n pattern: /(^[ \\t]*)@\\S*/m,\n lookbehind: true\n },\n feature: {\n pattern:\n /((?:^|\\r?\\n|\\r)[ \\t]*)(?:Ability|Ahoy matey!|Arwedd|Aspekt|Besigheid Behoefte|Business Need|Caracteristica|Característica|Egenskab|Egenskap|Eiginleiki|Feature|Fīča|Fitur|Fonctionnalité|Fonksyonalite|Funcionalidade|Funcionalitat|Functionalitate|Funcţionalitate|Funcționalitate|Functionaliteit|Fungsi|Funkcia|Funkcija|Funkcionalitāte|Funkcionalnost|Funkcja|Funksie|Funktionalität|Funktionalitéit|Funzionalità|Hwaet|Hwæt|Jellemző|Karakteristik|Lastnost|Mak|Mogucnost|laH|Mogućnost|Moznosti|Možnosti|OH HAI|Omadus|Ominaisuus|Osobina|Özellik|Potrzeba biznesowa|perbogh|poQbogh malja'|Požadavek|Požiadavka|Pretty much|Qap|Qu'meH 'ut|Savybė|Tính năng|Trajto|Vermoë|Vlastnosť|Właściwość|Značilnost|Δυνατότητα|Λειτουργία|Могућност|Мөмкинлек|Особина|Свойство|Үзенчәлеклелек|Функционал|Функционалност|Функция|Функціонал|תכונה|خاصية|خصوصیت|صلاحیت|کاروبار کی ضرورت|وِیژگی|रूप लेख|ਖਾਸੀਅਤ|ਨਕਸ਼ ਨੁਹਾਰ|ਮੁਹਾਂਦਰਾ|గుణము|ಹೆಚ್ಚಳ|ความต้องการทางธุรกิจ|ความสามารถ|โครงหลัก|기능|フィーチャ|功能|機能):(?:[^:\\r\\n]+(?:\\r?\\n|\\r|$))*/,\n lookbehind: true,\n inside: {\n important: {\n pattern: /(:)[^\\r\\n]+/,\n lookbehind: true\n },\n keyword: /[^:\\r\\n]+:/\n }\n },\n scenario: {\n pattern:\n /(^[ \\t]*)(?:Abstract Scenario|Abstrakt Scenario|Achtergrond|Aer|Ær|Agtergrond|All y'all|Antecedentes|Antecedents|Atburðarás|Atburðarásir|Awww, look mate|B4|Background|Baggrund|Bakgrund|Bakgrunn|Bakgrunnur|Beispiele|Beispiller|Bối cảnh|Cefndir|Cenario|Cenário|Cenario de Fundo|Cenário de Fundo|Cenarios|Cenários|Contesto|Context|Contexte|Contexto|Conto|Contoh|Contone|Dæmi|Dasar|Dead men tell no tales|Delineacao do Cenario|Delineação do Cenário|Dis is what went down|Dữ liệu|Dyagram Senaryo|Dyagram senaryo|Egzanp|Ejemplos|Eksempler|Ekzemploj|Enghreifftiau|Esbozo do escenario|Escenari|Escenario|Esempi|Esquema de l'escenari|Esquema del escenario|Esquema do Cenario|Esquema do Cenário|EXAMPLZ|Examples|Exempel|Exemple|Exemples|Exemplos|First off|Fono|Forgatókönyv|Forgatókönyv vázlat|Fundo|Geçmiş|Grundlage|Hannergrond|ghantoH|Háttér|Heave to|Istorik|Juhtumid|Keadaan|Khung kịch bản|Khung tình huống|Kịch bản|Koncept|Konsep skenario|Kontèks|Kontekst|Kontekstas|Konteksts|Kontext|Konturo de la scenaro|Latar Belakang|lut chovnatlh|lut|lutmey|Lýsing Atburðarásar|Lýsing Dæma|MISHUN SRSLY|MISHUN|Menggariskan Senario|mo'|Náčrt Scenára|Náčrt Scénáře|Náčrt Scenáru|Oris scenarija|Örnekler|Osnova|Osnova Scenára|Osnova scénáře|Osnutek|Ozadje|Paraugs|Pavyzdžiai|Példák|Piemēri|Plan du scénario|Plan du Scénario|Plan Senaryo|Plan senaryo|Plang vum Szenario|Pozadí|Pozadie|Pozadina|Príklady|Příklady|Primer|Primeri|Primjeri|Przykłady|Raamstsenaarium|Reckon it's like|Rerefons|Scenár|Scénář|Scenarie|Scenarij|Scenarijai|Scenarijaus šablonas|Scenariji|Scenārijs|Scenārijs pēc parauga|Scenarijus|Scenario|Scénario|Scenario Amlinellol|Scenario Outline|Scenario Template|Scenariomal|Scenariomall|Scenarios|Scenariu|Scenariusz|Scenaro|Schema dello scenario|Se ðe|Se the|Se þe|Senario|Senaryo Deskripsyon|Senaryo deskripsyon|Senaryo|Senaryo taslağı|Shiver me timbers|Situācija|Situai|Situasie Uiteensetting|Situasie|Skenario konsep|Skenario|Skica|Structura scenariu|Structură scenariu|Struktura scenarija|Stsenaarium|Swa hwaer swa|Swa|Swa hwær swa|Szablon scenariusza|Szenario|Szenariogrundriss|Tapaukset|Tapaus|Tapausaihio|Taust|Tausta|Template Keadaan|Template Senario|Template Situai|The thing of it is|Tình huống|Variantai|Voorbeelde|Voorbeelden|Wharrimean is|Yo-ho-ho|You'll wanna|Założenia|Παραδείγματα|Περιγραφή Σεναρίου|Σενάρια|Σενάριο|Υπόβαθρο|Кереш|Контекст|Концепт|Мисаллар|Мисоллар|Основа|Передумова|Позадина|Предистория|Предыстория|Приклади|Пример|Примери|Примеры|Рамка на сценарий|Скица|Структура сценарија|Структура сценария|Структура сценарію|Сценарий|Сценарий структураси|Сценарийның төзелеше|Сценарији|Сценарио|Сценарій|Тарих|Үрнәкләр|דוגמאות|רקע|תבנית תרחיש|תרחיש|الخلفية|الگوی سناریو|امثلة|پس منظر|زمینه|سناریو|سيناريو|سيناريو مخطط|مثالیں|منظر نامے کا خاکہ|منظرنامہ|نمونه ها|उदाहरण|परिदृश्य|परिदृश्य रूपरेखा|पृष्ठभूमि|ਉਦਾਹਰਨਾਂ|ਪਟਕਥਾ|ਪਟਕਥਾ ਢਾਂਚਾ|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਿਛੋਕੜ|ఉదాహరణలు|కథనం|నేపథ్యం|సన్నివేశం|ಉದಾಹರಣೆಗಳು|ಕಥಾಸಾರಾಂಶ|ವಿವರಣೆ|ಹಿನ್ನೆಲೆ|โครงสร้างของเหตุการณ์|ชุดของตัวอย่าง|ชุดของเหตุการณ์|แนวคิด|สรุปเหตุการณ์|เหตุการณ์|배경|시나리오|시나리오 개요|예|サンプル|シナリオ|シナリオアウトライン|シナリオテンプレ|シナリオテンプレート|テンプレ|例|例子|剧本|剧本大纲|劇本|劇本大綱|场景|场景大纲|場景|場景大綱|背景):[^:\\r\\n]*/m,\n lookbehind: true,\n inside: {\n important: {\n pattern: /(:)[^\\r\\n]*/,\n lookbehind: true\n },\n keyword: /[^:\\r\\n]+:/\n }\n },\n 'table-body': {\n // Look-behind is used to skip the table head, which has the same format as any table row\n pattern: RegExp('(' + tableRow + ')(?:' + tableRow + ')+'),\n lookbehind: true,\n inside: {\n outline: {\n pattern: /<[^>]+>/,\n alias: 'variable'\n },\n td: {\n pattern: /\\s*[^\\s|][^|]*/,\n alias: 'string'\n },\n punctuation: /\\|/\n }\n },\n 'table-head': {\n pattern: RegExp(tableRow),\n inside: {\n th: {\n pattern: /\\s*[^\\s|][^|]*/,\n alias: 'variable'\n },\n punctuation: /\\|/\n }\n },\n atrule: {\n pattern:\n /(^[ \\t]+)(?:'a|'ach|'ej|7|a|A také|A taktiež|A tiež|A zároveň|Aber|Ac|Adott|Akkor|Ak|Aleshores|Ale|Ali|Allora|Alors|Als|Ama|Amennyiben|Amikor|Ampak|an|AN|Ananging|And y'all|And|Angenommen|Anrhegedig a|An|Apabila|Atès|Atesa|Atunci|Avast!|Aye|A|awer|Bagi|Banjur|Bet|Biết|Blimey!|Buh|But at the end of the day I reckon|But y'all|But|BUT|Cal|Când|Cand|Cando|Ce|Cuando|Če|Ða ðe|Ða|Dadas|Dada|Dados|Dado|DaH ghu' bejlu'|dann|Dann|Dano|Dan|Dar|Dat fiind|Data|Date fiind|Date|Dati fiind|Dati|Daţi fiind|Dați fiind|DEN|Dato|De|Den youse gotta|Dengan|Diberi|Diyelim ki|Donada|Donat|Donitaĵo|Do|Dun|Duota|Ðurh|Eeldades|Ef|Eğer ki|Entao|Então|Entón|E|En|Entonces|Epi|És|Etant donnée|Etant donné|Et|Étant données|Étant donnée|Étant donné|Etant données|Etant donnés|Étant donnés|Fakat|Gangway!|Gdy|Gegeben seien|Gegeben sei|Gegeven|Gegewe|ghu' noblu'|Gitt|Given y'all|Given|Givet|Givun|Ha|Cho|I CAN HAZ|In|Ir|It's just unbelievable|I|Ja|Jeśli|Jeżeli|Kad|Kada|Kadar|Kai|Kaj|Když|Keď|Kemudian|Ketika|Khi|Kiedy|Ko|Kuid|Kui|Kun|Lan|latlh|Le sa a|Let go and haul|Le|Lè sa a|Lè|Logo|Lorsqu'<|Lorsque|mä|Maar|Mais|Mając|Ma|Majd|Maka|Manawa|Mas|Men|Menawa|Mutta|Nalika|Nalikaning|Nanging|Når|När|Nato|Nhưng|Niin|Njuk|O zaman|Och|Og|Oletetaan|Ond|Onda|Oraz|Pak|Pero|Però|Podano|Pokiaľ|Pokud|Potem|Potom|Privzeto|Pryd|Quan|Quand|Quando|qaSDI'|Så|Sed|Se|Siis|Sipoze ke|Sipoze Ke|Sipoze|Si|Şi|Și|Soit|Stel|Tada|Tad|Takrat|Tak|Tapi|Ter|Tetapi|Tha the|Tha|Then y'all|Then|Thì|Thurh|Toda|Too right|Un|Und|ugeholl|Và|vaj|Vendar|Ve|wann|Wanneer|WEN|Wenn|When y'all|When|Wtedy|Wun|Y'know|Yeah nah|Yna|Youse know like when|Youse know when youse got|Y|Za predpokladu|Za předpokladu|Zadan|Zadani|Zadano|Zadate|Zadato|Zakładając|Zaradi|Zatati|Þa þe|Þa|Þá|Þegar|Þurh|Αλλά|Δεδομένου|Και|Όταν|Τότε|А також|Агар|Але|Али|Аммо|А|Әгәр|Әйтик|Әмма|Бирок|Ва|Вә|Дадено|Дано|Допустим|Если|Задате|Задати|Задато|И|І|К тому же|Када|Кад|Когато|Когда|Коли|Ләкин|Лекин|Нәтиҗәдә|Нехай|Но|Онда|Припустимо, що|Припустимо|Пусть|Также|Та|Тогда|Тоді|То|Унда|Һәм|Якщо|אבל|אזי|אז|בהינתן|וגם|כאשר|آنگاه|اذاً|اگر|اما|اور|با فرض|بالفرض|بفرض|پھر|تب|ثم|جب|عندما|فرض کیا|لكن|لیکن|متى|هنگامی|و|अगर|और|कदा|किन्तु|चूंकि|जब|तथा|तदा|तब|परन्तु|पर|यदि|ਅਤੇ|ਜਦੋਂ|ਜਿਵੇਂ ਕਿ|ਜੇਕਰ|ਤਦ|ਪਰ|అప్పుడు|ఈ పరిస్థితిలో|కాని|చెప్పబడినది|మరియు|ಆದರೆ|ನಂತರ|ನೀಡಿದ|ಮತ್ತು|ಸ್ಥಿತಿಯನ್ನು|กำหนดให้|ดังนั้น|แต่|เมื่อ|และ|그러면<|그리고<|단<|만약<|만일<|먼저<|조건<|하지만<|かつ<|しかし<|ただし<|ならば<|もし<|並且<|但し<|但是<|假如<|假定<|假設<|假设<|前提<|同时<|同時<|并且<|当<|當<|而且<|那么<|那麼<)(?=[ \\t])/m,\n lookbehind: true\n },\n string: {\n pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|'(?:\\\\.|[^'\\\\\\r\\n])*'/,\n inside: {\n outline: {\n pattern: /<[^>]+>/,\n alias: 'variable'\n }\n }\n },\n outline: {\n pattern: /<[^>]+>/,\n alias: 'variable'\n }\n }\n })(Prism)\n}\n","// @ts-nocheck\ngit.displayName = 'git'\ngit.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function git(Prism) {\n Prism.languages.git = {\n /*\n * A simple one line comment like in a git status command\n * For instance:\n * $ git status\n * # On branch infinite-scroll\n * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged,\n * # and have 1 and 2 different commits each, respectively.\n * nothing to commit (working directory clean)\n */\n comment: /^#.*/m,\n /*\n * Regexp to match the changed lines in a git diff output. Check the example below.\n */\n deleted: /^[-–].*/m,\n inserted: /^\\+.*/m,\n /*\n * a string (double and simple quote)\n */\n string: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n /*\n * a git command. It starts with a random prompt finishing by a $, then \"git\" then some other parameters\n * For instance:\n * $ git add file.txt\n */\n command: {\n pattern: /^.*\\$ git .*$/m,\n inside: {\n /*\n * A git command can contain a parameter starting by a single or a double dash followed by a string\n * For instance:\n * $ git diff --cached\n * $ git log -p\n */\n parameter: /\\s--?\\w+/\n }\n },\n /*\n * Coordinates displayed in a git diff command\n * For instance:\n * $ git diff\n * diff --git file.txt file.txt\n * index 6214953..1d54a52 100644\n * --- file.txt\n * +++ file.txt\n * @@ -1 +1,2 @@\n * -Here's my tetx file\n * +Here's my text file\n * +And this is the second line\n */\n coord: /^@@.*@@$/m,\n /*\n * Match a \"commit [SHA1]\" line in a git log output.\n * For instance:\n * $ git log\n * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09\n * Author: lgiraudel\n * Date: Mon Feb 17 11:18:34 2014 +0100\n *\n * Add of a new line\n */\n 'commit-sha1': /^commit \\w{40}$/m\n }\n}\n","// @ts-nocheck\nimport refractorC from './c.js'\nglsl.displayName = 'glsl'\nglsl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function glsl(Prism) {\n Prism.register(refractorC)\n Prism.languages.glsl = Prism.languages.extend('c', {\n keyword:\n /\\b(?:active|asm|atomic_uint|attribute|[ibdu]?vec[234]|bool|break|buffer|case|cast|centroid|class|coherent|common|const|continue|d?mat[234](?:x[234])?|default|discard|do|double|else|enum|extern|external|false|filter|fixed|flat|float|for|fvec[234]|goto|half|highp|hvec[234]|[iu]?sampler2DMS(?:Array)?|[iu]?sampler2DRect|[iu]?samplerBuffer|[iu]?samplerCube|[iu]?samplerCubeArray|[iu]?sampler[123]D|[iu]?sampler[12]DArray|[iu]?image2DMS(?:Array)?|[iu]?image2DRect|[iu]?imageBuffer|[iu]?imageCube|[iu]?imageCubeArray|[iu]?image[123]D|[iu]?image[12]DArray|if|in|inline|inout|input|int|interface|invariant|layout|long|lowp|mediump|namespace|noinline|noperspective|out|output|partition|patch|precise|precision|public|readonly|resource|restrict|return|sample|sampler[12]DArrayShadow|sampler[12]DShadow|sampler2DRectShadow|sampler3DRect|samplerCubeArrayShadow|samplerCubeShadow|shared|short|sizeof|smooth|static|struct|subroutine|superp|switch|template|this|true|typedef|uint|uniform|union|unsigned|using|varying|void|volatile|while|writeonly)\\b/\n })\n}\n","// @ts-nocheck\ngn.displayName = 'gn'\ngn.aliases = ['gni']\n\n/** @type {import('../core.js').Syntax} */\nexport default function gn(Prism) {\n // https://gn.googlesource.com/gn/+/refs/heads/main/docs/reference.md#grammar\n\n Prism.languages.gn = {\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n 'string-literal': {\n pattern: /(^|[^\\\\\"])\"(?:[^\\r\\n\"\\\\]|\\\\.)*\"/,\n lookbehind: true,\n greedy: true,\n inside: {\n interpolation: {\n pattern:\n /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:\\{[\\s\\S]*?\\}|[a-zA-Z_]\\w*|0x[a-fA-F0-9]{2})/,\n lookbehind: true,\n inside: {\n number: /^\\$0x[\\s\\S]{2}$/,\n variable: /^\\$\\w+$/,\n 'interpolation-punctuation': {\n pattern: /^\\$\\{|\\}$/,\n alias: 'punctuation'\n },\n expression: {\n pattern: /[\\s\\S]+/,\n inside: null // see below\n }\n }\n },\n\n string: /[\\s\\S]+/\n }\n },\n keyword: /\\b(?:else|if)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n 'builtin-function': {\n // a few functions get special highlighting to improve readability\n pattern:\n /\\b(?:assert|defined|foreach|import|pool|print|template|tool|toolchain)(?=\\s*\\()/i,\n alias: 'keyword'\n },\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n constant:\n /\\b(?:current_cpu|current_os|current_toolchain|default_toolchain|host_cpu|host_os|root_build_dir|root_gen_dir|root_out_dir|target_cpu|target_gen_dir|target_os|target_out_dir)\\b/,\n number: /-?\\b\\d+\\b/,\n operator: /[-+!=<>]=?|&&|\\|\\|/,\n punctuation: /[(){}[\\],.]/\n }\n Prism.languages.gn['string-literal'].inside['interpolation'].inside[\n 'expression'\n ].inside = Prism.languages.gn\n Prism.languages.gni = Prism.languages.gn\n}\n","// @ts-nocheck\nlinkerScript.displayName = 'linker-script'\nlinkerScript.aliases = ['ld']\n\n/** @type {import('../core.js').Syntax} */\nexport default function linkerScript(Prism) {\n Prism.languages['linker-script'] = {\n comment: {\n pattern: /(^|\\s)\\/\\*[\\s\\S]*?(?:$|\\*\\/)/,\n lookbehind: true,\n greedy: true\n },\n identifier: {\n pattern: /\"[^\"\\r\\n]*\"/,\n greedy: true\n },\n 'location-counter': {\n pattern: /\\B\\.\\B/,\n alias: 'important'\n },\n section: {\n pattern: /(^|[^\\w*])\\.\\w+\\b/,\n lookbehind: true,\n alias: 'keyword'\n },\n function: /\\b[A-Z][A-Z_]*(?=\\s*\\()/,\n number: /\\b(?:0[xX][a-fA-F0-9]+|\\d+)[KM]?\\b/,\n operator: />>=?|<<=?|->|\\+\\+|--|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?/,\n punctuation: /[(){},;]/\n }\n Prism.languages['ld'] = Prism.languages['linker-script']\n}\n","// @ts-nocheck\ngoModule.displayName = 'go-module'\ngoModule.aliases = ['go-mod']\n\n/** @type {import('../core.js').Syntax} */\nexport default function goModule(Prism) {\n // https://go.dev/ref/mod#go-mod-file-module\n\n Prism.languages['go-mod'] = Prism.languages['go-module'] = {\n comment: {\n pattern: /\\/\\/.*/,\n greedy: true\n },\n version: {\n pattern: /(^|[\\s()[\\],])v\\d+\\.\\d+\\.\\d+(?:[+-][-+.\\w]*)?(?![^\\s()[\\],])/,\n lookbehind: true,\n alias: 'number'\n },\n 'go-version': {\n pattern: /((?:^|\\s)go\\s+)\\d+(?:\\.\\d+){1,2}/,\n lookbehind: true,\n alias: 'number'\n },\n keyword: {\n pattern: /^([ \\t]*)(?:exclude|go|module|replace|require|retract)\\b/m,\n lookbehind: true\n },\n operator: /=>/,\n punctuation: /[()[\\],]/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\ngradle.displayName = 'gradle'\ngradle.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function gradle(Prism) {\n Prism.register(refractorClike)\n ;(function (Prism) {\n var interpolation = {\n pattern: /((?:^|[^\\\\$])(?:\\\\{2})*)\\$(?:\\w+|\\{[^{}]*\\})/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\$\\{?|\\}$/,\n alias: 'punctuation'\n },\n expression: {\n pattern: /[\\s\\S]+/,\n inside: null\n }\n }\n }\n Prism.languages.gradle = Prism.languages.extend('clike', {\n string: {\n pattern: /'''(?:[^\\\\]|\\\\[\\s\\S])*?'''|'(?:\\\\.|[^\\\\'\\r\\n])*'/,\n greedy: true\n },\n keyword:\n /\\b(?:apply|def|dependencies|else|if|implementation|import|plugin|plugins|project|repositories|repository|sourceSets|tasks|val)\\b/,\n number:\n /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?\\d+)?)[glidf]?\\b/i,\n operator: {\n pattern:\n /(^|[^.])(?:~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.\\.(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n lookbehind: true\n },\n punctuation: /\\.+|[{}[\\];(),:$]/\n })\n Prism.languages.insertBefore('gradle', 'string', {\n shebang: {\n pattern: /#!.+/,\n alias: 'comment',\n greedy: true\n },\n 'interpolation-string': {\n pattern:\n /\"\"\"(?:[^\\\\]|\\\\[\\s\\S])*?\"\"\"|([\"/])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1|\\$\\/(?:[^/$]|\\$(?:[/$]|(?![/$]))|\\/(?!\\$))*\\/\\$/,\n greedy: true,\n inside: {\n interpolation: interpolation,\n string: /[\\s\\S]+/\n }\n }\n })\n Prism.languages.insertBefore('gradle', 'punctuation', {\n 'spock-block': /\\b(?:and|cleanup|expect|given|setup|then|when|where):/\n })\n Prism.languages.insertBefore('gradle', 'function', {\n annotation: {\n pattern: /(^|[^.])@\\w+/,\n lookbehind: true,\n alias: 'punctuation'\n }\n })\n interpolation.inside.expression.inside = Prism.languages.gradle\n })(Prism)\n}\n","// @ts-nocheck\ngraphql.displayName = 'graphql'\ngraphql.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function graphql(Prism) {\n Prism.languages.graphql = {\n comment: /#.*/,\n description: {\n pattern:\n /(?:\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")(?=\\s*[a-z_])/i,\n greedy: true,\n alias: 'string',\n inside: {\n 'language-markdown': {\n pattern: /(^\"(?:\"\")?)(?!\\1)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: Prism.languages.markdown\n }\n }\n },\n string: {\n pattern: /\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n number: /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n boolean: /\\b(?:false|true)\\b/,\n variable: /\\$[a-z_]\\w*/i,\n directive: {\n pattern: /@[a-z_]\\w*/i,\n alias: 'function'\n },\n 'attr-name': {\n pattern: /\\b[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n greedy: true\n },\n 'atom-input': {\n pattern: /\\b[A-Z]\\w*Input\\b/,\n alias: 'class-name'\n },\n scalar: /\\b(?:Boolean|Float|ID|Int|String)\\b/,\n constant: /\\b[A-Z][A-Z_\\d]*\\b/,\n 'class-name': {\n pattern:\n /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*|:\\s*|\\[)[A-Z_]\\w*/,\n lookbehind: true\n },\n fragment: {\n pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'definition-mutation': {\n pattern: /(\\bmutation\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'definition-query': {\n pattern: /(\\bquery\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n keyword:\n /\\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\\b/,\n operator: /[!=|&]|\\.{3}/,\n 'property-query': /\\w+(?=\\s*\\()/,\n object: /\\w+(?=\\s*\\{)/,\n punctuation: /[!(){}\\[\\]:=,]/,\n property: /\\w+/\n }\n Prism.hooks.add('after-tokenize', function afterTokenizeGraphql(env) {\n if (env.language !== 'graphql') {\n return\n }\n\n /**\n * get the graphql token stream that we want to customize\n *\n * @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n * @type {Token[]}\n */\n var validTokens = env.tokens.filter(function (token) {\n return (\n typeof token !== 'string' &&\n token.type !== 'comment' &&\n token.type !== 'scalar'\n )\n })\n var currentIndex = 0\n\n /**\n * Returns whether the token relative to the current index has the given type.\n *\n * @param {number} offset\n * @returns {Token | undefined}\n */\n function getToken(offset) {\n return validTokens[currentIndex + offset]\n }\n\n /**\n * Returns whether the token relative to the current index has the given type.\n *\n * @param {readonly string[]} types\n * @param {number} [offset=0]\n * @returns {boolean}\n */\n function isTokenType(types, offset) {\n offset = offset || 0\n for (var i = 0; i < types.length; i++) {\n var token = getToken(i + offset)\n if (!token || token.type !== types[i]) {\n return false\n }\n }\n return true\n }\n\n /**\n * Returns the index of the closing bracket to an opening bracket.\n *\n * It is assumed that `token[currentIndex - 1]` is an opening bracket.\n *\n * If no closing bracket could be found, `-1` will be returned.\n *\n * @param {RegExp} open\n * @param {RegExp} close\n * @returns {number}\n */\n function findClosingBracket(open, close) {\n var stackHeight = 1\n for (var i = currentIndex; i < validTokens.length; i++) {\n var token = validTokens[i]\n var content = token.content\n if (token.type === 'punctuation' && typeof content === 'string') {\n if (open.test(content)) {\n stackHeight++\n } else if (close.test(content)) {\n stackHeight--\n if (stackHeight === 0) {\n return i\n }\n }\n }\n }\n return -1\n }\n\n /**\n * Adds an alias to the given token.\n *\n * @param {Token} token\n * @param {string} alias\n * @returns {void}\n */\n function addAlias(token, alias) {\n var aliases = token.alias\n if (!aliases) {\n token.alias = aliases = []\n } else if (!Array.isArray(aliases)) {\n token.alias = aliases = [aliases]\n }\n aliases.push(alias)\n }\n for (; currentIndex < validTokens.length; ) {\n var startToken = validTokens[currentIndex++]\n\n // add special aliases for mutation tokens\n if (startToken.type === 'keyword' && startToken.content === 'mutation') {\n // any array of the names of all input variables (if any)\n var inputVariables = []\n if (\n isTokenType(['definition-mutation', 'punctuation']) &&\n getToken(1).content === '('\n ) {\n // definition\n\n currentIndex += 2 // skip 'definition-mutation' and 'punctuation'\n\n var definitionEnd = findClosingBracket(/^\\($/, /^\\)$/)\n if (definitionEnd === -1) {\n continue\n }\n\n // find all input variables\n for (; currentIndex < definitionEnd; currentIndex++) {\n var t = getToken(0)\n if (t.type === 'variable') {\n addAlias(t, 'variable-input')\n inputVariables.push(t.content)\n }\n }\n currentIndex = definitionEnd + 1\n }\n if (\n isTokenType(['punctuation', 'property-query']) &&\n getToken(0).content === '{'\n ) {\n currentIndex++ // skip opening bracket\n\n addAlias(getToken(0), 'property-mutation')\n if (inputVariables.length > 0) {\n var mutationEnd = findClosingBracket(/^\\{$/, /^\\}$/)\n if (mutationEnd === -1) {\n continue\n }\n\n // give references to input variables a special alias\n for (var i = currentIndex; i < mutationEnd; i++) {\n var varToken = validTokens[i]\n if (\n varToken.type === 'variable' &&\n inputVariables.indexOf(varToken.content) >= 0\n ) {\n addAlias(varToken, 'variable-input')\n }\n }\n }\n }\n }\n }\n })\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\ngroovy.displayName = 'groovy'\ngroovy.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function groovy(Prism) {\n Prism.register(refractorClike)\n ;(function (Prism) {\n var interpolation = {\n pattern: /((?:^|[^\\\\$])(?:\\\\{2})*)\\$(?:\\w+|\\{[^{}]*\\})/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\$\\{?|\\}$/,\n alias: 'punctuation'\n },\n expression: {\n pattern: /[\\s\\S]+/,\n inside: null // see below\n }\n }\n }\n\n Prism.languages.groovy = Prism.languages.extend('clike', {\n string: {\n // https://groovy-lang.org/syntax.html#_dollar_slashy_string\n pattern: /'''(?:[^\\\\]|\\\\[\\s\\S])*?'''|'(?:\\\\.|[^\\\\'\\r\\n])*'/,\n greedy: true\n },\n keyword:\n /\\b(?:abstract|as|assert|boolean|break|byte|case|catch|char|class|const|continue|def|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|in|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\\b/,\n number:\n /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?\\d+)?)[glidf]?\\b/i,\n operator: {\n pattern:\n /(^|[^.])(?:~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.\\.(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n lookbehind: true\n },\n punctuation: /\\.+|[{}[\\];(),:$]/\n })\n Prism.languages.insertBefore('groovy', 'string', {\n shebang: {\n pattern: /#!.+/,\n alias: 'comment',\n greedy: true\n },\n 'interpolation-string': {\n // TODO: Slash strings (e.g. /foo/) can contain line breaks but this will cause a lot of trouble with\n // simple division (see JS regex), so find a fix maybe?\n pattern:\n /\"\"\"(?:[^\\\\]|\\\\[\\s\\S])*?\"\"\"|([\"/])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1|\\$\\/(?:[^/$]|\\$(?:[/$]|(?![/$]))|\\/(?!\\$))*\\/\\$/,\n greedy: true,\n inside: {\n interpolation: interpolation,\n string: /[\\s\\S]+/\n }\n }\n })\n Prism.languages.insertBefore('groovy', 'punctuation', {\n 'spock-block': /\\b(?:and|cleanup|expect|given|setup|then|when|where):/\n })\n Prism.languages.insertBefore('groovy', 'function', {\n annotation: {\n pattern: /(^|[^.])@\\w+/,\n lookbehind: true,\n alias: 'punctuation'\n }\n })\n interpolation.inside.expression.inside = Prism.languages.groovy\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkup from './markup.js'\ntextile.displayName = 'textile'\ntextile.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function textile(Prism) {\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n // We don't allow for pipes inside parentheses\n // to not break table pattern |(. foo |). bar |\n var modifierRegex = /\\([^|()\\n]+\\)|\\[[^\\]\\n]+\\]|\\{[^}\\n]+\\}/.source\n // Opening and closing parentheses which are not a modifier\n // This pattern is necessary to prevent exponential backtracking\n var parenthesesRegex = /\\)|\\((?![^|()\\n]+\\))/.source\n /**\n * @param {string} source\n * @param {string} [flags]\n */\n function withModifier(source, flags) {\n return RegExp(\n source\n .replace(/<MOD>/g, function () {\n return '(?:' + modifierRegex + ')'\n })\n .replace(/<PAR>/g, function () {\n return '(?:' + parenthesesRegex + ')'\n }),\n flags || ''\n )\n }\n var modifierTokens = {\n css: {\n pattern: /\\{[^{}]+\\}/,\n inside: {\n rest: Prism.languages.css\n }\n },\n 'class-id': {\n pattern: /(\\()[^()]+(?=\\))/,\n lookbehind: true,\n alias: 'attr-value'\n },\n lang: {\n pattern: /(\\[)[^\\[\\]]+(?=\\])/,\n lookbehind: true,\n alias: 'attr-value'\n },\n // Anything else is punctuation (the first pattern is for row/col spans inside tables)\n punctuation: /[\\\\\\/]\\d+|\\S/\n }\n var textile = (Prism.languages.textile = Prism.languages.extend('markup', {\n phrase: {\n pattern: /(^|\\r|\\n)\\S[\\s\\S]*?(?=$|\\r?\\n\\r?\\n|\\r\\r)/,\n lookbehind: true,\n inside: {\n // h1. Header 1\n 'block-tag': {\n pattern: withModifier(/^[a-z]\\w*(?:<MOD>|<PAR>|[<>=])*\\./.source),\n inside: {\n modifier: {\n pattern: withModifier(\n /(^[a-z]\\w*)(?:<MOD>|<PAR>|[<>=])+(?=\\.)/.source\n ),\n lookbehind: true,\n inside: modifierTokens\n },\n tag: /^[a-z]\\w*/,\n punctuation: /\\.$/\n }\n },\n // # List item\n // * List item\n list: {\n pattern: withModifier(/^[*#]+<MOD>*\\s+\\S.*/.source, 'm'),\n inside: {\n modifier: {\n pattern: withModifier(/(^[*#]+)<MOD>+/.source),\n lookbehind: true,\n inside: modifierTokens\n },\n punctuation: /^[*#]+/\n }\n },\n // | cell | cell | cell |\n table: {\n // Modifiers can be applied to the row: {color:red}.|1|2|3|\n // or the cell: |{color:red}.1|2|3|\n pattern: withModifier(\n /^(?:(?:<MOD>|<PAR>|[<>=^~])+\\.\\s*)?(?:\\|(?:(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+\\.|(?!(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+\\.))[^|]*)+\\|/\n .source,\n 'm'\n ),\n inside: {\n modifier: {\n // Modifiers for rows after the first one are\n // preceded by a pipe and a line feed\n pattern: withModifier(\n /(^|\\|(?:\\r?\\n|\\r)?)(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+(?=\\.)/\n .source\n ),\n lookbehind: true,\n inside: modifierTokens\n },\n punctuation: /\\||^\\./\n }\n },\n inline: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(\n /(^|[^a-zA-Z\\d])(\\*\\*|__|\\?\\?|[*_%@+\\-^~])<MOD>*.+?\\2(?![a-zA-Z\\d])/\n .source\n ),\n lookbehind: true,\n inside: {\n // Note: superscripts and subscripts are not handled specifically\n\n // *bold*, **bold**\n bold: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(/(^(\\*\\*?)<MOD>*).+?(?=\\2)/.source),\n lookbehind: true\n },\n // _italic_, __italic__\n italic: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(/(^(__?)<MOD>*).+?(?=\\2)/.source),\n lookbehind: true\n },\n // ??cite??\n cite: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(/(^\\?\\?<MOD>*).+?(?=\\?\\?)/.source),\n lookbehind: true,\n alias: 'string'\n },\n // @code@\n code: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(/(^@<MOD>*).+?(?=@)/.source),\n lookbehind: true,\n alias: 'keyword'\n },\n // +inserted+\n inserted: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(/(^\\+<MOD>*).+?(?=\\+)/.source),\n lookbehind: true\n },\n // -deleted-\n deleted: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(/(^-<MOD>*).+?(?=-)/.source),\n lookbehind: true\n },\n // %span%\n span: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(/(^%<MOD>*).+?(?=%)/.source),\n lookbehind: true\n },\n modifier: {\n pattern: withModifier(\n /(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])<MOD>+/.source\n ),\n lookbehind: true,\n inside: modifierTokens\n },\n punctuation: /[*_%?@+\\-^~]+/\n }\n },\n // [alias]http://example.com\n 'link-ref': {\n pattern: /^\\[[^\\]]+\\]\\S+$/m,\n inside: {\n string: {\n pattern: /(^\\[)[^\\]]+(?=\\])/,\n lookbehind: true\n },\n url: {\n pattern: /(^\\])\\S+$/,\n lookbehind: true\n },\n punctuation: /[\\[\\]]/\n }\n },\n // \"text\":http://example.com\n // \"text\":link-ref\n link: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(\n /\"<MOD>*[^\"]+\":.+?(?=[^\\w/]?(?:\\s|$))/.source\n ),\n inside: {\n text: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: withModifier(/(^\"<MOD>*)[^\"]+(?=\")/.source),\n lookbehind: true\n },\n modifier: {\n pattern: withModifier(/(^\")<MOD>+/.source),\n lookbehind: true,\n inside: modifierTokens\n },\n url: {\n pattern: /(:).+/,\n lookbehind: true\n },\n punctuation: /[\":]/\n }\n },\n // !image.jpg!\n // !image.jpg(Title)!:http://example.com\n image: {\n pattern: withModifier(\n /!(?:<MOD>|<PAR>|[<>=])*(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?/\n .source\n ),\n inside: {\n source: {\n pattern: withModifier(\n /(^!(?:<MOD>|<PAR>|[<>=])*)(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?(?=!)/\n .source\n ),\n lookbehind: true,\n alias: 'url'\n },\n modifier: {\n pattern: withModifier(/(^!)(?:<MOD>|<PAR>|[<>=])+/.source),\n lookbehind: true,\n inside: modifierTokens\n },\n url: {\n pattern: /(:).+/,\n lookbehind: true\n },\n punctuation: /[!:]/\n }\n },\n // Footnote[1]\n footnote: {\n pattern: /\\b\\[\\d+\\]/,\n alias: 'comment',\n inside: {\n punctuation: /\\[|\\]/\n }\n },\n // CSS(Cascading Style Sheet)\n acronym: {\n pattern: /\\b[A-Z\\d]+\\([^)]+\\)/,\n inside: {\n comment: {\n pattern: /(\\()[^()]+(?=\\))/,\n lookbehind: true\n },\n punctuation: /[()]/\n }\n },\n // Prism(C)\n mark: {\n pattern: /\\b\\((?:C|R|TM)\\)/,\n alias: 'comment',\n inside: {\n punctuation: /[()]/\n }\n }\n }\n }\n }))\n var phraseInside = textile['phrase'].inside\n var nestedPatterns = {\n inline: phraseInside['inline'],\n link: phraseInside['link'],\n image: phraseInside['image'],\n footnote: phraseInside['footnote'],\n acronym: phraseInside['acronym'],\n mark: phraseInside['mark']\n }\n\n // Only allow alpha-numeric HTML tags, not XML tags\n textile.tag.pattern =\n /<\\/?(?!\\d)[a-z0-9]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i\n\n // Allow some nesting\n var phraseInlineInside = phraseInside['inline'].inside\n phraseInlineInside['bold'].inside = nestedPatterns\n phraseInlineInside['italic'].inside = nestedPatterns\n phraseInlineInside['inserted'].inside = nestedPatterns\n phraseInlineInside['deleted'].inside = nestedPatterns\n phraseInlineInside['span'].inside = nestedPatterns\n\n // Allow some styles inside table cells\n var phraseTableInside = phraseInside['table'].inside\n phraseTableInside['inline'] = nestedPatterns['inline']\n phraseTableInside['link'] = nestedPatterns['link']\n phraseTableInside['image'] = nestedPatterns['image']\n phraseTableInside['footnote'] = nestedPatterns['footnote']\n phraseTableInside['acronym'] = nestedPatterns['acronym']\n phraseTableInside['mark'] = nestedPatterns['mark']\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorRuby from './ruby.js'\nhaml.displayName = 'haml'\nhaml.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function haml(Prism) {\n Prism.register(refractorRuby)\n /* TODO\nHandle multiline code after tag\n%foo= some |\nmultiline |\ncode |\n*/\n\n ;(function (Prism) {\n Prism.languages.haml = {\n // Multiline stuff should appear before the rest\n\n 'multiline-comment': {\n pattern:\n /((?:^|\\r?\\n|\\r)([\\t ]*))(?:\\/|-#).*(?:(?:\\r?\\n|\\r)\\2[\\t ].+)*/,\n lookbehind: true,\n alias: 'comment'\n },\n 'multiline-code': [\n {\n pattern:\n /((?:^|\\r?\\n|\\r)([\\t ]*)(?:[~-]|[&!]?=)).*,[\\t ]*(?:(?:\\r?\\n|\\r)\\2[\\t ].*,[\\t ]*)*(?:(?:\\r?\\n|\\r)\\2[\\t ].+)/,\n lookbehind: true,\n inside: Prism.languages.ruby\n },\n {\n pattern:\n /((?:^|\\r?\\n|\\r)([\\t ]*)(?:[~-]|[&!]?=)).*\\|[\\t ]*(?:(?:\\r?\\n|\\r)\\2[\\t ].*\\|[\\t ]*)*/,\n lookbehind: true,\n inside: Prism.languages.ruby\n }\n ],\n // See at the end of the file for known filters\n filter: {\n pattern:\n /((?:^|\\r?\\n|\\r)([\\t ]*)):[\\w-]+(?:(?:\\r?\\n|\\r)(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/,\n lookbehind: true,\n inside: {\n 'filter-name': {\n pattern: /^:[\\w-]+/,\n alias: 'symbol'\n }\n }\n },\n markup: {\n pattern: /((?:^|\\r?\\n|\\r)[\\t ]*)<.+/,\n lookbehind: true,\n inside: Prism.languages.markup\n },\n doctype: {\n pattern: /((?:^|\\r?\\n|\\r)[\\t ]*)!!!(?: .+)?/,\n lookbehind: true\n },\n tag: {\n // Allows for one nested group of braces\n pattern:\n /((?:^|\\r?\\n|\\r)[\\t ]*)[%.#][\\w\\-#.]*[\\w\\-](?:\\([^)]+\\)|\\{(?:\\{[^}]+\\}|[^{}])+\\}|\\[[^\\]]+\\])*[\\/<>]*/,\n lookbehind: true,\n inside: {\n attributes: [\n {\n // Lookbehind tries to prevent interpolations from breaking it all\n // Allows for one nested group of braces\n pattern: /(^|[^#])\\{(?:\\{[^}]+\\}|[^{}])+\\}/,\n lookbehind: true,\n inside: Prism.languages.ruby\n },\n {\n pattern: /\\([^)]+\\)/,\n inside: {\n 'attr-value': {\n pattern: /(=\\s*)(?:\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|[^)\\s]+)/,\n lookbehind: true\n },\n 'attr-name': /[\\w:-]+(?=\\s*!?=|\\s*[,)])/,\n punctuation: /[=(),]/\n }\n },\n {\n pattern: /\\[[^\\]]+\\]/,\n inside: Prism.languages.ruby\n }\n ],\n punctuation: /[<>]/\n }\n },\n code: {\n pattern: /((?:^|\\r?\\n|\\r)[\\t ]*(?:[~-]|[&!]?=)).+/,\n lookbehind: true,\n inside: Prism.languages.ruby\n },\n // Interpolations in plain text\n interpolation: {\n pattern: /#\\{[^}]+\\}/,\n inside: {\n delimiter: {\n pattern: /^#\\{|\\}$/,\n alias: 'punctuation'\n },\n ruby: {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages.ruby\n }\n }\n },\n punctuation: {\n pattern: /((?:^|\\r?\\n|\\r)[\\t ]*)[~=\\-&!]+/,\n lookbehind: true\n }\n }\n var filter_pattern =\n '((?:^|\\\\r?\\\\n|\\\\r)([\\\\t ]*)):{{filter_name}}(?:(?:\\\\r?\\\\n|\\\\r)(?:\\\\2[\\\\t ].+|\\\\s*?(?=\\\\r?\\\\n|\\\\r)))+'\n\n // Non exhaustive list of available filters and associated languages\n var filters = [\n 'css',\n {\n filter: 'coffee',\n language: 'coffeescript'\n },\n 'erb',\n 'javascript',\n 'less',\n 'markdown',\n 'ruby',\n 'scss',\n 'textile'\n ]\n var all_filters = {}\n for (var i = 0, l = filters.length; i < l; i++) {\n var filter = filters[i]\n filter =\n typeof filter === 'string'\n ? {\n filter: filter,\n language: filter\n }\n : filter\n if (Prism.languages[filter.language]) {\n all_filters['filter-' + filter.filter] = {\n pattern: RegExp(\n filter_pattern.replace('{{filter_name}}', function () {\n return filter.filter\n })\n ),\n lookbehind: true,\n inside: {\n 'filter-name': {\n pattern: /^:[\\w-]+/,\n alias: 'symbol'\n },\n text: {\n pattern: /[\\s\\S]+/,\n alias: [filter.language, 'language-' + filter.language],\n inside: Prism.languages[filter.language]\n }\n }\n }\n }\n }\n Prism.languages.insertBefore('haml', 'filter', all_filters)\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkupTemplating from './markup-templating.js'\nhandlebars.displayName = 'handlebars'\nhandlebars.aliases = ['hbs', 'mustache']\n\n/** @type {import('../core.js').Syntax} */\nexport default function handlebars(Prism) {\n Prism.register(refractorMarkupTemplating)\n ;(function (Prism) {\n Prism.languages.handlebars = {\n comment: /\\{\\{![\\s\\S]*?\\}\\}/,\n delimiter: {\n pattern: /^\\{\\{\\{?|\\}\\}\\}?$/,\n alias: 'punctuation'\n },\n string: /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n number: /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][+-]?\\d+)?/,\n boolean: /\\b(?:false|true)\\b/,\n block: {\n pattern: /^(\\s*(?:~\\s*)?)[#\\/]\\S+?(?=\\s*(?:~\\s*)?$|\\s)/,\n lookbehind: true,\n alias: 'keyword'\n },\n brackets: {\n pattern: /\\[[^\\]]+\\]/,\n inside: {\n punctuation: /\\[|\\]/,\n variable: /[\\s\\S]+/\n }\n },\n punctuation: /[!\"#%&':()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n variable: /[^!\"#%&'()*+,\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n }\n Prism.hooks.add('before-tokenize', function (env) {\n var handlebarsPattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'handlebars',\n handlebarsPattern\n )\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(\n env,\n 'handlebars'\n )\n })\n Prism.languages.hbs = Prism.languages.handlebars\n Prism.languages.mustache = Prism.languages.handlebars\n })(Prism)\n}\n","// @ts-nocheck\nhaskell.displayName = 'haskell'\nhaskell.aliases = ['hs']\n\n/** @type {import('../core.js').Syntax} */\nexport default function haskell(Prism) {\n Prism.languages.haskell = {\n comment: {\n pattern:\n /(^|[^-!#$%*+=?&@|~.:<>^\\\\\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\\\\\/].*|$)|\\{-[\\s\\S]*?-\\})/m,\n lookbehind: true\n },\n char: {\n pattern:\n /'(?:[^\\\\']|\\\\(?:[abfnrtv\\\\\"'&]|\\^[A-Z@[\\]^_]|ACK|BEL|BS|CAN|CR|DC1|DC2|DC3|DC4|DEL|DLE|EM|ENQ|EOT|ESC|ETB|ETX|FF|FS|GS|HT|LF|NAK|NUL|RS|SI|SO|SOH|SP|STX|SUB|SYN|US|VT|\\d+|o[0-7]+|x[0-9a-fA-F]+))'/,\n alias: 'string'\n },\n string: {\n pattern: /\"(?:[^\\\\\"]|\\\\(?:\\S|\\s+\\\\))*\"/,\n greedy: true\n },\n keyword:\n /\\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\\b/,\n 'import-statement': {\n // The imported or hidden names are not included in this import\n // statement. This is because we want to highlight those exactly like\n // we do for the names in the program.\n pattern:\n /(^[\\t ]*)import\\s+(?:qualified\\s+)?(?:[A-Z][\\w']*)(?:\\.[A-Z][\\w']*)*(?:\\s+as\\s+(?:[A-Z][\\w']*)(?:\\.[A-Z][\\w']*)*)?(?:\\s+hiding\\b)?/m,\n lookbehind: true,\n inside: {\n keyword: /\\b(?:as|hiding|import|qualified)\\b/,\n punctuation: /\\./\n }\n },\n // These are builtin variables only. Constructors are highlighted later as a constant.\n builtin:\n /\\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b/,\n // decimal integers and floating point numbers | octal integers | hexadecimal integers\n number: /\\b(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|0o[0-7]+|0x[0-9a-f]+)\\b/i,\n operator: [\n {\n // infix operator\n pattern: /`(?:[A-Z][\\w']*\\.)*[_a-z][\\w']*`/,\n greedy: true\n },\n {\n // function composition\n pattern: /(\\s)\\.(?=\\s)/,\n lookbehind: true\n },\n // Most of this is needed because of the meaning of a single '.'.\n // If it stands alone freely, it is the function composition.\n // It may also be a separator between a module name and an identifier => no\n // operator. If it comes together with other special characters it is an\n // operator too.\n //\n // This regex means: /[-!#$%*+=?&@|~.:<>^\\\\\\/]+/ without /\\./.\n /[-!#$%*+=?&@|~:<>^\\\\\\/][-!#$%*+=?&@|~.:<>^\\\\\\/]*|\\.[-!#$%*+=?&@|~.:<>^\\\\\\/]+/\n ],\n // In Haskell, nearly everything is a variable, do not highlight these.\n hvariable: {\n pattern: /\\b(?:[A-Z][\\w']*\\.)*[_a-z][\\w']*/,\n inside: {\n punctuation: /\\./\n }\n },\n constant: {\n pattern: /\\b(?:[A-Z][\\w']*\\.)*[A-Z][\\w']*/,\n inside: {\n punctuation: /\\./\n }\n },\n punctuation: /[{}[\\];(),.:]/\n }\n Prism.languages.hs = Prism.languages.haskell\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nhaxe.displayName = 'haxe'\nhaxe.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function haxe(Prism) {\n Prism.register(refractorClike)\n Prism.languages.haxe = Prism.languages.extend('clike', {\n string: {\n // Strings can be multi-line\n pattern: /\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"/,\n greedy: true\n },\n 'class-name': [\n {\n pattern:\n /(\\b(?:abstract|class|enum|extends|implements|interface|new|typedef)\\s+)[A-Z_]\\w*/,\n lookbehind: true\n },\n // based on naming convention\n /\\b[A-Z]\\w*/\n ],\n // The final look-ahead prevents highlighting of keywords if expressions such as \"haxe.macro.Expr\"\n keyword:\n /\\bthis\\b|\\b(?:abstract|as|break|case|cast|catch|class|continue|default|do|dynamic|else|enum|extends|extern|final|for|from|function|if|implements|import|in|inline|interface|macro|new|null|operator|overload|override|package|private|public|return|static|super|switch|throw|to|try|typedef|untyped|using|var|while)(?!\\.)\\b/,\n function: {\n pattern: /\\b[a-z_]\\w*(?=\\s*(?:<[^<>]*>\\s*)?\\()/i,\n greedy: true\n },\n operator: /\\.{3}|\\+\\+|--|&&|\\|\\||->|=>|(?:<<?|>{1,3}|[-+*/%!=&|^])=?|[?:~]/\n })\n Prism.languages.insertBefore('haxe', 'string', {\n 'string-interpolation': {\n pattern: /'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /(^|[^\\\\])\\$(?:\\w+|\\{[^{}]+\\})/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\$\\{?|\\}$/,\n alias: 'punctuation'\n },\n expression: {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages.haxe\n }\n }\n },\n string: /[\\s\\S]+/\n }\n }\n })\n Prism.languages.insertBefore('haxe', 'class-name', {\n regex: {\n pattern: /~\\/(?:[^\\/\\\\\\r\\n]|\\\\.)+\\/[a-z]*/,\n greedy: true,\n inside: {\n 'regex-flags': /\\b[a-z]+$/,\n 'regex-source': {\n pattern: /^(~\\/)[\\s\\S]+(?=\\/$)/,\n lookbehind: true,\n alias: 'language-regex',\n inside: Prism.languages.regex\n },\n 'regex-delimiter': /^~\\/|\\/$/\n }\n }\n })\n Prism.languages.insertBefore('haxe', 'keyword', {\n preprocessor: {\n pattern: /#(?:else|elseif|end|if)\\b.*/,\n alias: 'property'\n },\n metadata: {\n pattern: /@:?[\\w.]+/,\n alias: 'symbol'\n },\n reification: {\n pattern: /\\$(?:\\w+|(?=\\{))/,\n alias: 'important'\n }\n })\n}\n","// @ts-nocheck\nhcl.displayName = 'hcl'\nhcl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function hcl(Prism) {\n Prism.languages.hcl = {\n comment: /(?:\\/\\/|#).*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n heredoc: {\n pattern: /<<-?(\\w+\\b)[\\s\\S]*?^[ \\t]*\\1/m,\n greedy: true,\n alias: 'string'\n },\n keyword: [\n {\n pattern:\n /(?:data|resource)\\s+(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")(?=\\s+\"[\\w-]+\"\\s+\\{)/i,\n inside: {\n type: {\n pattern: /(resource|data|\\s+)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")/i,\n lookbehind: true,\n alias: 'variable'\n }\n }\n },\n {\n pattern:\n /(?:backend|module|output|provider|provisioner|variable)\\s+(?:[\\w-]+|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")\\s+(?=\\{)/i,\n inside: {\n type: {\n pattern:\n /(backend|module|output|provider|provisioner|variable)\\s+(?:[\\w-]+|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")\\s+/i,\n lookbehind: true,\n alias: 'variable'\n }\n }\n },\n /[\\w-]+(?=\\s+\\{)/\n ],\n property: [/[-\\w\\.]+(?=\\s*=(?!=))/, /\"(?:\\\\[\\s\\S]|[^\\\\\"])+\"(?=\\s*[:=])/],\n string: {\n pattern:\n /\"(?:[^\\\\$\"]|\\\\[\\s\\S]|\\$(?:(?=\")|\\$+(?!\\$)|[^\"${])|\\$\\{(?:[^{}\"]|\"(?:[^\\\\\"]|\\\\[\\s\\S])*\")*\\})*\"/,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /(^|[^$])\\$\\{(?:[^{}\"]|\"(?:[^\\\\\"]|\\\\[\\s\\S])*\")*\\}/,\n lookbehind: true,\n inside: {\n type: {\n pattern:\n /(\\b(?:count|data|local|module|path|self|terraform|var)\\b\\.)[\\w\\*]+/i,\n lookbehind: true,\n alias: 'variable'\n },\n keyword: /\\b(?:count|data|local|module|path|self|terraform|var)\\b/i,\n function: /\\w+(?=\\()/,\n string: {\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true\n },\n number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i,\n punctuation: /[!\\$#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~?:]/\n }\n }\n }\n },\n number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i,\n boolean: /\\b(?:false|true)\\b/i,\n punctuation: /[=\\[\\]{}]/\n }\n}\n","// @ts-nocheck\nimport refractorC from './c.js'\nhlsl.displayName = 'hlsl'\nhlsl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function hlsl(Prism) {\n Prism.register(refractorC)\n Prism.languages.hlsl = Prism.languages.extend('c', {\n // Regarding keywords and class names:\n // The list of all keywords was split into 'keyword' and 'class-name' tokens based on whether they are capitalized.\n // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-keywords\n // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-reserved-words\n 'class-name': [\n Prism.languages.c['class-name'],\n /\\b(?:AppendStructuredBuffer|BlendState|Buffer|ByteAddressBuffer|CompileShader|ComputeShader|ConsumeStructuredBuffer|DepthStencilState|DepthStencilView|DomainShader|GeometryShader|Hullshader|InputPatch|LineStream|OutputPatch|PixelShader|PointStream|RWBuffer|RWByteAddressBuffer|RWStructuredBuffer|RWTexture(?:1D|1DArray|2D|2DArray|3D)|RasterizerState|RenderTargetView|SamplerComparisonState|SamplerState|StructuredBuffer|Texture(?:1D|1DArray|2D|2DArray|2DMS|2DMSArray|3D|Cube|CubeArray)|TriangleStream|VertexShader)\\b/\n ],\n keyword: [\n // HLSL keyword\n /\\b(?:asm|asm_fragment|auto|break|case|catch|cbuffer|centroid|char|class|column_major|compile|compile_fragment|const|const_cast|continue|default|delete|discard|do|dynamic_cast|else|enum|explicit|export|extern|for|friend|fxgroup|goto|groupshared|if|in|inline|inout|interface|line|lineadj|linear|long|matrix|mutable|namespace|new|nointerpolation|noperspective|operator|out|packoffset|pass|pixelfragment|point|precise|private|protected|public|register|reinterpret_cast|return|row_major|sample|sampler|shared|short|signed|sizeof|snorm|stateblock|stateblock_state|static|static_cast|string|struct|switch|tbuffer|technique|technique10|technique11|template|texture|this|throw|triangle|triangleadj|try|typedef|typename|uniform|union|unorm|unsigned|using|vector|vertexfragment|virtual|void|volatile|while)\\b/,\n // scalar, vector, and matrix types\n /\\b(?:bool|double|dword|float|half|int|min(?:10float|12int|16(?:float|int|uint))|uint)(?:[1-4](?:x[1-4])?)?\\b/\n ],\n // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-grammar#floating-point-numbers\n number:\n /(?:(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?|\\b0x[\\da-fA-F]+)[fFhHlLuU]?\\b/,\n boolean: /\\b(?:false|true)\\b/\n })\n}\n","// @ts-nocheck\nhoon.displayName = 'hoon'\nhoon.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function hoon(Prism) {\n Prism.languages.hoon = {\n comment: {\n pattern: /::.*/,\n greedy: true\n },\n string: {\n pattern: /\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'/,\n greedy: true\n },\n constant: /%(?:\\.[ny]|[\\w-]+)/,\n 'class-name': /@(?:[a-z0-9-]*[a-z0-9])?|\\*/i,\n function: /(?:\\+[-+] {2})?(?:[a-z](?:[a-z0-9-]*[a-z0-9])?)/,\n keyword:\n /\\.[\\^\\+\\*=\\?]|![><:\\.=\\?!]|=[>|:,\\.\\-\\^<+;/~\\*\\?]|\\?[>|:\\.\\-\\^<\\+&~=@!]|\\|[\\$_%:\\.\\-\\^~\\*=@\\?]|\\+[|\\$\\+\\*]|:[_\\-\\^\\+~\\*]|%[_:\\.\\-\\^\\+~\\*=]|\\^[|:\\.\\-\\+&~\\*=\\?]|\\$[|_%:<>\\-\\^&~@=\\?]|;[:<\\+;\\/~\\*=]|~[>|\\$_%<\\+\\/&=\\?!]|--|==/\n }\n}\n","// @ts-nocheck\nhpkp.displayName = 'hpkp'\nhpkp.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function hpkp(Prism) {\n /**\n * Original by Scott Helme.\n *\n * Reference: https://scotthelme.co.uk/hpkp-cheat-sheet/\n */\n\n Prism.languages.hpkp = {\n directive: {\n pattern:\n /\\b(?:includeSubDomains|max-age|pin-sha256|preload|report-to|report-uri|strict)(?=[\\s;=]|$)/i,\n alias: 'property'\n },\n operator: /=/,\n punctuation: /;/\n }\n}\n","// @ts-nocheck\nhsts.displayName = 'hsts'\nhsts.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function hsts(Prism) {\n /**\n * Original by Scott Helme.\n *\n * Reference: https://scotthelme.co.uk/hsts-cheat-sheet/\n */\n\n Prism.languages.hsts = {\n directive: {\n pattern: /\\b(?:includeSubDomains|max-age|preload)(?=[\\s;=]|$)/i,\n alias: 'property'\n },\n operator: /=/,\n punctuation: /;/\n }\n}\n","// @ts-nocheck\nuri.displayName = 'uri'\nuri.aliases = ['url']\n\n/** @type {import('../core.js').Syntax} */\nexport default function uri(Prism) {\n // https://tools.ietf.org/html/rfc3986#appendix-A\n\n Prism.languages.uri = {\n scheme: {\n pattern: /^[a-z][a-z0-9+.-]*:/im,\n greedy: true,\n inside: {\n 'scheme-delimiter': /:$/\n }\n },\n fragment: {\n pattern: /#[\\w\\-.~!$&'()*+,;=%:@/?]*/,\n inside: {\n 'fragment-delimiter': /^#/\n }\n },\n query: {\n pattern: /\\?[\\w\\-.~!$&'()*+,;=%:@/?]*/,\n inside: {\n 'query-delimiter': {\n pattern: /^\\?/,\n greedy: true\n },\n 'pair-delimiter': /[&;]/,\n pair: {\n pattern: /^[^=][\\s\\S]*/,\n inside: {\n key: /^[^=]+/,\n value: {\n pattern: /(^=)[\\s\\S]+/,\n lookbehind: true\n }\n }\n }\n }\n },\n authority: {\n pattern: RegExp(\n /^\\/\\//.source +\n // [ userinfo \"@\" ]\n /(?:[\\w\\-.~!$&'()*+,;=%:]*@)?/.source +\n // host\n ('(?:' +\n // IP-literal\n /\\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\\.[\\w\\-.~!$&'()*+,;=]+)\\]/\n .source +\n '|' +\n // IPv4address or registered name\n /[\\w\\-.~!$&'()*+,;=%]*/.source +\n ')') +\n // [ \":\" port ]\n /(?::\\d*)?/.source,\n 'm'\n ),\n inside: {\n 'authority-delimiter': /^\\/\\//,\n 'user-info-segment': {\n pattern: /^[\\w\\-.~!$&'()*+,;=%:]*@/,\n inside: {\n 'user-info-delimiter': /@$/,\n 'user-info': /^[\\w\\-.~!$&'()*+,;=%:]+/\n }\n },\n 'port-segment': {\n pattern: /:\\d*$/,\n inside: {\n 'port-delimiter': /^:/,\n port: /^\\d+/\n }\n },\n host: {\n pattern: /[\\s\\S]+/,\n inside: {\n 'ip-literal': {\n pattern: /^\\[[\\s\\S]+\\]$/,\n inside: {\n 'ip-literal-delimiter': /^\\[|\\]$/,\n 'ipv-future': /^v[\\s\\S]+/,\n 'ipv6-address': /^[\\s\\S]+/\n }\n },\n 'ipv4-address':\n /^(?:(?:[03-9]\\d?|[12]\\d{0,2})\\.){3}(?:[03-9]\\d?|[12]\\d{0,2})$/\n }\n }\n }\n },\n path: {\n pattern: /^[\\w\\-.~!$&'()*+,;=%:@/]+/m,\n inside: {\n 'path-separator': /\\//\n }\n }\n }\n Prism.languages.url = Prism.languages.uri\n}\n","// @ts-nocheck\nhttp.displayName = 'http'\nhttp.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function http(Prism) {\n ;(function (Prism) {\n /**\n * @param {string} name\n * @returns {RegExp}\n */\n function headerValueOf(name) {\n return RegExp('(^(?:' + name + '):[ \\t]*(?![ \\t]))[^]+', 'i')\n }\n Prism.languages.http = {\n 'request-line': {\n pattern:\n /^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\\s(?:https?:\\/\\/|\\/)\\S*\\sHTTP\\/[\\d.]+/m,\n inside: {\n // HTTP Method\n method: {\n pattern: /^[A-Z]+\\b/,\n alias: 'property'\n },\n // Request Target e.g. http://example.com, /path/to/file\n 'request-target': {\n pattern: /^(\\s)(?:https?:\\/\\/|\\/)\\S*(?=\\s)/,\n lookbehind: true,\n alias: 'url',\n inside: Prism.languages.uri\n },\n // HTTP Version\n 'http-version': {\n pattern: /^(\\s)HTTP\\/[\\d.]+/,\n lookbehind: true,\n alias: 'property'\n }\n }\n },\n 'response-status': {\n pattern: /^HTTP\\/[\\d.]+ \\d+ .+/m,\n inside: {\n // HTTP Version\n 'http-version': {\n pattern: /^HTTP\\/[\\d.]+/,\n alias: 'property'\n },\n // Status Code\n 'status-code': {\n pattern: /^(\\s)\\d+(?=\\s)/,\n lookbehind: true,\n alias: 'number'\n },\n // Reason Phrase\n 'reason-phrase': {\n pattern: /^(\\s).+/,\n lookbehind: true,\n alias: 'string'\n }\n }\n },\n header: {\n pattern: /^[\\w-]+:.+(?:(?:\\r\\n?|\\n)[ \\t].+)*/m,\n inside: {\n 'header-value': [\n {\n pattern: headerValueOf(/Content-Security-Policy/.source),\n lookbehind: true,\n alias: ['csp', 'languages-csp'],\n inside: Prism.languages.csp\n },\n {\n pattern: headerValueOf(/Public-Key-Pins(?:-Report-Only)?/.source),\n lookbehind: true,\n alias: ['hpkp', 'languages-hpkp'],\n inside: Prism.languages.hpkp\n },\n {\n pattern: headerValueOf(/Strict-Transport-Security/.source),\n lookbehind: true,\n alias: ['hsts', 'languages-hsts'],\n inside: Prism.languages.hsts\n },\n {\n pattern: headerValueOf(/[^:]+/.source),\n lookbehind: true\n }\n ],\n 'header-name': {\n pattern: /^[^:]+/,\n alias: 'keyword'\n },\n punctuation: /^:/\n }\n }\n }\n\n // Create a mapping of Content-Type headers to language definitions\n var langs = Prism.languages\n var httpLanguages = {\n 'application/javascript': langs.javascript,\n 'application/json': langs.json || langs.javascript,\n 'application/xml': langs.xml,\n 'text/xml': langs.xml,\n 'text/html': langs.html,\n 'text/css': langs.css,\n 'text/plain': langs.plain\n }\n\n // Declare which types can also be suffixes\n var suffixTypes = {\n 'application/json': true,\n 'application/xml': true\n }\n\n /**\n * Returns a pattern for the given content type which matches it and any type which has it as a suffix.\n *\n * @param {string} contentType\n * @returns {string}\n */\n function getSuffixPattern(contentType) {\n var suffix = contentType.replace(/^[a-z]+\\//, '')\n var suffixPattern = '\\\\w+/(?:[\\\\w.-]+\\\\+)+' + suffix + '(?![+\\\\w.-])'\n return '(?:' + contentType + '|' + suffixPattern + ')'\n }\n\n // Insert each content type parser that has its associated language\n // currently loaded.\n var options\n for (var contentType in httpLanguages) {\n if (httpLanguages[contentType]) {\n options = options || {}\n var pattern = suffixTypes[contentType]\n ? getSuffixPattern(contentType)\n : contentType\n options[contentType.replace(/\\//g, '-')] = {\n pattern: RegExp(\n '(' +\n /content-type:\\s*/.source +\n pattern +\n /(?:(?:\\r\\n?|\\n)[\\w-].*)*(?:\\r(?:\\n|(?!\\n))|\\n)/.source +\n ')' +\n // This is a little interesting:\n // The HTTP format spec required 1 empty line before the body to make everything unambiguous.\n // However, when writing code by hand (e.g. to display on a website) people can forget about this,\n // so we want to be liberal here. We will allow the empty line to be omitted if the first line of\n // the body does not start with a [\\w-] character (as headers do).\n /[^ \\t\\w-][\\s\\S]*/.source,\n 'i'\n ),\n lookbehind: true,\n inside: httpLanguages[contentType]\n }\n }\n }\n if (options) {\n Prism.languages.insertBefore('http', 'header', options)\n }\n })(Prism)\n}\n","// @ts-nocheck\nichigojam.displayName = 'ichigojam'\nichigojam.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function ichigojam(Prism) {\n // according to the offical reference (EN)\n // https://ichigojam.net/IchigoJam-en.html\n Prism.languages.ichigojam = {\n comment: /(?:\\B'|REM)(?:[^\\n\\r]*)/i,\n string: {\n pattern: /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^\\w +\\-.])*\"/,\n greedy: true\n },\n number: /\\B#[0-9A-F]+|\\B`[01]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n keyword:\n /\\b(?:BEEP|BPS|CASE|CLEAR|CLK|CLO|CLP|CLS|CLT|CLV|CONT|COPY|ELSE|END|FILE|FILES|FOR|GOSUB|GOTO|GSB|IF|INPUT|KBD|LED|LET|LIST|LOAD|LOCATE|LRUN|NEW|NEXT|OUT|PLAY|POKE|PRINT|PWM|REM|RENUM|RESET|RETURN|RIGHT|RTN|RUN|SAVE|SCROLL|SLEEP|SRND|STEP|STOP|SUB|TEMPO|THEN|TO|UART|VIDEO|WAIT)(?:\\$|\\b)/i,\n function:\n /\\b(?:ABS|ANA|ASC|BIN|BTN|DEC|END|FREE|HELP|HEX|I2CR|I2CW|IN|INKEY|LEN|LINE|PEEK|RND|SCR|SOUND|STR|TICK|USR|VER|VPEEK|ZER)(?:\\$|\\b)/i,\n label: /(?:\\B@\\S+)/,\n operator: /<[=>]?|>=?|\\|\\||&&|[+\\-*\\/=|&^~!]|\\b(?:AND|NOT|OR)\\b/i,\n punctuation: /[\\[,;:()\\]]/\n }\n}\n","// @ts-nocheck\nicon.displayName = 'icon'\nicon.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function icon(Prism) {\n Prism.languages.icon = {\n comment: /#.*/,\n string: {\n pattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n_]|\\\\.|_(?!\\1)(?:\\r\\n|[\\s\\S]))*\\1/,\n greedy: true\n },\n number: /\\b(?:\\d+r[a-z\\d]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b|\\.\\d+\\b/i,\n 'builtin-keyword': {\n pattern:\n /&(?:allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error(?:number|text|value)?|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\\b/,\n alias: 'variable'\n },\n directive: {\n pattern: /\\$\\w+/,\n alias: 'builtin'\n },\n keyword:\n /\\b(?:break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\\b/,\n function: /\\b(?!\\d)\\w+(?=\\s*[({]|\\s*!\\s*\\[)/,\n operator:\n /[+-]:(?!=)|(?:[\\/?@^%&]|\\+\\+?|--?|==?=?|~==?=?|\\*\\*?|\\|\\|\\|?|<(?:->?|<?=?)|>>?=?)(?::=)?|:(?:=:?)?|[!.\\\\|~]/,\n punctuation: /[\\[\\](){},;]/\n }\n}\n","// @ts-nocheck\nicuMessageFormat.displayName = 'icu-message-format'\nicuMessageFormat.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function icuMessageFormat(Prism) {\n // https://unicode-org.github.io/icu/userguide/format_parse/messages/\n // https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/MessageFormat.html\n\n ;(function (Prism) {\n /**\n * @param {string} source\n * @param {number} level\n * @returns {string}\n */\n function nested(source, level) {\n if (level <= 0) {\n return /[]/.source\n } else {\n return source.replace(/<SELF>/g, function () {\n return nested(source, level - 1)\n })\n }\n }\n var stringPattern = /'[{}:=,](?:[^']|'')*'(?!')/\n var escape = {\n pattern: /''/,\n greedy: true,\n alias: 'operator'\n }\n var string = {\n pattern: stringPattern,\n greedy: true,\n inside: {\n escape: escape\n }\n }\n var argumentSource = nested(\n /\\{(?:[^{}']|'(?![{},'])|''|<STR>|<SELF>)*\\}/.source.replace(\n /<STR>/g,\n function () {\n return stringPattern.source\n }\n ),\n 8\n )\n var nestedMessage = {\n pattern: RegExp(argumentSource),\n inside: {\n message: {\n pattern: /^(\\{)[\\s\\S]+(?=\\}$)/,\n lookbehind: true,\n inside: null // see below\n },\n\n 'message-delimiter': {\n pattern: /./,\n alias: 'punctuation'\n }\n }\n }\n Prism.languages['icu-message-format'] = {\n argument: {\n pattern: RegExp(argumentSource),\n greedy: true,\n inside: {\n content: {\n pattern: /^(\\{)[\\s\\S]+(?=\\}$)/,\n lookbehind: true,\n inside: {\n 'argument-name': {\n pattern: /^(\\s*)[^{}:=,\\s]+/,\n lookbehind: true\n },\n 'choice-style': {\n // https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1ChoiceFormat.html#details\n pattern: /^(\\s*,\\s*choice\\s*,\\s*)\\S(?:[\\s\\S]*\\S)?/,\n lookbehind: true,\n inside: {\n punctuation: /\\|/,\n range: {\n pattern: /^(\\s*)[+-]?(?:\\d+(?:\\.\\d*)?|\\u221e)\\s*[<#\\u2264]/,\n lookbehind: true,\n inside: {\n operator: /[<#\\u2264]/,\n number: /\\S+/\n }\n },\n rest: null // see below\n }\n },\n\n 'plural-style': {\n // https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/PluralFormat.html#:~:text=Patterns%20and%20Their%20Interpretation\n pattern:\n /^(\\s*,\\s*(?:plural|selectordinal)\\s*,\\s*)\\S(?:[\\s\\S]*\\S)?/,\n lookbehind: true,\n inside: {\n offset: /^offset:\\s*\\d+/,\n 'nested-message': nestedMessage,\n selector: {\n pattern: /=\\d+|[^{}:=,\\s]+/,\n inside: {\n keyword: /^(?:few|many|one|other|two|zero)$/\n }\n }\n }\n },\n 'select-style': {\n // https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/SelectFormat.html#:~:text=Patterns%20and%20Their%20Interpretation\n pattern: /^(\\s*,\\s*select\\s*,\\s*)\\S(?:[\\s\\S]*\\S)?/,\n lookbehind: true,\n inside: {\n 'nested-message': nestedMessage,\n selector: {\n pattern: /[^{}:=,\\s]+/,\n inside: {\n keyword: /^other$/\n }\n }\n }\n },\n keyword: /\\b(?:choice|plural|select|selectordinal)\\b/,\n 'arg-type': {\n pattern: /\\b(?:date|duration|number|ordinal|spellout|time)\\b/,\n alias: 'keyword'\n },\n 'arg-skeleton': {\n pattern: /(,\\s*)::[^{}:=,\\s]+/,\n lookbehind: true\n },\n 'arg-style': {\n pattern:\n /(,\\s*)(?:currency|full|integer|long|medium|percent|short)(?=\\s*$)/,\n lookbehind: true\n },\n 'arg-style-text': {\n pattern: RegExp(\n /(^\\s*,\\s*(?=\\S))/.source +\n nested(/(?:[^{}']|'[^']*'|\\{(?:<SELF>)?\\})+/.source, 8) +\n '$'\n ),\n lookbehind: true,\n alias: 'string'\n },\n punctuation: /,/\n }\n },\n 'argument-delimiter': {\n pattern: /./,\n alias: 'operator'\n }\n }\n },\n escape: escape,\n string: string\n }\n nestedMessage.inside.message.inside = Prism.languages['icu-message-format']\n Prism.languages['icu-message-format'].argument.inside.content.inside[\n 'choice-style'\n ].inside.rest = Prism.languages['icu-message-format']\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorHaskell from './haskell.js'\nidris.displayName = 'idris'\nidris.aliases = ['idr']\n\n/** @type {import('../core.js').Syntax} */\nexport default function idris(Prism) {\n Prism.register(refractorHaskell)\n Prism.languages.idris = Prism.languages.extend('haskell', {\n comment: {\n pattern: /(?:(?:--|\\|\\|\\|).*$|\\{-[\\s\\S]*?-\\})/m\n },\n keyword:\n /\\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\\b/,\n builtin: undefined\n })\n Prism.languages.insertBefore('idris', 'keyword', {\n 'import-statement': {\n pattern: /(^\\s*import\\s+)(?:[A-Z][\\w']*)(?:\\.[A-Z][\\w']*)*/m,\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n }\n })\n Prism.languages.idr = Prism.languages.idris\n}\n","// @ts-nocheck\nignore.displayName = 'ignore'\nignore.aliases = ['gitignore', 'hgignore', 'npmignore']\n\n/** @type {import('../core.js').Syntax} */\nexport default function ignore(Prism) {\n ;(function (Prism) {\n Prism.languages.ignore = {\n // https://git-scm.com/docs/gitignore\n comment: /^#.*/m,\n entry: {\n pattern: /\\S(?:.*(?:(?:\\\\ )|\\S))?/,\n alias: 'string',\n inside: {\n operator: /^!|\\*\\*?|\\?/,\n regex: {\n pattern: /(^|[^\\\\])\\[[^\\[\\]]*\\]/,\n lookbehind: true\n },\n punctuation: /\\//\n }\n }\n }\n Prism.languages.gitignore = Prism.languages.ignore\n Prism.languages.hgignore = Prism.languages.ignore\n Prism.languages.npmignore = Prism.languages.ignore\n })(Prism)\n}\n","// @ts-nocheck\ninform7.displayName = 'inform7'\ninform7.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function inform7(Prism) {\n Prism.languages.inform7 = {\n string: {\n pattern: /\"[^\"]*\"/,\n inside: {\n substitution: {\n pattern: /\\[[^\\[\\]]+\\]/,\n inside: {\n delimiter: {\n pattern: /\\[|\\]/,\n alias: 'punctuation'\n }\n // See rest below\n }\n }\n }\n },\n\n comment: {\n pattern: /\\[[^\\[\\]]+\\]/,\n greedy: true\n },\n title: {\n pattern: /^[ \\t]*(?:book|chapter|part(?! of)|section|table|volume)\\b.+/im,\n alias: 'important'\n },\n number: {\n pattern:\n /(^|[^-])(?:\\b\\d+(?:\\.\\d+)?(?:\\^\\d+)?(?:(?!\\d)\\w+)?|\\b(?:eight|eleven|five|four|nine|one|seven|six|ten|three|twelve|two))\\b(?!-)/i,\n lookbehind: true\n },\n verb: {\n pattern:\n /(^|[^-])\\b(?:answering|applying to|are|asking|attacking|be(?:ing)?|burning|buying|called|carries|carry(?! out)|carrying|climbing|closing|conceal(?:ing|s)?|consulting|contain(?:ing|s)?|cutting|drinking|dropping|eating|enclos(?:es?|ing)|entering|examining|exiting|getting|giving|going|ha(?:s|ve|ving)|hold(?:ing|s)?|impl(?:ies|y)|incorporat(?:es?|ing)|inserting|is|jumping|kissing|listening|locking|looking|mean(?:ing|s)?|opening|provid(?:es?|ing)|pulling|pushing|putting|relat(?:es?|ing)|removing|searching|see(?:ing|s)?|setting|showing|singing|sleeping|smelling|squeezing|support(?:ing|s)?|swearing|switching|taking|tasting|telling|thinking|throwing|touching|turning|tying|unlock(?:ing|s)?|var(?:ies|y|ying)|waiting|waking|waving|wear(?:ing|s)?)\\b(?!-)/i,\n lookbehind: true,\n alias: 'operator'\n },\n keyword: {\n pattern:\n /(^|[^-])\\b(?:after|before|carry out|check|continue the action|definition(?= *:)|do nothing|else|end (?:if|the story|unless)|every turn|if|include|instead(?: of)?|let|move|no|now|otherwise|repeat|report|resume the story|rule for|running through|say(?:ing)?|stop the action|test|try(?:ing)?|understand|unless|use|when|while|yes)\\b(?!-)/i,\n lookbehind: true\n },\n property: {\n pattern:\n /(^|[^-])\\b(?:adjacent(?! to)|carried|closed|concealed|contained|dark|described|edible|empty|enclosed|enterable|even|female|fixed in place|full|handled|held|improper-named|incorporated|inedible|invisible|lighted|lit|lock(?:able|ed)|male|marked for listing|mentioned|negative|neuter|non-(?:empty|full|recurring)|odd|opaque|open(?:able)?|plural-named|portable|positive|privately-named|proper-named|provided|publically-named|pushable between rooms|recurring|related|rubbing|scenery|seen|singular-named|supported|swinging|switch(?:able|ed(?: off| on)?)|touch(?:able|ed)|transparent|unconcealed|undescribed|unlit|unlocked|unmarked for listing|unmentioned|unopenable|untouchable|unvisited|variable|visible|visited|wearable|worn)\\b(?!-)/i,\n lookbehind: true,\n alias: 'symbol'\n },\n position: {\n pattern:\n /(^|[^-])\\b(?:above|adjacent to|back side of|below|between|down|east|everywhere|front side|here|in|inside(?: from)?|north(?:east|west)?|nowhere|on(?: top of)?|other side|outside(?: from)?|parts? of|regionally in|south(?:east|west)?|through|up|west|within)\\b(?!-)/i,\n lookbehind: true,\n alias: 'keyword'\n },\n type: {\n pattern:\n /(^|[^-])\\b(?:actions?|activit(?:ies|y)|actors?|animals?|backdrops?|containers?|devices?|directions?|doors?|holders?|kinds?|lists?|m[ae]n|nobody|nothing|nouns?|numbers?|objects?|people|persons?|player(?:'s holdall)?|regions?|relations?|rooms?|rule(?:book)?s?|scenes?|someone|something|supporters?|tables?|texts?|things?|time|vehicles?|wom[ae]n)\\b(?!-)/i,\n lookbehind: true,\n alias: 'variable'\n },\n punctuation: /[.,:;(){}]/\n }\n Prism.languages.inform7['string'].inside['substitution'].inside.rest =\n Prism.languages.inform7\n // We don't want the remaining text in the substitution to be highlighted as the string.\n Prism.languages.inform7['string'].inside['substitution'].inside.rest.text = {\n pattern: /\\S(?:\\s*\\S)*/,\n alias: 'comment'\n }\n}\n","// @ts-nocheck\nio.displayName = 'io'\nio.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function io(Prism) {\n Prism.languages.io = {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$)|\\/\\/.*|#.*)/,\n lookbehind: true,\n greedy: true\n },\n 'triple-quoted-string': {\n pattern: /\"\"\"(?:\\\\[\\s\\S]|(?!\"\"\")[^\\\\])*\"\"\"/,\n greedy: true,\n alias: 'string'\n },\n string: {\n pattern: /\"(?:\\\\.|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n keyword:\n /\\b(?:activate|activeCoroCount|asString|block|break|call|catch|clone|collectGarbage|compileString|continue|do|doFile|doMessage|doString|else|elseif|exit|for|foreach|forward|getEnvironmentVariable|getSlot|hasSlot|if|ifFalse|ifNil|ifNilEval|ifTrue|isActive|isNil|isResumable|list|message|method|parent|pass|pause|perform|performWithArgList|print|println|proto|raise|raiseResumable|removeSlot|resend|resume|schedulerSleepSeconds|self|sender|setSchedulerSleepSeconds|setSlot|shallowCopy|slotNames|super|system|then|thisBlock|thisContext|try|type|uniqueId|updateSlot|wait|while|write|yield)\\b/,\n builtin:\n /\\b(?:Array|AudioDevice|AudioMixer|BigNum|Block|Box|Buffer|CFunction|CGI|Color|Curses|DBM|DNSResolver|DOConnection|DOProxy|DOServer|Date|Directory|Duration|DynLib|Error|Exception|FFT|File|Fnmatch|Font|Future|GL|GLE|GLScissor|GLU|GLUCylinder|GLUQuadric|GLUSphere|GLUT|Host|Image|Importer|LinkList|List|Lobby|Locals|MD5|MP3Decoder|MP3Encoder|Map|Message|Movie|Notification|Number|Object|OpenGL|Point|Protos|Random|Regex|SGML|SGMLElement|SGMLParser|SQLite|Sequence|Server|ShowMessage|SleepyCat|SleepyCatCursor|Socket|SocketManager|Sound|Soup|Store|String|Tree|UDPSender|UPDReceiver|URL|User|Warning|WeakLink)\\b/,\n boolean: /\\b(?:false|nil|true)\\b/,\n number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e-?\\d+)?/i,\n operator:\n /[=!*/%+\\-^&|]=|>>?=?|<<?=?|:?:?=|\\+\\+?|--?|\\*\\*?|\\/\\/?|%|\\|\\|?|&&?|\\b(?:and|not|or|return)\\b|@@?|\\?\\??|\\.\\./,\n punctuation: /[{}[\\];(),.:]/\n }\n}\n","// @ts-nocheck\nj.displayName = 'j'\nj.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function j(Prism) {\n Prism.languages.j = {\n comment: {\n pattern: /\\bNB\\..*/,\n greedy: true\n },\n string: {\n pattern: /'(?:''|[^'\\r\\n])*'/,\n greedy: true\n },\n keyword:\n /\\b(?:(?:CR|LF|adverb|conjunction|def|define|dyad|monad|noun|verb)\\b|(?:assert|break|case|catch[dt]?|continue|do|else|elseif|end|fcase|for|for_\\w+|goto_\\w+|if|label_\\w+|return|select|throw|try|while|whilst)\\.)/,\n verb: {\n // Negative look-ahead prevents bad highlighting\n // of ^: ;. =. =: !. !:\n pattern:\n /(?!\\^:|;\\.|[=!][.:])(?:\\{(?:\\.|::?)?|p(?:\\.\\.?|:)|[=!\\]]|[<>+*\\-%$|,#][.:]?|[?^]\\.?|[;\\[]:?|[~}\"i][.:]|[ACeEIjLor]\\.|(?:[_\\/\\\\qsux]|_?\\d):)/,\n alias: 'keyword'\n },\n number:\n /\\b_?(?:(?!\\d:)\\d+(?:\\.\\d+)?(?:(?:ad|ar|[ejpx])_?\\d+(?:\\.\\d+)?)*(?:b_?[\\da-z]+(?:\\.[\\da-z]+)?)?|_\\b(?!\\.))/,\n adverb: {\n pattern: /[~}]|[\\/\\\\]\\.?|[bfM]\\.|t[.:]/,\n alias: 'builtin'\n },\n operator: /[=a][.:]|_\\./,\n conjunction: {\n pattern: /&(?:\\.:?|:)?|[.:@][.:]?|[!D][.:]|[;dHT]\\.|`:?|[\\^LS]:|\"/,\n alias: 'variable'\n },\n punctuation: /[()]/\n }\n}\n","// @ts-nocheck\njavadoclike.displayName = 'javadoclike'\njavadoclike.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function javadoclike(Prism) {\n ;(function (Prism) {\n var javaDocLike = (Prism.languages.javadoclike = {\n parameter: {\n pattern:\n /(^[\\t ]*(?:\\/{3}|\\*|\\/\\*\\*)\\s*@(?:arg|arguments|param)\\s+)\\w+/m,\n lookbehind: true\n },\n keyword: {\n // keywords are the first word in a line preceded be an `@` or surrounded by curly braces.\n // @word, {@word}\n pattern: /(^[\\t ]*(?:\\/{3}|\\*|\\/\\*\\*)\\s*|\\{)@[a-z][a-zA-Z-]+\\b/m,\n lookbehind: true\n },\n punctuation: /[{}]/\n })\n\n /**\n * Adds doc comment support to the given language and calls a given callback on each doc comment pattern.\n *\n * @param {string} lang the language add doc comment support to.\n * @param {(pattern: {inside: {rest: undefined}}) => void} callback the function called with each doc comment pattern as argument.\n */\n function docCommentSupport(lang, callback) {\n var tokenName = 'doc-comment'\n var grammar = Prism.languages[lang]\n if (!grammar) {\n return\n }\n var token = grammar[tokenName]\n if (!token) {\n // add doc comment: /** */\n var definition = {}\n definition[tokenName] = {\n pattern: /(^|[^\\\\])\\/\\*\\*[^/][\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true,\n alias: 'comment'\n }\n grammar = Prism.languages.insertBefore(lang, 'comment', definition)\n token = grammar[tokenName]\n }\n if (token instanceof RegExp) {\n // convert regex to object\n token = grammar[tokenName] = {\n pattern: token\n }\n }\n if (Array.isArray(token)) {\n for (var i = 0, l = token.length; i < l; i++) {\n if (token[i] instanceof RegExp) {\n token[i] = {\n pattern: token[i]\n }\n }\n callback(token[i])\n }\n } else {\n callback(token)\n }\n }\n\n /**\n * Adds doc-comment support to the given languages for the given documentation language.\n *\n * @param {string[]|string} languages\n * @param {Object} docLanguage\n */\n function addSupport(languages, docLanguage) {\n if (typeof languages === 'string') {\n languages = [languages]\n }\n languages.forEach(function (lang) {\n docCommentSupport(lang, function (pattern) {\n if (!pattern.inside) {\n pattern.inside = {}\n }\n pattern.inside.rest = docLanguage\n })\n })\n }\n Object.defineProperty(javaDocLike, 'addSupport', {\n value: addSupport\n })\n javaDocLike.addSupport(['java', 'javascript', 'php'], javaDocLike)\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJava from './java.js'\nscala.displayName = 'scala'\nscala.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function scala(Prism) {\n Prism.register(refractorJava)\n Prism.languages.scala = Prism.languages.extend('java', {\n 'triple-quoted-string': {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: 'string'\n },\n string: {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n keyword:\n /<-|=>|\\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\\b/,\n number:\n /\\b0x(?:[\\da-f]*\\.)?[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e\\d+)?[dfl]?/i,\n builtin:\n /\\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\\b/,\n symbol: /'[^\\d\\s\\\\]\\w*/\n })\n Prism.languages.insertBefore('scala', 'triple-quoted-string', {\n 'string-interpolation': {\n pattern:\n /\\b[a-z]\\w*(?:\"\"\"(?:[^$]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*?\"\"\"|\"(?:[^$\"\\r\\n]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*\")/i,\n greedy: true,\n inside: {\n id: {\n pattern: /^\\w+/,\n greedy: true,\n alias: 'function'\n },\n escape: {\n pattern: /\\\\\\$\"|\\$[$\"]/,\n greedy: true,\n alias: 'symbol'\n },\n interpolation: {\n pattern: /\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,\n greedy: true,\n inside: {\n punctuation: /^\\$\\{?|\\}$/,\n expression: {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages.scala\n }\n }\n },\n string: /[\\s\\S]+/\n }\n }\n })\n delete Prism.languages.scala['class-name']\n delete Prism.languages.scala['function']\n delete Prism.languages.scala['constant']\n}\n","// @ts-nocheck\nimport refractorJava from './java.js'\nimport refractorJavadoclike from './javadoclike.js'\nimport refractorMarkup from './markup.js'\njavadoc.displayName = 'javadoc'\njavadoc.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function javadoc(Prism) {\n Prism.register(refractorJava)\n Prism.register(refractorJavadoclike)\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n var codeLinePattern = /(^(?:[\\t ]*(?:\\*\\s*)*))[^*\\s].*$/m\n var memberReference = /#\\s*\\w+(?:\\s*\\([^()]*\\))?/.source\n var reference =\n /(?:\\b[a-zA-Z]\\w+\\s*\\.\\s*)*\\b[A-Z]\\w*(?:\\s*<mem>)?|<mem>/.source.replace(\n /<mem>/g,\n function () {\n return memberReference\n }\n )\n Prism.languages.javadoc = Prism.languages.extend('javadoclike', {})\n Prism.languages.insertBefore('javadoc', 'keyword', {\n reference: {\n pattern: RegExp(\n /(@(?:exception|link|linkplain|see|throws|value)\\s+(?:\\*\\s*)?)/\n .source +\n '(?:' +\n reference +\n ')'\n ),\n lookbehind: true,\n inside: {\n function: {\n pattern: /(#\\s*)\\w+(?=\\s*\\()/,\n lookbehind: true\n },\n field: {\n pattern: /(#\\s*)\\w+/,\n lookbehind: true\n },\n namespace: {\n pattern: /\\b(?:[a-z]\\w*\\s*\\.\\s*)+/,\n inside: {\n punctuation: /\\./\n }\n },\n 'class-name': /\\b[A-Z]\\w*/,\n keyword: Prism.languages.java.keyword,\n punctuation: /[#()[\\],.]/\n }\n },\n 'class-name': {\n // @param <T> the first generic type parameter\n pattern: /(@param\\s+)<[A-Z]\\w*>/,\n lookbehind: true,\n inside: {\n punctuation: /[.<>]/\n }\n },\n 'code-section': [\n {\n pattern:\n /(\\{@code\\s+(?!\\s))(?:[^\\s{}]|\\s+(?![\\s}])|\\{(?:[^{}]|\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\\})+(?=\\s*\\})/,\n lookbehind: true,\n inside: {\n code: {\n // there can't be any HTML inside of {@code} tags\n pattern: codeLinePattern,\n lookbehind: true,\n inside: Prism.languages.java,\n alias: 'language-java'\n }\n }\n },\n {\n pattern:\n /(<(code|pre|tt)>(?!<code>)\\s*)\\S(?:\\S|\\s+\\S)*?(?=\\s*<\\/\\2>)/,\n lookbehind: true,\n inside: {\n line: {\n pattern: codeLinePattern,\n lookbehind: true,\n inside: {\n // highlight HTML tags and entities\n tag: Prism.languages.markup.tag,\n entity: Prism.languages.markup.entity,\n code: {\n // everything else is Java code\n pattern: /.+/,\n inside: Prism.languages.java,\n alias: 'language-java'\n }\n }\n }\n }\n }\n ],\n tag: Prism.languages.markup.tag,\n entity: Prism.languages.markup.entity\n })\n Prism.languages.javadoclike.addSupport('java', Prism.languages.javadoc)\n })(Prism)\n}\n","// @ts-nocheck\njavastacktrace.displayName = 'javastacktrace'\njavastacktrace.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function javastacktrace(Prism) {\n // Specification:\n // https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Throwable.html#printStackTrace()\n\n Prism.languages.javastacktrace = {\n // java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]\n // Caused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]\n // Caused by: com.example.myproject.MyProjectServletException\n // Caused by: MidLevelException: LowLevelException\n // Suppressed: Resource$CloseFailException: Resource ID = 0\n summary: {\n pattern:\n /^([\\t ]*)(?:(?:Caused by:|Suppressed:|Exception in thread \"[^\"]*\")[\\t ]+)?[\\w$.]+(?::.*)?$/m,\n lookbehind: true,\n inside: {\n keyword: {\n pattern:\n /^([\\t ]*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m,\n lookbehind: true\n },\n // the current thread if the summary starts with 'Exception in thread'\n string: {\n pattern: /^(\\s*)\"[^\"]*\"/,\n lookbehind: true\n },\n exceptions: {\n pattern: /^(:?\\s*)[\\w$.]+(?=:|$)/,\n lookbehind: true,\n inside: {\n 'class-name': /[\\w$]+$/,\n namespace: /\\b[a-z]\\w*\\b/,\n punctuation: /\\./\n }\n },\n message: {\n pattern: /(:\\s*)\\S.*/,\n lookbehind: true,\n alias: 'string'\n },\n punctuation: /:/\n }\n },\n // at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)\n // at org.hsqldb.jdbc.Util.throwError(Unknown Source) here could be some notes\n // at java.base/java.lang.Class.forName0(Native Method)\n // at Util.<init>(Unknown Source)\n // at com.foo.loader/foo@9.0/com.foo.Main.run(Main.java:101)\n // at com.foo.loader//com.foo.bar.App.run(App.java:12)\n // at acme@2.1/org.acme.Lib.test(Lib.java:80)\n // at MyClass.mash(MyClass.java:9)\n //\n // More information:\n // https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/StackTraceElement.html#toString()\n //\n // A valid Java module name is defined as:\n // \"A module name consists of one or more Java identifiers (§3.8) separated by \".\" tokens.\"\n // https://docs.oracle.com/javase/specs/jls/se9/html/jls-6.html#jls-ModuleName\n //\n // A Java module version is defined by this class:\n // https://docs.oracle.com/javase/9/docs/api/java/lang/module/ModuleDescriptor.Version.html\n // This is the implementation of the `parse` method in JDK13:\n // https://github.com/matcdac/jdk/blob/2305df71d1b7710266ae0956d73927a225132c0f/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java#L1108\n // However, to keep this simple, a version will be matched by the pattern /@[\\w$.+-]*/.\n 'stack-frame': {\n pattern: /^([\\t ]*)at (?:[\\w$./]|@[\\w$.+-]*\\/)+(?:<init>)?\\([^()]*\\)/m,\n lookbehind: true,\n inside: {\n keyword: {\n pattern: /^(\\s*)at(?= )/,\n lookbehind: true\n },\n source: [\n // (Main.java:15)\n // (Main.scala:15)\n {\n pattern: /(\\()\\w+\\.\\w+:\\d+(?=\\))/,\n lookbehind: true,\n inside: {\n file: /^\\w+\\.\\w+/,\n punctuation: /:/,\n 'line-number': {\n pattern: /\\b\\d+\\b/,\n alias: 'number'\n }\n }\n },\n // (Unknown Source)\n // (Native Method)\n // (...something...)\n {\n pattern: /(\\()[^()]*(?=\\))/,\n lookbehind: true,\n inside: {\n keyword: /^(?:Native Method|Unknown Source)$/\n }\n }\n ],\n 'class-name': /[\\w$]+(?=\\.(?:<init>|[\\w$]+)\\()/,\n function: /(?:<init>|[\\w$]+)(?=\\()/,\n 'class-loader': {\n pattern: /(\\s)[a-z]\\w*(?:\\.[a-z]\\w*)*(?=\\/[\\w@$.]*\\/)/,\n lookbehind: true,\n alias: 'namespace',\n inside: {\n punctuation: /\\./\n }\n },\n module: {\n pattern: /([\\s/])[a-z]\\w*(?:\\.[a-z]\\w*)*(?:@[\\w$.+-]*)?(?=\\/)/,\n lookbehind: true,\n inside: {\n version: {\n pattern: /(@)[\\s\\S]+/,\n lookbehind: true,\n alias: 'number'\n },\n punctuation: /[@.]/\n }\n },\n namespace: {\n pattern: /(?:\\b[a-z]\\w*\\.)+/,\n inside: {\n punctuation: /\\./\n }\n },\n punctuation: /[()/.]/\n }\n },\n // ... 32 more\n // ... 32 common frames omitted\n more: {\n pattern: /^([\\t ]*)\\.{3} \\d+ [a-z]+(?: [a-z]+)*/m,\n lookbehind: true,\n inside: {\n punctuation: /\\.{3}/,\n number: /\\d+/,\n keyword: /\\b[a-z]+(?: [a-z]+)*\\b/\n }\n }\n }\n}\n","// @ts-nocheck\njexl.displayName = 'jexl'\njexl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function jexl(Prism) {\n Prism.languages.jexl = {\n string: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n transform: {\n pattern:\n /(\\|\\s*)[a-zA-Zа-яА-Я_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$][\\wа-яА-Я\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$]*/,\n alias: 'function',\n lookbehind: true\n },\n function:\n /[a-zA-Zа-яА-Я_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$][\\wа-яА-Я\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$]*\\s*(?=\\()/,\n number: /\\b\\d+(?:\\.\\d+)?\\b|\\B\\.\\d+\\b/,\n operator: /[<>!]=?|-|\\+|&&|==|\\|\\|?|\\/\\/?|[?:*^%]/,\n boolean: /\\b(?:false|true)\\b/,\n keyword: /\\bin\\b/,\n punctuation: /[{}[\\](),.]/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\njolie.displayName = 'jolie'\njolie.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function jolie(Prism) {\n Prism.register(refractorClike)\n Prism.languages.jolie = Prism.languages.extend('clike', {\n string: {\n pattern: /(^|[^\\\\])\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n lookbehind: true,\n greedy: true\n },\n 'class-name': {\n pattern:\n /((?:\\b(?:as|courier|embed|in|inputPort|outputPort|service)\\b|@)[ \\t]*)\\w+/,\n lookbehind: true\n },\n keyword:\n /\\b(?:as|cH|comp|concurrent|constants|courier|cset|csets|default|define|else|embed|embedded|execution|exit|extender|for|foreach|forward|from|global|if|import|in|include|init|inputPort|install|instanceof|interface|is_defined|linkIn|linkOut|main|new|nullProcess|outputPort|over|private|provide|public|scope|sequential|service|single|spawn|synchronized|this|throw|throws|type|undef|until|while|with)\\b/,\n function: /\\b[a-z_]\\w*(?=[ \\t]*[@(])/i,\n number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?l?/i,\n operator: /-[-=>]?|\\+[+=]?|<[<=]?|[>=*!]=?|&&|\\|\\||[?\\/%^@|]/,\n punctuation: /[()[\\]{},;.:]/,\n builtin:\n /\\b(?:Byte|any|bool|char|double|enum|float|int|length|long|ranges|regex|string|undefined|void)\\b/\n })\n Prism.languages.insertBefore('jolie', 'keyword', {\n aggregates: {\n pattern:\n /(\\bAggregates\\s*:\\s*)(?:\\w+(?:\\s+with\\s+\\w+)?\\s*,\\s*)*\\w+(?:\\s+with\\s+\\w+)?/,\n lookbehind: true,\n inside: {\n keyword: /\\bwith\\b/,\n 'class-name': /\\w+/,\n punctuation: /,/\n }\n },\n redirects: {\n pattern:\n /(\\bRedirects\\s*:\\s*)(?:\\w+\\s*=>\\s*\\w+\\s*,\\s*)*(?:\\w+\\s*=>\\s*\\w+)/,\n lookbehind: true,\n inside: {\n punctuation: /,/,\n 'class-name': /\\w+/,\n operator: /=>/\n }\n },\n property: {\n pattern:\n /\\b(?:Aggregates|[Ii]nterfaces|Java|Javascript|Jolie|[Ll]ocation|OneWay|[Pp]rotocol|Redirects|RequestResponse)\\b(?=[ \\t]*:)/\n }\n })\n}\n","// @ts-nocheck\njq.displayName = 'jq'\njq.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function jq(Prism) {\n ;(function (Prism) {\n var interpolation = /\\\\\\((?:[^()]|\\([^()]*\\))*\\)/.source\n var string = RegExp(\n /(^|[^\\\\])\"(?:[^\"\\r\\n\\\\]|\\\\[^\\r\\n(]|__)*\"/.source.replace(\n /__/g,\n function () {\n return interpolation\n }\n )\n )\n var stringInterpolation = {\n interpolation: {\n pattern: RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + interpolation),\n lookbehind: true,\n inside: {\n content: {\n pattern: /^(\\\\\\()[\\s\\S]+(?=\\)$)/,\n lookbehind: true,\n inside: null // see below\n },\n\n punctuation: /^\\\\\\(|\\)$/\n }\n }\n }\n var jq = (Prism.languages.jq = {\n comment: /#.*/,\n property: {\n pattern: RegExp(string.source + /(?=\\s*:(?!:))/.source),\n lookbehind: true,\n greedy: true,\n inside: stringInterpolation\n },\n string: {\n pattern: string,\n lookbehind: true,\n greedy: true,\n inside: stringInterpolation\n },\n function: {\n pattern: /(\\bdef\\s+)[a-z_]\\w+/i,\n lookbehind: true\n },\n variable: /\\B\\$\\w+/,\n 'property-literal': {\n pattern: /\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n alias: 'property'\n },\n keyword:\n /\\b(?:as|break|catch|def|elif|else|end|foreach|if|import|include|label|module|modulemeta|null|reduce|then|try|while)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n number: /(?:\\b\\d+\\.|\\B\\.)?\\b\\d+(?:[eE][+-]?\\d+)?\\b/,\n operator: [\n {\n pattern: /\\|=?/,\n alias: 'pipe'\n },\n /\\.\\.|[!=<>]?=|\\?\\/\\/|\\/\\/=?|[-+*/%]=?|[<>?]|\\b(?:and|not|or)\\b/\n ],\n 'c-style-function': {\n pattern: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n alias: 'function'\n },\n punctuation: /::|[()\\[\\]{},:;]|\\.(?=\\s*[\\[\\w$])/,\n dot: {\n pattern: /\\./,\n alias: 'important'\n }\n })\n stringInterpolation.interpolation.inside.content.inside = jq\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\njsTemplates.displayName = 'js-templates'\njsTemplates.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function jsTemplates(Prism) {\n Prism.register(refractorJavascript)\n ;(function (Prism) {\n var templateString = Prism.languages.javascript['template-string']\n\n // see the pattern in prism-javascript.js\n var templateLiteralPattern = templateString.pattern.source\n var interpolationObject = templateString.inside['interpolation']\n var interpolationPunctuationObject =\n interpolationObject.inside['interpolation-punctuation']\n var interpolationPattern = interpolationObject.pattern.source\n\n /**\n * Creates a new pattern to match a template string with a special tag.\n *\n * This will return `undefined` if there is no grammar with the given language id.\n *\n * @param {string} language The language id of the embedded language. E.g. `markdown`.\n * @param {string} tag The regex pattern to match the tag.\n * @returns {object | undefined}\n * @example\n * createTemplate('css', /\\bcss/.source);\n */\n function createTemplate(language, tag) {\n if (!Prism.languages[language]) {\n return undefined\n }\n return {\n pattern: RegExp('((?:' + tag + ')\\\\s*)' + templateLiteralPattern),\n lookbehind: true,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'embedded-code': {\n pattern: /[\\s\\S]+/,\n alias: language\n }\n }\n }\n }\n Prism.languages.javascript['template-string'] = [\n // styled-jsx:\n // css`a { color: #25F; }`\n // styled-components:\n // styled.h1`color: red;`\n createTemplate(\n 'css',\n /\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)/\n .source\n ),\n // html`<p></p>`\n // div.innerHTML = `<p></p>`\n createTemplate('html', /\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=/.source),\n // svg`<path fill=\"#fff\" d=\"M55.37 ...\"/>`\n createTemplate('svg', /\\bsvg/.source),\n // md`# h1`, markdown`## h2`\n createTemplate('markdown', /\\b(?:markdown|md)/.source),\n // gql`...`, graphql`...`, graphql.experimental`...`\n createTemplate(\n 'graphql',\n /\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)/.source\n ),\n // sql`...`\n createTemplate('sql', /\\bsql/.source),\n // vanilla template string\n templateString\n ].filter(Boolean)\n\n /**\n * Returns a specific placeholder literal for the given language.\n *\n * @param {number} counter\n * @param {string} language\n * @returns {string}\n */\n function getPlaceholder(counter, language) {\n return '___' + language.toUpperCase() + '_' + counter + '___'\n }\n\n /**\n * Returns the tokens of `Prism.tokenize` but also runs the `before-tokenize` and `after-tokenize` hooks.\n *\n * @param {string} code\n * @param {any} grammar\n * @param {string} language\n * @returns {(string|Token)[]}\n */\n function tokenizeWithHooks(code, grammar, language) {\n var env = {\n code: code,\n grammar: grammar,\n language: language\n }\n Prism.hooks.run('before-tokenize', env)\n env.tokens = Prism.tokenize(env.code, env.grammar)\n Prism.hooks.run('after-tokenize', env)\n return env.tokens\n }\n\n /**\n * Returns the token of the given JavaScript interpolation expression.\n *\n * @param {string} expression The code of the expression. E.g. `\"${42}\"`\n * @returns {Token}\n */\n function tokenizeInterpolationExpression(expression) {\n var tempGrammar = {}\n tempGrammar['interpolation-punctuation'] = interpolationPunctuationObject\n\n /** @type {Array} */\n var tokens = Prism.tokenize(expression, tempGrammar)\n if (tokens.length === 3) {\n /**\n * The token array will look like this\n * [\n * [\"interpolation-punctuation\", \"${\"]\n * \"...\" // JavaScript expression of the interpolation\n * [\"interpolation-punctuation\", \"}\"]\n * ]\n */\n\n var args = [1, 1]\n args.push.apply(\n args,\n tokenizeWithHooks(tokens[1], Prism.languages.javascript, 'javascript')\n )\n tokens.splice.apply(tokens, args)\n }\n return new Prism.Token(\n 'interpolation',\n tokens,\n interpolationObject.alias,\n expression\n )\n }\n\n /**\n * Tokenizes the given code with support for JavaScript interpolation expressions mixed in.\n *\n * This function has 3 phases:\n *\n * 1. Replace all JavaScript interpolation expression with a placeholder.\n * The placeholder will have the syntax of a identify of the target language.\n * 2. Tokenize the code with placeholders.\n * 3. Tokenize the interpolation expressions and re-insert them into the tokenize code.\n * The insertion only works if a placeholder hasn't been \"ripped apart\" meaning that the placeholder has been\n * tokenized as two tokens by the grammar of the embedded language.\n *\n * @param {string} code\n * @param {object} grammar\n * @param {string} language\n * @returns {Token}\n */\n function tokenizeEmbedded(code, grammar, language) {\n // 1. First filter out all interpolations\n\n // because they might be escaped, we need a lookbehind, so we use Prism\n /** @type {(Token|string)[]} */\n var _tokens = Prism.tokenize(code, {\n interpolation: {\n pattern: RegExp(interpolationPattern),\n lookbehind: true\n }\n })\n\n // replace all interpolations with a placeholder which is not in the code already\n var placeholderCounter = 0\n /** @type {Object<string, string>} */\n var placeholderMap = {}\n var embeddedCode = _tokens\n .map(function (token) {\n if (typeof token === 'string') {\n return token\n } else {\n var interpolationExpression = token.content\n var placeholder\n while (\n code.indexOf(\n (placeholder = getPlaceholder(placeholderCounter++, language))\n ) !== -1\n ) {\n /* noop */\n }\n placeholderMap[placeholder] = interpolationExpression\n return placeholder\n }\n })\n .join('')\n\n // 2. Tokenize the embedded code\n\n var embeddedTokens = tokenizeWithHooks(embeddedCode, grammar, language)\n\n // 3. Re-insert the interpolation\n\n var placeholders = Object.keys(placeholderMap)\n placeholderCounter = 0\n\n /**\n *\n * @param {(Token|string)[]} tokens\n * @returns {void}\n */\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n if (placeholderCounter >= placeholders.length) {\n return\n }\n var token = tokens[i]\n if (typeof token === 'string' || typeof token.content === 'string') {\n var placeholder = placeholders[placeholderCounter]\n var s =\n typeof token === 'string'\n ? token\n : /** @type {string} */ token.content\n var index = s.indexOf(placeholder)\n if (index !== -1) {\n ++placeholderCounter\n var before = s.substring(0, index)\n var middle = tokenizeInterpolationExpression(\n placeholderMap[placeholder]\n )\n var after = s.substring(index + placeholder.length)\n var replacement = []\n if (before) {\n replacement.push(before)\n }\n replacement.push(middle)\n if (after) {\n var afterTokens = [after]\n walkTokens(afterTokens)\n replacement.push.apply(replacement, afterTokens)\n }\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement))\n i += replacement.length - 1\n } else {\n token.content = replacement\n }\n }\n } else {\n var content = token.content\n if (Array.isArray(content)) {\n walkTokens(content)\n } else {\n walkTokens([content])\n }\n }\n }\n }\n walkTokens(embeddedTokens)\n return new Prism.Token(\n language,\n embeddedTokens,\n 'language-' + language,\n code\n )\n }\n\n /**\n * The languages for which JS templating will handle tagged template literals.\n *\n * JS templating isn't active for only JavaScript but also related languages like TypeScript, JSX, and TSX.\n */\n var supportedLanguages = {\n javascript: true,\n js: true,\n typescript: true,\n ts: true,\n jsx: true,\n tsx: true\n }\n Prism.hooks.add('after-tokenize', function (env) {\n if (!(env.language in supportedLanguages)) {\n return\n }\n\n /**\n * Finds and tokenizes all template strings with an embedded languages.\n *\n * @param {(Token | string)[]} tokens\n * @returns {void}\n */\n function findTemplateStrings(tokens) {\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i]\n if (typeof token === 'string') {\n continue\n }\n var content = token.content\n if (!Array.isArray(content)) {\n if (typeof content !== 'string') {\n findTemplateStrings([content])\n }\n continue\n }\n if (token.type === 'template-string') {\n /**\n * A JavaScript template-string token will look like this:\n *\n * [\"template-string\", [\n * [\"template-punctuation\", \"`\"],\n * (\n * An array of \"string\" and \"interpolation\" tokens. This is the simple string case.\n * or\n * [\"embedded-code\", \"...\"] This is the token containing the embedded code.\n * It also has an alias which is the language of the embedded code.\n * ),\n * [\"template-punctuation\", \"`\"]\n * ]]\n */\n\n var embedded = content[1]\n if (\n content.length === 3 &&\n typeof embedded !== 'string' &&\n embedded.type === 'embedded-code'\n ) {\n // get string content\n var code = stringContent(embedded)\n var alias = embedded.alias\n var language = Array.isArray(alias) ? alias[0] : alias\n var grammar = Prism.languages[language]\n if (!grammar) {\n // the embedded language isn't registered.\n continue\n }\n content[1] = tokenizeEmbedded(code, grammar, language)\n }\n } else {\n findTemplateStrings(content)\n }\n }\n }\n findTemplateStrings(env.tokens)\n })\n\n /**\n * Returns the string content of a token or token stream.\n *\n * @param {string | Token | (string | Token)[]} value\n * @returns {string}\n */\n function stringContent(value) {\n if (typeof value === 'string') {\n return value\n } else if (Array.isArray(value)) {\n return value.map(stringContent).join('')\n } else {\n return stringContent(value.content)\n }\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJavadoclike from './javadoclike.js'\nimport refractorJavascript from './javascript.js'\nimport refractorTypescript from './typescript.js'\njsdoc.displayName = 'jsdoc'\njsdoc.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function jsdoc(Prism) {\n Prism.register(refractorJavadoclike)\n Prism.register(refractorJavascript)\n Prism.register(refractorTypescript)\n ;(function (Prism) {\n var javascript = Prism.languages.javascript\n var type = /\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})+\\}/.source\n var parameterPrefix =\n '(@(?:arg|argument|param|property)\\\\s+(?:' + type + '\\\\s+)?)'\n Prism.languages.jsdoc = Prism.languages.extend('javadoclike', {\n parameter: {\n // @param {string} foo - foo bar\n pattern: RegExp(\n parameterPrefix + /(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?=\\s|$)/.source\n ),\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n }\n })\n Prism.languages.insertBefore('jsdoc', 'keyword', {\n 'optional-parameter': {\n // @param {string} [baz.foo=\"bar\"] foo bar\n pattern: RegExp(\n parameterPrefix +\n /\\[(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?:=[^[\\]]+)?\\](?=\\s|$)/.source\n ),\n lookbehind: true,\n inside: {\n parameter: {\n pattern: /(^\\[)[$\\w\\xA0-\\uFFFF\\.]+/,\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n },\n code: {\n pattern: /(=)[\\s\\S]*(?=\\]$)/,\n lookbehind: true,\n inside: javascript,\n alias: 'language-javascript'\n },\n punctuation: /[=[\\]]/\n }\n },\n 'class-name': [\n {\n pattern: RegExp(\n /(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\\s+(?:<TYPE>\\s+)?)[A-Z]\\w*(?:\\.[A-Z]\\w*)*/.source.replace(\n /<TYPE>/g,\n function () {\n return type\n }\n )\n ),\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n },\n {\n pattern: RegExp('(@[a-z]+\\\\s+)' + type),\n lookbehind: true,\n inside: {\n string: javascript.string,\n number: javascript.number,\n boolean: javascript.boolean,\n keyword: Prism.languages.typescript.keyword,\n operator: /=>|\\.\\.\\.|[&|?:*]/,\n punctuation: /[.,;=<>{}()[\\]]/\n }\n }\n ],\n example: {\n pattern:\n /(@example\\s+(?!\\s))(?:[^@\\s]|\\s+(?!\\s))+?(?=\\s*(?:\\*\\s*)?(?:@\\w|\\*\\/))/,\n lookbehind: true,\n inside: {\n code: {\n pattern: /^([\\t ]*(?:\\*\\s*)?)\\S.*$/m,\n lookbehind: true,\n inside: javascript,\n alias: 'language-javascript'\n }\n }\n }\n })\n Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc)\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\nn4js.displayName = 'n4js'\nn4js.aliases = ['n4jsd']\n\n/** @type {import('../core.js').Syntax} */\nexport default function n4js(Prism) {\n Prism.register(refractorJavascript)\n Prism.languages.n4js = Prism.languages.extend('javascript', {\n // Keywords from N4JS language spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html\n keyword:\n /\\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\\b/\n })\n Prism.languages.insertBefore('n4js', 'constant', {\n // Annotations in N4JS spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html#_annotations\n annotation: {\n pattern: /@+\\w+/,\n alias: 'operator'\n }\n })\n Prism.languages.n4jsd = Prism.languages.n4js\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\njsExtras.displayName = 'js-extras'\njsExtras.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function jsExtras(Prism) {\n Prism.register(refractorJavascript)\n ;(function (Prism) {\n Prism.languages.insertBefore('javascript', 'function-variable', {\n 'method-variable': {\n pattern: RegExp(\n '(\\\\.\\\\s*)' +\n Prism.languages.javascript['function-variable'].pattern.source\n ),\n lookbehind: true,\n alias: ['function-variable', 'method', 'function', 'property-access']\n }\n })\n Prism.languages.insertBefore('javascript', 'function', {\n method: {\n pattern: RegExp(\n '(\\\\.\\\\s*)' + Prism.languages.javascript['function'].source\n ),\n lookbehind: true,\n alias: ['function', 'property-access']\n }\n })\n Prism.languages.insertBefore('javascript', 'constant', {\n 'known-class-name': [\n {\n // standard built-ins\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\n pattern:\n /\\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\\b/,\n alias: 'class-name'\n },\n {\n // errors\n pattern: /\\b(?:[A-Z]\\w*)Error\\b/,\n alias: 'class-name'\n }\n ]\n })\n\n /**\n * Replaces the `<ID>` placeholder in the given pattern with a pattern for general JS identifiers.\n *\n * @param {string} source\n * @param {string} [flags]\n * @returns {RegExp}\n */\n function withId(source, flags) {\n return RegExp(\n source.replace(/<ID>/g, function () {\n return /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/.source\n }),\n flags\n )\n }\n Prism.languages.insertBefore('javascript', 'keyword', {\n imports: {\n // https://tc39.es/ecma262/#sec-imports\n pattern: withId(\n /(\\bimport\\b\\s*)(?:<ID>(?:\\s*,\\s*(?:\\*\\s*as\\s+<ID>|\\{[^{}]*\\}))?|\\*\\s*as\\s+<ID>|\\{[^{}]*\\})(?=\\s*\\bfrom\\b)/\n .source\n ),\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n exports: {\n // https://tc39.es/ecma262/#sec-exports\n pattern: withId(\n /(\\bexport\\b\\s*)(?:\\*(?:\\s*as\\s+<ID>)?(?=\\s*\\bfrom\\b)|\\{[^{}]*\\})/\n .source\n ),\n lookbehind: true,\n inside: Prism.languages.javascript\n }\n })\n Prism.languages.javascript['keyword'].unshift(\n {\n pattern: /\\b(?:as|default|export|from|import)\\b/,\n alias: 'module'\n },\n {\n pattern:\n /\\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\\b/,\n alias: 'control-flow'\n },\n {\n pattern: /\\bnull\\b/,\n alias: ['null', 'nil']\n },\n {\n pattern: /\\bundefined\\b/,\n alias: 'nil'\n }\n )\n Prism.languages.insertBefore('javascript', 'operator', {\n spread: {\n pattern: /\\.{3}/,\n alias: 'operator'\n },\n arrow: {\n pattern: /=>/,\n alias: 'operator'\n }\n })\n Prism.languages.insertBefore('javascript', 'punctuation', {\n 'property-access': {\n pattern: withId(/(\\.\\s*)#?<ID>/.source),\n lookbehind: true\n },\n 'maybe-class-name': {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[A-Z][$\\w\\xA0-\\uFFFF]+/,\n lookbehind: true\n },\n dom: {\n // this contains only a few commonly used DOM variables\n pattern:\n /\\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\\b/,\n alias: 'variable'\n },\n console: {\n pattern: /\\bconsole(?=\\s*\\.)/,\n alias: 'class-name'\n }\n })\n\n // add 'maybe-class-name' to tokens which might be a class name\n var maybeClassNameTokens = [\n 'function',\n 'function-variable',\n 'method',\n 'method-variable',\n 'property-access'\n ]\n for (var i = 0; i < maybeClassNameTokens.length; i++) {\n var token = maybeClassNameTokens[i]\n var value = Prism.languages.javascript[token]\n\n // convert regex to object\n if (Prism.util.type(value) === 'RegExp') {\n value = Prism.languages.javascript[token] = {\n pattern: value\n }\n }\n\n // keep in mind that we don't support arrays\n\n var inside = value.inside || {}\n value.inside = inside\n inside['maybe-class-name'] = /^[A-Z][\\s\\S]*/\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJson from './json.js'\njson5.displayName = 'json5'\njson5.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function json5(Prism) {\n Prism.register(refractorJson)\n ;(function (Prism) {\n var string = /(\"|')(?:\\\\(?:\\r\\n?|\\n|.)|(?!\\1)[^\\\\\\r\\n])*\\1/\n Prism.languages.json5 = Prism.languages.extend('json', {\n property: [\n {\n pattern: RegExp(string.source + '(?=\\\\s*:)'),\n greedy: true\n },\n {\n pattern:\n /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/,\n alias: 'unquoted'\n }\n ],\n string: {\n pattern: string,\n greedy: true\n },\n number:\n /[+-]?\\b(?:NaN|Infinity|0x[a-fA-F\\d]+)\\b|[+-]?(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJson from './json.js'\njsonp.displayName = 'jsonp'\njsonp.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function jsonp(Prism) {\n Prism.register(refractorJson)\n Prism.languages.jsonp = Prism.languages.extend('json', {\n punctuation: /[{}[\\]();,.]/\n })\n Prism.languages.insertBefore('jsonp', 'punctuation', {\n function: /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*\\()/\n })\n}\n","// @ts-nocheck\njsstacktrace.displayName = 'jsstacktrace'\njsstacktrace.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function jsstacktrace(Prism) {\n Prism.languages.jsstacktrace = {\n 'error-message': {\n pattern: /^\\S.*/m,\n alias: 'string'\n },\n 'stack-frame': {\n pattern: /(^[ \\t]+)at[ \\t].*/m,\n lookbehind: true,\n inside: {\n 'not-my-code': {\n pattern:\n /^at[ \\t]+(?!\\s)(?:node\\.js|<unknown>|.*(?:node_modules|\\(<anonymous>\\)|\\(<unknown>|<anonymous>$|\\(internal\\/|\\(node\\.js)).*/m,\n alias: 'comment'\n },\n filename: {\n pattern: /(\\bat\\s+(?!\\s)|\\()(?:[a-zA-Z]:)?[^():]+(?=:)/,\n lookbehind: true,\n alias: 'url'\n },\n function: {\n pattern:\n /(\\bat\\s+(?:new\\s+)?)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF<][.$\\w\\xA0-\\uFFFF<>]*/,\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n },\n punctuation: /[()]/,\n keyword: /\\b(?:at|new)\\b/,\n alias: {\n pattern: /\\[(?:as\\s+)?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\]/,\n alias: 'variable'\n },\n 'line-number': {\n pattern: /:\\d+(?::\\d+)?\\b/,\n alias: 'number',\n inside: {\n punctuation: /:/\n }\n }\n }\n }\n }\n}\n","// @ts-nocheck\njulia.displayName = 'julia'\njulia.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function julia(Prism) {\n Prism.languages.julia = {\n comment: {\n // support one level of nested comments\n // https://github.com/JuliaLang/julia/pull/6128\n pattern:\n /(^|[^\\\\])(?:#=(?:[^#=]|=(?!#)|#(?!=)|#=(?:[^#=]|=(?!#)|#(?!=))*=#)*=#|#.*)/,\n lookbehind: true\n },\n regex: {\n // https://docs.julialang.org/en/v1/manual/strings/#Regular-Expressions-1\n pattern: /r\"(?:\\\\.|[^\"\\\\\\r\\n])*\"[imsx]{0,4}/,\n greedy: true\n },\n string: {\n // https://docs.julialang.org/en/v1/manual/strings/#String-Basics-1\n // https://docs.julialang.org/en/v1/manual/strings/#non-standard-string-literals-1\n // https://docs.julialang.org/en/v1/manual/running-external-programs/#Running-External-Programs-1\n pattern:\n /\"\"\"[\\s\\S]+?\"\"\"|(?:\\b\\w+)?\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`(?:[^\\\\`\\r\\n]|\\\\.)*`/,\n greedy: true\n },\n char: {\n // https://docs.julialang.org/en/v1/manual/strings/#man-characters-1\n pattern: /(^|[^\\w'])'(?:\\\\[^\\r\\n][^'\\r\\n]*|[^\\\\\\r\\n])'/,\n lookbehind: true,\n greedy: true\n },\n keyword:\n /\\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|in|let|local|macro|module|print|println|quote|return|struct|try|type|typealias|using|while)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n number:\n /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[box])?(?:[\\da-f]+(?:_[\\da-f]+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[efp][+-]?\\d+(?:_\\d+)*)?j?/i,\n // https://docs.julialang.org/en/v1/manual/mathematical-operations/\n // https://docs.julialang.org/en/v1/manual/mathematical-operations/#Operator-Precedence-and-Associativity-1\n operator:\n /&&|\\|\\||[-+*^%÷⊻&$\\\\]=?|\\/[\\/=]?|!=?=?|\\|[=>]?|<(?:<=?|[=:|])?|>(?:=|>>?=?)?|==?=?|[~≠≤≥'√∛]/,\n punctuation: /::?|[{}[\\]();,.?]/,\n // https://docs.julialang.org/en/v1/base/numbers/#Base.im\n constant: /\\b(?:(?:Inf|NaN)(?:16|32|64)?|im|pi)\\b|[πℯ]/\n }\n}\n","// @ts-nocheck\nkeepalived.displayName = 'keepalived'\nkeepalived.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function keepalived(Prism) {\n Prism.languages.keepalived = {\n comment: {\n pattern: /[#!].*/,\n greedy: true\n },\n string: {\n pattern:\n /(^|[^\\\\])(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/,\n lookbehind: true,\n greedy: true\n },\n // support IPv4, IPv6, subnet mask\n ip: {\n pattern: RegExp(\n /\\b(?:(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){5}:(?:[\\da-f]{1,4}:)?[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){4}:(?:[\\da-f]{1,4}:){0,2}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){3}:(?:[\\da-f]{1,4}:){0,3}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){2}:(?:[\\da-f]{1,4}:){0,4}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){6}<ipv4>|(?:[\\da-f]{1,4}:){0,5}:<ipv4>|::(?:[\\da-f]{1,4}:){0,5}<ipv4>|[\\da-f]{1,4}::(?:[\\da-f]{1,4}:){0,5}[\\da-f]{1,4}|::(?:[\\da-f]{1,4}:){0,6}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:)(?:\\/\\d{1,3})?|<ipv4>(?:\\/\\d{1,2})?)\\b/.source.replace(\n /<ipv4>/g,\n function () {\n return /(?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d))/\n .source\n }\n ),\n 'i'\n ),\n alias: 'number'\n },\n // support *nix / Windows, directory / file\n path: {\n pattern:\n /(\\s)\\/(?:[^\\/\\s]+\\/)*[^\\/\\s]*|\\b[a-zA-Z]:\\\\(?:[^\\\\\\s]+\\\\)*[^\\\\\\s]*/,\n lookbehind: true,\n alias: 'string'\n },\n variable: /\\$\\{?\\w+\\}?/,\n email: {\n pattern: /[\\w-]+@[\\w-]+(?:\\.[\\w-]{2,3}){1,2}/,\n alias: 'string'\n },\n 'conditional-configuration': {\n pattern: /@\\^?[\\w-]+/,\n alias: 'variable'\n },\n operator: /=/,\n property:\n /\\b(?:BFD_CHECK|DNS_CHECK|FILE_CHECK|HTTP_GET|MISC_CHECK|NAME|PING_CHECK|SCRIPTS|SMTP_CHECK|SSL|SSL_GET|TCP_CHECK|UDP_CHECK|accept|advert_int|alpha|auth_pass|auth_type|authentication|bfd_cpu_affinity|bfd_instance|bfd_no_swap|bfd_priority|bfd_process_name|bfd_rlimit_rttime|bfd_rt_priority|bind_if|bind_port|bindto|ca|certificate|check_unicast_src|checker|checker_cpu_affinity|checker_log_all_failures|checker_no_swap|checker_priority|checker_rlimit_rttime|checker_rt_priority|child_wait_time|connect_ip|connect_port|connect_timeout|dbus_service_name|debug|default_interface|delay|delay_before_retry|delay_loop|digest|dont_track_primary|dynamic|dynamic_interfaces|enable_(?:dbus|script_security|sni|snmp_checker|snmp_rfc|snmp_rfcv2|snmp_rfcv3|snmp_vrrp|traps)|end|fall|fast_recovery|file|flag-[123]|fork_delay|full_command|fwmark|garp_group|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|global_defs|global_tracking|gna_interval|group|ha_suspend|hashed|helo_name|higher_prio_send_advert|hoplimit|http_protocol|hysteresis|idle_tx|include|inhibit_on_failure|init_fail|init_file|instance|interface|interfaces|interval|ip_family|ipvs_process_name|keepalived.conf|kernel_rx_buf_size|key|linkbeat_interfaces|linkbeat_use_polling|log_all_failures|log_unknown_vrids|lower_prio_no_advert|lthreshold|lvs_flush|lvs_flush_onstop|lvs_method|lvs_netlink_cmd_rcv_bufs|lvs_netlink_cmd_rcv_bufs_force|lvs_netlink_monitor_rcv_bufs|lvs_netlink_monitor_rcv_bufs_force|lvs_notify_fifo|lvs_notify_fifo_script|lvs_sched|lvs_sync_daemon|max_auto_priority|max_hops|mcast_src_ip|mh-fallback|mh-port|min_auto_priority_delay|min_rx|min_tx|misc_dynamic|misc_path|misc_timeout|multiplier|name|namespace_with_ipsets|native_ipv6|neighbor_ip|net_namespace|net_namespace_ipvs|nftables|nftables_counters|nftables_ifindex|nftables_priority|no_accept|no_checker_emails|no_email_faults|nopreempt|notification_email|notification_email_from|notify|notify_backup|notify_deleted|notify_down|notify_fault|notify_fifo|notify_fifo_script|notify_master|notify_master_rx_lower_pri|notify_priority_changes|notify_stop|notify_up|old_unicast_checksum|omega|ops|param_match|passive|password|path|persistence_engine|persistence_granularity|persistence_timeout|preempt|preempt_delay|priority|process|process_monitor_rcv_bufs|process_monitor_rcv_bufs_force|process_name|process_names|promote_secondaries|protocol|proxy_arp|proxy_arp_pvlan|quorum|quorum_down|quorum_max|quorum_up|random_seed|real_server|regex|regex_max_offset|regex_min_offset|regex_no_match|regex_options|regex_stack|reload_repeat|reload_time_file|require_reply|retry|rise|router_id|rs_init_notifies|script|script_user|sh-fallback|sh-port|shutdown_script|shutdown_script_timeout|skip_check_adv_addr|smtp_alert|smtp_alert_checker|smtp_alert_vrrp|smtp_connect_timeout|smtp_helo_name|smtp_server|snmp_socket|sorry_server|sorry_server_inhibit|sorry_server_lvs_method|source_ip|start|startup_script|startup_script_timeout|state|static_ipaddress|static_routes|static_rules|status_code|step|strict_mode|sync_group_tracking_weight|terminate_delay|timeout|track_bfd|track_file|track_group|track_interface|track_process|track_script|track_src_ip|ttl|type|umask|unicast_peer|unicast_src_ip|unicast_ttl|url|use_ipvlan|use_pid_dir|use_vmac|user|uthreshold|val[123]|version|virtual_ipaddress|virtual_ipaddress_excluded|virtual_router_id|virtual_routes|virtual_rules|virtual_server|virtual_server_group|virtualhost|vmac_xmit_base|vrrp|vrrp_(?:check_unicast_src|cpu_affinity|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|gna_interval|higher_prio_send_advert|instance|ipsets|iptables|lower_prio_no_advert|mcast_group4|mcast_group6|min_garp|netlink_cmd_rcv_bufs|netlink_cmd_rcv_bufs_force|netlink_monitor_rcv_bufs|netlink_monitor_rcv_bufs_force|no_swap|notify_fifo|notify_fifo_script|notify_priority_changes|priority|process_name|rlimit_rttime|rt_priority|rx_bufs_multiplier|rx_bufs_policy|script|skip_check_adv_addr|startup_delay|strict|sync_group|track_process|version)|warmup|weight)\\b/,\n constant:\n /\\b(?:A|AAAA|AH|BACKUP|CNAME|DR|MASTER|MX|NAT|NS|PASS|SCTP|SOA|TCP|TUN|TXT|UDP|dh|fo|lblc|lblcr|lc|mh|nq|ovf|rr|sed|sh|wlc|wrr)\\b/,\n number: {\n pattern: /(^|[^\\w.-])-?\\d+(?:\\.\\d+)?/,\n lookbehind: true\n },\n boolean: /\\b(?:false|no|off|on|true|yes)\\b/,\n punctuation: /[\\{\\}]/\n }\n}\n","// @ts-nocheck\nkeyman.displayName = 'keyman'\nkeyman.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function keyman(Prism) {\n Prism.languages.keyman = {\n comment: {\n pattern: /\\bc .*/i,\n greedy: true\n },\n string: {\n pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n greedy: true\n },\n 'virtual-key': {\n pattern:\n /\\[\\s*(?:(?:ALT|CAPS|CTRL|LALT|LCTRL|NCAPS|RALT|RCTRL|SHIFT)\\s+)*(?:[TKU]_[\\w?]+|[A-E]\\d\\d?|\"[^\"\\r\\n]*\"|'[^'\\r\\n]*')\\s*\\]/i,\n greedy: true,\n alias: 'function' // alias for styles\n },\n\n // https://help.keyman.com/developer/language/guide/headers\n 'header-keyword': {\n pattern: /&\\w+/,\n alias: 'bold' // alias for styles\n },\n\n 'header-statement': {\n pattern:\n /\\b(?:bitmap|bitmaps|caps always off|caps on only|copyright|hotkey|language|layout|message|name|shift frees caps|version)\\b/i,\n alias: 'bold' // alias for styles\n },\n\n 'rule-keyword': {\n pattern:\n /\\b(?:any|baselayout|beep|call|context|deadkey|dk|if|index|layer|notany|nul|outs|platform|reset|return|save|set|store|use)\\b/i,\n alias: 'keyword'\n },\n 'structural-keyword': {\n pattern:\n /\\b(?:ansi|begin|group|match|newcontext|nomatch|postkeystroke|readonly|unicode|using keys)\\b/i,\n alias: 'keyword'\n },\n 'compile-target': {\n pattern: /\\$(?:keyman|keymanonly|keymanweb|kmfl|weaver):/i,\n alias: 'property'\n },\n // U+####, x###, d### characters and numbers\n number: /\\b(?:U\\+[\\dA-F]+|d\\d+|x[\\da-f]+|\\d+)\\b/i,\n operator: /[+>\\\\$]|\\.\\./,\n punctuation: /[()=,]/\n }\n}\n","// @ts-nocheck\nkumir.displayName = 'kumir'\nkumir.aliases = ['kum']\n\n/** @type {import('../core.js').Syntax} */\nexport default function kumir(Prism) {\n /* eslint-disable regexp/no-dupe-characters-character-class */\n ;(function (Prism) {\n /**\n * Regular expression for characters that are not allowed in identifiers.\n *\n * @type {string}\n */\n var nonId = /\\s\\x00-\\x1f\\x22-\\x2f\\x3a-\\x3f\\x5b-\\x5e\\x60\\x7b-\\x7e/.source\n\n /**\n * Surround a regular expression for IDs with patterns for non-ID sequences.\n *\n * @param {string} pattern A regular expression for identifiers.\n * @param {string} [flags] The regular expression flags.\n * @returns {RegExp} A wrapped regular expression for identifiers.\n */\n function wrapId(pattern, flags) {\n return RegExp(pattern.replace(/<nonId>/g, nonId), flags)\n }\n Prism.languages.kumir = {\n comment: {\n pattern: /\\|.*/\n },\n prolog: {\n pattern: /#.*/,\n greedy: true\n },\n string: {\n pattern: /\"[^\\n\\r\"]*\"|'[^\\n\\r']*'/,\n greedy: true\n },\n boolean: {\n pattern: wrapId(/(^|[<nonId>])(?:да|нет)(?=[<nonId>]|$)/.source),\n lookbehind: true\n },\n 'operator-word': {\n pattern: wrapId(/(^|[<nonId>])(?:и|или|не)(?=[<nonId>]|$)/.source),\n lookbehind: true,\n alias: 'keyword'\n },\n 'system-variable': {\n pattern: wrapId(/(^|[<nonId>])знач(?=[<nonId>]|$)/.source),\n lookbehind: true,\n alias: 'keyword'\n },\n type: [\n {\n pattern: wrapId(\n /(^|[<nonId>])(?:вещ|лит|лог|сим|цел)(?:\\x20*таб)?(?=[<nonId>]|$)/\n .source\n ),\n lookbehind: true,\n alias: 'builtin'\n },\n {\n pattern: wrapId(\n /(^|[<nonId>])(?:компл|сканкод|файл|цвет)(?=[<nonId>]|$)/.source\n ),\n lookbehind: true,\n alias: 'important'\n }\n ],\n /**\n * Should be performed after searching for type names because of \"таб\".\n * \"таб\" is a reserved word, but never used without a preceding type name.\n * \"НАЗНАЧИТЬ\", \"Фввод\", and \"Фвывод\" are not reserved words.\n */\n keyword: {\n pattern: wrapId(\n /(^|[<nonId>])(?:алг|арг(?:\\x20*рез)?|ввод|ВКЛЮЧИТЬ|вс[её]|выбор|вывод|выход|дано|для|до|дс|если|иначе|исп|использовать|кон(?:(?:\\x20+|_)исп)?|кц(?:(?:\\x20+|_)при)?|надо|нач|нс|нц|от|пауза|пока|при|раза?|рез|стоп|таб|то|утв|шаг)(?=[<nonId>]|$)/\n .source\n ),\n lookbehind: true\n },\n /** Should be performed after searching for reserved words. */\n name: {\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n pattern: wrapId(\n /(^|[<nonId>])[^\\d<nonId>][^<nonId>]*(?:\\x20+[^<nonId>]+)*(?=[<nonId>]|$)/\n .source\n ),\n lookbehind: true\n },\n /** Should be performed after searching for names. */\n number: {\n pattern: wrapId(\n /(^|[<nonId>])(?:\\B\\$[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)(?=[<nonId>]|$)/\n .source,\n 'i'\n ),\n lookbehind: true\n },\n /** Should be performed after searching for words. */\n punctuation: /:=|[(),:;\\[\\]]/,\n /**\n * Should be performed after searching for\n * - numeric constants (because of \"+\" and \"-\");\n * - punctuation marks (because of \":=\" and \"=\").\n */\n 'operator-char': {\n pattern: /\\*\\*?|<[=>]?|>=?|[-+/=]/,\n alias: 'operator'\n }\n }\n Prism.languages.kum = Prism.languages.kumir\n })(Prism)\n}\n","// @ts-nocheck\nkusto.displayName = 'kusto'\nkusto.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function kusto(Prism) {\n Prism.languages.kusto = {\n comment: {\n pattern: /\\/\\/.*/,\n greedy: true\n },\n string: {\n pattern:\n /```[\\s\\S]*?```|[hH]?(?:\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"|'(?:[^\\r\\n\\\\']|\\\\.)*'|@(?:\"[^\\r\\n\"]*\"|'[^\\r\\n']*'))/,\n greedy: true\n },\n verb: {\n pattern: /(\\|\\s*)[a-z][\\w-]*/i,\n lookbehind: true,\n alias: 'keyword'\n },\n command: {\n pattern: /\\.[a-z][a-z\\d-]*\\b/,\n alias: 'keyword'\n },\n 'class-name':\n /\\b(?:bool|datetime|decimal|dynamic|guid|int|long|real|string|timespan)\\b/,\n keyword:\n /\\b(?:access|alias|and|anti|as|asc|auto|between|by|(?:contains|(?:ends|starts)with|has(?:perfix|suffix)?)(?:_cs)?|database|declare|desc|external|from|fullouter|has_all|in|ingestion|inline|inner|innerunique|into|(?:left|right)(?:anti(?:semi)?|inner|outer|semi)?|let|like|local|not|of|on|or|pattern|print|query_parameters|range|restrict|schema|set|step|table|tables|to|view|where|with|matches\\s+regex|nulls\\s+(?:first|last))(?![\\w-])/,\n boolean: /\\b(?:false|null|true)\\b/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/,\n datetime: [\n {\n // RFC 822 + RFC 850\n pattern:\n /\\b(?:(?:Fri|Friday|Mon|Monday|Sat|Saturday|Sun|Sunday|Thu|Thursday|Tue|Tuesday|Wed|Wednesday)\\s*,\\s*)?\\d{1,2}(?:\\s+|-)(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)(?:\\s+|-)\\d{2}\\s+\\d{2}:\\d{2}(?::\\d{2})?(?:\\s*(?:\\b(?:[A-Z]|(?:[ECMT][DS]|GM|U)T)|[+-]\\d{4}))?\\b/,\n alias: 'number'\n },\n {\n // ISO 8601\n pattern:\n /[+-]?\\b(?:\\d{4}-\\d{2}-\\d{2}(?:[ T]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?)?|\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?)Z?/,\n alias: 'number'\n }\n ],\n number:\n /\\b(?:0x[0-9A-Fa-f]+|\\d+(?:\\.\\d+)?(?:[Ee][+-]?\\d+)?)(?:(?:min|sec|[mnµ]s|[dhms]|microsecond|tick)\\b)?|[+-]?\\binf\\b/,\n operator: /=>|[!=]~|[!=<>]=?|[-+*/%|]|\\.\\./,\n punctuation: /[()\\[\\]{},;.:]/\n }\n}\n","// @ts-nocheck\nlatex.displayName = 'latex'\nlatex.aliases = ['context', 'tex']\n\n/** @type {import('../core.js').Syntax} */\nexport default function latex(Prism) {\n ;(function (Prism) {\n var funcPattern = /\\\\(?:[^a-z()[\\]]|[a-z*]+)/i\n var insideEqu = {\n 'equation-command': {\n pattern: funcPattern,\n alias: 'regex'\n }\n }\n Prism.languages.latex = {\n comment: /%.*/,\n // the verbatim environment prints whitespace to the document\n cdata: {\n pattern:\n /(\\\\begin\\{((?:lstlisting|verbatim)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n lookbehind: true\n },\n /*\n * equations can be between $$ $$ or $ $ or \\( \\) or \\[ \\]\n * (all are multiline)\n */\n equation: [\n {\n pattern:\n /\\$\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$\\$|\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$|\\\\\\([\\s\\S]*?\\\\\\)|\\\\\\[[\\s\\S]*?\\\\\\]/,\n inside: insideEqu,\n alias: 'string'\n },\n {\n pattern:\n /(\\\\begin\\{((?:align|eqnarray|equation|gather|math|multline)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n lookbehind: true,\n inside: insideEqu,\n alias: 'string'\n }\n ],\n /*\n * arguments which are keywords or references are highlighted\n * as keywords\n */\n keyword: {\n pattern:\n /(\\\\(?:begin|cite|documentclass|end|label|ref|usepackage)(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n lookbehind: true\n },\n url: {\n pattern: /(\\\\url\\{)[^}]+(?=\\})/,\n lookbehind: true\n },\n /*\n * section or chapter headlines are highlighted as bold so that\n * they stand out more\n */\n headline: {\n pattern:\n /(\\\\(?:chapter|frametitle|paragraph|part|section|subparagraph|subsection|subsubparagraph|subsubsection|subsubsubparagraph)\\*?(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n lookbehind: true,\n alias: 'class-name'\n },\n function: {\n pattern: funcPattern,\n alias: 'selector'\n },\n punctuation: /[[\\]{}&]/\n }\n Prism.languages.tex = Prism.languages.latex\n Prism.languages.context = Prism.languages.latex\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nimport refractorMarkupTemplating from './markup-templating.js'\nimport refractorPhp from './php.js'\nlatte.displayName = 'latte'\nlatte.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function latte(Prism) {\n Prism.register(refractorClike)\n Prism.register(refractorMarkupTemplating)\n Prism.register(refractorPhp)\n ;(function (Prism) {\n Prism.languages.latte = {\n comment: /^\\{\\*[\\s\\S]*/,\n 'latte-tag': {\n // https://latte.nette.org/en/tags\n pattern: /(^\\{(?:\\/(?=[a-z]))?)(?:[=_]|[a-z]\\w*\\b(?!\\())/i,\n lookbehind: true,\n alias: 'important'\n },\n delimiter: {\n pattern: /^\\{\\/?|\\}$/,\n alias: 'punctuation'\n },\n php: {\n pattern: /\\S(?:[\\s\\S]*\\S)?/,\n alias: 'language-php',\n inside: Prism.languages.php\n }\n }\n var markupLatte = Prism.languages.extend('markup', {})\n Prism.languages.insertBefore(\n 'inside',\n 'attr-value',\n {\n 'n-attr': {\n pattern: /n:[\\w-]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+))?/,\n inside: {\n 'attr-name': {\n pattern: /^[^\\s=]+/,\n alias: 'important'\n },\n 'attr-value': {\n pattern: /=[\\s\\S]+/,\n inside: {\n punctuation: [\n /^=/,\n {\n pattern: /^(\\s*)[\"']|[\"']$/,\n lookbehind: true\n }\n ],\n php: {\n pattern: /\\S(?:[\\s\\S]*\\S)?/,\n inside: Prism.languages.php\n }\n }\n }\n }\n }\n },\n markupLatte.tag\n )\n Prism.hooks.add('before-tokenize', function (env) {\n if (env.language !== 'latte') {\n return\n }\n var lattePattern =\n /\\{\\*[\\s\\S]*?\\*\\}|\\{[^'\"\\s{}*](?:[^\"'/{}]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\}/g\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'latte',\n lattePattern\n )\n env.grammar = markupLatte\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'latte')\n })\n })(Prism)\n}\n","// @ts-nocheck\nscheme.displayName = 'scheme'\nscheme.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function scheme(Prism) {\n ;(function (Prism) {\n Prism.languages.scheme = {\n // this supports \"normal\" single-line comments:\n // ; comment\n // and (potentially nested) multiline comments:\n // #| comment #| nested |# still comment |#\n // (only 1 level of nesting is supported)\n comment:\n /;.*|#;\\s*(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\[(?:[^\\[\\]]|\\[[^\\[\\]]*\\])*\\])|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#)|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#))*\\|#)*\\|#/,\n string: {\n pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n greedy: true\n },\n symbol: {\n pattern: /'[^()\\[\\]#'\\s]+/,\n greedy: true\n },\n char: {\n pattern:\n /#\\\\(?:[ux][a-fA-F\\d]+\\b|[-a-zA-Z]+\\b|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\\S)/,\n greedy: true\n },\n 'lambda-parameter': [\n // https://www.cs.cmu.edu/Groups/AI/html/r4rs/r4rs_6.html#SEC30\n {\n pattern:\n /((?:^|[^'`#])[(\\[]lambda\\s+)(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)/,\n lookbehind: true\n },\n {\n pattern: /((?:^|[^'`#])[(\\[]lambda\\s+[(\\[])[^()\\[\\]']+/,\n lookbehind: true\n }\n ],\n keyword: {\n pattern:\n /((?:^|[^'`#])[(\\[])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|except|export|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\\*)?|let\\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n builtin: {\n // all functions of the base library of R7RS plus some of built-ins of R5Rs\n pattern:\n /((?:^|[^'`#])[(\\[])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\\?|boolean=?\\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\\?|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)|close-(?:input-port|output-port|port)|complex\\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\\??|eq\\?|equal\\?|eqv\\?|error|error-object(?:-irritants|-message|\\?)|eval|even\\?|exact(?:-integer-sqrt|-integer\\?|\\?)?|expt|features|file-error\\?|floor(?:-quotient|-remainder|\\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\\??|input-port(?:-open\\?|\\?)|integer(?:->char|\\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\\?|newline|not|null\\?|number(?:->string|\\?)|numerator|odd\\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\\?|\\?)|pair\\?|peek-char|peek-u8|port\\?|positive\\?|procedure\\?|quotient|raise|raise-continuable|rational\\?|rationalize|read-(?:bytevector|bytevector!|char|error\\?|line|string|u8)|real\\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)?|substring|symbol(?:->string|\\?|=\\?)|syntax-error|textual-port\\?|truncate(?:-quotient|-remainder|\\/)?|u8-ready\\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\\?)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n operator: {\n pattern: /((?:^|[^'`#])[(\\[])(?:[-+*%/]|[<>]=?|=>?)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n number: {\n // The number pattern from [the R7RS spec](https://small.r7rs.org/attachment/r7rs.pdf).\n //\n // <number> := <num 2>|<num 8>|<num 10>|<num 16>\n // <num R> := <prefix R><complex R>\n // <complex R> := <real R>(?:@<real R>|<imaginary R>)?|<imaginary R>\n // <imaginary R> := [+-](?:<ureal R>|(?:inf|nan)\\.0)?i\n // <real R> := [+-]?<ureal R>|[+-](?:inf|nan)\\.0\n // <ureal R> := <uint R>(?:\\/<uint R>)?\n // | <decimal R>\n //\n // <decimal 10> := (?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?\n // <uint R> := <digit R>+\n // <prefix R> := <radix R>(?:#[ei])?|(?:#[ei])?<radix R>\n // <radix 2> := #b\n // <radix 8> := #o\n // <radix 10> := (?:#d)?\n // <radix 16> := #x\n // <digit 2> := [01]\n // <digit 8> := [0-7]\n // <digit 10> := \\d\n // <digit 16> := [0-9a-f]\n //\n // The problem with this grammar is that the resulting regex is way to complex, so we simplify by grouping all\n // non-decimal bases together. This results in a decimal (dec) and combined binary, octal, and hexadecimal (box)\n // pattern:\n pattern: RegExp(\n SortedBNF({\n '<ureal dec>':\n /\\d+(?:\\/\\d+)|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[esfdl][+-]?\\d+)?/.source,\n '<real dec>': /[+-]?<ureal dec>|[+-](?:inf|nan)\\.0/.source,\n '<imaginary dec>': /[+-](?:<ureal dec>|(?:inf|nan)\\.0)?i/.source,\n '<complex dec>':\n /<real dec>(?:@<real dec>|<imaginary dec>)?|<imaginary dec>/\n .source,\n '<num dec>': /(?:#d(?:#[ei])?|#[ei](?:#d)?)?<complex dec>/.source,\n '<ureal box>': /[0-9a-f]+(?:\\/[0-9a-f]+)?/.source,\n '<real box>': /[+-]?<ureal box>|[+-](?:inf|nan)\\.0/.source,\n '<imaginary box>': /[+-](?:<ureal box>|(?:inf|nan)\\.0)?i/.source,\n '<complex box>':\n /<real box>(?:@<real box>|<imaginary box>)?|<imaginary box>/\n .source,\n '<num box>': /#[box](?:#[ei])?|(?:#[ei])?#[box]<complex box>/\n .source,\n '<number>': /(^|[()\\[\\]\\s])(?:<num dec>|<num box>)(?=[()\\[\\]\\s]|$)/\n .source\n }),\n 'i'\n ),\n lookbehind: true\n },\n boolean: {\n pattern: /(^|[()\\[\\]\\s])#(?:[ft]|false|true)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n function: {\n pattern:\n /((?:^|[^'`#])[(\\[])(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)(?=[()\\[\\]\\s]|$)/,\n lookbehind: true\n },\n identifier: {\n pattern: /(^|[()\\[\\]\\s])\\|(?:[^\\\\|]|\\\\.)*\\|(?=[()\\[\\]\\s]|$)/,\n lookbehind: true,\n greedy: true\n },\n punctuation: /[()\\[\\]']/\n }\n\n /**\n * Given a topologically sorted BNF grammar, this will return the RegExp source of last rule of the grammar.\n *\n * @param {Record<string, string>} grammar\n * @returns {string}\n */\n function SortedBNF(grammar) {\n for (var key in grammar) {\n grammar[key] = grammar[key].replace(/<[\\w\\s]+>/g, function (key) {\n return '(?:' + grammar[key].trim() + ')'\n })\n }\n // return the last item\n return grammar[key]\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorScheme from './scheme.js'\nlilypond.displayName = 'lilypond'\nlilypond.aliases = ['ly']\n\n/** @type {import('../core.js').Syntax} */\nexport default function lilypond(Prism) {\n Prism.register(refractorScheme)\n ;(function (Prism) {\n var schemeExpression =\n /\\((?:[^();\"#\\\\]|\\\\[\\s\\S]|;.*(?!.)|\"(?:[^\"\\\\]|\\\\.)*\"|#(?:\\{(?:(?!#\\})[\\s\\S])*#\\}|[^{])|<expr>)*\\)/\n .source\n // allow for up to pow(2, recursivenessLog2) many levels of recursive brace expressions\n // For some reason, this can't be 4\n var recursivenessLog2 = 5\n for (var i = 0; i < recursivenessLog2; i++) {\n schemeExpression = schemeExpression.replace(/<expr>/g, function () {\n return schemeExpression\n })\n }\n schemeExpression = schemeExpression.replace(/<expr>/g, /[^\\s\\S]/.source)\n var lilypond = (Prism.languages.lilypond = {\n comment: /%(?:(?!\\{).*|\\{[\\s\\S]*?%\\})/,\n 'embedded-scheme': {\n pattern: RegExp(\n /(^|[=\\s])#(?:\"(?:[^\"\\\\]|\\\\.)*\"|[^\\s()\"]*(?:[^\\s()]|<expr>))/.source.replace(\n /<expr>/g,\n function () {\n return schemeExpression\n }\n ),\n 'm'\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n scheme: {\n pattern: /^(#)[\\s\\S]+$/,\n lookbehind: true,\n alias: 'language-scheme',\n inside: {\n 'embedded-lilypond': {\n pattern: /#\\{[\\s\\S]*?#\\}/,\n greedy: true,\n inside: {\n punctuation: /^#\\{|#\\}$/,\n lilypond: {\n pattern: /[\\s\\S]+/,\n alias: 'language-lilypond',\n inside: null // see below\n }\n }\n },\n\n rest: Prism.languages.scheme\n }\n },\n punctuation: /#/\n }\n },\n string: {\n pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\\\new\\s+)[\\w-]+/,\n lookbehind: true\n },\n keyword: {\n pattern: /\\\\[a-z][-\\w]*/i,\n inside: {\n punctuation: /^\\\\/\n }\n },\n operator: /[=|]|<<|>>/,\n punctuation: {\n pattern:\n /(^|[a-z\\d])(?:'+|,+|[_^]?-[_^]?(?:[-+^!>._]|(?=\\d))|[_^]\\.?|[.!])|[{}()[\\]<>^~]|\\\\[()[\\]<>\\\\!]|--|__/,\n lookbehind: true\n },\n number: /\\b\\d+(?:\\/\\d+)?\\b/\n })\n lilypond['embedded-scheme'].inside['scheme'].inside[\n 'embedded-lilypond'\n ].inside['lilypond'].inside = lilypond\n Prism.languages.ly = lilypond\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkupTemplating from './markup-templating.js'\nliquid.displayName = 'liquid'\nliquid.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function liquid(Prism) {\n Prism.register(refractorMarkupTemplating)\n Prism.languages.liquid = {\n comment: {\n pattern: /(^\\{%\\s*comment\\s*%\\})[\\s\\S]+(?=\\{%\\s*endcomment\\s*%\\}$)/,\n lookbehind: true\n },\n delimiter: {\n pattern: /^\\{(?:\\{\\{|[%\\{])-?|-?(?:\\}\\}|[%\\}])\\}$/,\n alias: 'punctuation'\n },\n string: {\n pattern: /\"[^\"]*\"|'[^']*'/,\n greedy: true\n },\n keyword:\n /\\b(?:as|assign|break|(?:end)?(?:capture|case|comment|for|form|if|paginate|raw|style|tablerow|unless)|continue|cycle|decrement|echo|else|elsif|in|include|increment|limit|liquid|offset|range|render|reversed|section|when|with)\\b/,\n object:\n /\\b(?:address|all_country_option_tags|article|block|blog|cart|checkout|collection|color|country|country_option_tags|currency|current_page|current_tags|customer|customer_address|date|discount_allocation|discount_application|external_video|filter|filter_value|font|forloop|fulfillment|generic_file|gift_card|group|handle|image|line_item|link|linklist|localization|location|measurement|media|metafield|model|model_source|order|page|page_description|page_image|page_title|part|policy|product|product_option|recommendations|request|robots|routes|rule|script|search|selling_plan|selling_plan_allocation|selling_plan_group|shipping_method|shop|shop_locale|sitemap|store_availability|tax_line|template|theme|transaction|unit_price_measurement|user_agent|variant|video|video_source)\\b/,\n function: [\n {\n pattern: /(\\|\\s*)\\w+/,\n lookbehind: true,\n alias: 'filter'\n },\n {\n // array functions\n pattern: /(\\.\\s*)(?:first|last|size)/,\n lookbehind: true\n }\n ],\n boolean: /\\b(?:false|nil|true)\\b/,\n range: {\n pattern: /\\.\\./,\n alias: 'operator'\n },\n // https://github.com/Shopify/liquid/blob/698f5e0d967423e013f6169d9111bd969bd78337/lib/liquid/lexer.rb#L21\n number: /\\b\\d+(?:\\.\\d+)?\\b/,\n operator: /[!=]=|<>|[<>]=?|[|?:=-]|\\b(?:and|contains(?=\\s)|or)\\b/,\n punctuation: /[.,\\[\\]()]/,\n empty: {\n pattern: /\\bempty\\b/,\n alias: 'keyword'\n }\n }\n Prism.hooks.add('before-tokenize', function (env) {\n var liquidPattern =\n /\\{%\\s*comment\\s*%\\}[\\s\\S]*?\\{%\\s*endcomment\\s*%\\}|\\{(?:%[\\s\\S]*?%|\\{\\{[\\s\\S]*?\\}\\}|\\{[\\s\\S]*?\\})\\}/g\n var insideRaw = false\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'liquid',\n liquidPattern,\n function (match) {\n var tagMatch = /^\\{%-?\\s*(\\w+)/.exec(match)\n if (tagMatch) {\n var tag = tagMatch[1]\n if (tag === 'raw' && !insideRaw) {\n insideRaw = true\n return true\n } else if (tag === 'endraw') {\n insideRaw = false\n return true\n }\n }\n return !insideRaw\n }\n )\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'liquid')\n })\n}\n","// @ts-nocheck\nlisp.displayName = 'lisp'\nlisp.aliases = ['elisp', 'emacs', 'emacs-lisp']\n\n/** @type {import('../core.js').Syntax} */\nexport default function lisp(Prism) {\n ;(function (Prism) {\n /**\n * Functions to construct regular expressions\n * e.g. (interactive ... or (interactive)\n *\n * @param {string} name\n * @returns {RegExp}\n */\n function simple_form(name) {\n return RegExp(/(\\()/.source + '(?:' + name + ')' + /(?=[\\s\\)])/.source)\n }\n /**\n * booleans and numbers\n *\n * @param {string} pattern\n * @returns {RegExp}\n */\n function primitive(pattern) {\n return RegExp(\n /([\\s([])/.source + '(?:' + pattern + ')' + /(?=[\\s)])/.source\n )\n }\n\n // Patterns in regular expressions\n\n // Symbol name. See https://www.gnu.org/software/emacs/manual/html_node/elisp/Symbol-Type.html\n // & and : are excluded as they are usually used for special purposes\n var symbol = /(?!\\d)[-+*/~!@$%^=<>{}\\w]+/.source\n // symbol starting with & used in function arguments\n var marker = '&' + symbol\n // Open parenthesis for look-behind\n var par = '(\\\\()'\n var endpar = '(?=\\\\))'\n // End the pattern with look-ahead space\n var space = '(?=\\\\s)'\n var nestedPar =\n /(?:[^()]|\\((?:[^()]|\\((?:[^()]|\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\))*\\))*\\))*/\n .source\n var language = {\n // Three or four semicolons are considered a heading.\n // See https://www.gnu.org/software/emacs/manual/html_node/elisp/Comment-Tips.html\n heading: {\n pattern: /;;;.*/,\n alias: ['comment', 'title']\n },\n comment: /;.*/,\n string: {\n pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n greedy: true,\n inside: {\n argument: /[-A-Z]+(?=[.,\\s])/,\n symbol: RegExp('`' + symbol + \"'\")\n }\n },\n 'quoted-symbol': {\n pattern: RegExp(\"#?'\" + symbol),\n alias: ['variable', 'symbol']\n },\n 'lisp-property': {\n pattern: RegExp(':' + symbol),\n alias: 'property'\n },\n splice: {\n pattern: RegExp(',@?' + symbol),\n alias: ['symbol', 'variable']\n },\n keyword: [\n {\n pattern: RegExp(\n par +\n '(?:and|(?:cl-)?letf|cl-loop|cond|cons|error|if|(?:lexical-)?let\\\\*?|message|not|null|or|provide|require|setq|unless|use-package|when|while)' +\n space\n ),\n lookbehind: true\n },\n {\n pattern: RegExp(\n par +\n '(?:append|by|collect|concat|do|finally|for|in|return)' +\n space\n ),\n lookbehind: true\n }\n ],\n declare: {\n pattern: simple_form(/declare/.source),\n lookbehind: true,\n alias: 'keyword'\n },\n interactive: {\n pattern: simple_form(/interactive/.source),\n lookbehind: true,\n alias: 'keyword'\n },\n boolean: {\n pattern: primitive(/nil|t/.source),\n lookbehind: true\n },\n number: {\n pattern: primitive(/[-+]?\\d+(?:\\.\\d*)?/.source),\n lookbehind: true\n },\n defvar: {\n pattern: RegExp(par + 'def(?:const|custom|group|var)\\\\s+' + symbol),\n lookbehind: true,\n inside: {\n keyword: /^def[a-z]+/,\n variable: RegExp(symbol)\n }\n },\n defun: {\n pattern: RegExp(\n par +\n /(?:cl-)?(?:defmacro|defun\\*?)\\s+/.source +\n symbol +\n /\\s+\\(/.source +\n nestedPar +\n /\\)/.source\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n keyword: /^(?:cl-)?def\\S+/,\n // See below, this property needs to be defined later so that it can\n // reference the language object.\n arguments: null,\n function: {\n pattern: RegExp('(^\\\\s)' + symbol),\n lookbehind: true\n },\n punctuation: /[()]/\n }\n },\n lambda: {\n pattern: RegExp(\n par +\n 'lambda\\\\s+\\\\(\\\\s*(?:&?' +\n symbol +\n '(?:\\\\s+&?' +\n symbol +\n ')*\\\\s*)?\\\\)'\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n keyword: /^lambda/,\n // See below, this property needs to be defined later so that it can\n // reference the language object.\n arguments: null,\n punctuation: /[()]/\n }\n },\n car: {\n pattern: RegExp(par + symbol),\n lookbehind: true\n },\n punctuation: [\n // open paren, brackets, and close paren\n /(?:['`,]?\\(|[)\\[\\]])/,\n // cons\n {\n pattern: /(\\s)\\.(?=\\s)/,\n lookbehind: true\n }\n ]\n }\n var arg = {\n 'lisp-marker': RegExp(marker),\n varform: {\n pattern: RegExp(\n /\\(/.source + symbol + /\\s+(?=\\S)/.source + nestedPar + /\\)/.source\n ),\n inside: language\n },\n argument: {\n pattern: RegExp(/(^|[\\s(])/.source + symbol),\n lookbehind: true,\n alias: 'variable'\n },\n rest: language\n }\n var forms = '\\\\S+(?:\\\\s+\\\\S+)*'\n var arglist = {\n pattern: RegExp(par + nestedPar + endpar),\n lookbehind: true,\n inside: {\n 'rest-vars': {\n pattern: RegExp('&(?:body|rest)\\\\s+' + forms),\n inside: arg\n },\n 'other-marker-vars': {\n pattern: RegExp('&(?:aux|optional)\\\\s+' + forms),\n inside: arg\n },\n keys: {\n pattern: RegExp('&key\\\\s+' + forms + '(?:\\\\s+&allow-other-keys)?'),\n inside: arg\n },\n argument: {\n pattern: RegExp(symbol),\n alias: 'variable'\n },\n punctuation: /[()]/\n }\n }\n language['lambda'].inside.arguments = arglist\n language['defun'].inside.arguments = Prism.util.clone(arglist)\n language['defun'].inside.arguments.inside.sublist = arglist\n Prism.languages.lisp = language\n Prism.languages.elisp = language\n Prism.languages.emacs = language\n Prism.languages['emacs-lisp'] = language\n })(Prism)\n}\n","// @ts-nocheck\nlivescript.displayName = 'livescript'\nlivescript.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function livescript(Prism) {\n Prism.languages.livescript = {\n comment: [\n {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n lookbehind: true\n },\n {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true\n }\n ],\n 'interpolated-string': {\n /* Look-behind and look-ahead prevents wrong behavior of the greedy pattern\n * forcing it to match \"\"\"-quoted string when it would otherwise match \"-quoted first. */\n pattern: /(^|[^\"])(\"\"\"|\")(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2(?!\")/,\n lookbehind: true,\n greedy: true,\n inside: {\n variable: {\n pattern: /(^|[^\\\\])#[a-z_](?:-?[a-z]|[\\d_])*/m,\n lookbehind: true\n },\n interpolation: {\n pattern: /(^|[^\\\\])#\\{[^}]+\\}/m,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^#\\{|\\}$/,\n alias: 'variable'\n }\n // See rest below\n }\n },\n\n string: /[\\s\\S]+/\n }\n },\n string: [\n {\n pattern: /('''|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n },\n {\n pattern: /<\\[[\\s\\S]*?\\]>/,\n greedy: true\n },\n /\\\\[^\\s,;\\])}]+/\n ],\n regex: [\n {\n pattern: /\\/\\/(?:\\[[^\\r\\n\\]]*\\]|\\\\.|(?!\\/\\/)[^\\\\\\[])+\\/\\/[gimyu]{0,5}/,\n greedy: true,\n inside: {\n comment: {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true\n }\n }\n },\n {\n pattern: /\\/(?:\\[[^\\r\\n\\]]*\\]|\\\\.|[^/\\\\\\r\\n\\[])+\\/[gimyu]{0,5}/,\n greedy: true\n }\n ],\n keyword: {\n pattern:\n /(^|(?!-).)\\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\\b/m,\n lookbehind: true\n },\n 'keyword-operator': {\n pattern:\n /(^|[^-])\\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?: not|nt)?|not|of|or|til|to|typeof|with|xor)(?!-)\\b)/m,\n lookbehind: true,\n alias: 'operator'\n },\n boolean: {\n pattern: /(^|[^-])\\b(?:false|no|off|on|true|yes)(?!-)\\b/m,\n lookbehind: true\n },\n argument: {\n // Don't match .&. nor &&\n pattern: /(^|(?!\\.&\\.)[^&])&(?!&)\\d*/m,\n lookbehind: true,\n alias: 'variable'\n },\n number: /\\b(?:\\d+~[\\da-z]+|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[a-z]\\w*)?)/i,\n identifier: /[a-z_](?:-?[a-z]|[\\d_])*/i,\n operator: [\n // Spaced .\n {\n pattern: /( )\\.(?= )/,\n lookbehind: true\n },\n // Full list, in order:\n // .= .~ .. ...\n // .&. .^. .<<. .>>. .>>>.\n // := :: ::=\n // &&\n // || |>\n // < << <<< <<<<\n // <- <-- <-! <--!\n // <~ <~~ <~! <~~!\n // <| <= <?\n // > >> >= >?\n // - -- -> -->\n // + ++\n // @ @@\n // % %%\n // * **\n // ! != !~=\n // !~> !~~>\n // !-> !-->\n // ~ ~> ~~> ~=\n // = ==\n // ^ ^^\n // / ?\n /\\.(?:[=~]|\\.\\.?)|\\.(?:[&|^]|<<|>>>?)\\.|:(?:=|:=?)|&&|\\|[|>]|<(?:<<?<?|--?!?|~~?!?|[|=?])?|>[>=?]?|-(?:->?|>)?|\\+\\+?|@@?|%%?|\\*\\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\\^\\^?|[\\/?]/\n ],\n punctuation: /[(){}\\[\\]|.,:;`]/\n }\n Prism.languages.livescript['interpolated-string'].inside[\n 'interpolation'\n ].inside.rest = Prism.languages.livescript\n}\n","// @ts-nocheck\nllvm.displayName = 'llvm'\nllvm.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function llvm(Prism) {\n ;(function (Prism) {\n Prism.languages.llvm = {\n comment: /;.*/,\n string: {\n pattern: /\"[^\"]*\"/,\n greedy: true\n },\n boolean: /\\b(?:false|true)\\b/,\n variable: /[%@!#](?:(?!\\d)(?:[-$.\\w]|\\\\[a-f\\d]{2})+|\\d+)/i,\n label: /(?!\\d)(?:[-$.\\w]|\\\\[a-f\\d]{2})+:/i,\n type: {\n pattern:\n /\\b(?:double|float|fp128|half|i[1-9]\\d*|label|metadata|ppc_fp128|token|void|x86_fp80|x86_mmx)\\b/,\n alias: 'class-name'\n },\n keyword: /\\b[a-z_][a-z_0-9]*\\b/,\n number:\n /[+-]?\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b|\\b0x[\\dA-Fa-f]+\\b|\\b0xK[\\dA-Fa-f]{20}\\b|\\b0x[ML][\\dA-Fa-f]{32}\\b|\\b0xH[\\dA-Fa-f]{4}\\b/,\n punctuation: /[{}[\\];(),.!*=<>]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nlog.displayName = 'log'\nlog.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function log(Prism) {\n // This is a language definition for generic log files.\n // Since there is no one log format, this language definition has to support all formats to some degree.\n //\n // Based on https://github.com/MTDL9/vim-log-highlighting\n\n Prism.languages.log = {\n string: {\n // Single-quoted strings must not be confused with plain text. E.g. Can't isn't Susan's Chris' toy\n pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?![st] | \\w)(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n greedy: true\n },\n exception: {\n pattern:\n /(^|[^\\w.])[a-z][\\w.]*(?:Error|Exception):.*(?:(?:\\r\\n?|\\n)[ \\t]*(?:at[ \\t].+|\\.{3}.*|Caused by:.*))+(?:(?:\\r\\n?|\\n)[ \\t]*\\.\\.\\. .*)?/,\n lookbehind: true,\n greedy: true,\n alias: ['javastacktrace', 'language-javastacktrace'],\n inside: Prism.languages['javastacktrace'] || {\n keyword: /\\bat\\b/,\n function: /[a-z_][\\w$]*(?=\\()/,\n punctuation: /[.:()]/\n }\n },\n level: [\n {\n pattern:\n /\\b(?:ALERT|CRIT|CRITICAL|EMERG|EMERGENCY|ERR|ERROR|FAILURE|FATAL|SEVERE)\\b/,\n alias: ['error', 'important']\n },\n {\n pattern: /\\b(?:WARN|WARNING|WRN)\\b/,\n alias: ['warning', 'important']\n },\n {\n pattern: /\\b(?:DISPLAY|INF|INFO|NOTICE|STATUS)\\b/,\n alias: ['info', 'keyword']\n },\n {\n pattern: /\\b(?:DBG|DEBUG|FINE)\\b/,\n alias: ['debug', 'keyword']\n },\n {\n pattern: /\\b(?:FINER|FINEST|TRACE|TRC|VERBOSE|VRB)\\b/,\n alias: ['trace', 'comment']\n }\n ],\n property: {\n pattern:\n /((?:^|[\\]|])[ \\t]*)[a-z_](?:[\\w-]|\\b\\/\\b)*(?:[. ]\\(?\\w(?:[\\w-]|\\b\\/\\b)*\\)?)*:(?=\\s)/im,\n lookbehind: true\n },\n separator: {\n pattern: /(^|[^-+])-{3,}|={3,}|\\*{3,}|- - /m,\n lookbehind: true,\n alias: 'comment'\n },\n url: /\\b(?:file|ftp|https?):\\/\\/[^\\s|,;'\"]*[^\\s|,;'\">.]/,\n email: {\n pattern: /(^|\\s)[-\\w+.]+@[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)+(?=\\s)/,\n lookbehind: true,\n alias: 'url'\n },\n 'ip-address': {\n pattern: /\\b(?:\\d{1,3}(?:\\.\\d{1,3}){3})\\b/,\n alias: 'constant'\n },\n 'mac-address': {\n pattern: /\\b[a-f0-9]{2}(?::[a-f0-9]{2}){5}\\b/i,\n alias: 'constant'\n },\n domain: {\n pattern:\n /(^|\\s)[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)*\\.[a-z][a-z0-9-]+(?=\\s)/,\n lookbehind: true,\n alias: 'constant'\n },\n uuid: {\n pattern:\n /\\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\b/i,\n alias: 'constant'\n },\n hash: {\n pattern: /\\b(?:[a-f0-9]{32}){1,2}\\b/i,\n alias: 'constant'\n },\n 'file-path': {\n pattern:\n /\\b[a-z]:[\\\\/][^\\s|,;:(){}\\[\\]\"']+|(^|[\\s:\\[\\](>|])\\.{0,2}\\/\\w[^\\s|,;:(){}\\[\\]\"']*/i,\n lookbehind: true,\n greedy: true,\n alias: 'string'\n },\n date: {\n pattern: RegExp(\n /\\b\\d{4}[-/]\\d{2}[-/]\\d{2}(?:T(?=\\d{1,2}:)|(?=\\s\\d{1,2}:))/.source +\n '|' +\n /\\b\\d{1,4}[-/ ](?:\\d{1,2}|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)[-/ ]\\d{2,4}T?\\b/\n .source +\n '|' +\n /\\b(?:(?:Fri|Mon|Sat|Sun|Thu|Tue|Wed)(?:\\s{1,2}(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep))?|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)\\s{1,2}\\d{1,2}\\b/\n .source,\n 'i'\n ),\n alias: 'number'\n },\n time: {\n pattern:\n /\\b\\d{1,2}:\\d{1,2}:\\d{1,2}(?:[.,:]\\d+)?(?:\\s?[+-]\\d{2}:?\\d{2}|Z)?\\b/,\n alias: 'number'\n },\n boolean: /\\b(?:false|null|true)\\b/i,\n number: {\n pattern:\n /(^|[^.\\w])(?:0x[a-f0-9]+|0o[0-7]+|0b[01]+|v?\\d[\\da-f]*(?:\\.\\d+)*(?:e[+-]?\\d+)?[a-z]{0,3}\\b)\\b(?!\\.\\w)/i,\n lookbehind: true\n },\n operator: /[;:?<=>~/@!$%&+\\-|^(){}*#]/,\n punctuation: /[\\[\\].,]/\n }\n}\n","// @ts-nocheck\nlolcode.displayName = 'lolcode'\nlolcode.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function lolcode(Prism) {\n Prism.languages.lolcode = {\n comment: [/\\bOBTW\\s[\\s\\S]*?\\sTLDR\\b/, /\\bBTW.+/],\n string: {\n pattern: /\"(?::.|[^\":])*\"/,\n inside: {\n variable: /:\\{[^}]+\\}/,\n symbol: [/:\\([a-f\\d]+\\)/i, /:\\[[^\\]]+\\]/, /:[)>o\":]/]\n },\n greedy: true\n },\n number: /(?:\\B-)?(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)/,\n symbol: {\n pattern: /(^|\\s)(?:A )?(?:BUKKIT|NOOB|NUMBAR|NUMBR|TROOF|YARN)(?=\\s|,|$)/,\n lookbehind: true,\n inside: {\n keyword: /A(?=\\s)/\n }\n },\n label: {\n pattern: /((?:^|\\s)(?:IM IN YR|IM OUTTA YR) )[a-zA-Z]\\w*/,\n lookbehind: true,\n alias: 'string'\n },\n function: {\n pattern: /((?:^|\\s)(?:HOW IZ I|I IZ|IZ) )[a-zA-Z]\\w*/,\n lookbehind: true\n },\n keyword: [\n {\n pattern:\n /(^|\\s)(?:AN|FOUND YR|GIMMEH|GTFO|HAI|HAS A|HOW IZ I|I HAS A|I IZ|IF U SAY SO|IM IN YR|IM OUTTA YR|IS NOW(?: A)?|ITZ(?: A)?|IZ|KTHX|KTHXBYE|LIEK(?: A)?|MAEK|MEBBE|MKAY|NERFIN|NO WAI|O HAI IM|O RLY\\?|OIC|OMG|OMGWTF|R|SMOOSH|SRS|TIL|UPPIN|VISIBLE|WILE|WTF\\?|YA RLY|YR)(?=\\s|,|$)/,\n lookbehind: true\n },\n /'Z(?=\\s|,|$)/\n ],\n boolean: {\n pattern: /(^|\\s)(?:FAIL|WIN)(?=\\s|,|$)/,\n lookbehind: true\n },\n variable: {\n pattern: /(^|\\s)IT(?=\\s|,|$)/,\n lookbehind: true\n },\n operator: {\n pattern:\n /(^|\\s)(?:NOT|BOTH SAEM|DIFFRINT|(?:ALL|ANY|BIGGR|BOTH|DIFF|EITHER|MOD|PRODUKT|QUOSHUNT|SMALLR|SUM|WON) OF)(?=\\s|,|$)/,\n lookbehind: true\n },\n punctuation: /\\.{3}|…|,|!/\n }\n}\n","// @ts-nocheck\nmagma.displayName = 'magma'\nmagma.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function magma(Prism) {\n Prism.languages.magma = {\n output: {\n pattern:\n /^(>.*(?:\\r(?:\\n|(?!\\n))|\\n))(?!>)(?:.+|(?:\\r(?:\\n|(?!\\n))|\\n)(?!>).*)(?:(?:\\r(?:\\n|(?!\\n))|\\n)(?!>).*)*/m,\n lookbehind: true,\n greedy: true\n },\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n greedy: true\n },\n string: {\n pattern: /(^|[^\\\\\"])\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"/,\n lookbehind: true,\n greedy: true\n },\n // http://magma.maths.usyd.edu.au/magma/handbook/text/82\n keyword:\n /\\b(?:_|adj|and|assert|assert2|assert3|assigned|break|by|case|cat|catch|clear|cmpeq|cmpne|continue|declare|default|delete|diff|div|do|elif|else|end|eq|error|eval|exists|exit|for|forall|forward|fprintf|freeze|function|ge|gt|if|iload|import|in|intrinsic|is|join|le|load|local|lt|meet|mod|ne|not|notadj|notin|notsubset|or|print|printf|procedure|quit|random|read|readi|repeat|require|requirege|requirerange|restore|return|save|sdiff|select|subset|then|time|to|try|until|vprint|vprintf|vtime|when|where|while|xor)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n generator: {\n pattern: /\\b[a-z_]\\w*(?=\\s*<)/i,\n alias: 'class-name'\n },\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n number: {\n pattern:\n /(^|[^\\w.]|\\.\\.)(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?:_[a-z]?)?(?=$|[^\\w.]|\\.\\.)/,\n lookbehind: true\n },\n operator: /->|[-+*/^~!|#=]|:=|\\.\\./,\n punctuation: /[()[\\]{}<>,;.:]/\n }\n}\n","// @ts-nocheck\nmata.displayName = 'mata'\nmata.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function mata(Prism) {\n // https://www.stata.com/manuals/m.pdf\n\n ;(function (Prism) {\n var orgType = /\\b(?:(?:col|row)?vector|matrix|scalar)\\b/.source\n var type =\n /\\bvoid\\b|<org>|\\b(?:complex|numeric|pointer(?:\\s*\\([^()]*\\))?|real|string|(?:class|struct)\\s+\\w+|transmorphic)(?:\\s*<org>)?/.source.replace(\n /<org>/g,\n orgType\n )\n Prism.languages.mata = {\n comment: {\n pattern:\n /\\/\\/.*|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\//,\n greedy: true\n },\n string: {\n pattern: /\"[^\"\\r\\n]*\"|[‘`']\".*?\"[’`']/,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:class|extends|struct)\\s+)\\w+(?=\\s*(?:\\{|\\bextends\\b))/,\n lookbehind: true\n },\n type: {\n pattern: RegExp(type),\n alias: 'class-name',\n inside: {\n punctuation: /[()]/,\n keyword: /\\b(?:class|function|struct|void)\\b/\n }\n },\n keyword:\n /\\b(?:break|class|continue|do|else|end|extends|external|final|for|function|goto|if|pragma|private|protected|public|return|static|struct|unset|unused|version|virtual|while)\\b/,\n constant: /\\bNULL\\b/,\n number: {\n pattern:\n /(^|[^\\w.])(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|\\d[a-f0-9]*(?:\\.[a-f0-9]+)?x[+-]?\\d+)i?(?![\\w.])/i,\n lookbehind: true\n },\n missing: {\n pattern: /(^|[^\\w.])(?:\\.[a-z]?)(?![\\w.])/,\n lookbehind: true,\n alias: 'symbol'\n },\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n operator: /\\.\\.|\\+\\+|--|&&|\\|\\||:?(?:[!=<>]=|[+\\-*/^<>&|:])|[!?=\\\\#’`']/,\n punctuation: /[()[\\]{},;.]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nmatlab.displayName = 'matlab'\nmatlab.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function matlab(Prism) {\n Prism.languages.matlab = {\n comment: [/%\\{[\\s\\S]*?\\}%/, /%.+/],\n string: {\n pattern: /\\B'(?:''|[^'\\r\\n])*'/,\n greedy: true\n },\n // FIXME We could handle imaginary numbers as a whole\n number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?(?:[ij])?|\\b[ij]\\b/,\n keyword:\n /\\b(?:NaN|break|case|catch|continue|else|elseif|end|for|function|if|inf|otherwise|parfor|pause|pi|return|switch|try|while)\\b/,\n function: /\\b(?!\\d)\\w+(?=\\s*\\()/,\n operator: /\\.?[*^\\/\\\\']|[+\\-:@]|[<>=~]=?|&&?|\\|\\|?/,\n punctuation: /\\.{3}|[.,;\\[\\](){}!]/\n }\n}\n","// @ts-nocheck\nmaxscript.displayName = 'maxscript'\nmaxscript.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function maxscript(Prism) {\n ;(function (Prism) {\n var keywords =\n /\\b(?:about|and|animate|as|at|attributes|by|case|catch|collect|continue|coordsys|do|else|exit|fn|for|from|function|global|if|in|local|macroscript|mapped|max|not|of|off|on|or|parameters|persistent|plugin|rcmenu|return|rollout|set|struct|then|throw|to|tool|try|undo|utility|when|where|while|with)\\b/i\n Prism.languages.maxscript = {\n comment: {\n pattern: /\\/\\*[\\s\\S]*?(?:\\*\\/|$)|--.*/,\n greedy: true\n },\n string: {\n pattern: /(^|[^\"\\\\@])(?:\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"|@\"[^\"]*\")/,\n lookbehind: true,\n greedy: true\n },\n path: {\n pattern: /\\$(?:[\\w/\\\\.*?]|'[^']*')*/,\n greedy: true,\n alias: 'string'\n },\n 'function-call': {\n pattern: RegExp(\n '((?:' +\n // start of line\n (/^/.source +\n '|' +\n // operators and other language constructs\n /[;=<>+\\-*/^({\\[]/.source +\n '|' +\n // keywords as part of statements\n /\\b(?:and|by|case|catch|collect|do|else|if|in|not|or|return|then|to|try|where|while|with)\\b/\n .source) +\n ')[ \\t]*)' +\n '(?!' +\n keywords.source +\n ')' +\n /[a-z_]\\w*\\b/.source +\n '(?=[ \\t]*(?:' +\n // variable\n ('(?!' +\n keywords.source +\n ')' +\n /[a-z_]/.source +\n '|' +\n // number\n /\\d|-\\.?\\d/.source +\n '|' +\n // other expressions or literals\n /[({'\"$@#?]/.source) +\n '))',\n 'im'\n ),\n lookbehind: true,\n greedy: true,\n alias: 'function'\n },\n 'function-definition': {\n pattern: /(\\b(?:fn|function)\\s+)\\w+\\b/i,\n lookbehind: true,\n alias: 'function'\n },\n argument: {\n pattern: /\\b[a-z_]\\w*(?=:)/i,\n alias: 'attr-name'\n },\n keyword: keywords,\n boolean: /\\b(?:false|true)\\b/,\n time: {\n pattern:\n /(^|[^\\w.])(?:(?:(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eEdD][+-]\\d+|[LP])?[msft])+|\\d+:\\d+(?:\\.\\d*)?)(?![\\w.:])/,\n lookbehind: true,\n alias: 'number'\n },\n number: [\n {\n pattern:\n /(^|[^\\w.])(?:(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eEdD][+-]\\d+|[LP])?|0x[a-fA-F0-9]+)(?![\\w.:])/,\n lookbehind: true\n },\n /\\b(?:e|pi)\\b/\n ],\n constant: /\\b(?:dontcollect|ok|silentValue|undefined|unsupplied)\\b/,\n color: {\n pattern: /\\b(?:black|blue|brown|gray|green|orange|red|white|yellow)\\b/i,\n alias: 'constant'\n },\n operator: /[-+*/<>=!]=?|[&^?]|#(?!\\()/,\n punctuation: /[()\\[\\]{}.:,;]|#(?=\\()|\\\\$/m\n }\n })(Prism)\n}\n","// @ts-nocheck\nmel.displayName = 'mel'\nmel.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function mel(Prism) {\n Prism.languages.mel = {\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n greedy: true\n },\n code: {\n pattern: /`(?:\\\\.|[^\\\\`])*`/,\n greedy: true,\n alias: 'italic',\n inside: {\n delimiter: {\n pattern: /^`|`$/,\n alias: 'punctuation'\n },\n statement: {\n pattern: /[\\s\\S]+/,\n inside: null // see below\n }\n }\n },\n\n string: {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n variable: /\\$\\w+/,\n number: /\\b0x[\\da-fA-F]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+/,\n flag: {\n pattern: /-[^\\d\\W]\\w*/,\n alias: 'operator'\n },\n keyword:\n /\\b(?:break|case|continue|default|do|else|float|for|global|if|in|int|matrix|proc|return|string|switch|vector|while)\\b/,\n function: {\n pattern:\n /((?:^|[{;])[ \\t]*)[a-z_]\\w*\\b(?!\\s*(?:\\.(?!\\.)|[[{=]))|\\b[a-z_]\\w*(?=[ \\t]*\\()/im,\n lookbehind: true,\n greedy: true\n },\n 'tensor-punctuation': {\n pattern: /<<|>>/,\n alias: 'punctuation'\n },\n operator: /\\+[+=]?|-[-=]?|&&|\\|\\||[<>]=?|[*\\/!=]=?|[%^]/,\n punctuation: /[.,:;?\\[\\](){}]/\n }\n Prism.languages.mel['code'].inside['statement'].inside = Prism.languages.mel\n}\n","// @ts-nocheck\nmermaid.displayName = 'mermaid'\nmermaid.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function mermaid(Prism) {\n Prism.languages.mermaid = {\n comment: {\n pattern: /%%.*/,\n greedy: true\n },\n style: {\n pattern:\n /^([ \\t]*(?:classDef|linkStyle|style)[ \\t]+[\\w$-]+[ \\t]+)\\w.*[^\\s;]/m,\n lookbehind: true,\n inside: {\n property: /\\b\\w[\\w-]*(?=[ \\t]*:)/,\n operator: /:/,\n punctuation: /,/\n }\n },\n 'inter-arrow-label': {\n pattern:\n /([^<>ox.=-])(?:-[-.]|==)(?![<>ox.=-])[ \\t]*(?:\"[^\"\\r\\n]*\"|[^\\s\".=-](?:[^\\r\\n.=-]*[^\\s.=-])?)[ \\t]*(?:\\.+->?|--+[->]|==+[=>])(?![<>ox.=-])/,\n lookbehind: true,\n greedy: true,\n inside: {\n arrow: {\n pattern: /(?:\\.+->?|--+[->]|==+[=>])$/,\n alias: 'operator'\n },\n label: {\n pattern: /^([\\s\\S]{2}[ \\t]*)\\S(?:[\\s\\S]*\\S)?/,\n lookbehind: true,\n alias: 'property'\n },\n 'arrow-head': {\n pattern: /^\\S+/,\n alias: ['arrow', 'operator']\n }\n }\n },\n arrow: [\n // This might look complex but it really isn't.\n // There are many possible arrows (see tests) and it's impossible to fit all of them into one pattern. The\n // problem is that we only have one lookbehind per pattern. However, we cannot disallow too many arrow\n // characters in the one lookbehind because that would create too many false negatives. So we have to split the\n // arrows into different patterns.\n {\n // ER diagram\n pattern: /(^|[^{}|o.-])[|}][|o](?:--|\\.\\.)[|o][|{](?![{}|o.-])/,\n lookbehind: true,\n alias: 'operator'\n },\n {\n // flow chart\n // (?:==+|--+|-\\.*-)\n pattern:\n /(^|[^<>ox.=-])(?:[<ox](?:==+|--+|-\\.*-)[>ox]?|(?:==+|--+|-\\.*-)[>ox]|===+|---+|-\\.+-)(?![<>ox.=-])/,\n lookbehind: true,\n alias: 'operator'\n },\n {\n // sequence diagram\n pattern:\n /(^|[^<>()x-])(?:--?(?:>>|[x>)])(?![<>()x])|(?:<<|[x<(])--?(?!-))/,\n lookbehind: true,\n alias: 'operator'\n },\n {\n // class diagram\n pattern:\n /(^|[^<>|*o.-])(?:[*o]--|--[*o]|<\\|?(?:--|\\.\\.)|(?:--|\\.\\.)\\|?>|--|\\.\\.)(?![<>|*o.-])/,\n lookbehind: true,\n alias: 'operator'\n }\n ],\n label: {\n pattern: /(^|[^|<])\\|(?:[^\\r\\n\"|]|\"[^\"\\r\\n]*\")+\\|/,\n lookbehind: true,\n greedy: true,\n alias: 'property'\n },\n text: {\n pattern: /(?:[(\\[{]+|\\b>)(?:[^\\r\\n\"()\\[\\]{}]|\"[^\"\\r\\n]*\")+(?:[)\\]}]+|>)/,\n alias: 'string'\n },\n string: {\n pattern: /\"[^\"\\r\\n]*\"/,\n greedy: true\n },\n annotation: {\n pattern:\n /<<(?:abstract|choice|enumeration|fork|interface|join|service)>>|\\[\\[(?:choice|fork|join)\\]\\]/i,\n alias: 'important'\n },\n keyword: [\n // This language has both case-sensitive and case-insensitive keywords\n {\n pattern:\n /(^[ \\t]*)(?:action|callback|class|classDef|classDiagram|click|direction|erDiagram|flowchart|gantt|gitGraph|graph|journey|link|linkStyle|pie|requirementDiagram|sequenceDiagram|stateDiagram|stateDiagram-v2|style|subgraph)(?![\\w$-])/m,\n lookbehind: true,\n greedy: true\n },\n {\n pattern:\n /(^[ \\t]*)(?:activate|alt|and|as|autonumber|deactivate|else|end(?:[ \\t]+note)?|loop|opt|par|participant|rect|state|note[ \\t]+(?:over|(?:left|right)[ \\t]+of))(?![\\w$-])/im,\n lookbehind: true,\n greedy: true\n }\n ],\n entity: /#[a-z0-9]+;/,\n operator: {\n pattern: /(\\w[ \\t]*)&(?=[ \\t]*\\w)|:::|:/,\n lookbehind: true\n },\n punctuation: /[(){};]/\n }\n}\n","// @ts-nocheck\nmetafont.displayName = 'metafont'\nmetafont.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function metafont(Prism) {\n Prism.languages.metafont = {\n // Syntax of METAFONT with the added (public) elements of PlainMETAFONT. Except for internal quantities they are expected to be rarely redefined. Freely inspired by the syntax of Christophe Grandsire for the Crimson Editor.\n comment: {\n pattern: /%.*/,\n greedy: true\n },\n string: {\n pattern: /\"[^\\r\\n\"]*\"/,\n greedy: true\n },\n number: /\\d*\\.?\\d+/,\n boolean: /\\b(?:false|true)\\b/,\n punctuation: [\n /[,;()]/,\n {\n pattern: /(^|[^{}])(?:\\{|\\})(?![{}])/,\n lookbehind: true\n },\n {\n pattern: /(^|[^[])\\[(?!\\[)/,\n lookbehind: true\n },\n {\n pattern: /(^|[^\\]])\\](?!\\])/,\n lookbehind: true\n }\n ],\n constant: [\n {\n pattern: /(^|[^!?])\\?\\?\\?(?![!?])/,\n lookbehind: true\n },\n {\n pattern: /(^|[^/*\\\\])(?:\\\\|\\\\\\\\)(?![/*\\\\])/,\n lookbehind: true\n },\n /\\b(?:_|blankpicture|bp|cc|cm|dd|ditto|down|eps|epsilon|fullcircle|halfcircle|identity|in|infinity|left|mm|nullpen|nullpicture|origin|pc|penrazor|penspeck|pensquare|penstroke|proof|pt|quartercircle|relax|right|smoke|unitpixel|unitsquare|up)\\b/\n ],\n quantity: {\n pattern:\n /\\b(?:autorounding|blacker|boundarychar|charcode|chardp|chardx|chardy|charext|charht|charic|charwd|currentwindow|day|designsize|displaying|fillin|fontmaking|granularity|hppp|join_radius|month|o_correction|pausing|pen_(?:bot|lft|rt|top)|pixels_per_inch|proofing|showstopping|smoothing|time|tolerance|tracingcapsules|tracingchoices|tracingcommands|tracingedges|tracingequations|tracingmacros|tracingonline|tracingoutput|tracingpens|tracingrestores|tracingspecs|tracingstats|tracingtitles|turningcheck|vppp|warningcheck|xoffset|year|yoffset)\\b/,\n alias: 'keyword'\n },\n command: {\n pattern:\n /\\b(?:addto|batchmode|charlist|cull|display|errhelp|errmessage|errorstopmode|everyjob|extensible|fontdimen|headerbyte|inner|interim|let|ligtable|message|newinternal|nonstopmode|numspecial|openwindow|outer|randomseed|save|scrollmode|shipout|show|showdependencies|showstats|showtoken|showvariable|special)\\b/,\n alias: 'builtin'\n },\n operator: [\n {\n pattern:\n /(^|[^>=<:|])(?:<|<=|=|=:|\\|=:|\\|=:>|=:\\|>|=:\\||\\|=:\\||\\|=:\\|>|\\|=:\\|>>|>|>=|:|:=|<>|::|\\|\\|:)(?![>=<:|])/,\n lookbehind: true\n },\n {\n pattern: /(^|[^+-])(?:\\+|\\+\\+|-{1,3}|\\+-\\+)(?![+-])/,\n lookbehind: true\n },\n {\n pattern: /(^|[^/*\\\\])(?:\\*|\\*\\*|\\/)(?![/*\\\\])/,\n lookbehind: true\n },\n {\n pattern: /(^|[^.])(?:\\.{2,3})(?!\\.)/,\n lookbehind: true\n },\n {\n pattern: /(^|[^@#&$])&(?![@#&$])/,\n lookbehind: true\n },\n /\\b(?:and|not|or)\\b/\n ],\n macro: {\n pattern:\n /\\b(?:abs|beginchar|bot|byte|capsule_def|ceiling|change_width|clear_pen_memory|clearit|clearpen|clearxy|counterclockwise|cullit|cutdraw|cutoff|decr|define_blacker_pixels|define_corrected_pixels|define_good_x_pixels|define_good_y_pixels|define_horizontal_corrected_pixels|define_pixels|define_whole_blacker_pixels|define_whole_pixels|define_whole_vertical_blacker_pixels|define_whole_vertical_pixels|dir|direction|directionpoint|div|dotprod|downto|draw|drawdot|endchar|erase|fill|filldraw|fix_units|flex|font_coding_scheme|font_extra_space|font_identifier|font_normal_shrink|font_normal_space|font_normal_stretch|font_quad|font_size|font_slant|font_x_height|gfcorners|gobble|gobbled|good\\.(?:bot|lft|rt|top|x|y)|grayfont|hide|hround|imagerules|incr|interact|interpath|intersectionpoint|inverse|italcorr|killtext|labelfont|labels|lft|loggingall|lowres_fix|makegrid|makelabel(?:\\.(?:bot|lft|rt|top)(?:\\.nodot)?)?|max|min|mod|mode_def|mode_setup|nodisplays|notransforms|numtok|openit|penlabels|penpos|pickup|proofoffset|proofrule|proofrulethickness|range|reflectedabout|rotatedabout|rotatedaround|round|rt|savepen|screenchars|screenrule|screenstrokes|shipit|showit|slantfont|softjoin|solve|stop|superellipse|tensepath|thru|titlefont|top|tracingall|tracingnone|undraw|undrawdot|unfill|unfilldraw|upto|vround)\\b/,\n alias: 'function'\n },\n builtin:\n /\\b(?:ASCII|angle|char|cosd|decimal|directiontime|floor|hex|intersectiontimes|jobname|known|length|makepath|makepen|mexp|mlog|normaldeviate|oct|odd|pencircle|penoffset|point|postcontrol|precontrol|reverse|rotated|sind|sqrt|str|subpath|substring|totalweight|turningnumber|uniformdeviate|unknown|xpart|xxpart|xypart|ypart|yxpart|yypart)\\b/,\n keyword:\n /\\b(?:also|at|atleast|begingroup|charexists|contour|controls|curl|cycle|def|delimiters|doublepath|dropping|dump|else|elseif|end|enddef|endfor|endgroup|endinput|exitif|exitunless|expandafter|fi|for|forever|forsuffixes|from|if|input|inwindow|keeping|kern|of|primarydef|quote|readstring|scaled|scantokens|secondarydef|shifted|skipto|slanted|step|tension|tertiarydef|to|transformed|until|vardef|withpen|withweight|xscaled|yscaled|zscaled)\\b/,\n type: {\n pattern:\n /\\b(?:boolean|expr|numeric|pair|path|pen|picture|primary|secondary|string|suffix|tertiary|text|transform)\\b/,\n alias: 'property'\n },\n variable: {\n pattern:\n /(^|[^@#&$])(?:@#|#@|#|@)(?![@#&$])|\\b(?:aspect_ratio|currentpen|currentpicture|currenttransform|d|extra_beginchar|extra_endchar|extra_setup|h|localfont|mag|mode|screen_cols|screen_rows|w|whatever|x|y|z)\\b/,\n lookbehind: true\n }\n }\n}\n","// @ts-nocheck\nmizar.displayName = 'mizar'\nmizar.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function mizar(Prism) {\n Prism.languages.mizar = {\n comment: /::.+/,\n keyword:\n /@proof\\b|\\b(?:according|aggregate|all|and|antonym|are|as|associativity|assume|asymmetry|attr|be|begin|being|by|canceled|case|cases|clusters?|coherence|commutativity|compatibility|connectedness|consider|consistency|constructors|contradiction|correctness|def|deffunc|define|definitions?|defpred|do|does|end|environ|equals|ex|exactly|existence|for|from|func|given|hence|hereby|holds|idempotence|identity|iff?|implies|involutiveness|irreflexivity|is|it|let|means|mode|non|not|notations?|now|of|or|otherwise|over|per|pred|prefix|projectivity|proof|provided|qua|reconsider|redefine|reduce|reducibility|reflexivity|registrations?|requirements|reserve|sch|schemes?|section|selector|set|sethood|st|struct|such|suppose|symmetry|synonym|take|that|the|then|theorems?|thesis|thus|to|transitivity|uniqueness|vocabular(?:ies|y)|when|where|with|wrt)\\b/,\n parameter: {\n pattern: /\\$(?:10|\\d)/,\n alias: 'variable'\n },\n variable: /\\b\\w+(?=:)/,\n number: /(?:\\b|-)\\d+\\b/,\n operator: /\\.\\.\\.|->|&|\\.?=/,\n punctuation: /\\(#|#\\)|[,:;\\[\\](){}]/\n }\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\nmongodb.displayName = 'mongodb'\nmongodb.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function mongodb(Prism) {\n Prism.register(refractorJavascript)\n ;(function (Prism) {\n var operators = [\n // query and projection\n '$eq',\n '$gt',\n '$gte',\n '$in',\n '$lt',\n '$lte',\n '$ne',\n '$nin',\n '$and',\n '$not',\n '$nor',\n '$or',\n '$exists',\n '$type',\n '$expr',\n '$jsonSchema',\n '$mod',\n '$regex',\n '$text',\n '$where',\n '$geoIntersects',\n '$geoWithin',\n '$near',\n '$nearSphere',\n '$all',\n '$elemMatch',\n '$size',\n '$bitsAllClear',\n '$bitsAllSet',\n '$bitsAnyClear',\n '$bitsAnySet',\n '$comment',\n '$elemMatch',\n '$meta',\n '$slice',\n // update\n '$currentDate',\n '$inc',\n '$min',\n '$max',\n '$mul',\n '$rename',\n '$set',\n '$setOnInsert',\n '$unset',\n '$addToSet',\n '$pop',\n '$pull',\n '$push',\n '$pullAll',\n '$each',\n '$position',\n '$slice',\n '$sort',\n '$bit',\n // aggregation pipeline stages\n '$addFields',\n '$bucket',\n '$bucketAuto',\n '$collStats',\n '$count',\n '$currentOp',\n '$facet',\n '$geoNear',\n '$graphLookup',\n '$group',\n '$indexStats',\n '$limit',\n '$listLocalSessions',\n '$listSessions',\n '$lookup',\n '$match',\n '$merge',\n '$out',\n '$planCacheStats',\n '$project',\n '$redact',\n '$replaceRoot',\n '$replaceWith',\n '$sample',\n '$set',\n '$skip',\n '$sort',\n '$sortByCount',\n '$unionWith',\n '$unset',\n '$unwind',\n '$setWindowFields',\n // aggregation pipeline operators\n '$abs',\n '$accumulator',\n '$acos',\n '$acosh',\n '$add',\n '$addToSet',\n '$allElementsTrue',\n '$and',\n '$anyElementTrue',\n '$arrayElemAt',\n '$arrayToObject',\n '$asin',\n '$asinh',\n '$atan',\n '$atan2',\n '$atanh',\n '$avg',\n '$binarySize',\n '$bsonSize',\n '$ceil',\n '$cmp',\n '$concat',\n '$concatArrays',\n '$cond',\n '$convert',\n '$cos',\n '$dateFromParts',\n '$dateToParts',\n '$dateFromString',\n '$dateToString',\n '$dayOfMonth',\n '$dayOfWeek',\n '$dayOfYear',\n '$degreesToRadians',\n '$divide',\n '$eq',\n '$exp',\n '$filter',\n '$first',\n '$floor',\n '$function',\n '$gt',\n '$gte',\n '$hour',\n '$ifNull',\n '$in',\n '$indexOfArray',\n '$indexOfBytes',\n '$indexOfCP',\n '$isArray',\n '$isNumber',\n '$isoDayOfWeek',\n '$isoWeek',\n '$isoWeekYear',\n '$last',\n '$last',\n '$let',\n '$literal',\n '$ln',\n '$log',\n '$log10',\n '$lt',\n '$lte',\n '$ltrim',\n '$map',\n '$max',\n '$mergeObjects',\n '$meta',\n '$min',\n '$millisecond',\n '$minute',\n '$mod',\n '$month',\n '$multiply',\n '$ne',\n '$not',\n '$objectToArray',\n '$or',\n '$pow',\n '$push',\n '$radiansToDegrees',\n '$range',\n '$reduce',\n '$regexFind',\n '$regexFindAll',\n '$regexMatch',\n '$replaceOne',\n '$replaceAll',\n '$reverseArray',\n '$round',\n '$rtrim',\n '$second',\n '$setDifference',\n '$setEquals',\n '$setIntersection',\n '$setIsSubset',\n '$setUnion',\n '$size',\n '$sin',\n '$slice',\n '$split',\n '$sqrt',\n '$stdDevPop',\n '$stdDevSamp',\n '$strcasecmp',\n '$strLenBytes',\n '$strLenCP',\n '$substr',\n '$substrBytes',\n '$substrCP',\n '$subtract',\n '$sum',\n '$switch',\n '$tan',\n '$toBool',\n '$toDate',\n '$toDecimal',\n '$toDouble',\n '$toInt',\n '$toLong',\n '$toObjectId',\n '$toString',\n '$toLower',\n '$toUpper',\n '$trim',\n '$trunc',\n '$type',\n '$week',\n '$year',\n '$zip',\n '$count',\n '$dateAdd',\n '$dateDiff',\n '$dateSubtract',\n '$dateTrunc',\n '$getField',\n '$rand',\n '$sampleRate',\n '$setField',\n '$unsetField',\n // aggregation pipeline query modifiers\n '$comment',\n '$explain',\n '$hint',\n '$max',\n '$maxTimeMS',\n '$min',\n '$orderby',\n '$query',\n '$returnKey',\n '$showDiskLoc',\n '$natural'\n ]\n var builtinFunctions = [\n 'ObjectId',\n 'Code',\n 'BinData',\n 'DBRef',\n 'Timestamp',\n 'NumberLong',\n 'NumberDecimal',\n 'MaxKey',\n 'MinKey',\n 'RegExp',\n 'ISODate',\n 'UUID'\n ]\n operators = operators.map(function (operator) {\n return operator.replace('$', '\\\\$')\n })\n var operatorsSource = '(?:' + operators.join('|') + ')\\\\b'\n Prism.languages.mongodb = Prism.languages.extend('javascript', {})\n Prism.languages.insertBefore('mongodb', 'string', {\n property: {\n pattern:\n /(?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)(?=\\s*:)/,\n greedy: true,\n inside: {\n keyword: RegExp('^([\\'\"])?' + operatorsSource + '(?:\\\\1)?$')\n }\n }\n })\n Prism.languages.mongodb.string.inside = {\n url: {\n // url pattern\n pattern:\n /https?:\\/\\/[-\\w@:%.+~#=]{1,256}\\.[a-z0-9()]{1,6}\\b[-\\w()@:%+.~#?&/=]*/i,\n greedy: true\n },\n entity: {\n // ipv4\n pattern:\n /\\b(?:(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\b/,\n greedy: true\n }\n }\n Prism.languages.insertBefore('mongodb', 'constant', {\n builtin: {\n pattern: RegExp('\\\\b(?:' + builtinFunctions.join('|') + ')\\\\b'),\n alias: 'keyword'\n }\n })\n })(Prism)\n}\n","// @ts-nocheck\nmonkey.displayName = 'monkey'\nmonkey.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function monkey(Prism) {\n Prism.languages.monkey = {\n comment: {\n pattern: /^#Rem\\s[\\s\\S]*?^#End|'.+/im,\n greedy: true\n },\n string: {\n pattern: /\"[^\"\\r\\n]*\"/,\n greedy: true\n },\n preprocessor: {\n pattern: /(^[ \\t]*)#.+/m,\n lookbehind: true,\n greedy: true,\n alias: 'property'\n },\n function: /\\b\\w+(?=\\()/,\n 'type-char': {\n pattern: /\\b[?%#$]/,\n alias: 'class-name'\n },\n number: {\n pattern:\n /((?:\\.\\.)?)(?:(?:\\b|\\B-\\.?|\\B\\.)\\d+(?:(?!\\.\\.)\\.\\d*)?|\\$[\\da-f]+)/i,\n lookbehind: true\n },\n keyword:\n /\\b(?:Abstract|Array|Bool|Case|Catch|Class|Const|Continue|Default|Eachin|Else|ElseIf|End|EndIf|Exit|Extends|Extern|False|Field|Final|Float|For|Forever|Function|Global|If|Implements|Import|Inline|Int|Interface|Local|Method|Module|New|Next|Null|Object|Private|Property|Public|Repeat|Return|Select|Self|Step|Strict|String|Super|Then|Throw|To|True|Try|Until|Void|Wend|While)\\b/i,\n operator:\n /\\.\\.|<[=>]?|>=?|:?=|(?:[+\\-*\\/&~|]|\\b(?:Mod|Shl|Shr)\\b)=?|\\b(?:And|Not|Or)\\b/i,\n punctuation: /[.,:;()\\[\\]]/\n }\n}\n","// @ts-nocheck\nmoonscript.displayName = 'moonscript'\nmoonscript.aliases = ['moon']\n\n/** @type {import('../core.js').Syntax} */\nexport default function moonscript(Prism) {\n Prism.languages.moonscript = {\n comment: /--.*/,\n string: [\n {\n pattern: /'[^']*'|\\[(=*)\\[[\\s\\S]*?\\]\\1\\]/,\n greedy: true\n },\n {\n pattern: /\"[^\"]*\"/,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /#\\{[^{}]*\\}/,\n inside: {\n moonscript: {\n pattern: /(^#\\{)[\\s\\S]+(?=\\})/,\n lookbehind: true,\n inside: null // see beow\n },\n\n 'interpolation-punctuation': {\n pattern: /#\\{|\\}/,\n alias: 'punctuation'\n }\n }\n }\n }\n }\n ],\n 'class-name': [\n {\n pattern: /(\\b(?:class|extends)[ \\t]+)\\w+/,\n lookbehind: true\n },\n // class-like names start with a capital letter\n /\\b[A-Z]\\w*/\n ],\n keyword:\n /\\b(?:class|continue|do|else|elseif|export|extends|for|from|if|import|in|local|nil|return|self|super|switch|then|unless|using|when|while|with)\\b/,\n variable: /@@?\\w*/,\n property: {\n pattern: /\\b(?!\\d)\\w+(?=:)|(:)(?!\\d)\\w+/,\n lookbehind: true\n },\n function: {\n pattern:\n /\\b(?:_G|_VERSION|assert|collectgarbage|coroutine\\.(?:create|resume|running|status|wrap|yield)|debug\\.(?:debug|getfenv|gethook|getinfo|getlocal|getmetatable|getregistry|getupvalue|setfenv|sethook|setlocal|setmetatable|setupvalue|traceback)|dofile|error|getfenv|getmetatable|io\\.(?:close|flush|input|lines|open|output|popen|read|stderr|stdin|stdout|tmpfile|type|write)|ipairs|load|loadfile|loadstring|math\\.(?:abs|acos|asin|atan|atan2|ceil|cos|cosh|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pi|pow|rad|random|randomseed|sin|sinh|sqrt|tan|tanh)|module|next|os\\.(?:clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\\.(?:cpath|loaded|loadlib|path|preload|seeall)|pairs|pcall|print|rawequal|rawget|rawset|require|select|setfenv|setmetatable|string\\.(?:byte|char|dump|find|format|gmatch|gsub|len|lower|match|rep|reverse|sub|upper)|table\\.(?:concat|insert|maxn|remove|sort)|tonumber|tostring|type|unpack|xpcall)\\b/,\n inside: {\n punctuation: /\\./\n }\n },\n boolean: /\\b(?:false|true)\\b/,\n number:\n /(?:\\B\\.\\d+|\\b\\d+\\.\\d+|\\b\\d+(?=[eE]))(?:[eE][-+]?\\d+)?\\b|\\b(?:0x[a-fA-F\\d]+|\\d+)(?:U?LL)?\\b/,\n operator:\n /\\.{3}|[-=]>|~=|(?:[-+*/%<>!=]|\\.\\.)=?|[:#^]|\\b(?:and|or)\\b=?|\\b(?:not)\\b/,\n punctuation: /[.,()[\\]{}\\\\]/\n }\n Prism.languages.moonscript.string[1].inside.interpolation.inside.moonscript.inside =\n Prism.languages.moonscript\n Prism.languages.moon = Prism.languages.moonscript\n}\n","// @ts-nocheck\nn1ql.displayName = 'n1ql'\nn1ql.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function n1ql(Prism) {\n // https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/index.html\n\n Prism.languages.n1ql = {\n comment: {\n pattern: /\\/\\*[\\s\\S]*?(?:$|\\*\\/)|--.*/,\n greedy: true\n },\n string: {\n pattern: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\]|\\1\\1)*\\1/,\n greedy: true\n },\n identifier: {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`]|``)*`/,\n greedy: true\n },\n parameter: /\\$[\\w.]+/,\n // https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/reservedwords.html#n1ql-reserved-words\n keyword:\n /\\b(?:ADVISE|ALL|ALTER|ANALYZE|AS|ASC|AT|BEGIN|BINARY|BOOLEAN|BREAK|BUCKET|BUILD|BY|CALL|CAST|CLUSTER|COLLATE|COLLECTION|COMMIT|COMMITTED|CONNECT|CONTINUE|CORRELATE|CORRELATED|COVER|CREATE|CURRENT|DATABASE|DATASET|DATASTORE|DECLARE|DECREMENT|DELETE|DERIVED|DESC|DESCRIBE|DISTINCT|DO|DROP|EACH|ELEMENT|EXCEPT|EXCLUDE|EXECUTE|EXPLAIN|FETCH|FILTER|FLATTEN|FLUSH|FOLLOWING|FOR|FORCE|FROM|FTS|FUNCTION|GOLANG|GRANT|GROUP|GROUPS|GSI|HASH|HAVING|IF|IGNORE|ILIKE|INCLUDE|INCREMENT|INDEX|INFER|INLINE|INNER|INSERT|INTERSECT|INTO|IS|ISOLATION|JAVASCRIPT|JOIN|KEY|KEYS|KEYSPACE|KNOWN|LANGUAGE|LAST|LEFT|LET|LETTING|LEVEL|LIMIT|LSM|MAP|MAPPING|MATCHED|MATERIALIZED|MERGE|MINUS|MISSING|NAMESPACE|NEST|NL|NO|NTH_VALUE|NULL|NULLS|NUMBER|OBJECT|OFFSET|ON|OPTION|OPTIONS|ORDER|OTHERS|OUTER|OVER|PARSE|PARTITION|PASSWORD|PATH|POOL|PRECEDING|PREPARE|PRIMARY|PRIVATE|PRIVILEGE|PROBE|PROCEDURE|PUBLIC|RANGE|RAW|REALM|REDUCE|RENAME|RESPECT|RETURN|RETURNING|REVOKE|RIGHT|ROLE|ROLLBACK|ROW|ROWS|SATISFIES|SAVEPOINT|SCHEMA|SCOPE|SELECT|SELF|SEMI|SET|SHOW|SOME|START|STATISTICS|STRING|SYSTEM|TIES|TO|TRAN|TRANSACTION|TRIGGER|TRUNCATE|UNBOUNDED|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNSET|UPDATE|UPSERT|USE|USER|USING|VALIDATE|VALUE|VALUES|VIA|VIEW|WHERE|WHILE|WINDOW|WITH|WORK|XOR)\\b/i,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n boolean: /\\b(?:FALSE|TRUE)\\b/i,\n number: /(?:\\b\\d+\\.|\\B\\.)\\d+e[+\\-]?\\d+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n operator:\n /[-+*\\/%]|!=|==?|\\|\\||<[>=]?|>=?|\\b(?:AND|ANY|ARRAY|BETWEEN|CASE|ELSE|END|EVERY|EXISTS|FIRST|IN|LIKE|NOT|OR|THEN|VALUED|WHEN|WITHIN)\\b/i,\n punctuation: /[;[\\](),.{}:]/\n }\n}\n","// @ts-nocheck\nnand2tetrisHdl.displayName = 'nand2tetris-hdl'\nnand2tetrisHdl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function nand2tetrisHdl(Prism) {\n Prism.languages['nand2tetris-hdl'] = {\n comment: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n keyword: /\\b(?:BUILTIN|CHIP|CLOCKED|IN|OUT|PARTS)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n function: /\\b[A-Za-z][A-Za-z0-9]*(?=\\()/,\n number: /\\b\\d+\\b/,\n operator: /=|\\.\\./,\n punctuation: /[{}[\\];(),:]/\n }\n}\n","// @ts-nocheck\nnaniscript.displayName = 'naniscript'\nnaniscript.aliases = ['nani']\n\n/** @type {import('../core.js').Syntax} */\nexport default function naniscript(Prism) {\n ;(function (Prism) {\n var expressionDef = /\\{[^\\r\\n\\[\\]{}]*\\}/\n var params = {\n 'quoted-string': {\n pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n alias: 'operator'\n },\n 'command-param-id': {\n pattern: /(\\s)\\w+:/,\n lookbehind: true,\n alias: 'property'\n },\n 'command-param-value': [\n {\n pattern: expressionDef,\n alias: 'selector'\n },\n {\n pattern: /([\\t ])\\S+/,\n lookbehind: true,\n greedy: true,\n alias: 'operator'\n },\n {\n pattern: /\\S(?:.*\\S)?/,\n alias: 'operator'\n }\n ]\n }\n Prism.languages.naniscript = {\n // ; ...\n comment: {\n pattern: /^([\\t ]*);.*/m,\n lookbehind: true\n },\n // > ...\n // Define is a control line starting with '>' followed by a word, a space and a text.\n define: {\n pattern: /^>.+/m,\n alias: 'tag',\n inside: {\n value: {\n pattern: /(^>\\w+[\\t ]+)(?!\\s)[^{}\\r\\n]+/,\n lookbehind: true,\n alias: 'operator'\n },\n key: {\n pattern: /(^>)\\w+/,\n lookbehind: true\n }\n }\n },\n // # ...\n label: {\n pattern: /^([\\t ]*)#[\\t ]*\\w+[\\t ]*$/m,\n lookbehind: true,\n alias: 'regex'\n },\n command: {\n pattern: /^([\\t ]*)@\\w+(?=[\\t ]|$).*/m,\n lookbehind: true,\n alias: 'function',\n inside: {\n 'command-name': /^@\\w+/,\n expression: {\n pattern: expressionDef,\n greedy: true,\n alias: 'selector'\n },\n 'command-params': {\n pattern: /\\s*\\S[\\s\\S]*/,\n inside: params\n }\n }\n },\n // Generic is any line that doesn't start with operators: ;>#@\n 'generic-text': {\n pattern: /(^[ \\t]*)[^#@>;\\s].*/m,\n lookbehind: true,\n alias: 'punctuation',\n inside: {\n // \\{ ... \\} ... \\[ ... \\] ... \\\"\n 'escaped-char': /\\\\[{}\\[\\]\"]/,\n expression: {\n pattern: expressionDef,\n greedy: true,\n alias: 'selector'\n },\n 'inline-command': {\n pattern: /\\[[\\t ]*\\w[^\\r\\n\\[\\]]*\\]/,\n greedy: true,\n alias: 'function',\n inside: {\n 'command-params': {\n pattern: /(^\\[[\\t ]*\\w+\\b)[\\s\\S]+(?=\\]$)/,\n lookbehind: true,\n inside: params\n },\n 'command-param-name': {\n pattern: /^(\\[[\\t ]*)\\w+/,\n lookbehind: true,\n alias: 'name'\n },\n 'start-stop-char': /[\\[\\]]/\n }\n }\n }\n }\n }\n Prism.languages.nani = Prism.languages['naniscript']\n\n /** @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token */\n\n /**\n * This hook is used to validate generic-text tokens for balanced brackets.\n * Mark token as bad-line when contains not balanced brackets: {},[]\n */\n Prism.hooks.add('after-tokenize', function (env) {\n /** @type {(Token | string)[]} */\n var tokens = env.tokens\n tokens.forEach(function (token) {\n if (typeof token !== 'string' && token.type === 'generic-text') {\n var content = getTextContent(token)\n if (!isBracketsBalanced(content)) {\n token.type = 'bad-line'\n token.content = content\n }\n }\n })\n })\n\n /**\n * @param {string} input\n * @returns {boolean}\n */\n function isBracketsBalanced(input) {\n var brackets = '[]{}'\n var stack = []\n for (var i = 0; i < input.length; i++) {\n var bracket = input[i]\n var bracketsIndex = brackets.indexOf(bracket)\n if (bracketsIndex !== -1) {\n if (bracketsIndex % 2 === 0) {\n stack.push(bracketsIndex + 1)\n } else if (stack.pop() !== bracketsIndex) {\n return false\n }\n }\n }\n return stack.length === 0\n }\n\n /**\n * @param {string | Token | (string | Token)[]} token\n * @returns {string}\n */\n function getTextContent(token) {\n if (typeof token === 'string') {\n return token\n } else if (Array.isArray(token)) {\n return token.map(getTextContent).join('')\n } else {\n return getTextContent(token.content)\n }\n }\n })(Prism)\n}\n","// @ts-nocheck\nnasm.displayName = 'nasm'\nnasm.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function nasm(Prism) {\n Prism.languages.nasm = {\n comment: /;.*$/m,\n string: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n label: {\n pattern: /(^\\s*)[A-Za-z._?$][\\w.?$@~#]*:/m,\n lookbehind: true,\n alias: 'function'\n },\n keyword: [\n /\\[?BITS (?:16|32|64)\\]?/,\n {\n pattern: /(^\\s*)section\\s*[a-z.]+:?/im,\n lookbehind: true\n },\n /(?:extern|global)[^;\\r\\n]*/i,\n /(?:CPU|DEFAULT|FLOAT).*$/m\n ],\n register: {\n pattern:\n /\\b(?:st\\d|[xyz]mm\\d\\d?|[cdt]r\\d|r\\d\\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|di|si|sp)|[cdefgs]s)\\b/i,\n alias: 'variable'\n },\n number:\n /(?:\\b|(?=\\$))(?:0[hx](?:\\.[\\da-f]+|[\\da-f]+(?:\\.[\\da-f]+)?)(?:p[+-]?\\d+)?|\\d[\\da-f]+[hx]|\\$\\d[\\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\\d+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:\\.?e[+-]?\\d+)?[dt]?)\\b/i,\n operator: /[\\[\\]*+\\-\\/%<>=&|$!]/\n }\n}\n","// @ts-nocheck\nneon.displayName = 'neon'\nneon.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function neon(Prism) {\n Prism.languages.neon = {\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n datetime: {\n pattern:\n /(^|[[{(=:,\\s])\\d\\d\\d\\d-\\d\\d?-\\d\\d?(?:(?:[Tt]| +)\\d\\d?:\\d\\d:\\d\\d(?:\\.\\d*)? *(?:Z|[-+]\\d\\d?(?::?\\d\\d)?)?)?(?=$|[\\]}),\\s])/,\n lookbehind: true,\n alias: 'number'\n },\n key: {\n pattern: /(^|[[{(,\\s])[^,:=[\\]{}()'\"\\s]+(?=\\s*:(?:$|[\\]}),\\s])|\\s*=)/,\n lookbehind: true,\n alias: 'property'\n },\n number: {\n pattern:\n /(^|[[{(=:,\\s])[+-]?(?:0x[\\da-fA-F]+|0o[0-7]+|0b[01]+|(?:\\d+(?:\\.\\d*)?|\\.?\\d+)(?:[eE][+-]?\\d+)?)(?=$|[\\]}),:=\\s])/,\n lookbehind: true\n },\n boolean: {\n pattern: /(^|[[{(=:,\\s])(?:false|no|true|yes)(?=$|[\\]}),:=\\s])/i,\n lookbehind: true\n },\n null: {\n pattern: /(^|[[{(=:,\\s])(?:null)(?=$|[\\]}),:=\\s])/i,\n lookbehind: true,\n alias: 'keyword'\n },\n string: {\n pattern:\n /(^|[[{(=:,\\s])(?:('''|\"\"\")\\r?\\n(?:(?:[^\\r\\n]|\\r?\\n(?![\\t ]*\\2))*\\r?\\n)?[\\t ]*\\2|'[^'\\r\\n]*'|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")/,\n lookbehind: true,\n greedy: true\n },\n literal: {\n pattern:\n /(^|[[{(=:,\\s])(?:[^#\"',:=[\\]{}()\\s`-]|[:-][^\"',=[\\]{}()\\s])(?:[^,:=\\]})(\\s]|:(?![\\s,\\]})]|$)|[ \\t]+[^#,:=\\]})(\\s])*/,\n lookbehind: true,\n alias: 'string'\n },\n punctuation: /[,:=[\\]{}()-]/\n }\n}\n","// @ts-nocheck\nnevod.displayName = 'nevod'\nnevod.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function nevod(Prism) {\n Prism.languages.nevod = {\n comment: /\\/\\/.*|(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$))/,\n string: {\n pattern: /(?:\"(?:\"\"|[^\"])*\"(?!\")|'(?:''|[^'])*'(?!'))!?\\*?/,\n greedy: true,\n inside: {\n 'string-attrs': /!$|!\\*$|\\*$/\n }\n },\n namespace: {\n pattern: /(@namespace\\s+)[a-zA-Z0-9\\-.]+(?=\\s*\\{)/,\n lookbehind: true\n },\n pattern: {\n pattern:\n /(@pattern\\s+)?#?[a-zA-Z0-9\\-.]+(?:\\s*\\(\\s*(?:~\\s*)?[a-zA-Z0-9\\-.]+\\s*(?:,\\s*(?:~\\s*)?[a-zA-Z0-9\\-.]*)*\\))?(?=\\s*=)/,\n lookbehind: true,\n inside: {\n 'pattern-name': {\n pattern: /^#?[a-zA-Z0-9\\-.]+/,\n alias: 'class-name'\n },\n fields: {\n pattern: /\\(.*\\)/,\n inside: {\n 'field-name': {\n pattern: /[a-zA-Z0-9\\-.]+/,\n alias: 'variable'\n },\n punctuation: /[,()]/,\n operator: {\n pattern: /~/,\n alias: 'field-hidden-mark'\n }\n }\n }\n }\n },\n search: {\n pattern: /(@search\\s+|#)[a-zA-Z0-9\\-.]+(?:\\.\\*)?(?=\\s*;)/,\n alias: 'function',\n lookbehind: true\n },\n keyword:\n /@(?:having|inside|namespace|outside|pattern|require|search|where)\\b/,\n 'standard-pattern': {\n pattern:\n /\\b(?:Alpha|AlphaNum|Any|Blank|End|LineBreak|Num|NumAlpha|Punct|Space|Start|Symbol|Word|WordBreak)\\b(?:\\([a-zA-Z0-9\\-.,\\s+]*\\))?/,\n inside: {\n 'standard-pattern-name': {\n pattern: /^[a-zA-Z0-9\\-.]+/,\n alias: 'builtin'\n },\n quantifier: {\n pattern: /\\b\\d+(?:\\s*\\+|\\s*-\\s*\\d+)?(?!\\w)/,\n alias: 'number'\n },\n 'standard-pattern-attr': {\n pattern: /[a-zA-Z0-9\\-.]+/,\n alias: 'builtin'\n },\n punctuation: /[,()]/\n }\n },\n quantifier: {\n pattern: /\\b\\d+(?:\\s*\\+|\\s*-\\s*\\d+)?(?!\\w)/,\n alias: 'number'\n },\n operator: [\n {\n pattern: /=/,\n alias: 'pattern-def'\n },\n {\n pattern: /&/,\n alias: 'conjunction'\n },\n {\n pattern: /~/,\n alias: 'exception'\n },\n {\n pattern: /\\?/,\n alias: 'optionality'\n },\n {\n pattern: /[[\\]]/,\n alias: 'repetition'\n },\n {\n pattern: /[{}]/,\n alias: 'variation'\n },\n {\n pattern: /[+_]/,\n alias: 'sequence'\n },\n {\n pattern: /\\.{2,3}/,\n alias: 'span'\n }\n ],\n 'field-capture': [\n {\n pattern:\n /([a-zA-Z0-9\\-.]+\\s*\\()\\s*[a-zA-Z0-9\\-.]+\\s*:\\s*[a-zA-Z0-9\\-.]+(?:\\s*,\\s*[a-zA-Z0-9\\-.]+\\s*:\\s*[a-zA-Z0-9\\-.]+)*(?=\\s*\\))/,\n lookbehind: true,\n inside: {\n 'field-name': {\n pattern: /[a-zA-Z0-9\\-.]+/,\n alias: 'variable'\n },\n colon: /:/\n }\n },\n {\n pattern: /[a-zA-Z0-9\\-.]+\\s*:/,\n inside: {\n 'field-name': {\n pattern: /[a-zA-Z0-9\\-.]+/,\n alias: 'variable'\n },\n colon: /:/\n }\n }\n ],\n punctuation: /[:;,()]/,\n name: /[a-zA-Z0-9\\-.]+/\n }\n}\n","// @ts-nocheck\nnginx.displayName = 'nginx'\nnginx.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function nginx(Prism) {\n ;(function (Prism) {\n var variable =\n /\\$(?:\\w[a-z\\d]*(?:_[^\\x00-\\x1F\\s\"'\\\\()$]*)?|\\{[^}\\s\"'\\\\]+\\})/i\n Prism.languages.nginx = {\n comment: {\n pattern: /(^|[\\s{};])#.*/,\n lookbehind: true,\n greedy: true\n },\n directive: {\n pattern:\n /(^|\\s)\\w(?:[^;{}\"'\\\\\\s]|\\\\.|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|\\s+(?:#.*(?!.)|(?![#\\s])))*?(?=\\s*[;{])/,\n lookbehind: true,\n greedy: true,\n inside: {\n string: {\n pattern:\n /((?:^|[^\\\\])(?:\\\\\\\\)*)(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/,\n lookbehind: true,\n greedy: true,\n inside: {\n escape: {\n pattern: /\\\\[\"'\\\\nrt]/,\n alias: 'entity'\n },\n variable: variable\n }\n },\n comment: {\n pattern: /(\\s)#.*/,\n lookbehind: true,\n greedy: true\n },\n keyword: {\n pattern: /^\\S+/,\n greedy: true\n },\n // other patterns\n\n boolean: {\n pattern: /(\\s)(?:off|on)(?!\\S)/,\n lookbehind: true\n },\n number: {\n pattern: /(\\s)\\d+[a-z]*(?!\\S)/i,\n lookbehind: true\n },\n variable: variable\n }\n },\n punctuation: /[{};]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nnim.displayName = 'nim'\nnim.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function nim(Prism) {\n Prism.languages.nim = {\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n string: {\n // Double-quoted strings can be prefixed by an identifier (Generalized raw string literals)\n pattern:\n /(?:\\b(?!\\d)(?:\\w|\\\\x[89a-fA-F][0-9a-fA-F])+)?(?:\"\"\"[\\s\\S]*?\"\"\"(?!\")|\"(?:\\\\[\\s\\S]|\"\"|[^\"\\\\])*\")/,\n greedy: true\n },\n char: {\n // Character literals are handled specifically to prevent issues with numeric type suffixes\n pattern: /'(?:\\\\(?:\\d+|x[\\da-fA-F]{0,2}|.)|[^'])'/,\n greedy: true\n },\n function: {\n pattern:\n /(?:(?!\\d)(?:\\w|\\\\x[89a-fA-F][0-9a-fA-F])+|`[^`\\r\\n]+`)\\*?(?:\\[[^\\]]+\\])?(?=\\s*\\()/,\n greedy: true,\n inside: {\n operator: /\\*$/\n }\n },\n // We don't want to highlight operators (and anything really) inside backticks\n identifier: {\n pattern: /`[^`\\r\\n]+`/,\n greedy: true,\n inside: {\n punctuation: /`/\n }\n },\n // The negative look ahead prevents wrong highlighting of the .. operator\n number:\n /\\b(?:0[xXoObB][\\da-fA-F_]+|\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:[eE][+-]?\\d[\\d_]*)?)(?:'?[iuf]\\d*)?/,\n keyword:\n /\\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\\b/,\n operator: {\n // Look behind and look ahead prevent wrong highlighting of punctuations [. .] {. .} (. .)\n // but allow the slice operator .. to take precedence over them\n // One can define his own operators in Nim so all combination of operators might be an operator.\n pattern:\n /(^|[({\\[](?=\\.\\.)|(?![({\\[]\\.).)(?:(?:[=+\\-*\\/<>@$~&%|!?^:\\\\]|\\.\\.|\\.(?![)}\\]]))+|\\b(?:and|div|in|is|isnot|mod|not|notin|of|or|shl|shr|xor)\\b)/m,\n lookbehind: true\n },\n punctuation: /[({\\[]\\.|\\.[)}\\]]|[`(){}\\[\\],:]/\n }\n}\n","// @ts-nocheck\nnix.displayName = 'nix'\nnix.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function nix(Prism) {\n Prism.languages.nix = {\n comment: {\n pattern: /\\/\\*[\\s\\S]*?\\*\\/|#.*/,\n greedy: true\n },\n string: {\n pattern: /\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"|''(?:(?!'')[\\s\\S]|''(?:'|\\\\|\\$\\{))*''/,\n greedy: true,\n inside: {\n interpolation: {\n // The lookbehind ensures the ${} is not preceded by \\ or ''\n pattern: /(^|(?:^|(?!'').)[^\\\\])\\$\\{(?:[^{}]|\\{[^}]*\\})*\\}/,\n lookbehind: true,\n inside: null // see below\n }\n }\n },\n\n url: [\n /\\b(?:[a-z]{3,7}:\\/\\/)[\\w\\-+%~\\/.:#=?&]+/,\n {\n pattern:\n /([^\\/])(?:[\\w\\-+%~.:#=?&]*(?!\\/\\/)[\\w\\-+%~\\/.:#=?&])?(?!\\/\\/)\\/[\\w\\-+%~\\/.:#=?&]*/,\n lookbehind: true\n }\n ],\n antiquotation: {\n pattern: /\\$(?=\\{)/,\n alias: 'important'\n },\n number: /\\b\\d+\\b/,\n keyword: /\\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\\b/,\n function:\n /\\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:Tarball|url)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\\b|\\bfoldl'\\B/,\n boolean: /\\b(?:false|true)\\b/,\n operator: /[=!<>]=?|\\+\\+?|\\|\\||&&|\\/\\/|->?|[?@]/,\n punctuation: /[{}()[\\].,:;]/\n }\n Prism.languages.nix.string.inside.interpolation.inside = Prism.languages.nix\n}\n","// @ts-nocheck\nnsis.displayName = 'nsis'\nnsis.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function nsis(Prism) {\n /**\n * Original by Jan T. Sott (http://github.com/idleberg)\n *\n * Includes all commands and plug-ins shipped with NSIS 3.08\n */\n Prism.languages.nsis = {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|[#;].*)/,\n lookbehind: true,\n greedy: true\n },\n string: {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n keyword: {\n pattern:\n /(^[\\t ]*)(?:Abort|Add(?:BrandingImage|Size)|AdvSplash|Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|BG(?:Font|Gradient|Image)|Banner|BrandingText|BringToFront|CRCCheck|Call(?:InstDLL)?|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|Create(?:Directory|Font|ShortCut)|Delete(?:INISec|INIStr|RegKey|RegValue)?|Detail(?:Print|sButtonText)|Dialer|Dir(?:Text|Var|Verify)|EnableWindow|Enum(?:RegKey|RegValue)|Exch|Exec(?:Shell(?:Wait)?|Wait)?|ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|Read|ReadByte|ReadUTF16LE|ReadWord|Seek|Write|WriteByte|WriteUTF16LE|WriteWord)?|Find(?:Close|First|Next|Window)|FlushINI|Get(?:CurInstType|CurrentAddress|DLLVersion(?:Local)?|DlgItem|ErrorLevel|FileTime(?:Local)?|FullPathName|Function(?:Address|End)?|InstDirError|KnownFolderPath|LabelAddress|TempFileName|WinVer)|Goto|HideWindow|Icon|If(?:Abort|Errors|FileExists|RebootFlag|RtlLanguage|ShellVarContextAll|Silent)|InitPluginsDir|InstProgressFlags|Inst(?:Type(?:GetText|SetText)?)|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|Int(?:64|Ptr)?CmpU?|Int(?:64)?Fmt|Int(?:Ptr)?Op|IsWindow|Lang(?:DLL|String)|License(?:BkColor|Data|ForceSelection|LangString|Text)|LoadLanguageFile|LockWindow|Log(?:Set|Text)|Manifest(?:DPIAware|SupportedOS)|Math|MessageBox|MiscButtonText|NSISdl|Name|Nop|OutFile|PE(?:DllCharacteristics|SubsysVer)|Page(?:Callbacks)?|Pop|Push|Quit|RMDir|Read(?:EnvStr|INIStr|RegDWORD|RegStr)|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|SearchPath|Section(?:End|GetFlags|GetInstTypes|GetSize|GetText|Group|In|SetFlags|SetInstTypes|SetSize|SetText)?|SendMessage|Set(?:AutoClose|BrandingImage|Compress|Compressor(?:DictSize)?|CtlColors|CurInstType|DatablockOptimize|DateSave|Details(?:Print|View)|ErrorLevel|Errors|FileAttributes|Font|OutPath|Overwrite|PluginUnload|RebootFlag|RegView|ShellVarContext|Silent)|Show(?:InstDetails|UninstDetails|Window)|Silent(?:Install|UnInstall)|Sleep|SpaceTexts|Splash|StartMenu|Str(?:CmpS?|Cpy|Len)|SubCaption|System|Target|UnRegDLL|Unicode|UninstPage|Uninstall(?:ButtonText|Caption|Icon|SubCaption|Text)|UserInfo|VI(?:AddVersionKey|FileVersion|ProductVersion)|VPatch|Var|WindowIcon|Write(?:INIStr|Reg(?:Bin|DWORD|ExpandStr|MultiStr|None|Str)|Uninstaller)|XPStyle|ns(?:Dialogs|Exec))\\b/m,\n lookbehind: true\n },\n property:\n /\\b(?:ARCHIVE|FILE_(?:ATTRIBUTE_ARCHIVE|ATTRIBUTE_NORMAL|ATTRIBUTE_OFFLINE|ATTRIBUTE_READONLY|ATTRIBUTE_SYSTEM|ATTRIBUTE_TEMPORARY)|HK(?:(?:CR|CU|LM)(?:32|64)?|DD|PD|U)|HKEY_(?:CLASSES_ROOT|CURRENT_CONFIG|CURRENT_USER|DYN_DATA|LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|ID(?:ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|MB_(?:ABORTRETRYIGNORE|DEFBUTTON1|DEFBUTTON2|DEFBUTTON3|DEFBUTTON4|ICONEXCLAMATION|ICONINFORMATION|ICONQUESTION|ICONSTOP|OK|OKCANCEL|RETRYCANCEL|RIGHT|RTLREADING|SETFOREGROUND|TOPMOST|USERICON|YESNO)|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY|admin|all|auto|both|colored|false|force|hide|highest|lastused|leave|listonly|none|normal|notset|off|on|open|print|show|silent|silentlog|smooth|textonly|true|user)\\b/,\n constant: /\\$\\{[!\\w\\.:\\^-]+\\}|\\$\\([!\\w\\.:\\^-]+\\)/,\n variable: /\\$\\w[\\w\\.]*/,\n number: /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n operator: /--?|\\+\\+?|<=?|>=?|==?=?|&&?|\\|\\|?|[?*\\/~^%]/,\n punctuation: /[{}[\\];(),.:]/,\n important: {\n pattern:\n /(^[\\t ]*)!(?:addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\\b/im,\n lookbehind: true\n }\n }\n}\n","// @ts-nocheck\nocaml.displayName = 'ocaml'\nocaml.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function ocaml(Prism) {\n // https://ocaml.org/manual/lex.html\n\n Prism.languages.ocaml = {\n comment: {\n pattern: /\\(\\*[\\s\\S]*?\\*\\)/,\n greedy: true\n },\n char: {\n pattern: /'(?:[^\\\\\\r\\n']|\\\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,\n greedy: true\n },\n string: [\n {\n pattern: /\"(?:\\\\(?:[\\s\\S]|\\r\\n)|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n {\n pattern: /\\{([a-z_]*)\\|[\\s\\S]*?\\|\\1\\}/,\n greedy: true\n }\n ],\n number: [\n // binary and octal\n /\\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\\b/i,\n // hexadecimal\n /\\b0x[a-f0-9][a-f0-9_]*(?:\\.[a-f0-9_]*)?(?:p[+-]?\\d[\\d_]*)?(?!\\w)/i,\n // decimal\n /\\b\\d[\\d_]*(?:\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?(?!\\w)/i\n ],\n directive: {\n pattern: /\\B#\\w+/,\n alias: 'property'\n },\n label: {\n pattern: /\\B~\\w+/,\n alias: 'property'\n },\n 'type-variable': {\n pattern: /\\B'\\w+/,\n alias: 'function'\n },\n variant: {\n pattern: /`\\w+/,\n alias: 'symbol'\n },\n // For the list of keywords and operators,\n // see: http://caml.inria.fr/pub/docs/manual-ocaml/lex.html#sec84\n keyword:\n /\\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n 'operator-like-punctuation': {\n pattern: /\\[[<>|]|[>|]\\]|\\{<|>\\}/,\n alias: 'punctuation'\n },\n // Custom operators are allowed\n operator:\n /\\.[.~]|:[=>]|[=<>@^|&+\\-*\\/$%!?~][!$%&*+\\-.\\/:<=>?@^|~]*|\\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\\b/,\n punctuation: /;;|::|[(){}\\[\\].,:;#]|\\b_\\b/\n }\n}\n","// @ts-nocheck\nodin.displayName = 'odin'\nodin.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function odin(Prism) {\n ;(function (Prism) {\n var escapes =\n /\\\\(?:[\"'\\\\abefnrtv]|0[0-7]{2}|U[\\dA-Fa-f]{6}|u[\\dA-Fa-f]{4}|x[\\dA-Fa-f]{2})/\n Prism.languages.odin = {\n /**\n * The current implementation supports only 1 level of nesting.\n *\n * @author Michael Schmidt\n * @author edukisto\n */\n comment: [\n {\n pattern:\n /\\/\\*(?:[^/*]|\\/(?!\\*)|\\*(?!\\/)|\\/\\*(?:\\*(?!\\/)|[^*])*(?:\\*\\/|$))*(?:\\*\\/|$)/,\n greedy: true\n },\n {\n pattern: /#![^\\n\\r]*/,\n greedy: true\n },\n {\n pattern: /\\/\\/[^\\n\\r]*/,\n greedy: true\n }\n ],\n /**\n * Should be found before strings because of '\"'\"- and '`'`-like sequences.\n */\n char: {\n pattern: /'(?:\\\\(?:.|[0Uux][0-9A-Fa-f]{1,6})|[^\\n\\r'\\\\])'/,\n greedy: true,\n inside: {\n symbol: escapes\n }\n },\n string: [\n {\n pattern: /`[^`]*`/,\n greedy: true\n },\n {\n pattern: /\"(?:\\\\.|[^\\n\\r\"\\\\])*\"/,\n greedy: true,\n inside: {\n symbol: escapes\n }\n }\n ],\n directive: {\n pattern: /#\\w+/,\n alias: 'property'\n },\n number:\n /\\b0(?:b[01_]+|d[\\d_]+|h_*(?:(?:(?:[\\dA-Fa-f]_*){8}){1,2}|(?:[\\dA-Fa-f]_*){4})|o[0-7_]+|x[\\dA-F_a-f]+|z[\\dAB_ab]+)\\b|(?:\\b\\d+(?:\\.(?!\\.)\\d*)?|\\B\\.\\d+)(?:[Ee][+-]?\\d*)?[ijk]?(?!\\w)/,\n discard: {\n pattern: /\\b_\\b/,\n alias: 'keyword'\n },\n 'procedure-definition': {\n pattern: /\\b\\w+(?=[ \\t]*(?::\\s*){2}proc\\b)/,\n alias: 'function'\n },\n keyword:\n /\\b(?:asm|auto_cast|bit_set|break|case|cast|context|continue|defer|distinct|do|dynamic|else|enum|fallthrough|for|foreign|if|import|in|map|matrix|not_in|or_else|or_return|package|proc|return|struct|switch|transmute|typeid|union|using|when|where)\\b/,\n /**\n * false, nil, true can be used as procedure names. \"_\" and keywords can't.\n */\n 'procedure-name': {\n pattern: /\\b\\w+(?=[ \\t]*\\()/,\n alias: 'function'\n },\n boolean: /\\b(?:false|nil|true)\\b/,\n 'constant-parameter-sign': {\n pattern: /\\$/,\n alias: 'important'\n },\n undefined: {\n pattern: /---/,\n alias: 'operator'\n },\n arrow: {\n pattern: /->/,\n alias: 'punctuation'\n },\n operator: /\\+\\+|--|\\.\\.[<=]?|(?:&~|[-!*+/=~]|[%&<>|]{1,2})=?|[?^]/,\n punctuation: /[(),.:;@\\[\\]{}]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorC from './c.js'\nopencl.displayName = 'opencl'\nopencl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function opencl(Prism) {\n Prism.register(refractorC)\n ;(function (Prism) {\n /* OpenCL kernel language */\n Prism.languages.opencl = Prism.languages.extend('c', {\n // Extracted from the official specs (2.0) and http://streamcomputing.eu/downloads/?opencl.lang (opencl-keywords, opencl-types) and http://sourceforge.net/tracker/?func=detail&aid=2957794&group_id=95717&atid=612384 (Words2, partly Words3)\n keyword:\n /\\b(?:(?:__)?(?:constant|global|kernel|local|private|read_only|read_write|write_only)|__attribute__|auto|(?:bool|u?(?:char|int|long|short)|half|quad)(?:2|3|4|8|16)?|break|case|complex|const|continue|(?:double|float)(?:16(?:x(?:1|2|4|8|16))?|1x(?:1|2|4|8|16)|2(?:x(?:1|2|4|8|16))?|3|4(?:x(?:1|2|4|8|16))?|8(?:x(?:1|2|4|8|16))?)?|default|do|else|enum|extern|for|goto|if|imaginary|inline|packed|pipe|register|restrict|return|signed|sizeof|static|struct|switch|typedef|uniform|union|unsigned|void|volatile|while)\\b/,\n // Extracted from http://streamcomputing.eu/downloads/?opencl.lang (opencl-const)\n // Math Constants: https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/mathConstants.html\n // Macros and Limits: https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/macroLimits.html\n number:\n /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[fuhl]{0,4}/i,\n boolean: /\\b(?:false|true)\\b/,\n 'constant-opencl-kernel': {\n pattern:\n /\\b(?:CHAR_(?:BIT|MAX|MIN)|CLK_(?:ADDRESS_(?:CLAMP(?:_TO_EDGE)?|NONE|REPEAT)|FILTER_(?:LINEAR|NEAREST)|(?:GLOBAL|LOCAL)_MEM_FENCE|NORMALIZED_COORDS_(?:FALSE|TRUE))|CL_(?:BGRA|(?:HALF_)?FLOAT|INTENSITY|LUMINANCE|A?R?G?B?[Ax]?|(?:(?:UN)?SIGNED|[US]NORM)_(?:INT(?:8|16|32))|UNORM_(?:INT_101010|SHORT_(?:555|565)))|(?:DBL|FLT|HALF)_(?:DIG|EPSILON|(?:MAX|MIN)(?:(?:_10)?_EXP)?|MANT_DIG)|FLT_RADIX|HUGE_VALF?|(?:INT|LONG|SCHAR|SHRT)_(?:MAX|MIN)|INFINITY|MAXFLOAT|M_(?:[12]_PI|2_SQRTPI|E|LN(?:2|10)|LOG(?:2|10)E?|PI(?:_[24])?|SQRT(?:1_2|2))(?:_F|_H)?|NAN|(?:UCHAR|UINT|ULONG|USHRT)_MAX)\\b/,\n alias: 'constant'\n }\n })\n Prism.languages.insertBefore('opencl', 'class-name', {\n // https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/scalarDataTypes.html\n // https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/otherDataTypes.html\n 'builtin-type': {\n pattern:\n /\\b(?:_cl_(?:command_queue|context|device_id|event|kernel|mem|platform_id|program|sampler)|cl_(?:image_format|mem_fence_flags)|clk_event_t|event_t|image(?:1d_(?:array_|buffer_)?t|2d_(?:array_(?:depth_|msaa_depth_|msaa_)?|depth_|msaa_depth_|msaa_)?t|3d_t)|intptr_t|ndrange_t|ptrdiff_t|queue_t|reserve_id_t|sampler_t|size_t|uintptr_t)\\b/,\n alias: 'keyword'\n }\n })\n var attributes = {\n // Extracted from http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-types and opencl-host)\n 'type-opencl-host': {\n pattern:\n /\\b(?:cl_(?:GLenum|GLint|GLuin|addressing_mode|bitfield|bool|buffer_create_type|build_status|channel_(?:order|type)|(?:u?(?:char|int|long|short)|double|float)(?:2|3|4|8|16)?|command_(?:queue(?:_info|_properties)?|type)|context(?:_info|_properties)?|device_(?:exec_capabilities|fp_config|id|info|local_mem_type|mem_cache_type|type)|(?:event|sampler)(?:_info)?|filter_mode|half|image_info|kernel(?:_info|_work_group_info)?|map_flags|mem(?:_flags|_info|_object_type)?|platform_(?:id|info)|profiling_info|program(?:_build_info|_info)?))\\b/,\n alias: 'keyword'\n },\n 'boolean-opencl-host': {\n pattern: /\\bCL_(?:FALSE|TRUE)\\b/,\n alias: 'boolean'\n },\n // Extracted from cl.h (2.0) and http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-const)\n 'constant-opencl-host': {\n pattern:\n /\\bCL_(?:A|ABGR|ADDRESS_(?:CLAMP(?:_TO_EDGE)?|MIRRORED_REPEAT|NONE|REPEAT)|ARGB|BGRA|BLOCKING|BUFFER_CREATE_TYPE_REGION|BUILD_(?:ERROR|IN_PROGRESS|NONE|PROGRAM_FAILURE|SUCCESS)|COMMAND_(?:ACQUIRE_GL_OBJECTS|BARRIER|COPY_(?:BUFFER(?:_RECT|_TO_IMAGE)?|IMAGE(?:_TO_BUFFER)?)|FILL_(?:BUFFER|IMAGE)|MAP(?:_BUFFER|_IMAGE)|MARKER|MIGRATE(?:_SVM)?_MEM_OBJECTS|NATIVE_KERNEL|NDRANGE_KERNEL|READ_(?:BUFFER(?:_RECT)?|IMAGE)|RELEASE_GL_OBJECTS|SVM_(?:FREE|MAP|MEMCPY|MEMFILL|UNMAP)|TASK|UNMAP_MEM_OBJECT|USER|WRITE_(?:BUFFER(?:_RECT)?|IMAGE))|COMPILER_NOT_AVAILABLE|COMPILE_PROGRAM_FAILURE|COMPLETE|CONTEXT_(?:DEVICES|INTEROP_USER_SYNC|NUM_DEVICES|PLATFORM|PROPERTIES|REFERENCE_COUNT)|DEPTH(?:_STENCIL)?|DEVICE_(?:ADDRESS_BITS|AFFINITY_DOMAIN_(?:L[1-4]_CACHE|NEXT_PARTITIONABLE|NUMA)|AVAILABLE|BUILT_IN_KERNELS|COMPILER_AVAILABLE|DOUBLE_FP_CONFIG|ENDIAN_LITTLE|ERROR_CORRECTION_SUPPORT|EXECUTION_CAPABILITIES|EXTENSIONS|GLOBAL_(?:MEM_(?:CACHELINE_SIZE|CACHE_SIZE|CACHE_TYPE|SIZE)|VARIABLE_PREFERRED_TOTAL_SIZE)|HOST_UNIFIED_MEMORY|IL_VERSION|IMAGE(?:2D_MAX_(?:HEIGHT|WIDTH)|3D_MAX_(?:DEPTH|HEIGHT|WIDTH)|_BASE_ADDRESS_ALIGNMENT|_MAX_ARRAY_SIZE|_MAX_BUFFER_SIZE|_PITCH_ALIGNMENT|_SUPPORT)|LINKER_AVAILABLE|LOCAL_MEM_SIZE|LOCAL_MEM_TYPE|MAX_(?:CLOCK_FREQUENCY|COMPUTE_UNITS|CONSTANT_ARGS|CONSTANT_BUFFER_SIZE|GLOBAL_VARIABLE_SIZE|MEM_ALLOC_SIZE|NUM_SUB_GROUPS|ON_DEVICE_(?:EVENTS|QUEUES)|PARAMETER_SIZE|PIPE_ARGS|READ_IMAGE_ARGS|READ_WRITE_IMAGE_ARGS|SAMPLERS|WORK_GROUP_SIZE|WORK_ITEM_DIMENSIONS|WORK_ITEM_SIZES|WRITE_IMAGE_ARGS)|MEM_BASE_ADDR_ALIGN|MIN_DATA_TYPE_ALIGN_SIZE|NAME|NATIVE_VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT)|NOT_(?:AVAILABLE|FOUND)|OPENCL_C_VERSION|PARENT_DEVICE|PARTITION_(?:AFFINITY_DOMAIN|BY_AFFINITY_DOMAIN|BY_COUNTS|BY_COUNTS_LIST_END|EQUALLY|FAILED|MAX_SUB_DEVICES|PROPERTIES|TYPE)|PIPE_MAX_(?:ACTIVE_RESERVATIONS|PACKET_SIZE)|PLATFORM|PREFERRED_(?:GLOBAL_ATOMIC_ALIGNMENT|INTEROP_USER_SYNC|LOCAL_ATOMIC_ALIGNMENT|PLATFORM_ATOMIC_ALIGNMENT|VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT))|PRINTF_BUFFER_SIZE|PROFILE|PROFILING_TIMER_RESOLUTION|QUEUE_(?:ON_(?:DEVICE_(?:MAX_SIZE|PREFERRED_SIZE|PROPERTIES)|HOST_PROPERTIES)|PROPERTIES)|REFERENCE_COUNT|SINGLE_FP_CONFIG|SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS|SVM_(?:ATOMICS|CAPABILITIES|COARSE_GRAIN_BUFFER|FINE_GRAIN_BUFFER|FINE_GRAIN_SYSTEM)|TYPE(?:_ACCELERATOR|_ALL|_CPU|_CUSTOM|_DEFAULT|_GPU)?|VENDOR(?:_ID)?|VERSION)|DRIVER_VERSION|EVENT_(?:COMMAND_(?:EXECUTION_STATUS|QUEUE|TYPE)|CONTEXT|REFERENCE_COUNT)|EXEC_(?:KERNEL|NATIVE_KERNEL|STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST)|FILTER_(?:LINEAR|NEAREST)|FLOAT|FP_(?:CORRECTLY_ROUNDED_DIVIDE_SQRT|DENORM|FMA|INF_NAN|ROUND_TO_INF|ROUND_TO_NEAREST|ROUND_TO_ZERO|SOFT_FLOAT)|GLOBAL|HALF_FLOAT|IMAGE_(?:ARRAY_SIZE|BUFFER|DEPTH|ELEMENT_SIZE|FORMAT|FORMAT_MISMATCH|FORMAT_NOT_SUPPORTED|HEIGHT|NUM_MIP_LEVELS|NUM_SAMPLES|ROW_PITCH|SLICE_PITCH|WIDTH)|INTENSITY|INVALID_(?:ARG_INDEX|ARG_SIZE|ARG_VALUE|BINARY|BUFFER_SIZE|BUILD_OPTIONS|COMMAND_QUEUE|COMPILER_OPTIONS|CONTEXT|DEVICE|DEVICE_PARTITION_COUNT|DEVICE_QUEUE|DEVICE_TYPE|EVENT|EVENT_WAIT_LIST|GLOBAL_OFFSET|GLOBAL_WORK_SIZE|GL_OBJECT|HOST_PTR|IMAGE_DESCRIPTOR|IMAGE_FORMAT_DESCRIPTOR|IMAGE_SIZE|KERNEL|KERNEL_ARGS|KERNEL_DEFINITION|KERNEL_NAME|LINKER_OPTIONS|MEM_OBJECT|MIP_LEVEL|OPERATION|PIPE_SIZE|PLATFORM|PROGRAM|PROGRAM_EXECUTABLE|PROPERTY|QUEUE_PROPERTIES|SAMPLER|VALUE|WORK_DIMENSION|WORK_GROUP_SIZE|WORK_ITEM_SIZE)|KERNEL_(?:ARG_(?:ACCESS_(?:NONE|QUALIFIER|READ_ONLY|READ_WRITE|WRITE_ONLY)|ADDRESS_(?:CONSTANT|GLOBAL|LOCAL|PRIVATE|QUALIFIER)|INFO_NOT_AVAILABLE|NAME|TYPE_(?:CONST|NAME|NONE|PIPE|QUALIFIER|RESTRICT|VOLATILE))|ATTRIBUTES|COMPILE_NUM_SUB_GROUPS|COMPILE_WORK_GROUP_SIZE|CONTEXT|EXEC_INFO_SVM_FINE_GRAIN_SYSTEM|EXEC_INFO_SVM_PTRS|FUNCTION_NAME|GLOBAL_WORK_SIZE|LOCAL_MEM_SIZE|LOCAL_SIZE_FOR_SUB_GROUP_COUNT|MAX_NUM_SUB_GROUPS|MAX_SUB_GROUP_SIZE_FOR_NDRANGE|NUM_ARGS|PREFERRED_WORK_GROUP_SIZE_MULTIPLE|PRIVATE_MEM_SIZE|PROGRAM|REFERENCE_COUNT|SUB_GROUP_COUNT_FOR_NDRANGE|WORK_GROUP_SIZE)|LINKER_NOT_AVAILABLE|LINK_PROGRAM_FAILURE|LOCAL|LUMINANCE|MAP_(?:FAILURE|READ|WRITE|WRITE_INVALIDATE_REGION)|MEM_(?:ALLOC_HOST_PTR|ASSOCIATED_MEMOBJECT|CONTEXT|COPY_HOST_PTR|COPY_OVERLAP|FLAGS|HOST_NO_ACCESS|HOST_PTR|HOST_READ_ONLY|HOST_WRITE_ONLY|KERNEL_READ_AND_WRITE|MAP_COUNT|OBJECT_(?:ALLOCATION_FAILURE|BUFFER|IMAGE1D|IMAGE1D_ARRAY|IMAGE1D_BUFFER|IMAGE2D|IMAGE2D_ARRAY|IMAGE3D|PIPE)|OFFSET|READ_ONLY|READ_WRITE|REFERENCE_COUNT|SIZE|SVM_ATOMICS|SVM_FINE_GRAIN_BUFFER|TYPE|USES_SVM_POINTER|USE_HOST_PTR|WRITE_ONLY)|MIGRATE_MEM_OBJECT_(?:CONTENT_UNDEFINED|HOST)|MISALIGNED_SUB_BUFFER_OFFSET|NONE|NON_BLOCKING|OUT_OF_(?:HOST_MEMORY|RESOURCES)|PIPE_(?:MAX_PACKETS|PACKET_SIZE)|PLATFORM_(?:EXTENSIONS|HOST_TIMER_RESOLUTION|NAME|PROFILE|VENDOR|VERSION)|PROFILING_(?:COMMAND_(?:COMPLETE|END|QUEUED|START|SUBMIT)|INFO_NOT_AVAILABLE)|PROGRAM_(?:BINARIES|BINARY_SIZES|BINARY_TYPE(?:_COMPILED_OBJECT|_EXECUTABLE|_LIBRARY|_NONE)?|BUILD_(?:GLOBAL_VARIABLE_TOTAL_SIZE|LOG|OPTIONS|STATUS)|CONTEXT|DEVICES|IL|KERNEL_NAMES|NUM_DEVICES|NUM_KERNELS|REFERENCE_COUNT|SOURCE)|QUEUED|QUEUE_(?:CONTEXT|DEVICE|DEVICE_DEFAULT|ON_DEVICE|ON_DEVICE_DEFAULT|OUT_OF_ORDER_EXEC_MODE_ENABLE|PROFILING_ENABLE|PROPERTIES|REFERENCE_COUNT|SIZE)|R|RA|READ_(?:ONLY|WRITE)_CACHE|RG|RGB|RGBA|RGBx|RGx|RUNNING|Rx|SAMPLER_(?:ADDRESSING_MODE|CONTEXT|FILTER_MODE|LOD_MAX|LOD_MIN|MIP_FILTER_MODE|NORMALIZED_COORDS|REFERENCE_COUNT)|(?:UN)?SIGNED_INT(?:8|16|32)|SNORM_INT(?:8|16)|SUBMITTED|SUCCESS|UNORM_INT(?:8|16|24|_101010|_101010_2)|UNORM_SHORT_(?:555|565)|VERSION_(?:1_0|1_1|1_2|2_0|2_1)|sBGRA|sRGB|sRGBA|sRGBx)\\b/,\n alias: 'constant'\n },\n // Extracted from cl.h (2.0) and http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-host)\n 'function-opencl-host': {\n pattern:\n /\\bcl(?:BuildProgram|CloneKernel|CompileProgram|Create(?:Buffer|CommandQueue(?:WithProperties)?|Context|ContextFromType|Image|Image2D|Image3D|Kernel|KernelsInProgram|Pipe|ProgramWith(?:Binary|BuiltInKernels|IL|Source)|Sampler|SamplerWithProperties|SubBuffer|SubDevices|UserEvent)|Enqueue(?:(?:Barrier|Marker)(?:WithWaitList)?|Copy(?:Buffer(?:Rect|ToImage)?|Image(?:ToBuffer)?)|(?:Fill|Map)(?:Buffer|Image)|MigrateMemObjects|NDRangeKernel|NativeKernel|(?:Read|Write)(?:Buffer(?:Rect)?|Image)|SVM(?:Free|Map|MemFill|Memcpy|MigrateMem|Unmap)|Task|UnmapMemObject|WaitForEvents)|Finish|Flush|Get(?:CommandQueueInfo|ContextInfo|Device(?:AndHostTimer|IDs|Info)|Event(?:Profiling)?Info|ExtensionFunctionAddress(?:ForPlatform)?|HostTimer|ImageInfo|Kernel(?:ArgInfo|Info|SubGroupInfo|WorkGroupInfo)|MemObjectInfo|PipeInfo|Platform(?:IDs|Info)|Program(?:Build)?Info|SamplerInfo|SupportedImageFormats)|LinkProgram|(?:Release|Retain)(?:CommandQueue|Context|Device|Event|Kernel|MemObject|Program|Sampler)|SVM(?:Alloc|Free)|Set(?:CommandQueueProperty|DefaultDeviceCommandQueue|EventCallback|Kernel|Kernel(?:Arg(?:SVMPointer)?|ExecInfo)|MemObjectDestructorCallback|UserEventStatus)|Unload(?:Platform)?Compiler|WaitForEvents)\\b/,\n alias: 'function'\n }\n }\n\n /* OpenCL host API */\n Prism.languages.insertBefore('c', 'keyword', attributes)\n\n // C++ includes everything from the OpenCL C host API plus the classes defined in cl2.h\n if (Prism.languages.cpp) {\n // Extracted from doxygen class list http://github.khronos.org/OpenCL-CLHPP/annotated.html\n attributes['type-opencl-host-cpp'] = {\n pattern:\n /\\b(?:Buffer|BufferGL|BufferRenderGL|CommandQueue|Context|Device|DeviceCommandQueue|EnqueueArgs|Event|Image|Image1D|Image1DArray|Image1DBuffer|Image2D|Image2DArray|Image2DGL|Image3D|Image3DGL|ImageFormat|ImageGL|Kernel|KernelFunctor|LocalSpaceArg|Memory|NDRange|Pipe|Platform|Program|SVMAllocator|SVMTraitAtomic|SVMTraitCoarse|SVMTraitFine|SVMTraitReadOnly|SVMTraitReadWrite|SVMTraitWriteOnly|Sampler|UserEvent)\\b/,\n alias: 'keyword'\n }\n Prism.languages.insertBefore('cpp', 'keyword', attributes)\n }\n })(Prism)\n}\n","// @ts-nocheck\nopenqasm.displayName = 'openqasm'\nopenqasm.aliases = ['qasm']\n\n/** @type {import('../core.js').Syntax} */\nexport default function openqasm(Prism) {\n // https://qiskit.github.io/openqasm/grammar/index.html\n\n Prism.languages.openqasm = {\n comment: /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*/,\n string: {\n pattern: /\"[^\"\\r\\n\\t]*\"|'[^'\\r\\n\\t]*'/,\n greedy: true\n },\n keyword:\n /\\b(?:CX|OPENQASM|U|barrier|boxas|boxto|break|const|continue|ctrl|def|defcal|defcalgrammar|delay|else|end|for|gate|gphase|if|in|include|inv|kernel|lengthof|let|measure|pow|reset|return|rotary|stretchinf|while)\\b|#pragma\\b/,\n 'class-name':\n /\\b(?:angle|bit|bool|creg|fixed|float|int|length|qreg|qubit|stretch|uint)\\b/,\n function: /\\b(?:cos|exp|ln|popcount|rotl|rotr|sin|sqrt|tan)\\b(?=\\s*\\()/,\n constant: /\\b(?:euler|pi|tau)\\b|π|𝜏|ℇ/,\n number: {\n pattern:\n /(^|[^.\\w$])(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?(?:dt|ns|us|µs|ms|s)?/i,\n lookbehind: true\n },\n operator: /->|>>=?|<<=?|&&|\\|\\||\\+\\+|--|[!=<>&|~^+\\-*/%]=?|@/,\n punctuation: /[(){}\\[\\];,:.]/\n }\n Prism.languages.qasm = Prism.languages.openqasm\n}\n","// @ts-nocheck\noz.displayName = 'oz'\noz.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function oz(Prism) {\n Prism.languages.oz = {\n comment: {\n pattern: /\\/\\*[\\s\\S]*?\\*\\/|%.*/,\n greedy: true\n },\n string: {\n pattern: /\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"/,\n greedy: true\n },\n atom: {\n pattern: /'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n greedy: true,\n alias: 'builtin'\n },\n keyword:\n /\\$|\\[\\]|\\b(?:_|at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\\b/,\n function: [\n /\\b[a-z][A-Za-z\\d]*(?=\\()/,\n {\n pattern: /(\\{)[A-Z][A-Za-z\\d]*\\b/,\n lookbehind: true\n }\n ],\n number:\n /\\b(?:0[bx][\\da-f]+|\\d+(?:\\.\\d*)?(?:e~?\\d+)?)\\b|&(?:[^\\\\]|\\\\(?:\\d{3}|.))/i,\n variable: /`(?:[^`\\\\]|\\\\.)+`/,\n 'attr-name': /\\b\\w+(?=[ \\t]*:(?![:=]))/,\n operator:\n /:(?:=|::?)|<[-:=]?|=(?:=|<?:?)|>=?:?|\\\\=:?|!!?|[|#+\\-*\\/,~^@]|\\b(?:andthen|div|mod|orelse)\\b/,\n punctuation: /[\\[\\](){}.:;?]/\n }\n}\n","// @ts-nocheck\nparigp.displayName = 'parigp'\nparigp.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function parigp(Prism) {\n Prism.languages.parigp = {\n comment: /\\/\\*[\\s\\S]*?\\*\\/|\\\\\\\\.*/,\n string: {\n pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"/,\n greedy: true\n },\n // PARI/GP does not care about white spaces at all\n // so let's process the keywords to build an appropriate regexp\n // (e.g. \"b *r *e *a *k\", etc.)\n keyword: (function () {\n var keywords = [\n 'breakpoint',\n 'break',\n 'dbg_down',\n 'dbg_err',\n 'dbg_up',\n 'dbg_x',\n 'forcomposite',\n 'fordiv',\n 'forell',\n 'forpart',\n 'forprime',\n 'forstep',\n 'forsubgroup',\n 'forvec',\n 'for',\n 'iferr',\n 'if',\n 'local',\n 'my',\n 'next',\n 'return',\n 'until',\n 'while'\n ]\n keywords = keywords\n .map(function (keyword) {\n return keyword.split('').join(' *')\n })\n .join('|')\n return RegExp('\\\\b(?:' + keywords + ')\\\\b')\n })(),\n function: /\\b\\w(?:[\\w ]*\\w)?(?= *\\()/,\n number: {\n // The lookbehind and the negative lookahead prevent from breaking the .. operator\n pattern:\n /((?:\\. *\\. *)?)(?:\\b\\d(?: *\\d)*(?: *(?!\\. *\\.)\\.(?: *\\d)*)?|\\. *\\d(?: *\\d)*)(?: *e *(?:[+-] *)?\\d(?: *\\d)*)?/i,\n lookbehind: true\n },\n operator:\n /\\. *\\.|[*\\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\\+(?: *[+=])?|-(?: *[-=>])?|<(?: *>|(?: *<)?(?: *=)?)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\\\(?: *\\/)?(?: *=)?|&(?: *&)?|\\| *\\||['#~^]/,\n punctuation: /[\\[\\]{}().,:;|]/\n }\n}\n","// @ts-nocheck\nimport refractorMarkup from './markup.js'\nparser.displayName = 'parser'\nparser.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function parser(Prism) {\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n var parser = (Prism.languages.parser = Prism.languages.extend('markup', {\n keyword: {\n pattern:\n /(^|[^^])(?:\\^(?:case|eval|for|if|switch|throw)\\b|@(?:BASE|CLASS|GET(?:_DEFAULT)?|OPTIONS|SET_DEFAULT|USE)\\b)/,\n lookbehind: true\n },\n variable: {\n pattern: /(^|[^^])\\B\\$(?:\\w+|(?=[.{]))(?:(?:\\.|::?)\\w+)*(?:\\.|::?)?/,\n lookbehind: true,\n inside: {\n punctuation: /\\.|:+/\n }\n },\n function: {\n pattern: /(^|[^^])\\B[@^]\\w+(?:(?:\\.|::?)\\w+)*(?:\\.|::?)?/,\n lookbehind: true,\n inside: {\n keyword: {\n pattern: /(^@)(?:GET_|SET_)/,\n lookbehind: true\n },\n punctuation: /\\.|:+/\n }\n },\n escape: {\n pattern: /\\^(?:[$^;@()\\[\\]{}\"':]|#[a-f\\d]*)/i,\n alias: 'builtin'\n },\n punctuation: /[\\[\\](){};]/\n }))\n parser = Prism.languages.insertBefore('parser', 'keyword', {\n 'parser-comment': {\n pattern: /(\\s)#.*/,\n lookbehind: true,\n alias: 'comment'\n },\n expression: {\n // Allow for 3 levels of depth\n pattern: /(^|[^^])\\((?:[^()]|\\((?:[^()]|\\((?:[^()])*\\))*\\))*\\)/,\n greedy: true,\n lookbehind: true,\n inside: {\n string: {\n pattern: /(^|[^^])([\"'])(?:(?!\\2)[^^]|\\^[\\s\\S])*\\2/,\n lookbehind: true\n },\n keyword: parser.keyword,\n variable: parser.variable,\n function: parser.function,\n boolean: /\\b(?:false|true)\\b/,\n number: /\\b(?:0x[a-f\\d]+|\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\b/i,\n escape: parser.escape,\n operator:\n /[~+*\\/\\\\%]|!(?:\\|\\|?|=)?|&&?|\\|\\|?|==|<[<=]?|>[>=]?|-[fd]?|\\b(?:def|eq|ge|gt|in|is|le|lt|ne)\\b/,\n punctuation: parser.punctuation\n }\n }\n })\n Prism.languages.insertBefore(\n 'inside',\n 'punctuation',\n {\n expression: parser.expression,\n keyword: parser.keyword,\n variable: parser.variable,\n function: parser.function,\n escape: parser.escape,\n 'parser-punctuation': {\n pattern: parser.punctuation,\n alias: 'punctuation'\n }\n },\n parser['tag'].inside['attr-value']\n )\n })(Prism)\n}\n","// @ts-nocheck\npascal.displayName = 'pascal'\npascal.aliases = ['objectpascal']\n\n/** @type {import('../core.js').Syntax} */\nexport default function pascal(Prism) {\n // Based on Free Pascal\n\n /* TODO\nSupport inline asm ?\n*/\n\n Prism.languages.pascal = {\n directive: {\n pattern: /\\{\\$[\\s\\S]*?\\}/,\n greedy: true,\n alias: ['marco', 'property']\n },\n comment: {\n pattern: /\\(\\*[\\s\\S]*?\\*\\)|\\{[\\s\\S]*?\\}|\\/\\/.*/,\n greedy: true\n },\n string: {\n pattern: /(?:'(?:''|[^'\\r\\n])*'(?!')|#[&$%]?[a-f\\d]+)+|\\^[a-z]/i,\n greedy: true\n },\n asm: {\n pattern: /(\\basm\\b)[\\s\\S]+?(?=\\bend\\s*[;[])/i,\n lookbehind: true,\n greedy: true,\n inside: null // see below\n },\n\n keyword: [\n {\n // Turbo Pascal\n pattern:\n /(^|[^&])\\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\\b/i,\n lookbehind: true\n },\n {\n // Free Pascal\n pattern: /(^|[^&])\\b(?:dispose|exit|false|new|true)\\b/i,\n lookbehind: true\n },\n {\n // Object Pascal\n pattern:\n /(^|[^&])\\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\\b/i,\n lookbehind: true\n },\n {\n // Modifiers\n pattern:\n /(^|[^&])\\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\\b/i,\n lookbehind: true\n }\n ],\n number: [\n // Hexadecimal, octal and binary\n /(?:[&%]\\d+|\\$[a-f\\d]+)/i,\n // Decimal\n /\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?/i\n ],\n operator: [\n /\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=]/,\n {\n pattern:\n /(^|[^&])\\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\\b/,\n lookbehind: true\n }\n ],\n punctuation: /\\(\\.|\\.\\)|[()\\[\\]:;,.]/\n }\n Prism.languages.pascal.asm.inside = Prism.languages.extend('pascal', {\n asm: undefined,\n keyword: undefined,\n operator: undefined\n })\n Prism.languages.objectpascal = Prism.languages.pascal\n}\n","// @ts-nocheck\npascaligo.displayName = 'pascaligo'\npascaligo.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function pascaligo(Prism) {\n ;(function (Prism) {\n // Pascaligo is a layer 2 smart contract language for the tezos blockchain\n\n var braces = /\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\)/.source\n var type = /(?:\\b\\w+(?:<braces>)?|<braces>)/.source.replace(\n /<braces>/g,\n function () {\n return braces\n }\n )\n var pascaligo = (Prism.languages.pascaligo = {\n comment: /\\(\\*[\\s\\S]+?\\*\\)|\\/\\/.*/,\n string: {\n pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|\\^[a-z]/i,\n greedy: true\n },\n 'class-name': [\n {\n pattern: RegExp(\n /(\\btype\\s+\\w+\\s+is\\s+)<type>/.source.replace(\n /<type>/g,\n function () {\n return type\n }\n ),\n 'i'\n ),\n lookbehind: true,\n inside: null // see below\n },\n {\n pattern: RegExp(\n /<type>(?=\\s+is\\b)/.source.replace(/<type>/g, function () {\n return type\n }),\n 'i'\n ),\n inside: null // see below\n },\n {\n pattern: RegExp(\n /(:\\s*)<type>/.source.replace(/<type>/g, function () {\n return type\n })\n ),\n lookbehind: true,\n inside: null // see below\n }\n ],\n\n keyword: {\n pattern:\n /(^|[^&])\\b(?:begin|block|case|const|else|end|fail|for|from|function|if|is|nil|of|remove|return|skip|then|type|var|while|with)\\b/i,\n lookbehind: true\n },\n boolean: {\n pattern: /(^|[^&])\\b(?:False|True)\\b/i,\n lookbehind: true\n },\n builtin: {\n pattern: /(^|[^&])\\b(?:bool|int|list|map|nat|record|string|unit)\\b/i,\n lookbehind: true\n },\n function: /\\b\\w+(?=\\s*\\()/,\n number: [\n // Hexadecimal, octal and binary\n /%[01]+|&[0-7]+|\\$[a-f\\d]+/i,\n // Decimal\n /\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?(?:mtz|n)?/i\n ],\n operator:\n /->|=\\/=|\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=|]|\\b(?:and|mod|or)\\b/,\n punctuation: /\\(\\.|\\.\\)|[()\\[\\]:;,.{}]/\n })\n var classNameInside = [\n 'comment',\n 'keyword',\n 'builtin',\n 'operator',\n 'punctuation'\n ].reduce(function (accum, key) {\n accum[key] = pascaligo[key]\n return accum\n }, {})\n pascaligo['class-name'].forEach(function (p) {\n p.inside = classNameInside\n })\n })(Prism)\n}\n","// @ts-nocheck\npsl.displayName = 'psl'\npsl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function psl(Prism) {\n Prism.languages.psl = {\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n string: {\n pattern: /\"(?:\\\\.|[^\\\\\"])*\"/,\n greedy: true,\n inside: {\n symbol: /\\\\[ntrbA-Z\"\\\\]/\n }\n },\n 'heredoc-string': {\n pattern: /<<<([a-zA-Z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\1\\b/,\n alias: 'string',\n greedy: true\n },\n keyword:\n /\\b(?:__multi|__single|case|default|do|else|elsif|exit|export|for|foreach|function|if|last|line|local|next|requires|return|switch|until|while|word)\\b/,\n constant:\n /\\b(?:ALARM|CHART_ADD_GRAPH|CHART_DELETE_GRAPH|CHART_DESTROY|CHART_LOAD|CHART_PRINT|EOF|OFFLINE|OK|PSL_PROF_LOG|R_CHECK_HORIZ|R_CHECK_VERT|R_CLICKER|R_COLUMN|R_FRAME|R_ICON|R_LABEL|R_LABEL_CENTER|R_LIST_MULTIPLE|R_LIST_MULTIPLE_ND|R_LIST_SINGLE|R_LIST_SINGLE_ND|R_MENU|R_POPUP|R_POPUP_SCROLLED|R_RADIO_HORIZ|R_RADIO_VERT|R_ROW|R_SCALE_HORIZ|R_SCALE_VERT|R_SEP_HORIZ|R_SEP_VERT|R_SPINNER|R_TEXT_FIELD|R_TEXT_FIELD_LABEL|R_TOGGLE|TRIM_LEADING|TRIM_LEADING_AND_TRAILING|TRIM_REDUNDANT|TRIM_TRAILING|VOID|WARN)\\b/,\n boolean: /\\b(?:FALSE|False|NO|No|TRUE|True|YES|Yes|false|no|true|yes)\\b/,\n variable: /\\b(?:PslDebug|errno|exit_status)\\b/,\n builtin: {\n pattern:\n /\\b(?:PslExecute|PslFunctionCall|PslFunctionExists|PslSetOptions|_snmp_debug|acos|add_diary|annotate|annotate_get|ascii_to_ebcdic|asctime|asin|atan|atexit|batch_set|blackout|cat|ceil|chan_exists|change_state|close|code_cvt|cond_signal|cond_wait|console_type|convert_base|convert_date|convert_locale_date|cos|cosh|create|date|dcget_text|destroy|destroy_lock|dget_text|difference|dump_hist|ebcdic_to_ascii|encrypt|event_archive|event_catalog_get|event_check|event_query|event_range_manage|event_range_query|event_report|event_schedule|event_trigger|event_trigger2|execute|exists|exp|fabs|file|floor|fmod|fopen|fseek|ftell|full_discovery|get|get_chan_info|get_ranges|get_text|get_vars|getenv|gethostinfo|getpid|getpname|grep|history|history_get_retention|in_transition|index|int|internal|intersection|is_var|isnumber|join|kill|length|lines|lock|lock_info|log|log10|loge|matchline|msg_check|msg_get_format|msg_get_severity|msg_printf|msg_sprintf|ntharg|nthargf|nthline|nthlinef|num_bytes|num_consoles|pconfig|popen|poplines|pow|print|printf|proc_exists|process|random|read|readln|refresh_parameters|remote_check|remote_close|remote_event_query|remote_event_trigger|remote_file_send|remote_open|remove|replace|rindex|sec_check_priv|sec_store_get|sec_store_set|set|set_alarm_ranges|set_locale|share|sin|sinh|sleep|snmp_agent_config|snmp_agent_start|snmp_agent_stop|snmp_close|snmp_config|snmp_get|snmp_get_next|snmp_h_get|snmp_h_get_next|snmp_h_set|snmp_open|snmp_set|snmp_trap_ignore|snmp_trap_listen|snmp_trap_raise_std_trap|snmp_trap_receive|snmp_trap_register_im|snmp_trap_send|snmp_walk|sopen|sort|splitline|sprintf|sqrt|srandom|str_repeat|strcasecmp|subset|substr|system|tail|tan|tanh|text_domain|time|tmpnam|tolower|toupper|trace_psl_process|trim|union|unique|unlock|unset|va_arg|va_start|write)\\b/,\n alias: 'builtin-function'\n },\n 'foreach-variable': {\n pattern:\n /(\\bforeach\\s+(?:(?:\\w+\\b|\"(?:\\\\.|[^\\\\\"])*\")\\s+){0,2})[_a-zA-Z]\\w*(?=\\s*\\()/,\n lookbehind: true,\n greedy: true\n },\n function: /\\b[_a-z]\\w*\\b(?=\\s*\\()/i,\n number: /\\b(?:0x[0-9a-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n operator: /--|\\+\\+|&&=?|\\|\\|=?|<<=?|>>=?|[=!]~|[-+*/%&|^!=<>]=?|\\.|[:?]/,\n punctuation: /[(){}\\[\\];,]/\n }\n}\n","// @ts-nocheck\npcaxis.displayName = 'pcaxis'\npcaxis.aliases = ['px']\n\n/** @type {import('../core.js').Syntax} */\nexport default function pcaxis(Prism) {\n Prism.languages.pcaxis = {\n string: /\"[^\"]*\"/,\n keyword: {\n pattern:\n /((?:^|;)\\s*)[-A-Z\\d]+(?:\\s*\\[[-\\w]+\\])?(?:\\s*\\(\"[^\"]*\"(?:,\\s*\"[^\"]*\")*\\))?(?=\\s*=)/,\n lookbehind: true,\n greedy: true,\n inside: {\n keyword: /^[-A-Z\\d]+/,\n language: {\n pattern: /^(\\s*)\\[[-\\w]+\\]/,\n lookbehind: true,\n inside: {\n punctuation: /^\\[|\\]$/,\n property: /[-\\w]+/\n }\n },\n 'sub-key': {\n pattern: /^(\\s*)\\S[\\s\\S]*/,\n lookbehind: true,\n inside: {\n parameter: {\n pattern: /\"[^\"]*\"/,\n alias: 'property'\n },\n punctuation: /^\\(|\\)$|,/\n }\n }\n }\n },\n operator: /=/,\n tlist: {\n pattern:\n /TLIST\\s*\\(\\s*\\w+(?:(?:\\s*,\\s*\"[^\"]*\")+|\\s*,\\s*\"[^\"]*\"-\"[^\"]*\")?\\s*\\)/,\n greedy: true,\n inside: {\n function: /^TLIST/,\n property: {\n pattern: /^(\\s*\\(\\s*)\\w+/,\n lookbehind: true\n },\n string: /\"[^\"]*\"/,\n punctuation: /[(),]/,\n operator: /-/\n }\n },\n punctuation: /[;,]/,\n number: {\n pattern: /(^|\\s)\\d+(?:\\.\\d+)?(?!\\S)/,\n lookbehind: true\n },\n boolean: /NO|YES/\n }\n Prism.languages.px = Prism.languages.pcaxis\n}\n","// @ts-nocheck\npeoplecode.displayName = 'peoplecode'\npeoplecode.aliases = ['pcode']\n\n/** @type {import('../core.js').Syntax} */\nexport default function peoplecode(Prism) {\n Prism.languages.peoplecode = {\n comment: RegExp(\n [\n // C-style multiline comments\n /\\/\\*[\\s\\S]*?\\*\\//.source,\n // REM comments\n /\\bREM[^;]*;/.source,\n // Nested <* *> comments\n /<\\*(?:[^<*]|\\*(?!>)|<(?!\\*)|<\\*(?:(?!\\*>)[\\s\\S])*\\*>)*\\*>/.source,\n // /+ +/ comments\n /\\/\\+[\\s\\S]*?\\+\\//.source\n ].join('|')\n ),\n string: {\n pattern: /'(?:''|[^'\\r\\n])*'(?!')|\"(?:\"\"|[^\"\\r\\n])*\"(?!\")/,\n greedy: true\n },\n variable: /%\\w+/,\n 'function-definition': {\n pattern: /((?:^|[^\\w-])(?:function|method)\\s+)\\w+/i,\n lookbehind: true,\n alias: 'function'\n },\n 'class-name': {\n pattern:\n /((?:^|[^-\\w])(?:as|catch|class|component|create|extends|global|implements|instance|local|of|property|returns)\\s+)\\w+(?::\\w+)*/i,\n lookbehind: true,\n inside: {\n punctuation: /:/\n }\n },\n keyword:\n /\\b(?:abstract|alias|as|catch|class|component|constant|create|declare|else|end-(?:class|evaluate|for|function|get|if|method|set|try|while)|evaluate|extends|for|function|get|global|if|implements|import|instance|library|local|method|null|of|out|peopleCode|private|program|property|protected|readonly|ref|repeat|returns?|set|step|then|throw|to|try|until|value|when(?:-other)?|while)\\b/i,\n 'operator-keyword': {\n pattern: /\\b(?:and|not|or)\\b/i,\n alias: 'operator'\n },\n function: /[_a-z]\\w*(?=\\s*\\()/i,\n boolean: /\\b(?:false|true)\\b/i,\n number: /\\b\\d+(?:\\.\\d+)?\\b/,\n operator: /<>|[<>]=?|!=|\\*\\*|[-+*/|=@]/,\n punctuation: /[:.;,()[\\]]/\n }\n Prism.languages.pcode = Prism.languages.peoplecode\n}\n","// @ts-nocheck\nimport refractorJavadoclike from './javadoclike.js'\nimport refractorPhp from './php.js'\nphpdoc.displayName = 'phpdoc'\nphpdoc.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function phpdoc(Prism) {\n Prism.register(refractorJavadoclike)\n Prism.register(refractorPhp)\n ;(function (Prism) {\n var typeExpression = /(?:\\b[a-zA-Z]\\w*|[|\\\\[\\]])+/.source\n Prism.languages.phpdoc = Prism.languages.extend('javadoclike', {\n parameter: {\n pattern: RegExp(\n '(@(?:global|param|property(?:-read|-write)?|var)\\\\s+(?:' +\n typeExpression +\n '\\\\s+)?)\\\\$\\\\w+'\n ),\n lookbehind: true\n }\n })\n Prism.languages.insertBefore('phpdoc', 'keyword', {\n 'class-name': [\n {\n pattern: RegExp(\n '(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\\\\s+)' +\n typeExpression\n ),\n lookbehind: true,\n inside: {\n keyword:\n /\\b(?:array|bool|boolean|callback|double|false|float|int|integer|mixed|null|object|resource|self|string|true|void)\\b/,\n punctuation: /[|\\\\[\\]()]/\n }\n }\n ]\n })\n Prism.languages.javadoclike.addSupport('php', Prism.languages.phpdoc)\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorPhp from './php.js'\nphpExtras.displayName = 'php-extras'\nphpExtras.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function phpExtras(Prism) {\n Prism.register(refractorPhp)\n Prism.languages.insertBefore('php', 'variable', {\n this: {\n pattern: /\\$this\\b/,\n alias: 'keyword'\n },\n global:\n /\\$(?:GLOBALS|HTTP_RAW_POST_DATA|_(?:COOKIE|ENV|FILES|GET|POST|REQUEST|SERVER|SESSION)|argc|argv|http_response_header|php_errormsg)\\b/,\n scope: {\n pattern: /\\b[\\w\\\\]+::/,\n inside: {\n keyword: /\\b(?:parent|self|static)\\b/,\n punctuation: /::|\\\\/\n }\n }\n })\n}\n","// @ts-nocheck\nplantUml.displayName = 'plant-uml'\nplantUml.aliases = ['plantuml']\n\n/** @type {import('../core.js').Syntax} */\nexport default function plantUml(Prism) {\n ;(function (Prism) {\n var variable = /\\$\\w+|%[a-z]+%/\n var arrowAttr = /\\[[^[\\]]*\\]/.source\n var arrowDirection = /(?:[drlu]|do|down|le|left|ri|right|up)/.source\n var arrowBody =\n '(?:-+' +\n arrowDirection +\n '-+|\\\\.+' +\n arrowDirection +\n '\\\\.+|-+(?:' +\n arrowAttr +\n '-*)?|' +\n arrowAttr +\n '-+|\\\\.+(?:' +\n arrowAttr +\n '\\\\.*)?|' +\n arrowAttr +\n '\\\\.+)'\n var arrowLeft = /(?:<{1,2}|\\/{1,2}|\\\\{1,2}|<\\||[#*^+}xo])/.source\n var arrowRight = /(?:>{1,2}|\\/{1,2}|\\\\{1,2}|\\|>|[#*^+{xo])/.source\n var arrowPrefix = /[[?]?[ox]?/.source\n var arrowSuffix = /[ox]?[\\]?]?/.source\n var arrow =\n arrowPrefix +\n '(?:' +\n arrowBody +\n arrowRight +\n '|' +\n arrowLeft +\n arrowBody +\n '(?:' +\n arrowRight +\n ')?' +\n ')' +\n arrowSuffix\n Prism.languages['plant-uml'] = {\n comment: {\n pattern: /(^[ \\t]*)(?:'.*|\\/'[\\s\\S]*?'\\/)/m,\n lookbehind: true,\n greedy: true\n },\n preprocessor: {\n pattern: /(^[ \\t]*)!.*/m,\n lookbehind: true,\n greedy: true,\n alias: 'property',\n inside: {\n variable: variable\n }\n },\n delimiter: {\n pattern: /(^[ \\t]*)@(?:end|start)uml\\b/m,\n lookbehind: true,\n greedy: true,\n alias: 'punctuation'\n },\n arrow: {\n pattern: RegExp(\n /(^|[^-.<>?|\\\\[\\]ox])/.source + arrow + /(?![-.<>?|\\\\\\]ox])/.source\n ),\n lookbehind: true,\n greedy: true,\n alias: 'operator',\n inside: {\n expression: {\n pattern: /(\\[)[^[\\]]+(?=\\])/,\n lookbehind: true,\n inside: null // see below\n },\n\n punctuation: /\\[(?=$|\\])|^\\]/\n }\n },\n string: {\n pattern: /\"[^\"]*\"/,\n greedy: true\n },\n text: {\n pattern: /(\\[[ \\t]*[\\r\\n]+(?![\\r\\n]))[^\\]]*(?=\\])/,\n lookbehind: true,\n greedy: true,\n alias: 'string'\n },\n keyword: [\n {\n pattern:\n /^([ \\t]*)(?:abstract\\s+class|end\\s+(?:box|fork|group|merge|note|ref|split|title)|(?:fork|split)(?:\\s+again)?|activate|actor|agent|alt|annotation|artifact|autoactivate|autonumber|backward|binary|boundary|box|break|caption|card|case|circle|class|clock|cloud|collections|component|concise|control|create|critical|database|deactivate|destroy|detach|diamond|else|elseif|end|end[hr]note|endif|endswitch|endwhile|entity|enum|file|folder|footer|frame|group|[hr]?note|header|hexagon|hide|if|interface|label|legend|loop|map|namespace|network|newpage|node|nwdiag|object|opt|package|page|par|participant|person|queue|rectangle|ref|remove|repeat|restore|return|robust|scale|set|show|skinparam|stack|start|state|stop|storage|switch|title|together|usecase|usecase\\/|while)(?=\\s|$)/m,\n lookbehind: true,\n greedy: true\n },\n /\\b(?:elseif|equals|not|while)(?=\\s*\\()/,\n /\\b(?:as|is|then)\\b/\n ],\n divider: {\n pattern: /^==.+==$/m,\n greedy: true,\n alias: 'important'\n },\n time: {\n pattern: /@(?:\\d+(?:[:/]\\d+){2}|[+-]?\\d+|:[a-z]\\w*(?:[+-]\\d+)?)\\b/i,\n greedy: true,\n alias: 'number'\n },\n color: {\n pattern: /#(?:[a-z_]+|[a-fA-F0-9]+)\\b/,\n alias: 'symbol'\n },\n variable: variable,\n punctuation: /[:,;()[\\]{}]|\\.{3}/\n }\n Prism.languages['plant-uml'].arrow.inside.expression.inside =\n Prism.languages['plant-uml']\n Prism.languages['plantuml'] = Prism.languages['plant-uml']\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorSql from './sql.js'\nplsql.displayName = 'plsql'\nplsql.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function plsql(Prism) {\n Prism.register(refractorSql)\n Prism.languages.plsql = Prism.languages.extend('sql', {\n comment: {\n pattern: /\\/\\*[\\s\\S]*?\\*\\/|--.*/,\n greedy: true\n },\n // https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-reserved-words-keywords.html\n keyword:\n /\\b(?:A|ACCESSIBLE|ADD|AGENT|AGGREGATE|ALL|ALTER|AND|ANY|ARRAY|AS|ASC|AT|ATTRIBUTE|AUTHID|AVG|BEGIN|BETWEEN|BFILE_BASE|BINARY|BLOB_BASE|BLOCK|BODY|BOTH|BOUND|BULK|BY|BYTE|C|CALL|CALLING|CASCADE|CASE|CHAR|CHARACTER|CHARSET|CHARSETFORM|CHARSETID|CHAR_BASE|CHECK|CLOB_BASE|CLONE|CLOSE|CLUSTER|CLUSTERS|COLAUTH|COLLECT|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPILED|COMPRESS|CONNECT|CONSTANT|CONSTRUCTOR|CONTEXT|CONTINUE|CONVERT|COUNT|CRASH|CREATE|CREDENTIAL|CURRENT|CURSOR|CUSTOMDATUM|DANGLING|DATA|DATE|DATE_BASE|DAY|DECLARE|DEFAULT|DEFINE|DELETE|DESC|DETERMINISTIC|DIRECTORY|DISTINCT|DOUBLE|DROP|DURATION|ELEMENT|ELSE|ELSIF|EMPTY|END|ESCAPE|EXCEPT|EXCEPTION|EXCEPTIONS|EXCLUSIVE|EXECUTE|EXISTS|EXIT|EXTERNAL|FETCH|FINAL|FIRST|FIXED|FLOAT|FOR|FORALL|FORCE|FROM|FUNCTION|GENERAL|GOTO|GRANT|GROUP|HASH|HAVING|HEAP|HIDDEN|HOUR|IDENTIFIED|IF|IMMEDIATE|IMMUTABLE|IN|INCLUDING|INDEX|INDEXES|INDICATOR|INDICES|INFINITE|INSERT|INSTANTIABLE|INT|INTERFACE|INTERSECT|INTERVAL|INTO|INVALIDATE|IS|ISOLATION|JAVA|LANGUAGE|LARGE|LEADING|LENGTH|LEVEL|LIBRARY|LIKE|LIKE2|LIKE4|LIKEC|LIMIT|LIMITED|LOCAL|LOCK|LONG|LOOP|MAP|MAX|MAXLEN|MEMBER|MERGE|MIN|MINUS|MINUTE|MOD|MODE|MODIFY|MONTH|MULTISET|MUTABLE|NAME|NAN|NATIONAL|NATIVE|NCHAR|NEW|NOCOMPRESS|NOCOPY|NOT|NOWAIT|NULL|NUMBER_BASE|OBJECT|OCICOLL|OCIDATE|OCIDATETIME|OCIDURATION|OCIINTERVAL|OCILOBLOCATOR|OCINUMBER|OCIRAW|OCIREF|OCIREFCURSOR|OCIROWID|OCISTRING|OCITYPE|OF|OLD|ON|ONLY|OPAQUE|OPEN|OPERATOR|OPTION|OR|ORACLE|ORADATA|ORDER|ORGANIZATION|ORLANY|ORLVARY|OTHERS|OUT|OVERLAPS|OVERRIDING|PACKAGE|PARALLEL_ENABLE|PARAMETER|PARAMETERS|PARENT|PARTITION|PASCAL|PERSISTABLE|PIPE|PIPELINED|PLUGGABLE|POLYMORPHIC|PRAGMA|PRECISION|PRIOR|PRIVATE|PROCEDURE|PUBLIC|RAISE|RANGE|RAW|READ|RECORD|REF|REFERENCE|RELIES_ON|REM|REMAINDER|RENAME|RESOURCE|RESULT|RESULT_CACHE|RETURN|RETURNING|REVERSE|REVOKE|ROLLBACK|ROW|SAMPLE|SAVE|SAVEPOINT|SB1|SB2|SB4|SECOND|SEGMENT|SELECT|SELF|SEPARATE|SEQUENCE|SERIALIZABLE|SET|SHARE|SHORT|SIZE|SIZE_T|SOME|SPARSE|SQL|SQLCODE|SQLDATA|SQLNAME|SQLSTATE|STANDARD|START|STATIC|STDDEV|STORED|STRING|STRUCT|STYLE|SUBMULTISET|SUBPARTITION|SUBSTITUTABLE|SUBTYPE|SUM|SYNONYM|TABAUTH|TABLE|TDO|THE|THEN|TIME|TIMESTAMP|TIMEZONE_ABBR|TIMEZONE_HOUR|TIMEZONE_MINUTE|TIMEZONE_REGION|TO|TRAILING|TRANSACTION|TRANSACTIONAL|TRUSTED|TYPE|UB1|UB2|UB4|UNDER|UNION|UNIQUE|UNPLUG|UNSIGNED|UNTRUSTED|UPDATE|USE|USING|VALIST|VALUE|VALUES|VARIABLE|VARIANCE|VARRAY|VARYING|VIEW|VIEWS|VOID|WHEN|WHERE|WHILE|WITH|WORK|WRAPPED|WRITE|YEAR|ZONE)\\b/i,\n // https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-language-fundamentals.html#GUID-96A42F7C-7A71-4B90-8255-CA9C8BD9722E\n operator: /:=?|=>|[<>^~!]=|\\.\\.|\\|\\||\\*\\*|[-+*/%<>=@]/\n })\n Prism.languages.insertBefore('plsql', 'operator', {\n label: {\n pattern: /<<\\s*\\w+\\s*>>/,\n alias: 'symbol'\n }\n })\n}\n","// @ts-nocheck\npowerquery.displayName = 'powerquery'\npowerquery.aliases = ['mscript', 'pq']\n\n/** @type {import('../core.js').Syntax} */\nexport default function powerquery(Prism) {\n // https://docs.microsoft.com/en-us/powerquery-m/power-query-m-language-specification\n\n Prism.languages.powerquery = {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true,\n greedy: true\n },\n 'quoted-identifier': {\n pattern: /#\"(?:[^\"\\r\\n]|\"\")*\"(?!\")/,\n greedy: true\n },\n string: {\n pattern: /(?:#!)?\"(?:[^\"\\r\\n]|\"\")*\"(?!\")/,\n greedy: true\n },\n constant: [\n /\\bDay\\.(?:Friday|Monday|Saturday|Sunday|Thursday|Tuesday|Wednesday)\\b/,\n /\\bTraceLevel\\.(?:Critical|Error|Information|Verbose|Warning)\\b/,\n /\\bOccurrence\\.(?:All|First|Last)\\b/,\n /\\bOrder\\.(?:Ascending|Descending)\\b/,\n /\\bRoundingMode\\.(?:AwayFromZero|Down|ToEven|TowardZero|Up)\\b/,\n /\\bMissingField\\.(?:Error|Ignore|UseNull)\\b/,\n /\\bQuoteStyle\\.(?:Csv|None)\\b/,\n /\\bJoinKind\\.(?:FullOuter|Inner|LeftAnti|LeftOuter|RightAnti|RightOuter)\\b/,\n /\\bGroupKind\\.(?:Global|Local)\\b/,\n /\\bExtraValues\\.(?:Error|Ignore|List)\\b/,\n /\\bJoinAlgorithm\\.(?:Dynamic|LeftHash|LeftIndex|PairwiseHash|RightHash|RightIndex|SortMerge)\\b/,\n /\\bJoinSide\\.(?:Left|Right)\\b/,\n /\\bPrecision\\.(?:Decimal|Double)\\b/,\n /\\bRelativePosition\\.From(?:End|Start)\\b/,\n /\\bTextEncoding\\.(?:Ascii|BigEndianUnicode|Unicode|Utf16|Utf8|Windows)\\b/,\n /\\b(?:Any|Binary|Date|DateTime|DateTimeZone|Duration|Function|Int16|Int32|Int64|Int8|List|Logical|None|Number|Record|Table|Text|Time)\\.Type\\b/,\n /\\bnull\\b/\n ],\n boolean: /\\b(?:false|true)\\b/,\n keyword:\n /\\b(?:and|as|each|else|error|if|in|is|let|meta|not|nullable|optional|or|otherwise|section|shared|then|try|type)\\b|#(?:binary|date|datetime|datetimezone|duration|infinity|nan|sections|shared|table|time)\\b/,\n function: {\n pattern: /(^|[^#\\w.])[a-z_][\\w.]*(?=\\s*\\()/i,\n lookbehind: true\n },\n 'data-type': {\n pattern:\n /\\b(?:any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|number|record|table|text|time)\\b/,\n alias: 'class-name'\n },\n number: {\n pattern:\n /\\b0x[\\da-f]+\\b|(?:[+-]?(?:\\b\\d+\\.)?\\b\\d+|[+-]\\.\\d+|(^|[^.])\\B\\.\\d+)(?:e[+-]?\\d+)?\\b/i,\n lookbehind: true\n },\n operator: /[-+*\\/&?@^]|<(?:=>?|>)?|>=?|=>?|\\.\\.\\.?/,\n punctuation: /[,;\\[\\](){}]/\n }\n Prism.languages.pq = Prism.languages['powerquery']\n Prism.languages.mscript = Prism.languages['powerquery']\n}\n","// @ts-nocheck\npowershell.displayName = 'powershell'\npowershell.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function powershell(Prism) {\n ;(function (Prism) {\n var powershell = (Prism.languages.powershell = {\n comment: [\n {\n pattern: /(^|[^`])<#[\\s\\S]*?#>/,\n lookbehind: true\n },\n {\n pattern: /(^|[^`])#.*/,\n lookbehind: true\n }\n ],\n string: [\n {\n pattern: /\"(?:`[\\s\\S]|[^`\"])*\"/,\n greedy: true,\n inside: null // see below\n },\n {\n pattern: /'(?:[^']|'')*'/,\n greedy: true\n }\n ],\n // Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices\n // Supports two levels of nested brackets (e.g. `[OutputType([System.Collections.Generic.List[int]])]`)\n namespace: /\\[[a-z](?:\\[(?:\\[[^\\]]*\\]|[^\\[\\]])*\\]|[^\\[\\]])*\\]/i,\n boolean: /\\$(?:false|true)\\b/i,\n variable: /\\$\\w+\\b/,\n // Cmdlets and aliases. Aliases should come last, otherwise \"write\" gets preferred over \"write-host\" for example\n // Get-Command | ?{ $_.ModuleName -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n // Get-Alias | ?{ $_.ReferencedCommand.Module.Name -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n function: [\n /\\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\\b/i,\n /\\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n ],\n // per http://technet.microsoft.com/en-us/library/hh847744.aspx\n keyword:\n /\\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n operator: {\n pattern:\n /(^|\\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n lookbehind: true\n },\n punctuation: /[|{}[\\];(),.]/\n })\n\n // Variable interpolation inside strings, and nested expressions\n powershell.string[0].inside = {\n function: {\n // Allow for one level of nesting\n pattern: /(^|[^`])\\$\\((?:\\$\\([^\\r\\n()]*\\)|(?!\\$\\()[^\\r\\n)])*\\)/,\n lookbehind: true,\n inside: powershell\n },\n boolean: powershell.boolean,\n variable: powershell.variable\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nprocessing.displayName = 'processing'\nprocessing.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function processing(Prism) {\n Prism.register(refractorClike)\n Prism.languages.processing = Prism.languages.extend('clike', {\n keyword:\n /\\b(?:break|case|catch|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\\b/,\n // Spaces are allowed between function name and parenthesis\n function: /\\b\\w+(?=\\s*\\()/,\n operator: /<[<=]?|>[>=]?|&&?|\\|\\|?|[%?]|[!=+\\-*\\/]=?/\n })\n Prism.languages.insertBefore('processing', 'number', {\n // Special case: XML is a type\n constant: /\\b(?!XML\\b)[A-Z][A-Z\\d_]+\\b/,\n type: {\n pattern: /\\b(?:boolean|byte|char|color|double|float|int|[A-Z]\\w*)\\b/,\n alias: 'class-name'\n }\n })\n}\n","// @ts-nocheck\nprolog.displayName = 'prolog'\nprolog.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function prolog(Prism) {\n Prism.languages.prolog = {\n // Syntax depends on the implementation\n comment: {\n pattern: /\\/\\*[\\s\\S]*?\\*\\/|%.*/,\n greedy: true\n },\n // Depending on the implementation, strings may allow escaped newlines and quote-escape\n string: {\n pattern: /([\"'])(?:\\1\\1|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1(?!\\1)/,\n greedy: true\n },\n builtin: /\\b(?:fx|fy|xf[xy]?|yfx?)\\b/,\n // FIXME: Should we list all null-ary predicates (not followed by a parenthesis) like halt, trace, etc.?\n function: /\\b[a-z]\\w*(?:(?=\\()|\\/\\d+)/,\n number: /\\b\\d+(?:\\.\\d*)?/,\n // Custom operators are allowed\n operator: /[:\\\\=><\\-?*@\\/;+^|!$.]+|\\b(?:is|mod|not|xor)\\b/,\n punctuation: /[(){}\\[\\],]/\n }\n}\n","// @ts-nocheck\npromql.displayName = 'promql'\npromql.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function promql(Prism) {\n // Thanks to: https://github.com/prometheus-community/monaco-promql/blob/master/src/promql/promql.ts\n // As well as: https://kausal.co/blog/slate-prism-add-new-syntax-promql/\n\n ;(function (Prism) {\n // PromQL Aggregation Operators\n // (https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators)\n var aggregations = [\n 'sum',\n 'min',\n 'max',\n 'avg',\n 'group',\n 'stddev',\n 'stdvar',\n 'count',\n 'count_values',\n 'bottomk',\n 'topk',\n 'quantile'\n ]\n\n // PromQL vector matching + the by and without clauses\n // (https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching)\n var vectorMatching = [\n 'on',\n 'ignoring',\n 'group_right',\n 'group_left',\n 'by',\n 'without'\n ]\n\n // PromQL offset modifier\n // (https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier)\n var offsetModifier = ['offset']\n var keywords = aggregations.concat(vectorMatching, offsetModifier)\n Prism.languages.promql = {\n comment: {\n pattern: /(^[ \\t]*)#.*/m,\n lookbehind: true\n },\n 'vector-match': {\n // Match the comma-separated label lists inside vector matching:\n pattern: new RegExp(\n '((?:' + vectorMatching.join('|') + ')\\\\s*)\\\\([^)]*\\\\)'\n ),\n lookbehind: true,\n inside: {\n 'label-key': {\n pattern: /\\b[^,]+\\b/,\n alias: 'attr-name'\n },\n punctuation: /[(),]/\n }\n },\n 'context-labels': {\n pattern: /\\{[^{}]*\\}/,\n inside: {\n 'label-key': {\n pattern: /\\b[a-z_]\\w*(?=\\s*(?:=|![=~]))/,\n alias: 'attr-name'\n },\n 'label-value': {\n pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true,\n alias: 'attr-value'\n },\n punctuation: /\\{|\\}|=~?|![=~]|,/\n }\n },\n 'context-range': [\n {\n pattern: /\\[[\\w\\s:]+\\]/,\n // [1m]\n inside: {\n punctuation: /\\[|\\]|:/,\n 'range-duration': {\n pattern: /\\b(?:\\d+(?:[smhdwy]|ms))+\\b/i,\n alias: 'number'\n }\n }\n },\n {\n pattern: /(\\boffset\\s+)\\w+/,\n // offset 1m\n lookbehind: true,\n inside: {\n 'range-duration': {\n pattern: /\\b(?:\\d+(?:[smhdwy]|ms))+\\b/i,\n alias: 'number'\n }\n }\n }\n ],\n keyword: new RegExp('\\\\b(?:' + keywords.join('|') + ')\\\\b', 'i'),\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n number:\n /[-+]?(?:(?:\\b\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e[-+]?\\d+)?\\b|\\b(?:0x[0-9a-f]+|nan|inf)\\b)/i,\n operator: /[\\^*/%+-]|==|!=|<=|<|>=|>|\\b(?:and|or|unless)\\b/i,\n punctuation: /[{};()`,.[\\]]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nproperties.displayName = 'properties'\nproperties.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function properties(Prism) {\n Prism.languages.properties = {\n comment: /^[ \\t]*[#!].*$/m,\n value: {\n pattern:\n /(^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?: *[=:] *(?! )| ))(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])+/m,\n lookbehind: true,\n alias: 'attr-value'\n },\n key: {\n pattern: /^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?= *[=:]| )/m,\n alias: 'attr-name'\n },\n punctuation: /[=:]/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nprotobuf.displayName = 'protobuf'\nprotobuf.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function protobuf(Prism) {\n Prism.register(refractorClike)\n ;(function (Prism) {\n var builtinTypes =\n /\\b(?:bool|bytes|double|s?fixed(?:32|64)|float|[su]?int(?:32|64)|string)\\b/\n Prism.languages.protobuf = Prism.languages.extend('clike', {\n 'class-name': [\n {\n pattern:\n /(\\b(?:enum|extend|message|service)\\s+)[A-Za-z_]\\w*(?=\\s*\\{)/,\n lookbehind: true\n },\n {\n pattern:\n /(\\b(?:rpc\\s+\\w+|returns)\\s*\\(\\s*(?:stream\\s+)?)\\.?[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*(?=\\s*\\))/,\n lookbehind: true\n }\n ],\n keyword:\n /\\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|returns|rpc(?=\\s+\\w)|service|stream|syntax|to)\\b(?!\\s*=\\s*\\d)/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i\n })\n Prism.languages.insertBefore('protobuf', 'operator', {\n map: {\n pattern: /\\bmap<\\s*[\\w.]+\\s*,\\s*[\\w.]+\\s*>(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n alias: 'class-name',\n inside: {\n punctuation: /[<>.,]/,\n builtin: builtinTypes\n }\n },\n builtin: builtinTypes,\n 'positional-class-name': {\n pattern: /(?:\\b|\\B\\.)[a-z_]\\w*(?:\\.[a-z_]\\w*)*(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n alias: 'class-name',\n inside: {\n punctuation: /\\./\n }\n },\n annotation: {\n pattern: /(\\[\\s*)[a-z_]\\w*(?=\\s*=)/i,\n lookbehind: true\n }\n })\n })(Prism)\n}\n","// @ts-nocheck\nstylus.displayName = 'stylus'\nstylus.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function stylus(Prism) {\n ;(function (Prism) {\n var unit = {\n pattern: /(\\b\\d+)(?:%|[a-z]+)/,\n lookbehind: true\n }\n // 123 -123 .123 -.123 12.3 -12.3\n var number = {\n pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n lookbehind: true\n }\n var inside = {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n url: {\n pattern: /\\burl\\(([\"']?).*?\\1\\)/i,\n greedy: true\n },\n string: {\n pattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n greedy: true\n },\n interpolation: null,\n // See below\n func: null,\n // See below\n important: /\\B!(?:important|optional)\\b/i,\n keyword: {\n pattern: /(^|\\s+)(?:(?:else|for|if|return|unless)(?=\\s|$)|@[\\w-]+)/,\n lookbehind: true\n },\n hexcode: /#[\\da-f]{3,6}/i,\n color: [\n /\\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\\b/i,\n {\n pattern:\n /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n inside: {\n unit: unit,\n number: number,\n function: /[\\w-]+(?=\\()/,\n punctuation: /[(),]/\n }\n }\n ],\n entity: /\\\\[\\da-f]{1,8}/i,\n unit: unit,\n boolean: /\\b(?:false|true)\\b/,\n operator: [\n // We want non-word chars around \"-\" because it is\n // accepted in property names.\n /~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.{2,3}|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/\n ],\n number: number,\n punctuation: /[{}()\\[\\];:,]/\n }\n inside['interpolation'] = {\n pattern: /\\{[^\\r\\n}:]+\\}/,\n alias: 'variable',\n inside: {\n delimiter: {\n pattern: /^\\{|\\}$/,\n alias: 'punctuation'\n },\n rest: inside\n }\n }\n inside['func'] = {\n pattern: /[\\w-]+\\([^)]*\\).*/,\n inside: {\n function: /^[^(]+/,\n rest: inside\n }\n }\n Prism.languages.stylus = {\n 'atrule-declaration': {\n pattern: /(^[ \\t]*)@.+/m,\n lookbehind: true,\n inside: {\n atrule: /^@[\\w-]+/,\n rest: inside\n }\n },\n 'variable-declaration': {\n pattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:\\{[^{}]*\\}|\\S.*|$)/m,\n lookbehind: true,\n inside: {\n variable: /^\\S+/,\n rest: inside\n }\n },\n statement: {\n pattern: /(^[ \\t]*)(?:else|for|if|return|unless)[ \\t].+/m,\n lookbehind: true,\n inside: {\n keyword: /^\\S+/,\n rest: inside\n }\n },\n // A property/value pair cannot end with a comma or a brace\n // It cannot have indented content unless it ended with a semicolon\n 'property-declaration': {\n pattern:\n /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)(?!\\s)[^{\\r\\n]*(?:;|[^{\\r\\n,]$(?!(?:\\r?\\n|\\r)(?:\\{|\\2[ \\t])))/m,\n lookbehind: true,\n inside: {\n property: {\n pattern: /^[^\\s:]+/,\n inside: {\n interpolation: inside.interpolation\n }\n },\n rest: inside\n }\n },\n // A selector can contain parentheses only as part of a pseudo-element\n // It can span multiple lines.\n // It must end with a comma or an accolade or have indented content.\n selector: {\n pattern:\n /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t])))/m,\n lookbehind: true,\n inside: {\n interpolation: inside.interpolation,\n comment: inside.comment,\n punctuation: /[{},]/\n }\n },\n func: inside.func,\n string: inside.string,\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true,\n greedy: true\n },\n interpolation: inside.interpolation,\n punctuation: /[{}()\\[\\];:.]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkupTemplating from './markup-templating.js'\ntwig.displayName = 'twig'\ntwig.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function twig(Prism) {\n Prism.register(refractorMarkupTemplating)\n Prism.languages.twig = {\n comment: /^\\{#[\\s\\S]*?#\\}$/,\n 'tag-name': {\n pattern: /(^\\{%-?\\s*)\\w+/,\n lookbehind: true,\n alias: 'keyword'\n },\n delimiter: {\n pattern: /^\\{[{%]-?|-?[%}]\\}$/,\n alias: 'punctuation'\n },\n string: {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n inside: {\n punctuation: /^['\"]|['\"]$/\n }\n },\n keyword: /\\b(?:even|if|odd)\\b/,\n boolean: /\\b(?:false|null|true)\\b/,\n number: /\\b0x[\\dA-Fa-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][-+]?\\d+)?/,\n operator: [\n {\n pattern:\n /(\\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\\s)/,\n lookbehind: true\n },\n /[=<>]=?|!=|\\*\\*?|\\/\\/?|\\?:?|[-+~%|]/\n ],\n punctuation: /[()\\[\\]{}:.,]/\n }\n Prism.hooks.add('before-tokenize', function (env) {\n if (env.language !== 'twig') {\n return\n }\n var pattern = /\\{(?:#[\\s\\S]*?#|%[\\s\\S]*?%|\\{[\\s\\S]*?\\})\\}/g\n Prism.languages['markup-templating'].buildPlaceholders(env, 'twig', pattern)\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'twig')\n })\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\nimport refractorMarkup from './markup.js'\npug.displayName = 'pug'\npug.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function pug(Prism) {\n Prism.register(refractorJavascript)\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n // TODO:\n // - Add CSS highlighting inside <style> tags\n // - Add support for multi-line code blocks\n // - Add support for interpolation #{} and !{}\n // - Add support for tag interpolation #[]\n // - Add explicit support for plain text using |\n // - Add support for markup embedded in plain text\n\n Prism.languages.pug = {\n // Multiline stuff should appear before the rest\n\n // This handles both single-line and multi-line comments\n comment: {\n pattern: /(^([\\t ]*))\\/\\/.*(?:(?:\\r?\\n|\\r)\\2[\\t ].+)*/m,\n lookbehind: true\n },\n // All the tag-related part is in lookbehind\n // so that it can be highlighted by the \"tag\" pattern\n 'multiline-script': {\n pattern:\n /(^([\\t ]*)script\\b.*\\.[\\t ]*)(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/m,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n // See at the end of the file for known filters\n filter: {\n pattern:\n /(^([\\t ]*)):.+(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/m,\n lookbehind: true,\n inside: {\n 'filter-name': {\n pattern: /^:[\\w-]+/,\n alias: 'variable'\n },\n text: /\\S[\\s\\S]*/\n }\n },\n 'multiline-plain-text': {\n pattern:\n /(^([\\t ]*)[\\w\\-#.]+\\.[\\t ]*)(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/m,\n lookbehind: true\n },\n markup: {\n pattern: /(^[\\t ]*)<.+/m,\n lookbehind: true,\n inside: Prism.languages.markup\n },\n doctype: {\n pattern: /((?:^|\\n)[\\t ]*)doctype(?: .+)?/,\n lookbehind: true\n },\n // This handle all conditional and loop keywords\n 'flow-control': {\n pattern:\n /(^[\\t ]*)(?:case|default|each|else|if|unless|when|while)\\b(?: .+)?/m,\n lookbehind: true,\n inside: {\n each: {\n pattern: /^each .+? in\\b/,\n inside: {\n keyword: /\\b(?:each|in)\\b/,\n punctuation: /,/\n }\n },\n branch: {\n pattern: /^(?:case|default|else|if|unless|when|while)\\b/,\n alias: 'keyword'\n },\n rest: Prism.languages.javascript\n }\n },\n keyword: {\n pattern: /(^[\\t ]*)(?:append|block|extends|include|prepend)\\b.+/m,\n lookbehind: true\n },\n mixin: [\n // Declaration\n {\n pattern: /(^[\\t ]*)mixin .+/m,\n lookbehind: true,\n inside: {\n keyword: /^mixin/,\n function: /\\w+(?=\\s*\\(|\\s*$)/,\n punctuation: /[(),.]/\n }\n },\n // Usage\n {\n pattern: /(^[\\t ]*)\\+.+/m,\n lookbehind: true,\n inside: {\n name: {\n pattern: /^\\+\\w+/,\n alias: 'function'\n },\n rest: Prism.languages.javascript\n }\n }\n ],\n script: {\n pattern: /(^[\\t ]*script(?:(?:&[^(]+)?\\([^)]+\\))*[\\t ]).+/m,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n 'plain-text': {\n pattern:\n /(^[\\t ]*(?!-)[\\w\\-#.]*[\\w\\-](?:(?:&[^(]+)?\\([^)]+\\))*\\/?[\\t ]).+/m,\n lookbehind: true\n },\n tag: {\n pattern: /(^[\\t ]*)(?!-)[\\w\\-#.]*[\\w\\-](?:(?:&[^(]+)?\\([^)]+\\))*\\/?:?/m,\n lookbehind: true,\n inside: {\n attributes: [\n {\n pattern: /&[^(]+\\([^)]+\\)/,\n inside: Prism.languages.javascript\n },\n {\n pattern: /\\([^)]+\\)/,\n inside: {\n 'attr-value': {\n pattern: /(=\\s*(?!\\s))(?:\\{[^}]*\\}|[^,)\\r\\n]+)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n },\n 'attr-name': /[\\w-]+(?=\\s*!?=|\\s*[,)])/,\n punctuation: /[!=(),]+/\n }\n }\n ],\n punctuation: /:/,\n 'attr-id': /#[\\w\\-]+/,\n 'attr-class': /\\.[\\w\\-]+/\n }\n },\n code: [\n {\n pattern: /(^[\\t ]*(?:-|!?=)).+/m,\n lookbehind: true,\n inside: Prism.languages.javascript\n }\n ],\n punctuation: /[.\\-!=|]+/\n }\n var filter_pattern =\n /(^([\\t ]*)):<filter_name>(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/\n .source\n\n // Non exhaustive list of available filters and associated languages\n var filters = [\n {\n filter: 'atpl',\n language: 'twig'\n },\n {\n filter: 'coffee',\n language: 'coffeescript'\n },\n 'ejs',\n 'handlebars',\n 'less',\n 'livescript',\n 'markdown',\n {\n filter: 'sass',\n language: 'scss'\n },\n 'stylus'\n ]\n var all_filters = {}\n for (var i = 0, l = filters.length; i < l; i++) {\n var filter = filters[i]\n filter =\n typeof filter === 'string'\n ? {\n filter: filter,\n language: filter\n }\n : filter\n if (Prism.languages[filter.language]) {\n all_filters['filter-' + filter.filter] = {\n pattern: RegExp(\n filter_pattern.replace('<filter_name>', function () {\n return filter.filter\n }),\n 'm'\n ),\n lookbehind: true,\n inside: {\n 'filter-name': {\n pattern: /^:[\\w-]+/,\n alias: 'variable'\n },\n text: {\n pattern: /\\S[\\s\\S]*/,\n alias: [filter.language, 'language-' + filter.language],\n inside: Prism.languages[filter.language]\n }\n }\n }\n }\n }\n Prism.languages.insertBefore('pug', 'filter', all_filters)\n })(Prism)\n}\n","// @ts-nocheck\npuppet.displayName = 'puppet'\npuppet.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function puppet(Prism) {\n ;(function (Prism) {\n Prism.languages.puppet = {\n heredoc: [\n // Matches the content of a quoted heredoc string (subject to interpolation)\n {\n pattern:\n /(@\\(\"([^\"\\r\\n\\/):]+)\"(?:\\/[nrts$uL]*)?\\).*(?:\\r?\\n|\\r))(?:.*(?:\\r?\\n|\\r(?!\\n)))*?[ \\t]*(?:\\|[ \\t]*)?(?:-[ \\t]*)?\\2/,\n lookbehind: true,\n alias: 'string',\n inside: {\n // Matches the end tag\n punctuation: /(?=\\S).*\\S(?= *$)/\n // See interpolation below\n }\n },\n // Matches the content of an unquoted heredoc string (no interpolation)\n {\n pattern:\n /(@\\(([^\"\\r\\n\\/):]+)(?:\\/[nrts$uL]*)?\\).*(?:\\r?\\n|\\r))(?:.*(?:\\r?\\n|\\r(?!\\n)))*?[ \\t]*(?:\\|[ \\t]*)?(?:-[ \\t]*)?\\2/,\n lookbehind: true,\n greedy: true,\n alias: 'string',\n inside: {\n // Matches the end tag\n punctuation: /(?=\\S).*\\S(?= *$)/\n }\n },\n // Matches the start tag of heredoc strings\n {\n pattern: /@\\(\"?(?:[^\"\\r\\n\\/):]+)\"?(?:\\/[nrts$uL]*)?\\)/,\n alias: 'string',\n inside: {\n punctuation: {\n pattern: /(\\().+?(?=\\))/,\n lookbehind: true\n }\n }\n }\n ],\n 'multiline-comment': {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n lookbehind: true,\n greedy: true,\n alias: 'comment'\n },\n regex: {\n // Must be prefixed with the keyword \"node\" or a non-word char\n pattern:\n /((?:\\bnode\\s+|[~=\\(\\[\\{,]\\s*|[=+]>\\s*|^\\s*))\\/(?:[^\\/\\\\]|\\\\[\\s\\S])+\\/(?:[imx]+\\b|\\B)/,\n lookbehind: true,\n greedy: true,\n inside: {\n // Extended regexes must have the x flag. They can contain single-line comments.\n 'extended-regex': {\n pattern: /^\\/(?:[^\\/\\\\]|\\\\[\\s\\S])+\\/[im]*x[im]*$/,\n inside: {\n comment: /#.*/\n }\n }\n }\n },\n comment: {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true,\n greedy: true\n },\n string: {\n // Allow for one nested level of double quotes inside interpolation\n pattern:\n /([\"'])(?:\\$\\{(?:[^'\"}]|([\"'])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2)+\\}|\\$(?!\\{)|(?!\\1)[^\\\\$]|\\\\[\\s\\S])*\\1/,\n greedy: true,\n inside: {\n 'double-quoted': {\n pattern: /^\"[\\s\\S]*\"$/,\n inside: {\n // See interpolation below\n }\n }\n }\n },\n variable: {\n pattern: /\\$(?:::)?\\w+(?:::\\w+)*/,\n inside: {\n punctuation: /::/\n }\n },\n 'attr-name': /(?:\\b\\w+|\\*)(?=\\s*=>)/,\n function: [\n {\n pattern: /(\\.)(?!\\d)\\w+/,\n lookbehind: true\n },\n /\\b(?:contain|debug|err|fail|include|info|notice|realize|require|tag|warning)\\b|\\b(?!\\d)\\w+(?=\\()/\n ],\n number: /\\b(?:0x[a-f\\d]+|\\d+(?:\\.\\d+)?(?:e-?\\d+)?)\\b/i,\n boolean: /\\b(?:false|true)\\b/,\n // Includes words reserved for future use\n keyword:\n /\\b(?:application|attr|case|class|consumes|default|define|else|elsif|function|if|import|inherits|node|private|produces|type|undef|unless)\\b/,\n datatype: {\n pattern:\n /\\b(?:Any|Array|Boolean|Callable|Catalogentry|Class|Collection|Data|Default|Enum|Float|Hash|Integer|NotUndef|Numeric|Optional|Pattern|Regexp|Resource|Runtime|Scalar|String|Struct|Tuple|Type|Undef|Variant)\\b/,\n alias: 'symbol'\n },\n operator:\n /=[=~>]?|![=~]?|<(?:<\\|?|[=~|-])?|>[>=]?|->?|~>|\\|>?>?|[*\\/%+?]|\\b(?:and|in|or)\\b/,\n punctuation: /[\\[\\]{}().,;]|:+/\n }\n var interpolation = [\n {\n // Allow for one nested level of braces inside interpolation\n pattern:\n /(^|[^\\\\])\\$\\{(?:[^'\"{}]|\\{[^}]*\\}|([\"'])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2)+\\}/,\n lookbehind: true,\n inside: {\n 'short-variable': {\n // Negative look-ahead prevent wrong highlighting of functions\n pattern: /(^\\$\\{)(?!\\w+\\()(?:::)?\\w+(?:::\\w+)*/,\n lookbehind: true,\n alias: 'variable',\n inside: {\n punctuation: /::/\n }\n },\n delimiter: {\n pattern: /^\\$/,\n alias: 'variable'\n },\n rest: Prism.languages.puppet\n }\n },\n {\n pattern: /(^|[^\\\\])\\$(?:::)?\\w+(?:::\\w+)*/,\n lookbehind: true,\n alias: 'variable',\n inside: {\n punctuation: /::/\n }\n }\n ]\n Prism.languages.puppet['heredoc'][0].inside.interpolation = interpolation\n Prism.languages.puppet['string'].inside[\n 'double-quoted'\n ].inside.interpolation = interpolation\n })(Prism)\n}\n","// @ts-nocheck\npure.displayName = 'pure'\npure.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function pure(Prism) {\n ;(function (Prism) {\n // https://agraef.github.io/pure-docs/pure.html#lexical-matters\n\n Prism.languages.pure = {\n comment: [\n {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n lookbehind: true\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true\n },\n /#!.+/\n ],\n 'inline-lang': {\n pattern: /%<[\\s\\S]+?%>/,\n greedy: true,\n inside: {\n lang: {\n pattern: /(^%< *)-\\*-.+?-\\*-/,\n lookbehind: true,\n alias: 'comment'\n },\n delimiter: {\n pattern: /^%<.*|%>$/,\n alias: 'punctuation'\n }\n }\n },\n string: {\n pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n greedy: true\n },\n number: {\n // The look-behind prevents wrong highlighting of the .. operator\n pattern:\n /((?:\\.\\.)?)(?:\\b(?:inf|nan)\\b|\\b0x[\\da-f]+|(?:\\b(?:0b)?\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e[+-]?\\d+)?L?)/i,\n lookbehind: true\n },\n keyword:\n /\\b(?:NULL|ans|break|bt|case|catch|cd|clear|const|def|del|dump|else|end|exit|extern|false|force|help|if|infix[lr]?|interface|let|ls|mem|namespace|nonfix|of|otherwise|outfix|override|postfix|prefix|private|public|pwd|quit|run|save|show|stats|then|throw|trace|true|type|underride|using|when|with)\\b/,\n function:\n /\\b(?:abs|add_(?:addr|constdef|(?:fundef|interface|macdef|typedef)(?:_at)?|vardef)|all|any|applp?|arity|bigintp?|blob(?:_crc|_size|p)?|boolp?|byte_c?string(?:_pointer)?|byte_(?:matrix|pointer)|calloc|cat|catmap|ceil|char[ps]?|check_ptrtag|chr|clear_sentry|clearsym|closurep?|cmatrixp?|cols?|colcat(?:map)?|colmap|colrev|colvector(?:p|seq)?|complex(?:_float_(?:matrix|pointer)|_matrix(?:_view)?|_pointer|p)?|conj|cookedp?|cst|cstring(?:_(?:dup|list|vector))?|curry3?|cyclen?|del_(?:constdef|fundef|interface|macdef|typedef|vardef)|delete|diag(?:mat)?|dim|dmatrixp?|do|double(?:_matrix(?:_view)?|_pointer|p)?|dowith3?|drop|dropwhile|eval(?:cmd)?|exactp|filter|fix|fixity|flip|float(?:_matrix|_pointer)|floor|fold[lr]1?|frac|free|funp?|functionp?|gcd|get(?:_(?:byte|constdef|double|float|fundef|int(?:64)?|interface(?:_typedef)?|long|macdef|pointer|ptrtag|sentry|short|string|typedef|vardef))?|globsym|hash|head|id|im|imatrixp?|index|inexactp|infp|init|insert|int(?:_matrix(?:_view)?|_pointer|p)?|int64_(?:matrix|pointer)|integerp?|iteraten?|iterwhile|join|keys?|lambdap?|last(?:err(?:pos)?)?|lcd|list[2p]?|listmap|make_ptrtag|malloc|map|matcat|matrixp?|max|member|min|nanp|nargs|nmatrixp?|null|numberp?|ord|pack(?:ed)?|pointer(?:_cast|_tag|_type|p)?|pow|pred|ptrtag|put(?:_(?:byte|double|float|int(?:64)?|long|pointer|short|string))?|rationalp?|re|realp?|realloc|recordp?|redim|reduce(?:_with)?|refp?|repeatn?|reverse|rlistp?|round|rows?|rowcat(?:map)?|rowmap|rowrev|rowvector(?:p|seq)?|same|scan[lr]1?|sentry|sgn|short_(?:matrix|pointer)|slice|smatrixp?|sort|split|str|strcat|stream|stride|string(?:_(?:dup|list|vector)|p)?|subdiag(?:mat)?|submat|subseq2?|substr|succ|supdiag(?:mat)?|symbolp?|tail|take|takewhile|thunkp?|transpose|trunc|tuplep?|typep|ubyte|uint(?:64)?|ulong|uncurry3?|unref|unzip3?|update|ushort|vals?|varp?|vector(?:p|seq)?|void|zip3?|zipwith3?)\\b/,\n special: {\n pattern: /\\b__[a-z]+__\\b/i,\n alias: 'builtin'\n },\n // Any combination of operator chars can be an operator\n // eslint-disable-next-line no-misleading-character-class\n operator:\n /(?:[!\"#$%&'*+,\\-.\\/:<=>?@\\\\^`|~\\u00a1-\\u00bf\\u00d7-\\u00f7\\u20d0-\\u2bff]|\\b_+\\b)+|\\b(?:and|div|mod|not|or)\\b/,\n // FIXME: How can we prevent | and , to be highlighted as operator when they are used alone?\n punctuation: /[(){}\\[\\];,|]/\n }\n var inlineLanguages = [\n 'c',\n {\n lang: 'c++',\n alias: 'cpp'\n },\n 'fortran'\n ]\n var inlineLanguageRe = /%< *-\\*- *<lang>\\d* *-\\*-[\\s\\S]+?%>/.source\n inlineLanguages.forEach(function (lang) {\n var alias = lang\n if (typeof lang !== 'string') {\n alias = lang.alias\n lang = lang.lang\n }\n if (Prism.languages[alias]) {\n var o = {}\n o['inline-lang-' + alias] = {\n pattern: RegExp(\n inlineLanguageRe.replace(\n '<lang>',\n lang.replace(/([.+*?\\/\\\\(){}\\[\\]])/g, '\\\\$1')\n ),\n 'i'\n ),\n inside: Prism.util.clone(Prism.languages.pure['inline-lang'].inside)\n }\n o['inline-lang-' + alias].inside.rest = Prism.util.clone(\n Prism.languages[alias]\n )\n Prism.languages.insertBefore('pure', 'inline-lang', o)\n }\n })\n\n // C is the default inline language\n if (Prism.languages.c) {\n Prism.languages.pure['inline-lang'].inside.rest = Prism.util.clone(\n Prism.languages.c\n )\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\npurebasic.displayName = 'purebasic'\npurebasic.aliases = ['pbfasm']\n\n/** @type {import('../core.js').Syntax} */\nexport default function purebasic(Prism) {\n Prism.register(refractorClike)\n /*\nOriginal Code by Bas Groothedde\n!!MANY THANKS!! I never would have made this, regex and me will never be best friends ;)\n==> https://codepen.io/ImagineProgramming/details/JYydBy/\nslightly changed to pass all tests\n*/\n\n // PureBasic support, steal stuff from ansi-c\n Prism.languages.purebasic = Prism.languages.extend('clike', {\n comment: /;.*/,\n keyword:\n /\\b(?:align|and|as|break|calldebugger|case|compilercase|compilerdefault|compilerelse|compilerelseif|compilerendif|compilerendselect|compilererror|compilerif|compilerselect|continue|data|datasection|debug|debuglevel|declare|declarec|declarecdll|declaredll|declaremodule|default|define|dim|disableasm|disabledebugger|disableexplicit|else|elseif|enableasm|enabledebugger|enableexplicit|end|enddatasection|enddeclaremodule|endenumeration|endif|endimport|endinterface|endmacro|endmodule|endprocedure|endselect|endstructure|endstructureunion|endwith|enumeration|extends|fakereturn|for|foreach|forever|global|gosub|goto|if|import|importc|includebinary|includefile|includepath|interface|macro|module|newlist|newmap|next|not|or|procedure|procedurec|procedurecdll|proceduredll|procedurereturn|protected|prototype|prototypec|read|redim|repeat|restore|return|runtime|select|shared|static|step|structure|structureunion|swap|threaded|to|until|wend|while|with|xincludefile|xor)\\b/i,\n function: /\\b\\w+(?:\\.\\w+)?\\s*(?=\\()/,\n number: /(?:\\$[\\da-f]+|\\b-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+-]?\\d+)?)\\b/i,\n operator:\n /(?:@\\*?|\\?|\\*)\\w+\\$?|-[>-]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|?\\||[~^%?*/@]/\n })\n Prism.languages.insertBefore('purebasic', 'keyword', {\n tag: /#\\w+\\$?/,\n asm: {\n pattern: /(^[\\t ]*)!.*/m,\n lookbehind: true,\n alias: 'tag',\n inside: {\n comment: /;.*/,\n string: {\n pattern: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n // Anonymous label references, i.e.: jmp @b\n 'label-reference-anonymous': {\n pattern: /(!\\s*j[a-z]+\\s+)@[fb]/i,\n lookbehind: true,\n alias: 'fasm-label'\n },\n // Named label reference, i.e.: jne label1\n 'label-reference-addressed': {\n pattern: /(!\\s*j[a-z]+\\s+)[A-Z._?$@][\\w.?$@~#]*/i,\n lookbehind: true,\n alias: 'fasm-label'\n },\n keyword: [\n /\\b(?:extern|global)\\b[^;\\r\\n]*/i,\n /\\b(?:CPU|DEFAULT|FLOAT)\\b.*/\n ],\n function: {\n pattern: /^([\\t ]*!\\s*)[\\da-z]+(?=\\s|$)/im,\n lookbehind: true\n },\n 'function-inline': {\n pattern: /(:\\s*)[\\da-z]+(?=\\s)/i,\n lookbehind: true,\n alias: 'function'\n },\n label: {\n pattern: /^([\\t ]*!\\s*)[A-Za-z._?$@][\\w.?$@~#]*(?=:)/m,\n lookbehind: true,\n alias: 'fasm-label'\n },\n register:\n /\\b(?:st\\d|[xyz]mm\\d\\d?|[cdt]r\\d|r\\d\\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|di|si|sp)|[cdefgs]s|mm\\d+)\\b/i,\n number:\n /(?:\\b|-|(?=\\$))(?:0[hx](?:[\\da-f]*\\.)?[\\da-f]+(?:p[+-]?\\d+)?|\\d[\\da-f]+[hx]|\\$\\d[\\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\\d+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:\\.?e[+-]?\\d+)?[dt]?)\\b/i,\n operator: /[\\[\\]*+\\-/%<>=&|$!,.:]/\n }\n }\n })\n delete Prism.languages.purebasic['class-name']\n delete Prism.languages.purebasic['boolean']\n Prism.languages.pbfasm = Prism.languages['purebasic']\n}\n","// @ts-nocheck\nimport refractorHaskell from './haskell.js'\npurescript.displayName = 'purescript'\npurescript.aliases = ['purs']\n\n/** @type {import('../core.js').Syntax} */\nexport default function purescript(Prism) {\n Prism.register(refractorHaskell)\n Prism.languages.purescript = Prism.languages.extend('haskell', {\n keyword:\n /\\b(?:ado|case|class|data|derive|do|else|forall|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\\b|∀/,\n 'import-statement': {\n // The imported or hidden names are not included in this import\n // statement. This is because we want to highlight those exactly like\n // we do for the names in the program.\n pattern:\n /(^[\\t ]*)import\\s+[A-Z][\\w']*(?:\\.[A-Z][\\w']*)*(?:\\s+as\\s+[A-Z][\\w']*(?:\\.[A-Z][\\w']*)*)?(?:\\s+hiding\\b)?/m,\n lookbehind: true,\n inside: {\n keyword: /\\b(?:as|hiding|import)\\b/,\n punctuation: /\\./\n }\n },\n // These are builtin functions only. Constructors are highlighted later as a constant.\n builtin:\n /\\b(?:absurd|add|ap|append|apply|between|bind|bottom|clamp|compare|comparing|compose|conj|const|degree|discard|disj|div|eq|flap|flip|gcd|identity|ifM|join|lcm|liftA1|liftM1|map|max|mempty|min|mod|mul|negate|not|notEq|one|otherwise|recip|show|sub|top|unit|unless|unlessM|void|when|whenM|zero)\\b/,\n operator: [\n // Infix operators\n Prism.languages.haskell.operator[0],\n // ASCII operators\n Prism.languages.haskell.operator[2],\n // All UTF16 Unicode operator symbols\n // This regex is equivalent to /(?=[\\x80-\\uFFFF])[\\p{gc=Math_Symbol}\\p{gc=Currency_Symbol}\\p{Modifier_Symbol}\\p{Other_Symbol}]/u\n // See https://github.com/PrismJS/prism/issues/3006 for more details.\n /[\\xa2-\\xa6\\xa8\\xa9\\xac\\xae-\\xb1\\xb4\\xb8\\xd7\\xf7\\u02c2-\\u02c5\\u02d2-\\u02df\\u02e5-\\u02eb\\u02ed\\u02ef-\\u02ff\\u0375\\u0384\\u0385\\u03f6\\u0482\\u058d-\\u058f\\u0606-\\u0608\\u060b\\u060e\\u060f\\u06de\\u06e9\\u06fd\\u06fe\\u07f6\\u07fe\\u07ff\\u09f2\\u09f3\\u09fa\\u09fb\\u0af1\\u0b70\\u0bf3-\\u0bfa\\u0c7f\\u0d4f\\u0d79\\u0e3f\\u0f01-\\u0f03\\u0f13\\u0f15-\\u0f17\\u0f1a-\\u0f1f\\u0f34\\u0f36\\u0f38\\u0fbe-\\u0fc5\\u0fc7-\\u0fcc\\u0fce\\u0fcf\\u0fd5-\\u0fd8\\u109e\\u109f\\u1390-\\u1399\\u166d\\u17db\\u1940\\u19de-\\u19ff\\u1b61-\\u1b6a\\u1b74-\\u1b7c\\u1fbd\\u1fbf-\\u1fc1\\u1fcd-\\u1fcf\\u1fdd-\\u1fdf\\u1fed-\\u1fef\\u1ffd\\u1ffe\\u2044\\u2052\\u207a-\\u207c\\u208a-\\u208c\\u20a0-\\u20bf\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211e-\\u2123\\u2125\\u2127\\u2129\\u212e\\u213a\\u213b\\u2140-\\u2144\\u214a-\\u214d\\u214f\\u218a\\u218b\\u2190-\\u2307\\u230c-\\u2328\\u232b-\\u2426\\u2440-\\u244a\\u249c-\\u24e9\\u2500-\\u2767\\u2794-\\u27c4\\u27c7-\\u27e5\\u27f0-\\u2982\\u2999-\\u29d7\\u29dc-\\u29fb\\u29fe-\\u2b73\\u2b76-\\u2b95\\u2b97-\\u2bff\\u2ce5-\\u2cea\\u2e50\\u2e51\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u2ff0-\\u2ffb\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303e\\u303f\\u309b\\u309c\\u3190\\u3191\\u3196-\\u319f\\u31c0-\\u31e3\\u3200-\\u321e\\u322a-\\u3247\\u3250\\u3260-\\u327f\\u328a-\\u32b0\\u32c0-\\u33ff\\u4dc0-\\u4dff\\ua490-\\ua4c6\\ua700-\\ua716\\ua720\\ua721\\ua789\\ua78a\\ua828-\\ua82b\\ua836-\\ua839\\uaa77-\\uaa79\\uab5b\\uab6a\\uab6b\\ufb29\\ufbb2-\\ufbc1\\ufdfc\\ufdfd\\ufe62\\ufe64-\\ufe66\\ufe69\\uff04\\uff0b\\uff1c-\\uff1e\\uff3e\\uff40\\uff5c\\uff5e\\uffe0-\\uffe6\\uffe8-\\uffee\\ufffc\\ufffd]/\n ]\n })\n Prism.languages.purs = Prism.languages.purescript\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nqsharp.displayName = 'qsharp'\nqsharp.aliases = ['qs']\n\n/** @type {import('../core.js').Syntax} */\nexport default function qsharp(Prism) {\n Prism.register(refractorClike)\n ;(function (Prism) {\n /**\n * Replaces all placeholders \"<<n>>\" of given pattern with the n-th replacement (zero based).\n *\n * Note: This is a simple text based replacement. Be careful when using backreferences!\n *\n * @param {string} pattern the given pattern.\n * @param {string[]} replacements a list of replacement which can be inserted into the given pattern.\n * @returns {string} the pattern with all placeholders replaced with their corresponding replacements.\n * @example replace(/a<<0>>a/.source, [/b+/.source]) === /a(?:b+)a/.source\n */\n function replace(pattern, replacements) {\n return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n return '(?:' + replacements[+index] + ')'\n })\n }\n /**\n * @param {string} pattern\n * @param {string[]} replacements\n * @param {string} [flags]\n * @returns {RegExp}\n */\n function re(pattern, replacements, flags) {\n return RegExp(replace(pattern, replacements), flags || '')\n }\n\n /**\n * Creates a nested pattern where all occurrences of the string `<<self>>` are replaced with the pattern itself.\n *\n * @param {string} pattern\n * @param {number} depthLog2\n * @returns {string}\n */\n function nested(pattern, depthLog2) {\n for (var i = 0; i < depthLog2; i++) {\n pattern = pattern.replace(/<<self>>/g, function () {\n return '(?:' + pattern + ')'\n })\n }\n return pattern.replace(/<<self>>/g, '[^\\\\s\\\\S]')\n }\n\n // https://docs.microsoft.com/en-us/azure/quantum/user-guide/language/typesystem/\n // https://github.com/microsoft/qsharp-language/tree/main/Specifications/Language/5_Grammar\n var keywordKinds = {\n // keywords which represent a return or variable type\n type: 'Adj BigInt Bool Ctl Double false Int One Pauli PauliI PauliX PauliY PauliZ Qubit Range Result String true Unit Zero',\n // all other keywords\n other:\n 'Adjoint adjoint apply as auto body borrow borrowing Controlled controlled distribute elif else fail fixup for function if in internal intrinsic invert is let mutable namespace new newtype open operation repeat return self set until use using while within'\n }\n // keywords\n function keywordsToPattern(words) {\n return '\\\\b(?:' + words.trim().replace(/ /g, '|') + ')\\\\b'\n }\n var keywords = RegExp(\n keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.other)\n )\n\n // types\n var identifier = /\\b[A-Za-z_]\\w*\\b/.source\n var qualifiedName = replace(/<<0>>(?:\\s*\\.\\s*<<0>>)*/.source, [identifier])\n var typeInside = {\n keyword: keywords,\n punctuation: /[<>()?,.:[\\]]/\n }\n\n // strings\n var regularString = /\"(?:\\\\.|[^\\\\\"])*\"/.source\n Prism.languages.qsharp = Prism.languages.extend('clike', {\n comment: /\\/\\/.*/,\n string: [\n {\n pattern: re(/(^|[^$\\\\])<<0>>/.source, [regularString]),\n lookbehind: true,\n greedy: true\n }\n ],\n 'class-name': [\n {\n // open Microsoft.Quantum.Canon;\n // open Microsoft.Quantum.Canon as CN;\n pattern: re(/(\\b(?:as|open)\\s+)<<0>>(?=\\s*(?:;|as\\b))/.source, [\n qualifiedName\n ]),\n lookbehind: true,\n inside: typeInside\n },\n {\n // namespace Quantum.App1;\n pattern: re(/(\\bnamespace\\s+)<<0>>(?=\\s*\\{)/.source, [qualifiedName]),\n lookbehind: true,\n inside: typeInside\n }\n ],\n keyword: keywords,\n number:\n /(?:\\b0(?:x[\\da-f]+|b[01]+|o[0-7]+)|(?:\\B\\.\\d+|\\b\\d+(?:\\.\\d*)?)(?:e[-+]?\\d+)?)l?\\b/i,\n operator:\n /\\band=|\\bor=|\\band\\b|\\bnot\\b|\\bor\\b|<[-=]|[-=]>|>>>=?|<<<=?|\\^\\^\\^=?|\\|\\|\\|=?|&&&=?|w\\/=?|~~~|[*\\/+\\-^=!%]=?/,\n punctuation: /::|[{}[\\];(),.:]/\n })\n Prism.languages.insertBefore('qsharp', 'number', {\n range: {\n pattern: /\\.\\./,\n alias: 'operator'\n }\n })\n\n // single line\n var interpolationExpr = nested(\n replace(/\\{(?:[^\"{}]|<<0>>|<<self>>)*\\}/.source, [regularString]),\n 2\n )\n Prism.languages.insertBefore('qsharp', 'string', {\n 'interpolation-string': {\n pattern: re(/\\$\"(?:\\\\.|<<0>>|[^\\\\\"{])*\"/.source, [interpolationExpr]),\n greedy: true,\n inside: {\n interpolation: {\n pattern: re(/((?:^|[^\\\\])(?:\\\\\\\\)*)<<0>>/.source, [\n interpolationExpr\n ]),\n lookbehind: true,\n inside: {\n punctuation: /^\\{|\\}$/,\n expression: {\n pattern: /[\\s\\S]+/,\n alias: 'language-qsharp',\n inside: Prism.languages.qsharp\n }\n }\n },\n string: /[\\s\\S]+/\n }\n }\n })\n })(Prism)\n Prism.languages.qs = Prism.languages.qsharp\n}\n","// @ts-nocheck\nq.displayName = 'q'\nq.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function q(Prism) {\n Prism.languages.q = {\n string: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n comment: [\n // From http://code.kx.com/wiki/Reference/Slash:\n // When / is following a space (or a right parenthesis, bracket, or brace), it is ignored with the rest of the line.\n {\n pattern: /([\\t )\\]}])\\/.*/,\n lookbehind: true,\n greedy: true\n },\n // From http://code.kx.com/wiki/Reference/Slash:\n // A line which has / as its first character and contains at least one other non-whitespace character is a whole-line comment and is ignored entirely.\n // A / on a line by itself begins a multiline comment which is terminated by the next \\ on a line by itself.\n // If a / is not matched by a \\, the multiline comment is unterminated and continues to end of file.\n // The / and \\ must be the first char on the line, but may be followed by any amount of whitespace.\n {\n pattern:\n /(^|\\r?\\n|\\r)\\/[\\t ]*(?:(?:\\r?\\n|\\r)(?:.*(?:\\r?\\n|\\r(?!\\n)))*?(?:\\\\(?=[\\t ]*(?:\\r?\\n|\\r))|$)|\\S.*)/,\n lookbehind: true,\n greedy: true\n },\n // From http://code.kx.com/wiki/Reference/Slash:\n // A \\ on a line by itself with no preceding matching / will comment to end of file.\n {\n pattern: /^\\\\[\\t ]*(?:\\r?\\n|\\r)[\\s\\S]+/m,\n greedy: true\n },\n {\n pattern: /^#!.+/m,\n greedy: true\n }\n ],\n symbol: /`(?::\\S+|[\\w.]*)/,\n datetime: {\n pattern:\n /0N[mdzuvt]|0W[dtz]|\\d{4}\\.\\d\\d(?:m|\\.\\d\\d(?:T(?:\\d\\d(?::\\d\\d(?::\\d\\d(?:[.:]\\d\\d\\d)?)?)?)?)?[dz]?)|\\d\\d:\\d\\d(?::\\d\\d(?:[.:]\\d\\d\\d)?)?[uvt]?/,\n alias: 'number'\n },\n // The negative look-ahead prevents bad highlighting\n // of verbs 0: and 1:\n number:\n /\\b(?![01]:)(?:0N[hje]?|0W[hj]?|0[wn]|0x[\\da-fA-F]+|\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?[hjfeb]?)/,\n keyword:\n /\\\\\\w+\\b|\\b(?:abs|acos|aj0?|all|and|any|asc|asin|asof|atan|attr|avgs?|binr?|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|ej|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|identity|idesc|if|ij|in|insert|inter|inv|keys?|last|like|list|ljf?|load|log|lower|lsq|ltime|ltrim|mavg|maxs?|mcount|md5|mdev|med|meta|mins?|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|plist|prds?|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ssr?|string|sublist|sums?|sv|svar|system|tables|tan|til|trim|txf|type|uj|ungroup|union|update|upper|upsert|value|var|views?|vs|wavg|where|while|within|wj1?|wsum|ww|xasc|xbar|xcols?|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)\\b/,\n adverb: {\n pattern: /['\\/\\\\]:?|\\beach\\b/,\n alias: 'function'\n },\n verb: {\n pattern: /(?:\\B\\.\\B|\\b[01]:|<[=>]?|>=?|[:+\\-*%,!?~=|$&#@^]):?|\\b_\\b:?/,\n alias: 'operator'\n },\n punctuation: /[(){}\\[\\];.]/\n }\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\nqml.displayName = 'qml'\nqml.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function qml(Prism) {\n Prism.register(refractorJavascript)\n ;(function (Prism) {\n var jsString = /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|'(?:\\\\.|[^\\\\'\\r\\n])*'/.source\n var jsComment = /\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\//.source\n var jsExpr =\n /(?:[^\\\\()[\\]{}\"'/]|<string>|\\/(?![*/])|<comment>|\\(<expr>*\\)|\\[<expr>*\\]|\\{<expr>*\\}|\\\\[\\s\\S])/.source\n .replace(/<string>/g, function () {\n return jsString\n })\n .replace(/<comment>/g, function () {\n return jsComment\n })\n\n // the pattern will blow up, so only a few iterations\n for (var i = 0; i < 2; i++) {\n jsExpr = jsExpr.replace(/<expr>/g, function () {\n return jsExpr\n })\n }\n jsExpr = jsExpr.replace(/<expr>/g, '[^\\\\s\\\\S]')\n Prism.languages.qml = {\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n greedy: true\n },\n 'javascript-function': {\n pattern: RegExp(\n /((?:^|;)[ \\t]*)function\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*\\(<js>*\\)\\s*\\{<js>*\\}/.source.replace(\n /<js>/g,\n function () {\n return jsExpr\n }\n ),\n 'm'\n ),\n lookbehind: true,\n greedy: true,\n alias: 'language-javascript',\n inside: Prism.languages.javascript\n },\n 'class-name': {\n pattern: /((?:^|[:;])[ \\t]*)(?!\\d)\\w+(?=[ \\t]*\\{|[ \\t]+on\\b)/m,\n lookbehind: true\n },\n property: [\n {\n pattern: /((?:^|[;{])[ \\t]*)(?!\\d)\\w+(?:\\.\\w+)*(?=[ \\t]*:)/m,\n lookbehind: true\n },\n {\n pattern:\n /((?:^|[;{])[ \\t]*)property[ \\t]+(?!\\d)\\w+(?:\\.\\w+)*[ \\t]+(?!\\d)\\w+(?:\\.\\w+)*(?=[ \\t]*:)/m,\n lookbehind: true,\n inside: {\n keyword: /^property/,\n property: /\\w+(?:\\.\\w+)*/\n }\n }\n ],\n 'javascript-expression': {\n pattern: RegExp(\n /(:[ \\t]*)(?![\\s;}[])(?:(?!$|[;}])<js>)+/.source.replace(\n /<js>/g,\n function () {\n return jsExpr\n }\n ),\n 'm'\n ),\n lookbehind: true,\n greedy: true,\n alias: 'language-javascript',\n inside: Prism.languages.javascript\n },\n string: {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n keyword: /\\b(?:as|import|on)\\b/,\n punctuation: /[{}[\\]:;,]/\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nqore.displayName = 'qore'\nqore.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function qore(Prism) {\n Prism.register(refractorClike)\n Prism.languages.qore = Prism.languages.extend('clike', {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:\\/\\/|#).*)/,\n lookbehind: true\n },\n // Overridden to allow unescaped multi-line strings\n string: {\n pattern: /(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n },\n keyword:\n /\\b(?:abstract|any|assert|binary|bool|boolean|break|byte|case|catch|char|class|code|const|continue|data|default|do|double|else|enum|extends|final|finally|float|for|goto|hash|if|implements|import|inherits|instanceof|int|interface|long|my|native|new|nothing|null|object|our|own|private|reference|rethrow|return|short|soft(?:bool|date|float|int|list|number|string)|static|strictfp|string|sub|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while)\\b/,\n boolean: /\\b(?:false|true)\\b/i,\n function: /\\$?\\b(?!\\d)\\w+(?=\\()/,\n number:\n /\\b(?:0b[01]+|0x(?:[\\da-f]*\\.)?[\\da-fp\\-]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e\\d+)?[df]|(?:\\d+(?:\\.\\d+)?|\\.\\d+))\\b/i,\n operator: {\n pattern:\n /(^|[^.])(?:\\+[+=]?|-[-=]?|[!=](?:==?|~)?|>>?=?|<(?:=>?|<=?)?|&[&=]?|\\|[|=]?|[*\\/%^]=?|[~?])/,\n lookbehind: true\n },\n variable: /\\$(?!\\d)\\w+\\b/\n })\n}\n","// @ts-nocheck\nimport refractorScheme from './scheme.js'\nracket.displayName = 'racket'\nracket.aliases = ['rkt']\n\n/** @type {import('../core.js').Syntax} */\nexport default function racket(Prism) {\n Prism.register(refractorScheme)\n Prism.languages.racket = Prism.languages.extend('scheme', {\n 'lambda-parameter': {\n // the racket lambda syntax is a lot more complex, so we won't even attempt to capture it.\n // this will just prevent false positives of the `function` pattern\n pattern: /([(\\[]lambda\\s+[(\\[])[^()\\[\\]'\\s]+/,\n lookbehind: true\n }\n })\n Prism.languages.insertBefore('racket', 'string', {\n lang: {\n pattern: /^#lang.+/m,\n greedy: true,\n alias: 'keyword'\n }\n })\n Prism.languages.rkt = Prism.languages.racket\n}\n","// @ts-nocheck\nimport refractorCsharp from './csharp.js'\nimport refractorMarkup from './markup.js'\ncshtml.displayName = 'cshtml'\ncshtml.aliases = ['razor']\n\n/** @type {import('../core.js').Syntax} */\nexport default function cshtml(Prism) {\n Prism.register(refractorCsharp)\n Prism.register(refractorMarkup)\n // Docs:\n // https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-5.0&tabs=visual-studio\n // https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-5.0\n\n ;(function (Prism) {\n var commentLike = /\\/(?![/*])|\\/\\/.*[\\r\\n]|\\/\\*[^*]*(?:\\*(?!\\/)[^*]*)*\\*\\//\n .source\n var stringLike =\n /@(?!\")|\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"|@\"(?:[^\\\\\"]|\"\"|\\\\[\\s\\S])*\"(?!\")/.source +\n '|' +\n /'(?:(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'|(?=[^\\\\](?!')))/.source\n\n /**\n * Creates a nested pattern where all occurrences of the string `<<self>>` are replaced with the pattern itself.\n *\n * @param {string} pattern\n * @param {number} depthLog2\n * @returns {string}\n */\n function nested(pattern, depthLog2) {\n for (var i = 0; i < depthLog2; i++) {\n pattern = pattern.replace(/<self>/g, function () {\n return '(?:' + pattern + ')'\n })\n }\n return pattern\n .replace(/<self>/g, '[^\\\\s\\\\S]')\n .replace(/<str>/g, '(?:' + stringLike + ')')\n .replace(/<comment>/g, '(?:' + commentLike + ')')\n }\n var round = nested(/\\((?:[^()'\"@/]|<str>|<comment>|<self>)*\\)/.source, 2)\n var square = nested(/\\[(?:[^\\[\\]'\"@/]|<str>|<comment>|<self>)*\\]/.source, 1)\n var curly = nested(/\\{(?:[^{}'\"@/]|<str>|<comment>|<self>)*\\}/.source, 2)\n var angle = nested(/<(?:[^<>'\"@/]|<comment>|<self>)*>/.source, 1)\n var inlineCs =\n /@/.source +\n /(?:await\\b\\s*)?/.source +\n '(?:' +\n /(?!await\\b)\\w+\\b/.source +\n '|' +\n round +\n ')' +\n '(?:' +\n /[?!]?\\.\\w+\\b/.source +\n '|' +\n '(?:' +\n angle +\n ')?' +\n round +\n '|' +\n square +\n ')*' +\n /(?![?!\\.(\\[]|<(?!\\/))/.source\n\n // Note about the above bracket patterns:\n // They all ignore HTML expressions that might be in the C# code. This is a problem because HTML (like strings and\n // comments) is parsed differently. This is a huge problem because HTML might contain brackets and quotes which\n // messes up the bracket and string counting implemented by the above patterns.\n //\n // This problem is not fixable because 1) HTML expression are highly context sensitive and very difficult to detect\n // and 2) they require one capturing group at every nested level. See the `tagRegion` pattern to admire the\n // complexity of an HTML expression.\n //\n // To somewhat alleviate the problem a bit, the patterns for characters (e.g. 'a') is very permissive, it also\n // allows invalid characters to support HTML expressions like this: <p>That's it!</p>.\n\n var tagAttrInlineCs = /@(?![\\w()])/.source + '|' + inlineCs\n var tagAttrValue =\n '(?:' +\n /\"[^\"@]*\"|'[^'@]*'|[^\\s'\"@>=]+(?=[\\s>])/.source +\n '|' +\n '[\"\\'][^\"\\'@]*(?:(?:' +\n tagAttrInlineCs +\n ')[^\"\\'@]*)+[\"\\']' +\n ')'\n var tagAttrs =\n /(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*<tagAttrValue>|(?=[\\s/>])))+)?/.source.replace(\n /<tagAttrValue>/,\n tagAttrValue\n )\n var tagContent = /(?!\\d)[^\\s>\\/=$<%]+/.source + tagAttrs + /\\s*\\/?>/.source\n var tagRegion =\n /\\B@?/.source +\n '(?:' +\n /<([a-zA-Z][\\w:]*)/.source +\n tagAttrs +\n /\\s*>/.source +\n '(?:' +\n (/[^<]/.source +\n '|' +\n // all tags that are not the start tag\n // eslint-disable-next-line regexp/strict\n /<\\/?(?!\\1\\b)/.source +\n tagContent +\n '|' +\n // nested start tag\n nested(\n // eslint-disable-next-line regexp/strict\n /<\\1/.source +\n tagAttrs +\n /\\s*>/.source +\n '(?:' +\n (/[^<]/.source +\n '|' +\n // all tags that are not the start tag\n // eslint-disable-next-line regexp/strict\n /<\\/?(?!\\1\\b)/.source +\n tagContent +\n '|' +\n '<self>') +\n ')*' +\n // eslint-disable-next-line regexp/strict\n /<\\/\\1\\s*>/.source,\n 2\n )) +\n ')*' +\n // eslint-disable-next-line regexp/strict\n /<\\/\\1\\s*>/.source +\n '|' +\n /</.source +\n tagContent +\n ')'\n\n // Now for the actual language definition(s):\n //\n // Razor as a language has 2 parts:\n // 1) CSHTML: A markup-like language that has been extended with inline C# code expressions and blocks.\n // 2) C#+HTML: A variant of C# that can contain CSHTML tags as expressions.\n //\n // In the below code, both CSHTML and C#+HTML will be create as separate language definitions that reference each\n // other. However, only CSHTML will be exported via `Prism.languages`.\n\n Prism.languages.cshtml = Prism.languages.extend('markup', {})\n var csharpWithHtml = Prism.languages.insertBefore(\n 'csharp',\n 'string',\n {\n html: {\n pattern: RegExp(tagRegion),\n greedy: true,\n inside: Prism.languages.cshtml\n }\n },\n {\n csharp: Prism.languages.extend('csharp', {})\n }\n )\n var cs = {\n pattern: /\\S[\\s\\S]*/,\n alias: 'language-csharp',\n inside: csharpWithHtml\n }\n var inlineValue = {\n pattern: RegExp(/(^|[^@])/.source + inlineCs),\n lookbehind: true,\n greedy: true,\n alias: 'variable',\n inside: {\n keyword: /^@/,\n csharp: cs\n }\n }\n Prism.languages.cshtml.tag.pattern = RegExp(/<\\/?/.source + tagContent)\n Prism.languages.cshtml.tag.inside['attr-value'].pattern = RegExp(\n /=\\s*/.source + tagAttrValue\n )\n Prism.languages.insertBefore(\n 'inside',\n 'punctuation',\n {\n value: inlineValue\n },\n Prism.languages.cshtml.tag.inside['attr-value']\n )\n Prism.languages.insertBefore('cshtml', 'prolog', {\n 'razor-comment': {\n pattern: /@\\*[\\s\\S]*?\\*@/,\n greedy: true,\n alias: 'comment'\n },\n block: {\n pattern: RegExp(\n /(^|[^@])@/.source +\n '(?:' +\n [\n // @{ ... }\n curly,\n // @code{ ... }\n /(?:code|functions)\\s*/.source + curly,\n // @for (...) { ... }\n /(?:for|foreach|lock|switch|using|while)\\s*/.source +\n round +\n /\\s*/.source +\n curly,\n // @do { ... } while (...);\n /do\\s*/.source +\n curly +\n /\\s*while\\s*/.source +\n round +\n /(?:\\s*;)?/.source,\n // @try { ... } catch (...) { ... } finally { ... }\n /try\\s*/.source +\n curly +\n /\\s*catch\\s*/.source +\n round +\n /\\s*/.source +\n curly +\n /\\s*finally\\s*/.source +\n curly,\n // @if (...) {...} else if (...) {...} else {...}\n /if\\s*/.source +\n round +\n /\\s*/.source +\n curly +\n '(?:' +\n /\\s*else/.source +\n '(?:' +\n /\\s+if\\s*/.source +\n round +\n ')?' +\n /\\s*/.source +\n curly +\n ')*',\n // @helper Ident(params) { ... }\n /helper\\s+\\w+\\s*/.source + round + /\\s*/.source + curly\n ].join('|') +\n ')'\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n keyword: /^@\\w*/,\n csharp: cs\n }\n },\n directive: {\n pattern:\n /^([ \\t]*)@(?:addTagHelper|attribute|implements|inherits|inject|layout|model|namespace|page|preservewhitespace|removeTagHelper|section|tagHelperPrefix|using)(?=\\s).*/m,\n lookbehind: true,\n greedy: true,\n inside: {\n keyword: /^@\\w+/,\n csharp: cs\n }\n },\n value: inlineValue,\n 'delegate-operator': {\n pattern: /(^|[^@])@(?=<)/,\n lookbehind: true,\n alias: 'operator'\n }\n })\n Prism.languages.razor = Prism.languages.cshtml\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJavascript from './javascript.js'\nimport refractorMarkup from './markup.js'\njsx.displayName = 'jsx'\njsx.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function jsx(Prism) {\n Prism.register(refractorJavascript)\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n var javascript = Prism.util.clone(Prism.languages.javascript)\n var space = /(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)/.source\n var braces = /(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})/.source\n var spread = /(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})/.source\n\n /**\n * @param {string} source\n * @param {string} [flags]\n */\n function re(source, flags) {\n source = source\n .replace(/<S>/g, function () {\n return space\n })\n .replace(/<BRACES>/g, function () {\n return braces\n })\n .replace(/<SPREAD>/g, function () {\n return spread\n })\n return RegExp(source, flags)\n }\n spread = re(spread).source\n Prism.languages.jsx = Prism.languages.extend('markup', javascript)\n Prism.languages.jsx.tag.pattern = re(\n /<\\/?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\\/?)?>/\n .source\n )\n Prism.languages.jsx.tag.inside['tag'].pattern = /^<\\/?[^\\s>\\/]*/\n Prism.languages.jsx.tag.inside['attr-value'].pattern =\n /=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/\n Prism.languages.jsx.tag.inside['tag'].inside['class-name'] =\n /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/\n Prism.languages.jsx.tag.inside['comment'] = javascript['comment']\n Prism.languages.insertBefore(\n 'inside',\n 'attr-name',\n {\n spread: {\n pattern: re(/<SPREAD>/.source),\n inside: Prism.languages.jsx\n }\n },\n Prism.languages.jsx.tag\n )\n Prism.languages.insertBefore(\n 'inside',\n 'special-attr',\n {\n script: {\n // Allow for two levels of nesting\n pattern: re(/=<BRACES>/.source),\n alias: 'language-javascript',\n inside: {\n 'script-punctuation': {\n pattern: /^=(?=\\{)/,\n alias: 'punctuation'\n },\n rest: Prism.languages.jsx\n }\n }\n },\n Prism.languages.jsx.tag\n )\n\n // The following will handle plain text inside tags\n var stringifyToken = function (token) {\n if (!token) {\n return ''\n }\n if (typeof token === 'string') {\n return token\n }\n if (typeof token.content === 'string') {\n return token.content\n }\n return token.content.map(stringifyToken).join('')\n }\n var walkTokens = function (tokens) {\n var openedTags = []\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n var notTagNorBrace = false\n if (typeof token !== 'string') {\n if (\n token.type === 'tag' &&\n token.content[0] &&\n token.content[0].type === 'tag'\n ) {\n // We found a tag, now find its kind\n\n if (token.content[0].content[0].content === '</') {\n // Closing tag\n if (\n openedTags.length > 0 &&\n openedTags[openedTags.length - 1].tagName ===\n stringifyToken(token.content[0].content[1])\n ) {\n // Pop matching opening tag\n openedTags.pop()\n }\n } else {\n if (token.content[token.content.length - 1].content === '/>') {\n // Autoclosed tag, ignore\n } else {\n // Opening tag\n openedTags.push({\n tagName: stringifyToken(token.content[0].content[1]),\n openedBraces: 0\n })\n }\n }\n } else if (\n openedTags.length > 0 &&\n token.type === 'punctuation' &&\n token.content === '{'\n ) {\n // Here we might have entered a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces++\n } else if (\n openedTags.length > 0 &&\n openedTags[openedTags.length - 1].openedBraces > 0 &&\n token.type === 'punctuation' &&\n token.content === '}'\n ) {\n // Here we might have left a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces--\n } else {\n notTagNorBrace = true\n }\n }\n if (notTagNorBrace || typeof token === 'string') {\n if (\n openedTags.length > 0 &&\n openedTags[openedTags.length - 1].openedBraces === 0\n ) {\n // Here we are inside a tag, and not inside a JSX context.\n // That's plain text: drop any tokens matched.\n var plainText = stringifyToken(token)\n\n // And merge text with adjacent text\n if (\n i < tokens.length - 1 &&\n (typeof tokens[i + 1] === 'string' ||\n tokens[i + 1].type === 'plain-text')\n ) {\n plainText += stringifyToken(tokens[i + 1])\n tokens.splice(i + 1, 1)\n }\n if (\n i > 0 &&\n (typeof tokens[i - 1] === 'string' ||\n tokens[i - 1].type === 'plain-text')\n ) {\n plainText = stringifyToken(tokens[i - 1]) + plainText\n tokens.splice(i - 1, 1)\n i--\n }\n tokens[i] = new Prism.Token(\n 'plain-text',\n plainText,\n null,\n plainText\n )\n }\n }\n if (token.content && typeof token.content !== 'string') {\n walkTokens(token.content)\n }\n }\n }\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'jsx' && env.language !== 'tsx') {\n return\n }\n walkTokens(env.tokens)\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJsx from './jsx.js'\nimport refractorTypescript from './typescript.js'\ntsx.displayName = 'tsx'\ntsx.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function tsx(Prism) {\n Prism.register(refractorJsx)\n Prism.register(refractorTypescript)\n ;(function (Prism) {\n var typescript = Prism.util.clone(Prism.languages.typescript)\n Prism.languages.tsx = Prism.languages.extend('jsx', typescript)\n\n // doesn't work with TS because TS is too complex\n delete Prism.languages.tsx['parameter']\n delete Prism.languages.tsx['literal-property']\n\n // This will prevent collisions between TSX tags and TS generic types.\n // Idea by https://github.com/karlhorky\n // Discussion: https://github.com/PrismJS/prism/issues/2594#issuecomment-710666928\n var tag = Prism.languages.tsx.tag\n tag.pattern = RegExp(\n /(^|[^\\w$]|(?=<\\/))/.source + '(?:' + tag.pattern.source + ')',\n tag.pattern.flags\n )\n tag.lookbehind = true\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nreason.displayName = 'reason'\nreason.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function reason(Prism) {\n Prism.register(refractorClike)\n Prism.languages.reason = Prism.languages.extend('clike', {\n string: {\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n // 'class-name' must be matched *after* 'constructor' defined below\n 'class-name': /\\b[A-Z]\\w*/,\n keyword:\n /\\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\\b/,\n operator:\n /\\.{3}|:[:=]|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:asr|land|lor|lsl|lsr|lxor|mod)\\b/\n })\n Prism.languages.insertBefore('reason', 'class-name', {\n char: {\n pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/,\n greedy: true\n },\n // Negative look-ahead prevents from matching things like String.capitalize\n constructor: /\\b[A-Z]\\w*\\b(?!\\s*\\.)/,\n label: {\n pattern: /\\b[a-z]\\w*(?=::)/,\n alias: 'symbol'\n }\n })\n\n // We can't match functions property, so let's not even try.\n delete Prism.languages.reason.function\n}\n","// @ts-nocheck\nrego.displayName = 'rego'\nrego.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function rego(Prism) {\n // https://www.openpolicyagent.org/docs/latest/policy-reference/\n\n Prism.languages.rego = {\n comment: /#.*/,\n property: {\n pattern:\n /(^|[^\\\\.])(?:\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|`[^`]*`|\\b[a-z_]\\w*\\b)(?=\\s*:(?!=))/i,\n lookbehind: true,\n greedy: true\n },\n string: {\n pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|`[^`]*`/,\n lookbehind: true,\n greedy: true\n },\n keyword:\n /\\b(?:as|default|else|import|not|null|package|set(?=\\s*\\()|some|with)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n function: {\n pattern: /\\b[a-z_]\\w*\\b(?:\\s*\\.\\s*\\b[a-z_]\\w*\\b)*(?=\\s*\\()/i,\n inside: {\n namespace: /\\b\\w+\\b(?=\\s*\\.)/,\n punctuation: /\\./\n }\n },\n number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n operator: /[-+*/%|&]|[<>:=]=?|!=|\\b_\\b/,\n punctuation: /[,;.\\[\\]{}()]/\n }\n}\n","// @ts-nocheck\nrenpy.displayName = 'renpy'\nrenpy.aliases = ['rpy']\n\n/** @type {import('../core.js').Syntax} */\nexport default function renpy(Prism) {\n Prism.languages.renpy = {\n comment: {\n pattern: /(^|[^\\\\])#.+/,\n lookbehind: true\n },\n string: {\n pattern:\n /(\"\"\"|''')[\\s\\S]+?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\])*\\2|(?:^#?(?:(?:[0-9a-fA-F]){3}|[0-9a-fA-F]{6})$)/m,\n greedy: true\n },\n function: /\\b[a-z_]\\w*(?=\\()/i,\n property:\n /\\b(?:Update|UpdateVersion|action|activate_sound|adv_nvl_transition|after_load_transition|align|alpha|alt|anchor|antialias|area|auto|background|bar_invert|bar_resizing|bar_vertical|black_color|bold|bottom_bar|bottom_gutter|bottom_margin|bottom_padding|box_reverse|box_wrap|can_update|caret|child|color|crop|default_afm_enable|default_afm_time|default_fullscreen|default_text_cps|developer|directory_name|drag_handle|drag_joined|drag_name|drag_raise|draggable|dragged|drop_shadow|drop_shadow_color|droppable|dropped|easein|easeout|edgescroll|end_game_transition|end_splash_transition|enter_replay_transition|enter_sound|enter_transition|enter_yesno_transition|executable_name|exit_replay_transition|exit_sound|exit_transition|exit_yesno_transition|fadein|fadeout|first_indent|first_spacing|fit_first|focus|focus_mask|font|foreground|game_main_transition|get_installed_packages|google_play_key|google_play_salt|ground|has_music|has_sound|has_voice|height|help|hinting|hover|hover_background|hover_color|hover_sound|hovered|hyperlink_functions|idle|idle_color|image_style|include_update|insensitive|insensitive_background|insensitive_color|inside|intra_transition|italic|justify|kerning|keyboard_focus|language|layer_clipping|layers|layout|left_bar|left_gutter|left_margin|left_padding|length|line_leading|line_overlap_split|line_spacing|linear|main_game_transition|main_menu_music|maximum|min_width|minimum|minwidth|modal|mouse|mousewheel|name|narrator_menu|newline_indent|nvl_adv_transition|offset|order_reverse|outlines|overlay_functions|pos|position|prefix|radius|range|rest_indent|right_bar|right_gutter|right_margin|right_padding|rotate|rotate_pad|ruby_style|sample_sound|save_directory|say_attribute_transition|screen_height|screen_width|scrollbars|selected_hover|selected_hover_color|selected_idle|selected_idle_color|selected_insensitive|show_side_image|show_two_window|side_spacing|side_xpos|side_ypos|size|size_group|slow_cps|slow_cps_multiplier|spacing|strikethrough|subpixel|text_align|text_style|text_xpos|text_y_fudge|text_ypos|thumb|thumb_offset|thumb_shadow|thumbnail_height|thumbnail_width|time|top_bar|top_gutter|top_margin|top_padding|translations|underline|unscrollable|update|value|version|version_name|version_tuple|vertical|width|window_hide_transition|window_icon|window_left_padding|window_show_transition|window_title|windows_icon|xadjustment|xalign|xanchor|xanchoraround|xaround|xcenter|xfill|xinitial|xmargin|xmaximum|xminimum|xoffset|xofsset|xpadding|xpos|xsize|xzoom|yadjustment|yalign|yanchor|yanchoraround|yaround|ycenter|yfill|yinitial|ymargin|ymaximum|yminimum|yoffset|ypadding|ypos|ysize|ysizexysize|yzoom|zoom|zorder)\\b/,\n tag: /\\b(?:bar|block|button|buttoscreenn|drag|draggroup|fixed|frame|grid|[hv]box|hotbar|hotspot|image|imagebutton|imagemap|input|key|label|menu|mm_menu_frame|mousearea|nvl|parallel|screen|self|side|tag|text|textbutton|timer|vbar|viewport|window)\\b|\\$/,\n keyword:\n /\\b(?:None|add|adjustment|alignaround|allow|angle|animation|around|as|assert|behind|box_layout|break|build|cache|call|center|changed|child_size|choice|circles|class|clear|clicked|clipping|clockwise|config|contains|continue|corner1|corner2|counterclockwise|def|default|define|del|delay|disabled|disabled_text|dissolve|elif|else|event|except|exclude|exec|expression|fade|finally|for|from|function|global|gm_root|has|hide|id|if|import|in|init|is|jump|knot|lambda|left|less_rounded|mm_root|movie|music|null|on|onlayer|pass|pause|persistent|play|print|python|queue|raise|random|renpy|repeat|return|right|rounded_window|scene|scope|set|show|slow|slow_abortable|slow_done|sound|stop|store|style|style_group|substitute|suffix|theme|transform|transform_anchor|transpose|try|ui|unhovered|updater|use|voice|while|widget|widget_hover|widget_selected|widget_text|yield)\\b/,\n boolean: /\\b(?:[Ff]alse|[Tt]rue)\\b/,\n number:\n /(?:\\b(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*(?:\\.\\d*)?)|\\B\\.\\d+)(?:e[+-]?\\d+)?j?/i,\n operator:\n /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]|\\b(?:and|at|not|or|with)\\b/,\n punctuation: /[{}[\\];(),.:]/\n }\n Prism.languages.rpy = Prism.languages.renpy\n}\n","// @ts-nocheck\nrescript.displayName = 'rescript'\nrescript.aliases = ['res']\n\n/** @type {import('../core.js').Syntax} */\nexport default function rescript(Prism) {\n Prism.languages.rescript = {\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n char: {\n pattern: /'(?:[^\\r\\n\\\\]|\\\\(?:.|\\w+))'/,\n greedy: true\n },\n string: {\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n 'class-name': /\\b[A-Z]\\w*|@[a-z.]*|#[A-Za-z]\\w*|#\\d/,\n function: {\n pattern: /[a-zA-Z]\\w*(?=\\()|(\\.)[a-z]\\w*/,\n lookbehind: true\n },\n number:\n /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n boolean: /\\b(?:false|true)\\b/,\n 'attr-value': /[A-Za-z]\\w*(?==)/,\n constant: {\n pattern: /(\\btype\\s+)[a-z]\\w*/,\n lookbehind: true\n },\n tag: {\n pattern: /(<)[a-z]\\w*|(?:<\\/)[a-z]\\w*/,\n lookbehind: true,\n inside: {\n operator: /<|>|\\//\n }\n },\n keyword:\n /\\b(?:and|as|assert|begin|bool|class|constraint|do|done|downto|else|end|exception|external|float|for|fun|function|if|in|include|inherit|initializer|int|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|string|switch|then|to|try|type|when|while|with)\\b/,\n operator:\n /\\.{3}|:[:=]?|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:asr|land|lor|lsl|lsr|lxor|mod)\\b/,\n punctuation: /[(){}[\\],;.]/\n }\n Prism.languages.insertBefore('rescript', 'string', {\n 'template-string': {\n pattern:\n /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n interpolation: {\n pattern:\n /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\$\\{|\\}$/,\n alias: 'tag'\n },\n rest: Prism.languages.rescript\n }\n },\n string: /[\\s\\S]+/\n }\n }\n })\n Prism.languages.res = Prism.languages.rescript\n}\n","// @ts-nocheck\nrest.displayName = 'rest'\nrest.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function rest(Prism) {\n Prism.languages.rest = {\n table: [\n {\n pattern:\n /(^[\\t ]*)(?:\\+[=-]+)+\\+(?:\\r?\\n|\\r)(?:\\1[+|].+[+|](?:\\r?\\n|\\r))+\\1(?:\\+[=-]+)+\\+/m,\n lookbehind: true,\n inside: {\n punctuation: /\\||(?:\\+[=-]+)+\\+/\n }\n },\n {\n pattern:\n /(^[\\t ]*)=+ [ =]*=(?:(?:\\r?\\n|\\r)\\1.+)+(?:\\r?\\n|\\r)\\1=+ [ =]*=(?=(?:\\r?\\n|\\r){2}|\\s*$)/m,\n lookbehind: true,\n inside: {\n punctuation: /[=-]+/\n }\n }\n ],\n // Directive-like patterns\n\n 'substitution-def': {\n pattern: /(^[\\t ]*\\.\\. )\\|(?:[^|\\s](?:[^|]*[^|\\s])?)\\| [^:]+::/m,\n lookbehind: true,\n inside: {\n substitution: {\n pattern: /^\\|(?:[^|\\s]|[^|\\s][^|]*[^|\\s])\\|/,\n alias: 'attr-value',\n inside: {\n punctuation: /^\\||\\|$/\n }\n },\n directive: {\n pattern: /( )(?! )[^:]+::/,\n lookbehind: true,\n alias: 'function',\n inside: {\n punctuation: /::$/\n }\n }\n }\n },\n 'link-target': [\n {\n pattern: /(^[\\t ]*\\.\\. )\\[[^\\]]+\\]/m,\n lookbehind: true,\n alias: 'string',\n inside: {\n punctuation: /^\\[|\\]$/\n }\n },\n {\n pattern: /(^[\\t ]*\\.\\. )_(?:`[^`]+`|(?:[^:\\\\]|\\\\.)+):/m,\n lookbehind: true,\n alias: 'string',\n inside: {\n punctuation: /^_|:$/\n }\n }\n ],\n directive: {\n pattern: /(^[\\t ]*\\.\\. )[^:]+::/m,\n lookbehind: true,\n alias: 'function',\n inside: {\n punctuation: /::$/\n }\n },\n comment: {\n // The two alternatives try to prevent highlighting of blank comments\n pattern:\n /(^[\\t ]*\\.\\.)(?:(?: .+)?(?:(?:\\r?\\n|\\r).+)+| .+)(?=(?:\\r?\\n|\\r){2}|$)/m,\n lookbehind: true\n },\n title: [\n // Overlined and underlined\n {\n pattern:\n /^(([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\2+)(?:\\r?\\n|\\r).+(?:\\r?\\n|\\r)\\1$/m,\n inside: {\n punctuation:\n /^[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]+|[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]+$/,\n important: /.+/\n }\n },\n // Underlined only\n {\n pattern:\n /(^|(?:\\r?\\n|\\r){2}).+(?:\\r?\\n|\\r)([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\2+(?=\\r?\\n|\\r|$)/,\n lookbehind: true,\n inside: {\n punctuation: /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]+$/,\n important: /.+/\n }\n }\n ],\n hr: {\n pattern:\n /((?:\\r?\\n|\\r){2})([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\2{3,}(?=(?:\\r?\\n|\\r){2})/,\n lookbehind: true,\n alias: 'punctuation'\n },\n field: {\n pattern: /(^[\\t ]*):[^:\\r\\n]+:(?= )/m,\n lookbehind: true,\n alias: 'attr-name'\n },\n 'command-line-option': {\n pattern:\n /(^[\\t ]*)(?:[+-][a-z\\d]|(?:--|\\/)[a-z\\d-]+)(?:[ =](?:[a-z][\\w-]*|<[^<>]+>))?(?:, (?:[+-][a-z\\d]|(?:--|\\/)[a-z\\d-]+)(?:[ =](?:[a-z][\\w-]*|<[^<>]+>))?)*(?=(?:\\r?\\n|\\r)? {2,}\\S)/im,\n lookbehind: true,\n alias: 'symbol'\n },\n 'literal-block': {\n pattern: /::(?:\\r?\\n|\\r){2}([ \\t]+)(?![ \\t]).+(?:(?:\\r?\\n|\\r)\\1.+)*/,\n inside: {\n 'literal-block-punctuation': {\n pattern: /^::/,\n alias: 'punctuation'\n }\n }\n },\n 'quoted-literal-block': {\n pattern:\n /::(?:\\r?\\n|\\r){2}([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]).*(?:(?:\\r?\\n|\\r)\\1.*)*/,\n inside: {\n 'literal-block-punctuation': {\n pattern: /^(?:::|([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\1*)/m,\n alias: 'punctuation'\n }\n }\n },\n 'list-bullet': {\n pattern:\n /(^[\\t ]*)(?:[*+\\-•‣⁃]|\\(?(?:\\d+|[a-z]|[ivxdclm]+)\\)|(?:\\d+|[a-z]|[ivxdclm]+)\\.)(?= )/im,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'doctest-block': {\n pattern: /(^[\\t ]*)>>> .+(?:(?:\\r?\\n|\\r).+)*/m,\n lookbehind: true,\n inside: {\n punctuation: /^>>>/\n }\n },\n inline: [\n {\n pattern:\n /(^|[\\s\\-:\\/'\"<(\\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\\*\\*?|``?|\\|)(?!\\s)(?:(?!\\2).)*\\S\\2(?=[\\s\\-.,:;!?\\\\\\/'\")\\]}]|$))/m,\n lookbehind: true,\n inside: {\n bold: {\n pattern: /(^\\*\\*).+(?=\\*\\*$)/,\n lookbehind: true\n },\n italic: {\n pattern: /(^\\*).+(?=\\*$)/,\n lookbehind: true\n },\n 'inline-literal': {\n pattern: /(^``).+(?=``$)/,\n lookbehind: true,\n alias: 'symbol'\n },\n role: {\n pattern: /^:[^:]+:|:[^:]+:$/,\n alias: 'function',\n inside: {\n punctuation: /^:|:$/\n }\n },\n 'interpreted-text': {\n pattern: /(^`).+(?=`$)/,\n lookbehind: true,\n alias: 'attr-value'\n },\n substitution: {\n pattern: /(^\\|).+(?=\\|$)/,\n lookbehind: true,\n alias: 'attr-value'\n },\n punctuation: /\\*\\*?|``?|\\|/\n }\n }\n ],\n link: [\n {\n pattern: /\\[[^\\[\\]]+\\]_(?=[\\s\\-.,:;!?\\\\\\/'\")\\]}]|$)/,\n alias: 'string',\n inside: {\n punctuation: /^\\[|\\]_$/\n }\n },\n {\n pattern:\n /(?:\\b[a-z\\d]+(?:[_.:+][a-z\\d]+)*_?_|`[^`]+`_?_|_`[^`]+`)(?=[\\s\\-.,:;!?\\\\\\/'\")\\]}]|$)/i,\n alias: 'string',\n inside: {\n punctuation: /^_?`|`$|`?_?_$/\n }\n }\n ],\n // Line block start,\n // quote attribution,\n // explicit markup start,\n // and anonymous hyperlink target shortcut (__)\n punctuation: {\n pattern: /(^[\\t ]*)(?:\\|(?= |$)|(?:---?|—|\\.\\.|__)(?= )|\\.\\.$)/m,\n lookbehind: true\n }\n }\n}\n","// @ts-nocheck\nrip.displayName = 'rip'\nrip.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function rip(Prism) {\n Prism.languages.rip = {\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n char: {\n pattern: /\\B`[^\\s`'\",.:;#\\/\\\\()<>\\[\\]{}]\\b/,\n greedy: true\n },\n string: {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n regex: {\n pattern:\n /(^|[^/])\\/(?!\\/)(?:\\[[^\\n\\r\\]]*\\]|\\\\.|[^/\\\\\\r\\n\\[])+\\/(?=\\s*(?:$|[\\r\\n,.;})]))/,\n lookbehind: true,\n greedy: true\n },\n keyword:\n /(?:=>|->)|\\b(?:case|catch|class|else|exit|finally|if|raise|return|switch|try)\\b/,\n builtin: /@|\\bSystem\\b/,\n boolean: /\\b(?:false|true)\\b/,\n date: /\\b\\d{4}-\\d{2}-\\d{2}\\b/,\n time: /\\b\\d{2}:\\d{2}:\\d{2}\\b/,\n datetime: /\\b\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\b/,\n symbol: /:[^\\d\\s`'\",.:;#\\/\\\\()<>\\[\\]{}][^\\s`'\",.:;#\\/\\\\()<>\\[\\]{}]*/,\n number: /[+-]?\\b(?:\\d+\\.\\d+|\\d+)\\b/,\n punctuation: /(?:\\.{2,3})|[`,.:;=\\/\\\\()<>\\[\\]{}]/,\n reference: /[^\\d\\s`'\",.:;#\\/\\\\()<>\\[\\]{}][^\\s`'\",.:;#\\/\\\\()<>\\[\\]{}]*/\n }\n}\n","// @ts-nocheck\nroboconf.displayName = 'roboconf'\nroboconf.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function roboconf(Prism) {\n Prism.languages.roboconf = {\n comment: /#.*/,\n keyword: {\n pattern:\n /(^|\\s)(?:(?:external|import)\\b|(?:facet|instance of)(?=[ \\t]+[\\w-]+[ \\t]*\\{))/,\n lookbehind: true\n },\n component: {\n pattern: /[\\w-]+(?=[ \\t]*\\{)/,\n alias: 'variable'\n },\n property: /[\\w.-]+(?=[ \\t]*:)/,\n value: {\n pattern: /(=[ \\t]*(?![ \\t]))[^,;]+/,\n lookbehind: true,\n alias: 'attr-value'\n },\n optional: {\n pattern: /\\(optional\\)/,\n alias: 'builtin'\n },\n wildcard: {\n pattern: /(\\.)\\*/,\n lookbehind: true,\n alias: 'operator'\n },\n punctuation: /[{},.;:=]/\n }\n}\n","// @ts-nocheck\nrobotframework.displayName = 'robotframework'\nrobotframework.aliases = ['robot']\n\n/** @type {import('../core.js').Syntax} */\nexport default function robotframework(Prism) {\n ;(function (Prism) {\n var comment = {\n pattern: /(^[ \\t]*| {2}|\\t)#.*/m,\n lookbehind: true,\n greedy: true\n }\n var variable = {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)[$@&%]\\{(?:[^{}\\r\\n]|\\{[^{}\\r\\n]*\\})*\\}/,\n lookbehind: true,\n inside: {\n punctuation: /^[$@&%]\\{|\\}$/\n }\n }\n function createSection(name, inside) {\n var extendecInside = {}\n extendecInside['section-header'] = {\n pattern: /^ ?\\*{3}.+?\\*{3}/,\n alias: 'keyword'\n }\n\n // copy inside tokens\n for (var token in inside) {\n extendecInside[token] = inside[token]\n }\n extendecInside['tag'] = {\n pattern: /([\\r\\n](?: {2}|\\t)[ \\t]*)\\[[-\\w]+\\]/,\n lookbehind: true,\n inside: {\n punctuation: /\\[|\\]/\n }\n }\n extendecInside['variable'] = variable\n extendecInside['comment'] = comment\n return {\n pattern: RegExp(\n /^ ?\\*{3}[ \\t]*<name>[ \\t]*\\*{3}(?:.|[\\r\\n](?!\\*{3}))*/.source.replace(\n /<name>/g,\n function () {\n return name\n }\n ),\n 'im'\n ),\n alias: 'section',\n inside: extendecInside\n }\n }\n var docTag = {\n pattern:\n /(\\[Documentation\\](?: {2}|\\t)[ \\t]*)(?![ \\t]|#)(?:.|(?:\\r\\n?|\\n)[ \\t]*\\.{3})+/,\n lookbehind: true,\n alias: 'string'\n }\n var testNameLike = {\n pattern: /([\\r\\n] ?)(?!#)(?:\\S(?:[ \\t]\\S)*)+/,\n lookbehind: true,\n alias: 'function',\n inside: {\n variable: variable\n }\n }\n var testPropertyLike = {\n pattern: /([\\r\\n](?: {2}|\\t)[ \\t]*)(?!\\[|\\.{3}|#)(?:\\S(?:[ \\t]\\S)*)+/,\n lookbehind: true,\n inside: {\n variable: variable\n }\n }\n Prism.languages['robotframework'] = {\n settings: createSection('Settings', {\n documentation: {\n pattern:\n /([\\r\\n] ?Documentation(?: {2}|\\t)[ \\t]*)(?![ \\t]|#)(?:.|(?:\\r\\n?|\\n)[ \\t]*\\.{3})+/,\n lookbehind: true,\n alias: 'string'\n },\n property: {\n pattern: /([\\r\\n] ?)(?!\\.{3}|#)(?:\\S(?:[ \\t]\\S)*)+/,\n lookbehind: true\n }\n }),\n variables: createSection('Variables'),\n 'test-cases': createSection('Test Cases', {\n 'test-name': testNameLike,\n documentation: docTag,\n property: testPropertyLike\n }),\n keywords: createSection('Keywords', {\n 'keyword-name': testNameLike,\n documentation: docTag,\n property: testPropertyLike\n }),\n tasks: createSection('Tasks', {\n 'task-name': testNameLike,\n documentation: docTag,\n property: testPropertyLike\n }),\n comment: comment\n }\n Prism.languages.robot = Prism.languages['robotframework']\n })(Prism)\n}\n","// @ts-nocheck\nsas.displayName = 'sas'\nsas.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function sas(Prism) {\n ;(function (Prism) {\n var stringPattern = /(?:\"(?:\"\"|[^\"])*\"(?!\")|'(?:''|[^'])*'(?!'))/.source\n var number = /\\b(?:\\d[\\da-f]*x|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/i\n var numericConstant = {\n pattern: RegExp(stringPattern + '[bx]'),\n alias: 'number'\n }\n var macroVariable = {\n pattern: /&[a-z_]\\w*/i\n }\n var macroKeyword = {\n pattern:\n /((?:^|\\s|=|\\())%(?:ABORT|BY|CMS|COPY|DISPLAY|DO|ELSE|END|EVAL|GLOBAL|GO|GOTO|IF|INC|INCLUDE|INDEX|INPUT|KTRIM|LENGTH|LET|LIST|LOCAL|PUT|QKTRIM|QSCAN|QSUBSTR|QSYSFUNC|QUPCASE|RETURN|RUN|SCAN|SUBSTR|SUPERQ|SYMDEL|SYMEXIST|SYMGLOBL|SYMLOCAL|SYSCALL|SYSEVALF|SYSEXEC|SYSFUNC|SYSGET|SYSRPUT|THEN|TO|TSO|UNQUOTE|UNTIL|UPCASE|WHILE|WINDOW)\\b/i,\n lookbehind: true,\n alias: 'keyword'\n }\n var step = {\n pattern: /(^|\\s)(?:proc\\s+\\w+|data(?!=)|quit|run)\\b/i,\n alias: 'keyword',\n lookbehind: true\n }\n var comment = [\n /\\/\\*[\\s\\S]*?\\*\\//,\n {\n pattern: /(^[ \\t]*|;\\s*)\\*[^;]*;/m,\n lookbehind: true\n }\n ]\n var string = {\n pattern: RegExp(stringPattern),\n greedy: true\n }\n var punctuation = /[$%@.(){}\\[\\];,\\\\]/\n var func = {\n pattern: /%?\\b\\w+(?=\\()/,\n alias: 'keyword'\n }\n var args = {\n function: func,\n 'arg-value': {\n pattern: /(=\\s*)[A-Z\\.]+/i,\n lookbehind: true\n },\n operator: /=/,\n 'macro-variable': macroVariable,\n arg: {\n pattern: /[A-Z]+/i,\n alias: 'keyword'\n },\n number: number,\n 'numeric-constant': numericConstant,\n punctuation: punctuation,\n string: string\n }\n var format = {\n pattern: /\\b(?:format|put)\\b=?[\\w'$.]+/i,\n inside: {\n keyword: /^(?:format|put)(?==)/i,\n equals: /=/,\n format: {\n pattern: /(?:\\w|\\$\\d)+\\.\\d?/,\n alias: 'number'\n }\n }\n }\n var altformat = {\n pattern: /\\b(?:format|put)\\s+[\\w']+(?:\\s+[$.\\w]+)+(?=;)/i,\n inside: {\n keyword: /^(?:format|put)/i,\n format: {\n pattern: /[\\w$]+\\.\\d?/,\n alias: 'number'\n }\n }\n }\n var globalStatements = {\n pattern:\n /((?:^|\\s)=?)(?:catname|checkpoint execute_always|dm|endsas|filename|footnote|%include|libname|%list|lock|missing|options|page|resetline|%run|sasfile|skip|sysecho|title\\d?)\\b/i,\n lookbehind: true,\n alias: 'keyword'\n }\n var submitStatement = {\n pattern: /(^|\\s)(?:submit(?:\\s+(?:load|norun|parseonly))?|endsubmit)\\b/i,\n lookbehind: true,\n alias: 'keyword'\n }\n var actionSets =\n /aStore|accessControl|aggregation|audio|autotune|bayesianNetClassifier|bioMedImage|boolRule|builtins|cardinality|cdm|clustering|conditionalRandomFields|configuration|copula|countreg|dataDiscovery|dataPreprocess|dataSciencePilot|dataStep|decisionTree|deduplication|deepLearn|deepNeural|deepRnn|ds2|ecm|entityRes|espCluster|explainModel|factmac|fastKnn|fcmpact|fedSql|freqTab|gVarCluster|gam|gleam|graphSemiSupLearn|hiddenMarkovModel|hyperGroup|ica|image|iml|kernalPca|langModel|ldaTopic|loadStreams|mbc|mixed|mlTools|modelPublishing|network|neuralNet|nmf|nonParametricBayes|nonlinear|optNetwork|optimization|panel|pca|percentile|phreg|pls|qkb|qlim|quantreg|recommend|regression|reinforcementLearn|robustPca|ruleMining|sampling|sandwich|sccasl|search(?:Analytics)?|sentimentAnalysis|sequence|session(?:Prop)?|severity|simSystem|simple|smartData|sparkEmbeddedProcess|sparseML|spatialreg|spc|stabilityMonitoring|svDataDescription|svm|table|text(?:Filters|Frequency|Mining|Parse|Rule(?:Develop|Score)|Topic|Util)|timeData|transpose|tsInfo|tsReconcile|uniTimeSeries|varReduce/\n .source\n var casActions = {\n pattern: RegExp(\n /(^|\\s)(?:action\\s+)?(?:<act>)\\.[a-z]+\\b[^;]+/.source.replace(\n /<act>/g,\n function () {\n return actionSets\n }\n ),\n 'i'\n ),\n lookbehind: true,\n inside: {\n keyword: RegExp(\n /(?:<act>)\\.[a-z]+\\b/.source.replace(/<act>/g, function () {\n return actionSets\n }),\n 'i'\n ),\n action: {\n pattern: /(?:action)/i,\n alias: 'keyword'\n },\n comment: comment,\n function: func,\n 'arg-value': args['arg-value'],\n operator: args.operator,\n argument: args.arg,\n number: number,\n 'numeric-constant': numericConstant,\n punctuation: punctuation,\n string: string\n }\n }\n var keywords = {\n pattern:\n /((?:^|\\s)=?)(?:after|analysis|and|array|barchart|barwidth|begingraph|by|call|cas|cbarline|cfill|class(?:lev)?|close|column|computed?|contains|continue|data(?==)|define|delete|describe|document|do\\s+over|do|dol|drop|dul|else|end(?:comp|source)?|entryTitle|eval(?:uate)?|exec(?:ute)?|exit|file(?:name)?|fill(?:attrs)?|flist|fnc|function(?:list)?|global|goto|group(?:by)?|headline|headskip|histogram|if|infile|keep|keylabel|keyword|label|layout|leave|legendlabel|length|libname|loadactionset|merge|midpoints|_?null_|name|noobs|nowd|ods|options|or|otherwise|out(?:put)?|over(?:lay)?|plot|print|put|raise|ranexp|rannor|rbreak|retain|return|select|session|sessref|set|source|statgraph|sum|summarize|table|temp|terminate|then\\s+do|then|title\\d?|to|var|when|where|xaxisopts|y2axisopts|yaxisopts)\\b/i,\n lookbehind: true\n }\n Prism.languages.sas = {\n datalines: {\n pattern: /^([ \\t]*)(?:cards|(?:data)?lines);[\\s\\S]+?^[ \\t]*;/im,\n lookbehind: true,\n alias: 'string',\n inside: {\n keyword: {\n pattern: /^(?:cards|(?:data)?lines)/i\n },\n punctuation: /;/\n }\n },\n 'proc-sql': {\n pattern:\n /(^proc\\s+(?:fed)?sql(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|data|quit|run);|(?![\\s\\S]))/im,\n lookbehind: true,\n inside: {\n sql: {\n pattern: RegExp(\n /^[ \\t]*(?:select|alter\\s+table|(?:create|describe|drop)\\s+(?:index|table(?:\\s+constraints)?|view)|create\\s+unique\\s+index|insert\\s+into|update)(?:<str>|[^;\"'])+;/.source.replace(\n /<str>/g,\n function () {\n return stringPattern\n }\n ),\n 'im'\n ),\n alias: 'language-sql',\n inside: Prism.languages.sql\n },\n 'global-statements': globalStatements,\n 'sql-statements': {\n pattern:\n /(^|\\s)(?:disconnect\\s+from|begin|commit|exec(?:ute)?|reset|rollback|validate)\\b/i,\n lookbehind: true,\n alias: 'keyword'\n },\n number: number,\n 'numeric-constant': numericConstant,\n punctuation: punctuation,\n string: string\n }\n },\n 'proc-groovy': {\n pattern:\n /(^proc\\s+groovy(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|data|quit|run);|(?![\\s\\S]))/im,\n lookbehind: true,\n inside: {\n comment: comment,\n groovy: {\n pattern: RegExp(\n /(^[ \\t]*submit(?:\\s+(?:load|norun|parseonly))?)(?:<str>|[^\"'])+?(?=endsubmit;)/.source.replace(\n /<str>/g,\n function () {\n return stringPattern\n }\n ),\n 'im'\n ),\n lookbehind: true,\n alias: 'language-groovy',\n inside: Prism.languages.groovy\n },\n keyword: keywords,\n 'submit-statement': submitStatement,\n 'global-statements': globalStatements,\n number: number,\n 'numeric-constant': numericConstant,\n punctuation: punctuation,\n string: string\n }\n },\n 'proc-lua': {\n pattern:\n /(^proc\\s+lua(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|data|quit|run);|(?![\\s\\S]))/im,\n lookbehind: true,\n inside: {\n comment: comment,\n lua: {\n pattern: RegExp(\n /(^[ \\t]*submit(?:\\s+(?:load|norun|parseonly))?)(?:<str>|[^\"'])+?(?=endsubmit;)/.source.replace(\n /<str>/g,\n function () {\n return stringPattern\n }\n ),\n 'im'\n ),\n lookbehind: true,\n alias: 'language-lua',\n inside: Prism.languages.lua\n },\n keyword: keywords,\n 'submit-statement': submitStatement,\n 'global-statements': globalStatements,\n number: number,\n 'numeric-constant': numericConstant,\n punctuation: punctuation,\n string: string\n }\n },\n 'proc-cas': {\n pattern:\n /(^proc\\s+cas(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|quit|data);|(?![\\s\\S]))/im,\n lookbehind: true,\n inside: {\n comment: comment,\n 'statement-var': {\n pattern: /((?:^|\\s)=?)saveresult\\s[^;]+/im,\n lookbehind: true,\n inside: {\n statement: {\n pattern: /^saveresult\\s+\\S+/i,\n inside: {\n keyword: /^(?:saveresult)/i\n }\n },\n rest: args\n }\n },\n 'cas-actions': casActions,\n statement: {\n pattern:\n /((?:^|\\s)=?)(?:default|(?:un)?set|on|output|upload)[^;]+/im,\n lookbehind: true,\n inside: args\n },\n step: step,\n keyword: keywords,\n function: func,\n format: format,\n altformat: altformat,\n 'global-statements': globalStatements,\n number: number,\n 'numeric-constant': numericConstant,\n punctuation: punctuation,\n string: string\n }\n },\n 'proc-args': {\n pattern: RegExp(\n /(^proc\\s+\\w+\\s+)(?!\\s)(?:[^;\"']|<str>)+;/.source.replace(\n /<str>/g,\n function () {\n return stringPattern\n }\n ),\n 'im'\n ),\n lookbehind: true,\n inside: args\n },\n /*Special keywords within macros*/\n 'macro-keyword': macroKeyword,\n 'macro-variable': macroVariable,\n 'macro-string-functions': {\n pattern:\n /((?:^|\\s|=))%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)\\(.*?(?:[^%]\\))/i,\n lookbehind: true,\n inside: {\n function: {\n pattern: /%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)/i,\n alias: 'keyword'\n },\n 'macro-keyword': macroKeyword,\n 'macro-variable': macroVariable,\n 'escaped-char': {\n pattern: /%['\"()<>=¬^~;,#]/\n },\n punctuation: punctuation\n }\n },\n 'macro-declaration': {\n pattern: /^%macro[^;]+(?=;)/im,\n inside: {\n keyword: /%macro/i\n }\n },\n 'macro-end': {\n pattern: /^%mend[^;]+(?=;)/im,\n inside: {\n keyword: /%mend/i\n }\n },\n /*%_zscore(headcir, _lhc, _mhc, _shc, headcz, headcpct, _Fheadcz); */\n macro: {\n pattern: /%_\\w+(?=\\()/,\n alias: 'keyword'\n },\n input: {\n pattern: /\\binput\\s[-\\w\\s/*.$&]+;/i,\n inside: {\n input: {\n alias: 'keyword',\n pattern: /^input/i\n },\n comment: comment,\n number: number,\n 'numeric-constant': numericConstant\n }\n },\n 'options-args': {\n pattern: /(^options)[-'\"|/\\\\<>*+=:()\\w\\s]*(?=;)/im,\n lookbehind: true,\n inside: args\n },\n 'cas-actions': casActions,\n comment: comment,\n function: func,\n format: format,\n altformat: altformat,\n 'numeric-constant': numericConstant,\n datetime: {\n // '1jan2013'd, '9:25:19pm't, '18jan2003:9:27:05am'dt\n pattern: RegExp(stringPattern + '(?:dt?|t)'),\n alias: 'number'\n },\n string: string,\n step: step,\n keyword: keywords,\n // In SAS Studio syntax highlighting, these operators are styled like keywords\n 'operator-keyword': {\n pattern: /\\b(?:eq|ge|gt|in|le|lt|ne|not)\\b/i,\n alias: 'operator'\n },\n // Decimal (1.2e23), hexadecimal (0c1x)\n number: number,\n operator: /\\*\\*?|\\|\\|?|!!?|¦¦?|<[>=]?|>[<=]?|[-+\\/=&]|[~¬^]=?/,\n punctuation: punctuation\n }\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorBash from './bash.js'\nshellSession.displayName = 'shell-session'\nshellSession.aliases = ['sh-session', 'shellsession']\n\n/** @type {import('../core.js').Syntax} */\nexport default function shellSession(Prism) {\n Prism.register(refractorBash)\n ;(function (Prism) {\n // CAREFUL!\n // The following patterns are concatenated, so the group referenced by a back reference is non-obvious!\n\n var strings = [\n // normal string\n /\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/.source,\n /'[^']*'/.source,\n /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/.source,\n // here doc\n // 2 capturing groups\n /<<-?\\s*([\"']?)(\\w+)\\1\\s[\\s\\S]*?[\\r\\n]\\2/.source\n ].join('|')\n Prism.languages['shell-session'] = {\n command: {\n pattern: RegExp(\n // user info\n /^/.source +\n '(?:' +\n // <user> \":\" ( <path> )?\n (/[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+(?::[^\\0-\\x1F$#%*?\"<>:;|]+)?/\n .source +\n '|' +\n // <path>\n // Since the path pattern is quite general, we will require it to start with a special character to\n // prevent false positives.\n /[/~.][^\\0-\\x1F$#%*?\"<>@:;|]*/.source) +\n ')?' +\n // shell symbol\n /[$#%](?=\\s)/.source +\n // bash command\n /(?:[^\\\\\\r\\n \\t'\"<$]|[ \\t](?:(?!#)|#.*$)|\\\\(?:[^\\r]|\\r\\n?)|\\$(?!')|<(?!<)|<<str>>)+/.source.replace(\n /<<str>>/g,\n function () {\n return strings\n }\n ),\n 'm'\n ),\n greedy: true,\n inside: {\n info: {\n // foo@bar:~/files$ exit\n // foo@bar$ exit\n // ~/files$ exit\n pattern: /^[^#$%]+/,\n alias: 'punctuation',\n inside: {\n user: /^[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+/,\n punctuation: /:/,\n path: /[\\s\\S]+/\n }\n },\n bash: {\n pattern: /(^[$#%]\\s*)\\S[\\s\\S]*/,\n lookbehind: true,\n alias: 'language-bash',\n inside: Prism.languages.bash\n },\n 'shell-symbol': {\n pattern: /^[$#%]/,\n alias: 'important'\n }\n }\n },\n output: /.(?:.*(?:[\\r\\n]|.$))*/\n }\n Prism.languages['sh-session'] = Prism.languages['shellsession'] =\n Prism.languages['shell-session']\n })(Prism)\n}\n","// @ts-nocheck\nsmali.displayName = 'smali'\nsmali.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function smali(Prism) {\n // Test files for the parser itself:\n // https://github.com/JesusFreke/smali/tree/master/smali/src/test/resources/LexerTest\n\n Prism.languages.smali = {\n comment: /#.*/,\n string: {\n pattern: /\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"|'(?:[^\\r\\n\\\\']|\\\\(?:.|u[\\da-fA-F]{4}))'/,\n greedy: true\n },\n 'class-name': {\n pattern:\n /(^|[^L])L(?:(?:\\w+|`[^`\\r\\n]*`)\\/)*(?:[\\w$]+|`[^`\\r\\n]*`)(?=\\s*;)/,\n lookbehind: true,\n inside: {\n 'class-name': {\n pattern: /(^L|\\/)(?:[\\w$]+|`[^`\\r\\n]*`)$/,\n lookbehind: true\n },\n namespace: {\n pattern: /^(L)(?:(?:\\w+|`[^`\\r\\n]*`)\\/)+/,\n lookbehind: true,\n inside: {\n punctuation: /\\//\n }\n },\n builtin: /^L/\n }\n },\n builtin: [\n {\n // Reference: https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields#types\n pattern: /([();\\[])[BCDFIJSVZ]+/,\n lookbehind: true\n },\n {\n // e.g. .field mWifiOnUid:I\n pattern: /([\\w$>]:)[BCDFIJSVZ]/,\n lookbehind: true\n }\n ],\n keyword: [\n {\n pattern: /(\\.end\\s+)[\\w-]+/,\n lookbehind: true\n },\n {\n pattern: /(^|[^\\w.-])\\.(?!\\d)[\\w-]+/,\n lookbehind: true\n },\n {\n pattern:\n /(^|[^\\w.-])(?:abstract|annotation|bridge|constructor|enum|final|interface|private|protected|public|runtime|static|synthetic|system|transient)(?![\\w.-])/,\n lookbehind: true\n }\n ],\n function: {\n pattern: /(^|[^\\w.-])(?:\\w+|<[\\w$-]+>)(?=\\()/,\n lookbehind: true\n },\n field: {\n pattern: /[\\w$]+(?=:)/,\n alias: 'variable'\n },\n register: {\n pattern: /(^|[^\\w.-])[vp]\\d(?![\\w.-])/,\n lookbehind: true,\n alias: 'variable'\n },\n boolean: {\n pattern: /(^|[^\\w.-])(?:false|true)(?![\\w.-])/,\n lookbehind: true\n },\n number: {\n pattern:\n /(^|[^/\\w.-])-?(?:NAN|INFINITY|0x(?:[\\dA-F]+(?:\\.[\\dA-F]*)?|\\.[\\dA-F]+)(?:p[+-]?[\\dA-F]+)?|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?)[dflst]?(?![\\w.-])/i,\n lookbehind: true\n },\n label: {\n pattern: /(:)\\w+/,\n lookbehind: true,\n alias: 'property'\n },\n operator: /->|\\.\\.|[\\[=]/,\n punctuation: /[{}(),;:]/\n }\n}\n","// @ts-nocheck\nsmalltalk.displayName = 'smalltalk'\nsmalltalk.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function smalltalk(Prism) {\n Prism.languages.smalltalk = {\n comment: {\n pattern: /\"(?:\"\"|[^\"])*\"/,\n greedy: true\n },\n char: {\n pattern: /\\$./,\n greedy: true\n },\n string: {\n pattern: /'(?:''|[^'])*'/,\n greedy: true\n },\n symbol: /#[\\da-z]+|#(?:-|([+\\/\\\\*~<>=@%|&?!])\\1?)|#(?=\\()/i,\n 'block-arguments': {\n pattern: /(\\[\\s*):[^\\[|]*\\|/,\n lookbehind: true,\n inside: {\n variable: /:[\\da-z]+/i,\n punctuation: /\\|/\n }\n },\n 'temporary-variables': {\n pattern: /\\|[^|]+\\|/,\n inside: {\n variable: /[\\da-z]+/i,\n punctuation: /\\|/\n }\n },\n keyword: /\\b(?:new|nil|self|super)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n number: [\n /\\d+r-?[\\dA-Z]+(?:\\.[\\dA-Z]+)?(?:e-?\\d+)?/,\n /\\b\\d+(?:\\.\\d+)?(?:e-?\\d+)?/\n ],\n operator: /[<=]=?|:=|~[~=]|\\/\\/?|\\\\\\\\|>[>=]?|[!^+\\-*&|,@]/,\n punctuation: /[.;:?\\[\\](){}]/\n }\n}\n","// @ts-nocheck\nimport refractorMarkupTemplating from './markup-templating.js'\nsmarty.displayName = 'smarty'\nsmarty.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function smarty(Prism) {\n Prism.register(refractorMarkupTemplating)\n ;(function (Prism) {\n Prism.languages.smarty = {\n comment: {\n pattern: /^\\{\\*[\\s\\S]*?\\*\\}/,\n greedy: true\n },\n 'embedded-php': {\n pattern: /^\\{php\\}[\\s\\S]*?\\{\\/php\\}/,\n greedy: true,\n inside: {\n smarty: {\n pattern: /^\\{php\\}|\\{\\/php\\}$/,\n inside: null // see below\n },\n\n php: {\n pattern: /[\\s\\S]+/,\n alias: 'language-php',\n inside: Prism.languages.php\n }\n }\n },\n string: [\n {\n pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /\\{[^{}]*\\}|`[^`]*`/,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^[{`]|[`}]$/,\n alias: 'punctuation'\n },\n expression: {\n pattern: /[\\s\\S]+/,\n inside: null // see below\n }\n }\n },\n\n variable: /\\$\\w+/\n }\n },\n {\n pattern: /'(?:\\\\.|[^'\\\\\\r\\n])*'/,\n greedy: true\n }\n ],\n keyword: {\n pattern: /(^\\{\\/?)[a-z_]\\w*\\b(?!\\()/i,\n lookbehind: true,\n greedy: true\n },\n delimiter: {\n pattern: /^\\{\\/?|\\}$/,\n greedy: true,\n alias: 'punctuation'\n },\n number: /\\b0x[\\dA-Fa-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][-+]?\\d+)?/,\n variable: [\n /\\$(?!\\d)\\w+/,\n /#(?!\\d)\\w+#/,\n {\n pattern: /(\\.|->|\\w\\s*=)(?!\\d)\\w+\\b(?!\\()/,\n lookbehind: true\n },\n {\n pattern: /(\\[)(?!\\d)\\w+(?=\\])/,\n lookbehind: true\n }\n ],\n function: {\n pattern: /(\\|\\s*)@?[a-z_]\\w*|\\b[a-z_]\\w*(?=\\()/i,\n lookbehind: true\n },\n 'attr-name': /\\b[a-z_]\\w*(?=\\s*=)/i,\n boolean: /\\b(?:false|no|off|on|true|yes)\\b/,\n punctuation: /[\\[\\](){}.,:`]|->/,\n operator: [\n /[+\\-*\\/%]|==?=?|[!<>]=?|&&|\\|\\|?/,\n /\\bis\\s+(?:not\\s+)?(?:div|even|odd)(?:\\s+by)?\\b/,\n /\\b(?:and|eq|gt?e|gt|lt?e|lt|mod|neq?|not|or)\\b/\n ]\n }\n Prism.languages.smarty['embedded-php'].inside.smarty.inside =\n Prism.languages.smarty\n Prism.languages.smarty.string[0].inside.interpolation.inside.expression.inside =\n Prism.languages.smarty\n var string = /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|'(?:\\\\.|[^'\\\\\\r\\n])*'/\n var smartyPattern = RegExp(\n // comments\n /\\{\\*[\\s\\S]*?\\*\\}/.source +\n '|' +\n // php tags\n /\\{php\\}[\\s\\S]*?\\{\\/php\\}/.source +\n '|' +\n // smarty blocks\n /\\{(?:[^{}\"']|<str>|\\{(?:[^{}\"']|<str>|\\{(?:[^{}\"']|<str>)*\\})*\\})*\\}/.source.replace(\n /<str>/g,\n function () {\n return string.source\n }\n ),\n 'g'\n )\n\n // Tokenize all inline Smarty expressions\n Prism.hooks.add('before-tokenize', function (env) {\n var smartyLiteralStart = '{literal}'\n var smartyLiteralEnd = '{/literal}'\n var smartyLiteralMode = false\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'smarty',\n smartyPattern,\n function (match) {\n // Smarty tags inside {literal} block are ignored\n if (match === smartyLiteralEnd) {\n smartyLiteralMode = false\n }\n if (!smartyLiteralMode) {\n if (match === smartyLiteralStart) {\n smartyLiteralMode = true\n }\n return true\n }\n return false\n }\n )\n })\n\n // Re-insert the tokens after tokenizing\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'smarty')\n })\n })(Prism)\n}\n","// @ts-nocheck\nsml.displayName = 'sml'\nsml.aliases = ['smlnj']\n\n/** @type {import('../core.js').Syntax} */\nexport default function sml(Prism) {\n // https://smlfamily.github.io/sml97-defn.pdf\n // https://people.mpi-sws.org/~rossberg/sml.html\n ;(function (Prism) {\n var keywords =\n /\\b(?:abstype|and|andalso|as|case|datatype|do|else|end|eqtype|exception|fn|fun|functor|handle|if|in|include|infix|infixr|let|local|nonfix|of|op|open|orelse|raise|rec|sharing|sig|signature|struct|structure|then|type|val|where|while|with|withtype)\\b/i\n Prism.languages.sml = {\n // allow one level of nesting\n comment:\n /\\(\\*(?:[^*(]|\\*(?!\\))|\\((?!\\*)|\\(\\*(?:[^*(]|\\*(?!\\))|\\((?!\\*))*\\*\\))*\\*\\)/,\n string: {\n pattern: /#?\"(?:[^\"\\\\]|\\\\.)*\"/,\n greedy: true\n },\n 'class-name': [\n {\n // This is only an approximation since the real grammar is context-free\n //\n // Why the main loop so complex?\n // The main loop is approximately the same as /(?:\\s*(?:[*,]|->)\\s*<TERMINAL>)*/ which is, obviously, a lot\n // simpler. The difference is that if a comma is the last iteration of the loop, then the terminal must be\n // followed by a long identifier.\n pattern: RegExp(\n /((?:^|[^:]):\\s*)<TERMINAL>(?:\\s*(?:(?:\\*|->)\\s*<TERMINAL>|,\\s*<TERMINAL>(?:(?=<NOT-LAST>)|(?!<NOT-LAST>)\\s+<LONG-ID>)))*/.source\n .replace(/<NOT-LAST>/g, function () {\n return /\\s*(?:[*,]|->)/.source\n })\n .replace(/<TERMINAL>/g, function () {\n return /(?:'[\\w']*|<LONG-ID>|\\((?:[^()]|\\([^()]*\\))*\\)|\\{(?:[^{}]|\\{[^{}]*\\})*\\})(?:\\s+<LONG-ID>)*/\n .source\n })\n .replace(/<LONG-ID>/g, function () {\n return /(?!<KEYWORD>)[a-z\\d_][\\w'.]*/.source\n })\n .replace(/<KEYWORD>/g, function () {\n return keywords.source\n }),\n 'i'\n ),\n lookbehind: true,\n greedy: true,\n inside: null // see below\n },\n {\n pattern:\n /((?:^|[^\\w'])(?:datatype|exception|functor|signature|structure|type)\\s+)[a-z_][\\w'.]*/i,\n lookbehind: true\n }\n ],\n function: {\n pattern: /((?:^|[^\\w'])fun\\s+)[a-z_][\\w'.]*/i,\n lookbehind: true\n },\n keyword: keywords,\n variable: {\n pattern: /(^|[^\\w'])'[\\w']*/,\n lookbehind: true\n },\n number: /~?\\b(?:\\d+(?:\\.\\d+)?(?:e~?\\d+)?|0x[\\da-f]+)\\b/i,\n word: {\n pattern: /\\b0w(?:\\d+|x[\\da-f]+)\\b/i,\n alias: 'constant'\n },\n boolean: /\\b(?:false|true)\\b/i,\n operator: /\\.\\.\\.|:[>=:]|=>?|->|[<>]=?|[!+\\-*/^#|@~]/,\n punctuation: /[(){}\\[\\].:,;]/\n }\n Prism.languages.sml['class-name'][0].inside = Prism.languages.sml\n Prism.languages.smlnj = Prism.languages.sml\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nsolidity.displayName = 'solidity'\nsolidity.aliases = ['sol']\n\n/** @type {import('../core.js').Syntax} */\nexport default function solidity(Prism) {\n Prism.register(refractorClike)\n Prism.languages.solidity = Prism.languages.extend('clike', {\n 'class-name': {\n pattern:\n /(\\b(?:contract|enum|interface|library|new|struct|using)\\s+)(?!\\d)[\\w$]+/,\n lookbehind: true\n },\n keyword:\n /\\b(?:_|anonymous|as|assembly|assert|break|calldata|case|constant|constructor|continue|contract|default|delete|do|else|emit|enum|event|external|for|from|function|if|import|indexed|inherited|interface|internal|is|let|library|mapping|memory|modifier|new|payable|pragma|private|public|pure|require|returns?|revert|selfdestruct|solidity|storage|struct|suicide|switch|this|throw|using|var|view|while)\\b/,\n operator: /=>|->|:=|=:|\\*\\*|\\+\\+|--|\\|\\||&&|<<=?|>>=?|[-+*/%^&|<>!=]=?|[~?]/\n })\n Prism.languages.insertBefore('solidity', 'keyword', {\n builtin:\n /\\b(?:address|bool|byte|u?int(?:8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?|string|bytes(?:[1-9]|[12]\\d|3[0-2])?)\\b/\n })\n Prism.languages.insertBefore('solidity', 'number', {\n version: {\n pattern: /([<>]=?|\\^)\\d+\\.\\d+\\.\\d+\\b/,\n lookbehind: true,\n alias: 'number'\n }\n })\n Prism.languages.sol = Prism.languages.solidity\n}\n","// @ts-nocheck\nsolutionFile.displayName = 'solution-file'\nsolutionFile.aliases = ['sln']\n\n/** @type {import('../core.js').Syntax} */\nexport default function solutionFile(Prism) {\n ;(function (Prism) {\n var guid = {\n // https://en.wikipedia.org/wiki/Universally_unique_identifier#Format\n pattern: /\\{[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}\\}/i,\n alias: 'constant',\n inside: {\n punctuation: /[{}]/\n }\n }\n Prism.languages['solution-file'] = {\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n string: {\n pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n greedy: true,\n inside: {\n guid: guid\n }\n },\n object: {\n // Foo\n // Bar(\"abs\") = 9\n // EndBar\n // Prop = TRUE\n // EndFoo\n pattern:\n /^([ \\t]*)(?:([A-Z]\\w*)\\b(?=.*(?:\\r\\n?|\\n)(?:\\1[ \\t].*(?:\\r\\n?|\\n))*\\1End\\2(?=[ \\t]*$))|End[A-Z]\\w*(?=[ \\t]*$))/m,\n lookbehind: true,\n greedy: true,\n alias: 'keyword'\n },\n property: {\n pattern: /^([ \\t]*)(?!\\s)[^\\r\\n\"#=()]*[^\\s\"#=()](?=\\s*=)/m,\n lookbehind: true,\n inside: {\n guid: guid\n }\n },\n guid: guid,\n number: /\\b\\d+(?:\\.\\d+)*\\b/,\n boolean: /\\b(?:FALSE|TRUE)\\b/,\n operator: /=/,\n punctuation: /[(),]/\n }\n Prism.languages['sln'] = Prism.languages['solution-file']\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkupTemplating from './markup-templating.js'\nsoy.displayName = 'soy'\nsoy.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function soy(Prism) {\n Prism.register(refractorMarkupTemplating)\n ;(function (Prism) {\n var stringPattern = /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/\n var numberPattern = /\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b|\\b0x[\\dA-F]+\\b/\n Prism.languages.soy = {\n comment: [\n /\\/\\*[\\s\\S]*?\\*\\//,\n {\n pattern: /(\\s)\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n 'command-arg': {\n pattern:\n /(\\{+\\/?\\s*(?:alias|call|delcall|delpackage|deltemplate|namespace|template)\\s+)\\.?[\\w.]+/,\n lookbehind: true,\n alias: 'string',\n inside: {\n punctuation: /\\./\n }\n },\n parameter: {\n pattern: /(\\{+\\/?\\s*@?param\\??\\s+)\\.?[\\w.]+/,\n lookbehind: true,\n alias: 'variable'\n },\n keyword: [\n {\n pattern:\n /(\\{+\\/?[^\\S\\r\\n]*)(?:\\\\[nrt]|alias|call|case|css|default|delcall|delpackage|deltemplate|else(?:if)?|fallbackmsg|for(?:each)?|if(?:empty)?|lb|let|literal|msg|namespace|nil|@?param\\??|rb|sp|switch|template|xid)/,\n lookbehind: true\n },\n /\\b(?:any|as|attributes|bool|css|float|html|in|int|js|list|map|null|number|string|uri)\\b/\n ],\n delimiter: {\n pattern: /^\\{+\\/?|\\/?\\}+$/,\n alias: 'punctuation'\n },\n property: /\\w+(?==)/,\n variable: {\n pattern: /\\$[^\\W\\d]\\w*(?:\\??(?:\\.\\w+|\\[[^\\]]+\\]))*/,\n inside: {\n string: {\n pattern: stringPattern,\n greedy: true\n },\n number: numberPattern,\n punctuation: /[\\[\\].?]/\n }\n },\n string: {\n pattern: stringPattern,\n greedy: true\n },\n function: [\n /\\w+(?=\\()/,\n {\n pattern: /(\\|[^\\S\\r\\n]*)\\w+/,\n lookbehind: true\n }\n ],\n boolean: /\\b(?:false|true)\\b/,\n number: numberPattern,\n operator: /\\?:?|<=?|>=?|==?|!=|[+*/%-]|\\b(?:and|not|or)\\b/,\n punctuation: /[{}()\\[\\]|.,:]/\n }\n\n // Tokenize all inline Soy expressions\n Prism.hooks.add('before-tokenize', function (env) {\n var soyPattern = /\\{\\{.+?\\}\\}|\\{.+?\\}|\\s\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//g\n var soyLitteralStart = '{literal}'\n var soyLitteralEnd = '{/literal}'\n var soyLitteralMode = false\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'soy',\n soyPattern,\n function (match) {\n // Soy tags inside {literal} block are ignored\n if (match === soyLitteralEnd) {\n soyLitteralMode = false\n }\n if (!soyLitteralMode) {\n if (match === soyLitteralStart) {\n soyLitteralMode = true\n }\n return true\n }\n return false\n }\n )\n })\n\n // Re-insert the tokens after tokenizing\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'soy')\n })\n })(Prism)\n}\n","// @ts-nocheck\nturtle.displayName = 'turtle'\nturtle.aliases = ['trig']\n\n/** @type {import('../core.js').Syntax} */\nexport default function turtle(Prism) {\n Prism.languages.turtle = {\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n 'multiline-string': {\n pattern:\n /\"\"\"(?:(?:\"\"?)?(?:[^\"\\\\]|\\\\.))*\"\"\"|'''(?:(?:''?)?(?:[^'\\\\]|\\\\.))*'''/,\n greedy: true,\n alias: 'string',\n inside: {\n comment: /#.*/\n }\n },\n string: {\n pattern: /\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*'/,\n greedy: true\n },\n url: {\n pattern:\n /<(?:[^\\x00-\\x20<>\"{}|^`\\\\]|\\\\(?:u[\\da-fA-F]{4}|U[\\da-fA-F]{8}))*>/,\n greedy: true,\n inside: {\n punctuation: /[<>]/\n }\n },\n function: {\n pattern:\n /(?:(?![-.\\d\\xB7])[-.\\w\\xB7\\xC0-\\uFFFD]+)?:(?:(?![-.])(?:[-.:\\w\\xC0-\\uFFFD]|%[\\da-f]{2}|\\\\.)+)?/i,\n inside: {\n 'local-name': {\n pattern: /([^:]*:)[\\s\\S]+/,\n lookbehind: true\n },\n prefix: {\n pattern: /[\\s\\S]+/,\n inside: {\n punctuation: /:/\n }\n }\n }\n },\n number: /[+-]?\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i,\n punctuation: /[{}.,;()[\\]]|\\^\\^/,\n boolean: /\\b(?:false|true)\\b/,\n keyword: [/(?:\\ba|@prefix|@base)\\b|=/, /\\b(?:base|graph|prefix)\\b/i],\n tag: {\n pattern: /@[a-z]+(?:-[a-z\\d]+)*/i,\n inside: {\n punctuation: /@/\n }\n }\n }\n Prism.languages.trig = Prism.languages['turtle']\n}\n","// @ts-nocheck\nimport refractorTurtle from './turtle.js'\nsparql.displayName = 'sparql'\nsparql.aliases = ['rq']\n\n/** @type {import('../core.js').Syntax} */\nexport default function sparql(Prism) {\n Prism.register(refractorTurtle)\n Prism.languages.sparql = Prism.languages.extend('turtle', {\n boolean: /\\b(?:false|true)\\b/i,\n variable: {\n pattern: /[?$]\\w+/,\n greedy: true\n }\n })\n Prism.languages.insertBefore('sparql', 'punctuation', {\n keyword: [\n /\\b(?:A|ADD|ALL|AS|ASC|ASK|BNODE|BY|CLEAR|CONSTRUCT|COPY|CREATE|DATA|DEFAULT|DELETE|DESC|DESCRIBE|DISTINCT|DROP|EXISTS|FILTER|FROM|GROUP|HAVING|INSERT|INTO|LIMIT|LOAD|MINUS|MOVE|NAMED|NOT|NOW|OFFSET|OPTIONAL|ORDER|RAND|REDUCED|SELECT|SEPARATOR|SERVICE|SILENT|STRUUID|UNION|USING|UUID|VALUES|WHERE)\\b/i,\n /\\b(?:ABS|AVG|BIND|BOUND|CEIL|COALESCE|CONCAT|CONTAINS|COUNT|DATATYPE|DAY|ENCODE_FOR_URI|FLOOR|GROUP_CONCAT|HOURS|IF|IRI|isBLANK|isIRI|isLITERAL|isNUMERIC|isURI|LANG|LANGMATCHES|LCASE|MAX|MD5|MIN|MINUTES|MONTH|REGEX|REPLACE|ROUND|sameTerm|SAMPLE|SECONDS|SHA1|SHA256|SHA384|SHA512|STR|STRAFTER|STRBEFORE|STRDT|STRENDS|STRLANG|STRLEN|STRSTARTS|SUBSTR|SUM|TIMEZONE|TZ|UCASE|URI|YEAR)\\b(?=\\s*\\()/i,\n /\\b(?:BASE|GRAPH|PREFIX)\\b/i\n ]\n })\n Prism.languages.rq = Prism.languages.sparql\n}\n","// @ts-nocheck\nsplunkSpl.displayName = 'splunk-spl'\nsplunkSpl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function splunkSpl(Prism) {\n Prism.languages['splunk-spl'] = {\n comment: /`comment\\(\"(?:\\\\.|[^\\\\\"])*\"\\)`/,\n string: {\n pattern: /\"(?:\\\\.|[^\\\\\"])*\"/,\n greedy: true\n },\n // https://docs.splunk.com/Documentation/Splunk/7.3.0/SearchReference/ListOfSearchCommands\n keyword:\n /\\b(?:abstract|accum|addcoltotals|addinfo|addtotals|analyzefields|anomalies|anomalousvalue|anomalydetection|append|appendcols|appendcsv|appendlookup|appendpipe|arules|associate|audit|autoregress|bin|bucket|bucketdir|chart|cluster|cofilter|collect|concurrency|contingency|convert|correlate|datamodel|dbinspect|dedup|delete|delta|diff|erex|eval|eventcount|eventstats|extract|fieldformat|fields|fieldsummary|filldown|fillnull|findtypes|folderize|foreach|format|from|gauge|gentimes|geom|geomfilter|geostats|head|highlight|history|iconify|input|inputcsv|inputlookup|iplocation|join|kmeans|kv|kvform|loadjob|localize|localop|lookup|makecontinuous|makemv|makeresults|map|mcollect|metadata|metasearch|meventcollect|mstats|multikv|multisearch|mvcombine|mvexpand|nomv|outlier|outputcsv|outputlookup|outputtext|overlap|pivot|predict|rangemap|rare|regex|relevancy|reltime|rename|replace|rest|return|reverse|rex|rtorder|run|savedsearch|script|scrub|search|searchtxn|selfjoin|sendemail|set|setfields|sichart|sirare|sistats|sitimechart|sitop|sort|spath|stats|strcat|streamstats|table|tags|tail|timechart|timewrap|top|transaction|transpose|trendline|tscollect|tstats|typeahead|typelearner|typer|union|uniq|untable|where|x11|xmlkv|xmlunescape|xpath|xyseries)\\b/i,\n 'operator-word': {\n pattern: /\\b(?:and|as|by|not|or|xor)\\b/i,\n alias: 'operator'\n },\n function: /\\b\\w+(?=\\s*\\()/,\n property: /\\b\\w+(?=\\s*=(?!=))/,\n date: {\n // MM/DD/YYYY(:HH:MM:SS)?\n pattern: /\\b\\d{1,2}\\/\\d{1,2}\\/\\d{1,4}(?:(?::\\d{1,2}){3})?\\b/,\n alias: 'number'\n },\n number: /\\b\\d+(?:\\.\\d+)?\\b/,\n boolean: /\\b(?:f|false|t|true)\\b/i,\n operator: /[<>=]=?|[-+*/%|]/,\n punctuation: /[()[\\],]/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nsqf.displayName = 'sqf'\nsqf.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function sqf(Prism) {\n Prism.register(refractorClike)\n Prism.languages.sqf = Prism.languages.extend('clike', {\n string: {\n pattern: /\"(?:(?:\"\")?[^\"])*\"(?!\")|'(?:[^'])*'/,\n greedy: true\n },\n keyword:\n /\\b(?:breakOut|breakTo|call|case|catch|default|do|echo|else|execFSM|execVM|exitWith|for|forEach|forEachMember|forEachMemberAgent|forEachMemberTeam|from|goto|if|nil|preprocessFile|preprocessFileLineNumbers|private|scopeName|spawn|step|switch|then|throw|to|try|while|with)\\b/i,\n boolean: /\\b(?:false|true)\\b/i,\n function:\n /\\b(?:abs|accTime|acos|action|actionIDs|actionKeys|actionKeysImages|actionKeysNames|actionKeysNamesArray|actionName|actionParams|activateAddons|activatedAddons|activateKey|add3DENConnection|add3DENEventHandler|add3DENLayer|addAction|addBackpack|addBackpackCargo|addBackpackCargoGlobal|addBackpackGlobal|addCamShake|addCuratorAddons|addCuratorCameraArea|addCuratorEditableObjects|addCuratorEditingArea|addCuratorPoints|addEditorObject|addEventHandler|addForce|addForceGeneratorRTD|addGoggles|addGroupIcon|addHandgunItem|addHeadgear|addItem|addItemCargo|addItemCargoGlobal|addItemPool|addItemToBackpack|addItemToUniform|addItemToVest|addLiveStats|addMagazine|addMagazineAmmoCargo|addMagazineCargo|addMagazineCargoGlobal|addMagazineGlobal|addMagazinePool|addMagazines|addMagazineTurret|addMenu|addMenuItem|addMissionEventHandler|addMPEventHandler|addMusicEventHandler|addOwnedMine|addPlayerScores|addPrimaryWeaponItem|addPublicVariableEventHandler|addRating|addResources|addScore|addScoreSide|addSecondaryWeaponItem|addSwitchableUnit|addTeamMember|addToRemainsCollector|addTorque|addUniform|addVehicle|addVest|addWaypoint|addWeapon|addWeaponCargo|addWeaponCargoGlobal|addWeaponGlobal|addWeaponItem|addWeaponPool|addWeaponTurret|admin|agent|agents|AGLToASL|aimedAtTarget|aimPos|airDensityCurveRTD|airDensityRTD|airplaneThrottle|airportSide|AISFinishHeal|alive|all3DENEntities|allAirports|allControls|allCurators|allCutLayers|allDead|allDeadMen|allDisplays|allGroups|allMapMarkers|allMines|allMissionObjects|allow3DMode|allowCrewInImmobile|allowCuratorLogicIgnoreAreas|allowDamage|allowDammage|allowFileOperations|allowFleeing|allowGetIn|allowSprint|allPlayers|allSimpleObjects|allSites|allTurrets|allUnits|allUnitsUAV|allVariables|ammo|ammoOnPylon|animate|animateBay|animateDoor|animatePylon|animateSource|animationNames|animationPhase|animationSourcePhase|animationState|append|apply|armoryPoints|arrayIntersect|asin|ASLToAGL|ASLToATL|assert|assignAsCargo|assignAsCargoIndex|assignAsCommander|assignAsDriver|assignAsGunner|assignAsTurret|assignCurator|assignedCargo|assignedCommander|assignedDriver|assignedGunner|assignedItems|assignedTarget|assignedTeam|assignedVehicle|assignedVehicleRole|assignItem|assignTeam|assignToAirport|atan|atan2|atg|ATLToASL|attachedObject|attachedObjects|attachedTo|attachObject|attachTo|attackEnabled|backpack|backpackCargo|backpackContainer|backpackItems|backpackMagazines|backpackSpaceFor|behaviour|benchmark|binocular|blufor|boundingBox|boundingBoxReal|boundingCenter|briefingName|buildingExit|buildingPos|buldozer_EnableRoadDiag|buldozer_IsEnabledRoadDiag|buldozer_LoadNewRoads|buldozer_reloadOperMap|buttonAction|buttonSetAction|cadetMode|callExtension|camCommand|camCommit|camCommitPrepared|camCommitted|camConstuctionSetParams|camCreate|camDestroy|cameraEffect|cameraEffectEnableHUD|cameraInterest|cameraOn|cameraView|campaignConfigFile|camPreload|camPreloaded|camPrepareBank|camPrepareDir|camPrepareDive|camPrepareFocus|camPrepareFov|camPrepareFovRange|camPreparePos|camPrepareRelPos|camPrepareTarget|camSetBank|camSetDir|camSetDive|camSetFocus|camSetFov|camSetFovRange|camSetPos|camSetRelPos|camSetTarget|camTarget|camUseNVG|canAdd|canAddItemToBackpack|canAddItemToUniform|canAddItemToVest|cancelSimpleTaskDestination|canFire|canMove|canSlingLoad|canStand|canSuspend|canTriggerDynamicSimulation|canUnloadInCombat|canVehicleCargo|captive|captiveNum|cbChecked|cbSetChecked|ceil|channelEnabled|cheatsEnabled|checkAIFeature|checkVisibility|civilian|className|clear3DENAttribute|clear3DENInventory|clearAllItemsFromBackpack|clearBackpackCargo|clearBackpackCargoGlobal|clearForcesRTD|clearGroupIcons|clearItemCargo|clearItemCargoGlobal|clearItemPool|clearMagazineCargo|clearMagazineCargoGlobal|clearMagazinePool|clearOverlay|clearRadio|clearVehicleInit|clearWeaponCargo|clearWeaponCargoGlobal|clearWeaponPool|clientOwner|closeDialog|closeDisplay|closeOverlay|collapseObjectTree|collect3DENHistory|collectiveRTD|combatMode|commandArtilleryFire|commandChat|commander|commandFire|commandFollow|commandFSM|commandGetOut|commandingMenu|commandMove|commandRadio|commandStop|commandSuppressiveFire|commandTarget|commandWatch|comment|commitOverlay|compile|compileFinal|completedFSM|composeText|configClasses|configFile|configHierarchy|configName|configNull|configProperties|configSourceAddonList|configSourceMod|configSourceModList|confirmSensorTarget|connectTerminalToUAV|controlNull|controlsGroupCtrl|copyFromClipboard|copyToClipboard|copyWaypoints|cos|count|countEnemy|countFriendly|countSide|countType|countUnknown|create3DENComposition|create3DENEntity|createAgent|createCenter|createDialog|createDiaryLink|createDiaryRecord|createDiarySubject|createDisplay|createGearDialog|createGroup|createGuardedPoint|createLocation|createMarker|createMarkerLocal|createMenu|createMine|createMissionDisplay|createMPCampaignDisplay|createSimpleObject|createSimpleTask|createSite|createSoundSource|createTask|createTeam|createTrigger|createUnit|createVehicle|createVehicleCrew|createVehicleLocal|crew|ctAddHeader|ctAddRow|ctClear|ctCurSel|ctData|ctFindHeaderRows|ctFindRowHeader|ctHeaderControls|ctHeaderCount|ctRemoveHeaders|ctRemoveRows|ctrlActivate|ctrlAddEventHandler|ctrlAngle|ctrlAutoScrollDelay|ctrlAutoScrollRewind|ctrlAutoScrollSpeed|ctrlChecked|ctrlClassName|ctrlCommit|ctrlCommitted|ctrlCreate|ctrlDelete|ctrlEnable|ctrlEnabled|ctrlFade|ctrlHTMLLoaded|ctrlIDC|ctrlIDD|ctrlMapAnimAdd|ctrlMapAnimClear|ctrlMapAnimCommit|ctrlMapAnimDone|ctrlMapCursor|ctrlMapMouseOver|ctrlMapScale|ctrlMapScreenToWorld|ctrlMapWorldToScreen|ctrlModel|ctrlModelDirAndUp|ctrlModelScale|ctrlParent|ctrlParentControlsGroup|ctrlPosition|ctrlRemoveAllEventHandlers|ctrlRemoveEventHandler|ctrlScale|ctrlSetActiveColor|ctrlSetAngle|ctrlSetAutoScrollDelay|ctrlSetAutoScrollRewind|ctrlSetAutoScrollSpeed|ctrlSetBackgroundColor|ctrlSetChecked|ctrlSetDisabledColor|ctrlSetEventHandler|ctrlSetFade|ctrlSetFocus|ctrlSetFont|ctrlSetFontH1|ctrlSetFontH1B|ctrlSetFontH2|ctrlSetFontH2B|ctrlSetFontH3|ctrlSetFontH3B|ctrlSetFontH4|ctrlSetFontH4B|ctrlSetFontH5|ctrlSetFontH5B|ctrlSetFontH6|ctrlSetFontH6B|ctrlSetFontHeight|ctrlSetFontHeightH1|ctrlSetFontHeightH2|ctrlSetFontHeightH3|ctrlSetFontHeightH4|ctrlSetFontHeightH5|ctrlSetFontHeightH6|ctrlSetFontHeightSecondary|ctrlSetFontP|ctrlSetFontPB|ctrlSetFontSecondary|ctrlSetForegroundColor|ctrlSetModel|ctrlSetModelDirAndUp|ctrlSetModelScale|ctrlSetPixelPrecision|ctrlSetPosition|ctrlSetScale|ctrlSetStructuredText|ctrlSetText|ctrlSetTextColor|ctrlSetTextColorSecondary|ctrlSetTextSecondary|ctrlSetTooltip|ctrlSetTooltipColorBox|ctrlSetTooltipColorShade|ctrlSetTooltipColorText|ctrlShow|ctrlShown|ctrlText|ctrlTextHeight|ctrlTextSecondary|ctrlTextWidth|ctrlType|ctrlVisible|ctRowControls|ctRowCount|ctSetCurSel|ctSetData|ctSetHeaderTemplate|ctSetRowTemplate|ctSetValue|ctValue|curatorAddons|curatorCamera|curatorCameraArea|curatorCameraAreaCeiling|curatorCoef|curatorEditableObjects|curatorEditingArea|curatorEditingAreaType|curatorMouseOver|curatorPoints|curatorRegisteredObjects|curatorSelected|curatorWaypointCost|current3DENOperation|currentChannel|currentCommand|currentMagazine|currentMagazineDetail|currentMagazineDetailTurret|currentMagazineTurret|currentMuzzle|currentNamespace|currentTask|currentTasks|currentThrowable|currentVisionMode|currentWaypoint|currentWeapon|currentWeaponMode|currentWeaponTurret|currentZeroing|cursorObject|cursorTarget|customChat|customRadio|cutFadeOut|cutObj|cutRsc|cutText|damage|date|dateToNumber|daytime|deActivateKey|debriefingText|debugFSM|debugLog|deg|delete3DENEntities|deleteAt|deleteCenter|deleteCollection|deleteEditorObject|deleteGroup|deleteGroupWhenEmpty|deleteIdentity|deleteLocation|deleteMarker|deleteMarkerLocal|deleteRange|deleteResources|deleteSite|deleteStatus|deleteTeam|deleteVehicle|deleteVehicleCrew|deleteWaypoint|detach|detectedMines|diag_activeMissionFSMs|diag_activeScripts|diag_activeSQFScripts|diag_activeSQSScripts|diag_captureFrame|diag_captureFrameToFile|diag_captureSlowFrame|diag_codePerformance|diag_drawMode|diag_dynamicSimulationEnd|diag_enable|diag_enabled|diag_fps|diag_fpsMin|diag_frameNo|diag_lightNewLoad|diag_list|diag_log|diag_logSlowFrame|diag_mergeConfigFile|diag_recordTurretLimits|diag_setLightNew|diag_tickTime|diag_toggle|dialog|diarySubjectExists|didJIP|didJIPOwner|difficulty|difficultyEnabled|difficultyEnabledRTD|difficultyOption|direction|directSay|disableAI|disableCollisionWith|disableConversation|disableDebriefingStats|disableMapIndicators|disableNVGEquipment|disableRemoteSensors|disableSerialization|disableTIEquipment|disableUAVConnectability|disableUserInput|displayAddEventHandler|displayCtrl|displayNull|displayParent|displayRemoveAllEventHandlers|displayRemoveEventHandler|displaySetEventHandler|dissolveTeam|distance|distance2D|distanceSqr|distributionRegion|do3DENAction|doArtilleryFire|doFire|doFollow|doFSM|doGetOut|doMove|doorPhase|doStop|doSuppressiveFire|doTarget|doWatch|drawArrow|drawEllipse|drawIcon|drawIcon3D|drawLine|drawLine3D|drawLink|drawLocation|drawPolygon|drawRectangle|drawTriangle|driver|drop|dynamicSimulationDistance|dynamicSimulationDistanceCoef|dynamicSimulationEnabled|dynamicSimulationSystemEnabled|east|edit3DENMissionAttributes|editObject|editorSetEventHandler|effectiveCommander|emptyPositions|enableAI|enableAIFeature|enableAimPrecision|enableAttack|enableAudioFeature|enableAutoStartUpRTD|enableAutoTrimRTD|enableCamShake|enableCaustics|enableChannel|enableCollisionWith|enableCopilot|enableDebriefingStats|enableDiagLegend|enableDynamicSimulation|enableDynamicSimulationSystem|enableEndDialog|enableEngineArtillery|enableEnvironment|enableFatigue|enableGunLights|enableInfoPanelComponent|enableIRLasers|enableMimics|enablePersonTurret|enableRadio|enableReload|enableRopeAttach|enableSatNormalOnDetail|enableSaving|enableSentences|enableSimulation|enableSimulationGlobal|enableStamina|enableStressDamage|enableTeamSwitch|enableTraffic|enableUAVConnectability|enableUAVWaypoints|enableVehicleCargo|enableVehicleSensor|enableWeaponDisassembly|endl|endLoadingScreen|endMission|engineOn|enginesIsOnRTD|enginesPowerRTD|enginesRpmRTD|enginesTorqueRTD|entities|environmentEnabled|estimatedEndServerTime|estimatedTimeLeft|evalObjectArgument|everyBackpack|everyContainer|exec|execEditorScript|exp|expectedDestination|exportJIPMessages|eyeDirection|eyePos|face|faction|fadeMusic|fadeRadio|fadeSound|fadeSpeech|failMission|fillWeaponsFromPool|find|findCover|findDisplay|findEditorObject|findEmptyPosition|findEmptyPositionReady|findIf|findNearestEnemy|finishMissionInit|finite|fire|fireAtTarget|firstBackpack|flag|flagAnimationPhase|flagOwner|flagSide|flagTexture|fleeing|floor|flyInHeight|flyInHeightASL|fog|fogForecast|fogParams|forceAddUniform|forceAtPositionRTD|forcedMap|forceEnd|forceFlagTexture|forceFollowRoad|forceGeneratorRTD|forceMap|forceRespawn|forceSpeed|forceWalk|forceWeaponFire|forceWeatherChange|forgetTarget|format|formation|formationDirection|formationLeader|formationMembers|formationPosition|formationTask|formatText|formLeader|freeLook|fromEditor|fuel|fullCrew|gearIDCAmmoCount|gearSlotAmmoCount|gearSlotData|get3DENActionState|get3DENAttribute|get3DENCamera|get3DENConnections|get3DENEntity|get3DENEntityID|get3DENGrid|get3DENIconsVisible|get3DENLayerEntities|get3DENLinesVisible|get3DENMissionAttribute|get3DENMouseOver|get3DENSelected|getAimingCoef|getAllEnvSoundControllers|getAllHitPointsDamage|getAllOwnedMines|getAllSoundControllers|getAmmoCargo|getAnimAimPrecision|getAnimSpeedCoef|getArray|getArtilleryAmmo|getArtilleryComputerSettings|getArtilleryETA|getAssignedCuratorLogic|getAssignedCuratorUnit|getBackpackCargo|getBleedingRemaining|getBurningValue|getCameraViewDirection|getCargoIndex|getCenterOfMass|getClientState|getClientStateNumber|getCompatiblePylonMagazines|getConnectedUAV|getContainerMaxLoad|getCursorObjectParams|getCustomAimCoef|getDammage|getDescription|getDir|getDirVisual|getDLCAssetsUsage|getDLCAssetsUsageByName|getDLCs|getDLCUsageTime|getEditorCamera|getEditorMode|getEditorObjectScope|getElevationOffset|getEngineTargetRpmRTD|getEnvSoundController|getFatigue|getFieldManualStartPage|getForcedFlagTexture|getFriend|getFSMVariable|getFuelCargo|getGroupIcon|getGroupIconParams|getGroupIcons|getHideFrom|getHit|getHitIndex|getHitPointDamage|getItemCargo|getMagazineCargo|getMarkerColor|getMarkerPos|getMarkerSize|getMarkerType|getMass|getMissionConfig|getMissionConfigValue|getMissionDLCs|getMissionLayerEntities|getMissionLayers|getModelInfo|getMousePosition|getMusicPlayedTime|getNumber|getObjectArgument|getObjectChildren|getObjectDLC|getObjectMaterials|getObjectProxy|getObjectTextures|getObjectType|getObjectViewDistance|getOxygenRemaining|getPersonUsedDLCs|getPilotCameraDirection|getPilotCameraPosition|getPilotCameraRotation|getPilotCameraTarget|getPlateNumber|getPlayerChannel|getPlayerScores|getPlayerUID|getPlayerUIDOld|getPos|getPosASL|getPosASLVisual|getPosASLW|getPosATL|getPosATLVisual|getPosVisual|getPosWorld|getPylonMagazines|getRelDir|getRelPos|getRemoteSensorsDisabled|getRepairCargo|getResolution|getRotorBrakeRTD|getShadowDistance|getShotParents|getSlingLoad|getSoundController|getSoundControllerResult|getSpeed|getStamina|getStatValue|getSuppression|getTerrainGrid|getTerrainHeightASL|getText|getTotalDLCUsageTime|getTrimOffsetRTD|getUnitLoadout|getUnitTrait|getUserMFDText|getUserMFDValue|getVariable|getVehicleCargo|getWeaponCargo|getWeaponSway|getWingsOrientationRTD|getWingsPositionRTD|getWPPos|glanceAt|globalChat|globalRadio|goggles|group|groupChat|groupFromNetId|groupIconSelectable|groupIconsVisible|groupId|groupOwner|groupRadio|groupSelectedUnits|groupSelectUnit|grpNull|gunner|gusts|halt|handgunItems|handgunMagazine|handgunWeapon|handsHit|hasInterface|hasPilotCamera|hasWeapon|hcAllGroups|hcGroupParams|hcLeader|hcRemoveAllGroups|hcRemoveGroup|hcSelected|hcSelectGroup|hcSetGroup|hcShowBar|hcShownBar|headgear|hideBody|hideObject|hideObjectGlobal|hideSelection|hint|hintC|hintCadet|hintSilent|hmd|hostMission|htmlLoad|HUDMovementLevels|humidity|image|importAllGroups|importance|in|inArea|inAreaArray|incapacitatedState|independent|inflame|inflamed|infoPanel|infoPanelComponentEnabled|infoPanelComponents|infoPanels|inGameUISetEventHandler|inheritsFrom|initAmbientLife|inPolygon|inputAction|inRangeOfArtillery|insertEditorObject|intersect|is3DEN|is3DENMultiplayer|isAbleToBreathe|isAgent|isAimPrecisionEnabled|isArray|isAutoHoverOn|isAutonomous|isAutoStartUpEnabledRTD|isAutotest|isAutoTrimOnRTD|isBleeding|isBurning|isClass|isCollisionLightOn|isCopilotEnabled|isDamageAllowed|isDedicated|isDLCAvailable|isEngineOn|isEqualTo|isEqualType|isEqualTypeAll|isEqualTypeAny|isEqualTypeArray|isEqualTypeParams|isFilePatchingEnabled|isFlashlightOn|isFlatEmpty|isForcedWalk|isFormationLeader|isGroupDeletedWhenEmpty|isHidden|isInRemainsCollector|isInstructorFigureEnabled|isIRLaserOn|isKeyActive|isKindOf|isLaserOn|isLightOn|isLocalized|isManualFire|isMarkedForCollection|isMultiplayer|isMultiplayerSolo|isNil|isNull|isNumber|isObjectHidden|isObjectRTD|isOnRoad|isPipEnabled|isPlayer|isRealTime|isRemoteExecuted|isRemoteExecutedJIP|isServer|isShowing3DIcons|isSimpleObject|isSprintAllowed|isStaminaEnabled|isSteamMission|isStreamFriendlyUIEnabled|isStressDamageEnabled|isText|isTouchingGround|isTurnedOut|isTutHintsEnabled|isUAVConnectable|isUAVConnected|isUIContext|isUniformAllowed|isVehicleCargo|isVehicleRadarOn|isVehicleSensorEnabled|isWalking|isWeaponDeployed|isWeaponRested|itemCargo|items|itemsWithMagazines|join|joinAs|joinAsSilent|joinSilent|joinString|kbAddDatabase|kbAddDatabaseTargets|kbAddTopic|kbHasTopic|kbReact|kbRemoveTopic|kbTell|kbWasSaid|keyImage|keyName|knowsAbout|land|landAt|landResult|language|laserTarget|lbAdd|lbClear|lbColor|lbColorRight|lbCurSel|lbData|lbDelete|lbIsSelected|lbPicture|lbPictureRight|lbSelection|lbSetColor|lbSetColorRight|lbSetCurSel|lbSetData|lbSetPicture|lbSetPictureColor|lbSetPictureColorDisabled|lbSetPictureColorSelected|lbSetPictureRight|lbSetPictureRightColor|lbSetPictureRightColorDisabled|lbSetPictureRightColorSelected|lbSetSelectColor|lbSetSelectColorRight|lbSetSelected|lbSetText|lbSetTextRight|lbSetTooltip|lbSetValue|lbSize|lbSort|lbSortByValue|lbText|lbTextRight|lbValue|leader|leaderboardDeInit|leaderboardGetRows|leaderboardInit|leaderboardRequestRowsFriends|leaderboardRequestRowsGlobal|leaderboardRequestRowsGlobalAroundUser|leaderboardsRequestUploadScore|leaderboardsRequestUploadScoreKeepBest|leaderboardState|leaveVehicle|libraryCredits|libraryDisclaimers|lifeState|lightAttachObject|lightDetachObject|lightIsOn|lightnings|limitSpeed|linearConversion|lineBreak|lineIntersects|lineIntersectsObjs|lineIntersectsSurfaces|lineIntersectsWith|linkItem|list|listObjects|listRemoteTargets|listVehicleSensors|ln|lnbAddArray|lnbAddColumn|lnbAddRow|lnbClear|lnbColor|lnbColorRight|lnbCurSelRow|lnbData|lnbDeleteColumn|lnbDeleteRow|lnbGetColumnsPosition|lnbPicture|lnbPictureRight|lnbSetColor|lnbSetColorRight|lnbSetColumnsPos|lnbSetCurSelRow|lnbSetData|lnbSetPicture|lnbSetPictureColor|lnbSetPictureColorRight|lnbSetPictureColorSelected|lnbSetPictureColorSelectedRight|lnbSetPictureRight|lnbSetText|lnbSetTextRight|lnbSetValue|lnbSize|lnbSort|lnbSortByValue|lnbText|lnbTextRight|lnbValue|load|loadAbs|loadBackpack|loadFile|loadGame|loadIdentity|loadMagazine|loadOverlay|loadStatus|loadUniform|loadVest|local|localize|locationNull|locationPosition|lock|lockCameraTo|lockCargo|lockDriver|locked|lockedCargo|lockedDriver|lockedTurret|lockIdentity|lockTurret|lockWP|log|logEntities|logNetwork|logNetworkTerminate|lookAt|lookAtPos|magazineCargo|magazines|magazinesAllTurrets|magazinesAmmo|magazinesAmmoCargo|magazinesAmmoFull|magazinesDetail|magazinesDetailBackpack|magazinesDetailUniform|magazinesDetailVest|magazinesTurret|magazineTurretAmmo|mapAnimAdd|mapAnimClear|mapAnimCommit|mapAnimDone|mapCenterOnCamera|mapGridPosition|markAsFinishedOnSteam|markerAlpha|markerBrush|markerColor|markerDir|markerPos|markerShape|markerSize|markerText|markerType|max|members|menuAction|menuAdd|menuChecked|menuClear|menuCollapse|menuData|menuDelete|menuEnable|menuEnabled|menuExpand|menuHover|menuPicture|menuSetAction|menuSetCheck|menuSetData|menuSetPicture|menuSetValue|menuShortcut|menuShortcutText|menuSize|menuSort|menuText|menuURL|menuValue|min|mineActive|mineDetectedBy|missionConfigFile|missionDifficulty|missionName|missionNamespace|missionStart|missionVersion|modelToWorld|modelToWorldVisual|modelToWorldVisualWorld|modelToWorldWorld|modParams|moonIntensity|moonPhase|morale|move|move3DENCamera|moveInAny|moveInCargo|moveInCommander|moveInDriver|moveInGunner|moveInTurret|moveObjectToEnd|moveOut|moveTime|moveTo|moveToCompleted|moveToFailed|musicVolume|name|nameSound|nearEntities|nearestBuilding|nearestLocation|nearestLocations|nearestLocationWithDubbing|nearestObject|nearestObjects|nearestTerrainObjects|nearObjects|nearObjectsReady|nearRoads|nearSupplies|nearTargets|needReload|netId|netObjNull|newOverlay|nextMenuItemIndex|nextWeatherChange|nMenuItems|numberOfEnginesRTD|numberToDate|objectCurators|objectFromNetId|objectParent|objNull|objStatus|onBriefingGear|onBriefingGroup|onBriefingNotes|onBriefingPlan|onBriefingTeamSwitch|onCommandModeChanged|onDoubleClick|onEachFrame|onGroupIconClick|onGroupIconOverEnter|onGroupIconOverLeave|onHCGroupSelectionChanged|onMapSingleClick|onPlayerConnected|onPlayerDisconnected|onPreloadFinished|onPreloadStarted|onShowNewObject|onTeamSwitch|openCuratorInterface|openDLCPage|openDSInterface|openMap|openSteamApp|openYoutubeVideo|opfor|orderGetIn|overcast|overcastForecast|owner|param|params|parseNumber|parseSimpleArray|parseText|parsingNamespace|particlesQuality|pi|pickWeaponPool|pitch|pixelGrid|pixelGridBase|pixelGridNoUIScale|pixelH|pixelW|playableSlotsNumber|playableUnits|playAction|playActionNow|player|playerRespawnTime|playerSide|playersNumber|playGesture|playMission|playMove|playMoveNow|playMusic|playScriptedMission|playSound|playSound3D|position|positionCameraToWorld|posScreenToWorld|posWorldToScreen|ppEffectAdjust|ppEffectCommit|ppEffectCommitted|ppEffectCreate|ppEffectDestroy|ppEffectEnable|ppEffectEnabled|ppEffectForceInNVG|precision|preloadCamera|preloadObject|preloadSound|preloadTitleObj|preloadTitleRsc|primaryWeapon|primaryWeaponItems|primaryWeaponMagazine|priority|processDiaryLink|processInitCommands|productVersion|profileName|profileNamespace|profileNameSteam|progressLoadingScreen|progressPosition|progressSetPosition|publicVariable|publicVariableClient|publicVariableServer|pushBack|pushBackUnique|putWeaponPool|queryItemsPool|queryMagazinePool|queryWeaponPool|rad|radioChannelAdd|radioChannelCreate|radioChannelRemove|radioChannelSetCallSign|radioChannelSetLabel|radioVolume|rain|rainbow|random|rank|rankId|rating|rectangular|registeredTasks|registerTask|reload|reloadEnabled|remoteControl|remoteExec|remoteExecCall|remoteExecutedOwner|remove3DENConnection|remove3DENEventHandler|remove3DENLayer|removeAction|removeAll3DENEventHandlers|removeAllActions|removeAllAssignedItems|removeAllContainers|removeAllCuratorAddons|removeAllCuratorCameraAreas|removeAllCuratorEditingAreas|removeAllEventHandlers|removeAllHandgunItems|removeAllItems|removeAllItemsWithMagazines|removeAllMissionEventHandlers|removeAllMPEventHandlers|removeAllMusicEventHandlers|removeAllOwnedMines|removeAllPrimaryWeaponItems|removeAllWeapons|removeBackpack|removeBackpackGlobal|removeCuratorAddons|removeCuratorCameraArea|removeCuratorEditableObjects|removeCuratorEditingArea|removeDrawIcon|removeDrawLinks|removeEventHandler|removeFromRemainsCollector|removeGoggles|removeGroupIcon|removeHandgunItem|removeHeadgear|removeItem|removeItemFromBackpack|removeItemFromUniform|removeItemFromVest|removeItems|removeMagazine|removeMagazineGlobal|removeMagazines|removeMagazinesTurret|removeMagazineTurret|removeMenuItem|removeMissionEventHandler|removeMPEventHandler|removeMusicEventHandler|removeOwnedMine|removePrimaryWeaponItem|removeSecondaryWeaponItem|removeSimpleTask|removeSwitchableUnit|removeTeamMember|removeUniform|removeVest|removeWeapon|removeWeaponAttachmentCargo|removeWeaponCargo|removeWeaponGlobal|removeWeaponTurret|reportRemoteTarget|requiredVersion|resetCamShake|resetSubgroupDirection|resistance|resize|resources|respawnVehicle|restartEditorCamera|reveal|revealMine|reverse|reversedMouseY|roadAt|roadsConnectedTo|roleDescription|ropeAttachedObjects|ropeAttachedTo|ropeAttachEnabled|ropeAttachTo|ropeCreate|ropeCut|ropeDestroy|ropeDetach|ropeEndPosition|ropeLength|ropes|ropeUnwind|ropeUnwound|rotorsForcesRTD|rotorsRpmRTD|round|runInitScript|safeZoneH|safeZoneW|safeZoneWAbs|safeZoneX|safeZoneXAbs|safeZoneY|save3DENInventory|saveGame|saveIdentity|saveJoysticks|saveOverlay|saveProfileNamespace|saveStatus|saveVar|savingEnabled|say|say2D|say3D|score|scoreSide|screenshot|screenToWorld|scriptDone|scriptName|scriptNull|scudState|secondaryWeapon|secondaryWeaponItems|secondaryWeaponMagazine|select|selectBestPlaces|selectDiarySubject|selectedEditorObjects|selectEditorObject|selectionNames|selectionPosition|selectLeader|selectMax|selectMin|selectNoPlayer|selectPlayer|selectRandom|selectRandomWeighted|selectWeapon|selectWeaponTurret|sendAUMessage|sendSimpleCommand|sendTask|sendTaskResult|sendUDPMessage|serverCommand|serverCommandAvailable|serverCommandExecutable|serverName|serverTime|set|set3DENAttribute|set3DENAttributes|set3DENGrid|set3DENIconsVisible|set3DENLayer|set3DENLinesVisible|set3DENLogicType|set3DENMissionAttribute|set3DENMissionAttributes|set3DENModelsVisible|set3DENObjectType|set3DENSelected|setAccTime|setActualCollectiveRTD|setAirplaneThrottle|setAirportSide|setAmmo|setAmmoCargo|setAmmoOnPylon|setAnimSpeedCoef|setAperture|setApertureNew|setArmoryPoints|setAttributes|setAutonomous|setBehaviour|setBleedingRemaining|setBrakesRTD|setCameraInterest|setCamShakeDefParams|setCamShakeParams|setCamUseTI|setCaptive|setCenterOfMass|setCollisionLight|setCombatMode|setCompassOscillation|setConvoySeparation|setCuratorCameraAreaCeiling|setCuratorCoef|setCuratorEditingAreaType|setCuratorWaypointCost|setCurrentChannel|setCurrentTask|setCurrentWaypoint|setCustomAimCoef|setCustomWeightRTD|setDamage|setDammage|setDate|setDebriefingText|setDefaultCamera|setDestination|setDetailMapBlendPars|setDir|setDirection|setDrawIcon|setDriveOnPath|setDropInterval|setDynamicSimulationDistance|setDynamicSimulationDistanceCoef|setEditorMode|setEditorObjectScope|setEffectCondition|setEngineRpmRTD|setFace|setFaceAnimation|setFatigue|setFeatureType|setFlagAnimationPhase|setFlagOwner|setFlagSide|setFlagTexture|setFog|setForceGeneratorRTD|setFormation|setFormationTask|setFormDir|setFriend|setFromEditor|setFSMVariable|setFuel|setFuelCargo|setGroupIcon|setGroupIconParams|setGroupIconsSelectable|setGroupIconsVisible|setGroupId|setGroupIdGlobal|setGroupOwner|setGusts|setHideBehind|setHit|setHitIndex|setHitPointDamage|setHorizonParallaxCoef|setHUDMovementLevels|setIdentity|setImportance|setInfoPanel|setLeader|setLightAmbient|setLightAttenuation|setLightBrightness|setLightColor|setLightDayLight|setLightFlareMaxDistance|setLightFlareSize|setLightIntensity|setLightnings|setLightUseFlare|setLocalWindParams|setMagazineTurretAmmo|setMarkerAlpha|setMarkerAlphaLocal|setMarkerBrush|setMarkerBrushLocal|setMarkerColor|setMarkerColorLocal|setMarkerDir|setMarkerDirLocal|setMarkerPos|setMarkerPosLocal|setMarkerShape|setMarkerShapeLocal|setMarkerSize|setMarkerSizeLocal|setMarkerText|setMarkerTextLocal|setMarkerType|setMarkerTypeLocal|setMass|setMimic|setMousePosition|setMusicEffect|setMusicEventHandler|setName|setNameSound|setObjectArguments|setObjectMaterial|setObjectMaterialGlobal|setObjectProxy|setObjectTexture|setObjectTextureGlobal|setObjectViewDistance|setOvercast|setOwner|setOxygenRemaining|setParticleCircle|setParticleClass|setParticleFire|setParticleParams|setParticleRandom|setPilotCameraDirection|setPilotCameraRotation|setPilotCameraTarget|setPilotLight|setPiPEffect|setPitch|setPlateNumber|setPlayable|setPlayerRespawnTime|setPos|setPosASL|setPosASL2|setPosASLW|setPosATL|setPosition|setPosWorld|setPylonLoadOut|setPylonsPriority|setRadioMsg|setRain|setRainbow|setRandomLip|setRank|setRectangular|setRepairCargo|setRotorBrakeRTD|setShadowDistance|setShotParents|setSide|setSimpleTaskAlwaysVisible|setSimpleTaskCustomData|setSimpleTaskDescription|setSimpleTaskDestination|setSimpleTaskTarget|setSimpleTaskType|setSimulWeatherLayers|setSize|setSkill|setSlingLoad|setSoundEffect|setSpeaker|setSpeech|setSpeedMode|setStamina|setStaminaScheme|setStatValue|setSuppression|setSystemOfUnits|setTargetAge|setTaskMarkerOffset|setTaskResult|setTaskState|setTerrainGrid|setText|setTimeMultiplier|setTitleEffect|setToneMapping|setToneMappingParams|setTrafficDensity|setTrafficDistance|setTrafficGap|setTrafficSpeed|setTriggerActivation|setTriggerArea|setTriggerStatements|setTriggerText|setTriggerTimeout|setTriggerType|setType|setUnconscious|setUnitAbility|setUnitLoadout|setUnitPos|setUnitPosWeak|setUnitRank|setUnitRecoilCoefficient|setUnitTrait|setUnloadInCombat|setUserActionText|setUserMFDText|setUserMFDValue|setVariable|setVectorDir|setVectorDirAndUp|setVectorUp|setVehicleAmmo|setVehicleAmmoDef|setVehicleArmor|setVehicleCargo|setVehicleId|setVehicleInit|setVehicleLock|setVehiclePosition|setVehicleRadar|setVehicleReceiveRemoteTargets|setVehicleReportOwnPosition|setVehicleReportRemoteTargets|setVehicleTIPars|setVehicleVarName|setVelocity|setVelocityModelSpace|setVelocityTransformation|setViewDistance|setVisibleIfTreeCollapsed|setWantedRpmRTD|setWaves|setWaypointBehaviour|setWaypointCombatMode|setWaypointCompletionRadius|setWaypointDescription|setWaypointForceBehaviour|setWaypointFormation|setWaypointHousePosition|setWaypointLoiterRadius|setWaypointLoiterType|setWaypointName|setWaypointPosition|setWaypointScript|setWaypointSpeed|setWaypointStatements|setWaypointTimeout|setWaypointType|setWaypointVisible|setWeaponReloadingTime|setWind|setWindDir|setWindForce|setWindStr|setWingForceScaleRTD|setWPPos|show3DIcons|showChat|showCinemaBorder|showCommandingMenu|showCompass|showCuratorCompass|showGPS|showHUD|showLegend|showMap|shownArtilleryComputer|shownChat|shownCompass|shownCuratorCompass|showNewEditorObject|shownGPS|shownHUD|shownMap|shownPad|shownRadio|shownScoretable|shownUAVFeed|shownWarrant|shownWatch|showPad|showRadio|showScoretable|showSubtitles|showUAVFeed|showWarrant|showWatch|showWaypoint|showWaypoints|side|sideAmbientLife|sideChat|sideEmpty|sideEnemy|sideFriendly|sideLogic|sideRadio|sideUnknown|simpleTasks|simulationEnabled|simulCloudDensity|simulCloudOcclusion|simulInClouds|simulWeatherSync|sin|size|sizeOf|skill|skillFinal|skipTime|sleep|sliderPosition|sliderRange|sliderSetPosition|sliderSetRange|sliderSetSpeed|sliderSpeed|slingLoadAssistantShown|soldierMagazines|someAmmo|sort|soundVolume|speaker|speed|speedMode|splitString|sqrt|squadParams|stance|startLoadingScreen|stop|stopEngineRTD|stopped|str|sunOrMoon|supportInfo|suppressFor|surfaceIsWater|surfaceNormal|surfaceType|swimInDepth|switchableUnits|switchAction|switchCamera|switchGesture|switchLight|switchMove|synchronizedObjects|synchronizedTriggers|synchronizedWaypoints|synchronizeObjectsAdd|synchronizeObjectsRemove|synchronizeTrigger|synchronizeWaypoint|systemChat|systemOfUnits|tan|targetKnowledge|targets|targetsAggregate|targetsQuery|taskAlwaysVisible|taskChildren|taskCompleted|taskCustomData|taskDescription|taskDestination|taskHint|taskMarkerOffset|taskNull|taskParent|taskResult|taskState|taskType|teamMember|teamMemberNull|teamName|teams|teamSwitch|teamSwitchEnabled|teamType|terminate|terrainIntersect|terrainIntersectASL|terrainIntersectAtASL|text|textLog|textLogFormat|tg|time|timeMultiplier|titleCut|titleFadeOut|titleObj|titleRsc|titleText|toArray|toFixed|toLower|toString|toUpper|triggerActivated|triggerActivation|triggerArea|triggerAttachedVehicle|triggerAttachObject|triggerAttachVehicle|triggerDynamicSimulation|triggerStatements|triggerText|triggerTimeout|triggerTimeoutCurrent|triggerType|turretLocal|turretOwner|turretUnit|tvAdd|tvClear|tvCollapse|tvCollapseAll|tvCount|tvCurSel|tvData|tvDelete|tvExpand|tvExpandAll|tvPicture|tvPictureRight|tvSetColor|tvSetCurSel|tvSetData|tvSetPicture|tvSetPictureColor|tvSetPictureColorDisabled|tvSetPictureColorSelected|tvSetPictureRight|tvSetPictureRightColor|tvSetPictureRightColorDisabled|tvSetPictureRightColorSelected|tvSetSelectColor|tvSetText|tvSetTooltip|tvSetValue|tvSort|tvSortByValue|tvText|tvTooltip|tvValue|type|typeName|typeOf|UAVControl|uiNamespace|uiSleep|unassignCurator|unassignItem|unassignTeam|unassignVehicle|underwater|uniform|uniformContainer|uniformItems|uniformMagazines|unitAddons|unitAimPosition|unitAimPositionVisual|unitBackpack|unitIsUAV|unitPos|unitReady|unitRecoilCoefficient|units|unitsBelowHeight|unlinkItem|unlockAchievement|unregisterTask|updateDrawIcon|updateMenuItem|updateObjectTree|useAIOperMapObstructionTest|useAISteeringComponent|useAudioTimeForMoves|userInputDisabled|vectorAdd|vectorCos|vectorCrossProduct|vectorDiff|vectorDir|vectorDirVisual|vectorDistance|vectorDistanceSqr|vectorDotProduct|vectorFromTo|vectorMagnitude|vectorMagnitudeSqr|vectorModelToWorld|vectorModelToWorldVisual|vectorMultiply|vectorNormalized|vectorUp|vectorUpVisual|vectorWorldToModel|vectorWorldToModelVisual|vehicle|vehicleCargoEnabled|vehicleChat|vehicleRadio|vehicleReceiveRemoteTargets|vehicleReportOwnPosition|vehicleReportRemoteTargets|vehicles|vehicleVarName|velocity|velocityModelSpace|verifySignature|vest|vestContainer|vestItems|vestMagazines|viewDistance|visibleCompass|visibleGPS|visibleMap|visiblePosition|visiblePositionASL|visibleScoretable|visibleWatch|waitUntil|waves|waypointAttachedObject|waypointAttachedVehicle|waypointAttachObject|waypointAttachVehicle|waypointBehaviour|waypointCombatMode|waypointCompletionRadius|waypointDescription|waypointForceBehaviour|waypointFormation|waypointHousePosition|waypointLoiterRadius|waypointLoiterType|waypointName|waypointPosition|waypoints|waypointScript|waypointsEnabledUAV|waypointShow|waypointSpeed|waypointStatements|waypointTimeout|waypointTimeoutCurrent|waypointType|waypointVisible|weaponAccessories|weaponAccessoriesCargo|weaponCargo|weaponDirection|weaponInertia|weaponLowered|weapons|weaponsItems|weaponsItemsCargo|weaponState|weaponsTurret|weightRTD|west|WFSideText|wind|windDir|windRTD|windStr|wingsForcesRTD|worldName|worldSize|worldToModel|worldToModelVisual|worldToScreen)\\b/i,\n number:\n /(?:\\$|\\b0x)[\\da-f]+\\b|(?:\\B\\.\\d+|\\b\\d+(?:\\.\\d+)?)(?:e[+-]?\\d+)?\\b/i,\n operator: /##|>>|&&|\\|\\||[!=<>]=?|[-+*/%#^]|\\b(?:and|mod|not|or)\\b/i,\n 'magic-variable': {\n pattern:\n /\\b(?:this|thisList|thisTrigger|_exception|_fnc_scriptName|_fnc_scriptNameParent|_forEachIndex|_this|_thisEventHandler|_thisFSM|_thisScript|_x)\\b/i,\n alias: 'keyword'\n },\n constant: /\\bDIK(?:_[a-z\\d]+)+\\b/i\n })\n Prism.languages.insertBefore('sqf', 'string', {\n macro: {\n pattern: /(^[ \\t]*)#[a-z](?:[^\\r\\n\\\\]|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n greedy: true,\n alias: 'property',\n inside: {\n directive: {\n pattern: /#[a-z]+\\b/i,\n alias: 'keyword'\n },\n comment: Prism.languages.sqf.comment\n }\n }\n })\n delete Prism.languages.sqf['class-name']\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nsquirrel.displayName = 'squirrel'\nsquirrel.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function squirrel(Prism) {\n Prism.register(refractorClike)\n Prism.languages.squirrel = Prism.languages.extend('clike', {\n comment: [\n Prism.languages.clike['comment'][0],\n {\n pattern: /(^|[^\\\\:])(?:\\/\\/|#).*/,\n lookbehind: true,\n greedy: true\n }\n ],\n string: {\n pattern: /(^|[^\\\\\"'@])(?:@\"(?:[^\"]|\"\")*\"(?!\")|\"(?:[^\\\\\\r\\n\"]|\\\\.)*\")/,\n lookbehind: true,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:class|enum|extends|instanceof)\\s+)\\w+(?:\\.\\w+)*/,\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n },\n keyword:\n /\\b(?:__FILE__|__LINE__|base|break|case|catch|class|clone|const|constructor|continue|default|delete|else|enum|extends|for|foreach|function|if|in|instanceof|local|null|resume|return|static|switch|this|throw|try|typeof|while|yield)\\b/,\n number: /\\b(?:0x[0-9a-fA-F]+|\\d+(?:\\.(?:\\d+|[eE][+-]?\\d+))?)\\b/,\n operator: /\\+\\+|--|<=>|<[-<]|>>>?|&&?|\\|\\|?|[-+*/%!=<>]=?|[~^]|::?/,\n punctuation: /[(){}\\[\\],;.]/\n })\n Prism.languages.insertBefore('squirrel', 'string', {\n char: {\n pattern: /(^|[^\\\\\"'])'(?:[^\\\\']|\\\\(?:[xuU][0-9a-fA-F]{0,8}|[\\s\\S]))'/,\n lookbehind: true,\n greedy: true\n }\n })\n Prism.languages.insertBefore('squirrel', 'operator', {\n 'attribute-punctuation': {\n pattern: /<\\/|\\/>/,\n alias: 'important'\n },\n lambda: {\n pattern: /@(?=\\()/,\n alias: 'operator'\n }\n })\n}\n","// @ts-nocheck\nstan.displayName = 'stan'\nstan.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function stan(Prism) {\n ;(function (Prism) {\n // https://mc-stan.org/docs/2_28/reference-manual/bnf-grammars.html\n\n var higherOrderFunctions =\n /\\b(?:algebra_solver|algebra_solver_newton|integrate_1d|integrate_ode|integrate_ode_bdf|integrate_ode_rk45|map_rect|ode_(?:adams|bdf|ckrk|rk45)(?:_tol)?|ode_adjoint_tol_ctl|reduce_sum|reduce_sum_static)\\b/\n Prism.languages.stan = {\n comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/|#(?!include).*/,\n string: {\n // String literals can contain spaces and any printable ASCII characters except for \" and \\\n // https://mc-stan.org/docs/2_24/reference-manual/print-statements-section.html#string-literals\n pattern: /\"[\\x20\\x21\\x23-\\x5B\\x5D-\\x7E]*\"/,\n greedy: true\n },\n directive: {\n pattern: /^([ \\t]*)#include\\b.*/m,\n lookbehind: true,\n alias: 'property'\n },\n 'function-arg': {\n pattern: RegExp(\n '(' +\n higherOrderFunctions.source +\n /\\s*\\(\\s*/.source +\n ')' +\n /[a-zA-Z]\\w*/.source\n ),\n lookbehind: true,\n alias: 'function'\n },\n constraint: {\n pattern: /(\\b(?:int|matrix|real|row_vector|vector)\\s*)<[^<>]*>/,\n lookbehind: true,\n inside: {\n expression: {\n pattern: /(=\\s*)\\S(?:\\S|\\s+(?!\\s))*?(?=\\s*(?:>$|,\\s*\\w+\\s*=))/,\n lookbehind: true,\n inside: null // see below\n },\n\n property: /\\b[a-z]\\w*(?=\\s*=)/i,\n operator: /=/,\n punctuation: /^<|>$|,/\n }\n },\n keyword: [\n {\n pattern:\n /\\bdata(?=\\s*\\{)|\\b(?:functions|generated|model|parameters|quantities|transformed)\\b/,\n alias: 'program-block'\n },\n /\\b(?:array|break|cholesky_factor_corr|cholesky_factor_cov|complex|continue|corr_matrix|cov_matrix|data|else|for|if|in|increment_log_prob|int|matrix|ordered|positive_ordered|print|real|reject|return|row_vector|simplex|target|unit_vector|vector|void|while)\\b/,\n // these are functions that are known to take another function as their first argument.\n higherOrderFunctions\n ],\n function: /\\b[a-z]\\w*(?=\\s*\\()/i,\n number:\n /(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:E[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i,\n boolean: /\\b(?:false|true)\\b/,\n operator: /<-|\\.[*/]=?|\\|\\|?|&&|[!=<>+\\-*/]=?|['^%~?:]/,\n punctuation: /[()\\[\\]{},;]/\n }\n Prism.languages.stan.constraint.inside.expression.inside =\n Prism.languages.stan\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorJava from './java.js'\nimport refractorMata from './mata.js'\nimport refractorPython from './python.js'\nstata.displayName = 'stata'\nstata.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function stata(Prism) {\n Prism.register(refractorJava)\n Prism.register(refractorMata)\n Prism.register(refractorPython)\n // https://www.stata.com/manuals/u.pdf\n // https://www.stata.com/manuals/p.pdf\n\n Prism.languages.stata = {\n comment: [\n {\n pattern: /(^[ \\t]*)\\*.*/m,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|\\s)\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n lookbehind: true,\n greedy: true\n }\n ],\n 'string-literal': {\n pattern: /\"[^\"\\r\\n]*\"|[‘`']\".*?\"[’`']/,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /\\$\\{[^{}]*\\}|[‘`']\\w[^’`'\\r\\n]*[’`']/,\n inside: {\n punctuation: /^\\$\\{|\\}$/,\n expression: {\n pattern: /[\\s\\S]+/,\n inside: null // see below\n }\n }\n },\n\n string: /[\\s\\S]+/\n }\n },\n mata: {\n pattern: /(^[ \\t]*mata[ \\t]*:)[\\s\\S]+?(?=^end\\b)/m,\n lookbehind: true,\n greedy: true,\n alias: 'language-mata',\n inside: Prism.languages.mata\n },\n java: {\n pattern: /(^[ \\t]*java[ \\t]*:)[\\s\\S]+?(?=^end\\b)/m,\n lookbehind: true,\n greedy: true,\n alias: 'language-java',\n inside: Prism.languages.java\n },\n python: {\n pattern: /(^[ \\t]*python[ \\t]*:)[\\s\\S]+?(?=^end\\b)/m,\n lookbehind: true,\n greedy: true,\n alias: 'language-python',\n inside: Prism.languages.python\n },\n command: {\n pattern:\n /(^[ \\t]*(?:\\.[ \\t]+)?(?:(?:bayes|bootstrap|by|bysort|capture|collect|fmm|fp|frame|jackknife|mfp|mi|nestreg|noisily|permute|quietly|rolling|simulate|statsby|stepwise|svy|version|xi)\\b[^:\\r\\n]*:[ \\t]*|(?:capture|noisily|quietly|version)[ \\t]+)?)[a-zA-Z]\\w*/m,\n lookbehind: true,\n greedy: true,\n alias: 'keyword'\n },\n variable: /\\$\\w+|[‘`']\\w[^’`'\\r\\n]*[’`']/,\n keyword:\n /\\b(?:bayes|bootstrap|by|bysort|capture|clear|collect|fmm|fp|frame|if|in|jackknife|mi[ \\t]+estimate|mfp|nestreg|noisily|of|permute|quietly|rolling|simulate|sort|statsby|stepwise|svy|varlist|version|xi)\\b/,\n boolean: /\\b(?:off|on)\\b/,\n number: /\\b\\d+(?:\\.\\d+)?\\b|\\B\\.\\d+/,\n function: /\\b[a-z_]\\w*(?=\\()/i,\n operator: /\\+\\+|--|##?|[<>!=~]=?|[+\\-*^&|/]/,\n punctuation: /[(){}[\\],:]/\n }\n Prism.languages.stata[\n 'string-literal'\n ].inside.interpolation.inside.expression.inside = Prism.languages.stata\n}\n","// @ts-nocheck\niecst.displayName = 'iecst'\niecst.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function iecst(Prism) {\n Prism.languages.iecst = {\n comment: [\n {\n pattern:\n /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$)|\\(\\*[\\s\\S]*?(?:\\*\\)|$)|\\{[\\s\\S]*?(?:\\}|$))/,\n lookbehind: true,\n greedy: true\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n string: {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n keyword: [\n /\\b(?:END_)?(?:PROGRAM|CONFIGURATION|INTERFACE|FUNCTION_BLOCK|FUNCTION|ACTION|TRANSITION|TYPE|STRUCT|(?:INITIAL_)?STEP|NAMESPACE|LIBRARY|CHANNEL|FOLDER|RESOURCE|VAR_(?:ACCESS|CONFIG|EXTERNAL|GLOBAL|INPUT|IN_OUT|OUTPUT|TEMP)|VAR|METHOD|PROPERTY)\\b/i,\n /\\b(?:AT|BY|(?:END_)?(?:CASE|FOR|IF|REPEAT|WHILE)|CONSTANT|CONTINUE|DO|ELSE|ELSIF|EXIT|EXTENDS|FROM|GET|GOTO|IMPLEMENTS|JMP|NON_RETAIN|OF|PRIVATE|PROTECTED|PUBLIC|RETAIN|RETURN|SET|TASK|THEN|TO|UNTIL|USING|WITH|__CATCH|__ENDTRY|__FINALLY|__TRY)\\b/\n ],\n 'class-name':\n /\\b(?:ANY|ARRAY|BOOL|BYTE|U?(?:D|L|S)?INT|(?:D|L)?WORD|DATE(?:_AND_TIME)?|DT|L?REAL|POINTER|STRING|TIME(?:_OF_DAY)?|TOD)\\b/,\n address: {\n pattern: /%[IQM][XBWDL][\\d.]*|%[IQ][\\d.]*/,\n alias: 'symbol'\n },\n number:\n /\\b(?:16#[\\da-f]+|2#[01_]+|0x[\\da-f]+)\\b|\\b(?:D|DT|T|TOD)#[\\d_shmd:]*|\\b[A-Z]*#[\\d.,_]*|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n boolean: /\\b(?:FALSE|NULL|TRUE)\\b/,\n operator:\n /S?R?:?=>?|&&?|\\*\\*?|<[=>]?|>=?|[-:^/+#]|\\b(?:AND|EQ|EXPT|GE|GT|LE|LT|MOD|NE|NOT|OR|XOR)\\b/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n punctuation: /[()[\\].,;]/\n }\n}\n","// @ts-nocheck\nsupercollider.displayName = 'supercollider'\nsupercollider.aliases = ['sclang']\n\n/** @type {import('../core.js').Syntax} */\nexport default function supercollider(Prism) {\n Prism.languages.supercollider = {\n comment: {\n pattern:\n /\\/\\/.*|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\//,\n greedy: true\n },\n string: {\n pattern: /(^|[^\\\\])\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"/,\n lookbehind: true,\n greedy: true\n },\n char: {\n pattern: /\\$(?:[^\\\\\\r\\n]|\\\\.)/,\n greedy: true\n },\n symbol: {\n pattern: /(^|[^\\\\])'(?:[^'\\\\]|\\\\[\\s\\S])*'|\\\\\\w+/,\n lookbehind: true,\n greedy: true\n },\n keyword: /\\b(?:_|arg|classvar|const|nil|var|while)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n label: {\n pattern: /\\b[a-z_]\\w*(?=\\s*:)/,\n alias: 'property'\n },\n number:\n /\\b(?:inf|pi|0x[0-9a-fA-F]+|\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(?:pi)?|\\d+r[0-9a-zA-Z]+(?:\\.[0-9a-zA-Z]+)?|\\d+[sb]{1,4}\\d*)\\b/,\n 'class-name': /\\b[A-Z]\\w*\\b/,\n operator:\n /\\.{2,3}|#(?![[{])|&&|[!=]==?|\\+>>|\\+{1,3}|-[->]|=>|>>|\\?\\?|@\\|?@|\\|(?:@|[!=]=)?\\||!\\?|<[!=>]|\\*{1,2}|<{2,3}\\*?|[-!%&/<>?@|=`]/,\n punctuation: /[{}()[\\].:,;]|#[[{]/\n }\n Prism.languages.sclang = Prism.languages.supercollider\n}\n","// @ts-nocheck\nsystemd.displayName = 'systemd'\nsystemd.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function systemd(Prism) {\n // https://www.freedesktop.org/software/systemd/man/systemd.syntax.html\n\n ;(function (Prism) {\n var comment = {\n pattern: /^[;#].*/m,\n greedy: true\n }\n var quotesSource = /\"(?:[^\\r\\n\"\\\\]|\\\\(?:[^\\r]|\\r\\n?))*\"(?!\\S)/.source\n Prism.languages.systemd = {\n comment: comment,\n section: {\n pattern: /^\\[[^\\n\\r\\[\\]]*\\](?=[ \\t]*$)/m,\n greedy: true,\n inside: {\n punctuation: /^\\[|\\]$/,\n 'section-name': {\n pattern: /[\\s\\S]+/,\n alias: 'selector'\n }\n }\n },\n key: {\n pattern: /^[^\\s=]+(?=[ \\t]*=)/m,\n greedy: true,\n alias: 'attr-name'\n },\n value: {\n // This pattern is quite complex because of two properties:\n // 1) Quotes (strings) must be preceded by a space. Since we can't use lookbehinds, we have to \"resolve\"\n // the lookbehind. You will see this in the main loop where spaces are handled separately.\n // 2) Line continuations.\n // After line continuations, empty lines and comments are ignored so we have to consume them.\n pattern: RegExp(\n /(=[ \\t]*(?!\\s))/.source +\n // the value either starts with quotes or not\n '(?:' +\n quotesSource +\n '|(?=[^\"\\r\\n]))' +\n // main loop\n '(?:' +\n (/[^\\s\\\\]/.source +\n // handle spaces separately because of quotes\n '|' +\n '[ \\t]+(?:(?![ \\t\"])|' +\n quotesSource +\n ')' +\n // line continuation\n '|' +\n /\\\\[\\r\\n]+(?:[#;].*[\\r\\n]+)*(?![#;])/.source) +\n ')*'\n ),\n lookbehind: true,\n greedy: true,\n alias: 'attr-value',\n inside: {\n comment: comment,\n quoted: {\n pattern: RegExp(/(^|\\s)/.source + quotesSource),\n lookbehind: true,\n greedy: true\n },\n punctuation: /\\\\$/m,\n boolean: {\n pattern: /^(?:false|no|off|on|true|yes)$/,\n greedy: true\n }\n }\n },\n punctuation: /=/\n }\n })(Prism)\n}\n","// @ts-nocheck\nt4Templating.displayName = 't4-templating'\nt4Templating.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function t4Templating(Prism) {\n ;(function (Prism) {\n function createBlock(prefix, inside, contentAlias) {\n return {\n pattern: RegExp('<#' + prefix + '[\\\\s\\\\S]*?#>'),\n alias: 'block',\n inside: {\n delimiter: {\n pattern: RegExp('^<#' + prefix + '|#>$'),\n alias: 'important'\n },\n content: {\n pattern: /[\\s\\S]+/,\n inside: inside,\n alias: contentAlias\n }\n }\n }\n }\n function createT4(insideLang) {\n var grammar = Prism.languages[insideLang]\n var className = 'language-' + insideLang\n return {\n block: {\n pattern: /<#[\\s\\S]+?#>/,\n inside: {\n directive: createBlock('@', {\n 'attr-value': {\n pattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/,\n inside: {\n punctuation: /^=|^[\"']|[\"']$/\n }\n },\n keyword: /\\b\\w+(?=\\s)/,\n 'attr-name': /\\b\\w+/\n }),\n expression: createBlock('=', grammar, className),\n 'class-feature': createBlock('\\\\+', grammar, className),\n standard: createBlock('', grammar, className)\n }\n }\n }\n }\n Prism.languages['t4-templating'] = Object.defineProperty({}, 'createT4', {\n value: createT4\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorCsharp from './csharp.js'\nimport refractorT4Templating from './t4-templating.js'\nt4Cs.displayName = 't4-cs'\nt4Cs.aliases = ['t4']\n\n/** @type {import('../core.js').Syntax} */\nexport default function t4Cs(Prism) {\n Prism.register(refractorCsharp)\n Prism.register(refractorT4Templating)\n Prism.languages.t4 = Prism.languages['t4-cs'] =\n Prism.languages['t4-templating'].createT4('csharp')\n}\n","// @ts-nocheck\nimport refractorT4Templating from './t4-templating.js'\nimport refractorVbnet from './vbnet.js'\nt4Vb.displayName = 't4-vb'\nt4Vb.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function t4Vb(Prism) {\n Prism.register(refractorT4Templating)\n Prism.register(refractorVbnet)\n Prism.languages['t4-vb'] = Prism.languages['t4-templating'].createT4('vbnet')\n}\n","// @ts-nocheck\nimport refractorYaml from './yaml.js'\ntap.displayName = 'tap'\ntap.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function tap(Prism) {\n Prism.register(refractorYaml)\n // https://en.wikipedia.org/wiki/Test_Anything_Protocol\n\n Prism.languages.tap = {\n fail: /not ok[^#{\\n\\r]*/,\n pass: /ok[^#{\\n\\r]*/,\n pragma: /pragma [+-][a-z]+/,\n bailout: /bail out!.*/i,\n version: /TAP version \\d+/i,\n plan: /\\b\\d+\\.\\.\\d+(?: +#.*)?/,\n subtest: {\n pattern: /# Subtest(?:: .*)?/,\n greedy: true\n },\n punctuation: /[{}]/,\n directive: /#.*/,\n yamlish: {\n pattern: /(^[ \\t]*)---[\\s\\S]*?[\\r\\n][ \\t]*\\.\\.\\.$/m,\n lookbehind: true,\n inside: Prism.languages.yaml,\n alias: 'language-yaml'\n }\n }\n}\n","// @ts-nocheck\ntcl.displayName = 'tcl'\ntcl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function tcl(Prism) {\n Prism.languages.tcl = {\n comment: {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true\n },\n string: {\n pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"/,\n greedy: true\n },\n variable: [\n {\n pattern: /(\\$)(?:::)?(?:[a-zA-Z0-9]+::)*\\w+/,\n lookbehind: true\n },\n {\n pattern: /(\\$)\\{[^}]+\\}/,\n lookbehind: true\n },\n {\n pattern: /(^[\\t ]*set[ \\t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\\w+/m,\n lookbehind: true\n }\n ],\n function: {\n pattern: /(^[\\t ]*proc[ \\t]+)\\S+/m,\n lookbehind: true\n },\n builtin: [\n {\n pattern:\n /(^[\\t ]*)(?:break|class|continue|error|eval|exit|for|foreach|if|proc|return|switch|while)\\b/m,\n lookbehind: true\n },\n /\\b(?:else|elseif)\\b/\n ],\n scope: {\n pattern: /(^[\\t ]*)(?:global|upvar|variable)\\b/m,\n lookbehind: true,\n alias: 'constant'\n },\n keyword: {\n pattern:\n /(^[\\t ]*|\\[)(?:Safe_Base|Tcl|after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|scan|seek|set|socket|source|split|string|subst|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|test|vars|wordBreak(?:After|Before))|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\\b/m,\n lookbehind: true\n },\n operator:\n /!=?|\\*\\*?|==|&&?|\\|\\|?|<[=<]?|>[=>]?|[-+~\\/%?^]|\\b(?:eq|in|ne|ni)\\b/,\n punctuation: /[{}()\\[\\]]/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nimport refractorMarkupTemplating from './markup-templating.js'\ntt2.displayName = 'tt2'\ntt2.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function tt2(Prism) {\n Prism.register(refractorClike)\n Prism.register(refractorMarkupTemplating)\n ;(function (Prism) {\n Prism.languages.tt2 = Prism.languages.extend('clike', {\n comment: /#.*|\\[%#[\\s\\S]*?%\\]/,\n keyword:\n /\\b(?:BLOCK|CALL|CASE|CATCH|CLEAR|DEBUG|DEFAULT|ELSE|ELSIF|END|FILTER|FINAL|FOREACH|GET|IF|IN|INCLUDE|INSERT|LAST|MACRO|META|NEXT|PERL|PROCESS|RAWPERL|RETURN|SET|STOP|SWITCH|TAGS|THROW|TRY|UNLESS|USE|WHILE|WRAPPER)\\b/,\n punctuation: /[[\\]{},()]/\n })\n Prism.languages.insertBefore('tt2', 'number', {\n operator: /=[>=]?|!=?|<=?|>=?|&&|\\|\\|?|\\b(?:and|not|or)\\b/,\n variable: {\n pattern: /\\b[a-z]\\w*(?:\\s*\\.\\s*(?:\\d+|\\$?[a-z]\\w*))*\\b/i\n }\n })\n Prism.languages.insertBefore('tt2', 'keyword', {\n delimiter: {\n pattern: /^(?:\\[%|%%)-?|-?%\\]$/,\n alias: 'punctuation'\n }\n })\n Prism.languages.insertBefore('tt2', 'string', {\n 'single-quoted-string': {\n pattern: /'[^\\\\']*(?:\\\\[\\s\\S][^\\\\']*)*'/,\n greedy: true,\n alias: 'string'\n },\n 'double-quoted-string': {\n pattern: /\"[^\\\\\"]*(?:\\\\[\\s\\S][^\\\\\"]*)*\"/,\n greedy: true,\n alias: 'string',\n inside: {\n variable: {\n pattern: /\\$(?:[a-z]\\w*(?:\\.(?:\\d+|\\$?[a-z]\\w*))*)/i\n }\n }\n }\n })\n\n // The different types of TT2 strings \"replace\" the C-like standard string\n delete Prism.languages.tt2.string\n Prism.hooks.add('before-tokenize', function (env) {\n var tt2Pattern = /\\[%[\\s\\S]+?%\\]/g\n Prism.languages['markup-templating'].buildPlaceholders(\n env,\n 'tt2',\n tt2Pattern\n )\n })\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'tt2')\n })\n })(Prism)\n}\n","// @ts-nocheck\ntoml.displayName = 'toml'\ntoml.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function toml(Prism) {\n ;(function (Prism) {\n var key = /(?:[\\w-]+|'[^'\\n\\r]*'|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")/.source\n\n /**\n * @param {string} pattern\n */\n function insertKey(pattern) {\n return pattern.replace(/__/g, function () {\n return key\n })\n }\n Prism.languages.toml = {\n comment: {\n pattern: /#.*/,\n greedy: true\n },\n table: {\n pattern: RegExp(\n insertKey(\n /(^[\\t ]*\\[\\s*(?:\\[\\s*)?)__(?:\\s*\\.\\s*__)*(?=\\s*\\])/.source\n ),\n 'm'\n ),\n lookbehind: true,\n greedy: true,\n alias: 'class-name'\n },\n key: {\n pattern: RegExp(\n insertKey(/(^[\\t ]*|[{,]\\s*)__(?:\\s*\\.\\s*__)*(?=\\s*=)/.source),\n 'm'\n ),\n lookbehind: true,\n greedy: true,\n alias: 'property'\n },\n string: {\n pattern:\n /\"\"\"(?:\\\\[\\s\\S]|[^\\\\])*?\"\"\"|'''[\\s\\S]*?'''|'[^'\\n\\r]*'|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n date: [\n {\n // Offset Date-Time, Local Date-Time, Local Date\n pattern:\n /\\b\\d{4}-\\d{2}-\\d{2}(?:[T\\s]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?)?\\b/i,\n alias: 'number'\n },\n {\n // Local Time\n pattern: /\\b\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?\\b/,\n alias: 'number'\n }\n ],\n number:\n /(?:\\b0(?:x[\\da-zA-Z]+(?:_[\\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\\b|[-+]?\\b\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?\\b|[-+]?\\b(?:inf|nan)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n punctuation: /[.,=[\\]{}]/\n }\n })(Prism)\n}\n","// @ts-nocheck\ntremor.displayName = 'tremor'\ntremor.aliases = ['trickle', 'troy']\n\n/** @type {import('../core.js').Syntax} */\nexport default function tremor(Prism) {\n ;(function (Prism) {\n Prism.languages.tremor = {\n comment: {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n 'interpolated-string': null,\n // see below\n extractor: {\n pattern: /\\b[a-z_]\\w*\\|(?:[^\\r\\n\\\\|]|\\\\(?:\\r\\n|[\\s\\S]))*\\|/i,\n greedy: true,\n inside: {\n regex: {\n pattern: /(^re)\\|[\\s\\S]+/,\n lookbehind: true\n },\n function: /^\\w+/,\n value: /\\|[\\s\\S]+/\n }\n },\n identifier: {\n pattern: /`[^`]*`/,\n greedy: true\n },\n function: /\\b[a-z_]\\w*(?=\\s*(?:::\\s*<|\\())\\b/,\n keyword:\n /\\b(?:args|as|by|case|config|connect|connector|const|copy|create|default|define|deploy|drop|each|emit|end|erase|event|flow|fn|for|from|group|having|insert|into|intrinsic|let|links|match|merge|mod|move|of|operator|patch|pipeline|recur|script|select|set|sliding|state|stream|to|tumbling|update|use|when|where|window|with)\\b/,\n boolean: /\\b(?:false|null|true)\\b/i,\n number:\n /\\b(?:0b[01_]*|0x[0-9a-fA-F_]*|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[Ee][+-]?[\\d_]+)?)\\b/,\n 'pattern-punctuation': {\n pattern: /%(?=[({[])/,\n alias: 'punctuation'\n },\n operator:\n /[-+*\\/%~!^]=?|=[=>]?|&[&=]?|\\|[|=]?|<<?=?|>>?>?=?|(?:absent|and|not|or|present|xor)\\b/,\n punctuation: /::|[;\\[\\]()\\{\\},.:]/\n }\n var interpolationPattern =\n /#\\{(?:[^\"{}]|\\{[^{}]*\\}|\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\")*\\}/.source\n Prism.languages.tremor['interpolated-string'] = {\n pattern: RegExp(\n /(^|[^\\\\])/.source +\n '(?:' +\n '\"\"\"(?:' +\n /[^\"\\\\#]|\\\\[\\s\\S]|\"(?!\"\")|#(?!\\{)/.source +\n '|' +\n interpolationPattern +\n ')*\"\"\"' +\n '|' +\n '\"(?:' +\n /[^\"\\\\\\r\\n#]|\\\\(?:\\r\\n|[\\s\\S])|#(?!\\{)/.source +\n '|' +\n interpolationPattern +\n ')*\"' +\n ')'\n ),\n lookbehind: true,\n greedy: true,\n inside: {\n interpolation: {\n pattern: RegExp(interpolationPattern),\n inside: {\n punctuation: /^#\\{|\\}$/,\n expression: {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages.tremor\n }\n }\n },\n string: /[\\s\\S]+/\n }\n }\n Prism.languages.troy = Prism.languages['tremor']\n Prism.languages.trickle = Prism.languages['tremor']\n })(Prism)\n}\n","// @ts-nocheck\ntyposcript.displayName = 'typoscript'\ntyposcript.aliases = ['tsconfig']\n\n/** @type {import('../core.js').Syntax} */\nexport default function typoscript(Prism) {\n ;(function (Prism) {\n var keywords =\n /\\b(?:ACT|ACTIFSUB|CARRAY|CASE|CLEARGIF|COA|COA_INT|CONSTANTS|CONTENT|CUR|EDITPANEL|EFFECT|EXT|FILE|FLUIDTEMPLATE|FORM|FRAME|FRAMESET|GIFBUILDER|GMENU|GMENU_FOLDOUT|GMENU_LAYERS|GP|HMENU|HRULER|HTML|IENV|IFSUB|IMAGE|IMGMENU|IMGMENUITEM|IMGTEXT|IMG_RESOURCE|INCLUDE_TYPOSCRIPT|JSMENU|JSMENUITEM|LLL|LOAD_REGISTER|NO|PAGE|RECORDS|RESTORE_REGISTER|TEMPLATE|TEXT|TMENU|TMENUITEM|TMENU_LAYERS|USER|USER_INT|_GIFBUILDER|global|globalString|globalVar)\\b/\n Prism.languages.typoscript = {\n comment: [\n {\n // multiline comments /* */\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true\n },\n {\n // double-slash comments - ignored when backslashes or colon is found in front\n // also ignored whenever directly after an equal-sign, because it would probably be an url without protocol\n pattern: /(^|[^\\\\:= \\t]|(?:^|[^= \\t])[ \\t]+)\\/\\/.*/,\n lookbehind: true,\n greedy: true\n },\n {\n // hash comments - ignored when leading quote is found for hex colors in strings\n pattern: /(^|[^\"'])#.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n function: [\n {\n // old include style\n pattern:\n /<INCLUDE_TYPOSCRIPT:\\s*source\\s*=\\s*(?:\"[^\"\\r\\n]*\"|'[^'\\r\\n]*')\\s*>/,\n inside: {\n string: {\n pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n inside: {\n keyword: keywords\n }\n },\n keyword: {\n pattern: /INCLUDE_TYPOSCRIPT/\n }\n }\n },\n {\n // new include style\n pattern: /@import\\s*(?:\"[^\"\\r\\n]*\"|'[^'\\r\\n]*')/,\n inside: {\n string: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/\n }\n }\n ],\n string: {\n pattern: /^([^=]*=[< ]?)(?:(?!\\]\\n).)*/,\n lookbehind: true,\n inside: {\n function: /\\{\\$.*\\}/,\n // constants include\n keyword: keywords,\n number: /^\\d+$/,\n punctuation: /[,|:]/\n }\n },\n keyword: keywords,\n number: {\n // special highlighting for indexes of arrays in tags\n pattern: /\\b\\d+\\s*[.{=]/,\n inside: {\n operator: /[.{=]/\n }\n },\n tag: {\n pattern: /\\.?[-\\w\\\\]+\\.?/,\n inside: {\n punctuation: /\\./\n }\n },\n punctuation: /[{}[\\];(),.:|]/,\n operator: /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/\n }\n Prism.languages.tsconfig = Prism.languages.typoscript\n })(Prism)\n}\n","// @ts-nocheck\nunrealscript.displayName = 'unrealscript'\nunrealscript.aliases = ['uc', 'uscript']\n\n/** @type {import('../core.js').Syntax} */\nexport default function unrealscript(Prism) {\n Prism.languages.unrealscript = {\n comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n string: {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n category: {\n pattern:\n /(\\b(?:(?:autoexpand|hide|show)categories|var)\\s*\\()[^()]+(?=\\))/,\n lookbehind: true,\n greedy: true,\n alias: 'property'\n },\n metadata: {\n pattern: /(\\w\\s*)<\\s*\\w+\\s*=[^<>|=\\r\\n]+(?:\\|\\s*\\w+\\s*=[^<>|=\\r\\n]+)*>/,\n lookbehind: true,\n greedy: true,\n inside: {\n property: /\\b\\w+(?=\\s*=)/,\n operator: /=/,\n punctuation: /[<>|]/\n }\n },\n macro: {\n pattern: /`\\w+/,\n alias: 'property'\n },\n 'class-name': {\n pattern:\n /(\\b(?:class|enum|extends|interface|state(?:\\(\\))?|struct|within)\\s+)\\w+/,\n lookbehind: true\n },\n keyword:\n /\\b(?:abstract|actor|array|auto|autoexpandcategories|bool|break|byte|case|class|classgroup|client|coerce|collapsecategories|config|const|continue|default|defaultproperties|delegate|dependson|deprecated|do|dontcollapsecategories|editconst|editinlinenew|else|enum|event|exec|export|extends|final|float|for|forcescriptorder|foreach|function|goto|guid|hidecategories|hidedropdown|if|ignores|implements|inherits|input|int|interface|iterator|latent|local|material|name|native|nativereplication|noexport|nontransient|noteditinlinenew|notplaceable|operator|optional|out|pawn|perobjectconfig|perobjectlocalized|placeable|postoperator|preoperator|private|protected|reliable|replication|return|server|showcategories|simulated|singular|state|static|string|struct|structdefault|structdefaultproperties|switch|texture|transient|travel|unreliable|until|var|vector|while|within)\\b/,\n function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n boolean: /\\b(?:false|true)\\b/,\n number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n // https://docs.unrealengine.com/udk/Three/UnrealScriptExpressions.html\n operator:\n />>|<<|--|\\+\\+|\\*\\*|[-+*/~!=<>$@]=?|&&?|\\|\\|?|\\^\\^?|[?:%]|\\b(?:ClockwiseFrom|Cross|Dot)\\b/,\n punctuation: /[()[\\]{};,.]/\n }\n Prism.languages.uc = Prism.languages.uscript = Prism.languages.unrealscript\n}\n","// @ts-nocheck\nuorazor.displayName = 'uorazor'\nuorazor.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function uorazor(Prism) {\n Prism.languages.uorazor = {\n 'comment-hash': {\n pattern: /#.*/,\n alias: 'comment',\n greedy: true\n },\n 'comment-slash': {\n pattern: /\\/\\/.*/,\n alias: 'comment',\n greedy: true\n },\n string: {\n pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n inside: {\n punctuation: /^['\"]|['\"]$/\n },\n greedy: true\n },\n 'source-layers': {\n pattern:\n /\\b(?:arms|backpack|blue|bracelet|cancel|clear|cloak|criminal|earrings|enemy|facialhair|friend|friendly|gloves|gray|grey|ground|hair|head|innerlegs|innertorso|innocent|lefthand|middletorso|murderer|neck|nonfriendly|onehandedsecondary|outerlegs|outertorso|pants|red|righthand|ring|self|shirt|shoes|talisman|waist)\\b/i,\n alias: 'function'\n },\n 'source-commands': {\n pattern:\n /\\b(?:alliance|attack|cast|clearall|clearignore|clearjournal|clearlist|clearsysmsg|createlist|createtimer|dclick|dclicktype|dclickvar|dress|dressconfig|drop|droprelloc|emote|getlabel|guild|gumpclose|gumpresponse|hotkey|ignore|lasttarget|lift|lifttype|menu|menuresponse|msg|org|organize|organizer|overhead|pause|poplist|potion|promptresponse|pushlist|removelist|removetimer|rename|restock|say|scav|scavenger|script|setability|setlasttarget|setskill|settimer|setvar|sysmsg|target|targetloc|targetrelloc|targettype|undress|unignore|unsetvar|useobject|useonce|useskill|usetype|virtue|wait|waitforgump|waitformenu|waitforprompt|waitforstat|waitforsysmsg|waitfortarget|walk|wfsysmsg|wft|whisper|yell)\\b/,\n alias: 'function'\n },\n 'tag-name': {\n pattern: /(^\\{%-?\\s*)\\w+/,\n lookbehind: true,\n alias: 'keyword'\n },\n delimiter: {\n pattern: /^\\{[{%]-?|-?[%}]\\}$/,\n alias: 'punctuation'\n },\n function:\n /\\b(?:atlist|close|closest|count|counter|counttype|dead|dex|diffhits|diffmana|diffstam|diffweight|find|findbuff|finddebuff|findlayer|findtype|findtypelist|followers|gumpexists|hidden|hits|hp|hue|human|humanoid|ingump|inlist|insysmessage|insysmsg|int|invul|lhandempty|list|listexists|mana|maxhits|maxhp|maxmana|maxstam|maxweight|monster|mounted|name|next|noto|paralyzed|poisoned|position|prev|previous|queued|rand|random|rhandempty|skill|stam|str|targetexists|timer|timerexists|varexist|warmode|weight)\\b/,\n keyword:\n /\\b(?:and|as|break|continue|else|elseif|endfor|endif|endwhile|for|if|loop|not|or|replay|stop|while)\\b/,\n boolean: /\\b(?:false|null|true)\\b/,\n number: /\\b0x[\\dA-Fa-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][-+]?\\d+)?/,\n operator: [\n {\n pattern:\n /(\\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\\s)/,\n lookbehind: true\n },\n /[=<>]=?|!=|\\*\\*?|\\/\\/?|\\?:?|[-+~%|]/\n ],\n punctuation: /[()\\[\\]{}:.,]/\n }\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nv.displayName = 'v'\nv.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function v(Prism) {\n Prism.register(refractorClike)\n ;(function (Prism) {\n var interpolationExpr = {\n pattern: /[\\s\\S]+/,\n inside: null\n }\n Prism.languages.v = Prism.languages.extend('clike', {\n string: {\n pattern: /r?([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n alias: 'quoted-string',\n greedy: true,\n inside: {\n interpolation: {\n pattern:\n /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:\\{[^{}]*\\}|\\w+(?:\\.\\w+(?:\\([^\\(\\)]*\\))?|\\[[^\\[\\]]+\\])*)/,\n lookbehind: true,\n inside: {\n 'interpolation-variable': {\n pattern: /^\\$\\w[\\s\\S]*$/,\n alias: 'variable'\n },\n 'interpolation-punctuation': {\n pattern: /^\\$\\{|\\}$/,\n alias: 'punctuation'\n },\n 'interpolation-expression': interpolationExpr\n }\n }\n }\n },\n 'class-name': {\n pattern: /(\\b(?:enum|interface|struct|type)\\s+)(?:C\\.)?\\w+/,\n lookbehind: true\n },\n keyword:\n /(?:\\b(?:__global|as|asm|assert|atomic|break|chan|const|continue|defer|else|embed|enum|fn|for|go(?:to)?|if|import|in|interface|is|lock|match|module|mut|none|or|pub|return|rlock|select|shared|sizeof|static|struct|type(?:of)?|union|unsafe)|\\$(?:else|for|if)|#(?:flag|include))\\b/,\n number:\n /\\b(?:0x[a-f\\d]+(?:_[a-f\\d]+)*|0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?)\\b/i,\n operator:\n /~|\\?|[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\.?/,\n builtin:\n /\\b(?:any(?:_float|_int)?|bool|byte(?:ptr)?|charptr|f(?:32|64)|i(?:8|16|64|128|nt)|rune|size_t|string|u(?:16|32|64|128)|voidptr)\\b/\n })\n interpolationExpr.inside = Prism.languages.v\n Prism.languages.insertBefore('v', 'string', {\n char: {\n pattern: /`(?:\\\\`|\\\\?[^`]{1,2})`/,\n // using {1,2} instead of `u` flag for compatibility\n alias: 'rune'\n }\n })\n Prism.languages.insertBefore('v', 'operator', {\n attribute: {\n pattern:\n /(^[\\t ]*)\\[(?:deprecated|direct_array_access|flag|inline|live|ref_only|typedef|unsafe_fn|windows_stdcall)\\]/m,\n lookbehind: true,\n alias: 'annotation',\n inside: {\n punctuation: /[\\[\\]]/,\n keyword: /\\w+/\n }\n },\n generic: {\n pattern: /<\\w+>(?=\\s*[\\)\\{])/,\n inside: {\n punctuation: /[<>]/,\n 'class-name': /\\w+/\n }\n }\n })\n Prism.languages.insertBefore('v', 'function', {\n 'generic-function': {\n // e.g. foo<T>( ...\n pattern: /\\b\\w+\\s*<\\w+>(?=\\()/,\n inside: {\n function: /^\\w+/,\n generic: {\n pattern: /<\\w+>/,\n inside: Prism.languages.v.generic.inside\n }\n }\n }\n })\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorClike from './clike.js'\nvala.displayName = 'vala'\nvala.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function vala(Prism) {\n Prism.register(refractorClike)\n Prism.languages.vala = Prism.languages.extend('clike', {\n // Classes copied from prism-csharp\n 'class-name': [\n {\n // (Foo bar, Bar baz)\n pattern: /\\b[A-Z]\\w*(?:\\.\\w+)*\\b(?=(?:\\?\\s+|\\*?\\s+\\*?)\\w)/,\n inside: {\n punctuation: /\\./\n }\n },\n {\n // [Foo]\n pattern: /(\\[)[A-Z]\\w*(?:\\.\\w+)*\\b/,\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n },\n {\n // class Foo : Bar\n pattern:\n /(\\b(?:class|interface)\\s+[A-Z]\\w*(?:\\.\\w+)*\\s*:\\s*)[A-Z]\\w*(?:\\.\\w+)*\\b/,\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n },\n {\n // class Foo\n pattern:\n /((?:\\b(?:class|enum|interface|new|struct)\\s+)|(?:catch\\s+\\())[A-Z]\\w*(?:\\.\\w+)*\\b/,\n lookbehind: true,\n inside: {\n punctuation: /\\./\n }\n }\n ],\n keyword:\n /\\b(?:abstract|as|assert|async|base|bool|break|case|catch|char|class|const|construct|continue|default|delegate|delete|do|double|dynamic|else|ensures|enum|errordomain|extern|finally|float|for|foreach|get|if|in|inline|int|int16|int32|int64|int8|interface|internal|is|lock|long|namespace|new|null|out|override|owned|params|private|protected|public|ref|requires|return|set|short|signal|sizeof|size_t|ssize_t|static|string|struct|switch|this|throw|throws|try|typeof|uchar|uint|uint16|uint32|uint64|uint8|ulong|unichar|unowned|ushort|using|value|var|virtual|void|volatile|weak|while|yield)\\b/i,\n function: /\\b\\w+(?=\\s*\\()/,\n number:\n /(?:\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)(?:f|u?l?)?/i,\n operator:\n /\\+\\+|--|&&|\\|\\||<<=?|>>=?|=>|->|~|[+\\-*\\/%&^|=!<>]=?|\\?\\??|\\.\\.\\./,\n punctuation: /[{}[\\];(),.:]/,\n constant: /\\b[A-Z0-9_]+\\b/\n })\n Prism.languages.insertBefore('vala', 'string', {\n 'raw-string': {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: 'string'\n },\n 'template-string': {\n pattern: /@\"[\\s\\S]*?\"/,\n greedy: true,\n inside: {\n interpolation: {\n pattern: /\\$(?:\\([^)]*\\)|[a-zA-Z]\\w*)/,\n inside: {\n delimiter: {\n pattern: /^\\$\\(?|\\)$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.vala\n }\n },\n string: /[\\s\\S]+/\n }\n }\n })\n Prism.languages.insertBefore('vala', 'keyword', {\n regex: {\n pattern:\n /\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[imsx]{0,4}(?=\\s*(?:$|[\\r\\n,.;})\\]]))/,\n greedy: true,\n inside: {\n 'regex-source': {\n pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n lookbehind: true,\n alias: 'language-regex',\n inside: Prism.languages.regex\n },\n 'regex-delimiter': /^\\//,\n 'regex-flags': /^[a-z]+$/\n }\n }\n })\n}\n","// @ts-nocheck\nimport refractorMarkup from './markup.js'\nvelocity.displayName = 'velocity'\nvelocity.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function velocity(Prism) {\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n Prism.languages.velocity = Prism.languages.extend('markup', {})\n var velocity = {\n variable: {\n pattern:\n /(^|[^\\\\](?:\\\\\\\\)*)\\$!?(?:[a-z][\\w-]*(?:\\([^)]*\\))?(?:\\.[a-z][\\w-]*(?:\\([^)]*\\))?|\\[[^\\]]+\\])*|\\{[^}]+\\})/i,\n lookbehind: true,\n inside: {} // See below\n },\n\n string: {\n pattern: /\"[^\"]*\"|'[^']*'/,\n greedy: true\n },\n number: /\\b\\d+\\b/,\n boolean: /\\b(?:false|true)\\b/,\n operator:\n /[=!<>]=?|[+*/%-]|&&|\\|\\||\\.\\.|\\b(?:eq|g[et]|l[et]|n(?:e|ot))\\b/,\n punctuation: /[(){}[\\]:,.]/\n }\n velocity.variable.inside = {\n string: velocity['string'],\n function: {\n pattern: /([^\\w-])[a-z][\\w-]*(?=\\()/,\n lookbehind: true\n },\n number: velocity['number'],\n boolean: velocity['boolean'],\n punctuation: velocity['punctuation']\n }\n Prism.languages.insertBefore('velocity', 'comment', {\n unparsed: {\n pattern: /(^|[^\\\\])#\\[\\[[\\s\\S]*?\\]\\]#/,\n lookbehind: true,\n greedy: true,\n inside: {\n punctuation: /^#\\[\\[|\\]\\]#$/\n }\n },\n 'velocity-comment': [\n {\n pattern: /(^|[^\\\\])#\\*[\\s\\S]*?\\*#/,\n lookbehind: true,\n greedy: true,\n alias: 'comment'\n },\n {\n pattern: /(^|[^\\\\])##.*/,\n lookbehind: true,\n greedy: true,\n alias: 'comment'\n }\n ],\n directive: {\n pattern:\n /(^|[^\\\\](?:\\\\\\\\)*)#@?(?:[a-z][\\w-]*|\\{[a-z][\\w-]*\\})(?:\\s*\\((?:[^()]|\\([^()]*\\))*\\))?/i,\n lookbehind: true,\n inside: {\n keyword: {\n pattern: /^#@?(?:[a-z][\\w-]*|\\{[a-z][\\w-]*\\})|\\bin\\b/,\n inside: {\n punctuation: /[{}]/\n }\n },\n rest: velocity\n }\n },\n variable: velocity['variable']\n })\n Prism.languages.velocity['tag'].inside['attr-value'].inside.rest =\n Prism.languages.velocity\n })(Prism)\n}\n","// @ts-nocheck\nverilog.displayName = 'verilog'\nverilog.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function verilog(Prism) {\n Prism.languages.verilog = {\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n greedy: true\n },\n string: {\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n greedy: true\n },\n 'kernel-function': {\n // support for any kernel function (ex: $display())\n pattern: /\\B\\$\\w+\\b/,\n alias: 'property'\n },\n // support for user defined constants (ex: `define)\n constant: /\\B`\\w+\\b/,\n function: /\\b\\w+(?=\\()/,\n // support for verilog and system verilog keywords\n keyword:\n /\\b(?:alias|and|assert|assign|assume|automatic|before|begin|bind|bins|binsof|bit|break|buf|bufif0|bufif1|byte|case|casex|casez|cell|chandle|class|clocking|cmos|config|const|constraint|context|continue|cover|covergroup|coverpoint|cross|deassign|default|defparam|design|disable|dist|do|edge|else|end|endcase|endclass|endclocking|endconfig|endfunction|endgenerate|endgroup|endinterface|endmodule|endpackage|endprimitive|endprogram|endproperty|endsequence|endspecify|endtable|endtask|enum|event|expect|export|extends|extern|final|first_match|for|force|foreach|forever|fork|forkjoin|function|generate|genvar|highz0|highz1|if|iff|ifnone|ignore_bins|illegal_bins|import|incdir|include|initial|inout|input|inside|instance|int|integer|interface|intersect|join|join_any|join_none|large|liblist|library|local|localparam|logic|longint|macromodule|matches|medium|modport|module|nand|negedge|new|nmos|nor|noshowcancelled|not|notif0|notif1|null|or|output|package|packed|parameter|pmos|posedge|primitive|priority|program|property|protected|pull0|pull1|pulldown|pullup|pulsestyle_ondetect|pulsestyle_onevent|pure|rand|randc|randcase|randsequence|rcmos|real|realtime|ref|reg|release|repeat|return|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|sequence|shortint|shortreal|showcancelled|signed|small|solve|specify|specparam|static|string|strong0|strong1|struct|super|supply0|supply1|table|tagged|task|this|throughout|time|timeprecision|timeunit|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|type|typedef|union|unique|unsigned|use|uwire|var|vectored|virtual|void|wait|wait_order|wand|weak0|weak1|while|wildcard|wire|with|within|wor|xnor|xor)\\b/,\n // bold highlighting for all verilog and system verilog logic blocks\n important: /\\b(?:always|always_comb|always_ff|always_latch)\\b(?: *@)?/,\n // support for time ticks, vectors, and real numbers\n number:\n /\\B##?\\d+|(?:\\b\\d+)?'[odbh] ?[\\da-fzx_?]+|\\b(?:\\d*[._])?\\d+(?:e[-+]?\\d+)?/i,\n operator: /[-+{}^~%*\\/?=!<>&|]+/,\n punctuation: /[[\\];(),.:]/\n }\n}\n","// @ts-nocheck\nvhdl.displayName = 'vhdl'\nvhdl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function vhdl(Prism) {\n Prism.languages.vhdl = {\n comment: /--.+/,\n // support for all logic vectors\n 'vhdl-vectors': {\n pattern: /\\b[oxb]\"[\\da-f_]+\"|\"[01uxzwlh-]+\"/i,\n alias: 'number'\n },\n // support for operator overloading included\n 'quoted-function': {\n pattern: /\"\\S+?\"(?=\\()/,\n alias: 'function'\n },\n string: /\"(?:[^\\\\\"\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"/,\n attribute: {\n pattern: /\\b'\\w+/,\n alias: 'attr-name'\n },\n // support for predefined attributes included\n keyword:\n /\\b(?:access|after|alias|all|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|null|of|on|open|others|out|package|port|postponed|private|procedure|process|pure|range|record|register|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|view|wait|when|while|with)\\b/i,\n boolean: /\\b(?:false|true)\\b/i,\n function: /\\w+(?=\\()/,\n // decimal, based, physical, and exponential numbers supported\n number: /'[01uxzwlh-]'|\\b(?:\\d+#[\\da-f_.]+#|\\d[\\d_.]*)(?:e[-+]?\\d+)?/i,\n operator:\n /[<>]=?|:=|[-+*/&=]|\\b(?:abs|and|mod|nand|nor|not|or|rem|rol|ror|sla|sll|sra|srl|xnor|xor)\\b/i,\n punctuation: /[{}[\\];(),.:]/\n }\n}\n","// @ts-nocheck\nvim.displayName = 'vim'\nvim.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function vim(Prism) {\n Prism.languages.vim = {\n string: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\r\\n]|'')*'/,\n comment: /\".*/,\n function: /\\b\\w+(?=\\()/,\n keyword:\n /\\b(?:N|Next|P|Print|X|XMLent|XMLns|ab|abbreviate|abc|abclear|abo|aboveleft|al|all|ar|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|args|argu|argument|as|ascii|b|bN|bNext|ba|bad|badd|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bo|botright|bp|bprevious|br|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|brewind|bro|browse|bufdo|buffer|buffers|bun|bunload|bw|bwipeout|c|cN|cNext|cNfcNfile|ca|cabbrev|cabc|cabclear|cad|caddb|caddbuffer|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cg|cgetb|cgetbuffer|cgete|cgetexpr|cgetfile|change|changes|chd|chdir|che|checkpath|checkt|checktime|cl|cla|clast|clist|clo|close|cmapc|cmapclear|cn|cnew|cnewer|cnext|cnf|cnfile|cnorea|cnoreabbrev|co|col|colder|colo|colorscheme|comc|comclear|comp|compiler|con|conf|confirm|continue|cope|copen|copy|cp|cpf|cpfile|cprevious|cq|cquit|cr|crewind|cu|cuna|cunabbrev|cunmap|cw|cwindow|d|debugg|debuggreedy|delc|delcommand|delete|delf|delfunction|delm|delmarks|di|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|e|earlier|echoe|echoerr|echom|echomsg|echon|edit|el|else|elsei|elseif|em|emenu|en|endf|endfo|endfor|endfun|endfunction|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fin|fina|finally|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|foldd|folddoc|folddoclosed|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|h|ha|hardcopy|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iu|iuna|iunabbrev|iunmap|j|join|ju|jumps|k|kee|keepalt|keepj|keepjumps|keepmarks|l|lN|lNext|lNf|lNfile|la|lad|laddb|laddbuffer|laddexpr|laddf|laddfile|lan|language|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|left|lefta|leftabove|let|lex|lexpr|lf|lfile|lfir|lfirst|lg|lgetb|lgetbuffer|lgete|lgetexpr|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|list|ll|lla|llast|lli|llist|lm|lmak|lmake|lmap|lmapc|lmapclear|ln|lne|lnew|lnewer|lnext|lnf|lnfile|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lp|lpf|lpfile|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|m|ma|mak|make|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkv|mkvie|mkview|mkvimrc|mod|mode|move|mz|mzf|mzfile|mzscheme|n|nbkey|new|next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|o|omapc|omapclear|on|only|open|opt|options|ou|ounmap|p|pc|pclose|pe|ped|pedit|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|print|prof|profd|profdel|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|ptN|ptNext|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|py|pyf|pyfile|python|q|qa|qall|quit|quita|quitall|r|read|rec|recover|red|redi|redir|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|ru|rub|ruby|rubyd|rubydo|rubyf|rubyfile|runtime|rv|rviminfo|sN|sNext|sa|sal|sall|san|sandbox|sargument|sav|saveas|sb|sbN|sbNext|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbp|sbprevious|sbr|sbrewind|sbuffer|scrip|scripte|scriptencoding|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sl|sla|slast|sleep|sm|smagic|smap|smapc|smapclear|sme|smenu|sn|snext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|so|sor|sort|source|sp|spe|spelld|spelldump|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|split|spr|sprevious|sre|srewind|st|sta|stag|star|startg|startgreplace|startinsert|startr|startreplace|stj|stjump|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tN|tNext|ta|tab|tabN|tabNext|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabn|tabnew|tabnext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tmenu|tn|tnext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tunmenu|u|una|unabbreviate|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|ve|verb|verbose|version|vert|vertical|vi|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|w|wN|wNext|wa|wall|wh|while|win|winc|wincmd|windo|winp|winpos|winsize|wn|wnext|wp|wprevious|wq|wqa|wqall|write|ws|wsverb|wv|wviminfo|x|xa|xall|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\\b/,\n builtin:\n /\\b(?:acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autocmd|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|t_AB|t_AF|t_AL|t_CS|t_CV|t_Ce|t_Co|t_Cs|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_IE|t_IS|t_K1|t_K3|t_K4|t_K5|t_K6|t_K7|t_K8|t_K9|t_KA|t_KB|t_KC|t_KD|t_KE|t_KF|t_KG|t_KH|t_KI|t_KJ|t_KK|t_KL|t_RI|t_RV|t_SI|t_Sb|t_Sf|t_WP|t_WS|t_ZH|t_ZR|t_al|t_bc|t_cd|t_ce|t_cl|t_cm|t_cs|t_da|t_db|t_dl|t_fs|t_k1|t_k2|t_k3|t_k4|t_k5|t_k6|t_k7|t_k8|t_k9|t_kB|t_kD|t_kI|t_kN|t_kP|t_kb|t_kd|t_ke|t_kh|t_kl|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_se|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_xs|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww)\\b/,\n number: /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n operator:\n /\\|\\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\\/%?]|\\b(?:is(?:not)?)\\b/,\n punctuation: /[{}[\\](),;:]/\n }\n}\n","// @ts-nocheck\nvisualBasic.displayName = 'visual-basic'\nvisualBasic.aliases = ['vb', 'vba']\n\n/** @type {import('../core.js').Syntax} */\nexport default function visualBasic(Prism) {\n Prism.languages['visual-basic'] = {\n comment: {\n pattern: /(?:['‘’]|REM\\b)(?:[^\\r\\n_]|_(?:\\r\\n?|\\n)?)*/i,\n inside: {\n keyword: /^REM/i\n }\n },\n directive: {\n pattern:\n /#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:\\b_[ \\t]*(?:\\r\\n?|\\n)|.)+/i,\n alias: 'property',\n greedy: true\n },\n string: {\n pattern: /\\$?[\"“”](?:[\"“”]{2}|[^\"“”])*[\"“”]C?/i,\n greedy: true\n },\n date: {\n pattern:\n /#[ \\t]*(?:\\d+([/-])\\d+\\1\\d+(?:[ \\t]+(?:\\d+[ \\t]*(?:AM|PM)|\\d+:\\d+(?::\\d+)?(?:[ \\t]*(?:AM|PM))?))?|\\d+[ \\t]*(?:AM|PM)|\\d+:\\d+(?::\\d+)?(?:[ \\t]*(?:AM|PM))?)[ \\t]*#/i,\n alias: 'number'\n },\n number:\n /(?:(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)(?:E[+-]?\\d+)?|&[HO][\\dA-F]+)(?:[FRD]|U?[ILS])?/i,\n boolean: /\\b(?:False|Nothing|True)\\b/i,\n keyword:\n /\\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Currency|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|Type|TypeOf|U(?:Integer|Long|Short)|Until|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Xor)\\b/i,\n operator: /[+\\-*/\\\\^<=>&#@$%!]|\\b_(?=[ \\t]*[\\r\\n])/,\n punctuation: /[{}().,:?]/\n }\n Prism.languages.vb = Prism.languages['visual-basic']\n Prism.languages.vba = Prism.languages['visual-basic']\n}\n","// @ts-nocheck\nwarpscript.displayName = 'warpscript'\nwarpscript.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function warpscript(Prism) {\n Prism.languages.warpscript = {\n comment: /#.*|\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n string: {\n pattern:\n /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'|<'(?:[^\\\\']|'(?!>)|\\\\.)*'>/,\n greedy: true\n },\n variable: /\\$\\S+/,\n macro: {\n pattern: /@\\S+/,\n alias: 'property'\n },\n // WarpScript doesn't have any keywords, these are all functions under the control category\n // https://www.warp10.io/tags/control\n keyword:\n /\\b(?:BREAK|CHECKMACRO|CONTINUE|CUDF|DEFINED|DEFINEDMACRO|EVAL|FAIL|FOR|FOREACH|FORSTEP|IFT|IFTE|MSGFAIL|NRETURN|RETHROW|RETURN|SWITCH|TRY|UDF|UNTIL|WHILE)\\b/,\n number:\n /[+-]?\\b(?:NaN|Infinity|\\d+(?:\\.\\d*)?(?:[Ee][+-]?\\d+)?|0x[\\da-fA-F]+|0b[01]+)\\b/,\n boolean: /\\b(?:F|T|false|true)\\b/,\n punctuation: /<%|%>|[{}[\\]()]/,\n // Some operators from the \"operators\" category\n // https://www.warp10.io/tags/operators\n operator:\n /==|&&?|\\|\\|?|\\*\\*?|>>>?|<<|[<>!~]=?|[-/%^]|\\+!?|\\b(?:AND|NOT|OR)\\b/\n }\n}\n","// @ts-nocheck\nwasm.displayName = 'wasm'\nwasm.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function wasm(Prism) {\n Prism.languages.wasm = {\n comment: [\n /\\(;[\\s\\S]*?;\\)/,\n {\n pattern: /;;.*/,\n greedy: true\n }\n ],\n string: {\n pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n greedy: true\n },\n keyword: [\n {\n pattern: /\\b(?:align|offset)=/,\n inside: {\n operator: /=/\n }\n },\n {\n pattern:\n /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n inside: {\n punctuation: /\\./\n }\n },\n /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/\n ],\n variable: /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^`|~]+/,\n number:\n /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n punctuation: /[()]/\n }\n}\n","// @ts-nocheck\nwebIdl.displayName = 'web-idl'\nwebIdl.aliases = ['webidl']\n\n/** @type {import('../core.js').Syntax} */\nexport default function webIdl(Prism) {\n ;(function (Prism) {\n var id = /(?:\\B-|\\b_|\\b)[A-Za-z][\\w-]*(?![\\w-])/.source\n var type =\n '(?:' +\n /\\b(?:unsigned\\s+)?long\\s+long(?![\\w-])/.source +\n '|' +\n /\\b(?:unrestricted|unsigned)\\s+[a-z]+(?![\\w-])/.source +\n '|' +\n /(?!(?:unrestricted|unsigned)\\b)/.source +\n id +\n /(?:\\s*<(?:[^<>]|<[^<>]*>)*>)?/.source +\n ')' +\n /(?:\\s*\\?)?/.source\n var typeInside = {}\n Prism.languages['web-idl'] = {\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n greedy: true\n },\n string: {\n pattern: /\"[^\"]*\"/,\n greedy: true\n },\n namespace: {\n pattern: RegExp(/(\\bnamespace\\s+)/.source + id),\n lookbehind: true\n },\n 'class-name': [\n {\n pattern:\n /(^|[^\\w-])(?:iterable|maplike|setlike)\\s*<(?:[^<>]|<[^<>]*>)*>/,\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: RegExp(\n /(\\b(?:attribute|const|deleter|getter|optional|setter)\\s+)/.source +\n type\n ),\n lookbehind: true,\n inside: typeInside\n },\n {\n // callback return type\n pattern: RegExp(\n '(' + /\\bcallback\\s+/.source + id + /\\s*=\\s*/.source + ')' + type\n ),\n lookbehind: true,\n inside: typeInside\n },\n {\n // typedef\n pattern: RegExp(/(\\btypedef\\b\\s*)/.source + type),\n lookbehind: true,\n inside: typeInside\n },\n {\n pattern: RegExp(\n /(\\b(?:callback|dictionary|enum|interface(?:\\s+mixin)?)\\s+)(?!(?:interface|mixin)\\b)/\n .source + id\n ),\n lookbehind: true\n },\n {\n // inheritance\n pattern: RegExp(/(:\\s*)/.source + id),\n lookbehind: true\n },\n // includes and implements\n RegExp(id + /(?=\\s+(?:implements|includes)\\b)/.source),\n {\n pattern: RegExp(/(\\b(?:implements|includes)\\s+)/.source + id),\n lookbehind: true\n },\n {\n // function return type, parameter types, and dictionary members\n pattern: RegExp(\n type +\n '(?=' +\n /\\s*(?:\\.{3}\\s*)?/.source +\n id +\n /\\s*[(),;=]/.source +\n ')'\n ),\n inside: typeInside\n }\n ],\n builtin:\n /\\b(?:ArrayBuffer|BigInt64Array|BigUint64Array|ByteString|DOMString|DataView|Float32Array|Float64Array|FrozenArray|Int16Array|Int32Array|Int8Array|ObservableArray|Promise|USVString|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray)\\b/,\n keyword: [\n /\\b(?:async|attribute|callback|const|constructor|deleter|dictionary|enum|getter|implements|includes|inherit|interface|mixin|namespace|null|optional|or|partial|readonly|required|setter|static|stringifier|typedef|unrestricted)\\b/,\n // type keywords\n /\\b(?:any|bigint|boolean|byte|double|float|iterable|long|maplike|object|octet|record|sequence|setlike|short|symbol|undefined|unsigned|void)\\b/\n ],\n boolean: /\\b(?:false|true)\\b/,\n number: {\n pattern:\n /(^|[^\\w-])-?(?:0x[0-9a-f]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|NaN|Infinity)(?![\\w-])/i,\n lookbehind: true\n },\n operator: /\\.{3}|[=:?<>-]/,\n punctuation: /[(){}[\\].,;]/\n }\n for (var key in Prism.languages['web-idl']) {\n if (key !== 'class-name') {\n typeInside[key] = Prism.languages['web-idl'][key]\n }\n }\n Prism.languages['webidl'] = Prism.languages['web-idl']\n })(Prism)\n}\n","// @ts-nocheck\nwgsl.displayName = 'wgsl'\nwgsl.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function wgsl(Prism) {\n Prism.languages.wgsl = {\n comment: {\n pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n greedy: true\n },\n 'builtin-attribute': {\n pattern: /(@)builtin\\(.*?\\)/,\n lookbehind: true,\n inside: {\n attribute: {\n pattern: /^builtin/,\n alias: 'attr-name'\n },\n punctuation: /[(),]/,\n 'built-in-values': {\n pattern:\n /\\b(?:frag_depth|front_facing|global_invocation_id|instance_index|local_invocation_id|local_invocation_index|num_workgroups|position|sample_index|sample_mask|vertex_index|workgroup_id)\\b/,\n alias: 'attr-value'\n }\n }\n },\n attributes: {\n pattern:\n /(@)(?:align|binding|compute|const|fragment|group|id|interpolate|invariant|location|size|vertex|workgroup_size)/i,\n lookbehind: true,\n alias: 'attr-name'\n },\n functions: {\n pattern: /\\b(fn\\s+)[_a-zA-Z]\\w*(?=[(<])/,\n lookbehind: true,\n alias: 'function'\n },\n keyword:\n /\\b(?:bitcast|break|case|const|continue|continuing|default|discard|else|enable|fallthrough|fn|for|function|if|let|loop|private|return|storage|struct|switch|type|uniform|var|while|workgroup)\\b/,\n builtin:\n /\\b(?:abs|acos|acosh|all|any|array|asin|asinh|atan|atan2|atanh|atomic|atomicAdd|atomicAnd|atomicCompareExchangeWeak|atomicExchange|atomicLoad|atomicMax|atomicMin|atomicOr|atomicStore|atomicSub|atomicXor|bool|ceil|clamp|cos|cosh|countLeadingZeros|countOneBits|countTrailingZeros|cross|degrees|determinant|distance|dot|dpdx|dpdxCoarse|dpdxFine|dpdy|dpdyCoarse|dpdyFine|exp|exp2|extractBits|f32|f64|faceForward|firstLeadingBit|floor|fma|fract|frexp|fwidth|fwidthCoarse|fwidthFine|i32|i64|insertBits|inverseSqrt|ldexp|length|log|log2|mat[2-4]x[2-4]|max|min|mix|modf|normalize|override|pack2x16float|pack2x16snorm|pack2x16unorm|pack4x8snorm|pack4x8unorm|pow|ptr|quantizeToF16|radians|reflect|refract|reverseBits|round|sampler|sampler_comparison|select|shiftLeft|shiftRight|sign|sin|sinh|smoothstep|sqrt|staticAssert|step|storageBarrier|tan|tanh|textureDimensions|textureGather|textureGatherCompare|textureLoad|textureNumLayers|textureNumLevels|textureNumSamples|textureSample|textureSampleBias|textureSampleCompare|textureSampleCompareLevel|textureSampleGrad|textureSampleLevel|textureStore|texture_1d|texture_2d|texture_2d_array|texture_3d|texture_cube|texture_cube_array|texture_depth_2d|texture_depth_2d_array|texture_depth_cube|texture_depth_cube_array|texture_depth_multisampled_2d|texture_multisampled_2d|texture_storage_1d|texture_storage_2d|texture_storage_2d_array|texture_storage_3d|transpose|trunc|u32|u64|unpack2x16float|unpack2x16snorm|unpack2x16unorm|unpack4x8snorm|unpack4x8unorm|vec[2-4]|workgroupBarrier)\\b/,\n 'function-calls': {\n pattern: /\\b[_a-z]\\w*(?=\\()/i,\n alias: 'function'\n },\n 'class-name': /\\b(?:[A-Z][A-Za-z0-9]*)\\b/,\n 'bool-literal': {\n pattern: /\\b(?:false|true)\\b/,\n alias: 'boolean'\n },\n 'hex-int-literal': {\n pattern: /\\b0[xX][0-9a-fA-F]+[iu]?\\b(?![.pP])/,\n alias: 'number'\n },\n 'hex-float-literal': {\n pattern: /\\b0[xX][0-9a-fA-F]*(?:\\.[0-9a-fA-F]*)?(?:[pP][+-]?\\d+[fh]?)?/,\n alias: 'number'\n },\n 'decimal-float-literal': [\n {\n pattern: /\\d*\\.\\d+(?:[eE](?:\\+|-)?\\d+)?[fh]?/,\n alias: 'number'\n },\n {\n pattern: /\\d+\\.\\d*(?:[eE](?:\\+|-)?\\d+)?[fh]?/,\n alias: 'number'\n },\n {\n pattern: /\\d+[eE](?:\\+|-)?\\d+[fh]?/,\n alias: 'number'\n },\n {\n pattern: /\\b\\d+[fh]\\b/,\n alias: 'number'\n }\n ],\n 'int-literal': {\n pattern: /\\b\\d+[iu]?\\b/,\n alias: 'number'\n },\n operator: [\n {\n pattern: /(?:\\^|~|\\|(?!\\|)|\\|\\||&&|<<|>>|!)(?!=)/\n },\n {\n pattern: /&(?![&=])/\n },\n {\n pattern: /(?:\\+=|-=|\\*=|\\/=|%=|\\^=|&=|\\|=|<<=|>>=)/\n },\n {\n pattern: /(^|[^<>=!])=(?![=>])/,\n lookbehind: true\n },\n {\n pattern: /(?:==|!=|<=|\\+\\+|--|(^|[^=])>=)/,\n lookbehind: true\n },\n {\n pattern: /(?:(?:[+%]|(?:\\*(?!\\w)))(?!=))|(?:-(?!>))|(?:\\/(?!\\/))/\n },\n {\n pattern: /->/\n }\n ],\n punctuation: /[@(){}[\\],;<>:.]/\n }\n}\n","// @ts-nocheck\nimport refractorMarkup from './markup.js'\nwiki.displayName = 'wiki'\nwiki.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function wiki(Prism) {\n Prism.register(refractorMarkup)\n Prism.languages.wiki = Prism.languages.extend('markup', {\n 'block-comment': {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n lookbehind: true,\n alias: 'comment'\n },\n heading: {\n pattern: /^(=+)[^=\\r\\n].*?\\1/m,\n inside: {\n punctuation: /^=+|=+$/,\n important: /.+/\n }\n },\n emphasis: {\n // TODO Multi-line\n pattern: /('{2,5}).+?\\1/,\n inside: {\n 'bold-italic': {\n pattern: /(''''').+?(?=\\1)/,\n lookbehind: true,\n alias: ['bold', 'italic']\n },\n bold: {\n pattern: /(''')[^'](?:.*?[^'])?(?=\\1)/,\n lookbehind: true\n },\n italic: {\n pattern: /('')[^'](?:.*?[^'])?(?=\\1)/,\n lookbehind: true\n },\n punctuation: /^''+|''+$/\n }\n },\n hr: {\n pattern: /^-{4,}/m,\n alias: 'punctuation'\n },\n url: [\n /ISBN +(?:97[89][ -]?)?(?:\\d[ -]?){9}[\\dx]\\b|(?:PMID|RFC) +\\d+/i,\n /\\[\\[.+?\\]\\]|\\[.+?\\]/\n ],\n variable: [\n /__[A-Z]+__/,\n // FIXME Nested structures should be handled\n // {{formatnum:{{#expr:{{{3}}}}}}}\n /\\{{3}.+?\\}{3}/,\n /\\{\\{.+?\\}\\}/\n ],\n symbol: [/^#redirect/im, /~{3,5}/],\n // Handle table attrs:\n // {|\n // ! style=\"text-align:left;\"| Item\n // |}\n 'table-tag': {\n pattern: /((?:^|[|!])[|!])[^|\\r\\n]+\\|(?!\\|)/m,\n lookbehind: true,\n inside: {\n 'table-bar': {\n pattern: /\\|$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.markup['tag'].inside\n }\n },\n punctuation: /^(?:\\{\\||\\|\\}|\\|-|[*#:;!|])|\\|\\||!!/m\n })\n Prism.languages.insertBefore('wiki', 'tag', {\n // Prevent highlighting inside <nowiki>, <source> and <pre> tags\n nowiki: {\n pattern: /<(nowiki|pre|source)\\b[^>]*>[\\s\\S]*?<\\/\\1>/i,\n inside: {\n tag: {\n pattern: /<(?:nowiki|pre|source)\\b[^>]*>|<\\/(?:nowiki|pre|source)>/i,\n inside: Prism.languages.markup['tag'].inside\n }\n }\n }\n })\n}\n","// @ts-nocheck\nwolfram.displayName = 'wolfram'\nwolfram.aliases = ['mathematica', 'nb', 'wl']\n\n/** @type {import('../core.js').Syntax} */\nexport default function wolfram(Prism) {\n Prism.languages.wolfram = {\n comment:\n // Allow one level of nesting - note: regex taken from applescipt\n /\\(\\*(?:\\(\\*(?:[^*]|\\*(?!\\)))*\\*\\)|(?!\\(\\*)[\\s\\S])*?\\*\\)/,\n string: {\n pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n greedy: true\n },\n keyword:\n /\\b(?:Abs|AbsArg|Accuracy|Block|Do|For|Function|If|Manipulate|Module|Nest|NestList|None|Return|Switch|Table|Which|While)\\b/,\n context: {\n pattern: /\\b\\w+`+\\w*/,\n alias: 'class-name'\n },\n blank: {\n pattern: /\\b\\w+_\\b/,\n alias: 'regex'\n },\n 'global-variable': {\n pattern: /\\$\\w+/,\n alias: 'variable'\n },\n boolean: /\\b(?:False|True)\\b/,\n number:\n /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n operator:\n /\\/\\.|;|=\\.|\\^=|\\^:=|:=|<<|>>|<\\||\\|>|:>|\\|->|->|<-|@@@|@@|@|\\/@|=!=|===|==|=|\\+|-|\\[\\/-+%=\\]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n punctuation: /[{}[\\];(),.:]/\n }\n Prism.languages.mathematica = Prism.languages.wolfram\n Prism.languages.wl = Prism.languages.wolfram\n Prism.languages.nb = Prism.languages.wolfram\n}\n","// @ts-nocheck\nwren.displayName = 'wren'\nwren.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function wren(Prism) {\n // https://wren.io/\n\n Prism.languages.wren = {\n // Multiline comments in Wren can have nested multiline comments\n // Comments: // and /* */\n comment: [\n {\n // support 3 levels of nesting\n // regex: \\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|<self>)*\\*\\/\n pattern:\n /\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*))*\\*\\/)*\\*\\/)*\\*\\//,\n greedy: true\n },\n {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }\n ],\n // Triple quoted strings are multiline but cannot have interpolation (raw strings)\n // Based on prism-python.js\n 'triple-quoted-string': {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: 'string'\n },\n // see below\n 'string-literal': null,\n // #!/usr/bin/env wren on the first line\n hashbang: {\n pattern: /^#!\\/.+/,\n greedy: true,\n alias: 'comment'\n },\n // Attributes are special keywords to add meta data to classes\n attribute: {\n // #! attributes are stored in class properties\n // #!myvar = true\n // #attributes are not stored and dismissed at compilation\n pattern: /#!?[ \\t\\u3000]*\\w+/,\n alias: 'keyword'\n },\n 'class-name': [\n {\n // class definition\n // class Meta {}\n pattern: /(\\bclass\\s+)\\w+/,\n lookbehind: true\n },\n // A class must always start with an uppercase.\n // File.read\n /\\b[A-Z][a-z\\d_]*\\b/\n ],\n // A constant can be a variable, class, property or method. Just named in all uppercase letters\n constant: /\\b[A-Z][A-Z\\d_]*\\b/,\n null: {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n },\n keyword:\n /\\b(?:as|break|class|construct|continue|else|for|foreign|if|import|in|is|return|static|super|this|var|while)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n number: /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/i,\n // Functions can be Class.method()\n function: /\\b[a-z_]\\w*(?=\\s*[({])/i,\n operator: /<<|>>|[=!<>]=?|&&|\\|\\||[-+*/%~^&|?:]|\\.{2,3}/,\n punctuation: /[\\[\\](){}.,;]/\n }\n Prism.languages.wren['string-literal'] = {\n // A single quote string is multiline and can have interpolation (similar to JS backticks ``)\n pattern:\n /(^|[^\\\\\"])\"(?:[^\\\\\"%]|\\\\[\\s\\S]|%(?!\\()|%\\((?:[^()]|\\((?:[^()]|\\([^)]*\\))*\\))*\\))*\"/,\n lookbehind: true,\n greedy: true,\n inside: {\n interpolation: {\n // \"%(interpolation)\"\n pattern:\n /((?:^|[^\\\\])(?:\\\\{2})*)%\\((?:[^()]|\\((?:[^()]|\\([^)]*\\))*\\))*\\)/,\n lookbehind: true,\n inside: {\n expression: {\n pattern: /^(%\\()[\\s\\S]+(?=\\)$)/,\n lookbehind: true,\n inside: Prism.languages.wren\n },\n 'interpolation-punctuation': {\n pattern: /^%\\(|\\)$/,\n alias: 'punctuation'\n }\n }\n },\n string: /[\\s\\S]+/\n }\n }\n}\n","// @ts-nocheck\nimport refractorMarkup from './markup.js'\nxeora.displayName = 'xeora'\nxeora.aliases = ['xeoracube']\n\n/** @type {import('../core.js').Syntax} */\nexport default function xeora(Prism) {\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n Prism.languages.xeora = Prism.languages.extend('markup', {\n constant: {\n pattern: /\\$(?:DomainContents|PageRenderDuration)\\$/,\n inside: {\n punctuation: {\n pattern: /\\$/\n }\n }\n },\n variable: {\n pattern: /\\$@?(?:#+|[-+*~=^])?[\\w.]+\\$/,\n inside: {\n punctuation: {\n pattern: /[$.]/\n },\n operator: {\n pattern: /#+|[-+*~=^@]/\n }\n }\n },\n 'function-inline': {\n pattern:\n /\\$F:[-\\w.]+\\?[-\\w.]+(?:,(?:(?:@[-#]*\\w+\\.[\\w+.]\\.*)*\\|)*(?:(?:[\\w+]|[-#*.~^]+[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\\w+\\.[\\w+.]\\.*)+(?:(?:[\\w+]|[-#*~^][-#*.~^]*[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*)?)?)?\\$/,\n inside: {\n variable: {\n pattern: /(?:[,|])@?(?:#+|[-+*~=^])?[\\w.]+/,\n inside: {\n punctuation: {\n pattern: /[,.|]/\n },\n operator: {\n pattern: /#+|[-+*~=^@]/\n }\n }\n },\n punctuation: {\n pattern: /\\$\\w:|[$:?.,|]/\n }\n },\n alias: 'function'\n },\n 'function-block': {\n pattern:\n /\\$XF:\\{[-\\w.]+\\?[-\\w.]+(?:,(?:(?:@[-#]*\\w+\\.[\\w+.]\\.*)*\\|)*(?:(?:[\\w+]|[-#*.~^]+[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\\w+\\.[\\w+.]\\.*)+(?:(?:[\\w+]|[-#*~^][-#*.~^]*[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*)?)?)?\\}:XF\\$/,\n inside: {\n punctuation: {\n pattern: /[$:{}?.,|]/\n }\n },\n alias: 'function'\n },\n 'directive-inline': {\n pattern: /\\$\\w(?:#\\d+\\+?)?(?:\\[[-\\w.]+\\])?:[-\\/\\w.]+\\$/,\n inside: {\n punctuation: {\n pattern: /\\$(?:\\w:|C(?:\\[|#\\d))?|[:{[\\]]/,\n inside: {\n tag: {\n pattern: /#\\d/\n }\n }\n }\n },\n alias: 'function'\n },\n 'directive-block-open': {\n pattern:\n /\\$\\w+:\\{|\\$\\w(?:#\\d+\\+?)?(?:\\[[-\\w.]+\\])?:[-\\w.]+:\\{(?:![A-Z]+)?/,\n inside: {\n punctuation: {\n pattern: /\\$(?:\\w:|C(?:\\[|#\\d))?|[:{[\\]]/,\n inside: {\n tag: {\n pattern: /#\\d/\n }\n }\n },\n attribute: {\n pattern: /![A-Z]+$/,\n inside: {\n punctuation: {\n pattern: /!/\n }\n },\n alias: 'keyword'\n }\n },\n alias: 'function'\n },\n 'directive-block-separator': {\n pattern: /\\}:[-\\w.]+:\\{/,\n inside: {\n punctuation: {\n pattern: /[:{}]/\n }\n },\n alias: 'function'\n },\n 'directive-block-close': {\n pattern: /\\}:[-\\w.]+\\$/,\n inside: {\n punctuation: {\n pattern: /[:{}$]/\n }\n },\n alias: 'function'\n }\n })\n Prism.languages.insertBefore(\n 'inside',\n 'punctuation',\n {\n variable: Prism.languages.xeora['function-inline'].inside['variable']\n },\n Prism.languages.xeora['function-block']\n )\n Prism.languages.xeoracube = Prism.languages.xeora\n })(Prism)\n}\n","// @ts-nocheck\nimport refractorMarkup from './markup.js'\nxmlDoc.displayName = 'xml-doc'\nxmlDoc.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function xmlDoc(Prism) {\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n /**\n * If the given language is present, it will insert the given doc comment grammar token into it.\n *\n * @param {string} lang\n * @param {any} docComment\n */\n function insertDocComment(lang, docComment) {\n if (Prism.languages[lang]) {\n Prism.languages.insertBefore(lang, 'comment', {\n 'doc-comment': docComment\n })\n }\n }\n var tag = Prism.languages.markup.tag\n var slashDocComment = {\n pattern: /\\/\\/\\/.*/,\n greedy: true,\n alias: 'comment',\n inside: {\n tag: tag\n }\n }\n var tickDocComment = {\n pattern: /'''.*/,\n greedy: true,\n alias: 'comment',\n inside: {\n tag: tag\n }\n }\n insertDocComment('csharp', slashDocComment)\n insertDocComment('fsharp', slashDocComment)\n insertDocComment('vbnet', tickDocComment)\n })(Prism)\n}\n","// @ts-nocheck\nxojo.displayName = 'xojo'\nxojo.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function xojo(Prism) {\n Prism.languages.xojo = {\n comment: {\n pattern: /(?:'|\\/\\/|Rem\\b).+/i,\n greedy: true\n },\n string: {\n pattern: /\"(?:\"\"|[^\"])*\"/,\n greedy: true\n },\n number: [/(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i, /&[bchou][a-z\\d]+/i],\n directive: {\n pattern: /#(?:Else|ElseIf|Endif|If|Pragma)\\b/i,\n alias: 'property'\n },\n keyword:\n /\\b(?:AddHandler|App|Array|As(?:signs)?|Auto|Boolean|Break|By(?:Ref|Val)|Byte|Call|Case|Catch|CFStringRef|CGFloat|Class|Color|Const|Continue|CString|Currency|CurrentMethodName|Declare|Delegate|Dim|Do(?:uble|wnTo)?|Each|Else(?:If)?|End|Enumeration|Event|Exception|Exit|Extends|False|Finally|For|Function|Get|GetTypeInfo|Global|GOTO|If|Implements|In|Inherits|Int(?:8|16|32|64|eger|erface)?|Lib|Loop|Me|Module|Next|Nil|Object|Optional|OSType|ParamArray|Private|Property|Protected|PString|Ptr|Raise(?:Event)?|ReDim|RemoveHandler|Return|Select(?:or)?|Self|Set|Shared|Short|Single|Soft|Static|Step|String|Sub|Super|Text|Then|To|True|Try|Ubound|UInt(?:8|16|32|64|eger)?|Until|Using|Var(?:iant)?|Wend|While|WindowPtr|WString)\\b/i,\n operator:\n /<[=>]?|>=?|[+\\-*\\/\\\\^=]|\\b(?:AddressOf|And|Ctype|IsA?|Mod|New|Not|Or|WeakAddressOf|Xor)\\b/i,\n punctuation: /[.,;:()]/\n }\n}\n","// @ts-nocheck\nimport refractorMarkup from './markup.js'\nxquery.displayName = 'xquery'\nxquery.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function xquery(Prism) {\n Prism.register(refractorMarkup)\n ;(function (Prism) {\n Prism.languages.xquery = Prism.languages.extend('markup', {\n 'xquery-comment': {\n pattern: /\\(:[\\s\\S]*?:\\)/,\n greedy: true,\n alias: 'comment'\n },\n string: {\n pattern: /([\"'])(?:\\1\\1|(?!\\1)[\\s\\S])*\\1/,\n greedy: true\n },\n extension: {\n pattern: /\\(#.+?#\\)/,\n alias: 'symbol'\n },\n variable: /\\$[-\\w:]+/,\n axis: {\n pattern:\n /(^|[^-])(?:ancestor(?:-or-self)?|attribute|child|descendant(?:-or-self)?|following(?:-sibling)?|parent|preceding(?:-sibling)?|self)(?=::)/,\n lookbehind: true,\n alias: 'operator'\n },\n 'keyword-operator': {\n pattern:\n /(^|[^:-])\\b(?:and|castable as|div|eq|except|ge|gt|idiv|instance of|intersect|is|le|lt|mod|ne|or|union)\\b(?=$|[^:-])/,\n lookbehind: true,\n alias: 'operator'\n },\n keyword: {\n pattern:\n /(^|[^:-])\\b(?:as|ascending|at|base-uri|boundary-space|case|cast as|collation|construction|copy-namespaces|declare|default|descending|else|empty (?:greatest|least)|encoding|every|external|for|function|if|import|in|inherit|lax|let|map|module|namespace|no-inherit|no-preserve|option|order(?: by|ed|ing)?|preserve|return|satisfies|schema|some|stable|strict|strip|then|to|treat as|typeswitch|unordered|validate|variable|version|where|xquery)\\b(?=$|[^:-])/,\n lookbehind: true\n },\n function: /[\\w-]+(?::[\\w-]+)*(?=\\s*\\()/,\n 'xquery-element': {\n pattern: /(element\\s+)[\\w-]+(?::[\\w-]+)*/,\n lookbehind: true,\n alias: 'tag'\n },\n 'xquery-attribute': {\n pattern: /(attribute\\s+)[\\w-]+(?::[\\w-]+)*/,\n lookbehind: true,\n alias: 'attr-name'\n },\n builtin: {\n pattern:\n /(^|[^:-])\\b(?:attribute|comment|document|element|processing-instruction|text|xs:(?:ENTITIES|ENTITY|ID|IDREFS?|NCName|NMTOKENS?|NOTATION|Name|QName|anyAtomicType|anyType|anyURI|base64Binary|boolean|byte|date|dateTime|dayTimeDuration|decimal|double|duration|float|gDay|gMonth|gMonthDay|gYear|gYearMonth|hexBinary|int|integer|language|long|negativeInteger|nonNegativeInteger|nonPositiveInteger|normalizedString|positiveInteger|short|string|time|token|unsigned(?:Byte|Int|Long|Short)|untyped(?:Atomic)?|yearMonthDuration))\\b(?=$|[^:-])/,\n lookbehind: true\n },\n number: /\\b\\d+(?:\\.\\d+)?(?:E[+-]?\\d+)?/,\n operator: [\n /[+*=?|@]|\\.\\.?|:=|!=|<[=<]?|>[=>]?/,\n {\n pattern: /(\\s)-(?=\\s)/,\n lookbehind: true\n }\n ],\n punctuation: /[[\\](){},;:/]/\n })\n Prism.languages.xquery.tag.pattern =\n /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|\\{(?!\\{)(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/\n Prism.languages.xquery['tag'].inside['attr-value'].pattern =\n /=(?:(\"|')(?:\\\\[\\s\\S]|\\{(?!\\{)(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/\n Prism.languages.xquery['tag'].inside['attr-value'].inside['punctuation'] =\n /^=\"|\"$/\n Prism.languages.xquery['tag'].inside['attr-value'].inside['expression'] = {\n // Allow for two levels of nesting\n pattern: /\\{(?!\\{)(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}/,\n inside: Prism.languages.xquery,\n alias: 'language-xquery'\n }\n\n // The following will handle plain text inside tags\n var stringifyToken = function (token) {\n if (typeof token === 'string') {\n return token\n }\n if (typeof token.content === 'string') {\n return token.content\n }\n return token.content.map(stringifyToken).join('')\n }\n var walkTokens = function (tokens) {\n var openedTags = []\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n var notTagNorBrace = false\n if (typeof token !== 'string') {\n if (\n token.type === 'tag' &&\n token.content[0] &&\n token.content[0].type === 'tag'\n ) {\n // We found a tag, now find its kind\n\n if (token.content[0].content[0].content === '</') {\n // Closing tag\n if (\n openedTags.length > 0 &&\n openedTags[openedTags.length - 1].tagName ===\n stringifyToken(token.content[0].content[1])\n ) {\n // Pop matching opening tag\n openedTags.pop()\n }\n } else {\n if (token.content[token.content.length - 1].content === '/>') {\n // Autoclosed tag, ignore\n } else {\n // Opening tag\n openedTags.push({\n tagName: stringifyToken(token.content[0].content[1]),\n openedBraces: 0\n })\n }\n }\n } else if (\n openedTags.length > 0 &&\n token.type === 'punctuation' &&\n token.content === '{' &&\n // Ignore `{{`\n (!tokens[i + 1] ||\n tokens[i + 1].type !== 'punctuation' ||\n tokens[i + 1].content !== '{') &&\n (!tokens[i - 1] ||\n tokens[i - 1].type !== 'plain-text' ||\n tokens[i - 1].content !== '{')\n ) {\n // Here we might have entered an XQuery expression inside a tag\n openedTags[openedTags.length - 1].openedBraces++\n } else if (\n openedTags.length > 0 &&\n openedTags[openedTags.length - 1].openedBraces > 0 &&\n token.type === 'punctuation' &&\n token.content === '}'\n ) {\n // Here we might have left an XQuery expression inside a tag\n openedTags[openedTags.length - 1].openedBraces--\n } else if (token.type !== 'comment') {\n notTagNorBrace = true\n }\n }\n if (notTagNorBrace || typeof token === 'string') {\n if (\n openedTags.length > 0 &&\n openedTags[openedTags.length - 1].openedBraces === 0\n ) {\n // Here we are inside a tag, and not inside an XQuery expression.\n // That's plain text: drop any tokens matched.\n var plainText = stringifyToken(token)\n\n // And merge text with adjacent text\n if (\n i < tokens.length - 1 &&\n (typeof tokens[i + 1] === 'string' ||\n tokens[i + 1].type === 'plain-text')\n ) {\n plainText += stringifyToken(tokens[i + 1])\n tokens.splice(i + 1, 1)\n }\n if (\n i > 0 &&\n (typeof tokens[i - 1] === 'string' ||\n tokens[i - 1].type === 'plain-text')\n ) {\n plainText = stringifyToken(tokens[i - 1]) + plainText\n tokens.splice(i - 1, 1)\n i--\n }\n if (/^\\s+$/.test(plainText)) {\n tokens[i] = plainText\n } else {\n tokens[i] = new Prism.Token(\n 'plain-text',\n plainText,\n null,\n plainText\n )\n }\n }\n }\n if (token.content && typeof token.content !== 'string') {\n walkTokens(token.content)\n }\n }\n }\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'xquery') {\n return\n }\n walkTokens(env.tokens)\n })\n })(Prism)\n}\n","// @ts-nocheck\nyang.displayName = 'yang'\nyang.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function yang(Prism) {\n Prism.languages.yang = {\n // https://tools.ietf.org/html/rfc6020#page-34\n // http://www.yang-central.org/twiki/bin/view/Main/YangExamples\n comment: /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*/,\n string: {\n pattern: /\"(?:[^\\\\\"]|\\\\.)*\"|'[^']*'/,\n greedy: true\n },\n keyword: {\n pattern: /(^|[{};\\r\\n][ \\t]*)[a-z_][\\w.-]*/i,\n lookbehind: true\n },\n namespace: {\n pattern: /(\\s)[a-z_][\\w.-]*(?=:)/i,\n lookbehind: true\n },\n boolean: /\\b(?:false|true)\\b/,\n operator: /\\+/,\n punctuation: /[{};:]/\n }\n}\n","// @ts-nocheck\nzig.displayName = 'zig'\nzig.aliases = []\n\n/** @type {import('../core.js').Syntax} */\nexport default function zig(Prism) {\n ;(function (Prism) {\n function literal(str) {\n return function () {\n return str\n }\n }\n var keyword =\n /\\b(?:align|allowzero|and|anyframe|anytype|asm|async|await|break|cancel|catch|comptime|const|continue|defer|else|enum|errdefer|error|export|extern|fn|for|if|inline|linksection|nakedcc|noalias|nosuspend|null|or|orelse|packed|promise|pub|resume|return|stdcallcc|struct|suspend|switch|test|threadlocal|try|undefined|union|unreachable|usingnamespace|var|volatile|while)\\b/\n var IDENTIFIER = '\\\\b(?!' + keyword.source + ')(?!\\\\d)\\\\w+\\\\b'\n var ALIGN = /align\\s*\\((?:[^()]|\\([^()]*\\))*\\)/.source\n var PREFIX_TYPE_OP =\n /(?:\\?|\\bpromise->|(?:\\[[^[\\]]*\\]|\\*(?!\\*)|\\*\\*)(?:\\s*<ALIGN>|\\s*const\\b|\\s*volatile\\b|\\s*allowzero\\b)*)/.source.replace(\n /<ALIGN>/g,\n literal(ALIGN)\n )\n var SUFFIX_EXPR =\n /(?:\\bpromise\\b|(?:\\berror\\.)?<ID>(?:\\.<ID>)*(?!\\s+<ID>))/.source.replace(\n /<ID>/g,\n literal(IDENTIFIER)\n )\n var TYPE =\n '(?!\\\\s)(?:!?\\\\s*(?:' + PREFIX_TYPE_OP + '\\\\s*)*' + SUFFIX_EXPR + ')+'\n\n /*\n * A simplified grammar for Zig compile time type literals:\n *\n * TypeExpr = ( \"!\"? PREFIX_TYPE_OP* SUFFIX_EXPR )+\n *\n * SUFFIX_EXPR = ( \\b \"promise\" \\b | ( \\b \"error\" \".\" )? IDENTIFIER ( \".\" IDENTIFIER )* (?! \\s+ IDENTIFIER ) )\n *\n * PREFIX_TYPE_OP = \"?\"\n * | \\b \"promise\" \"->\"\n * | ( \"[\" [^\\[\\]]* \"]\" | \"*\" | \"**\" ) ( ALIGN | \"const\" \\b | \"volatile\" \\b | \"allowzero\" \\b )*\n *\n * ALIGN = \"align\" \"(\" ( [^()] | \"(\" [^()]* \")\" )* \")\"\n *\n * IDENTIFIER = \\b (?! KEYWORD ) [a-zA-Z_] \\w* \\b\n *\n */\n\n Prism.languages.zig = {\n comment: [\n {\n pattern: /\\/\\/[/!].*/,\n alias: 'doc-comment'\n },\n /\\/{2}.*/\n ],\n string: [\n {\n // \"string\" and c\"string\"\n pattern: /(^|[^\\\\@])c?\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"/,\n lookbehind: true,\n greedy: true\n },\n {\n // multiline strings and c-strings\n pattern: /([\\r\\n])([ \\t]+c?\\\\{2}).*(?:(?:\\r\\n?|\\n)\\2.*)*/,\n lookbehind: true,\n greedy: true\n }\n ],\n char: {\n // characters 'a', '\\n', '\\xFF', '\\u{10FFFF}'\n pattern:\n /(^|[^\\\\])'(?:[^'\\\\\\r\\n]|[\\uD800-\\uDFFF]{2}|\\\\(?:.|x[a-fA-F\\d]{2}|u\\{[a-fA-F\\d]{1,6}\\}))'/,\n lookbehind: true,\n greedy: true\n },\n builtin: /\\B@(?!\\d)\\w+(?=\\s*\\()/,\n label: {\n pattern:\n /(\\b(?:break|continue)\\s*:\\s*)\\w+\\b|\\b(?!\\d)\\w+\\b(?=\\s*:\\s*(?:\\{|while\\b))/,\n lookbehind: true\n },\n 'class-name': [\n // const Foo = struct {};\n /\\b(?!\\d)\\w+(?=\\s*=\\s*(?:(?:extern|packed)\\s+)?(?:enum|struct|union)\\s*[({])/,\n {\n // const x: i32 = 9;\n // var x: Bar;\n // fn foo(x: bool, y: f32) void {}\n pattern: RegExp(\n /(:\\s*)<TYPE>(?=\\s*(?:<ALIGN>\\s*)?[=;,)])|<TYPE>(?=\\s*(?:<ALIGN>\\s*)?\\{)/.source\n .replace(/<TYPE>/g, literal(TYPE))\n .replace(/<ALIGN>/g, literal(ALIGN))\n ),\n lookbehind: true,\n inside: null // see below\n },\n {\n // extern fn foo(x: f64) f64; (optional alignment)\n pattern: RegExp(\n /(\\)\\s*)<TYPE>(?=\\s*(?:<ALIGN>\\s*)?;)/.source\n .replace(/<TYPE>/g, literal(TYPE))\n .replace(/<ALIGN>/g, literal(ALIGN))\n ),\n lookbehind: true,\n inside: null // see below\n }\n ],\n\n 'builtin-type': {\n pattern:\n /\\b(?:anyerror|bool|c_u?(?:int|long|longlong|short)|c_longdouble|c_void|comptime_(?:float|int)|f(?:16|32|64|128)|[iu](?:8|16|32|64|128|size)|noreturn|type|void)\\b/,\n alias: 'keyword'\n },\n keyword: keyword,\n function: /\\b(?!\\d)\\w+(?=\\s*\\()/,\n number:\n /\\b(?:0b[01]+|0o[0-7]+|0x[a-fA-F\\d]+(?:\\.[a-fA-F\\d]*)?(?:[pP][+-]?[a-fA-F\\d]+)?|\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\b/,\n boolean: /\\b(?:false|true)\\b/,\n operator:\n /\\.[*?]|\\.{2,3}|[-=]>|\\*\\*|\\+\\+|\\|\\||(?:<<|>>|[-+*]%|[-+*/%^&|<>!=])=?|[?~]/,\n punctuation: /[.:,;(){}[\\]]/\n }\n Prism.languages.zig['class-name'].forEach(function (obj) {\n if (obj.inside === null) {\n obj.inside = Prism.languages.zig\n }\n })\n })(Prism)\n}\n","/**\n * @typedef {import('./core.js').RefractorRoot} RefractorRoot\n * @typedef {import('./core.js').RefractorElement} RefractorElement\n * @typedef {import('./core.js').Text} Text\n * @typedef {import('./core.js').Grammar} Grammar\n * @typedef {import('./core.js').Syntax} Syntax\n */\nimport clike from '../lang/clike.js'\nimport c from '../lang/c.js'\nimport cpp from '../lang/cpp.js'\nimport arduino from '../lang/arduino.js'\nimport bash from '../lang/bash.js'\nimport csharp from '../lang/csharp.js'\nimport markup from '../lang/markup.js'\nimport css from '../lang/css.js'\nimport diff from '../lang/diff.js'\nimport go from '../lang/go.js'\nimport ini from '../lang/ini.js'\nimport java from '../lang/java.js'\nimport regex from '../lang/regex.js'\nimport javascript from '../lang/javascript.js'\nimport json from '../lang/json.js'\nimport kotlin from '../lang/kotlin.js'\nimport less from '../lang/less.js'\nimport lua from '../lang/lua.js'\nimport makefile from '../lang/makefile.js'\nimport yaml from '../lang/yaml.js'\nimport markdown from '../lang/markdown.js'\nimport objectivec from '../lang/objectivec.js'\nimport perl from '../lang/perl.js'\nimport markupTemplating from '../lang/markup-templating.js'\nimport php from '../lang/php.js'\nimport python from '../lang/python.js'\nimport r from '../lang/r.js'\nimport ruby from '../lang/ruby.js'\nimport rust from '../lang/rust.js'\nimport sass from '../lang/sass.js'\nimport scss from '../lang/scss.js'\nimport sql from '../lang/sql.js'\nimport swift from '../lang/swift.js'\nimport typescript from '../lang/typescript.js'\nimport basic from '../lang/basic.js'\nimport vbnet from '../lang/vbnet.js'\nimport {refractor} from './core.js'\n\nrefractor.register(clike)\nrefractor.register(c)\nrefractor.register(cpp)\nrefractor.register(arduino)\nrefractor.register(bash)\nrefractor.register(csharp)\nrefractor.register(markup)\nrefractor.register(css)\nrefractor.register(diff)\nrefractor.register(go)\nrefractor.register(ini)\nrefractor.register(java)\nrefractor.register(regex)\nrefractor.register(javascript)\nrefractor.register(json)\nrefractor.register(kotlin)\nrefractor.register(less)\nrefractor.register(lua)\nrefractor.register(makefile)\nrefractor.register(yaml)\nrefractor.register(markdown)\nrefractor.register(objectivec)\nrefractor.register(perl)\nrefractor.register(markupTemplating)\nrefractor.register(php)\nrefractor.register(python)\nrefractor.register(r)\nrefractor.register(ruby)\nrefractor.register(rust)\nrefractor.register(sass)\nrefractor.register(scss)\nrefractor.register(sql)\nrefractor.register(swift)\nrefractor.register(typescript)\nrefractor.register(basic)\nrefractor.register(vbnet)\n\nexport {refractor} from './core.js'\n","/**\n * @typedef {import('./core.js').RefractorRoot} RefractorRoot\n * @typedef {import('./core.js').RefractorElement} RefractorElement\n * @typedef {import('./core.js').Text} Text\n * @typedef {import('./core.js').Grammar} Grammar\n * @typedef {import('./core.js').Syntax} Syntax\n */\nimport markup from '../lang/markup.js'\nimport css from '../lang/css.js'\nimport clike from '../lang/clike.js'\nimport regex from '../lang/regex.js'\nimport javascript from '../lang/javascript.js'\nimport abap from '../lang/abap.js'\nimport abnf from '../lang/abnf.js'\nimport actionscript from '../lang/actionscript.js'\nimport ada from '../lang/ada.js'\nimport agda from '../lang/agda.js'\nimport al from '../lang/al.js'\nimport antlr4 from '../lang/antlr4.js'\nimport apacheconf from '../lang/apacheconf.js'\nimport sql from '../lang/sql.js'\nimport apex from '../lang/apex.js'\nimport apl from '../lang/apl.js'\nimport applescript from '../lang/applescript.js'\nimport aql from '../lang/aql.js'\nimport c from '../lang/c.js'\nimport cpp from '../lang/cpp.js'\nimport arduino from '../lang/arduino.js'\nimport arff from '../lang/arff.js'\nimport armasm from '../lang/armasm.js'\nimport bash from '../lang/bash.js'\nimport yaml from '../lang/yaml.js'\nimport markdown from '../lang/markdown.js'\nimport arturo from '../lang/arturo.js'\nimport asciidoc from '../lang/asciidoc.js'\nimport csharp from '../lang/csharp.js'\nimport aspnet from '../lang/aspnet.js'\nimport asm6502 from '../lang/asm6502.js'\nimport asmatmel from '../lang/asmatmel.js'\nimport autohotkey from '../lang/autohotkey.js'\nimport autoit from '../lang/autoit.js'\nimport avisynth from '../lang/avisynth.js'\nimport avroIdl from '../lang/avro-idl.js'\nimport awk from '../lang/awk.js'\nimport basic from '../lang/basic.js'\nimport batch from '../lang/batch.js'\nimport bbcode from '../lang/bbcode.js'\nimport bbj from '../lang/bbj.js'\nimport bicep from '../lang/bicep.js'\nimport birb from '../lang/birb.js'\nimport bison from '../lang/bison.js'\nimport bnf from '../lang/bnf.js'\nimport bqn from '../lang/bqn.js'\nimport brainfuck from '../lang/brainfuck.js'\nimport brightscript from '../lang/brightscript.js'\nimport bro from '../lang/bro.js'\nimport bsl from '../lang/bsl.js'\nimport cfscript from '../lang/cfscript.js'\nimport chaiscript from '../lang/chaiscript.js'\nimport cil from '../lang/cil.js'\nimport cilkc from '../lang/cilkc.js'\nimport cilkcpp from '../lang/cilkcpp.js'\nimport clojure from '../lang/clojure.js'\nimport cmake from '../lang/cmake.js'\nimport cobol from '../lang/cobol.js'\nimport coffeescript from '../lang/coffeescript.js'\nimport concurnas from '../lang/concurnas.js'\nimport csp from '../lang/csp.js'\nimport cooklang from '../lang/cooklang.js'\nimport coq from '../lang/coq.js'\nimport ruby from '../lang/ruby.js'\nimport crystal from '../lang/crystal.js'\nimport cssExtras from '../lang/css-extras.js'\nimport csv from '../lang/csv.js'\nimport cue from '../lang/cue.js'\nimport cypher from '../lang/cypher.js'\nimport d from '../lang/d.js'\nimport dart from '../lang/dart.js'\nimport dataweave from '../lang/dataweave.js'\nimport dax from '../lang/dax.js'\nimport dhall from '../lang/dhall.js'\nimport diff from '../lang/diff.js'\nimport markupTemplating from '../lang/markup-templating.js'\nimport django from '../lang/django.js'\nimport dnsZoneFile from '../lang/dns-zone-file.js'\nimport docker from '../lang/docker.js'\nimport dot from '../lang/dot.js'\nimport ebnf from '../lang/ebnf.js'\nimport editorconfig from '../lang/editorconfig.js'\nimport eiffel from '../lang/eiffel.js'\nimport ejs from '../lang/ejs.js'\nimport elixir from '../lang/elixir.js'\nimport elm from '../lang/elm.js'\nimport lua from '../lang/lua.js'\nimport etlua from '../lang/etlua.js'\nimport erb from '../lang/erb.js'\nimport erlang from '../lang/erlang.js'\nimport excelFormula from '../lang/excel-formula.js'\nimport fsharp from '../lang/fsharp.js'\nimport factor from '../lang/factor.js'\nimport $false from '../lang/false.js'\nimport firestoreSecurityRules from '../lang/firestore-security-rules.js'\nimport flow from '../lang/flow.js'\nimport fortran from '../lang/fortran.js'\nimport ftl from '../lang/ftl.js'\nimport gml from '../lang/gml.js'\nimport gap from '../lang/gap.js'\nimport gcode from '../lang/gcode.js'\nimport gdscript from '../lang/gdscript.js'\nimport gedcom from '../lang/gedcom.js'\nimport gettext from '../lang/gettext.js'\nimport gherkin from '../lang/gherkin.js'\nimport git from '../lang/git.js'\nimport glsl from '../lang/glsl.js'\nimport gn from '../lang/gn.js'\nimport linkerScript from '../lang/linker-script.js'\nimport go from '../lang/go.js'\nimport goModule from '../lang/go-module.js'\nimport gradle from '../lang/gradle.js'\nimport graphql from '../lang/graphql.js'\nimport groovy from '../lang/groovy.js'\nimport less from '../lang/less.js'\nimport scss from '../lang/scss.js'\nimport textile from '../lang/textile.js'\nimport haml from '../lang/haml.js'\nimport handlebars from '../lang/handlebars.js'\nimport haskell from '../lang/haskell.js'\nimport haxe from '../lang/haxe.js'\nimport hcl from '../lang/hcl.js'\nimport hlsl from '../lang/hlsl.js'\nimport hoon from '../lang/hoon.js'\nimport hpkp from '../lang/hpkp.js'\nimport hsts from '../lang/hsts.js'\nimport json from '../lang/json.js'\nimport uri from '../lang/uri.js'\nimport http from '../lang/http.js'\nimport ichigojam from '../lang/ichigojam.js'\nimport icon from '../lang/icon.js'\nimport icuMessageFormat from '../lang/icu-message-format.js'\nimport idris from '../lang/idris.js'\nimport ignore from '../lang/ignore.js'\nimport inform7 from '../lang/inform7.js'\nimport ini from '../lang/ini.js'\nimport io from '../lang/io.js'\nimport j from '../lang/j.js'\nimport java from '../lang/java.js'\nimport php from '../lang/php.js'\nimport javadoclike from '../lang/javadoclike.js'\nimport scala from '../lang/scala.js'\nimport javadoc from '../lang/javadoc.js'\nimport javastacktrace from '../lang/javastacktrace.js'\nimport jexl from '../lang/jexl.js'\nimport jolie from '../lang/jolie.js'\nimport jq from '../lang/jq.js'\nimport jsTemplates from '../lang/js-templates.js'\nimport typescript from '../lang/typescript.js'\nimport jsdoc from '../lang/jsdoc.js'\nimport n4js from '../lang/n4js.js'\nimport jsExtras from '../lang/js-extras.js'\nimport json5 from '../lang/json5.js'\nimport jsonp from '../lang/jsonp.js'\nimport jsstacktrace from '../lang/jsstacktrace.js'\nimport julia from '../lang/julia.js'\nimport keepalived from '../lang/keepalived.js'\nimport keyman from '../lang/keyman.js'\nimport kotlin from '../lang/kotlin.js'\nimport kumir from '../lang/kumir.js'\nimport kusto from '../lang/kusto.js'\nimport latex from '../lang/latex.js'\nimport latte from '../lang/latte.js'\nimport scheme from '../lang/scheme.js'\nimport lilypond from '../lang/lilypond.js'\nimport liquid from '../lang/liquid.js'\nimport lisp from '../lang/lisp.js'\nimport livescript from '../lang/livescript.js'\nimport llvm from '../lang/llvm.js'\nimport log from '../lang/log.js'\nimport lolcode from '../lang/lolcode.js'\nimport magma from '../lang/magma.js'\nimport makefile from '../lang/makefile.js'\nimport mata from '../lang/mata.js'\nimport matlab from '../lang/matlab.js'\nimport maxscript from '../lang/maxscript.js'\nimport mel from '../lang/mel.js'\nimport mermaid from '../lang/mermaid.js'\nimport metafont from '../lang/metafont.js'\nimport mizar from '../lang/mizar.js'\nimport mongodb from '../lang/mongodb.js'\nimport monkey from '../lang/monkey.js'\nimport moonscript from '../lang/moonscript.js'\nimport n1ql from '../lang/n1ql.js'\nimport nand2tetrisHdl from '../lang/nand2tetris-hdl.js'\nimport naniscript from '../lang/naniscript.js'\nimport nasm from '../lang/nasm.js'\nimport neon from '../lang/neon.js'\nimport nevod from '../lang/nevod.js'\nimport nginx from '../lang/nginx.js'\nimport nim from '../lang/nim.js'\nimport nix from '../lang/nix.js'\nimport nsis from '../lang/nsis.js'\nimport objectivec from '../lang/objectivec.js'\nimport ocaml from '../lang/ocaml.js'\nimport odin from '../lang/odin.js'\nimport opencl from '../lang/opencl.js'\nimport openqasm from '../lang/openqasm.js'\nimport oz from '../lang/oz.js'\nimport parigp from '../lang/parigp.js'\nimport parser from '../lang/parser.js'\nimport pascal from '../lang/pascal.js'\nimport pascaligo from '../lang/pascaligo.js'\nimport psl from '../lang/psl.js'\nimport pcaxis from '../lang/pcaxis.js'\nimport peoplecode from '../lang/peoplecode.js'\nimport perl from '../lang/perl.js'\nimport phpdoc from '../lang/phpdoc.js'\nimport phpExtras from '../lang/php-extras.js'\nimport plantUml from '../lang/plant-uml.js'\nimport plsql from '../lang/plsql.js'\nimport powerquery from '../lang/powerquery.js'\nimport powershell from '../lang/powershell.js'\nimport processing from '../lang/processing.js'\nimport prolog from '../lang/prolog.js'\nimport promql from '../lang/promql.js'\nimport properties from '../lang/properties.js'\nimport protobuf from '../lang/protobuf.js'\nimport stylus from '../lang/stylus.js'\nimport twig from '../lang/twig.js'\nimport pug from '../lang/pug.js'\nimport puppet from '../lang/puppet.js'\nimport pure from '../lang/pure.js'\nimport purebasic from '../lang/purebasic.js'\nimport purescript from '../lang/purescript.js'\nimport python from '../lang/python.js'\nimport qsharp from '../lang/qsharp.js'\nimport q from '../lang/q.js'\nimport qml from '../lang/qml.js'\nimport qore from '../lang/qore.js'\nimport r from '../lang/r.js'\nimport racket from '../lang/racket.js'\nimport cshtml from '../lang/cshtml.js'\nimport jsx from '../lang/jsx.js'\nimport tsx from '../lang/tsx.js'\nimport reason from '../lang/reason.js'\nimport rego from '../lang/rego.js'\nimport renpy from '../lang/renpy.js'\nimport rescript from '../lang/rescript.js'\nimport rest from '../lang/rest.js'\nimport rip from '../lang/rip.js'\nimport roboconf from '../lang/roboconf.js'\nimport robotframework from '../lang/robotframework.js'\nimport rust from '../lang/rust.js'\nimport sas from '../lang/sas.js'\nimport sass from '../lang/sass.js'\nimport shellSession from '../lang/shell-session.js'\nimport smali from '../lang/smali.js'\nimport smalltalk from '../lang/smalltalk.js'\nimport smarty from '../lang/smarty.js'\nimport sml from '../lang/sml.js'\nimport solidity from '../lang/solidity.js'\nimport solutionFile from '../lang/solution-file.js'\nimport soy from '../lang/soy.js'\nimport turtle from '../lang/turtle.js'\nimport sparql from '../lang/sparql.js'\nimport splunkSpl from '../lang/splunk-spl.js'\nimport sqf from '../lang/sqf.js'\nimport squirrel from '../lang/squirrel.js'\nimport stan from '../lang/stan.js'\nimport stata from '../lang/stata.js'\nimport iecst from '../lang/iecst.js'\nimport supercollider from '../lang/supercollider.js'\nimport swift from '../lang/swift.js'\nimport systemd from '../lang/systemd.js'\nimport t4Templating from '../lang/t4-templating.js'\nimport t4Cs from '../lang/t4-cs.js'\nimport vbnet from '../lang/vbnet.js'\nimport t4Vb from '../lang/t4-vb.js'\nimport tap from '../lang/tap.js'\nimport tcl from '../lang/tcl.js'\nimport tt2 from '../lang/tt2.js'\nimport toml from '../lang/toml.js'\nimport tremor from '../lang/tremor.js'\nimport typoscript from '../lang/typoscript.js'\nimport unrealscript from '../lang/unrealscript.js'\nimport uorazor from '../lang/uorazor.js'\nimport v from '../lang/v.js'\nimport vala from '../lang/vala.js'\nimport velocity from '../lang/velocity.js'\nimport verilog from '../lang/verilog.js'\nimport vhdl from '../lang/vhdl.js'\nimport vim from '../lang/vim.js'\nimport visualBasic from '../lang/visual-basic.js'\nimport warpscript from '../lang/warpscript.js'\nimport wasm from '../lang/wasm.js'\nimport webIdl from '../lang/web-idl.js'\nimport wgsl from '../lang/wgsl.js'\nimport wiki from '../lang/wiki.js'\nimport wolfram from '../lang/wolfram.js'\nimport wren from '../lang/wren.js'\nimport xeora from '../lang/xeora.js'\nimport xmlDoc from '../lang/xml-doc.js'\nimport xojo from '../lang/xojo.js'\nimport xquery from '../lang/xquery.js'\nimport yang from '../lang/yang.js'\nimport zig from '../lang/zig.js'\nimport {refractor} from './core.js'\n\nrefractor.register(markup)\nrefractor.register(css)\nrefractor.register(clike)\nrefractor.register(regex)\nrefractor.register(javascript)\nrefractor.register(abap)\nrefractor.register(abnf)\nrefractor.register(actionscript)\nrefractor.register(ada)\nrefractor.register(agda)\nrefractor.register(al)\nrefractor.register(antlr4)\nrefractor.register(apacheconf)\nrefractor.register(sql)\nrefractor.register(apex)\nrefractor.register(apl)\nrefractor.register(applescript)\nrefractor.register(aql)\nrefractor.register(c)\nrefractor.register(cpp)\nrefractor.register(arduino)\nrefractor.register(arff)\nrefractor.register(armasm)\nrefractor.register(bash)\nrefractor.register(yaml)\nrefractor.register(markdown)\nrefractor.register(arturo)\nrefractor.register(asciidoc)\nrefractor.register(csharp)\nrefractor.register(aspnet)\nrefractor.register(asm6502)\nrefractor.register(asmatmel)\nrefractor.register(autohotkey)\nrefractor.register(autoit)\nrefractor.register(avisynth)\nrefractor.register(avroIdl)\nrefractor.register(awk)\nrefractor.register(basic)\nrefractor.register(batch)\nrefractor.register(bbcode)\nrefractor.register(bbj)\nrefractor.register(bicep)\nrefractor.register(birb)\nrefractor.register(bison)\nrefractor.register(bnf)\nrefractor.register(bqn)\nrefractor.register(brainfuck)\nrefractor.register(brightscript)\nrefractor.register(bro)\nrefractor.register(bsl)\nrefractor.register(cfscript)\nrefractor.register(chaiscript)\nrefractor.register(cil)\nrefractor.register(cilkc)\nrefractor.register(cilkcpp)\nrefractor.register(clojure)\nrefractor.register(cmake)\nrefractor.register(cobol)\nrefractor.register(coffeescript)\nrefractor.register(concurnas)\nrefractor.register(csp)\nrefractor.register(cooklang)\nrefractor.register(coq)\nrefractor.register(ruby)\nrefractor.register(crystal)\nrefractor.register(cssExtras)\nrefractor.register(csv)\nrefractor.register(cue)\nrefractor.register(cypher)\nrefractor.register(d)\nrefractor.register(dart)\nrefractor.register(dataweave)\nrefractor.register(dax)\nrefractor.register(dhall)\nrefractor.register(diff)\nrefractor.register(markupTemplating)\nrefractor.register(django)\nrefractor.register(dnsZoneFile)\nrefractor.register(docker)\nrefractor.register(dot)\nrefractor.register(ebnf)\nrefractor.register(editorconfig)\nrefractor.register(eiffel)\nrefractor.register(ejs)\nrefractor.register(elixir)\nrefractor.register(elm)\nrefractor.register(lua)\nrefractor.register(etlua)\nrefractor.register(erb)\nrefractor.register(erlang)\nrefractor.register(excelFormula)\nrefractor.register(fsharp)\nrefractor.register(factor)\nrefractor.register($false)\nrefractor.register(firestoreSecurityRules)\nrefractor.register(flow)\nrefractor.register(fortran)\nrefractor.register(ftl)\nrefractor.register(gml)\nrefractor.register(gap)\nrefractor.register(gcode)\nrefractor.register(gdscript)\nrefractor.register(gedcom)\nrefractor.register(gettext)\nrefractor.register(gherkin)\nrefractor.register(git)\nrefractor.register(glsl)\nrefractor.register(gn)\nrefractor.register(linkerScript)\nrefractor.register(go)\nrefractor.register(goModule)\nrefractor.register(gradle)\nrefractor.register(graphql)\nrefractor.register(groovy)\nrefractor.register(less)\nrefractor.register(scss)\nrefractor.register(textile)\nrefractor.register(haml)\nrefractor.register(handlebars)\nrefractor.register(haskell)\nrefractor.register(haxe)\nrefractor.register(hcl)\nrefractor.register(hlsl)\nrefractor.register(hoon)\nrefractor.register(hpkp)\nrefractor.register(hsts)\nrefractor.register(json)\nrefractor.register(uri)\nrefractor.register(http)\nrefractor.register(ichigojam)\nrefractor.register(icon)\nrefractor.register(icuMessageFormat)\nrefractor.register(idris)\nrefractor.register(ignore)\nrefractor.register(inform7)\nrefractor.register(ini)\nrefractor.register(io)\nrefractor.register(j)\nrefractor.register(java)\nrefractor.register(php)\nrefractor.register(javadoclike)\nrefractor.register(scala)\nrefractor.register(javadoc)\nrefractor.register(javastacktrace)\nrefractor.register(jexl)\nrefractor.register(jolie)\nrefractor.register(jq)\nrefractor.register(jsTemplates)\nrefractor.register(typescript)\nrefractor.register(jsdoc)\nrefractor.register(n4js)\nrefractor.register(jsExtras)\nrefractor.register(json5)\nrefractor.register(jsonp)\nrefractor.register(jsstacktrace)\nrefractor.register(julia)\nrefractor.register(keepalived)\nrefractor.register(keyman)\nrefractor.register(kotlin)\nrefractor.register(kumir)\nrefractor.register(kusto)\nrefractor.register(latex)\nrefractor.register(latte)\nrefractor.register(scheme)\nrefractor.register(lilypond)\nrefractor.register(liquid)\nrefractor.register(lisp)\nrefractor.register(livescript)\nrefractor.register(llvm)\nrefractor.register(log)\nrefractor.register(lolcode)\nrefractor.register(magma)\nrefractor.register(makefile)\nrefractor.register(mata)\nrefractor.register(matlab)\nrefractor.register(maxscript)\nrefractor.register(mel)\nrefractor.register(mermaid)\nrefractor.register(metafont)\nrefractor.register(mizar)\nrefractor.register(mongodb)\nrefractor.register(monkey)\nrefractor.register(moonscript)\nrefractor.register(n1ql)\nrefractor.register(nand2tetrisHdl)\nrefractor.register(naniscript)\nrefractor.register(nasm)\nrefractor.register(neon)\nrefractor.register(nevod)\nrefractor.register(nginx)\nrefractor.register(nim)\nrefractor.register(nix)\nrefractor.register(nsis)\nrefractor.register(objectivec)\nrefractor.register(ocaml)\nrefractor.register(odin)\nrefractor.register(opencl)\nrefractor.register(openqasm)\nrefractor.register(oz)\nrefractor.register(parigp)\nrefractor.register(parser)\nrefractor.register(pascal)\nrefractor.register(pascaligo)\nrefractor.register(psl)\nrefractor.register(pcaxis)\nrefractor.register(peoplecode)\nrefractor.register(perl)\nrefractor.register(phpdoc)\nrefractor.register(phpExtras)\nrefractor.register(plantUml)\nrefractor.register(plsql)\nrefractor.register(powerquery)\nrefractor.register(powershell)\nrefractor.register(processing)\nrefractor.register(prolog)\nrefractor.register(promql)\nrefractor.register(properties)\nrefractor.register(protobuf)\nrefractor.register(stylus)\nrefractor.register(twig)\nrefractor.register(pug)\nrefractor.register(puppet)\nrefractor.register(pure)\nrefractor.register(purebasic)\nrefractor.register(purescript)\nrefractor.register(python)\nrefractor.register(qsharp)\nrefractor.register(q)\nrefractor.register(qml)\nrefractor.register(qore)\nrefractor.register(r)\nrefractor.register(racket)\nrefractor.register(cshtml)\nrefractor.register(jsx)\nrefractor.register(tsx)\nrefractor.register(reason)\nrefractor.register(rego)\nrefractor.register(renpy)\nrefractor.register(rescript)\nrefractor.register(rest)\nrefractor.register(rip)\nrefractor.register(roboconf)\nrefractor.register(robotframework)\nrefractor.register(rust)\nrefractor.register(sas)\nrefractor.register(sass)\nrefractor.register(shellSession)\nrefractor.register(smali)\nrefractor.register(smalltalk)\nrefractor.register(smarty)\nrefractor.register(sml)\nrefractor.register(solidity)\nrefractor.register(solutionFile)\nrefractor.register(soy)\nrefractor.register(turtle)\nrefractor.register(sparql)\nrefractor.register(splunkSpl)\nrefractor.register(sqf)\nrefractor.register(squirrel)\nrefractor.register(stan)\nrefractor.register(stata)\nrefractor.register(iecst)\nrefractor.register(supercollider)\nrefractor.register(swift)\nrefractor.register(systemd)\nrefractor.register(t4Templating)\nrefractor.register(t4Cs)\nrefractor.register(vbnet)\nrefractor.register(t4Vb)\nrefractor.register(tap)\nrefractor.register(tcl)\nrefractor.register(tt2)\nrefractor.register(toml)\nrefractor.register(tremor)\nrefractor.register(typoscript)\nrefractor.register(unrealscript)\nrefractor.register(uorazor)\nrefractor.register(v)\nrefractor.register(vala)\nrefractor.register(velocity)\nrefractor.register(verilog)\nrefractor.register(vhdl)\nrefractor.register(vim)\nrefractor.register(visualBasic)\nrefractor.register(warpscript)\nrefractor.register(wasm)\nrefractor.register(webIdl)\nrefractor.register(wgsl)\nrefractor.register(wiki)\nrefractor.register(wolfram)\nrefractor.register(wren)\nrefractor.register(xeora)\nrefractor.register(xmlDoc)\nrefractor.register(xojo)\nrefractor.register(xquery)\nrefractor.register(yang)\nrefractor.register(zig)\n\nexport {refractor} from './core.js'\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef Options options\n * Configuration.\n * @property {boolean} [showLineNumbers]\n * Set `showLineNumbers` to `true` to always display line number\n * @property {boolean} [ignoreMissing]\n * Set `ignoreMissing` to `true` to ignore unsupported languages and line highlighting when no language is specified\n * @property {string} [defaultLanguage]\n * Uses the specified language as the default if none is specified. Takes precedence over `ignoreMissing`.\n * Note: The language must be registered with refractor.\n */\n\nimport { visit } from 'unist-util-visit'\nimport { toString } from 'hast-util-to-string'\nimport { filter } from 'unist-util-filter'\nimport rangeParser from 'parse-numeric-range'\n\nconst getLanguage = (node) => {\n const className = node.properties.className\n //@ts-ignore\n for (const classListItem of className) {\n if (classListItem.slice(0, 9) === 'language-') {\n return classListItem.slice(9).toLowerCase()\n }\n }\n return null\n}\n\n/**\n * @param {import('refractor/lib/core').Refractor} refractor\n * @param {string} defaultLanguage\n * @return {void}\n */\nconst checkIfLanguageIsRegistered = (refractor, defaultLanguage) => {\n if (defaultLanguage && !refractor.registered(defaultLanguage)) {\n throw new Error(`The default language \"${defaultLanguage}\" is not registered with refractor.`)\n }\n}\n\n/**\n * Create a closure that determines if we have to highlight the given index\n *\n * @param {string} meta\n * @return { (index:number) => boolean }\n */\nconst calculateLinesToHighlight = (meta) => {\n const RE = /{([\\d,-]+)}/\n // Remove space between {} e.g. {1, 3}\n const parsedMeta = meta\n .split(',')\n .map((str) => str.trim())\n .join()\n if (RE.test(parsedMeta)) {\n const strlineNumbers = RE.exec(parsedMeta)[1]\n const lineNumbers = rangeParser(strlineNumbers)\n return (index) => lineNumbers.includes(index + 1)\n } else {\n return () => false\n }\n}\n\n/**\n * Check if we want to start the line numbering from a given number or 1\n * showLineNumbers=5, will start the numbering from 5\n * @param {string} meta\n * @returns {number}\n */\nconst calculateStartingLine = (meta) => {\n const RE = /showLineNumbers=(?<lines>\\d+)/i\n // pick the line number after = using a named capturing group\n if (RE.test(meta)) {\n const {\n groups: { lines },\n } = RE.exec(meta)\n return Number(lines)\n }\n return 1\n}\n\n/**\n * Create container AST for node lines\n *\n * @param {number} number\n * @return {Element[]}\n */\nconst createLineNodes = (number) => {\n const a = new Array(number)\n for (let i = 0; i < number; i++) {\n a[i] = {\n type: 'element',\n tagName: 'span',\n properties: { className: [] },\n children: [],\n }\n }\n return a\n}\n\n/**\n * Split multiline text nodes into individual nodes with positioning\n * Add a node start and end line position information for each text node\n *\n * @return { (ast:Element['children']) => Element['children'] }\n *\n */\nconst addNodePositionClosure = () => {\n let startLineNum = 1\n /**\n * @param {Element['children']} ast\n * @return {Element['children']}\n */\n const addNodePosition = (ast) => {\n return ast.reduce((result, node) => {\n if (node.type === 'text') {\n const value = /** @type {string} */ (node.value)\n const numLines = (value.match(/\\n/g) || '').length\n if (numLines === 0) {\n node.position = {\n // column: 1 is needed to avoid error with @next/mdx\n // https://github.com/timlrx/rehype-prism-plus/issues/44\n start: { line: startLineNum, column: 1 },\n end: { line: startLineNum, column: 1 },\n }\n result.push(node)\n } else {\n const lines = value.split('\\n')\n for (const [i, line] of lines.entries()) {\n result.push({\n type: 'text',\n value: i === lines.length - 1 ? line : line + '\\n',\n position: {\n start: { line: startLineNum + i, column: 1 },\n end: { line: startLineNum + i, column: 1 },\n },\n })\n }\n }\n startLineNum = startLineNum + numLines\n\n return result\n }\n\n if (Object.prototype.hasOwnProperty.call(node, 'children')) {\n const initialLineNum = startLineNum\n // @ts-ignore\n node.children = addNodePosition(node.children, startLineNum)\n result.push(node)\n node.position = {\n start: { line: initialLineNum, column: 1 },\n end: { line: startLineNum, column: 1 },\n }\n return result\n }\n\n result.push(node)\n return result\n }, [])\n }\n return addNodePosition\n}\n\n/**\n * Rehype prism plugin generator that highlights code blocks with refractor (prismjs)\n *\n * Pass in your own refractor object with the required languages registered:\n * https://github.com/wooorm/refractor#refractorregistersyntax\n *\n * @param {import('refractor/lib/core').Refractor} refractor\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypePrismGenerator = (refractor) => {\n return (options = {}) => {\n checkIfLanguageIsRegistered(refractor, options.defaultLanguage)\n return (tree) => {\n visit(tree, 'element', visitor)\n }\n\n /**\n * @param {Element} node\n * @param {number} index\n * @param {Element} parent\n */\n function visitor(node, index, parent) {\n if (!parent || parent.tagName !== 'pre' || node.tagName !== 'code') {\n return\n }\n\n let meta = /** @type {string} */ (node?.data?.meta || node?.properties?.metastring || '')\n // Coerce className to array\n if (node.properties.className) {\n if (typeof node.properties.className === 'boolean') {\n node.properties.className = []\n } else if (!Array.isArray(node.properties.className)) {\n node.properties.className = [node.properties.className]\n }\n } else {\n node.properties.className = []\n }\n\n let lang = getLanguage(node)\n // If no language is set on the code block, use defaultLanguage if specified\n if (!lang && options.defaultLanguage) {\n lang = options.defaultLanguage\n node.properties.className.push(`language-${lang}`)\n }\n node.properties.className.push('code-highlight')\n\n /** @type {Element} */\n let refractorRoot\n\n // Syntax highlight\n if (lang) {\n try {\n let rootLang\n if (lang?.includes('diff-')) {\n rootLang = lang.split('-')[1]\n } else {\n rootLang = lang\n }\n // @ts-ignore\n refractorRoot = refractor.highlight(toString(node), rootLang)\n // @ts-ignore className is already an array\n parent.properties.className = (parent.properties.className || []).concat(\n 'language-' + rootLang\n )\n } catch (err) {\n if (options.ignoreMissing && /Unknown language/.test(err.message)) {\n refractorRoot = node\n } else {\n throw err\n }\n }\n } else {\n refractorRoot = node\n }\n\n refractorRoot.children = addNodePositionClosure()(refractorRoot.children)\n\n // Add position info to root\n if (refractorRoot.children.length > 0) {\n refractorRoot.position = {\n start: { line: refractorRoot.children[0].position.start.line, column: 0 },\n end: {\n line: refractorRoot.children[refractorRoot.children.length - 1].position.end.line,\n column: 0,\n },\n }\n } else {\n refractorRoot.position = {\n start: { line: 0, column: 0 },\n end: { line: 0, column: 0 },\n }\n }\n\n const shouldHighlightLine = calculateLinesToHighlight(meta)\n const startingLineNumber = calculateStartingLine(meta)\n const codeLineArray = createLineNodes(refractorRoot.position.end.line)\n\n const falseShowLineNumbersStr = [\n 'showlinenumbers=false',\n 'showlinenumbers=\"false\"',\n 'showlinenumbers={false}',\n ]\n for (const [i, line] of codeLineArray.entries()) {\n // Default class name for each line\n line.properties.className = ['code-line']\n\n // Syntax highlight\n const treeExtract = filter(\n refractorRoot,\n (node) => node.position.start.line <= i + 1 && node.position.end.line >= i + 1\n )\n line.children = treeExtract.children\n\n // Line number\n if (\n (meta.toLowerCase().includes('showLineNumbers'.toLowerCase()) ||\n options.showLineNumbers) &&\n !falseShowLineNumbersStr.some((str) => meta.toLowerCase().includes(str))\n ) {\n line.properties.line = [(i + startingLineNumber).toString()]\n line.properties.className.push('line-number')\n }\n\n // Line highlight\n if (shouldHighlightLine(i)) {\n line.properties.className.push('highlight-line')\n }\n\n // Diff classes\n if (\n (lang === 'diff' || lang?.includes('diff-')) &&\n toString(line).substring(0, 1) === '-'\n ) {\n line.properties.className.push('deleted')\n } else if (\n (lang === 'diff' || lang?.includes('diff-')) &&\n toString(line).substring(0, 1) === '+'\n ) {\n line.properties.className.push('inserted')\n }\n }\n\n // Remove possible trailing line when splitting by \\n which results in empty array\n if (\n codeLineArray.length > 0 &&\n toString(codeLineArray[codeLineArray.length - 1]).trim() === ''\n ) {\n codeLineArray.pop()\n }\n\n node.children = codeLineArray\n }\n }\n}\n\nexport default rehypePrismGenerator\n","import { refractor as refractorAll } from 'refractor/lib/all.js'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * This supports all the languages and should be used on the server side.\n *\n * Consider using rehypePrismCommon or rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismAll = rehypePrismGenerator(refractorAll)\n\nexport default rehypePrismAll\n","import { refractor as refractorCommon } from 'refractor/lib/common.js'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * Supported languages: https://github.com/wooorm/refractor#data\n *\n * Consider using rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismCommon = rehypePrismGenerator(refractorCommon)\n\nexport default rehypePrismCommon\n","const rtlRange = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nconst ltrRange =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\n/* eslint-disable no-misleading-character-class */\nconst rtl = new RegExp('^[^' + ltrRange + ']*[' + rtlRange + ']')\nconst ltr = new RegExp('^[^' + rtlRange + ']*[' + ltrRange + ']')\n/* eslint-enable no-misleading-character-class */\n\n/**\n * Detect the direction of text: left-to-right, right-to-left, or neutral\n *\n * @param {string} value\n * @returns {'rtl'|'ltr'|'neutral'}\n */\nexport function direction(value) {\n const source = String(value || '')\n return rtl.test(source) ? 'rtl' : ltr.test(source) ? 'ltr' : 'neutral'\n}\n","/**\n * @typedef {import('./types.js').SelectState} SelectState\n * @typedef {import('./types.js').Node} Node\n * @typedef {import('./types.js').ElementChild} ElementChild\n * @typedef {import('./types.js').Direction} Direction\n * @typedef {import('unist-util-visit/complex-types.js').Visitor<ElementChild>} Visitor\n */\n\nimport {direction} from 'direction'\nimport {toString} from 'hast-util-to-string'\nimport {svg} from 'property-information'\nimport {visit, EXIT, SKIP} from 'unist-util-visit'\n\n/**\n * Enter a node.\n *\n * The caller is responsible for calling the return value `exit`.\n *\n * @param {SelectState} state\n * Current state.\n *\n * Will be mutated: `exit` undos the changes.\n * @param {Node} node\n * Node to enter.\n * @returns {() => void}\n * Call to exit.\n */\n// eslint-disable-next-line complexity\nexport function enterState(state, node) {\n const schema = state.schema\n const language = state.language\n const currentDirection = state.direction\n const editableOrEditingHost = state.editableOrEditingHost\n /** @type {Direction | undefined} */\n let dirInferred\n\n if (node.type === 'element' && node.properties) {\n const lang = node.properties.xmlLang || node.properties.lang\n const type = node.properties.type || 'text'\n const dir = dirProperty(node)\n\n if (lang !== undefined && lang !== null) {\n state.language = String(lang)\n }\n\n if (schema && schema.space === 'html') {\n if (node.properties.contentEditable === 'true') {\n state.editableOrEditingHost = true\n }\n\n if (node.tagName === 'svg') {\n state.schema = svg\n }\n\n // See: <https://html.spec.whatwg.org/#the-directionality>.\n // Explicit `[dir=rtl]`.\n if (dir === 'rtl') {\n dirInferred = dir\n } else if (\n // Explicit `[dir=ltr]`.\n dir === 'ltr' ||\n // HTML with an invalid or no `[dir]`.\n (dir !== 'auto' && node.tagName === 'html') ||\n // `input[type=tel]` with an invalid or no `[dir]`.\n (dir !== 'auto' && node.tagName === 'input' && type === 'tel')\n ) {\n dirInferred = 'ltr'\n // `[dir=auto]` or `bdi` with an invalid or no `[dir]`.\n } else if (dir === 'auto' || node.tagName === 'bdi') {\n if (node.tagName === 'textarea') {\n // Check contents of `<textarea>`.\n dirInferred = dirBidi(toString(node))\n } else if (\n node.tagName === 'input' &&\n (type === 'email' ||\n type === 'search' ||\n type === 'tel' ||\n type === 'text')\n ) {\n // Check value of `<input>`.\n dirInferred = node.properties.value\n ? // @ts-expect-error Assume string\n dirBidi(node.properties.value)\n : 'ltr'\n } else {\n // Check text nodes in `node`.\n visit(node, inferDirectionality)\n }\n }\n\n if (dirInferred) {\n state.direction = dirInferred\n }\n }\n // Turn off editing mode in non-HTML spaces.\n else if (state.editableOrEditingHost) {\n state.editableOrEditingHost = false\n }\n }\n\n return reset\n\n function reset() {\n state.schema = schema\n state.language = language\n state.direction = currentDirection\n state.editableOrEditingHost = editableOrEditingHost\n }\n\n /** @type {Visitor} */\n function inferDirectionality(child) {\n if (child.type === 'text') {\n dirInferred = dirBidi(child.value)\n return dirInferred ? EXIT : undefined\n }\n\n if (\n child !== node &&\n child.type === 'element' &&\n (child.tagName === 'bdi' ||\n child.tagName === 'script' ||\n child.tagName === 'style' ||\n child.tagName === 'textare' ||\n dirProperty(child))\n ) {\n return SKIP\n }\n }\n}\n\n/**\n * @param {string} value\n * @returns {Direction | undefined}\n */\nfunction dirBidi(value) {\n const result = direction(value)\n return result === 'neutral' ? undefined : result\n}\n\n/**\n * @param {ElementChild} node\n * @returns {Direction | undefined}\n */\nfunction dirProperty(node) {\n const value =\n node.type === 'element' &&\n node.properties &&\n typeof node.properties.dir === 'string'\n ? node.properties.dir.toLowerCase()\n : undefined\n\n return value === 'auto' || value === 'ltr' || value === 'rtl'\n ? value\n : undefined\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n */\n\n/**\n * @typedef {Root | Content} Node\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Check if `node`is an element and has a `field` property.\n *\n * @param {unknown} node\n * Thing to check (typically `Element`).\n * @param {unknown} field\n * Field name to check (typically `string`).\n * @returns {boolean}\n * Whether `node` is an element that has a `field` property.\n */\nexport function hasProperty(node, field) {\n const value =\n typeof field === 'string' &&\n isNode(node) &&\n node.type === 'element' &&\n node.properties &&\n own.call(node.properties, field) &&\n node.properties[field]\n\n return value !== null && value !== undefined && value !== false\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction isNode(value) {\n return Boolean(value && typeof value === 'object' && 'type' in value)\n}\n","/**\n * @typedef {import('./types.js').Rule} Rule\n * @typedef {import('./types.js').RuleAttr} RuleAttr\n * @typedef {import('./types.js').Element} Element\n * @typedef {import('./types.js').Schema} Schema\n * @typedef {import('./types.js').Info} Info\n * @typedef {import('./types.js').PropertyValue} PropertyValue\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {hasProperty} from 'hast-util-has-property'\nimport {find} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {zwitch} from 'zwitch'\n\n/** @type {(query: RuleAttr, element: Element, info: Info) => boolean} */\nconst handle = zwitch('operator', {\n unknown: unknownOperator,\n // @ts-expect-error: hush.\n invalid: exists,\n handlers: {\n '=': exact,\n '~=': spaceSeparatedList,\n '|=': exactOrPrefix,\n '^=': begins,\n '$=': ends,\n '*=': contains\n }\n})\n\n/**\n * @param {Rule} query\n * @param {Element} element\n * @param {Schema} schema\n * @returns {boolean}\n */\nexport function attribute(query, element, schema) {\n const attrs = query.attrs\n let index = -1\n\n while (++index < attrs.length) {\n if (!handle(attrs[index], element, find(schema, attrs[index].name))) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Check whether an attribute exists.\n *\n * `[attr]`\n *\n * @param {RuleAttr} _\n * @param {Element} element\n * @param {Info} info\n * @returns {boolean}\n */\nfunction exists(_, element, info) {\n return hasProperty(element, info.property)\n}\n\n/**\n * Check whether an attribute has an exact value.\n *\n * `[attr=value]`\n *\n * @param {RuleAttr} query\n * @param {Element} element\n * @param {Info} info\n * @returns {boolean}\n */\nfunction exact(query, element, info) {\n return Boolean(\n hasProperty(element, info.property) &&\n element.properties &&\n normalizeValue(element.properties[info.property], info) === query.value\n )\n}\n\n/**\n * Check whether an attribute, interpreted as a space-separated list, contains\n * a value.\n *\n * `[attr~=value]`\n *\n * @param {RuleAttr} query\n * @param {Element} element\n * @param {Info} info\n * @returns {boolean}\n */\nfunction spaceSeparatedList(query, element, info) {\n const value = element.properties && element.properties[info.property]\n\n return (\n // If this is a space-separated list, and the query is contained in it, return\n // true.\n (!info.commaSeparated &&\n value &&\n typeof value === 'object' &&\n query.value &&\n value.includes(query.value)) ||\n // For all other values (including comma-separated lists), return whether this\n // is an exact match.\n (hasProperty(element, info.property) &&\n normalizeValue(value, info) === query.value)\n )\n}\n\n/**\n * Check whether an attribute has a substring as either the exact value or a\n * prefix.\n *\n * `[attr|=value]`\n *\n * @param {RuleAttr} query\n * @param {Element} element\n * @param {Info} info\n * @returns {boolean}\n */\nfunction exactOrPrefix(query, element, info) {\n const value = normalizeValue(\n element.properties && element.properties[info.property],\n info\n )\n\n return Boolean(\n hasProperty(element, info.property) &&\n query.value &&\n (value === query.value ||\n (value.slice(0, query.value.length) === query.value &&\n value.charAt(query.value.length) === '-'))\n )\n}\n\n/**\n * Check whether an attribute has a substring as its start.\n *\n * `[attr^=value]`\n *\n * @param {RuleAttr} query\n * @param {Element} element\n * @param {Info} info\n * @returns {boolean}\n */\nfunction begins(query, element, info) {\n return Boolean(\n hasProperty(element, info.property) &&\n element.properties &&\n query.value &&\n normalizeValue(element.properties[info.property], info).slice(\n 0,\n query.value.length\n ) === query.value\n )\n}\n\n/**\n * Check whether an attribute has a substring as its end.\n *\n * `[attr$=value]`\n *\n * @param {RuleAttr} query\n * @param {Element} element\n * @param {Info} info\n * @returns {boolean}\n */\nfunction ends(query, element, info) {\n return Boolean(\n hasProperty(element, info.property) &&\n element.properties &&\n query.value &&\n normalizeValue(element.properties[info.property], info).slice(\n -query.value.length\n ) === query.value\n )\n}\n\n/**\n * Check whether an attribute contains a substring.\n *\n * `[attr*=value]`\n *\n * @param {RuleAttr} query\n * @param {Element} element\n * @param {Info} info\n * @returns {boolean}\n */\nfunction contains(query, element, info) {\n return Boolean(\n hasProperty(element, info.property) &&\n element.properties &&\n query.value &&\n normalizeValue(element.properties[info.property], info).includes(\n query.value\n )\n )\n}\n\n// Shouldn’t be called, Parser throws an error instead.\n/**\n * @param {unknown} query\n * @returns {never}\n */\n/* c8 ignore next 4 */\nfunction unknownOperator(query) {\n // @ts-expect-error: `operator` guaranteed.\n throw new Error('Unknown operator `' + query.operator + '`')\n}\n\n/**\n * Stringify a hast value back to its HTML form.\n *\n * @param {PropertyValue} value\n * @param {Info} info\n * @returns {string}\n */\nfunction normalizeValue(value, info) {\n if (typeof value === 'boolean') {\n return info.attribute\n }\n\n if (Array.isArray(value)) {\n return (info.commaSeparated ? commas : spaces)(value)\n }\n\n return String(value)\n}\n","/**\n * See <https://tools.ietf.org/html/rfc4647#section-3.1>\n * for more info on the algorithms.\n */\n\n/**\n * @typedef {string} Tag\n * BCP-47 tag.\n * @typedef {Array<Tag>} Tags\n * List of BCP-47 tags.\n * @typedef {string} Range\n * RFC 4647 range.\n * @typedef {Array<Range>} Ranges\n * List of RFC 4647 range.\n *\n * @callback Check\n * An internal check.\n * @param {Tag} tag\n * BCP-47 tag.\n * @param {Range} range\n * RFC 4647 range.\n * @returns {boolean}\n * Whether the range matches the tag.\n *\n * @typedef {FilterOrLookup<true>} Filter\n * Filter: yields all tags that match a range.\n * @typedef {FilterOrLookup<false>} Lookup\n * Lookup: yields the best tag that matches a range.\n */\n\n/**\n * @template {boolean} IsFilter\n * Whether to filter or perform a lookup.\n * @callback FilterOrLookup\n * A check.\n * @param {Tag|Tags} tags\n * One or more BCP-47 tags.\n * @param {Range|Ranges|undefined} [ranges='*']\n * One or more RFC 4647 ranges.\n * @returns {IsFilter extends true ? Tags : Tag|undefined}\n * Result.\n */\n\n/**\n * Factory to perform a filter or a lookup.\n *\n * This factory creates a function that accepts a list of tags and a list of\n * ranges, and contains logic to exit early for lookups.\n * `check` just has to deal with one tag and one range.\n * This match function iterates over ranges, and for each range,\n * iterates over tags.\n * That way, earlier ranges matching any tag have precedence over later ranges.\n *\n * @template {boolean} IsFilter\n * @param {Check} check\n * A check.\n * @param {IsFilter} filter\n * Whether to filter or perform a lookup.\n * @returns {FilterOrLookup<IsFilter>}\n * Filter or lookup.\n */\nfunction factory(check, filter) {\n /**\n * @param {Tag|Tags} tags\n * One or more BCP-47 tags.\n * @param {Range|Ranges|undefined} [ranges='*']\n * One or more RFC 4647 ranges.\n * @returns {IsFilter extends true ? Tags : Tag|undefined}\n * Result.\n */\n return function (tags, ranges) {\n let left = cast(tags, 'tag')\n const right = cast(\n ranges === null || ranges === undefined ? '*' : ranges,\n 'range'\n )\n /** @type {Tags} */\n const matches = []\n let rightIndex = -1\n\n while (++rightIndex < right.length) {\n const range = right[rightIndex].toLowerCase()\n\n // Ignore wildcards in lookup mode.\n if (!filter && range === '*') continue\n\n let leftIndex = -1\n /** @type {Tags} */\n const next = []\n\n while (++leftIndex < left.length) {\n if (check(left[leftIndex].toLowerCase(), range)) {\n // Exit if this is a lookup and we have a match.\n if (!filter) {\n return /** @type {IsFilter extends true ? Tags : Tag|undefined} */ (\n left[leftIndex]\n )\n }\n\n matches.push(left[leftIndex])\n } else {\n next.push(left[leftIndex])\n }\n }\n\n left = next\n }\n\n // If this is a filter, return the list. If it’s a lookup, we didn’t find\n // a match, so return `undefined`.\n return /** @type {IsFilter extends true ? Tags : Tag|undefined} */ (\n filter ? matches : undefined\n )\n }\n}\n\n/**\n * Basic Filtering (Section 3.3.1) matches a language priority list consisting\n * of basic language ranges (Section 2.1) to sets of language tags.\n *\n * @param {Tag|Tags} tags\n * One or more BCP-47 tags.\n * @param {Range|Ranges|undefined} [ranges='*']\n * One or more RFC 4647 ranges.\n * @returns {Tags}\n * List of BCP-47 tags.\n */\nexport const basicFilter = factory(function (tag, range) {\n return range === '*' || tag === range || tag.includes(range + '-')\n}, true)\n\n/**\n * Extended Filtering (Section 3.3.2) matches a language priority list\n * consisting of extended language ranges (Section 2.2) to sets of language\n * tags.\n *\n * @param {Tag|Tags} tags\n * One or more BCP-47 tags.\n * @param {Range|Ranges|undefined} [ranges='*']\n * One or more RFC 4647 ranges.\n * @returns {Tags}\n * List of BCP-47 tags.\n */\nexport const extendedFilter = factory(function (tag, range) {\n // 3.3.2.1\n const left = tag.split('-')\n const right = range.split('-')\n let leftIndex = 0\n let rightIndex = 0\n\n // 3.3.2.2\n if (right[rightIndex] !== '*' && left[leftIndex] !== right[rightIndex]) {\n return false\n }\n\n leftIndex++\n rightIndex++\n\n // 3.3.2.3\n while (rightIndex < right.length) {\n // 3.3.2.3.A\n if (right[rightIndex] === '*') {\n rightIndex++\n continue\n }\n\n // 3.3.2.3.B\n if (!left[leftIndex]) return false\n\n // 3.3.2.3.C\n if (left[leftIndex] === right[rightIndex]) {\n leftIndex++\n rightIndex++\n continue\n }\n\n // 3.3.2.3.D\n if (left[leftIndex].length === 1) return false\n\n // 3.3.2.3.E\n leftIndex++\n }\n\n // 3.3.2.4\n return true\n}, true)\n\n/**\n * Lookup (Section 3.4) matches a language priority list consisting of basic\n * language ranges to sets of language tags to find the one exact language tag\n * that best matches the range.\n *\n * @param {Tag|Tags} tags\n * One or more BCP-47 tags.\n * @param {Range|Ranges|undefined} [ranges='*']\n * One or more RFC 4647 ranges.\n * @returns {Tag|undefined}\n * BCP-47 tag.\n */\nexport const lookup = factory(function (tag, range) {\n let right = range\n\n /* eslint-disable-next-line no-constant-condition */\n while (true) {\n if (right === '*' || tag === right) return true\n\n let index = right.lastIndexOf('-')\n\n if (index < 0) return false\n\n if (right.charAt(index - 2) === '-') index -= 2\n\n right = right.slice(0, index)\n }\n}, false)\n\n/**\n * Validate tags or ranges, and cast them to arrays.\n *\n * @param {string|Array<string>} values\n * @param {string} name\n * @returns {Array<string>}\n */\nfunction cast(values, name) {\n const value = values && typeof values === 'string' ? [values] : values\n\n if (!value || typeof value !== 'object' || !('length' in value)) {\n throw new Error(\n 'Invalid ' + name + ' `' + value + '`, expected non-empty string'\n )\n }\n\n return value\n}\n",null,null,null,"/**\n * @typedef {import('./types.js').Rule} Rule\n * @typedef {import('./types.js').RulePseudo} RulePseudo\n * @typedef {import('./types.js').RulePseudoSelector} RulePseudoSelector\n * @typedef {import('./types.js').Parent} Parent\n * @typedef {import('./types.js').SelectState} SelectState\n * @typedef {import('./types.js').Element} Element\n * @typedef {import('./types.js').ElementChild} ElementChild\n */\n\nimport {extendedFilter} from 'bcp-47-match'\nimport {parse as commas} from 'comma-separated-tokens'\nimport {hasProperty} from 'hast-util-has-property'\nimport {whitespace} from 'hast-util-whitespace'\nimport fauxEsmNthCheck from 'nth-check'\nimport {zwitch} from 'zwitch'\nimport {queryToSelectors, walk} from './walk.js'\n\n/** @type {import('nth-check').default} */\n// @ts-expect-error\nconst nthCheck = fauxEsmNthCheck.default || fauxEsmNthCheck\n\n/** @type {(rule: Rule | RulePseudo, element: Element, index: number | undefined, parent: Parent | undefined, state: SelectState) => boolean} */\nconst handle = zwitch('name', {\n unknown: unknownPseudo,\n invalid: invalidPseudo,\n handlers: {\n any: matches,\n 'any-link': anyLink,\n blank,\n checked,\n dir,\n disabled,\n empty,\n enabled,\n 'first-child': firstChild,\n 'first-of-type': firstOfType,\n has,\n lang,\n 'last-child': lastChild,\n 'last-of-type': lastOfType,\n matches,\n not,\n 'nth-child': nthChild,\n 'nth-last-child': nthLastChild,\n 'nth-of-type': nthOfType,\n 'nth-last-of-type': nthLastOfType,\n 'only-child': onlyChild,\n 'only-of-type': onlyOfType,\n optional,\n 'read-only': readOnly,\n 'read-write': readWrite,\n required,\n root,\n scope\n }\n})\n\npseudo.needsIndex = [\n 'any',\n 'first-child',\n 'first-of-type',\n 'last-child',\n 'last-of-type',\n 'matches',\n 'not',\n 'nth-child',\n 'nth-last-child',\n 'nth-of-type',\n 'nth-last-of-type',\n 'only-child',\n 'only-of-type'\n]\n\n/**\n * Check whether an element matches pseudo selectors.\n *\n * @param {Rule} query\n * @param {Element} element\n * @param {number | undefined} index\n * @param {Parent | undefined} parent\n * @param {SelectState} state\n * @returns {boolean}\n */\nexport function pseudo(query, element, index, parent, state) {\n const pseudos = query.pseudos\n let offset = -1\n\n while (++offset < pseudos.length) {\n if (!handle(pseudos[offset], element, index, parent, state)) return false\n }\n\n return true\n}\n\n/**\n * Check whether an element matches an `:any-link` pseudo.\n *\n * @param {RulePseudo} _\n * @param {Element} element\n * @returns {boolean}\n */\nfunction anyLink(_, element) {\n return (\n (element.tagName === 'a' ||\n element.tagName === 'area' ||\n element.tagName === 'link') &&\n hasProperty(element, 'href')\n )\n}\n\n/**\n * Check whether an element matches a `:blank` pseudo.\n *\n * @param {RulePseudo} _\n * @param {Element} element\n * @returns {boolean}\n */\nfunction blank(_, element) {\n return !someChildren(element, check)\n\n /**\n * @param {ElementChild} child\n * @returns {boolean}\n */\n function check(child) {\n return (\n child.type === 'element' || (child.type === 'text' && !whitespace(child))\n )\n }\n}\n\n/**\n * Check whether an element matches a `:checked` pseudo.\n *\n * @param {RulePseudo} _\n * @param {Element} element\n * @returns {boolean}\n */\nfunction checked(_, element) {\n if (element.tagName === 'input' || element.tagName === 'menuitem') {\n return Boolean(\n element.properties &&\n (element.properties.type === 'checkbox' ||\n element.properties.type === 'radio') &&\n hasProperty(element, 'checked')\n )\n }\n\n if (element.tagName === 'option') {\n return hasProperty(element, 'selected')\n }\n\n return false\n}\n\n/**\n * Check whether an element matches a `:dir()` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction dir(query, _1, _2, _3, state) {\n return state.direction === query.value\n}\n\n/**\n * Check whether an element matches a `:disabled` pseudo.\n *\n * @param {RulePseudo} _\n * @param {Element} element\n * @returns {boolean}\n */\nfunction disabled(_, element) {\n return (\n (element.tagName === 'button' ||\n element.tagName === 'input' ||\n element.tagName === 'select' ||\n element.tagName === 'textarea' ||\n element.tagName === 'optgroup' ||\n element.tagName === 'option' ||\n element.tagName === 'menuitem' ||\n element.tagName === 'fieldset') &&\n hasProperty(element, 'disabled')\n )\n}\n\n/**\n * Check whether an element matches an `:empty` pseudo.\n *\n * @param {RulePseudo} _\n * @param {Element} element\n * @returns {boolean}\n */\nfunction empty(_, element) {\n return !someChildren(element, check)\n\n /**\n * @param {ElementChild} child\n * @returns {boolean}\n */\n function check(child) {\n return child.type === 'element' || child.type === 'text'\n }\n}\n\n/**\n * Check whether an element matches an `:enabled` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} element\n * @returns {boolean}\n */\nfunction enabled(query, element) {\n return !disabled(query, element)\n}\n\n/**\n * Check whether an element matches a `:first-child` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction firstChild(query, _1, _2, _3, state) {\n assertDeep(state, query)\n return state.elementIndex === 0\n}\n\n/**\n * Check whether an element matches a `:first-of-type` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction firstOfType(query, _1, _2, _3, state) {\n assertDeep(state, query)\n return state.typeIndex === 0\n}\n\n/**\n * @param {RulePseudoSelector} query\n * @param {Element} element\n * @param {number | undefined} _1\n * @param {Parent | undefined} _2\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction has(query, element, _1, _2, state) {\n /** @type {SelectState} */\n const childState = {\n ...state,\n // Not found yet.\n found: false,\n // Do walk deep.\n shallow: false,\n // One result is enough.\n one: true,\n scopeElements: [element],\n results: [],\n rootQuery: queryToSelectors(query.value)\n }\n\n walk(childState, {type: 'root', children: element.children})\n\n return childState.results.length > 0\n}\n\n/**\n * Check whether an element matches a `:lang()` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction lang(query, _1, _2, _3, state) {\n return (\n state.language !== '' &&\n state.language !== undefined &&\n // @ts-expect-error never `selectors`.\n extendedFilter(state.language, commas(query.value)).length > 0\n )\n}\n\n/**\n * Check whether an element matches a `:last-child` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction lastChild(query, _1, _2, _3, state) {\n assertDeep(state, query)\n return Boolean(\n state.elementCount && state.elementIndex === state.elementCount - 1\n )\n}\n\n/**\n * Check whether an element matches a `:last-of-type` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction lastOfType(query, _1, _2, _3, state) {\n assertDeep(state, query)\n return (\n typeof state.typeIndex === 'number' &&\n typeof state.typeCount === 'number' &&\n state.typeIndex === state.typeCount - 1\n )\n}\n\n/**\n * Check whether an element `:matches` further selectors.\n *\n * @param {RulePseudoSelector} query\n * @param {Element} element\n * @param {number | undefined} _\n * @param {Parent | undefined} parent\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction matches(query, element, _, parent, state) {\n /** @type {SelectState} */\n const childState = {\n ...state,\n // Not found yet.\n found: false,\n // Do walk deep.\n shallow: false,\n // One result is enough.\n one: true,\n scopeElements: [element],\n results: [],\n rootQuery: queryToSelectors(query.value)\n }\n\n walk(childState, element)\n\n return childState.results[0] === element\n}\n\n/**\n * Check whether an element does `:not` match further selectors.\n *\n * @param {RulePseudoSelector} query\n * @param {Element} element\n * @param {number | undefined} index\n * @param {Parent | undefined} parent\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction not(query, element, index, parent, state) {\n return !matches(query, element, index, parent, state)\n}\n\n/**\n * Check whether an element matches an `:nth-child` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction nthChild(query, _1, _2, _3, state) {\n const fn = getCachedNthCheck(query)\n assertDeep(state, query)\n return typeof state.elementIndex === 'number' && fn(state.elementIndex)\n}\n\n/**\n * Check whether an element matches an `:nth-last-child` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction nthLastChild(query, _1, _2, _3, state) {\n const fn = getCachedNthCheck(query)\n assertDeep(state, query)\n return Boolean(\n typeof state.elementCount === 'number' &&\n typeof state.elementIndex === 'number' &&\n fn(state.elementCount - state.elementIndex - 1)\n )\n}\n\n/**\n * Check whether an element matches a `:nth-last-of-type` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction nthLastOfType(query, _1, _2, _3, state) {\n const fn = getCachedNthCheck(query)\n assertDeep(state, query)\n return (\n typeof state.typeCount === 'number' &&\n typeof state.typeIndex === 'number' &&\n fn(state.typeCount - 1 - state.typeIndex)\n )\n}\n\n/**\n * Check whether an element matches an `:nth-of-type` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction nthOfType(query, _1, _2, _3, state) {\n const fn = getCachedNthCheck(query)\n assertDeep(state, query)\n return typeof state.typeIndex === 'number' && fn(state.typeIndex)\n}\n\n/**\n * Check whether an element matches an `:only-child` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction onlyChild(query, _1, _2, _3, state) {\n assertDeep(state, query)\n return state.elementCount === 1\n}\n\n/**\n * Check whether an element matches an `:only-of-type` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} _1\n * @param {number | undefined} _2\n * @param {Parent | undefined} _3\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction onlyOfType(query, _1, _2, _3, state) {\n assertDeep(state, query)\n return state.typeCount === 1\n}\n\n/**\n * Check whether an element matches an `:optional` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} element\n * @returns {boolean}\n */\nfunction optional(query, element) {\n return !required(query, element)\n}\n\n/**\n * Check whether an element matches a `:read-only` pseudo.\n *\n * @param {RulePseudo} query\n * @param {Element} element\n * @param {number | undefined} index\n * @param {Parent | undefined} parent\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction readOnly(query, element, index, parent, state) {\n return !readWrite(query, element, index, parent, state)\n}\n\n/**\n * Check whether an element matches a `:read-write` pseudo.\n *\n * @param {RulePseudo} _\n * @param {Element} element\n * @param {number | undefined} _1\n * @param {Parent | undefined} _2\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction readWrite(_, element, _1, _2, state) {\n return element.tagName === 'input' || element.tagName === 'textarea'\n ? !hasProperty(element, 'readOnly') && !hasProperty(element, 'disabled')\n : Boolean(state.editableOrEditingHost)\n}\n\n/**\n * Check whether an element matches a `:required` pseudo.\n *\n * @param {RulePseudo} _\n * @param {Element} element\n * @returns {boolean}\n */\nfunction required(_, element) {\n return (\n (element.tagName === 'input' ||\n element.tagName === 'textarea' ||\n element.tagName === 'select') &&\n hasProperty(element, 'required')\n )\n}\n\n/**\n * Check whether an element matches a `:root` pseudo.\n *\n * @param {RulePseudo} _\n * @param {Element} element\n * @param {number | undefined} _1\n * @param {Parent | undefined} parent\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction root(_, element, _1, parent, state) {\n return Boolean(\n (!parent || parent.type === 'root') &&\n state.schema &&\n (state.schema.space === 'html' || state.schema.space === 'svg') &&\n (element.tagName === 'html' || element.tagName === 'svg')\n )\n}\n\n/**\n * Check whether an element matches a `:scope` pseudo.\n *\n * @param {RulePseudo} _\n * @param {Element} element\n * @param {number | undefined} _1\n * @param {Parent | undefined} _2\n * @param {SelectState} state\n * @returns {boolean}\n */\nfunction scope(_, element, _1, _2, state) {\n return state.scopeElements.includes(element)\n}\n\n// Shouldn’t be called, parser gives correct data.\n/* c8 ignore next 3 */\nfunction invalidPseudo() {\n throw new Error('Invalid pseudo-selector')\n}\n\n/**\n * @param {unknown} query\n * @returns {never}\n */\nfunction unknownPseudo(query) {\n // @ts-expect-error: indexable.\n if (query.name) {\n // @ts-expect-error: indexable.\n throw new Error('Unknown pseudo-selector `' + query.name + '`')\n }\n\n throw new Error('Unexpected pseudo-element or empty pseudo-class')\n}\n\n/**\n * Check children.\n *\n * @param {Element} element\n * @param {(child: ElementChild) => boolean} check\n * @returns {boolean}\n */\nfunction someChildren(element, check) {\n const children = element.children\n let index = -1\n\n while (++index < children.length) {\n if (check(children[index])) return true\n }\n\n return false\n}\n\n/**\n * @param {SelectState} state\n * @param {RulePseudo} query\n */\nfunction assertDeep(state, query) {\n if (state.shallow) {\n throw new Error('Cannot use `:' + query.name + '` without parent')\n }\n}\n\n/**\n * @param {RulePseudo} query\n * @returns {(value: number) => boolean}\n */\nfunction getCachedNthCheck(query) {\n /** @type {(value: number) => boolean} */\n // @ts-expect-error: cache.\n let fn = query._cachedFn\n\n if (!fn) {\n // @ts-expect-error: always string.\n fn = nthCheck(query.value)\n // @ts-expect-error: cache.\n query._cachedFn = fn\n }\n\n return fn\n}\n","/**\n * @typedef {import('./types.js').Rule} Rule\n * @typedef {import('./types.js').Element} Element\n * @typedef {import('./types.js').Parent} Parent\n * @typedef {import('./types.js').SelectState} SelectState\n */\n\nimport {attribute} from './attribute.js'\nimport {className} from './class-name.js'\nimport {id} from './id.js'\nimport {name} from './name.js'\nimport {pseudo} from './pseudo.js'\n\n/**\n * Test a rule.\n *\n * @param {Rule} query\n * @param {Element} element\n * @param {number | undefined} index\n * @param {Parent | undefined} parent\n * @param {SelectState} state\n * @returns {boolean}\n */\nexport function test(query, element, index, parent, state) {\n return Boolean(\n (!query.tagName || name(query, element)) &&\n (!query.classNames || className(query, element)) &&\n (!query.id || id(query, element)) &&\n (!query.attrs || attribute(query, element, state.schema)) &&\n (!query.pseudos || pseudo(query, element, index, parent, state))\n )\n}\n","/**\n * @typedef {import('./types.js').Rule} Rule\n * @typedef {import('./types.js').Element} Element\n */\n\n/**\n * Check whether an element has a tag name.\n *\n * @param {Rule} query\n * @param {Element} element\n * @returns {boolean}\n */\nexport function name(query, element) {\n return query.tagName === '*' || query.tagName === element.tagName\n}\n","/**\n * @typedef {import('./types.js').Rule} Rule\n * @typedef {import('./types.js').Element} Element\n */\n\n/**\n * Check whether an element has all class names.\n *\n * @param {Rule} query\n * @param {Element} element\n * @returns {boolean}\n */\nexport function className(query, element) {\n /** @type {readonly string[]} */\n // @ts-expect-error Assume array.\n const value = element.properties.className || []\n let index = -1\n\n if (query.classNames) {\n while (++index < query.classNames.length) {\n if (!value.includes(query.classNames[index])) return false\n }\n }\n\n return true\n}\n","/**\n * @typedef {import('./types.js').Rule} Rule\n * @typedef {import('./types.js').Element} Element\n */\n\n/**\n * Check whether an element has an ID.\n *\n * @param {Rule} query\n * @param {Element} element\n * @returns {boolean}\n */\nexport function id(query, element) {\n return Boolean(element.properties && element.properties.id === query.id)\n}\n","/**\n * @typedef {import('./types.js').Node} Node\n * @typedef {import('./types.js').Element} Element\n * @typedef {import('./types.js').Parent} Parent\n * @typedef {import('./types.js').RuleSet} RuleSet\n * @typedef {import('./types.js').SelectState} SelectState\n * @typedef {import('./types.js').Selectors} Selectors\n *\n * @typedef Nest\n * Rule sets by nesting.\n * @property {Array<RuleSet> | undefined} descendant\n * `a b`\n * @property {Array<RuleSet> | undefined} directChild\n * `a > b`\n * @property {Array<RuleSet> | undefined} adjacentSibling\n * `a + b`\n * @property {Array<RuleSet> | undefined} generalSibling\n * `a ~ b`\n *\n * @typedef Counts\n * Info on elements in a parent.\n * @property {number} count\n * Number of elements.\n * @property {Map<string, number>} types\n * Number of elements by tag name.\n */\n\nimport {enterState} from './enter-state.js'\nimport {test} from './test.js'\n\n/** @type {Array<never>} */\nconst empty = []\n\n/**\n * Turn a query into a uniform object.\n *\n * @param {Selectors | RuleSet | null} query\n * @returns {Selectors}\n */\nexport function queryToSelectors(query) {\n if (query === null) {\n return {type: 'selectors', selectors: []}\n }\n\n if (query.type === 'ruleSet') {\n return {type: 'selectors', selectors: [query]}\n }\n\n return query\n}\n\n/**\n * Walk a tree.\n *\n * @param {SelectState} state\n * @param {Node | undefined} tree\n */\nexport function walk(state, tree) {\n if (tree) {\n one(state, [], tree, undefined, undefined)\n }\n}\n\n/**\n * Check a node.\n *\n * @param {SelectState} state\n * @param {Array<RuleSet>} currentRules\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Parent | undefined} parent\n * @returns {Nest}\n */\nfunction one(state, currentRules, node, index, parent) {\n /** @type {Nest} */\n let nestResult = {\n directChild: undefined,\n descendant: undefined,\n adjacentSibling: undefined,\n generalSibling: undefined\n }\n const exit = enterState(state, node)\n\n if (node.type === 'element') {\n nestResult = applySelectors(\n state,\n // Try the root rules for this element too.\n combine(currentRules, state.rootQuery.selectors),\n node,\n index,\n parent\n )\n }\n\n // If this is a parent, and we want to delve into them, and we haven’t found\n // our single result yet.\n if ('children' in node && !state.shallow && !(state.one && state.found)) {\n all(state, nestResult, node)\n }\n\n exit()\n\n return nestResult\n}\n\n/**\n * Check a node.\n *\n * @param {SelectState} state\n * @param {Nest} nest\n * @param {Parent} node\n * @returns {void}\n */\nfunction all(state, nest, node) {\n const fromParent = combine(nest.descendant, nest.directChild)\n /** @type {Array<RuleSet> | undefined} */\n let fromSibling\n let index = -1\n /**\n * Total counts.\n * @type {Counts}\n */\n const total = {count: 0, types: new Map()}\n /**\n * Counts of previous siblings.\n * @type {Counts}\n */\n const before = {count: 0, types: new Map()}\n\n while (++index < node.children.length) {\n count(total, node.children[index])\n }\n\n index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n // Uppercase to prevent prototype polution, injecting `constructor` or so.\n // Normalize because HTML is insensitive.\n const name =\n child.type === 'element' ? child.tagName.toUpperCase() : undefined\n // Before counting further elements:\n state.elementIndex = before.count\n state.typeIndex = name ? before.types.get(name) || 0 : 0\n // After counting all elements.\n state.elementCount = total.count\n state.typeCount = name ? total.types.get(name) : 0\n\n // Only apply if this is a parent, this should be an element, but we check\n // for parents so that we delve into custom nodes too.\n if ('children' in child) {\n const forSibling = combine(fromParent, fromSibling)\n const nest = one(state, forSibling, node.children[index], index, node)\n fromSibling = combine(nest.generalSibling, nest.adjacentSibling)\n }\n\n // We found one thing, and one is enough.\n if (state.one && state.found) {\n break\n }\n\n count(before, node.children[index])\n }\n}\n\n/**\n * Apply selectors to an element.\n *\n * @param {SelectState} state\n * Current state.\n * @param {Array<RuleSet>} rules\n * Rules to apply.\n * @param {Element} node\n * Element to apply rules to.\n * @param {number | undefined} index\n * Index of node in parent.\n * @param {Parent | undefined} parent\n * Parent of node.\n * @returns {Nest}\n * Further rules.\n */\nfunction applySelectors(state, rules, node, index, parent) {\n /** @type {Nest} */\n const nestResult = {\n directChild: undefined,\n descendant: undefined,\n adjacentSibling: undefined,\n generalSibling: undefined\n }\n let selectorIndex = -1\n\n while (++selectorIndex < rules.length) {\n const ruleSet = rules[selectorIndex]\n\n // We found one thing, and one is enough.\n if (state.one && state.found) {\n break\n }\n\n // When shallow, we don’t allow nested rules.\n // Idea: we could allow a stack of parents?\n // Might get quite complex though.\n if (state.shallow && ruleSet.rule.rule) {\n throw new Error('Expected selector without nesting')\n }\n\n // If this rule matches:\n if (test(ruleSet.rule, node, index, parent, state)) {\n const nest = ruleSet.rule.rule\n\n // Are there more?\n if (nest) {\n /** @type {RuleSet} */\n const rule = {type: 'ruleSet', rule: nest}\n /** @type {keyof Nest} */\n const label =\n nest.nestingOperator === '+'\n ? 'adjacentSibling'\n : nest.nestingOperator === '~'\n ? 'generalSibling'\n : nest.nestingOperator === '>'\n ? 'directChild'\n : 'descendant'\n add(nestResult, label, rule)\n } else {\n // We have a match!\n state.found = true\n\n if (!state.results.includes(node)) {\n state.results.push(node)\n }\n }\n }\n\n // Descendant.\n if (ruleSet.rule.nestingOperator === null) {\n add(nestResult, 'descendant', ruleSet)\n }\n // Adjacent.\n else if (ruleSet.rule.nestingOperator === '~') {\n add(nestResult, 'generalSibling', ruleSet)\n }\n // Drop top-level nesting (`undefined`), direct child (`>`), adjacent sibling (`+`).\n }\n\n return nestResult\n}\n\n/**\n * Combine two lists, if needed.\n *\n * This is optimized to create as few lists as possible.\n *\n * @param {Array<RuleSet> | undefined} left\n * @param {Array<RuleSet> | undefined} right\n * @returns {Array<RuleSet>}\n */\nfunction combine(left, right) {\n return left && right && left.length > 0 && right.length > 0\n ? [...left, ...right]\n : left && left.length > 0\n ? left\n : right && right.length > 0\n ? right\n : empty\n}\n\n/**\n * Add a rule to a nesting map.\n *\n * @param {Nest} nest\n * @param {keyof Nest} field\n * @param {RuleSet} rule\n */\nfunction add(nest, field, rule) {\n const list = nest[field]\n if (list) {\n list.push(rule)\n } else {\n nest[field] = [rule]\n }\n}\n\n/**\n * Count a node.\n *\n * @param {Counts} counts\n * Counts.\n * @param {Node} node\n * Node (we’re looking for elements).\n * @returns {void}\n * Nothing.\n */\nfunction count(counts, node) {\n if (node.type === 'element') {\n // Uppercase to prevent prototype polution, injecting `constructor` or so.\n // Normalize because HTML is insensitive.\n const name = node.tagName.toUpperCase()\n const count = (counts.types.get(name) || 0) + 1\n counts.count++\n counts.types.set(name, count)\n }\n}\n","/**\n * @typedef {import('./types.js').Selectors} Selectors\n * @typedef {import('./types.js').RuleSet} RuleSet\n */\n\nimport {CssSelectorParser} from 'css-selector-parser'\n\nconst parser = new CssSelectorParser()\n\nparser.registerAttrEqualityMods('~', '|', '^', '$', '*')\nparser.registerSelectorPseudos('any', 'matches', 'not', 'has')\nparser.registerNestingOperators('>', '+', '~')\n\n/**\n * @param {string} selector\n * @returns {Selectors | RuleSet | null}\n */\nexport function parse(selector) {\n if (typeof selector !== 'string') {\n throw new TypeError('Expected `string` as selector, not `' + selector + '`')\n }\n\n return parser.parse(selector)\n}\n","/**\n * @typedef {import('./types.js').Element} Element\n * @typedef {import('./types.js').Node} Node\n * @typedef {import('./types.js').Space} Space\n * @typedef {import('./types.js').SelectState} SelectState\n */\n\nimport {html, svg} from 'property-information'\nimport {queryToSelectors, walk} from './walk.js'\nimport {parse} from './parse.js'\n\n/**\n * Check that the given `node` matches `selector`.\n *\n * This only checks the element itself, not the surrounding tree.\n * Thus, nesting in selectors is not supported (`p b`, `p > b`), neither are\n * selectors like `:first-child`, etc.\n * This only checks that the given element matches the selector.\n *\n * @param {string} selector\n * CSS selector, such as (`h1`, `a, b`).\n * @param {Node | null | undefined} [node]\n * Node that might match `selector`, should be an element.\n * @param {Space | null | undefined} [space='html']\n * Name of namespace (`'svg'` or `'html'`).\n * @returns {boolean}\n * Whether `node` matches `selector`.\n */\nexport function matches(selector, node, space) {\n const state = createState(selector, node, space)\n state.one = true\n state.shallow = true\n walk(state, node || undefined)\n return state.results.length > 0\n}\n\n/**\n * Select the first element that matches `selector` in the given `tree`.\n * Searches the tree in *preorder*.\n *\n * @param {string} selector\n * CSS selector, such as (`h1`, `a, b`).\n * @param {Node | null | undefined} [tree]\n * Tree to search.\n * @param {Space | null | undefined} [space='html']\n * Name of namespace (`'svg'` or `'html'`).\n * @returns {Element | null}\n * First element in `tree` that matches `selector` or `null` if nothing is\n * found.\n * This could be `tree` itself.\n */\nexport function select(selector, tree, space) {\n const state = createState(selector, tree, space)\n state.one = true\n walk(state, tree || undefined)\n // To do in major: return `undefined` instead.\n return state.results[0] || null\n}\n\n/**\n * Select all elements that match `selector` in the given `tree`.\n * Searches the tree in *preorder*.\n *\n * @param {string} selector\n * CSS selector, such as (`h1`, `a, b`).\n * @param {Node | null | undefined} [tree]\n * Tree to search.\n * @param {Space | null | undefined} [space='html']\n * Name of namespace (`'svg'` or `'html'`).\n * @returns {Array<Element>}\n * Elements in `tree` that match `selector`.\n * This could include `tree` itself.\n */\nexport function selectAll(selector, tree, space) {\n const state = createState(selector, tree, space)\n walk(state, tree || undefined)\n return state.results\n}\n\n/**\n * @param {string} selector\n * Tree to search.\n * @param {Node | null | undefined} [tree]\n * Tree to search.\n * @param {Space | null | undefined} [space='html']\n * Name of namespace (`'svg'` or `'html'`).\n * @returns {SelectState} SelectState\n */\nfunction createState(selector, tree, space) {\n return {\n // State of the query.\n rootQuery: queryToSelectors(parse(selector)),\n results: [],\n // @ts-expect-error assume elements.\n scopeElements: tree ? (tree.type === 'root' ? tree.children : [tree]) : [],\n one: false,\n shallow: false,\n found: false,\n // State in the tree.\n schema: space === 'svg' ? svg : html,\n language: undefined,\n direction: 'ltr',\n editableOrEditingHost: false,\n typeIndex: undefined,\n elementIndex: undefined,\n typeCount: undefined,\n elementCount: undefined\n }\n}\n","import { Plugin } from 'unified';\nimport { Root, Element, ElementContent, RootContent } from 'hast';\nimport { visit } from 'unist-util-visit';\nimport { selectAll } from 'hast-util-select';\nimport { Test } from 'unist-util-is';\n\n/** Get the node tree source code string */\nexport const getCodeString = (data: ElementContent[] = [], code: string = '') => {\n data.forEach((node) => {\n if (node.type === 'text') {\n code += node.value;\n } else if (node.type === 'element' && node.children && Array.isArray(node.children)) {\n code += getCodeString(node.children);\n }\n });\n return code;\n};\n\nexport type RehypeRewriteOptions = {\n /**\n * Select an element to be wrapped. Expects a string selector that can be passed to hast-util-select ([supported selectors](https://github.com/syntax-tree/hast-util-select/blob/master/readme.md#support)).\n * If `selector` is not set then wrap will check for a body all elements.\n */\n selector?: string;\n /** Rewrite Element. */\n rewrite(node: Root | RootContent, index: number | null, parent: Root | Element | null): void;\n}\n\nconst remarkRewrite: Plugin<[RehypeRewriteOptions?], Root> = (options) => {\n const { selector, rewrite } = options || {};\n return (tree) => {\n if (!rewrite || typeof rewrite !== 'function') return;\n if (selector && typeof selector === 'string') {\n const selected = selectAll(selector, tree);\n if (selected && selected.length > 0) {\n visit(tree, selected as unknown as Test, (node: Element, index, parent) => {\n rewrite(node, index, parent);\n });\n }\n return;\n }\n\n visit(tree, (node: Root | RootContent, index, parent) => {\n rewrite(node, index, parent);\n });\n }\n}\n\nexport default remarkRewrite;\n","import { Element, Comment, Literal, ElementContent, RootContent, Properties } from 'hast';\nimport { RehypeAttrsOptions } from './';\n\nexport const getURLParameters = (url: string = '') =>\n ((url.match(/([^?=&]+)(=([^&]*))/g) || []) as string[]).reduce(\n (a: Record<string, string | number | boolean>, v: string) => (\n (a[v.slice(0, v.indexOf('=')) as keyof typeof a] = v.slice(v.indexOf('=') + 1)), a\n ),\n {}\n )\n\nexport const prevChild = (data: Literal[] = [], index: number): Comment | undefined => {\n let i = index;\n while (i > -1) {\n i--;\n if (!data[i]) return\n if ((data[i] && data[i].value && (data[i].value as string).replace(/(\\n|\\s)/g, '') !== '') || data[i].type !== 'text') {\n if (!/^rehype:/.test(data[i].value as string) || (data[i].type as string) !== 'comment') return;\n return data[i] as unknown as Comment;\n }\n }\n return;\n}\n\nexport const nextChild = (data: RootContent[] | ElementContent[] = [], index: number, tagName?: string, codeBlockParames?: boolean): ElementContent | undefined => {\n let i = index;\n while (i < data.length) {\n i++;\n if (tagName) {\n const element = data[i] as Literal & Element;\n if (element && element.value && (element.value as string).replace(/(\\n|\\s)/g, '') !== '' || data[i] && (data[i].type as string) === 'element') {\n return element.tagName === tagName ? element : undefined\n }\n } else {\n const element = data[i] as ElementContent & Literal;\n if (!element || element.type === 'element') return;\n if (element.type === 'text' && element.value.replace(/(\\n|\\s)/g, '') !== '') return;\n if (element.type && /^(comment|raw)$/ig.test(element.type)) {\n if (element.value && !/^rehype:/.test(element.value.replace(/^(\\s+)?<!--(.*?)-->/, '$2') || '')) {\n return\n };\n if (codeBlockParames) {\n const nextNode = nextChild(data, i, 'pre', codeBlockParames)\n if (nextNode) return;\n element.value = (element.value || '').replace(/^(\\n|\\s)+/, '')\n return element;\n } else {\n element.value = (element.value || '').replace(/^(\\n|\\s)+/, '')\n return element;\n }\n }\n }\n }\n return\n}\n\n/**\n * 获取代码注视的位置\n * @param data 数据\n * @param index 当前数据所在的位置\n * @returns 返回 当前参数数据 Object,`{}`\n */\nexport const getCommentObject = ({ value = '' }: Comment): Properties => {\n const param = getURLParameters(value.replace(/^<!--(.*?)-->/, '$1').replace(/^rehype:/, ''));\n Object.keys(param).forEach((keyName: string) => {\n if (param[keyName] === 'true') {\n param[keyName] = true;\n }\n if (param[keyName] === 'false') {\n param[keyName] = false;\n }\n if (typeof param[keyName] === 'string' && !/^0/.test(param[keyName] as string) && !isNaN(+param[keyName])) {\n param[keyName] = +param[keyName];\n }\n })\n return param;\n}\n\nexport type DataConfig = {\n 'data-config': Properties\n}\n\nexport const propertiesHandle = (defaultAttrs?: Properties | null, attrs?: Properties, type?: RehypeAttrsOptions['properties']): Properties | DataConfig => {\n if (type === 'string') {\n return { ...defaultAttrs, 'data-config': JSON.stringify({ ...attrs, rehyp: true })}\n } else if (type === 'attr') {\n return { ...defaultAttrs, ...attrs}\n }\n return { ...defaultAttrs, 'data-config': { ...attrs, rehyp: true }}\n}","import { Plugin } from 'unified';\nimport { Root, Element, Comment, Properties, Literal } from 'hast';\nimport { visit } from 'unist-util-visit';\nimport { propertiesHandle, nextChild, prevChild, getCommentObject } from './utils';\n\nexport type RehypeAttrsOptions = {\n /**\n * ## `data`\n * \n * ```markdown\n * text\n * <!--rehype:title=Rehype Attrs&abc=2-->\n * ```\n * 👇👇👇👇👇\n * ```html\n * <p data-config=\"data-config='[object Object]'\">text</p>\n * ```\n * \n * ## `string`\n * \n * ```markdown\n * text\n * <!--rehype:title=Rehype Attrs-->\n * ```\n * \n * 👇👇👇👇👇\n * \n * ```html\n * <p data-config=\"{"title":"Rehype Attrs","rehyp":true}\">text</p>\n * ```\n * \n * ## attr\n * \n * ```markdown\n * text\n * <!--rehype:title=Rehype Attrs-->\n * ```\n * 👇👇👇👇👇\n * ```html\n * <p title=\"Rehype Attrs\">text</p>\n * ```\n * @default `data`\n */\n properties?: 'data' | 'string' | 'attr';\n /**\n * Code block passing parameters\n */\n codeBlockParames?: boolean;\n}\n\nconst rehypeAttrs: Plugin<[RehypeAttrsOptions?], Root> = (options = {}) => {\n const { properties = 'data', codeBlockParames = true } = options;\n return (tree) => {\n visit(tree, 'element', (node, index, parent) => {\n if (codeBlockParames && node.tagName === 'pre' && node && Array.isArray(node.children) && parent && Array.isArray(parent.children) && parent.children.length > 1) {\n const firstChild = node.children[0] as Element;\n if (firstChild && firstChild.tagName === 'code' && typeof index === 'number') {\n const child = prevChild(parent.children as Literal[], index);\n if (child) {\n const attr = getCommentObject(child);\n if (Object.keys(attr).length > 0) {\n node.properties = { ...node.properties, ...{ 'data-type': 'rehyp' } }\n firstChild.properties = propertiesHandle(firstChild.properties, attr, properties) as Properties\n }\n }\n }\n }\n\n if (/^(em|strong|b|a|i|p|pre|kbd|blockquote|h(1|2|3|4|5|6)|code|table|img|del|ul|ol)$/.test(node.tagName) && parent && Array.isArray(parent.children) && typeof index === 'number') {\n const child = nextChild(parent.children, index, '', codeBlockParames)\n if (child) {\n const attr = getCommentObject(child as Comment)\n if (Object.keys(attr).length > 0) {\n node.properties = propertiesHandle(node.properties, attr, properties) as Properties\n }\n }\n }\n });\n }\n}\n\n\nexport default rehypeAttrs\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport { visit } from 'unist-util-visit';\nexport var reservedMeta = function reservedMeta(options) {\n if (options === void 0) {\n options = {};\n }\n return tree => {\n visit(tree, node => {\n if (node.type === 'element' && node.tagName === 'code' && node.data && node.data.meta) {\n node.properties = _extends({}, node.properties, {\n 'data-meta': String(node.data.meta)\n });\n }\n });\n };\n};","// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nexport const regex = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n","import { regex } from './regex.js'\n\nconst own = Object.hasOwnProperty\n\n/**\n * Slugger.\n */\nexport default class BananaSlug {\n /**\n * Create a new slug class.\n */\n constructor () {\n /** @type {Record<string, number>} */\n // eslint-disable-next-line no-unused-expressions\n this.occurrences\n\n this.reset()\n }\n\n /**\n * Generate a unique slug.\n *\n * Tracks previously generated slugs: repeated calls with the same value\n * will result in different slugs.\n * Use the `slug` function to get same slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\n slug (value, maintainCase) {\n const self = this\n let result = slug(value, maintainCase === true)\n const originalSlug = result\n\n while (own.call(self.occurrences, result)) {\n self.occurrences[originalSlug]++\n result = originalSlug + '-' + self.occurrences[originalSlug]\n }\n\n self.occurrences[result] = 0\n\n return result\n }\n\n /**\n * Reset - Forget all previous slugs\n *\n * @return void\n */\n reset () {\n this.occurrences = Object.create(null)\n }\n}\n\n/**\n * Generate a slug.\n *\n * Does not track previously generated slugs: repeated calls with the same value\n * will result in the exact same slug.\n * Use the `GithubSlugger` class to get unique slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\nexport function slug (value, maintainCase) {\n if (typeof value !== 'string') return ''\n if (!maintainCase) value = value.toLowerCase()\n return value.replace(regex, '').replace(/ /g, '-')\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n */\n\n/**\n * @typedef {Root | Content} Node\n */\n\n// To do next major: return `undefined`.\n/**\n * Get the rank (`1` to `6`) of headings (`h1` to `h6`).\n *\n * @param {Node} node\n * Node to check.\n * @returns {number | null}\n * Rank of the heading or `null` if not a heading.\n */\nexport function headingRank(node) {\n const name =\n (node && node.type === 'element' && node.tagName.toLowerCase()) || ''\n const code =\n name.length === 2 && name.charCodeAt(0) === 104 /* `h` */\n ? name.charCodeAt(1)\n : 0\n return code > 48 /* `0` */ && code < 55 /* `7` */ ? code - 48 /* `0` */ : null\n}\n","/**\n * @typedef {import('hast').Root} Root\n */\n\n/**\n * @typedef Options\n * Configuration (optional).\n * @property {string} [prefix='']\n * Prefix to add in front of `id`s.\n */\n\nimport Slugger from 'github-slugger'\nimport {hasProperty} from 'hast-util-has-property'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {toString} from 'hast-util-to-string'\nimport {visit} from 'unist-util-visit'\n\nconst slugs = new Slugger()\n\n/**\n * Plugin to add `id`s to headings.\n *\n * @type {import('unified').Plugin<[Options?]|Array<void>, Root>}\n */\nexport default function rehypeSlug(options = {}) {\n const prefix = options.prefix || ''\n\n return (tree) => {\n slugs.reset()\n\n visit(tree, 'element', (node) => {\n if (headingRank(node) && node.properties && !hasProperty(node, 'id')) {\n node.properties.id = prefix + slugs.slug(toString(node))\n }\n })\n }\n}\n","/**\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('hast').Element} Element\n */\n\n/**\n * @typedef {null | undefined | string | TestFunctionAnything | Array<string | TestFunctionAnything>} Test\n * Check for an arbitrary element, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if an element passes a test, unaware of TypeScript inferral.\n * @param {Element} element\n * An element.\n * @param {number | null | undefined} [index]\n * The element’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The element’s parent.\n * @returns {boolean | void}\n * Whether this element passes the test.\n */\n\n/**\n * @template {Element} T\n * Element type.\n * @typedef {T['tagName'] | TestFunctionPredicate<T> | Array<T['tagName'] | TestFunctionPredicate<T>>} PredicateTest\n * Check for an element that can be inferred by TypeScript.\n */\n\n/**\n * Check if an element passes a certain node test.\n *\n * @template {Element} T\n * Element type.\n * @callback TestFunctionPredicate\n * Complex test function for an element that can be inferred by TypeScript.\n * @param {Element} element\n * An element.\n * @param {number | null | undefined} [index]\n * The element’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The element’s parent.\n * @returns {element is T}\n * Whether this element passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is an element, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is an element and passes a test.\n */\n\n/**\n * Check if a node is an element and passes a certain node test\n *\n * @template {Element} T\n * Element type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific element, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is T}\n * Whether this is an element and passes a test.\n */\n\n/**\n * Check if `node` is an `Element` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific element.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is an element and passes a test.\n */\nexport const isElement =\n /**\n * @type {(\n * (() => false) &\n * (<T extends Element = Element>(node: unknown, test?: PredicateTest<T>, index?: number, parent?: Parent, context?: unknown) => node is T) &\n * ((node: unknown, test: Test, index?: number, parent?: Parent, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test | undefined} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convertElement(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index for child node')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!parent.type || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n // @ts-expect-error Looks like a node.\n if (!node || !node.type || typeof node.type !== 'string') {\n return false\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return check.call(context, node, index, parent)\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * When nullish, checks if `node` is an `Element`.\n * * When `string`, works like passing `(element) => element.tagName === test`.\n * * When `function` checks if function passed the element is true.\n * * When `array`, checks any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convertElement =\n /**\n * @type {(\n * (<T extends Element>(test: T['tagName'] | TestFunctionPredicate<T>) => AssertPredicate<T>) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test | null | undefined} [test]\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return element\n }\n\n if (typeof test === 'string') {\n return tagNameFactory(test)\n }\n\n if (typeof test === 'object') {\n return anyFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or array as test')\n }\n )\n\n/**\n * Handle multiple tests.\n *\n * @param {Array<string | TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array<AssertAnything>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convertElement(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {Array<unknown>} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) {\n return true\n }\n }\n\n return false\n }\n}\n\n/**\n * Turn a string into a test for an element with a certain tag name.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction tagNameFactory(check) {\n return tagName\n\n /**\n * @param {unknown} node\n * @returns {boolean}\n */\n function tagName(node) {\n return element(node) && node.tagName === check\n }\n}\n\n/**\n * Turn a custom test into a test for an element that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array<unknown>} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n // @ts-expect-error: fine.\n return element(node) && Boolean(check.call(this, node, ...parameters))\n }\n}\n\n/**\n * Make sure something is an element.\n *\n * @param {unknown} node\n * @returns {node is Element}\n */\nfunction element(node) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n // @ts-expect-error Looks like a node.\n node.type === 'element' &&\n // @ts-expect-error Looks like an element.\n typeof node.tagName === 'string'\n )\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Element} Element\n * @typedef {Element['children'][number]} ElementChild\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast-util-is-element').Test} Test\n *\n * @typedef {'prepend'|'append'|'wrap'|'before'|'after'} Behavior\n *\n * @callback Build\n * @param {Element} node\n * @returns {ElementChild|ElementChild[]}\n *\n * @typedef Options\n * Configuration.\n * @property {Behavior} [behavior='prepend']\n * How to create links.\n * @property {Behavior} [behaviour]\n * Please use `behavior` instead\n * @property {Properties} [properties]\n * Extra properties to set on the link when injecting.\n * Defaults to `{ariaHidden: true, tabIndex: -1}` when `'prepend'` or\n * `'append'`.\n * @property {ElementChild|ElementChild[]|Build} [content={type: 'element', tagName: 'span', properties: {className: ['icon', 'icon-link']}, children: []}]\n * hast nodes to insert in the link.\n * @property {ElementChild|ElementChild[]|Build} [group]\n * hast node to wrap the heading and link with, if `behavior` is `'before'` or\n * `'after'`.\n * There is no default.\n * @property {Test} [test]\n * Test to define which heading elements are linked.\n * Any test that can be given to `hast-util-is-element` is supported.\n * The default (no test) is to link all headings.\n * Can be used to link only h1-h3, or for example all except h1.\n */\n\nimport extend from 'extend'\nimport {hasProperty} from 'hast-util-has-property'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {convertElement} from 'hast-util-is-element'\nimport {visit, SKIP} from 'unist-util-visit'\n\n/** @type {Element} */\nconst contentDefaults = {\n type: 'element',\n tagName: 'span',\n properties: {className: ['icon', 'icon-link']},\n children: []\n}\n\n/**\n * Plugin to automatically add links to headings (h1-h6).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function rehypeAutolinkHeadings(options = {}) {\n let props = options.properties\n const behavior = options.behaviour || options.behavior || 'prepend'\n const content = options.content || contentDefaults\n const group = options.group\n const is = convertElement(options.test)\n\n /** @type {import('unist-util-visit/complex-types').Visitor<Element>} */\n let method\n\n if (behavior === 'wrap') {\n method = wrap\n } else if (behavior === 'before' || behavior === 'after') {\n method = around\n } else {\n if (!props) {\n props = {ariaHidden: 'true', tabIndex: -1}\n }\n\n method = inject\n }\n\n return (tree) => {\n visit(tree, 'element', (node, index, parent) => {\n if (\n headingRank(node) &&\n hasProperty(node, 'id') &&\n is(node, index, parent)\n ) {\n return method(node, index, parent)\n }\n })\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor<Element>} */\n function inject(node) {\n node.children[behavior === 'prepend' ? 'unshift' : 'push'](\n create(node, extend(true, {}, props), toChildren(content, node))\n )\n\n return [SKIP]\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor<Element>} */\n function around(node, index, parent) {\n // Uncommon.\n /* c8 ignore next */\n if (typeof index !== 'number' || !parent) return\n\n const link = create(\n node,\n extend(true, {}, props),\n toChildren(content, node)\n )\n let nodes = behavior === 'before' ? [link, node] : [node, link]\n\n if (group) {\n const grouping = toNode(group, node)\n\n if (grouping && !Array.isArray(grouping) && grouping.type === 'element') {\n grouping.children = nodes\n nodes = [grouping]\n }\n }\n\n parent.children.splice(index, 1, ...nodes)\n\n return [SKIP, index + nodes.length]\n }\n\n /** @type {import('unist-util-visit/complex-types').Visitor<Element>} */\n function wrap(node) {\n node.children = [create(node, extend(true, {}, props), node.children)]\n return [SKIP]\n }\n\n /**\n * @param {ElementChild|ElementChild[]|Build} value\n * @param {Element} node\n * @returns {ElementChild[]}\n */\n function toChildren(value, node) {\n const result = toNode(value, node)\n return Array.isArray(result) ? result : [result]\n }\n\n /**\n * @param {ElementChild|ElementChild[]|Build} value\n * @param {Element} node\n * @returns {ElementChild|ElementChild[]}\n */\n function toNode(value, node) {\n if (typeof value === 'function') return value(node)\n return extend(true, Array.isArray(value) ? [] : {}, value)\n }\n\n /**\n * @param {Element} node\n * @param {Properties} props\n * @param {ElementChild[]} children\n * @returns {Element}\n */\n function create(node, props, children) {\n return {\n type: 'element',\n tagName: 'a',\n properties: Object.assign({}, props, {\n // Fix hast types and make them required.\n /* c8 ignore next */\n href: '#' + (node.properties || {}).id\n }),\n children\n }\n }\n}\n","import type { Plugin } from 'unified';\nimport type { Root, RootContent, Literal } from 'hast';\nimport { visit } from 'unist-util-visit';\n\n/**\n * Raw string of HTML embedded into HTML AST.\n */\nexport interface Raw extends Literal {\n /**\n * Node type.\n */\n type: 'raw'\n}\n\n// Register nodes in content.\ndeclare module 'hast' {\n interface RootContentMap {\n /**\n * Raw string of HTML embedded into HTML AST.\n */\n raw: Raw\n }\n interface ElementContentMap {\n /**\n * Raw string of HTML embedded into HTML AST.\n */\n raw: Raw\n }\n}\n\n\nexport type RehypeIgnoreOptions = {\n /**\n * Character to use for opening delimiter, by default `rehype:ignore:start`\n */\n openDelimiter?: string;\n /**\n * Character to use for closing delimiter, by default `rehype:ignore:end`\n */\n closeDelimiter?: string;\n}\n\nconst rehypeIgnore: Plugin<[RehypeIgnoreOptions?], Root> = (options = {}) => {\n const { openDelimiter = 'rehype:ignore:start', closeDelimiter = 'rehype:ignore:end' } = options;\n return (tree) => {\n visit(tree, (node: Root | RootContent, index, parent) => {\n if (node.type === 'element' || node.type === 'root') {\n // const start = node.children.findIndex((item) => item.type === 'comment' && item.value === openDelimiter);\n // const end = node.children.findIndex((item) => item.type === 'comment' && item.value === closeDelimiter);\n // if (start > -1 && end > -1) {\n // node.children = node.children.filter((_, idx) => idx < start || idx > end);\n // }\n let start = false;\n node.children = node.children.filter((item) => {\n if (item.type === 'raw' || item.type === 'comment') {\n let str = (item.value || '').trim();\n str = str.replace(/^<!--(.*?)-->/, '$1')\n if (str === openDelimiter) {\n start = true;\n return false;\n }\n if (str === closeDelimiter) {\n start = false;\n return false;\n }\n }\n \n return !start;\n })\n }\n });\n }\n}\n\nexport default rehypeIgnore;\n","export var octiconLink = {\n type: 'element',\n tagName: 'svg',\n properties: {\n className: 'octicon octicon-link',\n viewBox: '0 0 16 16',\n version: '1.1',\n width: '16',\n height: '16',\n ariaHidden: 'true'\n },\n children: [{\n type: 'element',\n tagName: 'path',\n children: [],\n properties: {\n fillRule: 'evenodd',\n d: 'M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'\n }\n }]\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport slug from 'rehype-slug';\nimport headings from 'rehype-autolink-headings';\nimport rehypeIgnore from 'rehype-ignore';\nimport { getCodeString } from 'rehype-rewrite';\nimport { octiconLink } from './nodes/octiconLink';\nimport { copyElement } from './nodes/copy';\nexport var rehypeRewriteHandle = (disableCopy, rewrite) => (node, index, parent) => {\n if (node.type === 'element' && parent && parent.type === 'root' && /h(1|2|3|4|5|6)/.test(node.tagName)) {\n var child = node.children && node.children[0];\n if (child && child.properties && child.properties.ariaHidden === 'true') {\n child.properties = _extends({\n class: 'anchor'\n }, child.properties);\n child.children = [octiconLink];\n }\n }\n if (node.type === 'element' && node.tagName === 'pre' && !disableCopy) {\n var code = getCodeString(node.children);\n node.children.push(copyElement(code));\n }\n rewrite && rewrite(node, index, parent);\n};\nexport var defaultRehypePlugins = [slug, headings, rehypeIgnore];","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport MarkdownPreview from './preview';\nimport rehypePrism from 'rehype-prism-plus';\nimport rehypeRewrite from 'rehype-rewrite';\nimport rehypeAttrs from 'rehype-attr';\nimport { reservedMeta } from './plugins/reservedMeta';\nimport { rehypeRewriteHandle, defaultRehypePlugins } from './rehypePlugins';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport * from './preview';\nexport default /*#__PURE__*/React.forwardRef((props, ref) => {\n var _props$disableCopy;\n var rehypePlugins = [reservedMeta, [rehypePrism, {\n ignoreMissing: true\n }], ...defaultRehypePlugins, [rehypeRewrite, {\n rewrite: rehypeRewriteHandle((_props$disableCopy = props.disableCopy) != null ? _props$disableCopy : false, props.rehypeRewrite)\n }], [rehypeAttrs, {\n properties: 'attr'\n }], ...(props.rehypePlugins || [])];\n return /*#__PURE__*/_jsx(MarkdownPreview, _extends({}, props, {\n rehypePlugins: rehypePlugins,\n ref: ref\n }));\n});","export function copyElement(str) {\n if (str === void 0) {\n str = '';\n }\n return {\n type: 'element',\n tagName: 'div',\n properties: {\n class: 'copied',\n 'data-code': str\n },\n children: [{\n type: 'element',\n tagName: 'svg',\n properties: {\n className: 'octicon-copy',\n ariaHidden: 'true',\n viewBox: '0 0 16 16',\n fill: 'currentColor',\n height: 12,\n width: 12\n },\n children: [{\n type: 'element',\n tagName: 'path',\n properties: {\n fillRule: 'evenodd',\n d: 'M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z'\n },\n children: []\n }, {\n type: 'element',\n tagName: 'path',\n properties: {\n fillRule: 'evenodd',\n d: 'M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z'\n },\n children: []\n }]\n }, {\n type: 'element',\n tagName: 'svg',\n properties: {\n className: 'octicon-check',\n ariaHidden: 'true',\n viewBox: '0 0 16 16',\n fill: 'currentColor',\n height: 12,\n width: 12\n },\n children: [{\n type: 'element',\n tagName: 'path',\n properties: {\n fillRule: 'evenodd',\n d: 'M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z'\n },\n children: []\n }]\n }]\n };\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nexport function reducer(state, action) {\n return _extends({}, state, action);\n}\nexport var EditorContext = /*#__PURE__*/React.createContext({\n markdown: ''\n});","import _extends from \"@babel/runtime/helpers/extends\";\nfunction getCommands(data, resulte) {\n if (data === void 0) {\n data = [];\n }\n if (resulte === void 0) {\n resulte = {};\n }\n data.forEach(item => {\n if (item.children && Array.isArray(item.children)) {\n resulte = _extends({}, resulte, getCommands(item.children || []));\n } else if (item.keyCommand && item.shortcuts && item.execute) {\n resulte[item.shortcuts.toLocaleLowerCase()] = item;\n }\n });\n return resulte;\n}\nexport default function shortcutsHandle(e, commands, commandOrchestrator, dispatch, state) {\n if (commands === void 0) {\n commands = [];\n }\n var data = getCommands(commands || []);\n var shortcuts = [];\n if (e.altKey) {\n shortcuts.push('alt');\n }\n if (e.shiftKey) {\n shortcuts.push('shift');\n }\n if (e.metaKey) {\n shortcuts.push('cmd');\n }\n if (e.ctrlKey) {\n shortcuts.push('ctrl');\n }\n if (shortcuts.length > 0 && !/(control|alt|meta|shift)/.test(e.key.toLocaleLowerCase())) {\n shortcuts.push(e.key.toLocaleLowerCase());\n }\n if (/escape/.test(e.key.toLocaleLowerCase())) {\n shortcuts.push('escape');\n }\n if (shortcuts.length < 1) {\n return;\n }\n var equal = !!data[shortcuts.join('+')];\n var command = equal ? data[shortcuts.join('+')] : undefined;\n Object.keys(data).forEach(item => {\n var isequal = item.split('+').every(v => {\n if (/ctrlcmd/.test(v)) {\n return shortcuts.includes('ctrl') || shortcuts.includes('cmd');\n }\n return shortcuts.includes(v);\n });\n if (isequal) {\n command = data[item];\n }\n });\n if (command && commandOrchestrator) {\n e.stopPropagation();\n e.preventDefault();\n commandOrchestrator.executeCommand(command, dispatch, state, shortcuts);\n return;\n }\n}","export const errors = {\n abandonedHeadElementChild: {\n reason: 'Unexpected metadata element after head',\n description:\n 'Unexpected element after head. Expected the element before `</head>`',\n url: false\n },\n abruptClosingOfEmptyComment: {\n reason: 'Unexpected abruptly closed empty comment',\n description: 'Unexpected `>` or `->`. Expected `-->` to close comments'\n },\n abruptDoctypePublicIdentifier: {\n reason: 'Unexpected abruptly closed public identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the public identifier'\n },\n abruptDoctypeSystemIdentifier: {\n reason: 'Unexpected abruptly closed system identifier',\n description:\n 'Unexpected `>`. Expected a closing `\"` or `\\'` after the identifier identifier'\n },\n absenceOfDigitsInNumericCharacterReference: {\n reason: 'Unexpected non-digit at start of numeric character reference',\n description:\n 'Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references'\n },\n cdataInHtmlContent: {\n reason: 'Unexpected CDATA section in HTML',\n description:\n 'Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead'\n },\n characterReferenceOutsideUnicodeRange: {\n reason: 'Unexpected too big numeric character reference',\n description:\n 'Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)'\n },\n closingOfElementWithOpenChildElements: {\n reason: 'Unexpected closing tag with open child elements',\n description:\n 'Unexpectedly closing tag. Expected other tags to be closed first',\n url: false\n },\n controlCharacterInInputStream: {\n reason: 'Unexpected control character',\n description:\n 'Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n controlCharacterReference: {\n reason: 'Unexpected control character reference',\n description:\n 'Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace'\n },\n disallowedContentInNoscriptInHead: {\n reason: 'Disallowed content inside `<noscript>` in `<head>`',\n description:\n 'Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`',\n url: false\n },\n duplicateAttribute: {\n reason: 'Unexpected duplicate attribute',\n description:\n 'Unexpectedly double attribute. Expected attributes to occur only once'\n },\n endTagWithAttributes: {\n reason: 'Unexpected attribute on closing tag',\n description: 'Unexpected attribute. Expected `>` instead'\n },\n endTagWithTrailingSolidus: {\n reason: 'Unexpected slash at end of closing tag',\n description: 'Unexpected `%c-1`. Expected `>` instead'\n },\n endTagWithoutMatchingOpenElement: {\n reason: 'Unexpected unopened end tag',\n description: 'Unexpected end tag. Expected no end tag or another end tag',\n url: false\n },\n eofBeforeTagName: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected tag name instead'\n },\n eofInCdata: {\n reason: 'Unexpected end of file in CDATA',\n description: 'Unexpected end of file. Expected `]]>` to close the CDATA'\n },\n eofInComment: {\n reason: 'Unexpected end of file in comment',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n eofInDoctype: {\n reason: 'Unexpected end of file in doctype',\n description:\n 'Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)'\n },\n eofInElementThatCanContainOnlyText: {\n reason: 'Unexpected end of file in element that can only contain text',\n description: 'Unexpected end of file. Expected text or a closing tag',\n url: false\n },\n eofInScriptHtmlCommentLikeText: {\n reason: 'Unexpected end of file in comment inside script',\n description: 'Unexpected end of file. Expected `-->` to close the comment'\n },\n eofInTag: {\n reason: 'Unexpected end of file in tag',\n description: 'Unexpected end of file. Expected `>` to close the tag'\n },\n incorrectlyClosedComment: {\n reason: 'Incorrectly closed comment',\n description: 'Unexpected `%c-1`. Expected `-->` to close the comment'\n },\n incorrectlyOpenedComment: {\n reason: 'Incorrectly opened comment',\n description: 'Unexpected `%c`. Expected `<!--` to open the comment'\n },\n invalidCharacterSequenceAfterDoctypeName: {\n reason: 'Invalid sequence after doctype name',\n description: 'Unexpected sequence at `%c`. Expected `public` or `system`'\n },\n invalidFirstCharacterOfTagName: {\n reason: 'Invalid first character in tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n misplacedDoctype: {\n reason: 'Misplaced doctype',\n description: 'Unexpected doctype. Expected doctype before head',\n url: false\n },\n misplacedStartTagForHeadElement: {\n reason: 'Misplaced `<head>` start tag',\n description:\n 'Unexpected start tag `<head>`. Expected `<head>` directly after doctype',\n url: false\n },\n missingAttributeValue: {\n reason: 'Missing attribute value',\n description:\n 'Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead'\n },\n missingDoctype: {\n reason: 'Missing doctype before other content',\n description: 'Expected a `<!doctype html>` before anything else',\n url: false\n },\n missingDoctypeName: {\n reason: 'Missing doctype name',\n description: 'Unexpected doctype end at `%c`. Expected `html` instead'\n },\n missingDoctypePublicIdentifier: {\n reason: 'Missing public identifier in doctype',\n description: 'Unexpected `%c`. Expected identifier for `public` instead'\n },\n missingDoctypeSystemIdentifier: {\n reason: 'Missing system identifier in doctype',\n description:\n 'Unexpected `%c`. Expected identifier for `system` instead (suggested: `\"about:legacy-compat\"`)'\n },\n missingEndTagName: {\n reason: 'Missing name in end tag',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n missingQuoteBeforeDoctypePublicIdentifier: {\n reason: 'Missing quote before public identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n missingQuoteBeforeDoctypeSystemIdentifier: {\n reason: 'Missing quote before system identifier in doctype',\n description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n },\n missingSemicolonAfterCharacterReference: {\n reason: 'Missing semicolon after character reference',\n description: 'Unexpected `%c`. Expected `;` instead'\n },\n missingWhitespaceAfterDoctypePublicKeyword: {\n reason: 'Missing whitespace after public identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n missingWhitespaceAfterDoctypeSystemKeyword: {\n reason: 'Missing whitespace after system identifier in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n missingWhitespaceBeforeDoctypeName: {\n reason: 'Missing whitespace before doctype name',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n missingWhitespaceBetweenAttributes: {\n reason: 'Missing whitespace between attributes',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: {\n reason:\n 'Missing whitespace between public and system identifiers in doctype',\n description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n },\n nestedComment: {\n reason: 'Unexpected nested comment',\n description: 'Unexpected `<!--`. Expected `-->`'\n },\n nestedNoscriptInHead: {\n reason: 'Unexpected nested `<noscript>` in `<head>`',\n description:\n 'Unexpected `<noscript>`. Expected a closing tag or a meta element',\n url: false\n },\n nonConformingDoctype: {\n reason: 'Unexpected non-conforming doctype declaration',\n description:\n 'Expected `<!doctype html>` or `<!doctype html system \"about:legacy-compat\">`',\n url: false\n },\n nonVoidHtmlElementStartTagWithTrailingSolidus: {\n reason: 'Unexpected trailing slash on start tag of non-void element',\n description: 'Unexpected `/`. Expected `>` instead'\n },\n noncharacterCharacterReference: {\n reason:\n 'Unexpected noncharacter code point referenced by character reference',\n description: 'Unexpected code point. Do not use noncharacters in HTML'\n },\n noncharacterInInputStream: {\n reason: 'Unexpected noncharacter character',\n description: 'Unexpected code point `%x`. Do not use noncharacters in HTML'\n },\n nullCharacterReference: {\n reason: 'Unexpected NULL character referenced by character reference',\n description: 'Unexpected code point. Do not use NULL characters in HTML'\n },\n openElementsLeftAfterEof: {\n reason: 'Unexpected end of file',\n description: 'Unexpected end of file. Expected closing tag instead',\n url: false\n },\n surrogateCharacterReference: {\n reason: 'Unexpected surrogate character referenced by character reference',\n description:\n 'Unexpected code point. Do not use lone surrogate characters in HTML'\n },\n surrogateInInputStream: {\n reason: 'Unexpected surrogate character',\n description:\n 'Unexpected code point `%x`. Do not use lone surrogate characters in HTML'\n },\n unexpectedCharacterAfterDoctypeSystemIdentifier: {\n reason: 'Invalid character after system identifier in doctype',\n description: 'Unexpected character at `%c`. Expected `>`'\n },\n unexpectedCharacterInAttributeName: {\n reason: 'Unexpected character in attribute name',\n description:\n 'Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter'\n },\n unexpectedCharacterInUnquotedAttributeValue: {\n reason: 'Unexpected character in unquoted attribute value',\n description: 'Unexpected `%c`. Quote the attribute value to include it'\n },\n unexpectedEqualsSignBeforeAttributeName: {\n reason: 'Unexpected equals sign before attribute name',\n description: 'Unexpected `%c`. Add an attribute name before it'\n },\n unexpectedNullCharacter: {\n reason: 'Unexpected NULL character',\n description:\n 'Unexpected code point `%x`. Do not use NULL characters in HTML'\n },\n unexpectedQuestionMarkInsteadOfTagName: {\n reason: 'Unexpected question mark instead of tag name',\n description: 'Unexpected `%c`. Expected an ASCII letter instead'\n },\n unexpectedSolidusInTag: {\n reason: 'Unexpected slash in tag',\n description:\n 'Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value'\n },\n unknownNamedCharacterReference: {\n reason: 'Unexpected unknown named character reference',\n description:\n 'Unexpected character reference. Expected known named character references'\n }\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {Pick<import('hast-util-from-parse5').Options, 'space' | 'verbose'>} FromParse5Options\n *\n * @typedef {keyof errors} ErrorCode\n * @typedef {0|1|2|boolean|null|undefined} ErrorSeverity\n * @typedef {Partial<Record<ErrorCode, ErrorSeverity>>} ErrorFields\n *\n * @typedef ParseFields\n * @property {boolean|undefined} [fragment=false]\n * Specify whether to parse a fragment, instead of a complete document.\n * In document mode, unopened `html`, `head`, and `body` elements are opened\n * in just the right places.\n * @property {boolean|undefined} [emitParseErrors=false]\n * > ⚠️ Parse errors are currently being added to HTML.\n * > Not all errors emitted by parse5 (or rehype-parse) are specced yet.\n * > Some documentation may still be missing.\n *\n * Emit parse errors while parsing on the vfile.\n * Setting this to `true` starts emitting HTML parse errors.\n *\n * Specific rules can be turned off by setting them to `false` (or `0`).\n * The default, when `emitParseErrors: true`, is `true` (or `1`), and means\n * that rules emit as warnings.\n * Rules can also be configured with `2`, to turn them into fatal errors.\n *\n * @typedef {FromParse5Options & ParseFields & ErrorFields} Options\n */\n\n// @ts-expect-error: remove when typed\nimport Parser5 from 'parse5/lib/parser/index.js'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {errors} from './errors.js'\n\nconst base = 'https://html.spec.whatwg.org/multipage/parsing.html#parse-error-'\n\nconst fatalities = {2: true, 1: false, 0: null}\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | Array<void>, string, Root>}\n */\nexport default function rehypeParse(options) {\n const processorSettings = /** @type {Options} */ (this.data('settings'))\n const settings = Object.assign({}, processorSettings, options)\n\n Object.assign(this, {Parser: parser})\n\n /** @type {import('unified').ParserFunction<Root>} */\n function parser(doc, file) {\n const fn = settings.fragment ? 'parseFragment' : 'parse'\n const onParseError = settings.emitParseErrors ? onerror : null\n const parse5 = new Parser5({\n sourceCodeLocationInfo: true,\n onParseError,\n scriptingEnabled: false\n })\n\n // @ts-expect-error: `parse5` returns document or fragment, which are always\n // mapped to roots.\n return fromParse5(parse5[fn](doc), {\n space: settings.space,\n file,\n verbose: settings.verbose\n })\n\n /**\n * @param {{code: string, startLine: number, startCol: number, startOffset: number, endLine: number, endCol: number, endOffset: number}} error\n */\n function onerror(error) {\n const code = error.code\n const name = camelcase(code)\n const setting = settings[name]\n const config = setting === undefined || setting === null ? true : setting\n const level = typeof config === 'number' ? config : config ? 1 : 0\n const start = {\n line: error.startLine,\n column: error.startCol,\n offset: error.startOffset\n }\n const end = {\n line: error.endLine,\n column: error.endCol,\n offset: error.endOffset\n }\n if (level) {\n /* c8 ignore next */\n const info = errors[name] || {reason: '', description: '', url: ''}\n const message = file.message(format(info.reason), {start, end})\n message.source = 'parse-error'\n message.ruleId = code\n message.fatal = fatalities[level]\n message.note = format(info.description)\n message.url = 'url' in info && info.url === false ? null : base + code\n }\n\n /**\n * @param {string} value\n * @returns {string}\n */\n function format(value) {\n return value\n .replace(/%c(?:-(\\d+))?/g, (_, /** @type {string} */ $1) => {\n const offset = $1 ? -Number.parseInt($1, 10) : 0\n const char = doc.charAt(error.startOffset + offset)\n return char === '`' ? '` ` `' : char\n })\n .replace(\n /%x/g,\n () =>\n '0x' +\n doc.charCodeAt(error.startOffset).toString(16).toUpperCase()\n )\n }\n }\n }\n}\n\n/**\n * @param {string} value\n * @returns {ErrorCode}\n */\nfunction camelcase(value) {\n // @ts-expect-error: this returns a valid error code.\n return value.replace(/-[a-z]/g, ($0) => $0.charAt(1).toUpperCase())\n}\n","/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n * Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n * Whether to only escape possibly dangerous characters.\n * Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n * Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n value = value.replace(\n options.subset\n ? charactersToExpressionCached(options.subset)\n : defaultSubsetRegex,\n basic\n )\n\n if (options.subset || options.escapeOnly) {\n return value\n }\n\n return (\n value\n // Surrogate pairs.\n .replace(surrogatePairsRegex, surrogate)\n // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n // non-ASCII ones).\n .replace(controlCharactersRegex, basic)\n )\n\n /**\n * @param {string} pair\n * @param {number} index\n * @param {string} all\n */\n function surrogate(pair, index, all) {\n return options.format(\n (pair.charCodeAt(0) - 0xd800) * 0x400 +\n pair.charCodeAt(1) -\n 0xdc00 +\n 0x10000,\n all.charCodeAt(index + 2),\n options\n )\n }\n\n /**\n * @param {string} character\n * @param {number} index\n * @param {string} all\n */\n function basic(character, index, all) {\n return options.format(\n character.charCodeAt(0),\n all.charCodeAt(index + 1),\n options\n )\n }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n let cached = subsetToRegexCache.get(subset)\n\n if (!cached) {\n cached = charactersToExpression(subset)\n subsetToRegexCache.set(subset, cached)\n }\n\n return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n /** @type {Array<string>} */\n const groups = []\n let index = -1\n\n while (++index < subset.length) {\n groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n }\n\n return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n","const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n const value = '&#x' + code.toString(16).toUpperCase()\n return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n const value = '&#' + String(code)\n return omit && next && !decimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n nbsp: ' ',\n iexcl: '¡',\n cent: '¢',\n pound: '£',\n curren: '¤',\n yen: '¥',\n brvbar: '¦',\n sect: '§',\n uml: '¨',\n copy: '©',\n ordf: 'ª',\n laquo: '«',\n not: '¬',\n shy: '',\n reg: '®',\n macr: '¯',\n deg: '°',\n plusmn: '±',\n sup2: '²',\n sup3: '³',\n acute: '´',\n micro: 'µ',\n para: '¶',\n middot: '·',\n cedil: '¸',\n sup1: '¹',\n ordm: 'º',\n raquo: '»',\n frac14: '¼',\n frac12: '½',\n frac34: '¾',\n iquest: '¿',\n Agrave: 'À',\n Aacute: 'Á',\n Acirc: 'Â',\n Atilde: 'Ã',\n Auml: 'Ä',\n Aring: 'Å',\n AElig: 'Æ',\n Ccedil: 'Ç',\n Egrave: 'È',\n Eacute: 'É',\n Ecirc: 'Ê',\n Euml: 'Ë',\n Igrave: 'Ì',\n Iacute: 'Í',\n Icirc: 'Î',\n Iuml: 'Ï',\n ETH: 'Ð',\n Ntilde: 'Ñ',\n Ograve: 'Ò',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Otilde: 'Õ',\n Ouml: 'Ö',\n times: '×',\n Oslash: 'Ø',\n Ugrave: 'Ù',\n Uacute: 'Ú',\n Ucirc: 'Û',\n Uuml: 'Ü',\n Yacute: 'Ý',\n THORN: 'Þ',\n szlig: 'ß',\n agrave: 'à',\n aacute: 'á',\n acirc: 'â',\n atilde: 'ã',\n auml: 'ä',\n aring: 'å',\n aelig: 'æ',\n ccedil: 'ç',\n egrave: 'è',\n eacute: 'é',\n ecirc: 'ê',\n euml: 'ë',\n igrave: 'ì',\n iacute: 'í',\n icirc: 'î',\n iuml: 'ï',\n eth: 'ð',\n ntilde: 'ñ',\n ograve: 'ò',\n oacute: 'ó',\n ocirc: 'ô',\n otilde: 'õ',\n ouml: 'ö',\n divide: '÷',\n oslash: 'ø',\n ugrave: 'ù',\n uacute: 'ú',\n ucirc: 'û',\n uuml: 'ü',\n yacute: 'ý',\n thorn: 'þ',\n yuml: 'ÿ',\n fnof: 'ƒ',\n Alpha: 'Α',\n Beta: 'Β',\n Gamma: 'Γ',\n Delta: 'Δ',\n Epsilon: 'Ε',\n Zeta: 'Ζ',\n Eta: 'Η',\n Theta: 'Θ',\n Iota: 'Ι',\n Kappa: 'Κ',\n Lambda: 'Λ',\n Mu: 'Μ',\n Nu: 'Ν',\n Xi: 'Ξ',\n Omicron: 'Ο',\n Pi: 'Π',\n Rho: 'Ρ',\n Sigma: 'Σ',\n Tau: 'Τ',\n Upsilon: 'Υ',\n Phi: 'Φ',\n Chi: 'Χ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n epsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n omicron: 'ο',\n pi: 'π',\n rho: 'ρ',\n sigmaf: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n phi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n thetasym: 'ϑ',\n upsih: 'ϒ',\n piv: 'ϖ',\n bull: '•',\n hellip: '…',\n prime: '′',\n Prime: '″',\n oline: '‾',\n frasl: '⁄',\n weierp: '℘',\n image: 'ℑ',\n real: 'ℜ',\n trade: '™',\n alefsym: 'ℵ',\n larr: '←',\n uarr: '↑',\n rarr: '→',\n darr: '↓',\n harr: '↔',\n crarr: '↵',\n lArr: '⇐',\n uArr: '⇑',\n rArr: '⇒',\n dArr: '⇓',\n hArr: '⇔',\n forall: '∀',\n part: '∂',\n exist: '∃',\n empty: '∅',\n nabla: '∇',\n isin: '∈',\n notin: '∉',\n ni: '∋',\n prod: '∏',\n sum: '∑',\n minus: '−',\n lowast: '∗',\n radic: '√',\n prop: '∝',\n infin: '∞',\n ang: '∠',\n and: '∧',\n or: '∨',\n cap: '∩',\n cup: '∪',\n int: '∫',\n there4: '∴',\n sim: '∼',\n cong: '≅',\n asymp: '≈',\n ne: '≠',\n equiv: '≡',\n le: '≤',\n ge: '≥',\n sub: '⊂',\n sup: '⊃',\n nsub: '⊄',\n sube: '⊆',\n supe: '⊇',\n oplus: '⊕',\n otimes: '⊗',\n perp: '⊥',\n sdot: '⋅',\n lceil: '⌈',\n rceil: '⌉',\n lfloor: '⌊',\n rfloor: '⌋',\n lang: '〈',\n rang: '〉',\n loz: '◊',\n spades: '♠',\n clubs: '♣',\n hearts: '♥',\n diams: '♦',\n quot: '\"',\n amp: '&',\n lt: '<',\n gt: '>',\n OElig: 'Œ',\n oelig: 'œ',\n Scaron: 'Š',\n scaron: 'š',\n Yuml: 'Ÿ',\n circ: 'ˆ',\n tilde: '˜',\n ensp: ' ',\n emsp: ' ',\n thinsp: ' ',\n zwnj: '',\n zwj: '',\n lrm: '',\n rlm: '',\n ndash: '–',\n mdash: '—',\n lsquo: '‘',\n rsquo: '’',\n sbquo: '‚',\n ldquo: '“',\n rdquo: '”',\n bdquo: '„',\n dagger: '†',\n Dagger: '‡',\n permil: '‰',\n lsaquo: '‹',\n rsaquo: '›',\n euro: '€'\n}\n","/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n 'cent',\n 'copy',\n 'divide',\n 'gt',\n 'lt',\n 'not',\n 'para',\n 'times'\n]\n","import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n if (own.call(characterEntitiesHtml4, key)) {\n characters[characterEntitiesHtml4[key]] = key\n }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n const character = String.fromCharCode(code)\n\n if (own.call(characters, character)) {\n const name = characters[character]\n const value = '&' + name\n\n if (\n omit &&\n characterEntitiesLegacy.includes(name) &&\n !dangerous.includes(name) &&\n (!attribute ||\n (next &&\n next !== 61 /* `=` */ &&\n notAlphanumericRegex.test(String.fromCharCode(next))))\n ) {\n return value\n }\n\n return value + ';'\n }\n\n return ''\n}\n","/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n * Prefer named character references (`&`) where possible.\n * @property {boolean} [useShortestReferences=false]\n * Prefer the shortest possible reference, if that results in less bytes.\n * **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n * Whether to omit semicolons when possible.\n * **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n * Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n * Create character references which don’t fail in attributes.\n * **Note**: `attribute` only applies when operating dangerously with\n * `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n /** @type {string|undefined} */\n let named\n\n if (options.useNamedReferences || options.useShortestReferences) {\n named = toNamed(\n code,\n next,\n options.omitOptionalSemicolons,\n options.attribute\n )\n }\n\n // Use the shortest numeric reference when requested.\n // A simple algorithm would use decimal for all code points under 100, as\n // those are shorter than hexadecimal:\n //\n // * `c` vs `c` (decimal shorter)\n // * `d` vs `d` (equal)\n //\n // However, because we take `next` into consideration when `omit` is used,\n // And it would be possible that decimals are shorter on bigger values as\n // well if `next` is hexadecimal but not decimal, we instead compare both.\n if (\n (options.useShortestReferences || !named) &&\n options.useShortestReferences\n ) {\n const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n if (decimal.length < numeric.length) {\n numeric = decimal\n }\n }\n\n return named &&\n (!options.useShortestReferences || named.length < numeric.length)\n ? named\n : numeric\n}\n","/**\n * The smallest way to encode a character.\n *\n * @param {number} code\n * @returns {string}\n */\nexport function formatBasic(code) {\n return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n","/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n * Value to encode.\n * @param {Options} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntities(value, options) {\n return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n * Value to encode.\n * @param {LightOptions} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n return core(value, Object.assign({format: formatBasic}, options))\n}\n","/**\n * @typedef {import('../../types.js').Parent} Parent\n * @typedef {import('../../types.js').Content} Content\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n return sibling\n\n /**\n * Find applicable siblings in a direction.\n *\n * @param {Parent | null | undefined} parent\n * @param {number | null | undefined} index\n * @param {boolean | null | undefined} [includeWhitespace=false]\n * @returns {Content}\n */\n function sibling(parent, index, includeWhitespace) {\n const siblings = parent ? parent.children : []\n let offset = (index || 0) + increment\n let next = siblings && siblings[offset]\n\n if (!includeWhitespace) {\n while (next && whitespace(next)) {\n offset += increment\n next = siblings[offset]\n }\n }\n\n return next\n }\n}\n","/**\n * @typedef {import('../types.js').OmitHandle} OmitHandle\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n * Omission handlers, where each key is a tag name, and each value is the\n * corresponding handler.\n * @returns {OmitHandle}\n * Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n return omit\n\n /**\n * Check if a given node can have a tag omitted.\n *\n * @type {OmitHandle}\n */\n function omit(node, index, parent) {\n return (\n own.call(handlers, node.tagName) &&\n handlers[node.tagName](node, index, parent)\n )\n }\n}\n","/**\n * @typedef {import('../types.js').Element} Element\n * @typedef {import('../types.js').Parent} Parent\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n html,\n head: headOrColgroupOrCaption,\n body,\n p,\n li,\n dt,\n dd,\n rt: rubyElement,\n rp: rubyElement,\n optgroup,\n option,\n menuitem,\n colgroup: headOrColgroupOrCaption,\n caption: headOrColgroupOrCaption,\n thead,\n tbody,\n tfoot,\n tr,\n td: cells,\n th: cells\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n const next = siblingAfter(parent, index, true)\n return (\n !next ||\n (next.type !== 'comment' &&\n !(next.type === 'text' && whitespace(next.value.charAt(0))))\n )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\n// eslint-disable-next-line complexity\nfunction p(_, index, parent) {\n const next = siblingAfter(parent, index)\n return next\n ? next.type === 'element' &&\n (next.tagName === 'address' ||\n next.tagName === 'article' ||\n next.tagName === 'aside' ||\n next.tagName === 'blockquote' ||\n next.tagName === 'details' ||\n next.tagName === 'div' ||\n next.tagName === 'dl' ||\n next.tagName === 'fieldset' ||\n next.tagName === 'figcaption' ||\n next.tagName === 'figure' ||\n next.tagName === 'footer' ||\n next.tagName === 'form' ||\n next.tagName === 'h1' ||\n next.tagName === 'h2' ||\n next.tagName === 'h3' ||\n next.tagName === 'h4' ||\n next.tagName === 'h5' ||\n next.tagName === 'h6' ||\n next.tagName === 'header' ||\n next.tagName === 'hgroup' ||\n next.tagName === 'hr' ||\n next.tagName === 'main' ||\n next.tagName === 'menu' ||\n next.tagName === 'nav' ||\n next.tagName === 'ol' ||\n next.tagName === 'p' ||\n next.tagName === 'pre' ||\n next.tagName === 'section' ||\n next.tagName === 'table' ||\n next.tagName === 'ul')\n : !parent ||\n // Confusing parent.\n !(\n parent.type === 'element' &&\n (parent.tagName === 'a' ||\n parent.tagName === 'audio' ||\n parent.tagName === 'del' ||\n parent.tagName === 'ins' ||\n parent.tagName === 'map' ||\n parent.tagName === 'noscript' ||\n parent.tagName === 'video')\n )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n next &&\n next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd')\n )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd'))\n )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'rp' || next.tagName === 'rt'))\n )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'option' || next.tagName === 'optgroup'))\n )\n}\n\n/**\n * Whether to omit `</menuitem>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction menuitem(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'menuitem' ||\n next.tagName === 'hr' ||\n next.tagName === 'menu'))\n )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n next &&\n next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot')\n )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'td' || next.tagName === 'th'))\n )\n}\n","/**\n * @typedef {import('../types.js').Element} Element\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Content} Content\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingBefore, siblingAfter} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n html,\n head,\n body,\n colgroup,\n tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction html(node) {\n const head = siblingAfter(node, -1)\n return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction head(node) {\n const children = node.children\n /** @type {Array<string>} */\n const seen = []\n let index = -1\n\n while (++index < children.length) {\n const child = children[index]\n if (\n child.type === 'element' &&\n (child.tagName === 'title' || child.tagName === 'base')\n ) {\n if (seen.includes(child.tagName)) return false\n seen.push(child.tagName)\n }\n }\n\n return children.length > 0\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction body(node) {\n const head = siblingAfter(node, -1, true)\n\n return (\n !head ||\n (head.type !== 'comment' &&\n !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n !(\n head.type === 'element' &&\n (head.tagName === 'meta' ||\n head.tagName === 'link' ||\n head.tagName === 'script' ||\n head.tagName === 'style' ||\n head.tagName === 'template')\n ))\n )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it’s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1, true)\n\n // Previous colgroup was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n previous.tagName === 'colgroup' &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return head && head.type === 'element' && head.tagName === 'col'\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parent | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1)\n\n // Previous table section was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return head && head.type === 'element' && head.tagName === 'tr'\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Element} Element\n * @typedef {import('../types.js').Properties} Properties\n * @typedef {import('../types.js').PropertyValue} PropertyValue\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {svg, find} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {opening} from '../omission/opening.js'\nimport {closing} from '../omission/closing.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'name' | 'unquoted' | 'single' | 'double', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n name: [\n ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n unquoted: [\n ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n single: [\n [\"&'\".split(''), '\"&\\'`'.split('')],\n [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n double: [\n ['\"&'.split(''), '\"&\\'`'.split('')],\n ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parent | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\n// eslint-disable-next-line complexity\nexport function element(node, index, parent, state) {\n const schema = state.schema\n const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n let selfClosing =\n schema.space === 'svg'\n ? state.settings.closeEmptyElements\n : state.settings.voids.includes(node.tagName.toLowerCase())\n /** @type {Array<string>} */\n const parts = []\n /** @type {string} */\n let last\n\n if (schema.space === 'html' && node.tagName === 'svg') {\n state.schema = svg\n }\n\n const attrs = serializeAttributes(state, node.properties)\n\n const content = state.all(\n schema.space === 'html' && node.tagName === 'template' ? node.content : node\n )\n\n state.schema = schema\n\n // If the node is categorised as void, but it has children, remove the\n // categorisation.\n // This enables for example `menuitem`s, which are void in W3C HTML but not\n // void in WHATWG HTML, to be stringified properly.\n if (content) selfClosing = false\n\n if (attrs || !omit || !opening(node, index, parent)) {\n parts.push('<', node.tagName, attrs ? ' ' + attrs : '')\n\n if (\n selfClosing &&\n (schema.space === 'svg' || state.settings.closeSelfClosing)\n ) {\n last = attrs.charAt(attrs.length - 1)\n if (\n !state.settings.tightSelfClosing ||\n last === '/' ||\n (last && last !== '\"' && last !== \"'\")\n ) {\n parts.push(' ')\n }\n\n parts.push('/')\n }\n\n parts.push('>')\n }\n\n parts.push(content)\n\n if (!selfClosing && (!omit || !closing(node, index, parent))) {\n parts.push('</' + node.tagName + '>')\n }\n\n return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} props\n * @returns {string}\n */\nfunction serializeAttributes(state, props) {\n /** @type {Array<string>} */\n const values = []\n let index = -1\n /** @type {string} */\n let key\n\n if (props) {\n for (key in props) {\n if (props[key] !== undefined && props[key] !== null) {\n const value = serializeAttribute(state, key, props[key])\n if (value) values.push(value)\n }\n }\n }\n\n while (++index < values.length) {\n const last = state.settings.tightAttributes\n ? values[index].charAt(values[index].length - 1)\n : null\n\n // In tight mode, don’t add a space after quoted attributes.\n if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n values[index] += ' '\n }\n }\n\n return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {PropertyValue} value\n * @returns {string}\n */\n// eslint-disable-next-line complexity\nfunction serializeAttribute(state, key, value) {\n const info = find(state.schema, key)\n const x =\n state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n const y = state.settings.allowDangerousCharacters ? 0 : 1\n let quote = state.quote\n /** @type {string | undefined} */\n let result\n\n if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n value = true\n } else if (\n info.boolean ||\n (info.overloadedBoolean && typeof value !== 'string')\n ) {\n value = Boolean(value)\n }\n\n if (\n value === undefined ||\n value === null ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return ''\n }\n\n const name = stringifyEntities(\n info.attribute,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: constants.name[x][y]\n })\n )\n\n // No value.\n // There is currently only one boolean property in SVG: `[download]` on\n // `<a>`.\n // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n // so I can’t test if dropping the value works.\n // But I assume that it should:\n //\n // ```html\n // <!doctype html>\n // <svg viewBox=\"0 0 100 100\">\n // <a href=https://example.com download>\n // <circle cx=50 cy=40 r=35 />\n // </a>\n // </svg>\n // ```\n //\n // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n if (value === true) return name\n\n // `spaces` doesn’t accept a second argument, but it’s given here just to\n // keep the code cleaner.\n value = Array.isArray(value)\n ? (info.commaSeparated ? commas : spaces)(value, {\n padLeft: !state.settings.tightCommaSeparatedLists\n })\n : String(value)\n\n if (state.settings.collapseEmptyAttributes && !value) return name\n\n // Check unquoted value.\n if (state.settings.preferUnquoted) {\n result = stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n subset: constants.unquoted[x][y],\n attribute: true\n })\n )\n }\n\n // If we don’t want unquoted, or if `value` contains character references when\n // unquoted…\n if (result !== value) {\n // If the alternative is less common than `quote`, switch.\n if (\n state.settings.quoteSmart &&\n ccount(value, quote) > ccount(value, state.alternative)\n ) {\n quote = state.alternative\n }\n\n result =\n quote +\n stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n attribute: true\n })\n ) +\n quote\n }\n\n // Don’t add a `=` for unquoted empties.\n return name + (result ? '=' + result : result)\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Raw} Raw\n * @typedef {import('../types.js').Text} Text\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n/**\n * Serialize a text node.\n *\n * @param {Text | Raw} node\n * Node to handle.\n * @param {number | undefined} _\n * Index of `node` in `parent.\n * @param {Parent | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function text(node, _, parent, state) {\n // Check if content of `node` should be escaped.\n return parent &&\n parent.type === 'element' &&\n (parent.tagName === 'script' || parent.tagName === 'style')\n ? node.value\n : stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: ['<', '&']\n })\n )\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Node, index: number | undefined, parent: Parent | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n invalid,\n unknown,\n handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n * Unknown value.\n * @returns {never}\n * Never.\n */\nfunction invalid(node) {\n throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node\n * Unknown node.\n * @returns {never}\n * Never.\n */\nfunction unknown(node) {\n // @ts-expect-error: `type` is defined.\n throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n","/**\n * @typedef {import('../types.js').Comment} Comment\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parent | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n return state.settings.bogusComments\n ? '<?' +\n stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {subset: ['>']})\n ) +\n '>'\n : '<!--' + node.value.replace(/^>|^->|<!--|-->|--!>|<!-$/g, encode) + '-->'\n\n /**\n * @param {string} $0\n */\n function encode($0) {\n return stringifyEntities(\n $0,\n Object.assign({}, state.settings.characterReferences, {\n subset: ['<', '>']\n })\n )\n }\n}\n","/**\n * @typedef {import('../types.js').DocType} DocType\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {DocType} _1\n * Node to handle.\n * @param {number | undefined} _2\n * Index of `node` in `parent.\n * @param {Parent | undefined} _3\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n return (\n '<!' +\n (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n (state.settings.tightDoctype ? '' : ' ') +\n 'html>'\n )\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').Raw} Raw\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parent | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function raw(node, index, parent, state) {\n return state.settings.allowDangerousHtml\n ? node.value\n : text(node, index, parent, state)\n}\n","/**\n * @typedef {import('../types.js').Root} Root\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parent | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function root(node, _1, _2, state) {\n return state.all(node)\n}\n","/**\n * @typedef {import('./types.js').Node} Node\n * @typedef {import('./types.js').Parent} Parent\n * @typedef {import('./types.js').Content} Content\n * @typedef {import('./types.js').Options} Options\n * @typedef {import('./types.js').State} State\n */\n\nimport {html, svg} from 'property-information'\nimport {htmlVoidElements} from 'html-void-elements'\nimport {handle} from './handle/index.js'\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Node | Array<Content>} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {string}\n * Serialized HTML.\n */\n// eslint-disable-next-line complexity\nexport function toHtml(tree, options) {\n const options_ = options || {}\n const quote = options_.quote || '\"'\n const alternative = quote === '\"' ? \"'\" : '\"'\n\n if (quote !== '\"' && quote !== \"'\") {\n throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n }\n\n /** @type {State} */\n const state = {\n one,\n all,\n settings: {\n omitOptionalTags: options_.omitOptionalTags || false,\n allowParseErrors: options_.allowParseErrors || false,\n allowDangerousCharacters: options_.allowDangerousCharacters || false,\n quoteSmart: options_.quoteSmart || false,\n preferUnquoted: options_.preferUnquoted || false,\n tightAttributes: options_.tightAttributes || false,\n upperDoctype: options_.upperDoctype || false,\n tightDoctype: options_.tightDoctype || false,\n bogusComments: options_.bogusComments || false,\n tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n tightSelfClosing: options_.tightSelfClosing || false,\n collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n allowDangerousHtml: options_.allowDangerousHtml || false,\n voids: options_.voids || htmlVoidElements,\n characterReferences:\n options_.characterReferences || options_.entities || {},\n closeSelfClosing: options_.closeSelfClosing || false,\n closeEmptyElements: options_.closeEmptyElements || false\n },\n schema: options_.space === 'svg' ? svg : html,\n quote,\n alternative\n }\n\n return state.one(\n Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n undefined,\n undefined\n )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Node} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parent | undefined} parent\n * Parent of `node`.\n * @returns {string}\n * Serialized node.\n */\nfunction one(node, index, parent) {\n return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Parent | undefined} parent\n * Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n /** @type {Array<string>} */\n const results = []\n const children = (parent && parent.children) || []\n let index = -1\n\n while (++index < children.length) {\n results[index] = this.one(children[index], index, parent)\n }\n\n return results.join('')\n}\n","import {unified} from 'unified'\nimport rehypeParse from 'rehype-parse'\nimport rehypeStringify from 'rehype-stringify'\n\nexport const rehype = unified().use(rehypeParse).use(rehypeStringify).freeze()\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {Root|Root['children'][number]} Node\n * @typedef {import('hast-util-to-html').Options} Options\n */\n\nimport {toHtml} from 'hast-util-to-html'\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?]|Array<void>, Node, string>}\n */\nexport default function rehypeStringify(config) {\n const processorSettings = /** @type {Options} */ (this.data('settings'))\n const settings = Object.assign({}, processorSettings, config)\n\n Object.assign(this, {Compiler: compiler})\n\n /**\n * @type {import('unified').CompilerFunction<Node, string>}\n */\n function compiler(tree) {\n return toHtml(tree, settings)\n }\n}\n","import _taggedTemplateLiteralLoose from \"@babel/runtime/helpers/taggedTemplateLiteralLoose\";\nvar _templateObject;\nimport React, { useContext, useEffect } from 'react';\nimport { rehype } from 'rehype';\nimport rehypePrism from 'rehype-prism-plus';\nimport { EditorContext } from '../../Context';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction html2Escape(sHtml) {\n return sHtml\n // .replace(/```(\\w+)?([\\s\\S]*?)(\\s.+)?```/g, (str: string) => {\n // return str.replace(\n // /[<&\"]/g,\n // (c: string) => (({ '<': '<', '>': '>', '&': '&', '\"': '"' } as Record<string, string>)[c]),\n // );\n // })\n .replace(/[<&\"]/g, c => ({\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"'\n })[c]);\n}\nexport default function Markdown(props) {\n var {\n prefixCls\n } = props;\n var {\n markdown = '',\n highlightEnable,\n dispatch\n } = useContext(EditorContext);\n var preRef = /*#__PURE__*/React.createRef();\n useEffect(() => {\n if (preRef.current && dispatch) {\n dispatch({\n textareaPre: preRef.current\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n if (!markdown) {\n return /*#__PURE__*/_jsx(\"pre\", {\n ref: preRef,\n className: prefixCls + \"-text-pre wmde-markdown-color\"\n });\n }\n var mdStr = \"<pre class=\\\"language-markdown \" + prefixCls + \"-text-pre wmde-markdown-color\\\"><code class=\\\"language-markdown\\\">\" + html2Escape(String.raw(_templateObject || (_templateObject = _taggedTemplateLiteralLoose([\"\", \"\"])), markdown)) + \"\\n</code></pre>\";\n if (highlightEnable) {\n try {\n mdStr = rehype().data('settings', {\n fragment: true\n }).use(rehypePrism, {\n ignoreMissing: true\n }).processSync(mdStr).toString();\n } catch (error) {}\n }\n return /*#__PURE__*/React.createElement('div', {\n className: 'wmde-markdown-color',\n dangerouslySetInnerHTML: {\n __html: mdStr || ''\n }\n });\n}","/**\n * The MIT License\n * Copyright (c) 2018 Dmitriy Kubyshkin\n * Copied from https://github.com/grassator/insert-text-at-cursor\n */\n\nvar browserSupportsTextareaTextNodes;\n\n/**\n * @param {HTMLElement} input\n * @return {boolean}\n */\nfunction canManipulateViaTextNodes(input) {\n if (input.nodeName !== 'TEXTAREA') {\n return false;\n }\n if (typeof browserSupportsTextareaTextNodes === 'undefined') {\n var textarea = document.createElement('textarea');\n textarea.value = '1';\n browserSupportsTextareaTextNodes = !!textarea.firstChild;\n }\n return browserSupportsTextareaTextNodes;\n}\n\n/**\n * @param {HTMLTextAreaElement|HTMLInputElement} input\n * @param {string} text\n * @returns {void}\n */\nexport function insertTextAtPosition(input, text) {\n // Most of the used APIs only work with the field selected\n input.focus();\n\n // IE 8-10\n if (document.selection) {\n var ieRange = document.selection.createRange();\n ieRange.text = text;\n\n // Move cursor after the inserted text\n ieRange.collapse(false /* to the end */);\n ieRange.select();\n return;\n }\n\n // Webkit + Edge\n var isSuccess = false;\n if (text !== '') {\n isSuccess = document.execCommand && document.execCommand('insertText', false, text);\n } else {\n isSuccess = document.execCommand && document.execCommand('delete', false);\n }\n if (!isSuccess) {\n var start = input.selectionStart;\n var end = input.selectionEnd;\n // Firefox (non-standard method)\n if (typeof input.setRangeText === 'function') {\n input.setRangeText(text);\n } else {\n // To make a change we just need a Range, not a Selection\n var range = document.createRange();\n var textNode = document.createTextNode(text);\n if (canManipulateViaTextNodes(input)) {\n var node = input.firstChild;\n\n // If textarea is empty, just insert the text\n if (!node) {\n input.appendChild(textNode);\n } else {\n // Otherwise we need to find a nodes for start and end\n var offset = 0;\n var startNode = null;\n var endNode = null;\n while (node && (startNode === null || endNode === null)) {\n var nodeLength = node.nodeValue.length;\n\n // if start of the selection falls into current node\n if (start >= offset && start <= offset + nodeLength) {\n range.setStart(startNode = node, start - offset);\n }\n\n // if end of the selection falls into current node\n if (end >= offset && end <= offset + nodeLength) {\n range.setEnd(endNode = node, end - offset);\n }\n offset += nodeLength;\n node = node.nextSibling;\n }\n\n // If there is some text selected, remove it as we should replace it\n if (start !== end) {\n range.deleteContents();\n }\n }\n }\n\n // If the node is a textarea and the range doesn't span outside the element\n //\n // Get the commonAncestorContainer of the selected range and test its type\n // If the node is of type `#text` it means that we're still working with text nodes within our textarea element\n // otherwise, if it's of type `#document` for example it means our selection spans outside the textarea.\n if (canManipulateViaTextNodes(input) && range.commonAncestorContainer.nodeName === '#text') {\n // Finally insert a new node. The browser will automatically split start and end nodes into two if necessary\n range.insertNode(textNode);\n } else {\n // If the node is not a textarea or the range spans outside a textarea the only way is to replace the whole value\n var value = input.value;\n input.value = value.slice(0, start) + text + value.slice(end);\n }\n }\n\n // Correct the cursor position to be at the end of the insertion\n input.setSelectionRange(start + text.length, start + text.length);\n\n // Notify any possible listeners of the change\n var e = document.createEvent('UIEvent');\n e.initEvent('input', true, false);\n input.dispatchEvent(e);\n }\n}","function _taggedTemplateLiteralLoose(e, t) {\n return t || (t = e.slice(0)), e.raw = t, e;\n}\nexport { _taggedTemplateLiteralLoose as default };","export function selectWord(_ref) {\n var {\n text,\n selection,\n prefix,\n suffix = prefix\n } = _ref;\n var result = selection;\n if (text && text.length && selection.start === selection.end) {\n result = getSurroundingWord(text, selection.start);\n }\n if (result.start >= prefix.length && result.end <= text.length - suffix.length) {\n var selectedTextContext = text.slice(result.start - prefix.length, result.end + suffix.length);\n if (selectedTextContext.startsWith(prefix) && selectedTextContext.endsWith(suffix)) {\n return {\n start: result.start - prefix.length,\n end: result.end + suffix.length\n };\n }\n }\n return result;\n}\nexport function selectLine(_ref2) {\n var {\n text,\n selection\n } = _ref2;\n var start = text.slice(0, selection.start).lastIndexOf('\\n') + 1;\n var end = text.slice(selection.end).indexOf('\\n') + selection.end;\n if (end === selection.end - 1) {\n end = text.length;\n }\n return {\n start,\n end\n };\n}\n\n/**\n * Gets the number of line-breaks that would have to be inserted before the given 'startPosition'\n * to make sure there's an empty line between 'startPosition' and the previous text\n */\nexport function getBreaksNeededForEmptyLineBefore(text, startPosition) {\n if (text === void 0) {\n text = '';\n }\n if (startPosition === 0) return 0;\n\n // rules:\n // - If we're in the first line, no breaks are needed\n // - Otherwise there must be 2 breaks before the previous character. Depending on how many breaks exist already, we\n // may need to insert 0, 1 or 2 breaks\n\n var neededBreaks = 2;\n var isInFirstLine = true;\n for (var i = startPosition - 1; i >= 0 && neededBreaks >= 0; i--) {\n switch (text.charCodeAt(i)) {\n case 32:\n // blank space\n continue;\n case 10:\n // line break\n neededBreaks--;\n isInFirstLine = false;\n break;\n default:\n return neededBreaks;\n }\n }\n return isInFirstLine ? 0 : neededBreaks;\n}\n\n/**\n * Gets the number of line-breaks that would have to be inserted after the given 'startPosition'\n * to make sure there's an empty line between 'startPosition' and the next text\n */\nexport function getBreaksNeededForEmptyLineAfter(text, startPosition) {\n if (text === void 0) {\n text = '';\n }\n if (startPosition === text.length - 1) return 0;\n\n // rules:\n // - If we're in the first line, no breaks are needed\n // - Otherwise there must be 2 breaks before the previous character. Depending on how many breaks exist already, we\n // may need to insert 0, 1 or 2 breaks\n\n var neededBreaks = 2;\n var isInLastLine = true;\n for (var i = startPosition; i < text.length && neededBreaks >= 0; i++) {\n switch (text.charCodeAt(i)) {\n case 32:\n continue;\n case 10:\n {\n neededBreaks--;\n isInLastLine = false;\n break;\n }\n default:\n return neededBreaks;\n }\n }\n return isInLastLine ? 0 : neededBreaks;\n}\nexport function getSurroundingWord(text, position) {\n if (!text) throw Error(\"Argument 'text' should be truthy\");\n var isWordDelimiter = c => c === ' ' || c.charCodeAt(0) === 10;\n\n // leftIndex is initialized to 0 because if selection is 0, it won't even enter the iteration\n var start = 0;\n // rightIndex is initialized to text.length because if selection is equal to text.length it won't even enter the interation\n var end = text.length;\n\n // iterate to the left\n for (var i = position; i - 1 > -1; i--) {\n if (isWordDelimiter(text[i - 1])) {\n start = i;\n break;\n }\n }\n\n // iterate to the right\n for (var _i = position; _i < text.length; _i++) {\n if (isWordDelimiter(text[_i])) {\n end = _i;\n break;\n }\n }\n return {\n start,\n end\n };\n}\nexport function executeCommand(_ref3) {\n var {\n api,\n selectedText,\n selection,\n prefix,\n suffix = prefix\n } = _ref3;\n if (selectedText.length >= prefix.length + suffix.length && selectedText.startsWith(prefix) && selectedText.endsWith(suffix)) {\n api.replaceSelection(selectedText.slice(prefix.length, suffix.length ? -suffix.length : undefined));\n api.setSelectionRange({\n start: selection.start - prefix.length,\n end: selection.end - prefix.length\n });\n } else {\n api.replaceSelection(\"\" + prefix + selectedText + suffix);\n api.setSelectionRange({\n start: selection.start + prefix.length,\n end: selection.end + prefix.length\n });\n }\n}\n/**\n * Inserts insertionString before each line\n */\nexport function insertBeforeEachLine(selectedText, insertBefore) {\n var lines = selectedText.split(/\\n/);\n var insertionLength = 0;\n var modifiedText = lines.map((item, index) => {\n if (typeof insertBefore === 'string') {\n if (item.startsWith(insertBefore)) {\n insertionLength -= insertBefore.length;\n return item.slice(insertBefore.length);\n }\n insertionLength += insertBefore.length;\n return insertBefore + item;\n }\n if (typeof insertBefore === 'function') {\n if (item.startsWith(insertBefore(item, index))) {\n insertionLength -= insertBefore(item, index).length;\n return item.slice(insertBefore(item, index).length);\n }\n var insertionResult = insertBefore(item, index);\n insertionLength += insertionResult.length;\n return insertBefore(item, index) + item;\n }\n throw Error('insertion is expected to be either a string or a function');\n }).join('\\n');\n return {\n modifiedText,\n insertionLength\n };\n}","import React from 'react';\nimport { selectWord, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var bold = {\n name: 'bold',\n keyCommand: 'bold',\n shortcuts: 'ctrlcmd+b',\n prefix: '**',\n buttonProps: {\n 'aria-label': 'Add bold text (ctrl + b)',\n title: 'Add bold text (ctrl + b)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n role: \"img\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 384 512\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M304.793 243.891c33.639-18.537 53.657-54.16 53.657-95.693 0-48.236-26.25-87.626-68.626-104.179C265.138 34.01 240.849 32 209.661 32H24c-8.837 0-16 7.163-16 16v33.049c0 8.837 7.163 16 16 16h33.113v318.53H24c-8.837 0-16 7.163-16 16V464c0 8.837 7.163 16 16 16h195.69c24.203 0 44.834-1.289 66.866-7.584C337.52 457.193 376 410.647 376 350.014c0-52.168-26.573-91.684-71.207-106.123zM142.217 100.809h67.444c16.294 0 27.536 2.019 37.525 6.717 15.828 8.479 24.906 26.502 24.906 49.446 0 35.029-20.32 56.79-53.029 56.79h-76.846V100.809zm112.642 305.475c-10.14 4.056-22.677 4.907-31.409 4.907h-81.233V281.943h84.367c39.645 0 63.057 25.38 63.057 63.057.001 28.425-13.66 52.483-34.782 61.284z\"\n })\n }),\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix\n });\n }\n};","import React from 'react';\nimport { selectWord, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var codeBlock = {\n name: 'codeBlock',\n keyCommand: 'codeBlock',\n shortcuts: 'ctrlcmd+shift+j',\n prefix: '```',\n buttonProps: {\n 'aria-label': 'Insert Code Block (ctrl + shift + j)',\n title: 'Insert Code Block (ctrl + shift +j)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n width: \"13\",\n height: \"13\",\n role: \"img\",\n viewBox: \"0 0 156 156\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M110.85 120.575 43.7 120.483333 43.7083334 110.091667 110.85 110.191667 110.841667 120.583333 110.85 120.575ZM85.1333334 87.1916666 43.625 86.7083332 43.7083334 76.3166666 85.2083334 76.7916666 85.1333334 87.1916666 85.1333334 87.1916666ZM110.841667 53.4166666 43.7 53.3166666 43.7083334 42.925 110.85 43.025 110.841667 53.4166666ZM36 138C27.2916666 138 20.75 136.216667 16.4 132.666667 12.1333334 129.2 10 124.308333 10 118L10 95.3333332C10 91.0666666 9.25 88.1333332 7.7333334 86.5333332 6.3166668 84.8416666 3.7333334 84 0 84L0 72C3.7333334 72 6.3083334 71.2 7.7333334 69.6 9.2416668 67.9083334 10 64.9333334 10 60.6666666L10 38C10 31.775 12.1333334 26.8833334 16.4 23.3333332 20.7583334 19.7749998 27.2916666 18 36 18L40.6666668 18 40.6666668 30 36 30C34.0212222 29.9719277 32.1263151 30.7979128 30.8 32.2666666 29.3605875 33.8216362 28.5938182 35.8823287 28.6666668 38L28.6666668 60.6666666C28.6666668 67.5083332 26.6666668 72.4 22.6666668 75.3333332 20.9317416 76.7274684 18.8640675 77.6464347 16.6666668 78 18.8916668 78.35 20.8916668 79.2416666 22.6666668 80.6666666 26.6666668 83.95 28.6666668 88.8416666 28.6666668 95.3333332L28.6666668 118C28.6666668 120.308333 29.3750002 122.216667 30.8 123.733333 32.2166666 125.241667 33.9583334 126 36 126L40.6666668 126 40.6666668 138 36 138 36 138ZM114.116667 126 118.783333 126C120.833333 126 122.566667 125.241667 123.983333 123.733333 125.422746 122.178364 126.189515 120.117671 126.116667 118L126.116667 95.3333332C126.116667 88.8333332 128.116667 83.9499998 132.116667 80.6666666 133.9 79.2416666 135.9 78.35 138.116667 78 135.919156 77.6468047 133.851391 76.7277979 132.116667 75.3333332 128.116667 72.3999998 126.116667 67.5 126.116667 60.6666666L126.116667 38C126.189515 35.8823287 125.422746 33.8216361 123.983333 32.2666666 122.657018 30.7979128 120.762111 29.9719277 118.783333 30L114.116667 30 114.116667 18 118.783333 18C127.5 18 133.983333 19.775 138.25 23.3333332 142.608333 26.8833332 144.783333 31.7749998 144.783333 38L144.783333 60.6666666C144.783333 64.9333332 145.5 67.9083332 146.916667 69.6 148.433333 71.2 151.05 72 154.783333 72L154.783333 84C151.05 84 148.433333 84.8333334 146.916667 86.5333332 145.5 88.1333332 144.783333 91.0666666 144.783333 95.3333332L144.783333 118C144.783333 124.308333 142.616667 129.2 138.25 132.666667 133.983333 136.216667 127.5 138 118.783333 138L114.116667 138 114.116667 126 114.116667 126Z\"\n })\n }),\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: '```\\n',\n suffix: '\\n```'\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n\n // Based on context determine if new line is needed or not\n var prefix = '\\n```\\n';\n var suffix = '\\n```\\n';\n if (state1.selectedText.length >= prefix.length + suffix.length - 2 && state1.selectedText.startsWith(prefix) && state1.selectedText.endsWith(suffix)) {\n // Remove code block\n prefix = '```\\n';\n suffix = '\\n```';\n } else {\n // Add code block\n if (state1.selection.start >= 1 && state.text.slice(state1.selection.start - 1, state1.selection.start) === '\\n' || state1.selection.start === 0) {\n prefix = '```\\n';\n }\n if (state1.selection.end <= state.text.length - 1 && state.text.slice(state1.selection.end, state1.selection.end + 1) === '\\n' || state1.selection.end === state.text.length) {\n suffix = '\\n```';\n }\n }\n var newSelectionRange2 = selectWord({\n text: state.text,\n selection: state.selection,\n prefix,\n suffix\n });\n var state2 = api.setSelectionRange(newSelectionRange2);\n executeCommand({\n api,\n selectedText: state2.selectedText,\n selection: state.selection,\n prefix,\n suffix\n });\n }\n};\nexport var code = {\n name: 'code',\n keyCommand: 'code',\n shortcuts: 'ctrlcmd+j',\n prefix: '`',\n buttonProps: {\n 'aria-label': 'Insert code (ctrl + j)',\n title: 'Insert code (ctrl + j)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n width: \"14\",\n height: \"14\",\n role: \"img\",\n viewBox: \"0 0 640 512\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"\n })\n }),\n execute: (state, api) => {\n if (state.selectedText.indexOf('\\n') === -1) {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix\n });\n } else {\n codeBlock.execute(state, api);\n }\n }\n};","import React from 'react';\nimport { selectWord, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport var comment = {\n name: 'comment',\n keyCommand: 'comment',\n shortcuts: 'ctrlcmd+/',\n prefix: '<!-- ',\n suffix: ' -->',\n buttonProps: {\n 'aria-label': 'Insert comment (ctrl + /)',\n title: 'Insert comment (ctrl + /)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n height: \"1em\",\n width: \"1em\",\n viewBox: \"0 0 25 25\",\n children: /*#__PURE__*/_jsxs(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\",\n children: [/*#__PURE__*/_jsx(\"polygon\", {\n points: \".769 .727 24.981 .727 24.981 24.727 .769 24.727\"\n }), /*#__PURE__*/_jsx(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"3\",\n d: \"M12.625,23.8787879 L8.125,19.6969697 L5.125,19.6969697 C2.63971863,19.6969697 0.625,17.8247059 0.625,15.5151515 L0.625,7.15151515 C0.625,4.84196074 2.63971863,2.96969697 5.125,2.96969697 L20.125,2.96969697 C22.6102814,2.96969697 24.625,4.84196074 24.625,7.15151515 L24.625,15.5151515 C24.625,17.8247059 22.6102814,19.6969697 20.125,19.6969697 L17.125,19.6969697 L12.625,23.8787879\"\n }), /*#__PURE__*/_jsx(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"3\",\n d: \"M10.625,8.54545455 L7.25,11.3333333 L10.625,14.1212121 M15.6875,8.54545455 L19.0625,11.3333333 L15.6875,14.1212121\"\n })]\n })\n }),\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n};","export var divider = {\n keyCommand: 'divider'\n};","import React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var fullscreen = {\n name: 'fullscreen',\n keyCommand: 'fullscreen',\n shortcuts: 'ctrlcmd+0',\n value: 'fullscreen',\n buttonProps: {\n 'aria-label': 'Toggle fullscreen (ctrl + 0)',\n title: 'Toggle fullscreen (ctrl+ 0)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 520 520\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M118 171.133334L118 342.200271C118 353.766938 126.675 365.333605 141.133333 365.333605L382.634614 365.333605C394.201281 365.333605 405.767948 356.658605 405.767948 342.200271L405.767948 171.133334C405.767948 159.566667 397.092948 148 382.634614 148L141.133333 148C126.674999 148 117.999999 156.675 118 171.133334zM465.353591 413.444444L370 413.444444 370 471.222222 474.0221 471.222222C500.027624 471.222222 520.254143 451 520.254143 425L520.254143 321 462.464089 321 462.464089 413.444444 465.353591 413.444444zM471.0221 43L367 43 367 100.777778 462.353591 100.777778 462.353591 196.111111 520.143647 196.111111 520.143647 89.2222219C517.254144 63.2222219 497.027624 43 471.0221 43zM57.7900547 100.777778L153.143646 100.777778 153.143646 43 46.2320439 43C20.2265191 43 0 63.2222219 0 89.2222219L0 193.222222 57.7900547 193.222222 57.7900547 100.777778zM57.7900547 321L0 321 0 425C0 451 20.2265191 471.222222 46.2320439 471.222223L150.254143 471.222223 150.254143 413.444445 57.7900547 413.444445 57.7900547 321z\"\n })\n }),\n execute: (state, api, dispatch, executeCommandState, shortcuts) => {\n api.textArea.focus();\n if (shortcuts && dispatch && executeCommandState) {\n dispatch({\n fullscreen: !executeCommandState.fullscreen\n });\n }\n }\n};","import _objectDestructuringEmpty from \"@babel/runtime/helpers/objectDestructuringEmpty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var group = (arr, options) => {\n var data = _extends({\n children: arr,\n icon: /*#__PURE__*/_jsx(\"svg\", {\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 520 520\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M15.7083333,468 C7.03242448,468 0,462.030833 0,454.666667 L0,421.333333 C0,413.969167 7.03242448,408 15.7083333,408 L361.291667,408 C369.967576,408 377,413.969167 377,421.333333 L377,454.666667 C377,462.030833 369.967576,468 361.291667,468 L15.7083333,468 Z M21.6666667,366 C9.69989583,366 0,359.831861 0,352.222222 L0,317.777778 C0,310.168139 9.69989583,304 21.6666667,304 L498.333333,304 C510.300104,304 520,310.168139 520,317.777778 L520,352.222222 C520,359.831861 510.300104,366 498.333333,366 L21.6666667,366 Z M136.835938,64 L136.835937,126 L107.25,126 L107.25,251 L40.75,251 L40.75,126 L-5.68434189e-14,126 L-5.68434189e-14,64 L136.835938,64 Z M212,64 L212,251 L161.648438,251 L161.648438,64 L212,64 Z M378,64 L378,126 L343.25,126 L343.25,251 L281.75,251 L281.75,126 L238,126 L238,64 L378,64 Z M449.047619,189.550781 L520,189.550781 L520,251 L405,251 L405,64 L449.047619,64 L449.047619,189.550781 Z\"\n })\n }),\n execute: () => {}\n }, options, {\n keyCommand: 'group'\n });\n if (Array.isArray(data.children)) {\n data.children = data.children.map(_ref => {\n var item = _extends({}, (_objectDestructuringEmpty(_ref), _ref));\n item.parent = data;\n return _extends({}, item);\n });\n }\n return data;\n};","function _objectDestructuringEmpty(t) {\n if (null == t) throw new TypeError(\"Cannot destructure \" + t);\n}\nexport { _objectDestructuringEmpty as default };","import React from 'react';\nimport { selectWord, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var hr = {\n name: 'hr',\n keyCommand: 'hr',\n shortcuts: 'ctrlcmd+h',\n prefix: '\\n\\n---\\n',\n suffix: '',\n buttonProps: {\n 'aria-label': 'Insert HR (ctrl + h)',\n title: 'Insert HR (ctrl + h)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 175 175\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M0,129 L175,129 L175,154 L0,154 L0,129 Z M3,9 L28.2158203,9 L28.2158203,47.9824219 L55.7695313,47.9824219 L55.7695313,9 L81.0966797,9 L81.0966797,107.185547 L55.7695313,107.185547 L55.7695313,68.0214844 L28.2158203,68.0214844 L28.2158203,107.185547 L3,107.185547 L3,9 Z M93.1855469,100.603516 L93.1855469,19 L135.211914,19 C143.004922,19 148.960917,19.6679621 153.080078,21.0039063 C157.199239,22.3398504 160.520495,24.8168764 163.043945,28.4350586 C165.567395,32.0532407 166.829102,36.459935 166.829102,41.6552734 C166.829102,46.1826398 165.864267,50.0883625 163.93457,53.3725586 C162.004873,56.6567547 159.351579,59.3193257 155.974609,61.3603516 C153.822255,62.6591862 150.872089,63.7353473 147.124023,64.5888672 C150.129898,65.5908253 152.319329,66.5927684 153.692383,67.5947266 C154.620122,68.2626987 155.965323,69.6913953 157.728027,71.8808594 C159.490731,74.0703234 160.668942,75.7587831 161.262695,76.9462891 L173,100.603516 L144.953125,100.603516 L131.482422,75.6660156 C129.775382,72.4374839 128.253913,70.3408251 126.917969,69.3759766 C125.0996,68.1142515 123.040051,67.4833984 120.739258,67.4833984 L118.512695,67.4833984 L118.512695,100.603516 L93.1855469,100.603516 Z M118.512695,52.0644531 L129.144531,52.0644531 C130.294928,52.0644531 132.521468,51.6933631 135.824219,50.9511719 C137.494149,50.6171858 138.857905,49.7636787 139.915527,48.390625 C140.97315,47.0175713 141.501953,45.4404386 141.501953,43.6591797 C141.501953,41.0244009 140.667001,39.0019602 138.99707,37.5917969 C137.32714,36.1816336 134.191429,35.4765625 129.589844,35.4765625 L117.512695,35.4765625 L118.512695,52.0644531 Z\",\n transform: \"translate(0 9)\"\n })\n }),\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n if (state1.selectedText.length >= state.command.prefix.length && state1.selectedText.startsWith(state.command.prefix)) {\n // Remove\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n } else {\n // Add\n state1 = api.setSelectionRange({\n start: state.selection.start,\n end: state.selection.start\n });\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n }\n};","import React from 'react';\nimport { selectWord, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var image = {\n name: 'image',\n keyCommand: 'image',\n shortcuts: 'ctrlcmd+k',\n prefix: '',\n buttonProps: {\n 'aria-label': 'Add image (ctrl + k)',\n title: 'Add image (ctrl + k)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M15 9c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4-7H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 13l-6-5-2 2-4-5-4 8V4h16v11z\"\n })\n }),\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n if (state1.selectedText.includes('http') || state1.selectedText.includes('www')) {\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n } else {\n newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: '![',\n suffix: ']()'\n });\n state1 = api.setSelectionRange(newSelectionRange);\n if (state1.selectedText.length === 0) {\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: ''\n });\n } else {\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: '![',\n suffix: ']()'\n });\n }\n }\n }\n};","import React from 'react';\nimport { selectWord, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var italic = {\n name: 'italic',\n keyCommand: 'italic',\n shortcuts: 'ctrlcmd+i',\n prefix: '*',\n buttonProps: {\n 'aria-label': 'Add italic text (ctrl + i)',\n title: 'Add italic text (ctrl + i)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n \"data-name\": \"italic\",\n width: \"12\",\n height: \"12\",\n role: \"img\",\n viewBox: \"0 0 320 512\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M204.758 416h-33.849l62.092-320h40.725a16 16 0 0 0 15.704-12.937l6.242-32C297.599 41.184 290.034 32 279.968 32H120.235a16 16 0 0 0-15.704 12.937l-6.242 32C96.362 86.816 103.927 96 113.993 96h33.846l-62.09 320H46.278a16 16 0 0 0-15.704 12.935l-6.245 32C22.402 470.815 29.967 480 40.034 480h158.479a16 16 0 0 0 15.704-12.935l6.245-32c1.927-9.88-5.638-19.065-15.704-19.065z\"\n })\n }),\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix\n });\n }\n};","import React from 'react';\nimport { selectWord, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var link = {\n name: 'link',\n keyCommand: 'link',\n shortcuts: 'ctrlcmd+l',\n prefix: '[',\n suffix: '](url)',\n buttonProps: {\n 'aria-label': 'Add a link (ctrl + l)',\n title: 'Add a link (ctrl + l)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n \"data-name\": \"italic\",\n width: \"12\",\n height: \"12\",\n role: \"img\",\n viewBox: \"0 0 520 520\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M331.751196,182.121107 C392.438214,241.974735 391.605313,337.935283 332.11686,396.871226 C332.005129,396.991316 331.873084,397.121413 331.751196,397.241503 L263.493918,464.491645 C203.291404,523.80587 105.345257,523.797864 45.151885,464.491645 C-15.0506283,405.187427 -15.0506283,308.675467 45.151885,249.371249 L82.8416853,212.237562 C92.836501,202.39022 110.049118,208.9351 110.56511,222.851476 C111.223305,240.5867 114.451306,258.404985 120.407566,275.611815 C122.424812,281.438159 120.983487,287.882964 116.565047,292.23621 L103.272145,305.332975 C74.8052033,333.379887 73.9123737,379.047937 102.098973,407.369054 C130.563883,435.969378 177.350591,436.139505 206.033884,407.879434 L274.291163,340.6393 C302.9257,312.427264 302.805844,266.827265 274.291163,238.733318 C270.531934,235.036561 266.74528,232.16442 263.787465,230.157924 C259.544542,227.2873 256.928256,222.609848 256.731165,217.542518 C256.328935,206.967633 260.13184,196.070508 268.613213,187.714278 L289.998463,166.643567 C295.606326,161.118448 304.403592,160.439942 310.906317,164.911276 C318.353355,170.034591 325.328531,175.793397 331.751196,182.121107 Z M240.704978,55.4828366 L172.447607,122.733236 C172.325719,122.853326 172.193674,122.983423 172.081943,123.103513 C117.703294,179.334654 129.953294,261.569283 185.365841,328.828764 C191.044403,335.721376 198.762988,340.914712 206.209732,346.037661 C212.712465,350.509012 221.510759,349.829503 227.117615,344.305363 L248.502893,323.234572 C256.984277,314.87831 260.787188,303.981143 260.384957,293.406218 C260.187865,288.338869 257.571576,283.661398 253.328648,280.790763 C250.370829,278.78426 246.58417,275.912107 242.824936,272.215337 C214.310216,244.121282 206.209732,204.825874 229.906702,179.334654 L298.164073,112.094263 C326.847404,83.8340838 373.633159,84.0042113 402.099123,112.604645 C430.285761,140.92587 429.393946,186.594095 400.92595,214.641114 L387.63303,227.737929 C383.214584,232.091191 381.773257,238.536021 383.790506,244.362388 C389.746774,261.569283 392.974779,279.387637 393.632975,297.122928 C394.149984,311.039357 411.361608,317.584262 421.356437,307.736882 L459.046288,270.603053 C519.249898,211.29961 519.249898,114.787281 459.047304,55.4828366 C398.853851,-3.82360914 300.907572,-3.83161514 240.704978,55.4828366 Z\"\n })\n }),\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n if (state1.selectedText.includes('http') || state1.selectedText.includes('www')) {\n newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: '[](',\n suffix: ')'\n });\n state1 = api.setSelectionRange(newSelectionRange);\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: '[](',\n suffix: ')'\n });\n } else {\n if (state1.selectedText.length === 0) {\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: '[title',\n suffix: '](url)'\n });\n } else {\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n }\n }\n};","import React from 'react';\nimport { selectWord, getBreaksNeededForEmptyLineBefore, getBreaksNeededForEmptyLineAfter, insertBeforeEachLine } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var makeList = (state, api, insertBefore) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n var breaksBeforeCount = getBreaksNeededForEmptyLineBefore(state1.text, state1.selection.start);\n var breaksBefore = Array(breaksBeforeCount + 1).join('\\n');\n var breaksAfterCount = getBreaksNeededForEmptyLineAfter(state1.text, state1.selection.end);\n var breaksAfter = Array(breaksAfterCount + 1).join('\\n');\n var {\n modifiedText,\n insertionLength\n } = insertBeforeEachLine(state1.selectedText, insertBefore);\n if (insertionLength < 0) {\n // Remove\n var selectionStart = state1.selection.start;\n var selectionEnd = state1.selection.end;\n if (state1.selection.start > 0 && state.text.slice(state1.selection.start - 1, state1.selection.start) === '\\n') {\n selectionStart -= 1;\n }\n if (state1.selection.end < state.text.length - 1 && state.text.slice(state1.selection.end, state1.selection.end + 1) === '\\n') {\n selectionEnd += 1;\n }\n api.setSelectionRange({\n start: selectionStart,\n end: selectionEnd\n });\n api.replaceSelection(\"\" + modifiedText);\n api.setSelectionRange({\n start: selectionStart,\n end: selectionStart + modifiedText.length\n });\n } else {\n // Add\n api.replaceSelection(\"\" + breaksBefore + modifiedText + breaksAfter);\n var _selectionStart = state1.selection.start + breaksBeforeCount;\n var _selectionEnd = _selectionStart + modifiedText.length;\n api.setSelectionRange({\n start: _selectionStart,\n end: _selectionEnd\n });\n }\n};\nexport var unorderedListCommand = {\n name: 'unordered-list',\n keyCommand: 'list',\n shortcuts: 'ctrl+shift+u',\n prefix: '- ',\n buttonProps: {\n 'aria-label': 'Add unordered list (ctrl + shift + u)',\n title: 'Add unordered list (ctrl + shift + u)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n \"data-name\": \"unordered-list\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M96 96c0 26.51-21.49 48-48 48S0 122.51 0 96s21.49-48 48-48 48 21.49 48 48zM48 208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm0 160c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm96-236h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\n })\n }),\n execute: (state, api) => {\n makeList(state, api, '- ');\n }\n};\nexport var orderedListCommand = {\n name: 'ordered-list',\n keyCommand: 'list',\n shortcuts: 'ctrl+shift+o',\n prefix: '1. ',\n buttonProps: {\n 'aria-label': 'Add ordered list (ctrl + shift + o)',\n title: 'Add ordered list (ctrl + shift + o)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n \"data-name\": \"ordered-list\",\n width: \"12\",\n height: \"12\",\n role: \"img\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M3.263 139.527c0-7.477 3.917-11.572 11.573-11.572h15.131V88.078c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.938C32.815 33.602 36.732 32 42.785 32H54.89c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572H14.836c-7.656 0-11.573-4.095-11.573-11.572v-8.902zM2.211 304.591c0-47.278 50.955-56.383 50.955-69.165 0-7.18-5.954-8.755-9.28-8.755-3.153 0-6.479 1.051-9.455 3.852-5.079 4.903-10.507 7.004-16.111 2.451l-8.579-6.829c-5.779-4.553-7.18-9.805-2.803-15.409C13.592 201.981 26.025 192 47.387 192c19.437 0 44.476 10.506 44.476 39.573 0 38.347-46.753 46.402-48.679 56.909h39.049c7.529 0 11.557 4.027 11.557 11.382v8.755c0 7.354-4.028 11.382-11.557 11.382h-67.94c-7.005 0-12.083-4.028-12.083-11.382v-4.028zM5.654 454.61l5.603-9.28c3.853-6.654 9.105-7.004 15.584-3.152 4.903 2.101 9.63 3.152 14.359 3.152 10.155 0 14.358-3.502 14.358-8.23 0-6.654-5.604-9.106-15.934-9.106h-4.728c-5.954 0-9.28-2.101-12.258-7.88l-1.05-1.926c-2.451-4.728-1.226-9.806 2.801-14.884l5.604-7.004c6.829-8.405 12.257-13.483 12.257-13.483v-.35s-4.203 1.051-12.608 1.051H16.685c-7.53 0-11.383-4.028-11.383-11.382v-8.755c0-7.53 3.853-11.382 11.383-11.382h58.484c7.529 0 11.382 4.027 11.382 11.382v3.327c0 5.778-1.401 9.806-5.079 14.183l-17.509 20.137c19.611 5.078 28.716 20.487 28.716 34.845 0 21.363-14.358 44.126-48.503 44.126-16.636 0-28.192-4.728-35.896-9.455-5.779-4.202-6.304-9.805-2.626-15.934zM144 132h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\n })\n }),\n execute: (state, api) => {\n makeList(state, api, (item, index) => index + 1 + \". \");\n }\n};\nexport var checkedListCommand = {\n name: 'checked-list',\n keyCommand: 'list',\n shortcuts: 'ctrl+shift+c',\n prefix: '- [ ] ',\n buttonProps: {\n 'aria-label': 'Add checked list (ctrl + shift + c)',\n title: 'Add checked list (ctrl + shift + c)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n \"data-name\": \"checked-list\",\n width: \"12\",\n height: \"12\",\n role: \"img\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M208 132h288c8.8 0 16-7.2 16-16V76c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zM64 368c-26.5 0-48.6 21.5-48.6 48s22.1 48 48.6 48 48-21.5 48-48-21.5-48-48-48zm92.5-299l-72.2 72.2-15.6 15.6c-4.7 4.7-12.9 4.7-17.6 0L3.5 109.4c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.3c4.7-4.7 12.3-4.7 17 0l17 16.5c4.6 4.7 4.6 12.3-.1 17zm0 159.6l-72.2 72.2-15.7 15.7c-4.7 4.7-12.9 4.7-17.6 0L3.5 269c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.7c4.7-4.7 12.3-4.7 17 0l17 17c4.6 4.6 4.6 12.2-.1 16.9z\"\n })\n }),\n execute: (state, api) => {\n makeList(state, api, (item, index) => \"- [ ] \");\n }\n};","import React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport var codePreview = {\n name: 'preview',\n keyCommand: 'preview',\n value: 'preview',\n shortcuts: 'ctrlcmd+9',\n buttonProps: {\n 'aria-label': 'Preview code (ctrl + 9)',\n title: 'Preview code (ctrl + 9)'\n },\n icon: /*#__PURE__*/_jsxs(\"svg\", {\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 520 520\",\n children: [/*#__PURE__*/_jsx(\"polygon\", {\n fill: \"currentColor\",\n points: \"0 71.293 0 122 38.023 123 38.023 398 0 397 0 449.707 91.023 450.413 91.023 72.293\"\n }), /*#__PURE__*/_jsx(\"polygon\", {\n fill: \"currentColor\",\n points: \"148.023 72.293 520 71.293 520 122 200.023 124 200.023 397 520 396 520 449.707 148.023 450.413\"\n })]\n }),\n execute: (state, api, dispatch, executeCommandState, shortcuts) => {\n api.textArea.focus();\n if (shortcuts && dispatch && executeCommandState) {\n dispatch({\n preview: 'preview'\n });\n }\n }\n};\nexport var codeEdit = {\n name: 'edit',\n keyCommand: 'preview',\n value: 'edit',\n shortcuts: 'ctrlcmd+7',\n buttonProps: {\n 'aria-label': 'Edit code (ctrl + 7)',\n title: 'Edit code (ctrl + 7)'\n },\n icon: /*#__PURE__*/_jsxs(\"svg\", {\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 520 520\",\n children: [/*#__PURE__*/_jsx(\"polygon\", {\n fill: \"currentColor\",\n points: \"0 71.293 0 122 319 122 319 397 0 397 0 449.707 372 449.413 372 71.293\"\n }), /*#__PURE__*/_jsx(\"polygon\", {\n fill: \"currentColor\",\n points: \"429 71.293 520 71.293 520 122 481 123 481 396 520 396 520 449.707 429 449.413\"\n })]\n }),\n execute: (state, api, dispatch, executeCommandState, shortcuts) => {\n api.textArea.focus();\n if (shortcuts && dispatch && executeCommandState) {\n dispatch({\n preview: 'edit'\n });\n }\n }\n};\nexport var codeLive = {\n name: 'live',\n keyCommand: 'preview',\n value: 'live',\n shortcuts: 'ctrlcmd+8',\n buttonProps: {\n 'aria-label': 'Live code (ctrl + 8)',\n title: 'Live code (ctrl + 8)'\n },\n icon: /*#__PURE__*/_jsxs(\"svg\", {\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 520 520\",\n children: [/*#__PURE__*/_jsx(\"polygon\", {\n fill: \"currentColor\",\n points: \"0 71.293 0 122 179 122 179 397 0 397 0 449.707 232 449.413 232 71.293\"\n }), /*#__PURE__*/_jsx(\"polygon\", {\n fill: \"currentColor\",\n points: \"289 71.293 520 71.293 520 122 341 123 341 396 520 396 520 449.707 289 449.413\"\n })]\n }),\n execute: (state, api, dispatch, executeCommandState, shortcuts) => {\n api.textArea.focus();\n if (shortcuts && dispatch && executeCommandState) {\n dispatch({\n preview: 'live'\n });\n }\n }\n};","import React from 'react';\nimport { getBreaksNeededForEmptyLineBefore, getBreaksNeededForEmptyLineAfter, selectWord, insertBeforeEachLine } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var quote = {\n name: 'quote',\n keyCommand: 'quote',\n shortcuts: 'ctrlcmd+q',\n prefix: '> ',\n buttonProps: {\n 'aria-label': 'Insert a quote (ctrl + q)',\n title: 'Insert a quote (ctrl + q)'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 520 520\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M520,95.75 L520,225.75 C520,364.908906 457.127578,437.050625 325.040469,472.443125 C309.577578,476.586875 294.396016,464.889922 294.396016,448.881641 L294.396016,414.457031 C294.396016,404.242891 300.721328,395.025078 310.328125,391.554687 C377.356328,367.342187 414.375,349.711094 414.375,274.5 L341.25,274.5 C314.325781,274.5 292.5,252.674219 292.5,225.75 L292.5,95.75 C292.5,68.8257812 314.325781,47 341.25,47 L471.25,47 C498.174219,47 520,68.8257812 520,95.75 Z M178.75,47 L48.75,47 C21.8257813,47 0,68.8257812 0,95.75 L0,225.75 C0,252.674219 21.8257813,274.5 48.75,274.5 L121.875,274.5 C121.875,349.711094 84.8563281,367.342187 17.828125,391.554687 C8.22132813,395.025078 1.89601563,404.242891 1.89601563,414.457031 L1.89601563,448.881641 C1.89601563,464.889922 17.0775781,476.586875 32.5404687,472.443125 C164.627578,437.050625 227.5,364.908906 227.5,225.75 L227.5,95.75 C227.5,68.8257812 205.674219,47 178.75,47 Z\"\n })\n }),\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n var breaksBeforeCount = getBreaksNeededForEmptyLineBefore(state1.text, state1.selection.start);\n var breaksBefore = Array(breaksBeforeCount + 1).join('\\n');\n var breaksAfterCount = getBreaksNeededForEmptyLineAfter(state1.text, state1.selection.end);\n var breaksAfter = Array(breaksAfterCount + 1).join('\\n');\n var modifiedText = insertBeforeEachLine(state1.selectedText, state.command.prefix);\n api.replaceSelection(\"\" + breaksBefore + modifiedText.modifiedText + breaksAfter);\n var selectionStart = state1.selection.start + breaksBeforeCount;\n var selectionEnd = selectionStart + modifiedText.modifiedText.length;\n api.setSelectionRange({\n start: selectionStart,\n end: selectionEnd\n });\n }\n};","import React from 'react';\nimport { selectWord, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var strikethrough = {\n name: 'strikethrough',\n keyCommand: 'strikethrough',\n shortcuts: 'ctrl+shift+x',\n buttonProps: {\n 'aria-label': 'Add strikethrough text (ctrl + shift + x)',\n title: 'Add strikethrough text (ctrl + shift + x)'\n },\n prefix: '~~',\n icon: /*#__PURE__*/_jsx(\"svg\", {\n \"data-name\": \"strikethrough\",\n width: \"12\",\n height: \"12\",\n role: \"img\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M496 288H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h480c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16zm-214.666 16c27.258 12.937 46.524 28.683 46.524 56.243 0 33.108-28.977 53.676-75.621 53.676-32.325 0-76.874-12.08-76.874-44.271V368c0-8.837-7.164-16-16-16H113.75c-8.836 0-16 7.163-16 16v19.204c0 66.845 77.717 101.82 154.487 101.82 88.578 0 162.013-45.438 162.013-134.424 0-19.815-3.618-36.417-10.143-50.6H281.334zm-30.952-96c-32.422-13.505-56.836-28.946-56.836-59.683 0-33.92 30.901-47.406 64.962-47.406 42.647 0 64.962 16.593 64.962 32.985V136c0 8.837 7.164 16 16 16h45.613c8.836 0 16-7.163 16-16v-30.318c0-52.438-71.725-79.875-142.575-79.875-85.203 0-150.726 40.972-150.726 125.646 0 22.71 4.665 41.176 12.777 56.547h129.823z\"\n })\n }),\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix\n });\n }\n};","import React from 'react';\nimport { titleExecute } from '../commands/title';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var title1 = {\n name: 'title1',\n keyCommand: 'title1',\n shortcuts: 'ctrlcmd+1',\n prefix: '# ',\n suffix: '',\n buttonProps: {\n 'aria-label': 'Insert title1 (ctrl + 1)',\n title: 'Insert title1 (ctrl + 1)'\n },\n icon: /*#__PURE__*/_jsx(\"div\", {\n style: {\n fontSize: 18,\n textAlign: 'left'\n },\n children: \"Title 1\"\n }),\n execute: (state, api) => {\n titleExecute({\n state,\n api,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport { title1 } from './title1';\nimport { selectLine, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function titleExecute(_ref) {\n var {\n state,\n api,\n prefix,\n suffix = prefix\n } = _ref;\n var newSelectionRange = selectLine({\n text: state.text,\n selection: state.selection\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix,\n suffix\n });\n}\nexport var title = _extends({}, title1, {\n icon: /*#__PURE__*/_jsx(\"svg\", {\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 520 520\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M15.7083333,468 C7.03242448,468 0,462.030833 0,454.666667 L0,421.333333 C0,413.969167 7.03242448,408 15.7083333,408 L361.291667,408 C369.967576,408 377,413.969167 377,421.333333 L377,454.666667 C377,462.030833 369.967576,468 361.291667,468 L15.7083333,468 Z M21.6666667,366 C9.69989583,366 0,359.831861 0,352.222222 L0,317.777778 C0,310.168139 9.69989583,304 21.6666667,304 L498.333333,304 C510.300104,304 520,310.168139 520,317.777778 L520,352.222222 C520,359.831861 510.300104,366 498.333333,366 L21.6666667,366 Z M136.835938,64 L136.835937,126 L107.25,126 L107.25,251 L40.75,251 L40.75,126 L-5.68434189e-14,126 L-5.68434189e-14,64 L136.835938,64 Z M212,64 L212,251 L161.648438,251 L161.648438,64 L212,64 Z M378,64 L378,126 L343.25,126 L343.25,251 L281.75,251 L281.75,126 L238,126 L238,64 L378,64 Z M449.047619,189.550781 L520,189.550781 L520,251 L405,251 L405,64 L449.047619,64 L449.047619,189.550781 Z\"\n })\n })\n});","import React from 'react';\nimport { titleExecute } from '../commands/title';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var title2 = {\n name: 'title2',\n keyCommand: 'title2',\n shortcuts: 'ctrlcmd+2',\n prefix: '## ',\n suffix: '',\n buttonProps: {\n 'aria-label': 'Insert title2 (ctrl + 2)',\n title: 'Insert title2 (ctrl + 2)'\n },\n icon: /*#__PURE__*/_jsx(\"div\", {\n style: {\n fontSize: 16,\n textAlign: 'left'\n },\n children: \"Title 2\"\n }),\n execute: (state, api) => {\n titleExecute({\n state,\n api,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n};","import React from 'react';\nimport { titleExecute } from '../commands/title';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var title3 = {\n name: 'title3',\n keyCommand: 'title3',\n shortcuts: 'ctrlcmd+3',\n prefix: '### ',\n suffix: '',\n buttonProps: {\n 'aria-label': 'Insert title3 (ctrl + 3)',\n title: 'Insert title3 (ctrl + 3)'\n },\n icon: /*#__PURE__*/_jsx(\"div\", {\n style: {\n fontSize: 15,\n textAlign: 'left'\n },\n children: \"Title 3\"\n }),\n execute: (state, api) => {\n titleExecute({\n state,\n api,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n};","import React from 'react';\nimport { titleExecute } from '../commands/title';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var title4 = {\n name: 'title4',\n keyCommand: 'title4',\n shortcuts: 'ctrlcmd+4',\n prefix: '#### ',\n suffix: '',\n buttonProps: {\n 'aria-label': 'Insert title4 (ctrl + 4)',\n title: 'Insert title4 (ctrl + 4)'\n },\n icon: /*#__PURE__*/_jsx(\"div\", {\n style: {\n fontSize: 14,\n textAlign: 'left'\n },\n children: \"Title 4\"\n }),\n execute: (state, api) => {\n titleExecute({\n state,\n api,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n};","import React from 'react';\nimport { titleExecute } from '../commands/title';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var title5 = {\n name: 'title5',\n keyCommand: 'title5',\n shortcuts: 'ctrlcmd+5',\n prefix: '##### ',\n suffix: '',\n buttonProps: {\n 'aria-label': 'Insert title5 (ctrl + 5)',\n title: 'Insert title5 (ctrl + 5)'\n },\n icon: /*#__PURE__*/_jsx(\"div\", {\n style: {\n fontSize: 12,\n textAlign: 'left'\n },\n children: \"Title 5\"\n }),\n execute: (state, api) => {\n titleExecute({\n state,\n api,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n};","import React from 'react';\nimport { titleExecute } from '../commands/title';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var title6 = {\n name: 'title6',\n keyCommand: 'title6',\n shortcuts: 'ctrlcmd+6',\n prefix: '###### ',\n suffix: '',\n buttonProps: {\n 'aria-label': 'Insert title6 (ctrl + 6)',\n title: 'Insert title6 (ctrl + 6)'\n },\n icon: /*#__PURE__*/_jsx(\"div\", {\n style: {\n fontSize: 12,\n textAlign: 'left'\n },\n children: \"Title 6\"\n }),\n execute: (state, api) => {\n titleExecute({\n state,\n api,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n};","import React from 'react';\nimport { selectWord, executeCommand } from '../utils/markdownUtils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var table = {\n name: 'table',\n keyCommand: 'table',\n prefix: '\\n| Header | Header |\\n|--------|--------|\\n| Cell | Cell |\\n| Cell | Cell |\\n| Cell | Cell |\\n\\n',\n suffix: '',\n buttonProps: {\n 'aria-label': 'Add table',\n title: 'Add table'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n role: \"img\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"\n //Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com\n })\n }),\n\n execute: (state, api) => {\n var newSelectionRange = selectWord({\n text: state.text,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n var state1 = api.setSelectionRange(newSelectionRange);\n if (state1.selectedText.length >= state.command.prefix.length + state.command.suffix.length && state1.selectedText.startsWith(state.command.prefix)) {\n // Remove\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n } else {\n // Add\n state1 = api.setSelectionRange({\n start: state.selection.start,\n end: state.selection.start\n });\n executeCommand({\n api,\n selectedText: state1.selectedText,\n selection: state.selection,\n prefix: state.command.prefix,\n suffix: state.command.suffix\n });\n }\n }\n};","import React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var help = {\n name: 'help',\n keyCommand: 'help',\n buttonProps: {\n 'aria-label': 'Open help',\n title: 'Open help'\n },\n icon: /*#__PURE__*/_jsx(\"svg\", {\n viewBox: \"0 0 16 16\",\n width: \"12px\",\n height: \"12px\",\n children: /*#__PURE__*/_jsx(\"path\", {\n d: \"M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8Zm.9 13H7v-1.8h1.9V13Zm-.1-3.6v.5H7.1v-.6c.2-2.1 2-1.9 1.9-3.2.1-.7-.3-1.1-1-1.1-.8 0-1.2.7-1.2 1.6H5c0-1.7 1.2-3 2.9-3 2.3 0 3 1.4 3 2.3.1 2.3-1.9 2-2.1 3.5Z\",\n fill: \"currentColor\"\n })\n }),\n execute: () => {\n window.open('https://www.markdownguide.org/basic-syntax/', '_blank', 'noreferrer');\n }\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport { insertTextAtPosition } from '../utils/InsertTextAtPosition';\nimport { bold } from './bold';\nimport { code, codeBlock } from './code';\nimport { comment } from './comment';\nimport { divider } from './divider';\nimport { fullscreen } from './fullscreen';\nimport { group } from './group';\nimport { hr } from './hr';\nimport { image } from './image';\nimport { italic } from './italic';\nimport { link } from './link';\nimport { checkedListCommand, orderedListCommand, unorderedListCommand } from './list';\nimport { codeEdit, codeLive, codePreview } from './preview';\nimport { quote } from './quote';\nimport { strikethrough } from './strikeThrough';\nimport { title } from './title';\nimport { title1 } from './title1';\nimport { title2 } from './title2';\nimport { title3 } from './title3';\nimport { title4 } from './title4';\nimport { title5 } from './title5';\nimport { title6 } from './title6';\nimport { table } from './table';\nimport { issue } from './issue';\nimport { help } from './help';\nvar getCommands = () => [bold, italic, strikethrough, hr, group([title1, title2, title3, title4, title5, title6], {\n name: 'title',\n groupName: 'title',\n buttonProps: {\n 'aria-label': 'Insert title',\n title: 'Insert title'\n }\n}), divider, link, quote, code, codeBlock, comment, image, table, divider, unorderedListCommand, orderedListCommand, checkedListCommand, divider, help];\nvar getExtraCommands = () => [codeEdit, codeLive, codePreview, divider, fullscreen];\nfunction getStateFromTextArea(textArea) {\n var _textArea$value;\n return {\n selection: {\n start: textArea.selectionStart,\n end: textArea.selectionEnd\n },\n text: textArea.value,\n selectedText: (_textArea$value = textArea.value) == null ? void 0 : _textArea$value.slice(textArea.selectionStart, textArea.selectionEnd)\n };\n}\nclass TextAreaTextApi {\n constructor(textArea) {\n this.textArea = void 0;\n this.textArea = textArea;\n }\n\n /**\n * Replaces the current selection with the new text. This will make the new selectedText to be empty, the\n * selection start and selection end will be the same and will both point to the end\n * @param text Text that should replace the current selection\n */\n replaceSelection(text) {\n insertTextAtPosition(this.textArea, text);\n return getStateFromTextArea(this.textArea);\n }\n\n /**\n * Selects the specified text range\n * @param selection\n */\n setSelectionRange(selection) {\n this.textArea.focus();\n this.textArea.selectionStart = selection.start;\n this.textArea.selectionEnd = selection.end;\n return getStateFromTextArea(this.textArea);\n }\n}\nclass TextAreaCommandOrchestrator {\n constructor(textArea) {\n this.textArea = void 0;\n this.textApi = void 0;\n this.textArea = textArea;\n this.textApi = new TextAreaTextApi(textArea);\n }\n getState() {\n if (!this.textArea) return false;\n return getStateFromTextArea(this.textArea);\n }\n executeCommand(command, dispatch, state, shortcuts) {\n command.execute && command.execute(_extends({\n command\n }, getStateFromTextArea(this.textArea)), this.textApi, dispatch, state, shortcuts);\n }\n}\nexport { title, title1, title2, title3, title4, title5, title6, bold, codeBlock, comment, italic, strikethrough, hr, group, divider, link, quote, code, image, unorderedListCommand, orderedListCommand, checkedListCommand, table, issue, help, codeEdit, codeLive, codePreview, fullscreen,\n// Tool method.\ngetCommands, getExtraCommands, getStateFromTextArea, TextAreaCommandOrchestrator, TextAreaTextApi };","import { insertTextAtPosition } from '../../utils/InsertTextAtPosition';\nimport { insertBeforeEachLine, selectLine } from '../../utils/markdownUtils';\nimport { TextAreaTextApi } from '../../commands';\n\n/**\n * - `13` - `Enter`\n * - `9` - `Tab`\n */\nfunction stopPropagation(e) {\n e.stopPropagation();\n e.preventDefault();\n}\nfunction handleLineMove(e, direction) {\n stopPropagation(e);\n var target = e.target;\n var textArea = new TextAreaTextApi(target);\n var selection = {\n start: target.selectionStart,\n end: target.selectionEnd\n };\n selection = selectLine({\n text: target.value,\n selection\n });\n if (direction < 0 && selection.start <= 0 || direction > 0 && selection.end >= target.value.length) {\n return;\n }\n var blockText = target.value.slice(selection.start, selection.end);\n if (direction < 0) {\n var prevLineSelection = selectLine({\n text: target.value,\n selection: {\n start: selection.start - 1,\n end: selection.start - 1\n }\n });\n var prevLineText = target.value.slice(prevLineSelection.start, prevLineSelection.end);\n textArea.setSelectionRange({\n start: prevLineSelection.start,\n end: selection.end\n });\n insertTextAtPosition(target, blockText + \"\\n\" + prevLineText);\n textArea.setSelectionRange({\n start: prevLineSelection.start,\n end: prevLineSelection.start + blockText.length\n });\n } else {\n var nextLineSelection = selectLine({\n text: target.value,\n selection: {\n start: selection.end + 1,\n end: selection.end + 1\n }\n });\n var nextLineText = target.value.slice(nextLineSelection.start, nextLineSelection.end);\n textArea.setSelectionRange({\n start: selection.start,\n end: nextLineSelection.end\n });\n insertTextAtPosition(target, nextLineText + \"\\n\" + blockText);\n textArea.setSelectionRange({\n start: nextLineSelection.end - blockText.length,\n end: nextLineSelection.end\n });\n }\n}\nexport default function handleKeyDown(e, tabSize, defaultTabEnable) {\n if (tabSize === void 0) {\n tabSize = 2;\n }\n if (defaultTabEnable === void 0) {\n defaultTabEnable = false;\n }\n var target = e.target;\n var starVal = target.value.substr(0, target.selectionStart);\n var valArr = starVal.split('\\n');\n var currentLineStr = valArr[valArr.length - 1];\n var textArea = new TextAreaTextApi(target);\n\n /**\n * `9` - `Tab`\n */\n if (!defaultTabEnable && e.code && e.code.toLowerCase() === 'tab') {\n stopPropagation(e);\n var space = new Array(tabSize + 1).join(' ');\n if (target.selectionStart !== target.selectionEnd) {\n var _star = target.value.substring(0, target.selectionStart).split('\\n');\n var _end = target.value.substring(0, target.selectionEnd).split('\\n');\n var modifiedTextLine = [];\n _end.forEach((item, idx) => {\n if (item !== _star[idx]) {\n modifiedTextLine.push(item);\n }\n });\n var modifiedText = modifiedTextLine.join('\\n');\n var oldSelectText = target.value.substring(target.selectionStart, target.selectionEnd);\n var newStarNum = target.value.substring(0, target.selectionStart).length;\n textArea.setSelectionRange({\n start: target.value.indexOf(modifiedText),\n end: target.selectionEnd\n });\n var modifiedTextObj = insertBeforeEachLine(modifiedText, e.shiftKey ? '' : space);\n var text = modifiedTextObj.modifiedText;\n if (e.shiftKey) {\n text = text.split('\\n').map(item => item.replace(new RegExp(\"^\" + space), '')).join('\\n');\n }\n textArea.replaceSelection(text);\n var startTabSize = e.shiftKey ? -tabSize : tabSize;\n var endTabSize = e.shiftKey ? -modifiedTextLine.length * tabSize : modifiedTextLine.length * tabSize;\n textArea.setSelectionRange({\n start: newStarNum + startTabSize,\n end: newStarNum + oldSelectText.length + endTabSize\n });\n } else {\n return insertTextAtPosition(target, space);\n }\n } else if (e.keyCode === 13 && e.code.toLowerCase() === 'enter' && (/^(-|\\*)\\s/.test(currentLineStr) || /^\\d+.\\s/.test(currentLineStr)) && !e.shiftKey) {\n /**\n * `13` - `Enter`\n */\n stopPropagation(e);\n var startStr = '\\n- ';\n if (currentLineStr.startsWith('*')) {\n startStr = '\\n* ';\n }\n if (currentLineStr.startsWith('- [ ]') || currentLineStr.startsWith('- [X]') || currentLineStr.startsWith('- [x]')) {\n startStr = '\\n- [ ] ';\n }\n if (/^\\d+.\\s/.test(currentLineStr)) {\n startStr = \"\\n\" + (parseInt(currentLineStr) + 1) + \". \";\n }\n return insertTextAtPosition(target, startStr);\n } else if (e.code && e.code.toLowerCase() === 'keyd' && e.ctrlKey) {\n // Duplicate lines\n stopPropagation(e);\n var selection = {\n start: target.selectionStart,\n end: target.selectionEnd\n };\n var savedSelection = selection;\n selection = selectLine({\n text: target.value,\n selection\n });\n var textToDuplicate = target.value.slice(selection.start, selection.end);\n textArea.setSelectionRange({\n start: selection.end,\n end: selection.end\n });\n insertTextAtPosition(target, \"\\n\" + textToDuplicate);\n textArea.setSelectionRange({\n start: savedSelection.start,\n end: savedSelection.end\n });\n } else if (e.code && e.code.toLowerCase() === 'arrowup' && e.altKey) {\n handleLineMove(e, -1);\n } else if (e.code && e.code.toLowerCase() === 'arrowdown' && e.altKey) {\n handleLineMove(e, 1);\n }\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"onChange\"],\n _excluded2 = [\"markdown\", \"commands\", \"fullscreen\", \"preview\", \"highlightEnable\", \"extraCommands\", \"tabSize\", \"defaultTabEnable\", \"dispatch\"];\nimport React, { useContext, useEffect } from 'react';\nimport { EditorContext } from '../../Context';\nimport { TextAreaCommandOrchestrator } from '../../commands';\nimport handleKeyDown from './handleKeyDown';\nimport shortcuts from './shortcuts';\nimport \"./index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function Textarea(props) {\n var {\n prefixCls,\n onChange: _onChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n var _useContext = useContext(EditorContext),\n {\n markdown,\n commands,\n fullscreen,\n preview,\n highlightEnable,\n extraCommands,\n tabSize,\n defaultTabEnable,\n dispatch\n } = _useContext,\n otherStore = _objectWithoutPropertiesLoose(_useContext, _excluded2);\n var textRef = React.useRef(null);\n var executeRef = React.useRef();\n var statesRef = React.useRef({\n fullscreen,\n preview\n });\n useEffect(() => {\n statesRef.current = {\n fullscreen,\n preview,\n highlightEnable\n };\n }, [fullscreen, preview, highlightEnable]);\n useEffect(() => {\n if (textRef.current && dispatch) {\n var commandOrchestrator = new TextAreaCommandOrchestrator(textRef.current);\n executeRef.current = commandOrchestrator;\n dispatch({\n textarea: textRef.current,\n commandOrchestrator\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n var onKeyDown = e => {\n handleKeyDown(e, tabSize, defaultTabEnable);\n shortcuts(e, [...(commands || []), ...(extraCommands || [])], executeRef.current, dispatch, statesRef.current);\n };\n useEffect(() => {\n if (textRef.current) {\n textRef.current.addEventListener('keydown', onKeyDown);\n }\n return () => {\n if (textRef.current) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n textRef.current.removeEventListener('keydown', onKeyDown);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return /*#__PURE__*/_jsx(\"textarea\", _extends({\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"off\",\n spellCheck: false\n }, other, {\n ref: textRef,\n className: prefixCls + \"-text-input \" + (other.className ? other.className : ''),\n value: markdown,\n onChange: e => {\n dispatch && dispatch({\n markdown: e.target.value\n });\n _onChange && _onChange(e);\n }\n }));\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"onScroll\", \"renderTextarea\"];\nimport React, { useEffect, Fragment, useContext } from 'react';\nimport { EditorContext } from '../../Context';\nimport shortcuts from './shortcuts';\nimport Markdown from './Markdown';\nimport Textarea from './Textarea';\nimport { TextAreaCommandOrchestrator } from '../../commands';\nimport \"./index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport default function TextArea(props) {\n var _ref = props || {},\n {\n prefixCls,\n className,\n onScroll,\n renderTextarea\n } = _ref,\n otherProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n var {\n markdown,\n scrollTop,\n commands,\n minHeight,\n highlightEnable,\n extraCommands,\n dispatch\n } = useContext(EditorContext);\n var textRef = React.useRef(null);\n var executeRef = React.useRef();\n var warp = /*#__PURE__*/React.createRef();\n useEffect(() => {\n var state = {};\n if (warp.current) {\n state.textareaWarp = warp.current || undefined;\n warp.current.scrollTop = scrollTop || 0;\n }\n if (dispatch) {\n dispatch(_extends({}, state));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n useEffect(() => {\n if (textRef.current && dispatch) {\n var _commandOrchestrator = new TextAreaCommandOrchestrator(textRef.current);\n executeRef.current = _commandOrchestrator;\n dispatch({\n textarea: textRef.current,\n commandOrchestrator: _commandOrchestrator\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n var textStyle = highlightEnable ? {} : {\n WebkitTextFillColor: 'initial',\n overflow: 'auto'\n };\n return /*#__PURE__*/_jsx(\"div\", {\n ref: warp,\n className: prefixCls + \"-area \" + (className || ''),\n onScroll: onScroll,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: prefixCls + \"-text\",\n style: {\n minHeight\n },\n children: renderTextarea ? /*#__PURE__*/React.cloneElement(renderTextarea(_extends({}, otherProps, {\n value: markdown,\n autoComplete: 'off',\n autoCorrect: 'off',\n spellCheck: 'false',\n autoCapitalize: 'off',\n className: prefixCls + \"-text-input\",\n style: {\n WebkitTextFillColor: 'inherit',\n overflow: 'auto'\n }\n }), {\n dispatch,\n onChange: otherProps.onChange,\n shortcuts,\n useContext: {\n commands,\n extraCommands,\n commandOrchestrator: executeRef.current\n }\n }), {\n ref: textRef\n }) : /*#__PURE__*/_jsxs(Fragment, {\n children: [highlightEnable && /*#__PURE__*/_jsx(Markdown, {\n prefixCls: prefixCls\n }), /*#__PURE__*/_jsx(Textarea, _extends({\n prefixCls: prefixCls\n }, otherProps, {\n style: textStyle\n }))]\n })\n })\n });\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport React, { useContext, useMemo } from 'react';\nimport \"./Child.css\";\nimport Toolbar from './';\nimport { EditorContext } from '../../Context';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function Child(props) {\n var {\n prefixCls,\n groupName,\n commands,\n children\n } = props || {};\n var {\n barPopup = {}\n } = useContext(EditorContext);\n return useMemo(() => /*#__PURE__*/_jsx(\"div\", {\n className: prefixCls + \"-toolbar-child \" + (groupName && barPopup[groupName] ? 'active' : ''),\n onClick: e => e.stopPropagation(),\n children: Array.isArray(commands) ? /*#__PURE__*/_jsx(Toolbar, _extends({\n commands: commands\n }, props, {\n isChild: true\n })) : children\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [commands, barPopup, groupName, prefixCls]);\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport React, { Fragment, useContext, useEffect, useRef } from 'react';\nimport { EditorContext } from '../../Context';\nimport Child from './Child';\nimport \"./index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function ToolbarItems(props) {\n var {\n prefixCls,\n overflow\n } = props;\n var {\n fullscreen,\n preview,\n barPopup = {},\n components,\n commandOrchestrator,\n dispatch\n } = useContext(EditorContext);\n var originalOverflow = useRef('');\n function handleClick(command, name) {\n if (!dispatch) return;\n var state = {\n barPopup: _extends({}, barPopup)\n };\n if (command.keyCommand === 'preview') {\n state.preview = command.value;\n }\n if (command.keyCommand === 'fullscreen') {\n state.fullscreen = !fullscreen;\n }\n if (props.commands && command.keyCommand === 'group') {\n props.commands.forEach(item => {\n if (name === item.groupName) {\n state.barPopup[name] = true;\n } else if (item.keyCommand) {\n state.barPopup[item.groupName] = false;\n }\n });\n } else if (name || command.parent) {\n Object.keys(state.barPopup || {}).forEach(keyName => {\n state.barPopup[keyName] = false;\n });\n }\n if (Object.keys(state).length) {\n dispatch(_extends({}, state));\n }\n commandOrchestrator && commandOrchestrator.executeCommand(command);\n }\n useEffect(() => {\n if (document && overflow) {\n if (fullscreen) {\n // prevent scroll on fullscreen\n document.body.style.overflow = 'hidden';\n } else {\n // get the original overflow only the first time\n if (!originalOverflow.current) {\n originalOverflow.current = window.getComputedStyle(document.body, null).overflow;\n }\n // reset to the original overflow\n document.body.style.overflow = originalOverflow.current;\n }\n }\n }, [fullscreen, originalOverflow, overflow]);\n return /*#__PURE__*/_jsx(\"ul\", {\n children: (props.commands || []).map((item, idx) => {\n if (item.keyCommand === 'divider') {\n return /*#__PURE__*/_jsx(\"li\", _extends({}, item.liProps, {\n className: prefixCls + \"-toolbar-divider\"\n }), idx);\n }\n if (!item.keyCommand) return /*#__PURE__*/_jsx(Fragment, {}, idx);\n var activeBtn = fullscreen && item.keyCommand === 'fullscreen' || item.keyCommand === 'preview' && preview === item.value;\n var childNode = item.children && typeof item.children === 'function' ? item.children({\n getState: () => commandOrchestrator.getState(),\n textApi: commandOrchestrator ? commandOrchestrator.textApi : undefined,\n close: () => handleClick({}, item.groupName),\n execute: () => handleClick({\n execute: item.execute\n }),\n dispatch\n }) : undefined;\n var disabled = barPopup && preview && preview === 'preview' && !/(preview|fullscreen)/.test(item.keyCommand);\n var render = (components == null ? void 0 : components.toolbar) || item.render;\n var com = render && typeof render === 'function' ? render(item, !!disabled, handleClick, idx) : null;\n return /*#__PURE__*/_jsxs(\"li\", _extends({}, item.liProps, {\n className: activeBtn ? \"active\" : '',\n children: [com && /*#__PURE__*/React.isValidElement(com) && com, !com && !item.buttonProps && item.icon, !com && item.buttonProps && /*#__PURE__*/React.createElement('button', _extends({\n type: 'button',\n key: idx,\n disabled,\n 'data-name': item.name\n }, item.buttonProps, {\n onClick: evn => {\n evn.stopPropagation();\n handleClick(item, item.groupName);\n }\n }), item.icon), item.children && /*#__PURE__*/_jsx(Child, {\n overflow: overflow,\n groupName: item.groupName,\n prefixCls: prefixCls,\n children: childNode,\n commands: Array.isArray(item.children) ? item.children : undefined\n })]\n }), idx);\n })\n });\n}\nexport default function Toolbar(props) {\n if (props === void 0) {\n props = {};\n }\n var {\n prefixCls,\n isChild,\n className\n } = props;\n var {\n commands,\n extraCommands\n } = useContext(EditorContext);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: prefixCls + \"-toolbar \" + className,\n children: [/*#__PURE__*/_jsx(ToolbarItems, _extends({}, props, {\n commands: props.commands || commands || []\n })), !isChild && /*#__PURE__*/_jsx(ToolbarItems, _extends({}, props, {\n commands: extraCommands || []\n }))]\n });\n}\nexport function ToolbarVisibility(props) {\n var {\n hideToolbar,\n toolbarBottom,\n placement,\n overflow,\n prefixCls\n } = props;\n if (hideToolbar || placement === 'bottom' && !toolbarBottom || placement === 'top' && toolbarBottom) {\n return null;\n }\n var cls = toolbarBottom ? 'bottom' : '';\n return /*#__PURE__*/_jsx(Toolbar, {\n prefixCls: prefixCls,\n overflow: overflow,\n className: cls\n });\n}","import React, { useEffect, useMemo, useRef } from 'react';\nimport \"./index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar DragBar = props => {\n var {\n prefixCls,\n onChange\n } = props || {};\n var $dom = useRef(null);\n var dragRef = useRef();\n var heightRef = useRef(props.height);\n useEffect(() => {\n if (heightRef.current !== props.height) {\n heightRef.current = props.height;\n }\n }, [props.height]);\n function handleMouseMove(event) {\n if (dragRef.current) {\n var _changedTouches$;\n var clientY = event.clientY || ((_changedTouches$ = event.changedTouches[0]) == null ? void 0 : _changedTouches$.clientY);\n var newHeight = dragRef.current.height + clientY - dragRef.current.dragY;\n if (newHeight >= props.minHeight && newHeight <= props.maxHeight) {\n onChange && onChange(dragRef.current.height + (clientY - dragRef.current.dragY));\n }\n }\n }\n function handleMouseUp() {\n var _$dom$current, _$dom$current2;\n dragRef.current = undefined;\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n (_$dom$current = $dom.current) == null || _$dom$current.removeEventListener('touchmove', handleMouseMove);\n (_$dom$current2 = $dom.current) == null || _$dom$current2.removeEventListener('touchend', handleMouseUp);\n }\n function handleMouseDown(event) {\n var _changedTouches$2, _$dom$current3, _$dom$current4;\n event.preventDefault();\n var clientY = event.clientY || ((_changedTouches$2 = event.changedTouches[0]) == null ? void 0 : _changedTouches$2.clientY);\n dragRef.current = {\n height: heightRef.current,\n dragY: clientY\n };\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n (_$dom$current3 = $dom.current) == null || _$dom$current3.addEventListener('touchmove', handleMouseMove, {\n passive: false\n });\n (_$dom$current4 = $dom.current) == null || _$dom$current4.addEventListener('touchend', handleMouseUp, {\n passive: false\n });\n }\n useEffect(() => {\n if (document) {\n var _$dom$current5, _$dom$current6;\n (_$dom$current5 = $dom.current) == null || _$dom$current5.addEventListener('touchstart', handleMouseDown, {\n passive: false\n });\n (_$dom$current6 = $dom.current) == null || _$dom$current6.addEventListener('mousedown', handleMouseDown);\n }\n return () => {\n if (document) {\n var _$dom$current7;\n (_$dom$current7 = $dom.current) == null || _$dom$current7.removeEventListener('touchstart', handleMouseDown);\n document.removeEventListener('mousemove', handleMouseMove);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n var svg = useMemo(() => /*#__PURE__*/_jsx(\"svg\", {\n viewBox: \"0 0 512 512\",\n height: \"100%\",\n children: /*#__PURE__*/_jsx(\"path\", {\n fill: \"currentColor\",\n d: \"M304 256c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48 48 21.5 48 48zm120-48c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-336 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\"\n })\n }), []);\n return /*#__PURE__*/_jsx(\"div\", {\n className: prefixCls + \"-bar\",\n ref: $dom,\n children: svg\n });\n};\nexport default DragBar;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"value\", \"commands\", \"commandsFilter\", \"direction\", \"extraCommands\", \"height\", \"enableScroll\", \"visibleDragbar\", \"highlightEnable\", \"preview\", \"fullscreen\", \"overflow\", \"previewOptions\", \"textareaProps\", \"maxHeight\", \"minHeight\", \"autoFocus\", \"tabSize\", \"defaultTabEnable\", \"onChange\", \"onStatistics\", \"onHeightChange\", \"hideToolbar\", \"toolbarBottom\", \"components\", \"renderTextarea\"];\nimport React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle } from 'react';\nimport MarkdownPreview from '@uiw/react-markdown-preview';\nimport TextArea from './components/TextArea';\nimport { ToolbarVisibility } from './components/Toolbar';\nimport DragBar from './components/DragBar';\nimport { getCommands, getExtraCommands, TextAreaCommandOrchestrator } from './commands';\nimport { reducer, EditorContext } from './Context';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction setGroupPopFalse(data) {\n if (data === void 0) {\n data = {};\n }\n Object.keys(data).forEach(keyname => {\n data[keyname] = false;\n });\n return data;\n}\nvar InternalMDEditor = /*#__PURE__*/React.forwardRef((props, ref) => {\n var _ref = props || {},\n {\n prefixCls = 'w-md-editor',\n className,\n value: propsValue,\n commands = getCommands(),\n commandsFilter,\n direction,\n extraCommands = getExtraCommands(),\n height = 200,\n enableScroll = true,\n visibleDragbar = typeof props.visiableDragbar === 'boolean' ? props.visiableDragbar : true,\n highlightEnable = true,\n preview: previewType = 'live',\n fullscreen = false,\n overflow = true,\n previewOptions = {},\n textareaProps,\n maxHeight = 1200,\n minHeight = 100,\n autoFocus,\n tabSize = 2,\n defaultTabEnable = false,\n onChange,\n onStatistics,\n onHeightChange,\n hideToolbar,\n toolbarBottom = false,\n components,\n renderTextarea\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n var cmds = commands.map(item => commandsFilter ? commandsFilter(item, false) : item).filter(Boolean);\n var extraCmds = extraCommands.map(item => commandsFilter ? commandsFilter(item, true) : item).filter(Boolean);\n var [state, dispatch] = useReducer(reducer, {\n markdown: propsValue,\n preview: previewType,\n components,\n height,\n minHeight,\n highlightEnable,\n tabSize,\n defaultTabEnable,\n scrollTop: 0,\n scrollTopPreview: 0,\n commands: cmds,\n extraCommands: extraCmds,\n fullscreen,\n barPopup: {}\n });\n var container = useRef(null);\n var previewRef = useRef(null);\n var enableScrollRef = useRef(enableScroll);\n useImperativeHandle(ref, () => _extends({}, state, {\n container: container.current,\n dispatch\n }));\n useMemo(() => enableScrollRef.current = enableScroll, [enableScroll]);\n useEffect(() => {\n var stateInit = {};\n if (container.current) {\n stateInit.container = container.current || undefined;\n }\n stateInit.markdown = propsValue || '';\n stateInit.barPopup = {};\n if (dispatch) {\n dispatch(_extends({}, state, stateInit));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n var cls = [className, 'wmde-markdown-var', direction ? prefixCls + \"-\" + direction : null, prefixCls, state.preview ? prefixCls + \"-show-\" + state.preview : null, state.fullscreen ? prefixCls + \"-fullscreen\" : null].filter(Boolean).join(' ').trim();\n useMemo(() => propsValue !== state.markdown && dispatch({\n markdown: propsValue || ''\n }), [propsValue, state.markdown]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => previewType !== state.preview && dispatch({\n preview: previewType\n }), [previewType]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => tabSize !== state.tabSize && dispatch({\n tabSize\n }), [tabSize]);\n useMemo(() => highlightEnable !== state.highlightEnable && dispatch({\n highlightEnable\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [highlightEnable]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => autoFocus !== state.autoFocus && dispatch({\n autoFocus: autoFocus\n }), [autoFocus]);\n useMemo(() => fullscreen !== state.fullscreen && dispatch({\n fullscreen: fullscreen\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [fullscreen]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => height !== state.height && dispatch({\n height: height\n }), [height]);\n useMemo(() => height !== state.height && onHeightChange && onHeightChange(state.height, height, state), [height, onHeightChange, state]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => commands !== state.commands && dispatch({\n commands: cmds\n }), [props.commands]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useMemo(() => extraCommands !== state.extraCommands && dispatch({\n extraCommands: extraCmds\n }), [props.extraCommands]);\n var textareaDomRef = useRef();\n var active = useRef('preview');\n var initScroll = useRef(false);\n useMemo(() => {\n textareaDomRef.current = state.textareaWarp;\n if (state.textareaWarp) {\n state.textareaWarp.addEventListener('mouseover', () => {\n active.current = 'text';\n });\n state.textareaWarp.addEventListener('mouseleave', () => {\n active.current = 'preview';\n });\n }\n }, [state.textareaWarp]);\n var handleScroll = (e, type) => {\n if (!enableScrollRef.current) return;\n var textareaDom = textareaDomRef.current;\n var previewDom = previewRef.current ? previewRef.current : undefined;\n if (!initScroll.current) {\n active.current = type;\n initScroll.current = true;\n }\n if (textareaDom && previewDom) {\n var scale = (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);\n if (e.target === textareaDom && active.current === 'text') {\n previewDom.scrollTop = textareaDom.scrollTop / scale;\n }\n if (e.target === previewDom && active.current === 'preview') {\n textareaDom.scrollTop = previewDom.scrollTop * scale;\n }\n var scrollTop = 0;\n if (active.current === 'text') {\n scrollTop = textareaDom.scrollTop || 0;\n } else if (active.current === 'preview') {\n scrollTop = previewDom.scrollTop || 0;\n }\n dispatch({\n scrollTop\n });\n }\n };\n var previewClassName = prefixCls + \"-preview \" + (previewOptions.className || '');\n var handlePreviewScroll = e => handleScroll(e, 'preview');\n var mdPreview = useMemo(() => /*#__PURE__*/_jsx(\"div\", {\n ref: previewRef,\n className: previewClassName,\n children: /*#__PURE__*/_jsx(MarkdownPreview, _extends({}, previewOptions, {\n onScroll: handlePreviewScroll,\n source: state.markdown || ''\n }))\n }), [previewClassName, previewOptions, state.markdown]);\n var preview = (components == null ? void 0 : components.preview) && (components == null ? void 0 : components.preview(state.markdown || '', state, dispatch));\n if (preview && /*#__PURE__*/React.isValidElement(preview)) {\n mdPreview = /*#__PURE__*/_jsx(\"div\", {\n className: previewClassName,\n ref: previewRef,\n onScroll: handlePreviewScroll,\n children: preview\n });\n }\n var containerStyle = _extends({}, other.style, {\n height: state.height || '100%'\n });\n var containerClick = () => dispatch({\n barPopup: _extends({}, setGroupPopFalse(state.barPopup))\n });\n var dragBarChange = newHeight => dispatch({\n height: newHeight\n });\n var changeHandle = evn => {\n onChange && onChange(evn.target.value, evn, state);\n if (textareaProps && textareaProps.onChange) {\n textareaProps.onChange(evn);\n }\n if (state.textarea && state.textarea instanceof HTMLTextAreaElement && onStatistics) {\n var obj = new TextAreaCommandOrchestrator(state.textarea);\n var objState = obj.getState() || {};\n onStatistics(_extends({}, objState, {\n lineCount: evn.target.value.split('\\n').length,\n length: evn.target.value.length\n }));\n }\n };\n return /*#__PURE__*/_jsx(EditorContext.Provider, {\n value: _extends({}, state, {\n dispatch\n }),\n children: /*#__PURE__*/_jsxs(\"div\", _extends({\n ref: container,\n className: cls\n }, other, {\n onClick: containerClick,\n style: containerStyle,\n children: [/*#__PURE__*/_jsx(ToolbarVisibility, {\n hideToolbar: hideToolbar,\n toolbarBottom: toolbarBottom,\n prefixCls: prefixCls,\n overflow: overflow,\n placement: \"top\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: prefixCls + \"-content\",\n children: [/(edit|live)/.test(state.preview || '') && /*#__PURE__*/_jsx(TextArea, _extends({\n className: prefixCls + \"-input\",\n prefixCls: prefixCls,\n autoFocus: autoFocus\n }, textareaProps, {\n onChange: changeHandle,\n renderTextarea: (components == null ? void 0 : components.textarea) || renderTextarea,\n onScroll: e => handleScroll(e, 'text')\n })), /(live|preview)/.test(state.preview || '') && mdPreview]\n }), visibleDragbar && !state.fullscreen && /*#__PURE__*/_jsx(DragBar, {\n prefixCls: prefixCls,\n height: state.height,\n maxHeight: maxHeight,\n minHeight: minHeight,\n onChange: dragBarChange\n }), /*#__PURE__*/_jsx(ToolbarVisibility, {\n hideToolbar: hideToolbar,\n toolbarBottom: toolbarBottom,\n prefixCls: prefixCls,\n overflow: overflow,\n placement: \"bottom\"\n })]\n }))\n });\n});\nvar Editor = InternalMDEditor;\nEditor.Markdown = MarkdownPreview;\nexport default Editor;","import MDEditor from './Editor';\nimport * as commands from './commands';\nimport * as MarkdownUtil from './utils/markdownUtils';\nimport \"./index.css\";\nexport * from './commands';\nexport * from './commands/group';\nexport * from './utils/markdownUtils';\nexport * from './utils/InsertTextAtPosition';\nexport * from './Editor';\nexport * from './Context';\nexport * from './Types';\nexport { MarkdownUtil, commands };\nexport default MDEditor;","/** @type {import('./index.js').Schema} */\nexport const defaultSchema = {\n strip: ['script'],\n clobberPrefix: 'user-content-',\n clobber: ['name', 'id'],\n ancestors: {\n tbody: ['table'],\n tfoot: ['table'],\n thead: ['table'],\n td: ['table'],\n th: ['table'],\n tr: ['table']\n },\n protocols: {\n href: ['http', 'https', 'mailto', 'xmpp', 'irc', 'ircs'],\n cite: ['http', 'https'],\n src: ['http', 'https'],\n longDesc: ['http', 'https']\n },\n tagNames: [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'br',\n 'b',\n 'i',\n 'strong',\n 'em',\n 'a',\n 'pre',\n 'code',\n 'img',\n 'tt',\n 'div',\n 'ins',\n 'del',\n 'sup',\n 'sub',\n 'p',\n 'ol',\n 'ul',\n 'table',\n 'thead',\n 'tbody',\n 'tfoot',\n 'blockquote',\n 'dl',\n 'dt',\n 'dd',\n 'kbd',\n 'q',\n 'samp',\n 'var',\n 'hr',\n 'ruby',\n 'rt',\n 'rp',\n 'li',\n 'tr',\n 'td',\n 'th',\n 's',\n 'strike',\n 'summary',\n 'details',\n 'caption',\n 'figure',\n 'figcaption',\n 'abbr',\n 'bdo',\n 'cite',\n 'dfn',\n 'mark',\n 'small',\n 'span',\n 'time',\n 'wbr',\n 'input'\n ],\n attributes: {\n a: ['href'],\n img: ['src', 'longDesc'],\n input: [\n ['type', 'checkbox'],\n ['disabled', true]\n ],\n li: [['className', 'task-list-item']],\n div: ['itemScope', 'itemType'],\n blockquote: ['cite'],\n del: ['cite'],\n ins: ['cite'],\n q: ['cite'],\n '*': [\n 'abbr',\n 'accept',\n 'acceptCharset',\n 'accessKey',\n 'action',\n 'align',\n 'alt',\n 'ariaDescribedBy',\n 'ariaHidden',\n 'ariaLabel',\n 'ariaLabelledBy',\n 'axis',\n 'border',\n 'cellPadding',\n 'cellSpacing',\n 'char',\n 'charOff',\n 'charSet',\n 'checked',\n 'clear',\n 'cols',\n 'colSpan',\n 'color',\n 'compact',\n 'coords',\n 'dateTime',\n 'dir',\n 'disabled',\n 'encType',\n 'htmlFor',\n 'frame',\n 'headers',\n 'height',\n 'hrefLang',\n 'hSpace',\n 'isMap',\n 'id',\n 'label',\n 'lang',\n 'maxLength',\n 'media',\n 'method',\n 'multiple',\n 'name',\n 'noHref',\n 'noShade',\n 'noWrap',\n 'open',\n 'prompt',\n 'readOnly',\n 'rel',\n 'rev',\n 'rows',\n 'rowSpan',\n 'rules',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'span',\n 'start',\n 'summary',\n 'tabIndex',\n 'target',\n 'title',\n 'type',\n 'useMap',\n 'vAlign',\n 'value',\n 'vSpace',\n 'width',\n 'itemProp'\n ]\n },\n required: {\n input: {\n type: 'checkbox',\n disabled: true\n }\n }\n}\n","/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Content} Content\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {Content | Root} Node\n *\n * @typedef {Properties[string]} PropertyValue\n * Possible property values.\n * @typedef {string | number | boolean} PrimitivePropertyValue\n * Possible primitive HTML attribute values.\n *\n * @typedef {Record<string, Array<string | [string, ...Array<PrimitivePropertyValue | RegExp>]>>} Attributes\n * Map of tag names to allow lists for each property.\n * @typedef {Record<string, Array<PrimitivePropertyValue | RegExp>>} AttributeClean\n * Normalized input.\n *\n * @typedef Schema\n * Sanitization configuration.\n * @property {Attributes | undefined} [attributes]\n * Map of tag names to allowed properties.\n *\n * The special `'*'` key defines property names allowed on all elements.\n * @property {Record<string, Record<string, PropertyValue>> | undefined} [required]\n * Map of tag names to required property names and their default property value.\n * @property {Array<string> | undefined} [tagNames]\n * List of allowed tag names.\n * @property {Record<string, Array<string>> | undefined} [protocols]\n * Map of protocols to allow in property values.\n * @property {Record<string, Array<string>> | undefined} [ancestors]\n * Map of tag names to their required ancestor elements.\n * @property {Array<string> | undefined} [clobber]\n * List of allowed property names which can clobber.\n * @property {string | undefined} [clobberPrefix]\n * Prefix to use before potentially clobbering property names.\n * @property {Array<string> | undefined} [strip]\n * Names of elements to strip from the tree.\n * @property {boolean | undefined} [allowComments]\n * Whether to allow comments.\n * @property {boolean | undefined} [allowDoctypes]\n * Whether to allow doctypes.\n *\n * @typedef {(schema: Schema, value: any, node: any, stack: Array<string>) => unknown} Handler\n * @typedef {Record<string, Handler>} NodeDefinition\n * @typedef {((schema: Schema, node: Node) => NodeDefinition | undefined)} NodeDefinitionGetter\n * @typedef {Record<string, NodeDefinition | NodeDefinitionGetter>} NodeSchema\n */\n\nimport {defaultSchema} from './schema.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {NodeSchema} */\nconst nodeSchema = {\n root: {children: all},\n doctype: handleDoctype,\n comment: handleComment,\n element: {\n tagName: handleTagName,\n properties: handleProperties,\n children: all\n },\n text: {value: handleValue},\n '*': {data: allow, position: allow}\n}\n\n/**\n * Utility to sanitize a tree\n *\n * @param {Node} node\n * Hast tree to sanitize\n * @param {Schema} [schema]\n * Schema defining how to sanitize - defaults to Github style sanitation\n */\nexport function sanitize(node, schema) {\n /** @type {Node} */\n let ctx = {type: 'root', children: []}\n\n if (node && typeof node === 'object' && node.type) {\n const replace = one(\n Object.assign({}, defaultSchema, schema || {}),\n node,\n []\n )\n\n if (replace) {\n if (Array.isArray(replace)) {\n if (replace.length === 1) {\n ctx = replace[0]\n } else {\n // @ts-expect-error Assume `root` is not a child.\n ctx.children = replace\n }\n } else {\n ctx = replace\n }\n }\n }\n\n return ctx\n}\n\n/**\n * Sanitize `node`.\n *\n * @param {Schema} schema\n * @param {Node} node\n * @param {Array<string>} stack\n * @returns {Node | Array<Node> | undefined}\n */\nfunction one(schema, node, stack) {\n const type = node && node.type\n /** @type {Node} */\n // @ts-expect-error rest of props added later.\n const replacement = {type: node.type}\n /** @type {boolean | undefined} */\n let replace\n\n if (own.call(nodeSchema, type)) {\n /** @type {NodeDefinition | NodeDefinitionGetter | undefined} */\n let definition = nodeSchema[type]\n\n if (typeof definition === 'function') {\n definition = definition(schema, node)\n }\n\n if (definition) {\n const allowed = Object.assign({}, definition, nodeSchema['*'])\n /** @type {string} */\n let key\n\n replace = true\n\n for (key in allowed) {\n if (own.call(allowed, key)) {\n // @ts-expect-error: fine.\n // type-coverage:ignore-next-line\n const result = allowed[key](schema, node[key], node, stack)\n\n // eslint-disable-next-line max-depth\n if (result === false) {\n replace = undefined\n // Set the non-safe value.\n // @ts-expect-error: fine.\n // type-coverage:ignore-next-line\n replacement[key] = node[key]\n } else if (result !== undefined && result !== null) {\n // @ts-expect-error: fine.\n // type-coverage:ignore-next-line\n replacement[key] = result\n }\n }\n }\n }\n }\n\n if (replace) {\n return replacement\n }\n\n return replacement.type === 'element' &&\n schema.strip &&\n !schema.strip.includes(replacement.tagName)\n ? replacement.children\n : undefined\n}\n\n/**\n * Sanitize `children`.\n *\n * @type {Handler}\n * @param {Array<Node>} children\n * @param {Node} node\n * @returns {Array<Node>}\n */\nfunction all(schema, children, node, stack) {\n /** @type {Array<Node>} */\n const results = []\n\n if (Array.isArray(children)) {\n let index = -1\n\n if (node.type === 'element') {\n stack.push(node.tagName)\n }\n\n while (++index < children.length) {\n const value = one(schema, children[index], stack)\n\n if (value) {\n if (Array.isArray(value)) {\n results.push(...value)\n } else {\n results.push(value)\n }\n }\n }\n\n if (node.type === 'element') {\n stack.pop()\n }\n }\n\n return results\n}\n\n/** @type {NodeDefinitionGetter} */\nfunction handleDoctype(schema) {\n return schema.allowDoctypes ? {name: handleDoctypeName} : undefined\n}\n\n/** @type {NodeDefinitionGetter} */\nfunction handleComment(schema) {\n return schema.allowComments ? {value: handleCommentValue} : undefined\n}\n\n/**\n * Sanitize `properties`.\n *\n * @type {Handler}\n * @param {Properties} properties\n * @param {Element} node\n * @returns {Properties}\n */\nfunction handleProperties(schema, properties, node, stack) {\n const name = handleTagName(schema, node.tagName, node, stack)\n /* c8 ignore next */\n const attrs = schema.attributes || {}\n /* c8 ignore next */\n const reqs = schema.required || {}\n const props = properties || {}\n const allowed = Object.assign(\n {},\n toPropertyValueMap(attrs['*']),\n toPropertyValueMap(name && own.call(attrs, name) ? attrs[name] : [])\n )\n /** @type {Properties} */\n const result = {}\n /** @type {string} */\n let key\n\n for (key in props) {\n if (own.call(props, key)) {\n let value = props[key]\n /** @type {AttributeClean[string]} */\n let definition\n\n if (own.call(allowed, key)) {\n definition = allowed[key]\n } else if (data(key) && own.call(allowed, 'data*')) {\n definition = allowed['data*']\n } else {\n continue\n }\n\n value = Array.isArray(value)\n ? handlePropertyValues(schema, value, key, definition)\n : handlePropertyValue(schema, value, key, definition)\n\n if (value !== undefined && value !== null) {\n result[key] = value\n }\n }\n }\n\n if (name && own.call(reqs, name)) {\n for (key in reqs[name]) {\n if (!own.call(result, key)) {\n result[key] = reqs[name][key]\n }\n }\n }\n\n return result\n}\n\n/**\n * Always return a valid HTML5 doctype.\n *\n * @type {Handler}\n * @returns {string}\n */\nfunction handleDoctypeName() {\n return 'html'\n}\n\n/**\n * Sanitize `tagName`.\n *\n * @param {Schema} schema\n * @param {string} tagName\n * @param {Node} _\n * @param {Array<string>} stack\n * @returns {string | false}\n */\nfunction handleTagName(schema, tagName, _, stack) {\n const name = typeof tagName === 'string' ? tagName : ''\n let index = -1\n\n if (\n !name ||\n name === '*' ||\n (schema.tagNames && !schema.tagNames.includes(name))\n ) {\n return false\n }\n\n // Some nodes can break out of their context if they don’t have a certain\n // ancestor.\n if (schema.ancestors && own.call(schema.ancestors, name)) {\n while (++index < schema.ancestors[name].length) {\n if (stack.includes(schema.ancestors[name][index])) {\n return name\n }\n }\n\n return false\n }\n\n return name\n}\n\n/**\n * See <https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments>\n *\n * @type {Handler}\n * @param {unknown} value\n * @returns {string}\n */\nfunction handleCommentValue(_, value) {\n /** @type {string} */\n const result = typeof value === 'string' ? value : ''\n const index = result.indexOf('-->')\n return index < 0 ? result : result.slice(0, index)\n}\n\n/**\n * Sanitize `value`.\n *\n * @type {Handler}\n * @param {unknown} value\n * @returns {string}\n */\nfunction handleValue(_, value) {\n return typeof value === 'string' ? value : ''\n}\n\n/**\n * Allow `value`.\n *\n * @type {Handler}\n * @param {unknown} value\n */\nfunction allow(_, value) {\n return value\n}\n\n/**\n * Sanitize a property value which is a list.\n *\n * @param {Schema} schema\n * @param {Array<unknown>} values\n * @param {string} prop\n * @param {AttributeClean[string]} definition\n * @returns {Array<string | number>}\n */\nfunction handlePropertyValues(schema, values, prop, definition) {\n let index = -1\n /** @type {Array<string | number>} */\n const result = []\n\n while (++index < values.length) {\n const value = handlePropertyValue(schema, values[index], prop, definition)\n\n if (value !== undefined && value !== null) {\n // @ts-expect-error Assume no booleans were in arrays.\n result.push(value)\n }\n }\n\n return result\n}\n\n/**\n * Sanitize a property value.\n *\n * @param {Schema} schema\n * @param {unknown} value\n * @param {string} prop\n * @param {AttributeClean[string]} definition\n * @returns {PropertyValue}\n */\nfunction handlePropertyValue(schema, value, prop, definition) {\n if (\n (typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string') &&\n safeProtocol(schema, value, prop) &&\n (definition.length === 0 ||\n definition.some((allowed) =>\n allowed && typeof allowed === 'object' && 'flags' in allowed\n ? allowed.test(String(value))\n : allowed === value\n ))\n ) {\n return schema.clobberPrefix &&\n schema.clobber &&\n schema.clobber.includes(prop)\n ? schema.clobberPrefix + value\n : value\n }\n}\n\n/**\n * Check whether `value` is a safe URL.\n *\n * @param {Schema} schema\n * @param {unknown} value\n * @param {string} prop\n * @returns {boolean}\n */\nfunction safeProtocol(schema, value, prop) {\n const url = String(value)\n const colon = url.indexOf(':')\n const questionMark = url.indexOf('?')\n const numberSign = url.indexOf('#')\n const slash = url.indexOf('/')\n const protocols =\n schema.protocols && own.call(schema.protocols, prop)\n ? schema.protocols[prop].concat()\n : []\n let index = -1\n\n if (\n protocols.length === 0 ||\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign)\n ) {\n return true\n }\n\n while (++index < protocols.length) {\n if (\n colon === protocols[index].length &&\n url.slice(0, protocols[index].length) === protocols[index]\n ) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Create a map from a list of props or a list of properties and values.\n *\n * @param {Attributes[string]} values\n * @returns {AttributeClean}\n */\nfunction toPropertyValueMap(values) {\n /** @type {AttributeClean} */\n const result = {}\n let index = -1\n\n while (++index < values.length) {\n const value = values[index]\n\n if (Array.isArray(value)) {\n result[value[0]] = value.slice(1)\n } else {\n result[value] = []\n }\n }\n\n return result\n}\n\n/**\n * Check if `prop` is a data property.\n *\n * @param {string} prop\n * @returns {boolean}\n */\nfunction data(prop) {\n return prop.length > 4 && prop.slice(0, 4).toLowerCase() === 'data'\n}\n","/**\n * @typedef {import('hast').Root} Root\n *\n * @typedef {import('hast-util-sanitize').Schema} Options\n * The sanitation schema defines how and if nodes and properties should be cleaned.\n * See `hast-util-sanitize`.\n * The default schema is exported as `defaultSchema`.\n */\n\nimport {sanitize as hastUtilSanitize, defaultSchema} from 'hast-util-sanitize'\n\n/**\n * Plugin to sanitize HTML.\n *\n * @type {import('unified').Plugin<[Options?] | Array<void>, Root, Root>}\n */\nexport default function rehypeSanitize(options = defaultSchema) {\n // @ts-expect-error: assume input `root` matches output root.\n return (tree) => hastUtilSanitize(tree, options)\n}\n\nexport {defaultSchema} from 'hast-util-sanitize'\n","/**\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n */\n\n/**\n * @typedef {Content | Root} Node\n */\n\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/**\n * Turn normal line endings into hard breaks.\n *\n * @param {Node} tree\n * Tree to change.\n * @returns {void}\n * Nothing.\n */\nexport function newlineToBreak(tree) {\n findAndReplace(tree, /\\r?\\n|\\r/g, replace)\n}\n\n/**\n * Replace line endings.\n *\n * @type {ReplaceFunction}\n */\nfunction replace() {\n return {type: 'break'}\n}\n","/**\n * @typedef {import('mdast').Root} Root\n */\n\nimport {newlineToBreak} from 'mdast-util-newline-to-break'\n\n/**\n * Plugin to support hard breaks without needing spaces or escapes (turns enters\n * into `<br>`s).\n *\n * @type {import('unified').Plugin<void[], Root>}\n */\nexport default function remarkBreaks() {\n return newlineToBreak\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {TokenType} attributesType\n * @param {TokenType} attributesMarkerType\n * @param {TokenType} attributeType\n * @param {TokenType} attributeIdType\n * @param {TokenType} attributeClassType\n * @param {TokenType} attributeNameType\n * @param {TokenType} attributeInitializerType\n * @param {TokenType} attributeValueLiteralType\n * @param {TokenType} attributeValueType\n * @param {TokenType} attributeValueMarker\n * @param {TokenType} attributeValueData\n * @param {boolean} [disallowEol=false]\n */\n/* eslint-disable-next-line max-params */\nexport function factoryAttributes(\n effects,\n ok,\n nok,\n attributesType,\n attributesMarkerType,\n attributeType,\n attributeIdType,\n attributeClassType,\n attributeNameType,\n attributeInitializerType,\n attributeValueLiteralType,\n attributeValueType,\n attributeValueMarker,\n attributeValueData,\n disallowEol\n) {\n /** @type {TokenType} */\n let type\n /** @type {Code | undefined} */\n let marker\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter(attributesType)\n effects.enter(attributesMarkerType)\n effects.consume(code)\n effects.exit(attributesMarkerType)\n return between\n }\n\n /** @type {State} */\n function between(code) {\n if (code === 35) {\n type = attributeIdType\n return shortcutStart(code)\n }\n if (code === 46) {\n type = attributeClassType\n return shortcutStart(code)\n }\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.enter(attributeType)\n effects.enter(attributeNameType)\n effects.consume(code)\n return name\n }\n if (disallowEol && markdownSpace(code)) {\n return factorySpace(effects, between, 'whitespace')(code)\n }\n if (!disallowEol && markdownLineEndingOrSpace(code)) {\n return factoryWhitespace(effects, between)(code)\n }\n return end(code)\n }\n\n /** @type {State} */\n function shortcutStart(code) {\n // Assume it’s registered.\n const markerType = /** @type {TokenType} */ type + 'Marker'\n effects.enter(attributeType)\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n return shortcutStartAfter\n }\n\n /** @type {State} */\n function shortcutStartAfter(code) {\n if (\n code === null ||\n code === 34 ||\n code === 35 ||\n code === 39 ||\n code === 46 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n code === 125 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n\n // Assume it’s registered.\n const valueType = /** @type {TokenType} */ type + 'Value'\n effects.enter(valueType)\n effects.consume(code)\n return shortcut\n }\n\n /** @type {State} */\n function shortcut(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (\n code === 35 ||\n code === 46 ||\n code === 125 ||\n markdownLineEndingOrSpace(code)\n ) {\n // Assume it’s registered.\n const valueType = /** @type {TokenType} */ type + 'Value'\n effects.exit(valueType)\n effects.exit(type)\n effects.exit(attributeType)\n return between(code)\n }\n effects.consume(code)\n return shortcut\n }\n\n /** @type {State} */\n function name(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return name\n }\n effects.exit(attributeNameType)\n if (disallowEol && markdownSpace(code)) {\n return factorySpace(effects, nameAfter, 'whitespace')(code)\n }\n if (!disallowEol && markdownLineEndingOrSpace(code)) {\n return factoryWhitespace(effects, nameAfter)(code)\n }\n return nameAfter(code)\n }\n\n /** @type {State} */\n function nameAfter(code) {\n if (code === 61) {\n effects.enter(attributeInitializerType)\n effects.consume(code)\n effects.exit(attributeInitializerType)\n return valueBefore\n }\n\n // Attribute w/o value.\n effects.exit(attributeType)\n return between(code)\n }\n\n /** @type {State} */\n function valueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n code === 125 ||\n (disallowEol && markdownLineEnding(code))\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.enter(attributeValueLiteralType)\n effects.enter(attributeValueMarker)\n effects.consume(code)\n effects.exit(attributeValueMarker)\n marker = code\n return valueQuotedStart\n }\n if (disallowEol && markdownSpace(code)) {\n return factorySpace(effects, valueBefore, 'whitespace')(code)\n }\n if (!disallowEol && markdownLineEndingOrSpace(code)) {\n return factoryWhitespace(effects, valueBefore)(code)\n }\n effects.enter(attributeValueType)\n effects.enter(attributeValueData)\n effects.consume(code)\n marker = undefined\n return valueUnquoted\n }\n\n /** @type {State} */\n function valueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 125 || markdownLineEndingOrSpace(code)) {\n effects.exit(attributeValueData)\n effects.exit(attributeValueType)\n effects.exit(attributeType)\n return between(code)\n }\n effects.consume(code)\n return valueUnquoted\n }\n\n /** @type {State} */\n function valueQuotedStart(code) {\n if (code === marker) {\n effects.enter(attributeValueMarker)\n effects.consume(code)\n effects.exit(attributeValueMarker)\n effects.exit(attributeValueLiteralType)\n effects.exit(attributeType)\n return valueQuotedAfter\n }\n effects.enter(attributeValueType)\n return valueQuotedBetween(code)\n }\n\n /** @type {State} */\n function valueQuotedBetween(code) {\n if (code === marker) {\n effects.exit(attributeValueType)\n return valueQuotedStart(code)\n }\n if (code === null) {\n return nok(code)\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n return disallowEol\n ? nok(code)\n : factoryWhitespace(effects, valueQuotedBetween)(code)\n }\n effects.enter(attributeValueData)\n effects.consume(code)\n return valueQuoted\n }\n\n /** @type {State} */\n function valueQuoted(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit(attributeValueData)\n return valueQuotedBetween(code)\n }\n effects.consume(code)\n return valueQuoted\n }\n\n /** @type {State} */\n function valueQuotedAfter(code) {\n return code === 125 || markdownLineEndingOrSpace(code)\n ? between(code)\n : end(code)\n }\n\n /** @type {State} */\n function end(code) {\n if (code === 125) {\n effects.enter(attributesMarkerType)\n effects.consume(code)\n effects.exit(attributesMarkerType)\n effects.exit(attributesType)\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n// This is a fork of:\n// <https://github.com/micromark/micromark/tree/main/packages/micromark-factory-label>\n// to allow empty labels, balanced brackets (such as for nested directives),\n// text instead of strings, and optionally disallows EOLs.\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {TokenType} type\n * @param {TokenType} markerType\n * @param {TokenType} stringType\n * @param {boolean} [disallowEol=false]\n */ // eslint-disable-next-line max-params\nexport function factoryLabel(\n effects,\n ok,\n nok,\n type,\n markerType,\n stringType,\n disallowEol\n) {\n let size = 0\n let balance = 0\n /** @type {Token|undefined} */\n let previous\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n return afterStart\n }\n\n /** @type {State} */\n function afterStart(code) {\n if (code === 93) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n effects.enter(stringType)\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n if (code === 93 && !balance) {\n return atClosingBrace(code)\n }\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n if (previous) previous.next = token\n previous = token\n return data(code)\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null || size > 999) {\n return nok(code)\n }\n if (code === 91 && ++balance > 32) {\n return nok(code)\n }\n if (code === 93 && !balance--) {\n effects.exit('chunkText')\n return atClosingBrace(code)\n }\n if (markdownLineEnding(code)) {\n if (disallowEol) {\n return nok(code)\n }\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n }\n effects.consume(code)\n return code === 92 ? dataEscape : data\n }\n\n /** @type {State} */\n function dataEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return data\n }\n return data(code)\n }\n\n /** @type {State} */\n function atClosingBrace(code) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {asciiAlpha, asciiAlphanumeric} from 'micromark-util-character'\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {TokenType} type\n */\nexport function factoryName(effects, ok, nok, type) {\n const self = this\n return start\n\n /** @type {State} */\n function start(code) {\n if (asciiAlpha(code)) {\n effects.enter(type)\n effects.consume(code)\n return name\n }\n return nok(code)\n }\n\n /** @type {State} */\n function name(code) {\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return name\n }\n effects.exit(type)\n return self.previous === 45 || self.previous === 95 ? nok(code) : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {factoryAttributes} from './factory-attributes.js'\nimport {factoryLabel} from './factory-label.js'\nimport {factoryName} from './factory-name.js'\n\n/** @type {Construct} */\nexport const directiveContainer = {\n tokenize: tokenizeDirectiveContainer,\n concrete: true\n}\nconst label = {\n tokenize: tokenizeLabel,\n partial: true\n}\nconst attributes = {\n tokenize: tokenizeAttributes,\n partial: true\n}\nconst nonLazyLine = {\n tokenize: tokenizeNonLazyLine,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDirectiveContainer(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n const initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let sizeOpen = 0\n /** @type {Token} */\n let previous\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('directiveContainer')\n effects.enter('directiveContainerFence')\n effects.enter('directiveContainerSequence')\n return sequenceOpen(code)\n }\n\n /** @type {State} */\n function sequenceOpen(code) {\n if (code === 58) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('directiveContainerSequence')\n return factoryName.call(\n self,\n effects,\n afterName,\n nok,\n 'directiveContainerName'\n )(code)\n }\n\n /** @type {State} */\n function afterName(code) {\n return code === 91\n ? effects.attempt(label, afterLabel, afterLabel)(code)\n : afterLabel(code)\n }\n\n /** @type {State} */\n function afterLabel(code) {\n return code === 123\n ? effects.attempt(attributes, afterAttributes, afterAttributes)(code)\n : afterAttributes(code)\n }\n\n /** @type {State} */\n function afterAttributes(code) {\n return factorySpace(effects, openAfter, 'whitespace')(code)\n }\n\n /** @type {State} */\n function openAfter(code) {\n effects.exit('directiveContainerFence')\n if (code === null) {\n return afterOpening(code)\n }\n if (markdownLineEnding(code)) {\n if (self.interrupt) {\n return ok(code)\n }\n return effects.attempt(nonLazyLine, contentStart, afterOpening)(code)\n }\n return nok(code)\n }\n\n /** @type {State} */\n function afterOpening(code) {\n effects.exit('directiveContainer')\n return ok(code)\n }\n\n /** @type {State} */\n function contentStart(code) {\n if (code === null) {\n effects.exit('directiveContainer')\n return ok(code)\n }\n effects.enter('directiveContainerContent')\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n if (code === null) {\n return after(code)\n }\n return effects.attempt(\n {\n tokenize: tokenizeClosingFence,\n partial: true\n },\n after,\n initialSize\n ? factorySpace(effects, chunkStart, 'linePrefix', initialSize + 1)\n : chunkStart\n )(code)\n }\n\n /** @type {State} */\n function chunkStart(code) {\n if (code === null) {\n return after(code)\n }\n const token = effects.enter('chunkDocument', {\n contentType: 'document',\n previous\n })\n if (previous) previous.next = token\n previous = token\n return contentContinue(code)\n }\n\n /** @type {State} */\n function contentContinue(code) {\n if (code === null) {\n const t = effects.exit('chunkDocument')\n self.parser.lazy[t.start.line] = false\n return after(code)\n }\n if (markdownLineEnding(code)) {\n return effects.check(nonLazyLine, nonLazyLineAfter, lineAfter)(code)\n }\n effects.consume(code)\n return contentContinue\n }\n\n /** @type {State} */\n function nonLazyLineAfter(code) {\n effects.consume(code)\n const t = effects.exit('chunkDocument')\n self.parser.lazy[t.start.line] = false\n return lineStart\n }\n\n /** @type {State} */\n function lineAfter(code) {\n const t = effects.exit('chunkDocument')\n self.parser.lazy[t.start.line] = false\n return after(code)\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit('directiveContainerContent')\n effects.exit('directiveContainer')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n return factorySpace(effects, closingPrefixAfter, 'linePrefix', 4)\n\n /** @type {State} */\n function closingPrefixAfter(code) {\n effects.enter('directiveContainerFence')\n effects.enter('directiveContainerSequence')\n return closingSequence(code)\n }\n\n /** @type {State} */\n function closingSequence(code) {\n if (code === 58) {\n effects.consume(code)\n size++\n return closingSequence\n }\n if (size < sizeOpen) return nok(code)\n effects.exit('directiveContainerSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n\n /** @type {State} */\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('directiveContainerFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabel(effects, ok, nok) {\n // Always a `[`\n return factoryLabel(\n effects,\n ok,\n nok,\n 'directiveContainerLabel',\n 'directiveContainerLabelMarker',\n 'directiveContainerLabelString',\n true\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttributes(effects, ok, nok) {\n // Always a `{`\n return factoryAttributes(\n effects,\n ok,\n nok,\n 'directiveContainerAttributes',\n 'directiveContainerAttributesMarker',\n 'directiveContainerAttribute',\n 'directiveContainerAttributeId',\n 'directiveContainerAttributeClass',\n 'directiveContainerAttributeName',\n 'directiveContainerAttributeInitializerMarker',\n 'directiveContainerAttributeValueLiteral',\n 'directiveContainerAttributeValue',\n 'directiveContainerAttributeValueMarker',\n 'directiveContainerAttributeValueData',\n true\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyLine(effects, ok, nok) {\n const self = this\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /** @type {State} */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {factoryAttributes} from './factory-attributes.js'\nimport {factoryLabel} from './factory-label.js'\nimport {factoryName} from './factory-name.js'\n\n/** @type {Construct} */\nexport const directiveLeaf = {\n tokenize: tokenizeDirectiveLeaf\n}\nconst label = {\n tokenize: tokenizeLabel,\n partial: true\n}\nconst attributes = {\n tokenize: tokenizeAttributes,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDirectiveLeaf(effects, ok, nok) {\n const self = this\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('directiveLeaf')\n effects.enter('directiveLeafSequence')\n effects.consume(code)\n return inStart\n }\n\n /** @type {State} */\n function inStart(code) {\n if (code === 58) {\n effects.consume(code)\n effects.exit('directiveLeafSequence')\n return factoryName.call(\n self,\n effects,\n afterName,\n nok,\n 'directiveLeafName'\n )\n }\n return nok(code)\n }\n\n /** @type {State} */\n function afterName(code) {\n return code === 91\n ? effects.attempt(label, afterLabel, afterLabel)(code)\n : afterLabel(code)\n }\n\n /** @type {State} */\n function afterLabel(code) {\n return code === 123\n ? effects.attempt(attributes, afterAttributes, afterAttributes)(code)\n : afterAttributes(code)\n }\n\n /** @type {State} */\n function afterAttributes(code) {\n return factorySpace(effects, end, 'whitespace')(code)\n }\n\n /** @type {State} */\n function end(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('directiveLeaf')\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabel(effects, ok, nok) {\n // Always a `[`\n return factoryLabel(\n effects,\n ok,\n nok,\n 'directiveLeafLabel',\n 'directiveLeafLabelMarker',\n 'directiveLeafLabelString',\n true\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttributes(effects, ok, nok) {\n // Always a `{`\n return factoryAttributes(\n effects,\n ok,\n nok,\n 'directiveLeafAttributes',\n 'directiveLeafAttributesMarker',\n 'directiveLeafAttribute',\n 'directiveLeafAttributeId',\n 'directiveLeafAttributeClass',\n 'directiveLeafAttributeName',\n 'directiveLeafAttributeInitializerMarker',\n 'directiveLeafAttributeValueLiteral',\n 'directiveLeafAttributeValue',\n 'directiveLeafAttributeValueMarker',\n 'directiveLeafAttributeValueData',\n true\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryAttributes} from './factory-attributes.js'\nimport {factoryLabel} from './factory-label.js'\nimport {factoryName} from './factory-name.js'\n\n/** @type {Construct} */\nexport const directiveText = {\n tokenize: tokenizeDirectiveText,\n previous\n}\nconst label = {\n tokenize: tokenizeLabel,\n partial: true\n}\nconst attributes = {\n tokenize: tokenizeAttributes,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 58 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDirectiveText(effects, ok, nok) {\n const self = this\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('directiveText')\n effects.enter('directiveTextMarker')\n effects.consume(code)\n effects.exit('directiveTextMarker')\n return factoryName.call(self, effects, afterName, nok, 'directiveTextName')\n }\n\n /** @type {State} */\n function afterName(code) {\n return code === 58\n ? nok(code)\n : code === 91\n ? effects.attempt(label, afterLabel, afterLabel)(code)\n : afterLabel(code)\n }\n\n /** @type {State} */\n function afterLabel(code) {\n return code === 123\n ? effects.attempt(attributes, afterAttributes, afterAttributes)(code)\n : afterAttributes(code)\n }\n\n /** @type {State} */\n function afterAttributes(code) {\n effects.exit('directiveText')\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabel(effects, ok, nok) {\n // Always a `[`\n return factoryLabel(\n effects,\n ok,\n nok,\n 'directiveTextLabel',\n 'directiveTextLabelMarker',\n 'directiveTextLabelString'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttributes(effects, ok, nok) {\n // Always a `{`\n return factoryAttributes(\n effects,\n ok,\n nok,\n 'directiveTextAttributes',\n 'directiveTextAttributesMarker',\n 'directiveTextAttribute',\n 'directiveTextAttributeId',\n 'directiveTextAttributeClass',\n 'directiveTextAttributeName',\n 'directiveTextAttributeInitializerMarker',\n 'directiveTextAttributeValueLiteral',\n 'directiveTextAttributeValue',\n 'directiveTextAttributeValueMarker',\n 'directiveTextAttributeValueData'\n )\n}\n","/**\n * @typedef {import('mdast').BlockContent} BlockContent\n * @typedef {import('mdast').DefinitionContent} DefinitionContent\n * @typedef {import('mdast').Paragraph} Paragraph\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Token} Token\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').State} State\n *\n * @typedef {import('../index.js').LeafDirective} LeafDirective\n * @typedef {import('../index.js').TextDirective} TextDirective\n * @typedef {import('../index.js').Directive} Directive\n */\n\nimport {parseEntities} from 'parse-entities'\nimport {stringifyEntitiesLight} from 'stringify-entities'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {containerFlow} from 'mdast-util-to-markdown/lib/util/container-flow.js'\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {checkQuote} from 'mdast-util-to-markdown/lib/util/check-quote.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n// To do: next major: replace `containerFlow`, `containerPhrasing`, `track`\n// with `state` methods.\n// To do: next major: expose functions.\n\nconst own = {}.hasOwnProperty\n\nconst shortcut = /^[^\\t\\n\\r \"#'.<=>`}]+$/\n\nhandleDirective.peek = peekDirective\n\n/**\n * Extension for `mdast-util-from-markdown` to enable directives.\n *\n * @type {FromMarkdownExtension}\n */\nexport const directiveFromMarkdown = {\n canContainEols: ['textDirective'],\n enter: {\n directiveContainer: enterContainer,\n directiveContainerAttributes: enterAttributes,\n directiveContainerLabel: enterContainerLabel,\n\n directiveLeaf: enterLeaf,\n directiveLeafAttributes: enterAttributes,\n\n directiveText: enterText,\n directiveTextAttributes: enterAttributes\n },\n exit: {\n directiveContainer: exit,\n directiveContainerAttributeClassValue: exitAttributeClassValue,\n directiveContainerAttributeIdValue: exitAttributeIdValue,\n directiveContainerAttributeName: exitAttributeName,\n directiveContainerAttributeValue: exitAttributeValue,\n directiveContainerAttributes: exitAttributes,\n directiveContainerLabel: exitContainerLabel,\n directiveContainerName: exitName,\n\n directiveLeaf: exit,\n directiveLeafAttributeClassValue: exitAttributeClassValue,\n directiveLeafAttributeIdValue: exitAttributeIdValue,\n directiveLeafAttributeName: exitAttributeName,\n directiveLeafAttributeValue: exitAttributeValue,\n directiveLeafAttributes: exitAttributes,\n directiveLeafName: exitName,\n\n directiveText: exit,\n directiveTextAttributeClassValue: exitAttributeClassValue,\n directiveTextAttributeIdValue: exitAttributeIdValue,\n directiveTextAttributeName: exitAttributeName,\n directiveTextAttributeValue: exitAttributeValue,\n directiveTextAttributes: exitAttributes,\n directiveTextName: exitName\n }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable directives.\n *\n * @type {ToMarkdownExtension}\n */\nexport const directiveToMarkdown = {\n unsafe: [\n {\n character: '\\r',\n inConstruct: ['leafDirectiveLabel', 'containerDirectiveLabel']\n },\n {\n character: '\\n',\n inConstruct: ['leafDirectiveLabel', 'containerDirectiveLabel']\n },\n {\n before: '[^:]',\n character: ':',\n after: '[A-Za-z]',\n inConstruct: ['phrasing']\n },\n {atBreak: true, character: ':', after: ':'}\n ],\n handlers: {\n containerDirective: handleDirective,\n leafDirective: handleDirective,\n textDirective: handleDirective\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterContainer(token) {\n enter.call(this, 'containerDirective', token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLeaf(token) {\n enter.call(this, 'leafDirective', token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterText(token) {\n enter.call(this, 'textDirective', token)\n}\n\n/**\n * @this {CompileContext}\n * @param {Directive['type']} type\n * @param {Token} token\n */\nfunction enter(type, token) {\n this.enter({type, name: '', attributes: {}, children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @param {Token} token\n */\nfunction exitName(token) {\n const node = /** @type {Directive} */ (this.stack[this.stack.length - 1])\n node.name = this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterContainerLabel(token) {\n this.enter(\n {type: 'paragraph', data: {directiveLabel: true}, children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitContainerLabel(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterAttributes() {\n this.setData('directiveAttributes', [])\n this.buffer() // Capture EOLs\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitAttributeIdValue(token) {\n const list = /** @type {Array<[string, string]>} */ (\n this.getData('directiveAttributes')\n )\n list.push([\n 'id',\n parseEntities(this.sliceSerialize(token), {\n attribute: true\n })\n ])\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitAttributeClassValue(token) {\n const list = /** @type {Array<[string, string]>} */ (\n this.getData('directiveAttributes')\n )\n list.push([\n 'class',\n parseEntities(this.sliceSerialize(token), {\n attribute: true\n })\n ])\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitAttributeValue(token) {\n const list = /** @type {Array<[string, string]>} */ (\n this.getData('directiveAttributes')\n )\n list[list.length - 1][1] = parseEntities(this.sliceSerialize(token), {\n attribute: true\n })\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitAttributeName(token) {\n const list = /** @type {Array<[string, string]>} */ (\n this.getData('directiveAttributes')\n )\n\n // Attribute names in CommonMark are significantly limited, so character\n // references can’t exist.\n list.push([this.sliceSerialize(token), ''])\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitAttributes() {\n const list = /** @type {Array<[string, string]>} */ (\n this.getData('directiveAttributes')\n )\n /** @type {Record<string, string>} */\n const cleaned = {}\n let index = -1\n\n while (++index < list.length) {\n const attribute = list[index]\n\n if (attribute[0] === 'class' && cleaned.class) {\n cleaned.class += ' ' + attribute[1]\n } else {\n cleaned[attribute[0]] = attribute[1]\n }\n }\n\n this.setData('directiveAttributes')\n this.resume() // Drop EOLs\n const node = /** @type {Directive} */ (this.stack[this.stack.length - 1])\n node.attributes = cleaned\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Directive} node\n */\nfunction handleDirective(node, _, state, safeOptions) {\n const tracker = track(safeOptions)\n const sequence = fence(node)\n const exit = state.enter(node.type)\n let value = tracker.move(sequence + (node.name || ''))\n /** @type {Paragraph | LeafDirective | TextDirective | undefined} */\n let label\n\n if (node.type === 'containerDirective') {\n const head = (node.children || [])[0]\n label = inlineDirectiveLabel(head) ? head : undefined\n } else {\n label = node\n }\n\n if (label && label.children && label.children.length > 0) {\n const exit = state.enter('label')\n /** @type {ConstructName} */\n const labelType = `${node.type}Label`\n const subexit = state.enter(labelType)\n value += tracker.move('[')\n value += tracker.move(\n containerPhrasing(label, state, {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n value += tracker.move(']')\n subexit()\n exit()\n }\n\n value += tracker.move(attributes(node, state))\n\n if (node.type === 'containerDirective') {\n const head = (node.children || [])[0]\n let shallow = node\n\n if (inlineDirectiveLabel(head)) {\n shallow = Object.assign({}, node, {children: node.children.slice(1)})\n }\n\n if (shallow && shallow.children && shallow.children.length > 0) {\n value += tracker.move('\\n')\n value += tracker.move(containerFlow(shallow, state, tracker.current()))\n }\n\n value += tracker.move('\\n' + sequence)\n }\n\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDirective() {\n return ':'\n}\n\n/**\n * @param {Directive} node\n * @param {State} state\n * @returns {string}\n */\nfunction attributes(node, state) {\n const quote = checkQuote(state)\n const subset = node.type === 'textDirective' ? [quote] : [quote, '\\n', '\\r']\n const attrs = node.attributes || {}\n /** @type {Array<string>} */\n const values = []\n /** @type {string | undefined} */\n let classesFull\n /** @type {string | undefined} */\n let classes\n /** @type {string | undefined} */\n let id\n /** @type {string} */\n let key\n\n for (key in attrs) {\n if (\n own.call(attrs, key) &&\n attrs[key] !== undefined &&\n attrs[key] !== null\n ) {\n const value = String(attrs[key])\n\n if (key === 'id') {\n id = shortcut.test(value) ? '#' + value : quoted('id', value)\n } else if (key === 'class') {\n const list = value.split(/[\\t\\n\\r ]+/g)\n /** @type {Array<string>} */\n const classesFullList = []\n /** @type {Array<string>} */\n const classesList = []\n let index = -1\n\n while (++index < list.length) {\n ;(shortcut.test(list[index]) ? classesList : classesFullList).push(\n list[index]\n )\n }\n\n classesFull =\n classesFullList.length > 0\n ? quoted('class', classesFullList.join(' '))\n : ''\n classes = classesList.length > 0 ? '.' + classesList.join('.') : ''\n } else {\n values.push(quoted(key, value))\n }\n }\n }\n\n if (classesFull) {\n values.unshift(classesFull)\n }\n\n if (classes) {\n values.unshift(classes)\n }\n\n if (id) {\n values.unshift(id)\n }\n\n return values.length > 0 ? '{' + values.join(' ') + '}' : ''\n\n /**\n * @param {string} key\n * @param {string} value\n * @returns {string}\n */\n function quoted(key, value) {\n return (\n key +\n (value\n ? '=' + quote + stringifyEntitiesLight(value, {subset}) + quote\n : '')\n )\n }\n}\n\n/**\n * @param {BlockContent | DefinitionContent} node\n * @returns {node is Paragraph & {data: {directiveLabel: boolean}}}\n */\nfunction inlineDirectiveLabel(node) {\n return Boolean(\n node && node.type === 'paragraph' && node.data && node.data.directiveLabel\n )\n}\n\n/**\n * @param {Directive} node\n * @returns {string}\n */\nfunction fence(node) {\n let size = 0\n\n if (node.type === 'containerDirective') {\n visitParents(node, function (node, parents) {\n if (node.type === 'containerDirective') {\n let index = parents.length\n let nesting = 0\n\n while (index--) {\n if (parents[index].type === 'containerDirective') {\n nesting++\n }\n }\n\n if (nesting > size) size = nesting\n }\n })\n size += 3\n } else if (node.type === 'leafDirective') {\n size = 2\n } else {\n size = 1\n }\n\n return ':'.repeat(size)\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['quote'], null | undefined>}\n */\nexport function checkQuote(state) {\n const marker = state.options.quote || '\"'\n\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n 'Cannot serialize title with `' +\n marker +\n '` for `options.quote`, expected `\"`, or `\\'`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('mdast-util-directive')} DoNotTouchAsThisImportIncludesDirectivesInTree\n */\n\nimport {directive} from 'micromark-extension-directive'\nimport {directiveFromMarkdown, directiveToMarkdown} from 'mdast-util-directive'\n\n/**\n * Plugin to support the generic directives proposal (`:cite[smith04]`,\n * `::youtube[Video of a cat in a box]{v=01ab2cd3efg}`, and such).\n *\n * @type {import('unified').Plugin<void[], Root>}\n */\nexport default function remarkDirective() {\n const data = this.data()\n\n add('micromarkExtensions', directive())\n add('fromMarkdownExtensions', directiveFromMarkdown)\n add('toMarkdownExtensions', directiveToMarkdown)\n\n /**\n * @param {string} field\n * @param {unknown} value\n */\n function add(field, value) {\n const list = /** @type {unknown[]} */ (\n // Other extensions\n /* c8 ignore next 2 */\n data[field] ? data[field] : (data[field] = [])\n )\n\n list.push(value)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {directiveContainer} from './directive-container.js'\nimport {directiveLeaf} from './directive-leaf.js'\nimport {directiveText} from './directive-text.js'\n\n/**\n * Create an extension for `micromark` to enable directive syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable directive syntax.\n */\nexport function directive() {\n return {\n text: {\n [58]: directiveText\n },\n flow: {\n [58]: [directiveContainer, directiveLeaf]\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').Link} Link\n *\n * @typedef Options\n * Configuration (optional).\n * @property {Array<string>} [imageExtensions]\n * File extensions (without dot) to treat as images.\n */\n\nimport isUrl from 'is-url'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {is} from 'unist-util-is'\n\nconst isImgPath = (/** @type {string} */ value) =>\n value.startsWith('/') || value.startsWith('./') || value.startsWith('../')\n\n/**\n * Extensions recognized as images by default\n */\nexport const defaultImageExtensions = [\n 'svg',\n 'png',\n 'jpg',\n 'jpeg',\n 'gif',\n 'webp',\n 'avif'\n]\n\n/**\n * Plugin to add a simpler image syntax.\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function remarkImages({\n imageExtensions = defaultImageExtensions\n} = {}) {\n const imgExtRegex = new RegExp(`\\\\.(${imageExtensions.join('|')})$`)\n const isImgExt = (/** @type {string} */ value) => imgExtRegex.test(value)\n\n return (tree) => {\n visitParents(tree, 'text', (node, parents) => {\n const value = String(node.value).trim()\n\n if ((isUrl(value) || isImgPath(value)) && isImgExt(value)) {\n let interactive = false\n let length = parents.length\n const parent = parents[length - 1]\n const siblings = parent.children\n // @ts-expect-error: too many possible parents.\n const index = siblings.indexOf(node)\n\n // Check if we’re in interactive content.\n while (length--) {\n if (is(parents[length], ['link', 'linkReference'])) {\n interactive = true\n break\n }\n }\n\n /** @type {Image} */\n const image = {\n type: 'image',\n url: value,\n title: null,\n alt: '',\n position: node.position\n }\n /** @type {Image|Link} */\n let next = image\n\n // Add a link if we’re not already in one.\n if (!interactive) {\n next = {\n type: 'link',\n url: value,\n title: null,\n children: [image],\n position: node.position\n }\n }\n\n siblings[index] = next\n }\n })\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n */\n\nimport {visit, SKIP} from 'unist-util-visit'\nimport {whitespace} from 'hast-util-whitespace'\n\nconst unknown = 1\nconst containsImage = 2\nconst containsOther = 3\n\n/**\n * Plugin to remove the wrapping paragraph for images.\n *\n * @type {import('unified').Plugin<void[], Root>}\n */\nexport default function remarkUnwrapImages() {\n return (tree) => {\n visit(tree, 'paragraph', (node, index, parent) => {\n if (\n parent &&\n typeof index === 'number' &&\n applicable(node) === containsImage\n ) {\n parent.children.splice(index, 1, ...node.children)\n return [SKIP, index]\n }\n })\n }\n}\n\n/**\n * @param {Paragraph|Link|LinkReference} node\n * @param {boolean} [inLink]\n * @returns {1|2|3}\n */\nfunction applicable(node, inLink) {\n /** @type {1|2|3} */\n let image = unknown\n let index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n\n if (whitespace(child)) {\n // White space is fine.\n } else if (child.type === 'image' || child.type === 'imageReference') {\n image = containsImage\n } else if (\n !inLink &&\n (child.type === 'link' || child.type === 'linkReference')\n ) {\n const linkResult = applicable(child, true)\n\n if (linkResult === containsOther) {\n return containsOther\n }\n\n if (linkResult === containsImage) {\n image = containsImage\n }\n } else {\n return containsOther\n }\n }\n\n return image\n}\n","import MDEditor from '@uiw/react-md-editor'\r\nimport * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { Button, Input } from 'reactstrap'\r\nimport rehypeRaw from 'rehype-raw'\r\nimport rehypeSanitize, { defaultSchema } from 'rehype-sanitize'\r\nimport remarkBreaks from 'remark-breaks'\r\nimport remarkDirective from 'remark-directive'\r\nimport remarkGfm from 'remark-gfm'\r\nimport remarkImages from 'remark-images'\r\nimport remarkUnwrapImages from 'remark-unwrap-images'\r\n\r\ninterface NewPostBoxProps {\r\n post: string\r\n setPost: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: NewPostBoxProps) => {\r\n return (\r\n <React.Fragment>\r\n <MDEditor\r\n value={props.post}\r\n onChange={props.setPost}\r\n previewOptions={{\r\n remarkPlugins: [\r\n [remarkGfm, { singleTilde: false }],\r\n remarkBreaks,\r\n remarkUnwrapImages,\r\n remarkDirective,\r\n remarkImages\r\n ],\r\n rehypePlugins: [\r\n [\r\n rehypeSanitize\r\n ],\r\n ],\r\n }}\r\n />\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { FormGroup, Label } from 'reactstrap'\r\n\r\nimport NewPostBox from '../newpostbox/NewPostBox'\r\n\r\ninterface EventEditorBoxContainerProps {\r\n post: string\r\n setPost: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: EventEditorBoxContainerProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='post-editor'>Event Post</Label>\r\n <NewPostBox post={props.post} setPost={props.setPost} />\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Col, FormGroup, Label } from 'reactstrap'\r\n\r\ninterface EventEditorEndDateProps {\r\n endDate: string\r\n setEndDate: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: EventEditorEndDateProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup row>\r\n <Label for='EndDate' sm={2}>\r\n End Date\r\n </Label>\r\n <Col sm={10}>\r\n <input type='datetime-local' value={props.endDate} onChange={(e) => props.setEndDate(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\ninterface EventEditorPublishProps {\r\n publish: boolean\r\n setPublish: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: EventEditorPublishProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='publish'>\r\n <Input id='publish' name='publish' type='checkbox' checked={props.publish} onChange={(e) => props.setPublish(e.target.checked)} /> Publish this event. This will\r\n make this event viewable to users.\r\n </Label>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Col, FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport { EventRegion } from '../../lib/DoomCentral'\r\n\r\ninterface EventEditorRegionOptionsProps {\r\n region: EventRegion\r\n setRegion: React.Dispatch<React.SetStateAction<EventRegion>>\r\n}\r\n\r\nexport default (props: EventEditorRegionOptionsProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup row>\r\n <Label for='region' sm={2}>\r\n Region\r\n </Label>\r\n <Col sm={10}>\r\n <Input type='select' name='region' id='region' value={EventRegion[props.region]} onChange={(e) => props.setRegion(EventRegion[e.target.value])}>\r\n {(Object.keys(EventRegion).filter((v) => !isNaN(Number(v))) as (keyof typeof EventRegion)[]).map((key, index) => (\r\n <option key={key} value={EventRegion[key]}>\r\n {EventRegion[key]}\r\n </option>\r\n ))}\r\n </Input>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { Col, FormGroup, Label } from 'reactstrap'\r\n\r\ninterface EventEditorStartDateProps {\r\n startDate: string\r\n setStartDate: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: EventEditorStartDateProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup row>\r\n <Label for='startDate' sm={2}>\r\n Start Date\r\n </Label>\r\n <Col sm={10}>\r\n <input type='datetime-local' value={props.startDate} onChange={(e) => props.setStartDate(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, FormGroup, Input, Label } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { IStreamListVm, IStreamerDto, StreamerClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface EventEditorStreamerProps {\r\n streamerId: number\r\n setStreamerId: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: EventEditorStreamerProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [streamList, setStreamList] = useState<IStreamerDto[]>([])\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new StreamerClient()\r\n const response = await client.get().then((response) => response.toJSON() as Promise<IStreamListVm>)\r\n setStreamList(response.streamers)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <FormGroup row>\r\n <Label for='streamerId'>Designated Event Streamer</Label>\r\n <Col sm={10}>\r\n <Input\r\n type='select'\r\n name='streamerId'\r\n id='streamerId'\r\n value={props.streamerId}\r\n onChange={(e) => props.setStreamerId(parseInt(e.target.value, 10))}\r\n disabled={loading || !streamList || streamList.length <= 0}\r\n >\r\n {streamList.length > 0 &&\r\n streamList.map((s, idx) => (\r\n <option key={s.id} value={s.id}>\r\n {s.channelName}\r\n </option>\r\n ))}\r\n </Input>\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Col, FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\ninterface EventEditorTitleProps {\r\n title: string\r\n setTitle: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: EventEditorTitleProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup row>\r\n <Label for='title' sm={2}>\r\n Title\r\n </Label>\r\n <Col sm={10}>\r\n <Input name='title' id='title' value={props.title} onChange={(e) => props.setTitle(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { navigateToReturnUrl } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext } from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { DoomCentralEventsClient, EventRegion, UpdateDoomCentralEventCommand } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface SubmitEditEventButtonProps {\r\n eventId: number\r\n eventTitle: string\r\n post: string\r\n publish: boolean\r\n region: EventRegion\r\n streamerId?: number\r\n start: string\r\n end: string\r\n loading: boolean\r\n setLoading: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: SubmitEditEventButtonProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const submitEditEvent = async () => {\r\n props.setLoading(true)\r\n try {\r\n let client = new DoomCentralEventsClient()\r\n const command = new UpdateDoomCentralEventCommand()\r\n command.eventId = props.eventId\r\n command.eventName = props.eventTitle\r\n command.eventPost = props.post\r\n command.eventRegion = props.region\r\n command.eventStartDateTime = new Date(new Date(props.start).toISOString())\r\n command.eventEndDateTime = new Date(new Date(props.end).toISOString())\r\n command.eventStreamerId = props.streamerId\r\n command.published = props.publish\r\n const response = await client.update(props.eventId, command).then((response) => response as number)\r\n await navigateToReturnUrl(`/event/${response}`)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n props.setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button disabled={props.eventId <= 0 || !props.eventTitle || !props.post || !props.region || !props.start || !props.end} onClick={(e) => submitEditEvent()}>\r\n Submit Event\r\n </Button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { FormatUTCISOToLocalISO } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport useQueryParam from '../../hooks/useQueryParam'\r\nimport { DoomCentralEventsClient, EventRegion, IRawEventPostVm, ISidebarVm, SidebarClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport EventEditorBoxContainer from '../eventeditor/EventEditorBoxContainer'\r\nimport EventEditorEndDate from '../eventeditor/EventEditorEndDate'\r\nimport EventEditorPublish from '../eventeditor/EventEditorPublish'\r\nimport EventEditorRegionOptions from '../eventeditor/EventEditorRegionOptions'\r\nimport EventEditorStartDate from '../eventeditor/EventEditorStartDate'\r\nimport EventEditorStreamer from '../eventeditor/EventEditorStreamer'\r\nimport EventEditorTitle from '../eventeditor/EventEditorTitle'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport SubmitEditEventButton from './SubmitEditEventButton'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [region, setRegion] = useState<EventRegion>(EventRegion.Global)\r\n const [title, setTitle] = useState<string>('')\r\n const [post, setPost] = useState<string>('')\r\n const [streamerId, setStreamerId] = useState<number>(0)\r\n const [sidebarData, setSidebarData] = useState<ISidebarVm>()\r\n const [start, setStart] = useState<string>('')\r\n const [end, setEnd] = useState<string>('')\r\n const [publish, setPublish] = useState<boolean>(false)\r\n\r\n const [eventId, setEventId] = useQueryParam('eventId', '')\r\n\r\n // Initial load for the thread page.\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new SidebarClient()\r\n const response = await client.getSidebars().then((response) => response.toJSON() as Promise<ISidebarVm>)\r\n setSidebarData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n // Load details for every change to eventId\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n if (parseInt(eventId ?? '0') > 0) {\r\n let client = new DoomCentralEventsClient()\r\n const response = await client.getRawEventDataById(parseInt(eventId ?? '0')).then((response) => response.toJSON() as Promise<IRawEventPostVm>)\r\n setPost(response.eventDetails.content)\r\n setTitle(response.eventDetails.title)\r\n setPublish(response.eventDetails.published)\r\n setRegion(response.eventDetails.eventRegion)\r\n setStreamerId(response.eventDetails.streamerId)\r\n setStart(FormatUTCISOToLocalISO(new Date(response.eventDetails.eventStartDate)))\r\n setEnd(FormatUTCISOToLocalISO(new Date(response.eventDetails.eventEndDate)))\r\n }\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [eventId])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title='Doom Central - Edit Event' />\r\n <Sidebars loading={loading} newsItems={sidebarData?.newsItems} recentThreads={sidebarData?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n <Row>\r\n <Col lg={8}>\r\n <EventEditorRegionOptions region={region} setRegion={setRegion} />\r\n <EventEditorTitle title={title} setTitle={setTitle} />\r\n <EventEditorStartDate startDate={start} setStartDate={setStart} />\r\n <EventEditorEndDate endDate={end} setEndDate={setEnd} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <EventEditorBoxContainer post={post} setPost={setPost} />\r\n <EventEditorStreamer streamerId={streamerId} setStreamerId={setStreamerId} />\r\n <EventEditorPublish publish={publish} setPublish={setPublish} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <SubmitEditEventButton\r\n eventId={parseInt(eventId ?? '0')}\r\n loading={loading}\r\n setLoading={setLoading}\r\n eventTitle={title}\r\n post={post}\r\n publish={publish}\r\n streamerId={streamerId}\r\n region={region}\r\n start={start}\r\n end={end}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { EventsPageMode } from './EventListing'\r\n\r\ninterface EventAdminProps {\r\n mode: EventsPageMode\r\n setMode: React.Dispatch<React.SetStateAction<EventsPageMode>>\r\n}\r\n\r\nexport default (props: EventAdminProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex my-2'>\r\n <Button color='primary' className='me-2' onClick={(e) => props.setMode(EventsPageMode.AllEvents)} active={props.mode === EventsPageMode.AllEvents}>\r\n All Events\r\n </Button>\r\n <Button color='primary' className='me-2' onClick={(e) => props.setMode(EventsPageMode.MyEvents)} active={props.mode === EventsPageMode.MyEvents}>\r\n My Events\r\n </Button>\r\n <NavLink className='ms-auto' exact to={'/newevent'}>\r\n <Button color='primary'>New Event</Button>\r\n </NavLink>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","export const countries = [\r\n { name: 'Afghanistan', dial_code: '+93', code: 'AF', flag: '🇦🇫' },\r\n { name: 'Åland Islands', dial_code: '+358', code: 'AX', flag: '🇦🇽' },\r\n { name: 'Albania', dial_code: '+355', code: 'AL', flag: '🇦🇱' },\r\n { name: 'Algeria', dial_code: '+213', code: 'DZ', flag: '🇩🇿' },\r\n {\r\n name: 'American Samoa',\r\n dial_code: '+1684',\r\n code: 'AS',\r\n flag: '🇺🇸',\r\n },\r\n { name: 'Andorra', dial_code: '+376', code: 'AD', flag: '🇦🇩' },\r\n { name: 'Angola', dial_code: '+244', code: 'AO', flag: '🇦🇴' },\r\n { name: 'Anguilla', dial_code: '+1264', code: 'AI', flag: '🇦🇮' },\r\n { name: 'Antarctica', dial_code: '+672', code: 'AQ', flag: '🇦🇶' },\r\n {\r\n name: 'Antigua and Barbuda',\r\n dial_code: '+1268',\r\n code: 'AG',\r\n flag: '🇦🇬',\r\n },\r\n { name: 'Argentina', dial_code: '+54', code: 'AR', flag: '🇦🇷' },\r\n { name: 'Armenia', dial_code: '+374', code: 'AM', flag: '🇦🇲' },\r\n { name: 'Aruba', dial_code: '+297', code: 'AW', flag: '🇦🇼' },\r\n { name: 'Australia', dial_code: '+61', code: 'AU', flag: '🇦🇺' },\r\n { name: 'Austria', dial_code: '+43', code: 'AT', flag: '🇦🇹' },\r\n { name: 'Azerbaijan', dial_code: '+994', code: 'AZ', flag: '🇦🇿' },\r\n { name: 'Bahamas', dial_code: '+1242', code: 'BS', flag: '🇧🇸' },\r\n { name: 'Bahrain', dial_code: '+973', code: 'BH', flag: '🇧🇸' },\r\n { name: 'Bangladesh', dial_code: '+880', code: 'BD', flag: '🇧🇩' },\r\n { name: 'Barbados', dial_code: '+1246', code: 'BB', flag: '🇧🇧' },\r\n { name: 'Belarus', dial_code: '+375', code: 'BY', flag: '🇧🇾' },\r\n { name: 'Belgium', dial_code: '+32', code: 'BE', flag: '🇧🇪' },\r\n { name: 'Belize', dial_code: '+501', code: 'BZ', flag: '🇧🇿' },\r\n { name: 'Benin', dial_code: '+229', code: 'BJ', flag: '🇧🇯' },\r\n { name: 'Bermuda', dial_code: '+1441', code: 'BM', flag: '🇧🇲' },\r\n { name: 'Bhutan', dial_code: '+975', code: 'BT', flag: '🇧🇹' },\r\n {\r\n name: 'Bolivia, Plurinational State of bolivia',\r\n dial_code: '+591',\r\n code: 'BO',\r\n flag: '🇧🇴',\r\n },\r\n {\r\n name: 'Bosnia and Herzegovina',\r\n dial_code: '+387',\r\n code: 'BA',\r\n flag: '🇧🇦',\r\n },\r\n { name: 'Botswana', dial_code: '+267', code: 'BW', flag: '🇧🇼' },\r\n { name: 'Bouvet Island', dial_code: '+47', code: 'BV', flag: '🏳' },\r\n { name: 'Brazil', dial_code: '+55', code: 'BR', flag: '🇧🇷' },\r\n {\r\n name: 'British Indian Ocean Territory',\r\n dial_code: '+246',\r\n code: 'IO',\r\n flag: '🇮🇴',\r\n },\r\n {\r\n name: 'Brunei Darussalam',\r\n dial_code: '+673',\r\n code: 'BN',\r\n flag: '🇧🇳',\r\n },\r\n { name: 'Bulgaria', dial_code: '+359', code: 'BG', flag: '🇧🇬' },\r\n { name: 'Burkina Faso', dial_code: '+226', code: 'BF', flag: '🇧🇫' },\r\n { name: 'Burundi', dial_code: '+257', code: 'BI', flag: '🇧🇮' },\r\n { name: 'Cambodia', dial_code: '+855', code: 'KH', flag: '🇰🇭' },\r\n { name: 'Cameroon', dial_code: '+237', code: 'CM', flag: '🇨🇲' },\r\n { name: 'Canada', dial_code: '+1', code: 'CA', flag: '🇨🇦' },\r\n { name: 'Cape Verde', dial_code: '+238', code: 'CV', flag: '🇨🇻' },\r\n {\r\n name: 'Cayman Islands',\r\n dial_code: '+ 345',\r\n code: 'KY',\r\n flag: '🇰🇾',\r\n },\r\n {\r\n name: 'Central African Republic',\r\n dial_code: '+236',\r\n code: 'CF',\r\n flag: '🇨🇫',\r\n },\r\n { name: 'Chad', dial_code: '+235', code: 'TD', flag: '🇹🇩' },\r\n { name: 'Chile', dial_code: '+56', code: 'CL', flag: '🇨🇱' },\r\n { name: 'China', dial_code: '+86', code: 'CN', flag: '🇨🇳' },\r\n {\r\n name: 'Christmas Island',\r\n dial_code: '+61',\r\n code: 'CX',\r\n flag: '🇨🇽',\r\n },\r\n {\r\n name: 'Cocos (Keeling) Islands',\r\n dial_code: '+61',\r\n code: 'CC',\r\n flag: '🇨🇨',\r\n },\r\n { name: 'Colombia', dial_code: '+57', code: 'CO', flag: '🇨🇴' },\r\n { name: 'Comoros', dial_code: '+269', code: 'KM', flag: '🇰🇲' },\r\n { name: 'Congo', dial_code: '+242', code: 'CG', flag: '🇨🇬' },\r\n {\r\n name: 'Congo, The Democratic Republic of the Congo',\r\n dial_code: '+243',\r\n code: 'CD',\r\n flag: '🇨🇩',\r\n },\r\n { name: 'Cook Islands', dial_code: '+682', code: 'CK', flag: '🇨🇰' },\r\n { name: 'Costa Rica', dial_code: '+506', code: 'CR', flag: '🇨🇷' },\r\n { name: \"Cote d'Ivoire\", dial_code: '+225', code: 'CI', flag: '🇨🇮' },\r\n { name: 'Croatia', dial_code: '+385', code: 'HR', flag: '🇭🇷' },\r\n { name: 'Cuba', dial_code: '+53', code: 'CU', flag: '🇨🇺' },\r\n { name: 'Cyprus', dial_code: '+357', code: 'CY', flag: '🇨🇾' },\r\n { name: 'Czech Republic', dial_code: '+420', code: 'CZ', flag: '🇨🇿' },\r\n { name: 'Denmark', dial_code: '+45', code: 'DK', flag: '🇩🇰' },\r\n { name: 'Djibouti', dial_code: '+253', code: 'DJ', flag: '🇩🇯' },\r\n { name: 'Dominica', dial_code: '+1767', code: 'DM', flag: '🇩🇲' },\r\n {\r\n name: 'Dominican Republic',\r\n dial_code: '+1849',\r\n code: 'DO',\r\n flag: '🇨🇩',\r\n },\r\n { name: 'Ecuador', dial_code: '+593', code: 'EC', flag: '🇪🇨' },\r\n { name: 'Egypt', dial_code: '+20', code: 'EG', flag: '🇪🇬' },\r\n { name: 'El Salvador', dial_code: '+503', code: 'SV', flag: '🇸🇻' },\r\n {\r\n name: 'Equatorial Guinea',\r\n dial_code: '+240',\r\n code: 'GQ',\r\n flag: '🇬🇶',\r\n },\r\n { name: 'Eritrea', dial_code: '+291', code: 'ER', flag: '🇪🇷' },\r\n { name: 'Estonia', dial_code: '+372', code: 'EE', flag: '🇪🇪' },\r\n { name: 'Ethiopia', dial_code: '+251', code: 'ET', flag: '🇪🇹' },\r\n { name: 'European Union', dial_code: '+00', code: 'EU', flag: '🇪🇺' },\r\n {\r\n name: 'Falkland Islands (Malvinas)',\r\n dial_code: '+500',\r\n code: 'FK',\r\n flag: '🇫🇰',\r\n },\r\n { name: 'Faroe Islands', dial_code: '+298', code: 'FO', flag: '🇫🇴' },\r\n { name: 'Fiji', dial_code: '+679', code: 'FJ', flag: '🇫🇯' },\r\n { name: 'Finland', dial_code: '+358', code: 'FI', flag: '🇫🇮' },\r\n { name: 'France', dial_code: '+33', code: 'FR', flag: '🇫🇷' },\r\n { name: 'French Guiana', dial_code: '+594', code: 'GF', flag: '🇬🇫' },\r\n {\r\n name: 'French Polynesia',\r\n dial_code: '+689',\r\n code: 'PF',\r\n flag: '🇵🇫',\r\n },\r\n {\r\n name: 'French Southern Territories',\r\n dial_code: '+262',\r\n code: 'TF',\r\n flag: '🇹🇫',\r\n },\r\n { name: 'Gabon', dial_code: '+241', code: 'GA', flag: '🇬🇦' },\r\n { name: 'Gambia', dial_code: '+220', code: 'GM', flag: '🇬🇲' },\r\n { name: 'Georgia', dial_code: '+995', code: 'GE', flag: '🇬🇪' },\r\n { name: 'Germany', dial_code: '+49', code: 'DE', flag: '🇩🇪' },\r\n { name: 'Ghana', dial_code: '+233', code: 'GH', flag: '🇬🇭' },\r\n { name: 'Gibraltar', dial_code: '+350', code: 'GI', flag: '🇬🇮' },\r\n { name: 'Global', dial_code: '+000', code: 'GL', flag: '🌎' },\r\n { name: 'Greece', dial_code: '+30', code: 'GR', flag: '🇬🇷' },\r\n { name: 'Greenland', dial_code: '+299', code: 'GL', flag: '🇬🇱' },\r\n { name: 'Grenada', dial_code: '+1473', code: 'GD', flag: '🇬🇩' },\r\n { name: 'Guadeloupe', dial_code: '+590', code: 'GP', flag: '🇬🇵' },\r\n { name: 'Guam', dial_code: '+1671', code: 'GU', flag: '🇬🇺' },\r\n { name: 'Guatemala', dial_code: '+502', code: 'GT', flag: '🇬🇹' },\r\n { name: 'Guernsey', dial_code: '+44', code: 'GG', flag: '🇬🇬' },\r\n { name: 'Guinea', dial_code: '+224', code: 'GN', flag: '🇬🇳' },\r\n { name: 'Guinea-Bissau', dial_code: '+245', code: 'GW', flag: '🇬🇼' },\r\n { name: 'Guyana', dial_code: '+592', code: 'GY', flag: '🇬🇾' },\r\n { name: 'Haiti', dial_code: '+509', code: 'HT', flag: '🇭🇹' },\r\n {\r\n name: 'Heard Island and Mcdonald Islands',\r\n dial_code: '+0',\r\n code: 'HM',\r\n flag: '🏳',\r\n },\r\n {\r\n name: 'Holy See (Vatican City State)',\r\n dial_code: '+379',\r\n code: 'VA',\r\n flag: '🇻🇦',\r\n },\r\n { name: 'Honduras', dial_code: '+504', code: 'HN', flag: '🇭🇳' },\r\n { name: 'Hong Kong', dial_code: '+852', code: 'HK', flag: '🇭🇰' },\r\n { name: 'Hungary', dial_code: '+36', code: 'HU', flag: '🇭🇺' },\r\n { name: 'Iceland', dial_code: '+354', code: 'IS', flag: '🇮🇸' },\r\n { name: 'India', dial_code: '+91', code: 'IN', flag: '🇮🇳' },\r\n { name: 'Indonesia', dial_code: '+62', code: 'ID', flag: '🇮🇩' },\r\n {\r\n name: 'Iran, Islamic Republic of Persian Gulf',\r\n dial_code: '+98',\r\n code: 'IR',\r\n flag: '🇮🇷',\r\n },\r\n { name: 'Iraq', dial_code: '+964', code: 'IQ', flag: '🇮🇶' },\r\n { name: 'Ireland', dial_code: '+353', code: 'IE', flag: '🇮🇪' },\r\n { name: 'Isle of Man', dial_code: '+44', code: 'IM', flag: '🇮🇲' },\r\n { name: 'Israel', dial_code: '+972', code: 'IL', flag: '🇮🇱' },\r\n { name: 'Italy', dial_code: '+39', code: 'IT', flag: '🇮🇹' },\r\n { name: 'Jamaica', dial_code: '+1876', code: 'JM', flag: '🇯🇲' },\r\n { name: 'Japan', dial_code: '+81', code: 'JP', flag: '🇯🇵' },\r\n { name: 'Jersey', dial_code: '+44', code: 'JE', flag: '🇯🇪' },\r\n { name: 'Jordan', dial_code: '+962', code: 'JO', flag: '🇯🇴' },\r\n { name: 'Kazakhstan', dial_code: '+7', code: 'KZ', flag: '🇰🇿' },\r\n { name: 'Kenya', dial_code: '+254', code: 'KE', flag: '🇰🇪' },\r\n { name: 'Kiribati', dial_code: '+686', code: 'KI', flag: '🇰🇮' },\r\n {\r\n name: \"Korea, Democratic People's Republic of Korea\",\r\n dial_code: '+850',\r\n code: 'KP',\r\n flag: '🇰🇵',\r\n },\r\n {\r\n name: 'Korea, Republic of South Korea',\r\n dial_code: '+82',\r\n code: 'KR',\r\n flag: '🇰🇷',\r\n },\r\n { name: 'Kosovo', dial_code: '+383', code: 'XK', flag: '🇽🇰' },\r\n { name: 'Kuwait', dial_code: '+965', code: 'KW', flag: '🇰🇼' },\r\n { name: 'Kyrgyzstan', dial_code: '+996', code: 'KG', flag: '🇰🇬' },\r\n { name: 'Laos', dial_code: '+856', code: 'LA', flag: '🇱🇦' },\r\n { name: 'Latvia', dial_code: '+371', code: 'LV', flag: '🇱🇻' },\r\n { name: 'Lebanon', dial_code: '+961', code: 'LB', flag: '🇱🇧' },\r\n { name: 'Lesotho', dial_code: '+266', code: 'LS', flag: '🇱🇸' },\r\n { name: 'Liberia', dial_code: '+231', code: 'LR', flag: '🇱🇷' },\r\n {\r\n name: 'Libyan Arab Jamahiriya',\r\n dial_code: '+218',\r\n code: 'LY',\r\n flag: '🇱🇾',\r\n },\r\n { name: 'Liechtenstein', dial_code: '+423', code: 'LI', flag: '🇱🇮' },\r\n { name: 'Lithuania', dial_code: '+370', code: 'LT', flag: '🇱🇹' },\r\n { name: 'Luxembourg', dial_code: '+352', code: 'LU', flag: '🇱🇺' },\r\n { name: 'Macao', dial_code: '+853', code: 'MO', flag: '🇲🇴' },\r\n { name: 'Macedonia', dial_code: '+389', code: 'MK', flag: '🇲🇰' },\r\n { name: 'Madagascar', dial_code: '+261', code: 'MG', flag: '🇲🇬' },\r\n { name: 'Malawi', dial_code: '+265', code: 'MW', flag: '🇲🇼' },\r\n { name: 'Malaysia', dial_code: '+60', code: 'MY', flag: '🇲🇾' },\r\n { name: 'Maldives', dial_code: '+960', code: 'MV', flag: '🇲🇻' },\r\n { name: 'Mali', dial_code: '+223', code: 'ML', flag: '🇲🇱' },\r\n { name: 'Malta', dial_code: '+356', code: 'MT', flag: '🇲🇹' },\r\n {\r\n name: 'Marshall Islands',\r\n dial_code: '+692',\r\n code: 'MH',\r\n flag: '🇲🇭',\r\n },\r\n { name: 'Martinique', dial_code: '+596', code: 'MQ', flag: '🇲🇶' },\r\n { name: 'Mauritania', dial_code: '+222', code: 'MR', flag: '🇲🇷' },\r\n { name: 'Mauritius', dial_code: '+230', code: 'MU', flag: '🇲🇺' },\r\n { name: 'Mayotte', dial_code: '+262', code: 'YT', flag: '🇾🇹' },\r\n { name: 'Mexico', dial_code: '+52', code: 'MX', flag: '🇲🇽' },\r\n {\r\n name: 'Micronesia, Federated States of Micronesia',\r\n dial_code: '+691',\r\n code: 'FM',\r\n flag: '🇫🇲',\r\n },\r\n { name: 'Moldova', dial_code: '+373', code: 'MD', flag: '🇲🇩' },\r\n { name: 'Monaco', dial_code: '+377', code: 'MC', flag: '🇲🇨' },\r\n { name: 'Mongolia', dial_code: '+976', code: 'MN', flag: '🇲🇳' },\r\n { name: 'Montenegro', dial_code: '+382', code: 'ME', flag: '🇲🇪' },\r\n { name: 'Montserrat', dial_code: '+1664', code: 'MS', flag: '🇲🇸' },\r\n { name: 'Morocco', dial_code: '+212', code: 'MA', flag: '🇲🇦' },\r\n { name: 'Mozambique', dial_code: '+258', code: 'MZ', flag: '🇲🇿' },\r\n { name: 'Myanmar', dial_code: '+95', code: 'MM', flag: '🇲🇲' },\r\n { name: 'Namibia', dial_code: '+264', code: 'NA', flag: '🇳🇦' },\r\n { name: 'Nauru', dial_code: '+674', code: 'NR', flag: '🇳🇷' },\r\n { name: 'Nepal', dial_code: '+977', code: 'NP', flag: '🇳🇵' },\r\n { name: 'Netherlands', dial_code: '+31', code: 'NL', flag: '🇳🇱' },\r\n {\r\n name: 'Netherlands Antilles',\r\n dial_code: '+599',\r\n code: 'AN',\r\n flag: '🇳🇱',\r\n },\r\n { name: 'New Caledonia', dial_code: '+687', code: 'NC', flag: '🇳🇨' },\r\n { name: 'New Zealand', dial_code: '+64', code: 'NZ', flag: '🇳🇿' },\r\n { name: 'Nicaragua', dial_code: '+505', code: 'NI', flag: '🇳🇮' },\r\n { name: 'Niger', dial_code: '+227', code: 'NE', flag: '🇳🇪' },\r\n { name: 'Nigeria', dial_code: '+234', code: 'NG', flag: '🇳🇬' },\r\n { name: 'Niue', dial_code: '+683', code: 'NU', flag: '🇳🇺' },\r\n { name: 'Norfolk Island', dial_code: '+672', code: 'NF', flag: '🇳🇫' },\r\n {\r\n name: 'Northern Mariana Islands',\r\n dial_code: '+1670',\r\n code: 'MP',\r\n flag: '🏳',\r\n },\r\n { name: 'Norway', dial_code: '+47', code: 'NO', flag: '🇳🇴' },\r\n { name: 'Oman', dial_code: '+968', code: 'OM', flag: '🇴🇲' },\r\n { name: 'Pakistan', dial_code: '+92', code: 'PK', flag: '🇵🇰' },\r\n { name: 'Palau', dial_code: '+680', code: 'PW', flag: '🇵🇼' },\r\n {\r\n name: 'Palestinian Territory, Occupied',\r\n dial_code: '+970',\r\n code: 'PS',\r\n flag: '🇵🇸',\r\n },\r\n { name: 'Panama', dial_code: '+507', code: 'PA', flag: '🇵🇦' },\r\n {\r\n name: 'Papua New Guinea',\r\n dial_code: '+675',\r\n code: 'PG',\r\n flag: '🇵🇬',\r\n },\r\n { name: 'Paraguay', dial_code: '+595', code: 'PY', flag: '🇵🇾' },\r\n { name: 'Peru', dial_code: '+51', code: 'PE', flag: '🇵🇪' },\r\n { name: 'Philippines', dial_code: '+63', code: 'PH', flag: '🇵🇭' },\r\n { name: 'Pitcairn', dial_code: '+64', code: 'PN', flag: '🇵🇳' },\r\n { name: 'Poland', dial_code: '+48', code: 'PL', flag: '🇵🇱' },\r\n { name: 'Portugal', dial_code: '+351', code: 'PT', flag: '🇵🇹' },\r\n { name: 'Puerto Rico', dial_code: '+1939', code: 'PR', flag: '🇵🇷' },\r\n { name: 'Qatar', dial_code: '+974', code: 'QA', flag: '🇶🇦' },\r\n { name: 'Romania', dial_code: '+40', code: 'RO', flag: '🇷🇴' },\r\n { name: 'Russia', dial_code: '+7', code: 'RU', flag: '🇷🇺' },\r\n { name: 'Rwanda', dial_code: '+250', code: 'RW', flag: '🇷🇼' },\r\n { name: 'Reunion', dial_code: '+262', code: 'RE', flag: '🇫🇷' },\r\n {\r\n name: 'Saint Barthelemy',\r\n dial_code: '+590',\r\n code: 'BL',\r\n flag: '🇧🇱',\r\n },\r\n {\r\n name: 'Saint Helena, Ascension and Tristan Da Cunha',\r\n dial_code: '+290',\r\n code: 'SH',\r\n flag: '🇸🇭',\r\n },\r\n {\r\n name: 'Saint Kitts and Nevis',\r\n dial_code: '+1869',\r\n code: 'KN',\r\n flag: '🇰🇳',\r\n },\r\n { name: 'Saint Lucia', dial_code: '+1758', code: 'LC', flag: '🇱🇨' },\r\n { name: 'Saint Martin', dial_code: '+590', code: 'MF', flag: '🏳' },\r\n {\r\n name: 'Saint Pierre and Miquelon',\r\n dial_code: '+508',\r\n code: 'PM',\r\n flag: '🇵🇲',\r\n },\r\n {\r\n name: 'Saint Vincent and the Grenadines',\r\n dial_code: '+1784',\r\n code: 'VC',\r\n flag: '🇻🇨',\r\n },\r\n { name: 'Samoa', dial_code: '+685', code: 'WS', flag: '🇼🇸' },\r\n { name: 'San Marino', dial_code: '+378', code: 'SM', flag: '🇸🇲' },\r\n {\r\n name: 'Sao Tome and Principe',\r\n dial_code: '+239',\r\n code: 'ST',\r\n flag: '🇸🇹',\r\n },\r\n { name: 'Saudi Arabia', dial_code: '+966', code: 'SA', flag: '🇸🇦' },\r\n { name: 'Senegal', dial_code: '+221', code: 'SN', flag: '🇸🇳' },\r\n { name: 'Serbia', dial_code: '+381', code: 'RS', flag: '🇷🇸' },\r\n { name: 'Seychelles', dial_code: '+248', code: 'SC', flag: '🇸🇨' },\r\n { name: 'Sierra Leone', dial_code: '+232', code: 'SL', flag: '🇸🇱' },\r\n { name: 'Singapore', dial_code: '+65', code: 'SG', flag: '🇸🇬' },\r\n { name: 'Slovakia', dial_code: '+421', code: 'SK', flag: '🇸🇰' },\r\n { name: 'Slovenia', dial_code: '+386', code: 'SI', flag: '🇸🇮' },\r\n {\r\n name: 'Solomon Islands',\r\n dial_code: '+677',\r\n code: 'SB',\r\n flag: '🇸🇧',\r\n },\r\n { name: 'Somalia', dial_code: '+252', code: 'SO', flag: '🇸🇴' },\r\n { name: 'South Africa', dial_code: '+27', code: 'ZA', flag: '🇿🇦' },\r\n { name: 'South Sudan', dial_code: '+211', code: 'SS', flag: '🇸🇸' },\r\n {\r\n name: 'South Georgia and the South Sandwich Islands',\r\n dial_code: '+500',\r\n code: 'GS',\r\n flag: '🇬🇸',\r\n },\r\n { name: 'Spain', dial_code: '+34', code: 'ES', flag: '🇪🇸' },\r\n { name: 'Sri Lanka', dial_code: '+94', code: 'LK', flag: '🇱🇰' },\r\n { name: 'Sudan', dial_code: '+249', code: 'SD', flag: '🇸🇩' },\r\n { name: 'Suriname', dial_code: '+597', code: 'SR', flag: '🇸🇷' },\r\n {\r\n name: 'Svalbard and Jan Mayen',\r\n dial_code: '+47',\r\n code: 'SJ',\r\n flag: '🇩🇰',\r\n },\r\n { name: 'Swaziland', dial_code: '+268', code: 'SZ', flag: '🇸🇿' },\r\n { name: 'Sweden', dial_code: '+46', code: 'SE', flag: '🇸🇪' },\r\n { name: 'Switzerland', dial_code: '+41', code: 'CH', flag: '🇨🇭' },\r\n {\r\n name: 'Syrian Arab Republic',\r\n dial_code: '+963',\r\n code: 'SY',\r\n flag: '🇸🇾',\r\n },\r\n { name: 'Taiwan', dial_code: '+886', code: 'TW', flag: '🇹🇼' },\r\n { name: 'Tajikistan', dial_code: '+992', code: 'TJ', flag: '🇹🇯' },\r\n {\r\n name: 'Tanzania, United Republic of Tanzania',\r\n dial_code: '+255',\r\n code: 'TZ',\r\n flag: '🇹🇿',\r\n },\r\n { name: 'Thailand', dial_code: '+66', code: 'TH', flag: '🇹🇭' },\r\n { name: 'Timor-Leste', dial_code: '+670', code: 'TL', flag: '🇹🇱' },\r\n { name: 'Togo', dial_code: '+228', code: 'TG', flag: '🇹🇬' },\r\n { name: 'Tokelau', dial_code: '+690', code: 'TK', flag: '🇹🇰' },\r\n { name: 'Tonga', dial_code: '+676', code: 'TO', flag: '🇹🇴' },\r\n {\r\n name: 'Trinidad and Tobago',\r\n dial_code: '+1868',\r\n code: 'TT',\r\n flag: '🇹🇹',\r\n },\r\n { name: 'Tunisia', dial_code: '+216', code: 'TN', flag: '🇹🇳' },\r\n { name: 'Turkey', dial_code: '+90', code: 'TR', flag: '🇹🇷' },\r\n { name: 'Turkmenistan', dial_code: '+993', code: 'TM', flag: '🇹🇲' },\r\n {\r\n name: 'Turks and Caicos Islands',\r\n dial_code: '+1649',\r\n code: 'TC',\r\n flag: '🇹🇨',\r\n },\r\n { name: 'Tuvalu', dial_code: '+688', code: 'TV', flag: '🇹🇻' },\r\n { name: 'Uganda', dial_code: '+256', code: 'UG', flag: '🇺🇬' },\r\n { name: 'Ukraine', dial_code: '+380', code: 'UA', flag: '🇺🇦' },\r\n {\r\n name: 'United Arab Emirates',\r\n dial_code: '+971',\r\n code: 'AE',\r\n flag: '🇦🇪',\r\n },\r\n { name: 'United Kingdom', dial_code: '+44', code: 'GB', flag: '🇬🇧' },\r\n { name: 'United States', dial_code: '+1', code: 'US', flag: '🇺🇸' },\r\n { name: 'Uruguay', dial_code: '+598', code: 'UY', flag: '🇺🇾' },\r\n { name: 'Uzbekistan', dial_code: '+998', code: 'UZ', flag: '🇺🇿' },\r\n { name: 'Vanuatu', dial_code: '+678', code: 'VU', flag: '🇻🇺' },\r\n {\r\n name: 'Venezuela, Bolivarian Republic of Venezuela',\r\n dial_code: '+58',\r\n code: 'VE',\r\n flag: '🇻🇪',\r\n },\r\n { name: 'Vietnam', dial_code: '+84', code: 'VN', flag: '🇻🇳' },\r\n {\r\n name: 'Virgin Islands, British',\r\n dial_code: '+1284',\r\n code: 'VG',\r\n flag: '🇻🇬',\r\n },\r\n {\r\n name: 'Virgin Islands, U.S.',\r\n dial_code: '+1340',\r\n code: 'VI',\r\n flag: '🇻🇮',\r\n },\r\n {\r\n name: 'Wallis and Futuna',\r\n dial_code: '+681',\r\n code: 'WF',\r\n flag: '🇼🇫',\r\n },\r\n { name: 'Yemen', dial_code: '+967', code: 'YE', flag: '🇾🇪' },\r\n { name: 'Zambia', dial_code: '+260', code: 'ZM', flag: '🇿🇲' },\r\n { name: 'Zimbabwe', dial_code: '+263', code: 'ZW', flag: '🇿🇼' },\r\n]\r\n","import { countries } from '../countries'\r\nimport { EventRegion } from '../lib/DoomCentral'\r\n\r\nexport const getFlagForEventRegion = (region: EventRegion): string => {\r\n if (region === EventRegion.Global) {\r\n return countries.find((f) => f.code == 'GL').flag\r\n } else if (region === EventRegion.Americas) {\r\n return countries.find((f) => f.code == 'US').flag\r\n } else if (region === EventRegion.Europe) {\r\n return countries.find((f) => f.code == 'EU').flag\r\n } else if (region === EventRegion.Asia) {\r\n return countries.find((f) => f.code == 'CN').flag\r\n } else if (region === EventRegion.Australia) {\r\n return countries.find((f) => f.code == 'AU').flag\r\n }\r\n return countries.find((f) => f.code == 'GL').flag\r\n}\r\n\r\nexport const getEventDate = (startDate: Date, endDate: Date): string => {\r\n const today = new Date()\r\n\r\n if (today > endDate) {\r\n return 'Completed'\r\n } else if (startDate < today && endDate > today) {\r\n return 'Live now!'\r\n } else {\r\n return 'Ends on ' + new Date(endDate).toLocaleDateString()\r\n }\r\n}\r\n\r\nexport const getEventTime = (startDate: Date, endDate: Date): string => {\r\n const today = new Date()\r\n\r\n if (today > endDate) {\r\n return 'Completed'\r\n } else if (startDate < today && endDate > today) {\r\n return 'Live until ' + new Date(endDate).toLocaleTimeString()\r\n } else {\r\n return new Date(endDate).toLocaleTimeString()\r\n }\r\n}\r\n","import { containsDuplicate } from '@/utils/helpers'\r\nimport { useEffect, useState } from 'react'\r\nimport { AuthContextProps } from 'react-oidc-context'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Table } from 'reactstrap'\r\n\r\nimport { IEventItemDto } from '../../lib/DoomCentral'\r\nimport DoomCentralEventRoles from '../../lib/DoomCentralEventRoles'\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport { getEventDate, getEventTime, getFlagForEventRegion } from '../../utils/EventHelpers'\r\n\r\ninterface EventListProps {\r\n events: IEventItemDto[]\r\n auth: AuthContextProps\r\n}\r\n\r\nexport default (props: EventListProps) => {\r\n const [isOrganizer, setIsOrganizer] = useState<boolean>(false)\r\n const [isGlobalAdmin, setIsGlobalAdmin] = useState<boolean>(false)\r\n\r\n useEffect(() => {\r\n if (\r\n props.auth.user &&\r\n (props.auth.user?.profile.role as string[]) &&\r\n containsDuplicate(\r\n [DoomCentralEventRoles.GlobalEventAdministrator, DoomCentralEventRoles.EventOrganizer, DoomCentralRoles.GlobalAdministrator],\r\n props.auth.user?.profile.role as string[],\r\n )\r\n ) {\r\n setIsOrganizer(true)\r\n } else {\r\n setIsOrganizer(false)\r\n }\r\n }, [props.auth])\r\n\r\n useEffect(() => {\r\n if (\r\n props.auth.user &&\r\n (props.auth.user?.profile.role as string[]) &&\r\n containsDuplicate([DoomCentralEventRoles.GlobalEventAdministrator, DoomCentralRoles.GlobalAdministrator], props.auth.user?.profile.role as string[])\r\n ) {\r\n setIsGlobalAdmin(true)\r\n } else {\r\n setIsGlobalAdmin(false)\r\n }\r\n }, [props.auth])\r\n return (\r\n <>\r\n {props.events && props.events.length > 0 ? (\r\n <Table>\r\n <thead>\r\n <tr>\r\n <th>Title</th>\r\n <th>Date</th>\r\n <th>Time</th>\r\n <th>Region</th>\r\n {((isOrganizer || isGlobalAdmin) && <th>Edit</th>) || <th></th>}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {props.events.map((s, idx) => (\r\n <tr key={s.eventId}>\r\n <td>\r\n <NavLink to={`/event/${s.eventId}`}>{s.title}</NavLink>\r\n </td>\r\n <td>{getEventDate(s.eventStartDate, s.eventEndDate)}</td>\r\n <td>{getEventTime(s.eventStartDate, s.eventEndDate)}</td>\r\n <td className='region'>{getFlagForEventRegion(s.eventRegion)}</td>\r\n {((isOrganizer && props.auth.user && props.auth.user.profile.sid === s.organizerId) || isGlobalAdmin) && (\r\n <td>\r\n <NavLink to={`/editevent?eventId=${s.eventId}`}>\r\n <i className='bi bi-pencil-square'></i>\r\n </NavLink>\r\n </td>\r\n )}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </Table>\r\n ) : (\r\n <div>No events</div>\r\n )}\r\n </>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Input, Label } from 'reactstrap'\r\n\r\ninterface EventOptionsProps {\r\n pageSize: number\r\n setPageSize: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: EventOptionsProps) => {\r\n return (\r\n <div className='d-flex align-items-center me-3'>\r\n <Label for='pageSizeSelectField' className='me-1' style={{ textWrap: 'nowrap' }}>\r\n Page size\r\n </Label>\r\n <Input id='pageSizeSelectField' type='select' value={props.pageSize} onChange={(e) => props.setPageSize(parseInt(e.target.value, 10))}>\r\n <option value={10}>10</option>\r\n <option value={25}>25</option>\r\n <option value={50}>50</option>\r\n <option value={100}>100</option>\r\n </Input>\r\n </div>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport ReactPaginate from 'react-paginate'\r\n\r\ninterface EventPaginationProps {\r\n pageCount: number\r\n setPageChange: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: EventPaginationProps) => {\r\n return (\r\n <ReactPaginate\r\n previousLabel={'← Previous'}\r\n nextLabel={'Next →'}\r\n pageCount={props.pageCount}\r\n onPageChange={(p) => props.setPageChange(p.selected)}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n containerClassName={'pagination mb-0'}\r\n previousLinkClassName={'page-link'}\r\n nextLinkClassName={'page-link'}\r\n disabledClassName={'page-item disabled'}\r\n activeClassName={'page-item active'}\r\n activeLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n previousClassName={'page-item'}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n renderOnZeroPageCount={null}\r\n />\r\n )\r\n}\r\n","import { containsDuplicate } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { Card, CardBody, CardTitle } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { DoomCentralEventsClient, IEventsPageVm } from '../../lib/DoomCentral'\r\nimport DoomCentralEventRoles from '../../lib/DoomCentralEventRoles'\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport EventAdmin from './EventAdmin'\r\nimport EventList from './EventList'\r\nimport EventOptions from './EventOptions'\r\nimport EventPagination from './EventPagination'\r\n\r\nexport enum EventsPageMode {\r\n AllEvents = 0,\r\n MyEvents = 1,\r\n}\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n const auth = useAuth()\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [isAdmin, setIsAdmin] = useState<boolean>(false)\r\n const [upcomingEventsPageNumber, setUpcomingEventsPageNumber] = useState<number>(1)\r\n const [upcomingEventsPageSize, setUpcomingEventsPageSize] = useState<number>(10)\r\n const [pastEventsPageNumber, setPastEventPageNumber] = useState<number>(1)\r\n const [pastEventsPageNumberPageSize, setPastEventsPageNumberPageSize] = useState<number>(10)\r\n const [mode, setMode] = useState<EventsPageMode>(EventsPageMode.AllEvents)\r\n\r\n const [eventListingData, setEventListingData] = useState<IEventsPageVm>()\r\n\r\n useEffect(() => {\r\n if (\r\n auth.user &&\r\n (auth.user?.profile.role as string[]) &&\r\n containsDuplicate(\r\n [DoomCentralEventRoles.GlobalEventAdministrator, DoomCentralEventRoles.EventOrganizer, DoomCentralRoles.GlobalAdministrator],\r\n auth.user?.profile.role as string[],\r\n )\r\n ) {\r\n setIsAdmin(true)\r\n } else {\r\n setIsAdmin(false)\r\n }\r\n }, [auth])\r\n\r\n useEffect(() => {\r\n if (mode === EventsPageMode.AllEvents) {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new DoomCentralEventsClient()\r\n const response = await client\r\n .getEvents(upcomingEventsPageNumber, upcomingEventsPageSize, pastEventsPageNumber, pastEventsPageNumberPageSize)\r\n .then((response) => response.toJSON() as Promise<IEventsPageVm>)\r\n setEventListingData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n } else if (mode === EventsPageMode.MyEvents) {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new DoomCentralEventsClient()\r\n const response = await client\r\n .getEvents(upcomingEventsPageNumber, upcomingEventsPageSize, pastEventsPageNumber, pastEventsPageNumberPageSize)\r\n .then((response) => response.toJSON() as Promise<IEventsPageVm>)\r\n setEventListingData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }\r\n }, [upcomingEventsPageNumber, upcomingEventsPageSize, pastEventsPageNumber, pastEventsPageNumberPageSize, mode])\r\n\r\n return (\r\n <>\r\n <HelmetPages title='Doom Central - Events' />\r\n <div>\r\n {isAdmin && <EventAdmin mode={mode} setMode={setMode} />}\r\n {eventListingData?.liveEventItems?.eventList.length > 0 && (\r\n <>\r\n <h2>Events Live Now!</h2>\r\n <EventList events={eventListingData?.liveEventItems?.eventList} auth={auth} />\r\n </>\r\n )}\r\n <Card className='mb-3'>\r\n <CardBody>\r\n <div className='d-flex flex-row justify-content-between mb-3'>\r\n <div className='flex-grow'>\r\n <CardTitle tag='h5'>Upcoming Events</CardTitle>\r\n </div>\r\n <div className='d-flex flex-row justify-content-end align-items-center'>\r\n <EventOptions pageSize={upcomingEventsPageSize} setPageSize={setUpcomingEventsPageSize} />\r\n <EventPagination pageCount={eventListingData?.upcomingEventItems?.totalPages ?? 0} setPageChange={setUpcomingEventsPageNumber} />\r\n </div>\r\n </div>\r\n <EventList events={eventListingData?.upcomingEventItems?.eventList} auth={auth} />\r\n </CardBody>\r\n </Card>\r\n <Card>\r\n <CardBody>\r\n <div className='d-flex flex-row justify-content-between mb-3'>\r\n <div className='flex-row'>\r\n <CardTitle tag='h5'>Past Events</CardTitle>\r\n </div>\r\n <div className='d-flex flex-row justify-content-end align-items-center'>\r\n <EventOptions pageSize={pastEventsPageNumberPageSize} setPageSize={setPastEventsPageNumberPageSize} />\r\n <EventPagination pageCount={eventListingData?.pastEventItems?.totalPages ?? 0} setPageChange={setPastEventPageNumber} />\r\n </div>\r\n </div>\r\n <EventList events={eventListingData?.pastEventItems?.eventList} auth={auth} />\r\n </CardBody>\r\n </Card>\r\n </div>\r\n </>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport ReactPaginate from 'react-paginate'\r\n\r\ninterface PostPaginationProps {\r\n pageCount: number\r\n currentPage: number\r\n setPageChange: (page: number, displayOnly: boolean) => void\r\n}\r\n\r\nexport default (props: PostPaginationProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex justify-content-end'>\r\n <ReactPaginate\r\n forcePage={props.currentPage}\r\n previousLabel={'←'}\r\n nextLabel={'→'}\r\n pageCount={props.pageCount}\r\n onPageChange={(p) => props.setPageChange(p.selected + 1, false)}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n renderOnZeroPageCount={null}\r\n containerClassName={'pagination'}\r\n previousLinkClassName={'page-link'}\r\n nextLinkClassName={'page-link'}\r\n disabledClassName={'page-item disabled'}\r\n activeClassName={'page-item active'}\r\n activeLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n previousClassName={'page-item'}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n />\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\n\r\nimport NewPostBox from '../newpostbox/NewPostBox'\r\n\r\ninterface NewPostBoxContainerProps {\r\n post: string\r\n setPost: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: NewPostBoxContainerProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='mt-2'>\r\n <NewPostBox post={props.post} setPost={props.setPost} />\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","function _taggedTemplateLiteral(e, t) {\n return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n raw: {\n value: Object.freeze(t)\n }\n }));\n}\nexport { _taggedTemplateLiteral as default };","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export const COMMON_MIME_TYPES = new Map([\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n ['aac', 'audio/aac'],\n ['abw', 'application/x-abiword'],\n ['arc', 'application/x-freearc'],\n ['avif', 'image/avif'],\n ['avi', 'video/x-msvideo'],\n ['azw', 'application/vnd.amazon.ebook'],\n ['bin', 'application/octet-stream'],\n ['bmp', 'image/bmp'],\n ['bz', 'application/x-bzip'],\n ['bz2', 'application/x-bzip2'],\n ['cda', 'application/x-cdf'],\n ['csh', 'application/x-csh'],\n ['css', 'text/css'],\n ['csv', 'text/csv'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],\n ['eot', 'application/vnd.ms-fontobject'],\n ['epub', 'application/epub+zip'],\n ['gz', 'application/gzip'],\n ['gif', 'image/gif'],\n ['heic', 'image/heic'],\n ['heif', 'image/heif'],\n ['htm', 'text/html'],\n ['html', 'text/html'],\n ['ico', 'image/vnd.microsoft.icon'],\n ['ics', 'text/calendar'],\n ['jar', 'application/java-archive'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['js', 'text/javascript'],\n ['json', 'application/json'],\n ['jsonld', 'application/ld+json'],\n ['mid', 'audio/midi'],\n ['midi', 'audio/midi'],\n ['mjs', 'text/javascript'],\n ['mp3', 'audio/mpeg'],\n ['mp4', 'video/mp4'],\n ['mpeg', 'video/mpeg'],\n ['mpkg', 'application/vnd.apple.installer+xml'],\n ['odp', 'application/vnd.oasis.opendocument.presentation'],\n ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],\n ['odt', 'application/vnd.oasis.opendocument.text'],\n ['oga', 'audio/ogg'],\n ['ogv', 'video/ogg'],\n ['ogx', 'application/ogg'],\n ['opus', 'audio/opus'],\n ['otf', 'font/otf'],\n ['png', 'image/png'],\n ['pdf', 'application/pdf'],\n ['php', 'application/x-httpd-php'],\n ['ppt', 'application/vnd.ms-powerpoint'],\n ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],\n ['rar', 'application/vnd.rar'],\n ['rtf', 'application/rtf'],\n ['sh', 'application/x-sh'],\n ['svg', 'image/svg+xml'],\n ['swf', 'application/x-shockwave-flash'],\n ['tar', 'application/x-tar'],\n ['tif', 'image/tiff'],\n ['tiff', 'image/tiff'],\n ['ts', 'video/mp2t'],\n ['ttf', 'font/ttf'],\n ['txt', 'text/plain'],\n ['vsd', 'application/vnd.visio'],\n ['wav', 'audio/wav'],\n ['weba', 'audio/webm'],\n ['webm', 'video/webm'],\n ['webp', 'image/webp'],\n ['woff', 'font/woff'],\n ['woff2', 'font/woff2'],\n ['xhtml', 'application/xhtml+xml'],\n ['xls', 'application/vnd.ms-excel'],\n ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],\n ['xml', 'application/xml'],\n ['xul', 'application/vnd.mozilla.xul+xml'],\n ['zip', 'application/zip'],\n ['7z', 'application/x-7z-compressed'],\n\n // Others\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['msg', 'application/vnd.ms-outlook']\n]);\n\n\nexport function toFileWithPath(file: FileWithPath, path?: string): FileWithPath {\n const f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n const {webkitRelativePath} = file;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n\n return f;\n}\n\nexport interface FileWithPath extends File {\n readonly path?: string;\n}\n\nfunction withMimeType(file: FileWithPath) {\n const {name} = file;\n const hasExtension = name && name.lastIndexOf('.') !== -1;\n\n if (hasExtension && !file.type) {\n const ext = name.split('.')\n .pop()!.toLowerCase();\n const type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n\n return file;\n}\n","import {FileWithPath, toFileWithPath} from './file';\n\n\nconst FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store', // macOs\n 'Thumbs.db' // Windows\n];\n\n\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport async function fromEvent(evt: Event | any): Promise<(FileWithPath | DataTransferItem)[]> {\n if (isObject<DragEvent>(evt) && isDataTransfer(evt.dataTransfer)) {\n return getDataTransferFiles(evt.dataTransfer, evt.type);\n } else if (isChangeEvt(evt)) {\n return getInputFiles(evt);\n } else if (Array.isArray(evt) && evt.every(item => 'getFile' in item && typeof item.getFile === 'function')) {\n return getFsHandleFiles(evt)\n }\n return [];\n}\n\nfunction isDataTransfer(value: any): value is DataTransfer {\n return isObject(value);\n}\n\nfunction isChangeEvt(value: any): value is Event {\n return isObject<Event>(value) && isObject(value.target);\n}\n\nfunction isObject<T>(v: any): v is T {\n return typeof v === 'object' && v !== null\n}\n\nfunction getInputFiles(evt: Event) {\n return fromList<FileWithPath>((evt.target as HTMLInputElement).files).map(file => toFileWithPath(file));\n}\n\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nasync function getFsHandleFiles(handles: any[]) {\n const files = await Promise.all(handles.map(h => h.getFile()));\n return files.map(file => toFileWithPath(file));\n}\n\n\nasync function getDataTransferFiles(dt: DataTransfer, type: string) {\n // IE11 does not support dataTransfer.items\n // See https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n if (dt.items) {\n const items = fromList<DataTransferItem>(dt.items)\n .filter(item => item.kind === 'file');\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return items;\n }\n const files = await Promise.all(items.map(toFilePromises));\n return noIgnoredFiles(flatten<FileWithPath>(files));\n }\n\n return noIgnoredFiles(fromList<FileWithPath>(dt.files)\n .map(file => toFileWithPath(file)));\n}\n\nfunction noIgnoredFiles(files: FileWithPath[]) {\n return files.filter(file => FILES_TO_IGNORE.indexOf(file.name) === -1);\n}\n\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList<T>(items: DataTransferItemList | FileList | null): T[] {\n if (items === null) {\n return [];\n }\n\n const files = [];\n\n // tslint:disable: prefer-for-of\n for (let i = 0; i < items.length; i++) {\n const file = items[i];\n files.push(file);\n }\n\n return files as any;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item: DataTransferItem) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n\n const entry = item.webkitGetAsEntry();\n\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry) as any;\n }\n\n return fromDataTransferItem(item);\n}\n\nfunction flatten<T>(items: any[]): T[] {\n return items.reduce((acc, files) => [\n ...acc,\n ...(Array.isArray(files) ? flatten(files) : [files])\n ], []);\n}\n\nfunction fromDataTransferItem(item: DataTransferItem) {\n const file = item.getAsFile();\n if (!file) {\n return Promise.reject(`${item} is not a File`);\n }\n const fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nasync function fromEntry(entry: any) {\n return entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry);\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry: any) {\n const reader = entry.createReader();\n\n return new Promise<FileArray[]>((resolve, reject) => {\n const entries: Promise<FileValue[]>[] = [];\n\n function readEntries() {\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(async (batch: any[]) => {\n if (!batch.length) {\n // Done reading directory\n try {\n const files = await Promise.all(entries);\n resolve(files);\n } catch (err) {\n reject(err);\n }\n } else {\n const items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n\n // Continue reading\n readEntries();\n }\n }, (err: any) => {\n reject(err);\n });\n }\n\n readEntries();\n });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nasync function fromFileEntry(entry: any) {\n return new Promise<FileWithPath>((resolve, reject) => {\n entry.file((file: FileWithPath) => {\n const fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, (err: any) => {\n reject(err);\n });\n });\n}\n\n// Infinite type recursion\n// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540\ninterface FileArray extends Array<FileValue> {}\ntype FileValue = FileWithPath\n | FileArray[];\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from \"attr-accept\"; // Error codes\n\nexport var FILE_INVALID_TYPE = \"file-invalid-type\";\nexport var FILE_TOO_LARGE = \"file-too-large\";\nexport var FILE_TOO_SMALL = \"file-too-small\";\nexport var TOO_MANY_FILES = \"too-many-files\";\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(\", \")) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? \"byte\" : \"bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: \"Too many files\"\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === \"application/x-moz-file\" || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n *\n * @param {object} options\n * @param {File[]} options.files\n * @param {string|string[]} [options.accept]\n * @param {number} [options.minSize]\n * @param {number} [options.maxSize]\n * @param {boolean} [options.multiple]\n * @param {number} [options.maxFiles]\n * @param {(f: File) => FileError|FileError[]|null} [options.validator]\n * @returns\n */\n\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles,\n validator = _ref.validator;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n var customErrors = validator ? validator(file) : null;\n return accepted && sizeMatch && !customErrors;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === \"function\") {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== \"undefined\") {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === \"Files\" || type === \"application/x-moz-file\";\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === \"object\" && item !== null && item.kind === \"file\";\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf(\"MSIE\") !== -1 || userAgent.indexOf(\"Trident/\") !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf(\"Edge/\") !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return \"showOpenFilePicker\" in window;\n}\n/**\n * Convert the `{accept}` dropzone prop to the\n * `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n *\n * @param {AcceptProp} accept\n * @returns {{accept: string[]}[]}\n */\n\nexport function pickerOptionsFromAccept(accept) {\n if (isDefined(accept)) {\n var acceptForPicker = Object.entries(accept).filter(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n mimeType = _ref3[0],\n ext = _ref3[1];\n\n var ok = true;\n\n if (!isMIMEType(mimeType)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.\"));\n ok = false;\n }\n\n if (!Array.isArray(ext) || !ext.every(isExt)) {\n console.warn(\"Skipped \\\"\".concat(mimeType, \"\\\" because an invalid file extension was provided.\"));\n ok = false;\n }\n\n return ok;\n }).reduce(function (agg, _ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n mimeType = _ref5[0],\n ext = _ref5[1];\n\n return _objectSpread(_objectSpread({}, agg), {}, _defineProperty({}, mimeType, ext));\n }, {});\n return [{\n // description is required due to https://crbug.com/1264708\n description: \"Files\",\n accept: acceptForPicker\n }];\n }\n\n return accept;\n}\n/**\n * Convert the `{accept}` dropzone prop to an array of MIME types/extensions.\n * @param {AcceptProp} accept\n * @returns {string}\n */\n\nexport function acceptPropAsAcceptAttr(accept) {\n if (isDefined(accept)) {\n return Object.entries(accept).reduce(function (a, _ref6) {\n var _ref7 = _slicedToArray(_ref6, 2),\n mimeType = _ref7[0],\n ext = _ref7[1];\n\n return [].concat(_toConsumableArray(a), [mimeType], _toConsumableArray(ext));\n }, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these\n .filter(function (v) {\n return isMIMEType(v) || isExt(v);\n }).join(\",\");\n }\n\n return undefined;\n}\n/**\n * Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is an abort exception.\n */\n\nexport function isAbort(v) {\n return v instanceof DOMException && (v.name === \"AbortError\" || v.code === v.ABORT_ERR);\n}\n/**\n * Check if v is a security error.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.\n * @param {any} v\n * @returns {boolean} True if v is a security error.\n */\n\nexport function isSecurityError(v) {\n return v instanceof DOMException && (v.name === \"SecurityError\" || v.code === v.SECURITY_ERR);\n}\n/**\n * Check if v is a MIME type string.\n *\n * See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.\n *\n * @param {string} v\n */\n\nexport function isMIMEType(v) {\n return v === \"audio/*\" || v === \"video/*\" || v === \"image/*\" || v === \"text/*\" || /\\w+\\/[-+.\\w]+/g.test(v);\n}\n/**\n * Check if v is a file extension.\n * @param {string} v\n */\n\nexport function isExt(v) {\n return /^.*\\.[\\w]+$/.test(v);\n}\n/**\n * @typedef {Object.<string, string[]>} AcceptProp\n */\n\n/**\n * @typedef {object} FileError\n * @property {string} message\n * @property {ErrorCode|string} code\n */\n\n/**\n * @typedef {\"file-invalid-type\"|\"file-too-large\"|\"file-too-small\"|\"too-many-files\"} ErrorCode\n */","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { fromEvent } from \"file-selector\";\nimport { acceptPropAsAcceptAttr, allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, canUseFileSystemAccessAPI, isAbort, isEvtWithFiles, isIeOrEdge, isPropagationStopped, isSecurityError, onDocumentDragOver, pickerOptionsFromAccept, TOO_MANY_FILES_REJECTION } from \"./utils/index\";\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = \"Dropzone\"; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: true,\n autoFocus: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n */\n accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n\n /**\n * Set to true to focus the root element on render\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Cb for when there's some error from any of the promises.\n *\n * @param {Error} error\n */\n onError: PropTypes.func,\n\n /**\n * Custom validation function. It must return null if there's no errors.\n * @param {File} file\n * @returns {FileError|FileError[]|null}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state.\n *\n * @typedef {object} DropzoneState\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\n/**\n * An object with the dropzone methods.\n *\n * @typedef {object} DropzoneMethods\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {import(\"./utils\").AcceptProp} [props.accept] Set accepted file types.\n * Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {boolean} autoFocus Set to true to auto focus the root element.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n * @param {(error: Error) => void} [props.onError]\n *\n * @returns {DropzoneState & DropzoneMethods}\n */\n\nexport function useDropzone() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n accept = _defaultProps$props.accept,\n disabled = _defaultProps$props.disabled,\n getFilesFromEvent = _defaultProps$props.getFilesFromEvent,\n maxSize = _defaultProps$props.maxSize,\n minSize = _defaultProps$props.minSize,\n multiple = _defaultProps$props.multiple,\n maxFiles = _defaultProps$props.maxFiles,\n onDragEnter = _defaultProps$props.onDragEnter,\n onDragLeave = _defaultProps$props.onDragLeave,\n onDragOver = _defaultProps$props.onDragOver,\n onDrop = _defaultProps$props.onDrop,\n onDropAccepted = _defaultProps$props.onDropAccepted,\n onDropRejected = _defaultProps$props.onDropRejected,\n onFileDialogCancel = _defaultProps$props.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$props.onFileDialogOpen,\n useFsAccessApi = _defaultProps$props.useFsAccessApi,\n autoFocus = _defaultProps$props.autoFocus,\n preventDropOnDocument = _defaultProps$props.preventDropOnDocument,\n noClick = _defaultProps$props.noClick,\n noKeyboard = _defaultProps$props.noKeyboard,\n noDrag = _defaultProps$props.noDrag,\n noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,\n onError = _defaultProps$props.onError,\n validator = _defaultProps$props.validator;\n\n var acceptAttr = useMemo(function () {\n return acceptPropAsAcceptAttr(accept);\n }, [accept]);\n var pickerTypes = useMemo(function () {\n return pickerOptionsFromAccept(accept);\n }, [accept]);\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === \"function\" ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === \"function\" ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n /**\n * @constant\n * @type {React.MutableRefObject<HTMLElement>}\n */\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive;\n var fsAccessApiWorksRef = useRef(typeof window !== \"undefined\" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (!fsAccessApiWorksRef.current && isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: \"closeDialog\"\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener(\"focus\", onWindowFocus, false);\n return function () {\n window.removeEventListener(\"focus\", onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener(\"dragover\", onDocumentDragOver, false);\n document.addEventListener(\"drop\", onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener(\"dragover\", onDocumentDragOver);\n document.removeEventListener(\"drop\", onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true\n\n useEffect(function () {\n if (!disabled && autoFocus && rootRef.current) {\n rootRef.current.focus();\n }\n\n return function () {};\n }, [rootRef, autoFocus, disabled]);\n var onErrCb = useCallback(function (e) {\n if (onError) {\n onError(e);\n } else {\n // Let the user know something's gone wrong if they haven't provided the onError cb.\n console.error(e);\n }\n }, [onError]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var fileCount = files.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: files,\n accept: acceptAttr,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles,\n validator: validator\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n dispatch({\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isDragActive: true,\n type: \"setDraggedFiles\"\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n }, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = \"copy\";\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n type: \"setDraggedFiles\",\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, acceptAttr),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: \"setFiles\"\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n setFiles(files, event);\n }).catch(function (e) {\n return onErrCb(e);\n });\n }\n\n dispatch({\n type: \"reset\"\n });\n }, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n // No point to use FS access APIs if context is not secure\n // https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection\n if (fsAccessApiWorksRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: pickerTypes\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n setFiles(files, null);\n dispatch({\n type: \"closeDialog\"\n });\n }).catch(function (e) {\n // AbortError means the user canceled\n if (isAbort(e)) {\n onFileDialogCancelCb(e);\n dispatch({\n type: \"closeDialog\"\n });\n } else if (isSecurityError(e)) {\n fsAccessApiWorksRef.current = false; // CORS, so cannot use this API\n // Try using the input\n\n if (inputRef.current) {\n inputRef.current.value = null;\n inputRef.current.click();\n } else {\n onErrCb(new Error(\"Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided.\"));\n }\n } else {\n onErrCb(e);\n }\n });\n return;\n }\n\n if (inputRef.current) {\n dispatch({\n type: \"openDialog\"\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.key === \" \" || event.key === \"Enter\" || event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: \"focus\"\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: \"blur\"\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [noClick, openFileDialog]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? \"ref\" : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === \"string\" && role !== \"\" ? role : \"presentation\"\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? \"ref\" : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: acceptAttr,\n multiple: multiple,\n type: \"file\",\n style: {\n display: \"none\"\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n/**\n * @param {DropzoneState} state\n * @param {{type: string} & DropzoneState} action\n * @returns {DropzoneState}\n */\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case \"focus\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case \"blur\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case \"openDialog\":\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n\n case \"closeDialog\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case \"setDraggedFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragActive: action.isDragActive,\n isDragAccept: action.isDragAccept,\n isDragReject: action.isDragReject\n });\n\n case \"setFiles\":\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case \"reset\":\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nfunction noop() {}\n\nexport { ErrorCode } from \"./utils\";","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599: case 4855:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t\treturn WEBKIT + value + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span', 0) ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span', 0) ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch', 0) ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","declare let SC_DISABLE_SPEEDY: boolean | null | undefined;\ndeclare let __VERSION__: string;\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY = Boolean(\n typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","import { Dict } from '../types';\n\nexport const EMPTY_ARRAY = Object.freeze([]) as Readonly<any[]>;\nexport const EMPTY_OBJECT = Object.freeze({}) as Readonly<Dict<any>>;\n","import { useRef } from 'react';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string | undefined) => {\n if (process.env.NODE_ENV !== 'production') {\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n const message =\n `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n \"You may see this warning because you've called styled inside another component.\\n\" +\n 'To resolve this only create new StyledComponents outside of any render method and function component.';\n\n // If a hook is called outside of a component:\n // React 17 and earlier throw an error\n // React 18 and above use console.error\n\n const originalConsoleError = console.error;\n try {\n let didNotCallInvalidHook = true;\n console.error = (consoleErrorMessage, ...consoleErrorArgs) => {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(consoleErrorMessage)) {\n didNotCallInvalidHook = false;\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n } else {\n originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n }\n };\n // We purposefully call `useRef` outside of a component and expect it to throw\n // If it doesn't, then we're inside another component.\n useRef();\n\n if (didNotCallInvalidHook && !seen.has(message)) {\n console.warn(message);\n seen.add(message);\n }\n } catch (error) {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test((error as Error).message)) {\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n }\n } finally {\n console.error = originalConsoleError;\n }\n }\n};\n","import { DefaultTheme, ExecutionProps } from '../types';\nimport { EMPTY_OBJECT } from './empties';\n\nexport default function determineTheme(\n props: ExecutionProps,\n providedTheme?: DefaultTheme | undefined,\n defaultProps: { theme?: DefaultTheme | undefined } = EMPTY_OBJECT\n): DefaultTheme | undefined {\n return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n}\n","// Thanks to ReactDOMFactories for this handy list!\n\nconst elements = [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdi',\n 'bdo',\n 'big',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'keygen',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'menu',\n 'menuitem',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'use',\n 'var',\n 'video',\n 'wbr', // SVG\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'foreignObject',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'marker',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'text',\n 'tspan',\n] as const;\n\nexport default new Set(elements);\nexport type SupportedHTMLElements = (typeof elements)[number];\n","// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string) {\n return str // Replace all possible CSS selectors\n .replace(escapeRegex, '-') // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '');\n}\n","const AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number) => String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number) {\n let name = '';\n let x;\n\n /* get a char and divide by alphabet-length */\n for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","export const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string) => {\n let i = x.length;\n\n while (i) {\n h = (h * 33) ^ x.charCodeAt(--i);\n }\n\n return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string) => {\n return phash(SEED, x);\n};\n","import generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default function generateComponentId(str: string) {\n return generateAlphabeticName(hash(str) >>> 0);\n}\n","import { StyledTarget } from '../types';\n\nexport default function getComponentName(target: StyledTarget<any>) {\n return (\n (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n (target as Exclude<StyledTarget<any>, string>).displayName ||\n (target as Function).name ||\n 'Component'\n );\n}\n","import { StyledTarget } from '../types';\n\nexport default function isTag(target: StyledTarget<'web'>): target is string {\n return (\n typeof target === 'string' &&\n (process.env.NODE_ENV !== 'production'\n ? target.charAt(0) === target.charAt(0).toLowerCase()\n : true)\n );\n}\n","import React from 'react';\nimport { AnyComponent } from '../types';\n\nconst hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\n// copied from react-is\nconst REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nconst REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\n\n/**\n * Adapted from hoist-non-react-statics to avoid the react-is dependency.\n */\nconst REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true,\n};\n\nconst KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true,\n};\n\nconst FORWARD_REF_STATICS = {\n $$typeof: true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n};\n\nconst MEMO_STATICS = {\n $$typeof: true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true,\n};\n\nconst TYPE_STATICS = {\n [REACT_FORWARD_REF_TYPE]: FORWARD_REF_STATICS,\n [REACT_MEMO_TYPE]: MEMO_STATICS,\n};\n\ntype OmniComponent = AnyComponent;\n\n// adapted from react-is\nfunction isMemo(\n object: OmniComponent | React.MemoExoticComponent<any>\n): object is React.MemoExoticComponent<any> {\n const $$typeofType = 'type' in object && object.type.$$typeof;\n\n return $$typeofType === REACT_MEMO_TYPE;\n}\n\nfunction getStatics(component: OmniComponent) {\n // React v16.11 and below\n if (isMemo(component)) {\n return MEMO_STATICS;\n }\n\n // React v16.12 and above\n return '$$typeof' in component\n ? TYPE_STATICS[component['$$typeof'] as unknown as string]\n : REACT_STATICS;\n}\n\nconst defineProperty = Object.defineProperty;\nconst getOwnPropertyNames = Object.getOwnPropertyNames;\nconst getOwnPropertySymbols = Object.getOwnPropertySymbols;\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectPrototype = Object.prototype;\n\ntype ExcludeList = {\n [key: string]: true;\n};\n\ntype NonReactStatics<S extends OmniComponent, C extends ExcludeList = {}> = {\n [key in Exclude<\n keyof S,\n S extends React.MemoExoticComponent<any>\n ? keyof typeof MEMO_STATICS | keyof C\n : S extends React.ForwardRefExoticComponent<any>\n ? keyof typeof FORWARD_REF_STATICS | keyof C\n : keyof typeof REACT_STATICS | keyof typeof KNOWN_STATICS | keyof C\n >]: S[key];\n};\n\nexport default function hoistNonReactStatics<\n T extends OmniComponent,\n S extends OmniComponent,\n C extends ExcludeList = {},\n>(targetComponent: T, sourceComponent: S, excludelist?: C | undefined) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n const inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, excludelist);\n }\n }\n\n let keys: (String | Symbol)[] = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n const targetStatics = getStatics(targetComponent);\n const sourceStatics = getStatics(sourceComponent);\n\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i] as unknown as string;\n if (\n !(key in KNOWN_STATICS) &&\n !(excludelist && excludelist[key]) &&\n !(sourceStatics && key in sourceStatics) &&\n !(targetStatics && key in targetStatics)\n ) {\n const descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor!);\n } catch (e) {\n /* ignore */\n }\n }\n }\n }\n\n return targetComponent as T & NonReactStatics<S, C>;\n}\n","export default function isFunction(test: any): test is Function {\n return typeof test === 'function';\n}\n","import { StyledComponentBrand } from '../types';\n\nexport default function isStyledComponent(target: any): target is StyledComponentBrand {\n return typeof target === 'object' && 'styledComponentId' in target;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport function joinStrings(a?: string | undefined, b?: string | undefined): string {\n return a && b ? `${a} ${b}` : a || b || '';\n}\n\nexport function joinStringArray(arr: string[], sep?: string | undefined): string {\n if (arr.length === 0) {\n return '';\n }\n\n let result = arr[0];\n for (let i = 1; i < arr.length; i++) {\n result += sep ? sep + arr[i] : arr[i];\n }\n return result;\n}\n","export default function isPlainObject(x: any): x is Record<any, any> {\n return (\n x !== null &&\n typeof x === 'object' &&\n x.constructor.name === Object.name &&\n /* check for reasonable markers that the object isn't an element for react & preact/compat */\n !('props' in x && x.$$typeof)\n );\n}\n","import isPlainObject from './isPlainObject';\n\nfunction mixinRecursively(target: any, source: any, forceMerge = false) {\n /* only merge into POJOs, Arrays, but for top level objects only\n * allow to merge into anything by passing forceMerge = true */\n if (!forceMerge && !isPlainObject(target) && !Array.isArray(target)) {\n return source;\n }\n\n if (Array.isArray(source)) {\n for (let key = 0; key < source.length; key++) {\n target[key] = mixinRecursively(target[key], source[key]);\n }\n } else if (isPlainObject(source)) {\n for (const key in source) {\n target[key] = mixinRecursively(target[key], source[key]);\n }\n }\n\n return target;\n}\n\n/**\n * Arrays & POJOs merged recursively, other objects and value types are overridden\n * If target is not a POJO or an Array, it will get source properties injected via shallow merge\n * Source objects applied left to right. Mutates & returns target. Similar to lodash merge.\n */\nexport default function mixinDeep(target: any, ...sources: any[]) {\n for (const source of sources) {\n mixinRecursively(target, source, true);\n }\n\n return target;\n}\n","/**\n * If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n * cannot have the property changed using a \"=\" assignment operator. If using strict mode, attempting that will cause an error. If not using\n * strict mode, attempting that will be silently ignored.\n *\n * If the Object prototype is frozen, inherited non-writable properties can still be shadowed using one of two mechanisms:\n *\n * 1. ES6 class methods: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#methods\n * 2. Using the `Object.defineProperty()` static method:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n *\n * However, this project uses Babel to transpile ES6 classes, and transforms ES6 class methods to use the assignment operator instead:\n * https://babeljs.io/docs/babel-plugin-transform-class-properties#options\n *\n * Therefore, the most compatible way to shadow the prototype's \"toString\" property is to define a new \"toString\" property on this object.\n */\nexport function setToString(object: object, toStringFn: () => string) {\n Object.defineProperty(object, 'toString', { value: toStringFn });\n}\n","import { Dict } from '../types';\nimport errorMap from './errors';\n\nconst ERRORS: Dict<any> = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args: [string, ...any]) {\n let a = args[0];\n const b = [];\n\n for (let c = 1, len = args.length; c < len; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(d => {\n a = a.replace(/%[a-z]/, d);\n });\n\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n code: string | number,\n ...interpolations: any[]\n) {\n if (process.env.NODE_ENV === 'production') {\n return new Error(\n `An error occurred. See https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#${code} for more information.${\n interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n }`\n );\n } else {\n return new Error(format(ERRORS[code], ...interpolations).trim());\n }\n}\n","import { SPLITTER } from '../constants';\nimport styledError from '../utils/error';\nimport { GroupedTag, Tag } from './types';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag) => {\n return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nconst DefaultGroupedTag = class DefaultGroupedTag implements GroupedTag {\n groupSizes: Uint32Array;\n length: number;\n tag: Tag;\n\n constructor(tag: Tag) {\n this.groupSizes = new Uint32Array(BASE_SIZE);\n this.length = BASE_SIZE;\n this.tag = tag;\n }\n\n indexOfGroup(group: number) {\n let index = 0;\n for (let i = 0; i < group; i++) {\n index += this.groupSizes[i];\n }\n\n return index;\n }\n\n insertRules(group: number, rules: string[]) {\n if (group >= this.groupSizes.length) {\n const oldBuffer = this.groupSizes;\n const oldSize = oldBuffer.length;\n\n let newSize = oldSize;\n while (group >= newSize) {\n newSize <<= 1;\n if (newSize < 0) {\n throw styledError(16, `${group}`);\n }\n }\n\n this.groupSizes = new Uint32Array(newSize);\n this.groupSizes.set(oldBuffer);\n this.length = newSize;\n\n for (let i = oldSize; i < newSize; i++) {\n this.groupSizes[i] = 0;\n }\n }\n\n let ruleIndex = this.indexOfGroup(group + 1);\n\n for (let i = 0, l = rules.length; i < l; i++) {\n if (this.tag.insertRule(ruleIndex, rules[i])) {\n this.groupSizes[group]++;\n ruleIndex++;\n }\n }\n }\n\n clearGroup(group: number) {\n if (group < this.length) {\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n this.groupSizes[group] = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n this.tag.deleteRule(startIndex);\n }\n }\n }\n\n getGroup(group: number) {\n let css = '';\n if (group >= this.length || this.groupSizes[group] === 0) {\n return css;\n }\n\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n for (let i = startIndex; i < endIndex; i++) {\n css += `${this.tag.getRule(i)}${SPLITTER}`;\n }\n\n return css;\n }\n};\n","import styledError from '../utils/error';\n\nconst MAX_SMI = 1 << (31 - 1);\n\nlet groupIDRegister: Map<string, number> = new Map();\nlet reverseRegister: Map<number, string> = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n groupIDRegister = new Map();\n reverseRegister = new Map();\n nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n if (groupIDRegister.has(id)) {\n return groupIDRegister.get(id) as any;\n }\n\n while (reverseRegister.has(nextFreeGroup)) {\n nextFreeGroup++;\n }\n\n const group = nextFreeGroup++;\n\n if (process.env.NODE_ENV !== 'production' && ((group | 0) < 0 || group > MAX_SMI)) {\n throw styledError(16, `${group}`);\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n // move pointer\n nextFreeGroup = group + 1;\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n};\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION, SPLITTER } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n const tag = sheet.getTag();\n const { length } = tag;\n\n let css = '';\n for (let group = 0; group < length; group++) {\n const id = getIdForGroup(group);\n if (id === undefined) continue;\n\n const names = sheet.names.get(id);\n const rules = tag.getGroup(group);\n if (names === undefined || rules.length === 0) continue;\n\n const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n let content = '';\n if (names !== undefined) {\n names.forEach(name => {\n if (name.length > 0) {\n content += `${name},`;\n }\n });\n }\n\n // NOTE: It's easier to collect rules and have the marker\n // after the actual rules to simplify the rehydration\n css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n }\n\n return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n const names = content.split(',');\n let name;\n\n for (let i = 0, l = names.length; i < l; i++) {\n if ((name = names[i])) {\n sheet.registerName(id, name);\n }\n }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n const parts = (style.textContent ?? '').split(SPLITTER);\n const rules: string[] = [];\n\n for (let i = 0, l = parts.length; i < l; i++) {\n const part = parts[i].trim();\n if (!part) continue;\n\n const marker = part.match(MARKER_RE);\n\n if (marker) {\n const group = parseInt(marker[1], 10) | 0;\n const id = marker[2];\n\n if (group !== 0) {\n // Rehydrate componentId to group index mapping\n setGroupForId(id, group);\n // Rehydrate names and rules\n // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n rehydrateNamesFromContent(sheet, id, marker[3]);\n sheet.getTag().insertRules(group, rules);\n }\n\n rules.length = 0;\n } else {\n rules.push(part);\n }\n }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n const nodes = document.querySelectorAll(SELECTOR);\n\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = nodes[i] as any as HTMLStyleElement;\n if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n rehydrateSheetFromTag(sheet, node);\n\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n }\n};\n","declare let __webpack_nonce__: string;\n\nexport default function getNonce() {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n}\n","import { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport styledError from '../utils/error';\nimport getNonce from '../utils/nonce';\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: HTMLElement): void | HTMLStyleElement => {\n const arr = Array.from(target.querySelectorAll<HTMLStyleElement>(`style[${SC_ATTR}]`));\n\n return arr[arr.length - 1];\n};\n\n/** Create a style element inside `target` or <head> after the last */\nexport const makeStyleTag = (target?: HTMLElement | undefined): HTMLStyleElement => {\n const head = document.head;\n const parent = target || head;\n const style = document.createElement('style');\n const prevStyle = findLastStyleTag(parent);\n const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n const nonce = getNonce();\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n parent.insertBefore(style, nextSibling);\n\n return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n if (tag.sheet) {\n return tag.sheet as any as CSSStyleSheet;\n }\n\n // Avoid Firefox quirk where the style element might not have a sheet property\n const { styleSheets } = document;\n for (let i = 0, l = styleSheets.length; i < l; i++) {\n const sheet = styleSheets[i];\n if (sheet.ownerNode === tag) {\n return sheet as any as CSSStyleSheet;\n }\n }\n\n throw styledError(17);\n};\n","import { getSheet, makeStyleTag } from './dom';\nimport { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions) => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport const CSSOMTag = class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: HTMLElement | undefined) {\n this.element = makeStyleTag(target);\n\n // Avoid Edge bug where empty style elements don't create sheets\n this.element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(this.element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule && rule.cssText) {\n return rule.cssText;\n } else {\n return '';\n }\n }\n};\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport const TextTag = class TextTag implements Tag {\n element: HTMLStyleElement;\n nodes: NodeListOf<Node>;\n length: number;\n\n constructor(target?: HTMLElement | undefined) {\n this.element = makeStyleTag(target);\n this.nodes = this.element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string) {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number) {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number) {\n if (index < this.length) {\n return this.nodes[index].textContent as string;\n } else {\n return '';\n }\n }\n};\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport const VirtualTag = class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: HTMLElement | undefined) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string) {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number) {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number) {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n};\n","import { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { setToString } from '../utils/setToString';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean;\n useCSSOMInjection?: boolean;\n target?: HTMLElement | undefined;\n};\n\ntype GlobalStylesAllocationMap = {\n [key: string]: number;\n};\ntype NamesAllocationMap = Map<string, Set<string>>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n names: NamesAllocationMap;\n options: SheetOptions;\n server: boolean;\n tag?: GroupedTag | undefined;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT as Object,\n globalStyles: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap | undefined\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names as NamesAllocationMap);\n this.server = !!options.isServer;\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n\n setToString(this, () => outputSheet(this));\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag() {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id) as any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set<string>();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id) as any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string | string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id) as any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n}\n","import * as stylis from 'stylis';\nimport { Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { SEED, phash } from './hash';\n\nconst AMP_REGEX = /&/g;\nconst COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\n\nexport type ICreateStylisInstance = {\n options?: { namespace?: string | undefined; prefix?: boolean | undefined } | undefined;\n plugins?: stylis.Middleware[] | undefined;\n};\n\n/**\n * Takes an element and recurses through it's rules added the namespace to the start of each selector.\n * Takes into account media queries by recursing through child rules if they are present.\n */\nfunction recursivelySetNamepace(compiled: stylis.Element[], namespace: String): stylis.Element[] {\n return compiled.map(rule => {\n if (rule.type === 'rule') {\n // add the namespace to the start\n rule.value = `${namespace} ${rule.value}`;\n // add the namespace after each comma for subsequent selectors.\n rule.value = rule.value.replaceAll(',', `,${namespace} `);\n rule.props = (rule.props as string[]).map(prop => {\n return `${namespace} ${prop}`;\n });\n }\n\n if (Array.isArray(rule.children) && rule.type !== '@keyframes') {\n rule.children = recursivelySetNamepace(rule.children, namespace);\n }\n return rule;\n });\n}\n\nexport default function createStylisInstance(\n {\n options = EMPTY_OBJECT as object,\n plugins = EMPTY_ARRAY as unknown as stylis.Middleware[],\n }: ICreateStylisInstance = EMPTY_OBJECT as object\n) {\n let _componentId: string;\n let _selector: string;\n let _selectorRegexp: RegExp;\n\n const selfReferenceReplacer = (match: string, offset: number, string: string) => {\n if (\n /**\n * We only want to refer to the static class directly if the selector is part of a\n * self-reference selector `& + & { color: red; }`\n */\n string.startsWith(_selector) &&\n string.endsWith(_selector) &&\n string.replaceAll(_selector, '').length > 0\n ) {\n return `.${_componentId}`;\n }\n\n return match;\n };\n\n /**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n *\n * https://github.com/thysultan/stylis.js/tree/v4.0.2#abstract-syntax-structure\n */\n const selfReferenceReplacementPlugin: stylis.Middleware = element => {\n if (element.type === stylis.RULESET && element.value.includes('&')) {\n (element.props as string[])[0] = element.props[0]\n // catch any hanging references that stylis missed\n .replace(AMP_REGEX, _selector)\n .replace(_selectorRegexp, selfReferenceReplacer);\n }\n };\n\n const middlewares = plugins.slice();\n\n middlewares.push(selfReferenceReplacementPlugin);\n\n /**\n * Enables automatic vendor-prefixing for styles.\n */\n if (options.prefix) {\n middlewares.push(stylis.prefixer);\n }\n\n middlewares.push(stylis.stringify);\n\n const stringifyRules: Stringifier = (\n css: string,\n selector = '',\n /**\n * This \"prefix\" referes to a _selector_ prefix.\n */\n prefix = '',\n componentId = '&'\n ) => {\n // stylis has no concept of state to be passed to plugins\n // but since JS is single-threaded, we can rely on that to ensure\n // these properties stay in sync with the current stylis run\n _componentId = componentId;\n _selector = selector;\n _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n\n const flatCSS = css.replace(COMMENT_REGEX, '');\n let compiled = stylis.compile(\n prefix || selector ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS\n );\n\n if (options.namespace) {\n compiled = recursivelySetNamepace(compiled, options.namespace);\n }\n\n const stack: string[] = [];\n\n stylis.serialize(\n compiled,\n stylis.middleware(middlewares.concat(stylis.rulesheet(value => stack.push(value))))\n );\n\n return stack;\n };\n\n stringifyRules.hash = plugins.length\n ? plugins\n .reduce((acc, plugin) => {\n if (!plugin.name) {\n throwStyledError(15);\n }\n\n return phash(acc, plugin.name);\n }, SEED)\n .toString()\n : '';\n\n return stringifyRules;\n}\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\nimport shallowequal from 'shallowequal';\nimport type stylis from 'stylis';\nimport StyleSheet from '../sheet';\nimport { ShouldForwardProp, Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\nexport const mainSheet: StyleSheet = new StyleSheet();\nexport const mainStylis: Stringifier = createStylisInstance();\n\nexport type IStyleSheetContext = {\n shouldForwardProp?: ShouldForwardProp<'web'> | undefined;\n styleSheet: StyleSheet;\n stylis: Stringifier;\n};\n\nexport const StyleSheetContext = React.createContext<IStyleSheetContext>({\n shouldForwardProp: undefined,\n styleSheet: mainSheet,\n stylis: mainStylis,\n});\n\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\n\nexport type IStylisContext = Stringifier | void;\nexport const StylisContext = React.createContext<IStylisContext>(undefined);\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport function useStyleSheetContext() {\n return useContext(StyleSheetContext);\n}\n\nexport type IStyleSheetManager = React.PropsWithChildren<{\n /**\n * If desired, you can pass this prop to disable \"speedy\" insertion mode, which\n * uses the browser [CSSOM APIs](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet).\n * When disabled, rules are inserted as simple text into style blocks.\n */\n disableCSSOMInjection?: undefined | boolean;\n /**\n * If you are working exclusively with modern browsers, vendor prefixes can often be omitted\n * to reduce the weight of CSS on the page.\n */\n enableVendorPrefixes?: undefined | boolean;\n /**\n * Provide an optional selector to be prepended to all generated style rules.\n */\n namespace?: undefined | string;\n /**\n * Create and provide your own `StyleSheet` if necessary for advanced SSR scenarios.\n */\n sheet?: undefined | StyleSheet;\n /**\n * Starting in v6, styled-components no longer does its own prop validation\n * and recommends use of transient props \"$prop\" to pass style-only props to\n * components. If for some reason you are not able to use transient props, a\n * prop validation function can be provided via `StyleSheetManager`, such as\n * `@emotion/is-prop-valid`.\n *\n * When the return value is `true`, props will be forwarded to the DOM/underlying\n * component. If return value is `false`, the prop will be discarded after styles\n * are calculated.\n *\n * Manually composing `styled.{element}.withConfig({shouldForwardProp})` will\n * override this default.\n */\n shouldForwardProp?: undefined | IStyleSheetContext['shouldForwardProp'];\n /**\n * An array of plugins to be run by stylis (style processor) during compilation.\n * Check out [what's available on npm*](https://www.npmjs.com/search?q=keywords%3Astylis).\n *\n * \\* The plugin(s) must be compatible with stylis v4 or above.\n */\n stylisPlugins?: undefined | stylis.Middleware[];\n /**\n * Provide an alternate DOM node to host generated styles; useful for iframes.\n */\n target?: undefined | HTMLElement;\n}>;\n\nexport function StyleSheetManager(props: IStyleSheetManager): JSX.Element {\n const [plugins, setPlugins] = useState(props.stylisPlugins);\n const { styleSheet } = useStyleSheetContext();\n\n const resolvedStyleSheet = useMemo(() => {\n let sheet = styleSheet;\n\n if (props.sheet) {\n sheet = props.sheet;\n } else if (props.target) {\n sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n }\n\n if (props.disableCSSOMInjection) {\n sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n }\n\n return sheet;\n }, [props.disableCSSOMInjection, props.sheet, props.target, styleSheet]);\n\n const stylis = useMemo(\n () =>\n createStylisInstance({\n options: { namespace: props.namespace, prefix: props.enableVendorPrefixes },\n plugins,\n }),\n [props.enableVendorPrefixes, props.namespace, plugins]\n );\n\n useEffect(() => {\n if (!shallowequal(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n }, [props.stylisPlugins]);\n\n const styleSheetContextValue = useMemo(\n () => ({\n shouldForwardProp: props.shouldForwardProp,\n styleSheet: resolvedStyleSheet,\n stylis,\n }),\n [props.shouldForwardProp, resolvedStyleSheet, stylis]\n );\n\n return (\n <StyleSheetContext.Provider value={styleSheetContextValue}>\n <StylisContext.Provider value={stylis}>{props.children}</StylisContext.Provider>\n </StyleSheetContext.Provider>\n );\n}\n","import StyleSheet from '../sheet';\nimport { Keyframes as KeyframesType, Stringifier } from '../types';\nimport styledError from '../utils/error';\nimport { setToString } from '../utils/setToString';\nimport { mainStylis } from './StyleSheetManager';\n\nexport default class Keyframes implements KeyframesType {\n id: string;\n name: string;\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n\n setToString(this, () => {\n throw styledError(12, String(this.name));\n });\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = mainStylis): void => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n getName(stylisInstance: Stringifier = mainStylis): string {\n return this.name + stylisInstance.hash;\n }\n}\n","const isUpper = (c: string) => c >= 'A' && c <= 'Z';\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\nexport default function hyphenateStyleName(string: string): string {\n let output = '';\n\n for (let i = 0; i < string.length; i++) {\n const c = string[i];\n // Check for CSS variable prefix\n if (i === 1 && c === '-' && string[0] === '-') {\n return string;\n }\n\n if (isUpper(c)) {\n output += '-' + c.toLowerCase();\n } else {\n output += c;\n }\n }\n\n return output.startsWith('ms-') ? '-' + output : output;\n}\n","import Keyframes from '../models/Keyframes';\nimport StyleSheet from '../sheet';\nimport {\n AnyComponent,\n Dict,\n ExecutionContext,\n Interpolation,\n IStyledComponent,\n RuleSet,\n Stringifier,\n StyledObject,\n} from '../types';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { EMPTY_ARRAY } from './empties';\nimport getComponentName from './getComponentName';\nimport hyphenate from './hyphenateStyleName';\nimport isFunction from './isFunction';\nimport isPlainObject from './isPlainObject';\nimport isStatelessFunction from './isStatelessFunction';\nimport isStyledComponent from './isStyledComponent';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = (chunk: any): chunk is undefined | null | false | '' =>\n chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Dict<any>): string[] => {\n const rules = [];\n\n for (const key in obj) {\n const val = obj[key];\n if (!obj.hasOwnProperty(key) || isFalsish(val)) continue;\n\n // @ts-expect-error Property 'isCss' does not exist on type 'any[]'\n if ((Array.isArray(val) && val.isCss) || isFunction(val)) {\n rules.push(`${hyphenate(key)}:`, val, ';');\n } else if (isPlainObject(val)) {\n rules.push(`${key} {`, ...objToCssArray(val), '}');\n } else {\n rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, val)};`);\n }\n }\n\n return rules;\n};\n\nexport default function flatten<Props extends object>(\n chunk: Interpolation<object>,\n executionContext?: (ExecutionContext & Props) | undefined,\n styleSheet?: StyleSheet | undefined,\n stylisInstance?: Stringifier | undefined\n): RuleSet<Props> {\n if (isFalsish(chunk)) {\n return [];\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return [`.${(chunk as unknown as IStyledComponent<'web', any>).styledComponentId}`];\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (isStatelessFunction(chunk) && executionContext) {\n const result = chunk(executionContext);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof result === 'object' &&\n !Array.isArray(result) &&\n !(result instanceof Keyframes) &&\n !isPlainObject(result) &&\n result !== null\n ) {\n console.error(\n `${getComponentName(\n chunk as AnyComponent\n )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n );\n }\n\n return flatten<Props>(result, executionContext, styleSheet, stylisInstance);\n } else {\n return [chunk as unknown as IStyledComponent<'web'>];\n }\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet, stylisInstance);\n return [chunk.getName(stylisInstance)];\n } else {\n return [chunk];\n }\n }\n\n /* Handle objects */\n if (isPlainObject(chunk)) {\n return objToCssArray(chunk as StyledObject<Props>);\n }\n\n if (!Array.isArray(chunk)) {\n return [chunk.toString()];\n }\n\n return flatMap(chunk, chunklet =>\n flatten<Props>(chunklet, executionContext, styleSheet, stylisInstance)\n );\n}\n\nfunction flatMap<T, U>(array: T[], transform: (value: T, index: number, array: T[]) => U[]): U[] {\n return Array.prototype.concat.apply(EMPTY_ARRAY, array.map(transform));\n}\n","import unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any) {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n }\n\n return String(value).trim();\n}\n","import isFunction from './isFunction';\n\nexport default function isStatelessFunction(test: any): test is Function {\n return isFunction(test) && !(test.prototype && test.prototype.isReactComponent);\n}\n","import { RuleSet } from '../types';\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\n\nexport default function isStaticRules<Props extends object>(rules: RuleSet<Props>) {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","import { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport { ExecutionContext, RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\nimport { joinStringArray, joinStrings } from '../utils/joinStrings';\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n baseHash: number;\n baseStyle: ComponentStyle | null | undefined;\n componentId: string;\n isStatic: boolean;\n rules: RuleSet<any>;\n staticRulesId: string;\n\n constructor(rules: RuleSet<any>, componentId: string, baseStyle?: ComponentStyle | undefined) {\n this.rules = rules;\n this.staticRulesId = '';\n this.isStatic =\n process.env.NODE_ENV === 'production' &&\n (baseStyle === undefined || baseStyle.isStatic) &&\n isStaticRules(rules);\n this.componentId = componentId;\n this.baseHash = phash(SEED, componentId);\n this.baseStyle = baseStyle;\n\n // NOTE: This registers the componentId, which ensures a consistent order\n // for this component's styles compared to others\n StyleSheet.registerId(componentId);\n }\n\n generateAndInjectStyles(\n executionContext: ExecutionContext,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ): string {\n let names = this.baseStyle\n ? this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis)\n : '';\n\n // force dynamic classnames if user-supplied stylis plugins are in use\n if (this.isStatic && !stylis.hash) {\n if (this.staticRulesId && styleSheet.hasNameForId(this.componentId, this.staticRulesId)) {\n names = joinStrings(names, this.staticRulesId);\n } else {\n const cssStatic = joinStringArray(\n flatten(this.rules, executionContext, styleSheet, stylis) as string[]\n );\n const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n if (!styleSheet.hasNameForId(this.componentId, name)) {\n const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, this.componentId);\n styleSheet.insertRules(this.componentId, name, cssStaticFormatted);\n }\n\n names = joinStrings(names, name);\n this.staticRulesId = name;\n }\n } else {\n let dynamicHash = phash(this.baseHash, stylis.hash);\n let css = '';\n\n for (let i = 0; i < this.rules.length; i++) {\n const partRule = this.rules[i];\n\n if (typeof partRule === 'string') {\n css += partRule;\n\n if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule);\n } else if (partRule) {\n const partString = joinStringArray(\n flatten(partRule, executionContext, styleSheet, stylis) as string[]\n );\n // The same value can switch positions in the array, so we include \"i\" in the hash.\n dynamicHash = phash(dynamicHash, partString + i);\n css += partString;\n }\n }\n\n if (css) {\n const name = generateName(dynamicHash >>> 0);\n\n if (!styleSheet.hasNameForId(this.componentId, name)) {\n styleSheet.insertRules(\n this.componentId,\n name,\n stylis(css, `.${name}`, undefined, this.componentId)\n );\n }\n\n names = joinStrings(names, name);\n }\n }\n\n return names;\n }\n}\n","import React, { useContext, useMemo } from 'react';\nimport styledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\n/**\n * Override DefaultTheme to get accurate typings for your project.\n *\n * ```\n * // create styled-components.d.ts in your project source\n * // if it isn't being picked up, check tsconfig compilerOptions.types\n * import type { CSSProp } from \"styled-components\";\n * import Theme from './theme';\n *\n * type ThemeType = typeof Theme;\n *\n * declare module \"styled-components\" {\n * export interface DefaultTheme extends ThemeType {}\n * }\n *\n * declare module \"react\" {\n * interface DOMAttributes<T> {\n * css?: CSSProp;\n * }\n * }\n * ```\n */\nexport interface DefaultTheme {\n [key: string]: any;\n}\n\ntype ThemeFn = (outerTheme?: DefaultTheme | undefined) => DefaultTheme;\ntype ThemeArgument = DefaultTheme | ThemeFn;\n\ntype Props = {\n children?: React.ReactNode;\n theme: ThemeArgument;\n};\n\nexport const ThemeContext = React.createContext<DefaultTheme | undefined>(undefined);\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: DefaultTheme | undefined): DefaultTheme {\n if (!theme) {\n throw styledError(14);\n }\n\n if (isFunction(theme)) {\n const themeFn = theme as ThemeFn;\n const mergedTheme = themeFn(outerTheme);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n ) {\n throw styledError(7);\n }\n\n return mergedTheme;\n }\n\n if (Array.isArray(theme) || typeof theme !== 'object') {\n throw styledError(8);\n }\n\n return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Returns the current theme (as provided by the closest ancestor `ThemeProvider`.)\n *\n * If no `ThemeProvider` is found, the function will error. If you need access to the theme in an\n * uncertain composition scenario, `React.useContext(ThemeContext)` will not emit an error if there\n * is no `ThemeProvider` ancestor.\n */\nexport function useTheme(): DefaultTheme {\n const theme = useContext(ThemeContext);\n\n if (!theme) {\n throw styledError(18);\n }\n\n return theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props): JSX.Element | null {\n const outerTheme = React.useContext(ThemeContext);\n const themeContext = useMemo(\n () => mergeTheme(props.theme, outerTheme),\n [props.theme, outerTheme]\n );\n\n if (!props.children) {\n return null;\n }\n\n return <ThemeContext.Provider value={themeContext}>{props.children}</ThemeContext.Provider>;\n}\n","import isPropValid from '@emotion/is-prop-valid';\nimport React, { createElement, Ref, useDebugValue } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n AnyComponent,\n Attrs,\n BaseObject,\n Dict,\n ExecutionContext,\n ExecutionProps,\n IStyledComponent,\n IStyledComponentFactory,\n IStyledStatics,\n OmitNever,\n RuleSet,\n StyledOptions,\n WebTarget,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport domElements from '../utils/domElements';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport hoist from '../utils/hoist';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport { joinStrings } from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport { setToString } from '../utils/setToString';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheetContext } from './StyleSheetManager';\nimport { DefaultTheme, ThemeContext } from './ThemeProvider';\n\nconst identifiers: { [key: string]: number } = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(\n displayName?: string | undefined,\n parentComponentId?: string | undefined\n): string {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useInjectedStyle<T extends ExecutionContext>(\n componentStyle: ComponentStyle,\n resolvedAttrs: T\n) {\n const ssc = useStyleSheetContext();\n\n const className = componentStyle.generateAndInjectStyles(\n resolvedAttrs,\n ssc.styleSheet,\n ssc.stylis\n );\n\n if (process.env.NODE_ENV !== 'production') useDebugValue(className);\n\n return className;\n}\n\nfunction resolveContext<Props extends object>(\n attrs: Attrs<React.HTMLAttributes<Element> & Props>[],\n props: React.HTMLAttributes<Element> & ExecutionProps & Props,\n theme: DefaultTheme\n) {\n const context: React.HTMLAttributes<Element> &\n ExecutionContext &\n Props & { [key: string]: any; class?: string; ref?: React.Ref<any> } = {\n ...props,\n // unset, add `props.className` back at the end so props always \"wins\"\n className: undefined,\n theme,\n };\n let attrDef;\n\n for (let i = 0; i < attrs.length; i += 1) {\n attrDef = attrs[i];\n const resolvedAttrDef = isFunction(attrDef) ? attrDef(context) : attrDef;\n\n for (const key in resolvedAttrDef) {\n context[key as keyof typeof context] =\n key === 'className'\n ? joinStrings(context[key] as string | undefined, resolvedAttrDef[key] as string)\n : key === 'style'\n ? { ...context[key], ...resolvedAttrDef[key] }\n : resolvedAttrDef[key as keyof typeof resolvedAttrDef];\n }\n }\n\n if (props.className) {\n context.className = joinStrings(context.className, props.className);\n }\n\n return context;\n}\n\nlet seenUnknownProps = new Set();\n\nfunction useStyledComponentImpl<Props extends object>(\n forwardedComponent: IStyledComponent<'web', Props>,\n props: ExecutionProps & Props,\n forwardedRef: Ref<Element>\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n const contextTheme = React.useContext(ThemeContext);\n const ssc = useStyleSheetContext();\n const shouldForwardProp = forwardedComponent.shouldForwardProp || ssc.shouldForwardProp;\n\n if (process.env.NODE_ENV !== 'production') useDebugValue(styledComponentId);\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, contextTheme, defaultProps) || EMPTY_OBJECT;\n\n const context = resolveContext<Props>(componentAttrs, props, theme);\n const elementToBeCreated: WebTarget = context.as || target;\n const propsForElement: Dict<any> = {};\n\n for (const key in context) {\n if (context[key] === undefined) {\n // Omit undefined values from props passed to wrapped element.\n // This enables using .attrs() to remove props, for example.\n } else if (key[0] === '$' || key === 'as' || (key === 'theme' && context.theme === theme)) {\n // Omit transient props and execution props.\n } else if (key === 'forwardedAs') {\n propsForElement.as = context.forwardedAs;\n } else if (!shouldForwardProp || shouldForwardProp(key, elementToBeCreated)) {\n propsForElement[key] = context[key];\n\n if (\n !shouldForwardProp &&\n process.env.NODE_ENV === 'development' &&\n !isPropValid(key) &&\n !seenUnknownProps.has(key) &&\n // Only warn on DOM Element.\n domElements.has(elementToBeCreated as any)\n ) {\n seenUnknownProps.add(key);\n console.warn(\n `styled-components: it looks like an unknown prop \"${key}\" is being sent through to the DOM, which will likely trigger a React console error. If you would like automatic filtering of unknown props, you can opt-into that behavior via \\`<StyleSheetManager shouldForwardProp={...}>\\` (connect an API like \\`@emotion/is-prop-valid\\`) or consider using transient props (\\`$\\` prefix for automatic filtering.)`\n );\n }\n }\n }\n\n const generatedClassName = useInjectedStyle(componentStyle, context);\n\n if (process.env.NODE_ENV !== 'production' && forwardedComponent.warnTooManyClasses) {\n forwardedComponent.warnTooManyClasses(generatedClassName);\n }\n\n let classString = joinStrings(foldedComponentIds, styledComponentId);\n if (generatedClassName) {\n classString += ' ' + generatedClassName;\n }\n if (context.className) {\n classString += ' ' + context.className;\n }\n\n propsForElement[\n // handle custom elements which React doesn't properly alias\n isTag(elementToBeCreated) &&\n !domElements.has(elementToBeCreated as Extract<typeof domElements, string>)\n ? 'class'\n : 'className'\n ] = classString;\n\n propsForElement.ref = forwardedRef;\n\n return createElement(elementToBeCreated, propsForElement);\n}\n\nfunction createStyledComponent<\n Target extends WebTarget,\n OuterProps extends object,\n Statics extends object = BaseObject,\n>(\n target: Target,\n options: StyledOptions<'web', OuterProps>,\n rules: RuleSet<OuterProps>\n): ReturnType<IStyledComponentFactory<'web', Target, OuterProps, Statics>> {\n const isTargetStyledComp = isStyledComponent(target);\n const styledComponentTarget = target as IStyledComponent<'web', OuterProps>;\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && styledComponentTarget.attrs\n ? styledComponentTarget.attrs.concat(attrs as unknown as Attrs<OuterProps>[]).filter(Boolean)\n : (attrs as Attrs<OuterProps>[]);\n\n let { shouldForwardProp } = options;\n\n if (isTargetStyledComp && styledComponentTarget.shouldForwardProp) {\n const shouldForwardPropFn = styledComponentTarget.shouldForwardProp;\n\n if (options.shouldForwardProp) {\n const passedShouldForwardPropFn = options.shouldForwardProp;\n\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, elementToBeCreated) =>\n shouldForwardPropFn(prop, elementToBeCreated) &&\n passedShouldForwardPropFn(prop, elementToBeCreated);\n } else {\n shouldForwardProp = shouldForwardPropFn;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? (styledComponentTarget.componentStyle as ComponentStyle) : undefined\n );\n\n function forwardRefRender(props: ExecutionProps & OuterProps, ref: Ref<Element>) {\n return useStyledComponentImpl<OuterProps>(WrappedStyledComponent, props, ref);\n }\n\n forwardRefRender.displayName = displayName;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent = React.forwardRef(forwardRefRender) as unknown as IStyledComponent<\n 'web',\n any\n > &\n Statics;\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? joinStrings(styledComponentTarget.foldedComponentIds, styledComponentTarget.styledComponentId)\n : '';\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp ? styledComponentTarget.target : target;\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, styledComponentTarget.defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n setToString(WrappedStyledComponent, () => `.${WrappedStyledComponent.styledComponentId}`);\n\n if (isCompositeComponent) {\n const compositeComponentTarget = target as AnyComponent;\n\n hoist<typeof WrappedStyledComponent, typeof compositeComponentTarget>(\n WrappedStyledComponent,\n compositeComponentTarget,\n {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n } as { [key in keyof OmitNever<IStyledStatics<'web', OuterProps>>]: true }\n );\n }\n\n return WrappedStyledComponent;\n}\n\nexport default createStyledComponent;\n","import { StyledTarget } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(target: StyledTarget<any>) {\n return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","import { Interpolation } from '../types';\n\nexport default function interleave<Props extends object>(\n strings: readonly string[],\n interpolations: Interpolation<Props>[]\n): Interpolation<Props>[] {\n const result: Interpolation<Props>[] = [strings[0]];\n\n for (let i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n}\n","import {\n BaseObject,\n Interpolation,\n NoInfer,\n RuleSet,\n StyledObject,\n StyleFunction,\n Styles,\n} from '../types';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport flatten from '../utils/flatten';\nimport interleave from '../utils/interleave';\nimport isFunction from '../utils/isFunction';\nimport isPlainObject from '../utils/isPlainObject';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = <T extends RuleSet<any>>(arg: T): T & { isCss: true } =>\n Object.assign(arg, { isCss: true } as const);\n\nfunction css(styles: Styles<object>, ...interpolations: Interpolation<object>[]): RuleSet<object>;\nfunction css<Props extends object>(\n styles: Styles<NoInfer<Props>>,\n ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>>;\nfunction css<Props extends object = BaseObject>(\n styles: Styles<NoInfer<Props>>,\n ...interpolations: Interpolation<NoInfer<Props>>[]\n): RuleSet<NoInfer<Props>> {\n if (isFunction(styles) || isPlainObject(styles)) {\n const styleFunctionOrObject = styles as StyleFunction<Props> | StyledObject<Props>;\n\n return addTag(\n flatten<Props>(\n interleave<Props>(EMPTY_ARRAY, [\n styleFunctionOrObject,\n ...interpolations,\n ]) as Interpolation<object>\n )\n );\n }\n\n const styleStringArray = styles as TemplateStringsArray;\n\n if (\n interpolations.length === 0 &&\n styleStringArray.length === 1 &&\n typeof styleStringArray[0] === 'string'\n ) {\n return flatten<Props>(styleStringArray);\n }\n\n return addTag(\n flatten<Props>(interleave<Props>(styleStringArray, interpolations) as Interpolation<object>)\n );\n}\n\nexport default css;\n","import {\n Attrs,\n BaseObject,\n ExecutionProps,\n Interpolation,\n IStyledComponent,\n IStyledComponentFactory,\n KnownTarget,\n NoInfer,\n Runtime,\n StyledOptions,\n StyledTarget,\n Styles,\n Substitute,\n} from '../types';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport styledError from '../utils/error';\nimport css from './css';\n\ntype AttrsResult<T extends Attrs<any>> = T extends (...args: any) => infer P\n ? P extends object\n ? P\n : never\n : T extends object\n ? T\n : never;\n\n/**\n * Based on Attrs being a simple object or function that returns\n * a prop object, inspect the attrs result and attempt to extract\n * any \"as\" prop usage to modify the runtime target.\n */\ntype AttrsTarget<\n R extends Runtime,\n T extends Attrs<any>,\n FallbackTarget extends StyledTarget<R>,\n Result extends ExecutionProps = AttrsResult<T>,\n> = Result extends { as: infer RuntimeTarget }\n ? RuntimeTarget extends KnownTarget\n ? RuntimeTarget\n : FallbackTarget\n : FallbackTarget;\n\nexport interface Styled<\n R extends Runtime,\n Target extends StyledTarget<R>,\n OuterProps extends object,\n OuterStatics extends object = BaseObject,\n> {\n <Props extends object = BaseObject, Statics extends object = BaseObject>(\n initialStyles: Styles<Substitute<OuterProps, NoInfer<Props>>>,\n ...interpolations: Interpolation<Substitute<OuterProps, NoInfer<Props>>>[]\n ): IStyledComponent<R, Substitute<OuterProps, Props>> &\n OuterStatics &\n Statics &\n (R extends 'web'\n ? Target extends string\n ? {}\n : Omit<Target, keyof React.Component<any>>\n : {});\n\n attrs: <\n Props extends object = BaseObject,\n PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n >(\n attrs: PrivateAttrsArg\n ) => Styled<\n R,\n PrivateResolvedTarget,\n PrivateResolvedTarget extends KnownTarget\n ? Substitute<\n Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n Props\n >\n : PrivateMergedProps,\n OuterStatics\n >;\n\n withConfig: (config: StyledOptions<R, OuterProps>) => Styled<R, Target, OuterProps, OuterStatics>;\n}\n\nexport default function constructWithOptions<\n R extends Runtime,\n Target extends StyledTarget<R>,\n OuterProps extends object = Target extends KnownTarget\n ? React.ComponentPropsWithRef<Target>\n : BaseObject,\n OuterStatics extends object = BaseObject,\n>(\n componentConstructor: IStyledComponentFactory<R, StyledTarget<R>, object, any>,\n tag: StyledTarget<R>,\n options: StyledOptions<R, OuterProps> = EMPTY_OBJECT\n): Styled<R, Target, OuterProps, OuterStatics> {\n /**\n * We trust that the tag is a valid component as long as it isn't\n * falsish. Typically the tag here is a string or function (i.e.\n * class or pure function component), however a component may also be\n * an object if it uses another utility, e.g. React.memo. React will\n * output an appropriate warning however if the `tag` isn't valid.\n */\n if (!tag) {\n throw styledError(1, tag);\n }\n\n /* This is callable directly as a template function */\n const templateFunction = <Props extends object = BaseObject, Statics extends object = BaseObject>(\n initialStyles: Styles<Substitute<OuterProps, Props>>,\n ...interpolations: Interpolation<Substitute<OuterProps, Props>>[]\n ) =>\n componentConstructor<Substitute<OuterProps, Props>, Statics>(\n tag,\n options as StyledOptions<R, Substitute<OuterProps, Props>>,\n css<Substitute<OuterProps, Props>>(initialStyles, ...interpolations)\n );\n\n /**\n * Attrs allows for accomplishing two goals:\n *\n * 1. Backfilling props at runtime more expressively than defaultProps\n * 2. Amending the prop interface of a wrapped styled component\n */\n templateFunction.attrs = <\n Props extends object = BaseObject,\n PrivateMergedProps extends object = Substitute<OuterProps, Props>,\n PrivateAttrsArg extends Attrs<PrivateMergedProps> = Attrs<PrivateMergedProps>,\n PrivateResolvedTarget extends StyledTarget<R> = AttrsTarget<R, PrivateAttrsArg, Target>,\n >(\n attrs: PrivateAttrsArg\n ) =>\n constructWithOptions<\n R,\n PrivateResolvedTarget,\n PrivateResolvedTarget extends KnownTarget\n ? Substitute<\n Substitute<OuterProps, React.ComponentPropsWithRef<PrivateResolvedTarget>>,\n Props\n >\n : PrivateMergedProps,\n OuterStatics\n >(componentConstructor, tag, {\n ...options,\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n });\n\n /**\n * If config methods are called, wrap up a new template function\n * and merge options.\n */\n templateFunction.withConfig = (config: StyledOptions<R, OuterProps>) =>\n constructWithOptions<R, Target, OuterProps, OuterStatics>(componentConstructor, tag, {\n ...options,\n ...config,\n });\n\n return templateFunction;\n}\n","import { ComponentPropsWithRef } from 'react';\nimport createStyledComponent from '../models/StyledComponent';\nimport { BaseObject, KnownTarget, WebTarget } from '../types';\nimport domElements, { SupportedHTMLElements } from '../utils/domElements';\nimport constructWithOptions, { Styled as StyledInstance } from './constructWithOptions';\n\nconst baseStyled = <Target extends WebTarget, InjectedProps extends object = BaseObject>(\n tag: Target\n) =>\n constructWithOptions<\n 'web',\n Target,\n Target extends KnownTarget ? ComponentPropsWithRef<Target> & InjectedProps : InjectedProps\n >(createStyledComponent, tag);\n\nconst styled = baseStyled as typeof baseStyled & {\n [E in SupportedHTMLElements]: StyledInstance<'web', E, JSX.IntrinsicElements[E]>;\n};\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n // @ts-expect-error some react typing bs\n styled[domElement] = baseStyled<typeof domElement>(domElement);\n});\n\nexport default styled;\nexport { StyledInstance };\n\n/**\n * This is the type of the `styled` HOC.\n */\nexport type Styled = typeof styled;\n\n/**\n * Use this higher-order type for scenarios where you are wrapping `styled`\n * and providing extra props as a third-party library.\n */\nexport type LibraryStyled<LibraryProps extends object = BaseObject> = <Target extends WebTarget>(\n tag: Target\n) => typeof baseStyled<Target, LibraryProps>;\n","import StyleSheet from '../sheet';\nimport { ExecutionContext, RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\nimport { joinStringArray } from '../utils/joinStrings';\n\nexport default class GlobalStyle<Props extends object> {\n componentId: string;\n isStatic: boolean;\n rules: RuleSet<Props>;\n\n constructor(rules: RuleSet<Props>, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules);\n\n // pre-register the first instance to ensure global styles\n // load before component ones\n StyleSheet.registerId(this.componentId + 1);\n }\n\n createStyles(\n instance: number,\n executionContext: ExecutionContext & Props,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ): void {\n const flatCSS = joinStringArray(\n flatten(this.rules as RuleSet<object>, executionContext, styleSheet, stylis) as string[]\n );\n const css = stylis(flatCSS, '');\n const id = this.componentId + instance;\n\n // NOTE: We use the id as a name as well, since these rules never change\n styleSheet.insertRules(id, id, css);\n }\n\n removeStyles(instance: number, styleSheet: StyleSheet): void {\n styleSheet.clearRules(this.componentId + instance);\n }\n\n renderStyles(\n instance: number,\n executionContext: ExecutionContext & Props,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ): void {\n if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n // NOTE: Remove old styles, then inject the new ones\n this.removeStyles(instance, styleSheet);\n this.createStyles(instance, executionContext, styleSheet, stylis);\n }\n}\n","import React from 'react';\nimport type * as streamInternal from 'stream';\nimport { Readable } from 'stream';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport styledError from '../utils/error';\nimport { joinStringArray } from '../utils/joinStrings';\nimport getNonce from '../utils/nonce';\nimport { StyleSheetManager } from './StyleSheetManager';\n\ndeclare const __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n instance: StyleSheet;\n sealed: boolean;\n\n constructor() {\n this.instance = new StyleSheet({ isServer: true });\n this.sealed = false;\n }\n\n _emitSheetCSS = (): string => {\n const css = this.instance.toString();\n const nonce = getNonce();\n const attrs = [\n nonce && `nonce=\"${nonce}\"`,\n `${SC_ATTR}=\"true\"`,\n `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`,\n ];\n const htmlAttr = joinStringArray(attrs.filter(Boolean) as string[], ' ');\n\n return `<style ${htmlAttr}>${css}</style>`;\n };\n\n collectStyles(children: any): JSX.Element {\n if (this.sealed) {\n throw styledError(2);\n }\n\n return <StyleSheetManager sheet={this.instance}>{children}</StyleSheetManager>;\n }\n\n getStyleTags = (): string => {\n if (this.sealed) {\n throw styledError(2);\n }\n\n return this._emitSheetCSS();\n };\n\n getStyleElement = () => {\n if (this.sealed) {\n throw styledError(2);\n }\n\n const props = {\n [SC_ATTR]: '',\n [SC_ATTR_VERSION]: SC_VERSION,\n dangerouslySetInnerHTML: {\n __html: this.instance.toString(),\n },\n };\n\n const nonce = getNonce();\n if (nonce) {\n (props as any).nonce = nonce;\n }\n\n // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n return [<style {...props} key=\"sc-0-0\" />];\n };\n\n // @ts-expect-error alternate return types are not possible due to code transformation\n interleaveWithNodeStream(input: Readable): streamInternal.Transform {\n if (!__SERVER__ || IS_BROWSER) {\n throw styledError(3);\n } else if (this.sealed) {\n throw styledError(2);\n }\n\n if (__SERVER__) {\n this.seal();\n\n const { Transform } = require('stream');\n\n const readableStream: Readable = input;\n const { instance: sheet, _emitSheetCSS } = this;\n\n const transformer: streamInternal.Transform = new Transform({\n transform: function appendStyleChunks(\n chunk: string,\n /* encoding */\n _: string,\n callback: Function\n ) {\n // Get the chunk and retrieve the sheet's CSS as an HTML chunk,\n // then reset its rules so we get only new ones for the next chunk\n const renderedHtml = chunk.toString();\n const html = _emitSheetCSS();\n\n sheet.clearTag();\n\n // prepend style html to chunk, unless the start of the chunk is a\n // closing tag in which case append right after that\n if (CLOSING_TAG_R.test(renderedHtml)) {\n const endOfClosingTag = renderedHtml.indexOf('>') + 1;\n const before = renderedHtml.slice(0, endOfClosingTag);\n const after = renderedHtml.slice(endOfClosingTag);\n\n this.push(before + html + after);\n } else {\n this.push(html + renderedHtml);\n }\n\n callback();\n },\n });\n\n readableStream.on('error', err => {\n // forward the error to the transform stream\n transformer.emit('error', err);\n });\n\n return readableStream.pipe(transformer);\n }\n }\n\n seal = (): void => {\n this.sealed = true;\n };\n}\n","/* Import singletons */\nimport { SC_ATTR, SC_VERSION } from './constants';\nimport createGlobalStyle from './constructors/createGlobalStyle';\nimport css from './constructors/css';\nimport keyframes from './constructors/keyframes';\n/* Import Higher Order Components */\nimport withTheme from './hoc/withTheme';\n/* Import hooks */\nimport ServerStyleSheet from './models/ServerStyleSheet';\nimport {\n IStyleSheetContext,\n IStyleSheetManager,\n IStylisContext,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n} from './models/StyleSheetManager';\n/* Import components */\nimport ThemeProvider, { ThemeConsumer, ThemeContext, useTheme } from './models/ThemeProvider';\nimport isStyledComponent from './utils/isStyledComponent';\n\n/* Warning if you've imported this file on React Native */\nif (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n) {\n console.warn(\n `It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native`\n );\n}\n\nconst windowGlobalKey = `__sc-${SC_ATTR}__`;\n\n/* Warning if there are several instances of styled-components */\nif (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined'\n) {\n // @ts-expect-error dynamic key not in window object\n window[windowGlobalKey] ||= 0;\n\n // @ts-expect-error dynamic key not in window object\n if (window[windowGlobalKey] === 1) {\n console.warn(\n `It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.`\n );\n }\n\n // @ts-expect-error dynamic key not in window object\n window[windowGlobalKey] += 1;\n}\n\n/* Export everything */\nexport * from './secretInternals';\nexport { Attrs, DefaultTheme, ShouldForwardProp } from './types';\nexport {\n IStyleSheetContext,\n IStyleSheetManager,\n IStylisContext,\n ServerStyleSheet,\n StyleSheetConsumer,\n StyleSheetContext,\n StyleSheetManager,\n ThemeConsumer,\n ThemeContext,\n ThemeProvider,\n createGlobalStyle,\n css,\n isStyledComponent,\n keyframes,\n useTheme,\n SC_VERSION as version,\n withTheme,\n};\n","import { formatBytes } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useCallback, useEffect, useState } from 'react'\r\nimport { FileError, FileRejection, useDropzone } from 'react-dropzone'\r\nimport styled from 'styled-components'\r\n\r\ninterface PostFileDropzoneProps {\r\n allowedFileExtensions: string\r\n maxFileSizeBytes: number\r\n maxFilesInPost: number\r\n currentFiles: number\r\n uploadedFiles: File[]\r\n setUploadedFiles: React.Dispatch<React.SetStateAction<File[]>>\r\n fileRejects: FileRejection[]\r\n setFileRejects: React.Dispatch<React.SetStateAction<FileRejection[]>>\r\n}\r\n\r\nexport default (props: PostFileDropzoneProps) => {\r\n const onDrop = useCallback(\r\n (acceptedFiles: File[], fileRejections: FileRejection[]) => {\r\n var validatedFiles = [] as File[]\r\n var newFileErrors = [] as FileRejection[]\r\n // Validate the files after drop because we don't trust react-dropzone.\r\n acceptedFiles.map((s, idx) => {\r\n var combined = props.uploadedFiles.concat(validatedFiles)\r\n var res = validatePostFile(s, combined)\r\n\r\n if (res === null) {\r\n validatedFiles = [...validatedFiles, s]\r\n } else {\r\n newFileErrors = [...newFileErrors, res]\r\n }\r\n })\r\n\r\n fileRejections.map((s, idx) => {\r\n newFileErrors = [...newFileErrors, s]\r\n })\r\n\r\n props.setFileRejects([...props.fileRejects, ...newFileErrors])\r\n props.setUploadedFiles([...props.uploadedFiles, ...validatedFiles])\r\n },\r\n [props.uploadedFiles, props.fileRejects],\r\n )\r\n\r\n const fileAmountValidator = (files: File[]): FileError => {\r\n if (files.length + 1 > props.maxFilesInPost) {\r\n return {\r\n code: 'too-many-files',\r\n message: `This file you tried to upload exceeds the max limit of ${props.maxFilesInPost} files per post.`,\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n const sameFileNameCheckValidator = (file: File, files: File[]): FileError => {\r\n if (files.some((s) => s.name === file.name)) {\r\n return {\r\n code: 'same-file-name',\r\n message: `This file has the same file name as another file being prepared to be uploaded.`,\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n const validateFileName = (fileName: string): boolean => {\r\n var extensionList: string[] = props.allowedFileExtensions.split('/')\r\n\r\n if (extensionList.some((s) => fileName.endsWith(s))) {\r\n return true\r\n }\r\n\r\n return false\r\n }\r\n\r\n const fileSizeValidator = (file: File): FileError => {\r\n if (file.size > props.maxFileSizeBytes) {\r\n return {\r\n code: 'file-too-large',\r\n message: `File size is larger than ${props.maxFileSizeBytes} bytes.`,\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n const fileExtensionValidator = (file: File): FileError => {\r\n if (!validateFileName(file.name)) {\r\n return {\r\n code: 'invalid-file',\r\n message: `You tried to upload a file type not allowed here! Allowed file types are: ${props.allowedFileExtensions.replaceAll('/', ', ')}`,\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n const validatePostFile = (file: File, fileList: File[]): FileRejection => {\r\n var sizeCheck = fileSizeValidator(file)\r\n if (sizeCheck != null) {\r\n return {\r\n file: file,\r\n errors: [sizeCheck],\r\n } as FileRejection\r\n }\r\n\r\n var extensionCheck = fileExtensionValidator(file)\r\n if (extensionCheck != null) {\r\n return {\r\n file: file,\r\n errors: [extensionCheck],\r\n } as FileRejection\r\n }\r\n\r\n var sameFileNameCheck = sameFileNameCheckValidator(file, fileList)\r\n if (sameFileNameCheck != null) {\r\n return {\r\n file: file,\r\n errors: [sameFileNameCheck],\r\n } as FileRejection\r\n }\r\n\r\n var fileAmountCheck = fileAmountValidator(fileList)\r\n if (fileAmountCheck != null) {\r\n return {\r\n file: file,\r\n errors: [fileAmountCheck],\r\n } as FileRejection\r\n }\r\n\r\n return null\r\n }\r\n\r\n // We don't validate drag/drop file extensions because browsers are weird with that API.\r\n // The file API is much easier to determine file extensions, so we move validation up there.\r\n const { getRootProps, getInputProps, fileRejections } = useDropzone({\r\n onDrop,\r\n //accept: {} // we check this further up since browser APIs are so different on this\r\n validator: fileSizeValidator,\r\n })\r\n\r\n return (\r\n <React.Fragment>\r\n {props.allowedFileExtensions.length > 0 && props.maxFilesInPost > 0 && props.maxFileSizeBytes > 0 && (\r\n <PostFileContainer {...getRootProps()}>\r\n <input {...getInputProps()} accept={props.allowedFileExtensions.replaceAll('/', ',')} />\r\n <PostFileContainerText>Drag 'n' drop some files here, or click to select files.</PostFileContainerText>\r\n <PostFileContainerText>Accepted file types: {props.allowedFileExtensions.replaceAll('/', ', ')}</PostFileContainerText>\r\n <PostFileContainerText>Accepted file size: {formatBytes(props.maxFileSizeBytes)}</PostFileContainerText>\r\n <PostFileContainerText>Maximum files per post: {props.maxFilesInPost}</PostFileContainerText>\r\n </PostFileContainer>\r\n )}\r\n {(props.allowedFileExtensions.length <= 0 || props.maxFilesInPost <= 0 || props.maxFileSizeBytes <= 0) && (\r\n <PostFileContainer>\r\n <PostFileContainerText>File uploads are disabled here.</PostFileContainerText>\r\n </PostFileContainer>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nconst PostFileContainer = styled.div`\r\n padding: 7px 10px;\r\n margin: 0;\r\n font-size: 13px;\r\n line-height: 16px;\r\n color: var(--bs-secondary-text-emphasis);\r\n background-color: var(--bs-secondary-bg);\r\n border: 1px solid var(--bs-secondary-color);\r\n border-top: 0;\r\n border-top-color: currentcolor;\r\n border-bottom-right-radius: 6px;\r\n border-bottom-left-radius: 6px;\r\n`\r\n\r\nconst PostFileContainerText = styled.p`\r\n margin: 0;\r\n`\r\n","var _excluded = [\"className\", \"cssModule\", \"top\", \"bottom\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add `bottom` prop if image is at bottom of card */\n bottom: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change existing className with a new className */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Add `top` prop if image is at top of card */\n top: PropTypes.bool\n};\nfunction CardImg(props) {\n var className = props.className,\n cssModule = props.cssModule,\n top = props.top,\n bottom = props.bottom,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'img' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var cardImgClassName = 'card-img';\n if (top) {\n cardImgClassName = 'card-img-top';\n }\n if (bottom) {\n cardImgClassName = 'card-img-bottom';\n }\n var classes = mapToCssModules(classNames(className, cardImgClassName), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nCardImg.propTypes = propTypes;\nexport default CardImg;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nfunction CardImgOverlay(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card-img-overlay'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nCardImgOverlay.propTypes = propTypes;\nexport default CardImgOverlay;","var _excluded = [\"className\", \"cssModule\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction CardText(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'p' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'card-text'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nCardText.propTypes = propTypes;\nexport default CardText;","import { formatBytes } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useCallback, useEffect, useState } from 'react'\r\nimport { Card, CardImg, CardImgOverlay, CardText, CardTitle, Input } from 'reactstrap'\r\nimport styled from 'styled-components'\r\n\r\ninterface PostFilePreviewProps {\r\n file: File\r\n removeFile: (fileName: string) => void\r\n description: string\r\n updateDescription: (fileName: string, description: string) => void\r\n}\r\n\r\nexport default (props: PostFilePreviewProps) => {\r\n const [imageUrl, setImageUrl] = useState<string>('') // Image url to a thumbnail or the real uploaded thing.\r\n\r\n const getPreviewImageForFileName = (file: File): string => {\r\n var approvedImageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webm', '.webp'] as string[]\r\n if (approvedImageExtensions.some((s) => file.name.endsWith(s))) {\r\n return URL.createObjectURL(file)\r\n }\r\n\r\n // Put other file types here.\r\n var zipExtensions = ['.zip', '.pk3', '.7z', '.rar'] as string[]\r\n if (zipExtensions.some((s) => file.name.endsWith(s))) {\r\n return '/images/filetypes/filetypeplaceholder_zip.png'\r\n }\r\n\r\n return '/images/filetypes/filetypeplaceholder_any.png'\r\n }\r\n\r\n useEffect(() => {\r\n if (props.file) {\r\n setImageUrl(getPreviewImageForFileName(props.file))\r\n }\r\n\r\n return () => {\r\n URL.revokeObjectURL(imageUrl)\r\n setImageUrl('')\r\n }\r\n }, [props.file])\r\n\r\n return (\r\n <React.Fragment>\r\n {props.file && (\r\n <React.Fragment>\r\n <Card inverse>\r\n <CardImg\r\n alt={`Image preview for file ${props.file.name}`}\r\n src={imageUrl}\r\n style={{\r\n height: 150,\r\n }}\r\n width='100%'\r\n />\r\n <CardImgOverlay>\r\n <CardTitle tag='h5'>{props.file.name}</CardTitle>\r\n <CardText>\r\n <small className='text-muted'>{formatBytes(props.file.size)}</small>\r\n </CardText>\r\n </CardImgOverlay>\r\n </Card>\r\n <Input value={props.description} onChange={(e) => props.updateDescription(props.file.name, e.target.value)} placeholder='Add image description' />\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import { formatBytes } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useCallback, useEffect, useState } from 'react'\r\nimport { FileError, FileRejection, useDropzone } from 'react-dropzone'\r\nimport styled from 'styled-components'\r\n\r\nimport { PostFileUploadItem } from '../../lib/DoomCentral'\r\nimport PostFilePreview from './PostFilePreview'\r\n\r\ninterface PostFilePreviewerProps {\r\n uploadedFiles: File[]\r\n removeFile: (fileName: string) => void\r\n descriptions: PostFileUploadItem[]\r\n updateDescription: (fileName: string, description: string) => void\r\n}\r\n\r\nexport default (props: PostFilePreviewerProps) => {\r\n return (\r\n <React.Fragment>\r\n {props.uploadedFiles && props.uploadedFiles.length > 0 && (\r\n <PostFilePreviewerContainer>\r\n {props.uploadedFiles.map((s, idx) => (\r\n <PostFilePreview\r\n file={s}\r\n removeFile={props.removeFile}\r\n description={props.descriptions.find((f) => f.fileName === s.name)?.description ?? ''}\r\n updateDescription={props.updateDescription}\r\n />\r\n ))}\r\n </PostFilePreviewerContainer>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nconst PostFilePreviewerContainer = styled.div`\r\n padding: 7px 10px;\r\n margin: 0;\r\n font-size: 13px;\r\n line-height: 16px;\r\n color: var(--bs-secondary-text-emphasis);\r\n background-color: var(--bs-secondary-bg);\r\n border: 1px solid var(--bs-secondary-color);\r\n border-top: 0;\r\n border-top-color: currentcolor;\r\n border-bottom-right-radius: 6px;\r\n border-bottom-left-radius: 6px;\r\n`\r\n","var _excluded = [\"className\", \"cssModule\", \"tag\", \"type\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Type of list `unstyled` or `inline` */\n type: PropTypes.string\n};\nvar List = /*#__PURE__*/forwardRef(function (props, ref) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'ul' : _props$tag,\n type = props.type,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, type ? \"list-\".concat(type) : false), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: ref\n }));\n});\nList.name = 'List';\nList.propTypes = propTypes;\nexport default List;","import { formatBytes } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useCallback, useEffect, useState } from 'react'\r\nimport { FileRejection } from 'react-dropzone'\r\nimport { Card, CardImg, CardImgOverlay, CardText, CardTitle, List } from 'reactstrap'\r\nimport styled from 'styled-components'\r\n\r\ninterface PostFileRejectionProps {\r\n rejection: FileRejection\r\n}\r\n\r\nexport default (props: PostFileRejectionProps) => {\r\n return (\r\n <React.Fragment>\r\n {props.rejection && (\r\n <List>\r\n <li>\r\n {props.rejection.file.name}\r\n {props.rejection.errors && props.rejection.errors.length > 0 && (\r\n <ul>\r\n {props.rejection.errors.map((s, idx) => (\r\n <li className='text-danger'>{s.message}</li>\r\n ))}\r\n </ul>\r\n )}\r\n </li>\r\n </List>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useCallback, useEffect, useState } from 'react'\r\nimport { FileRejection } from 'react-dropzone'\r\nimport styled from 'styled-components'\r\n\r\nimport PostFileRejection from './PostFileRejection'\r\n\r\ninterface PostFileRejectionsProps {\r\n fileRejects: FileRejection[]\r\n}\r\n\r\nexport default (props: PostFileRejectionsProps) => {\r\n return (\r\n <React.Fragment>\r\n {props.fileRejects && props.fileRejects.length > 0 && (\r\n <PostFileRejectionContainer>\r\n <p className='text-danger'>The following files could not be uploaded: </p>\r\n {props.fileRejects.map((s, idx) => (\r\n <PostFileRejection rejection={s} />\r\n ))}\r\n </PostFileRejectionContainer>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nconst PostFileRejectionContainer = styled.div`\r\n padding: 7px 10px;\r\n margin: 0;\r\n font-size: 13px;\r\n line-height: 16px;\r\n color: var(--bs-secondary-text-emphasis);\r\n background-color: var(--bs-secondary-bg);\r\n border: 1px solid var(--bs-secondary-color);\r\n border-top: 0;\r\n border-top-color: currentcolor;\r\n border-bottom-right-radius: 6px;\r\n border-bottom-left-radius: 6px;\r\n`\r\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"cssModule\", \"children\", \"isOpen\", \"flip\", \"target\", \"offset\", \"fallbackPlacements\", \"placementPrefix\", \"arrowClassName\", \"hideArrow\", \"popperClassName\", \"tag\", \"container\", \"modifiers\", \"strategy\", \"boundariesElement\", \"onClosed\", \"fade\", \"transition\", \"placement\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { Popper as ReactPopper } from 'react-popper';\nimport { getTarget, targetPropType, mapToCssModules, DOMElement, tagPropType } from './utils';\nimport Fade from './Fade';\nfunction noop() {}\nvar propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n popperClassName: PropTypes.string,\n placement: PropTypes.string,\n placementPrefix: PropTypes.string,\n arrowClassName: PropTypes.string,\n hideArrow: PropTypes.bool,\n tag: tagPropType,\n isOpen: PropTypes.bool,\n cssModule: PropTypes.object,\n offset: PropTypes.arrayOf(PropTypes.number),\n fallbackPlacements: PropTypes.array,\n flip: PropTypes.bool,\n container: targetPropType,\n target: targetPropType.isRequired,\n modifiers: PropTypes.array,\n strategy: PropTypes.string,\n boundariesElement: PropTypes.oneOfType([PropTypes.string, DOMElement]),\n onClosed: PropTypes.func,\n fade: PropTypes.bool,\n transition: PropTypes.shape(Fade.propTypes)\n};\nvar defaultProps = {\n boundariesElement: 'scrollParent',\n placement: 'auto',\n hideArrow: false,\n isOpen: false,\n offset: [0, 0],\n flip: true,\n container: 'body',\n modifiers: [],\n onClosed: noop,\n fade: true,\n transition: _objectSpread({}, Fade.defaultProps)\n};\nvar PopperContent = /*#__PURE__*/function (_React$Component) {\n _inherits(PopperContent, _React$Component);\n var _super = _createSuper(PopperContent);\n function PopperContent(props) {\n var _this;\n _classCallCheck(this, PopperContent);\n _this = _super.call(this, props);\n _this.setTargetNode = _this.setTargetNode.bind(_assertThisInitialized(_this));\n _this.getTargetNode = _this.getTargetNode.bind(_assertThisInitialized(_this));\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.onClosed = _this.onClosed.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: props.isOpen\n };\n return _this;\n }\n _createClass(PopperContent, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (this._element && this._element.childNodes && this._element.childNodes[0] && this._element.childNodes[0].focus) {\n this._element.childNodes[0].focus();\n }\n }\n }, {\n key: \"onClosed\",\n value: function onClosed() {\n this.props.onClosed();\n this.setState({\n isOpen: false\n });\n }\n }, {\n key: \"getTargetNode\",\n value: function getTargetNode() {\n return this.targetNode;\n }\n }, {\n key: \"getContainerNode\",\n value: function getContainerNode() {\n return getTarget(this.props.container);\n }\n }, {\n key: \"getRef\",\n value: function getRef(ref) {\n this._element = ref;\n }\n }, {\n key: \"setTargetNode\",\n value: function setTargetNode(node) {\n this.targetNode = typeof node === 'string' ? getTarget(node) : node;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this$props = this.props,\n cssModule = _this$props.cssModule,\n children = _this$props.children,\n isOpen = _this$props.isOpen,\n flip = _this$props.flip,\n target = _this$props.target,\n offset = _this$props.offset,\n fallbackPlacements = _this$props.fallbackPlacements,\n placementPrefix = _this$props.placementPrefix,\n _arrowClassName = _this$props.arrowClassName,\n hideArrow = _this$props.hideArrow,\n _popperClassName = _this$props.popperClassName,\n tag = _this$props.tag,\n container = _this$props.container,\n modifiers = _this$props.modifiers,\n strategy = _this$props.strategy,\n boundariesElement = _this$props.boundariesElement,\n onClosed = _this$props.onClosed,\n fade = _this$props.fade,\n transition = _this$props.transition,\n placement = _this$props.placement,\n attrs = _objectWithoutProperties(_this$props, _excluded);\n var arrowClassName = mapToCssModules(classNames('arrow', _arrowClassName), cssModule);\n var popperClassName = mapToCssModules(classNames(_popperClassName, placementPrefix ? \"\".concat(placementPrefix, \"-auto\") : ''), this.props.cssModule);\n var modifierNames = modifiers.map(function (m) {\n return m.name;\n });\n var baseModifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'flip',\n enabled: flip,\n options: {\n fallbackPlacements: fallbackPlacements\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: boundariesElement\n }\n }].filter(function (m) {\n return !modifierNames.includes(m.name);\n });\n var extendedModifiers = [].concat(_toConsumableArray(baseModifiers), _toConsumableArray(modifiers));\n var popperTransition = _objectSpread(_objectSpread(_objectSpread({}, Fade.defaultProps), transition), {}, {\n baseClass: fade ? transition.baseClass : '',\n timeout: fade ? transition.timeout : 0\n });\n return /*#__PURE__*/React.createElement(Fade, _extends({}, popperTransition, attrs, {\n \"in\": isOpen,\n onExited: this.onClosed,\n tag: tag\n }), /*#__PURE__*/React.createElement(ReactPopper, {\n referenceElement: this.targetNode,\n modifiers: extendedModifiers,\n placement: placement,\n strategy: strategy\n }, function (_ref) {\n var ref = _ref.ref,\n style = _ref.style,\n popperPlacement = _ref.placement,\n isReferenceHidden = _ref.isReferenceHidden,\n arrowProps = _ref.arrowProps,\n update = _ref.update;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n style: style,\n className: popperClassName,\n \"data-popper-placement\": popperPlacement,\n \"data-popper-reference-hidden\": isReferenceHidden ? 'true' : undefined\n }, typeof children === 'function' ? children({\n update: update\n }) : children, !hideArrow && /*#__PURE__*/React.createElement(\"span\", {\n ref: arrowProps.ref,\n className: arrowClassName,\n style: arrowProps.style\n }));\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n this.setTargetNode(this.props.target);\n if (this.state.isOpen) {\n return this.props.container === 'inline' ? this.renderChildren() : /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(\"div\", {\n ref: this.getRef\n }, this.renderChildren()), this.getContainerNode());\n }\n return null;\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return {\n isOpen: props.isOpen\n };\n }\n return null;\n }\n }]);\n return PopperContent;\n}(React.Component);\nPopperContent.propTypes = propTypes;\nPopperContent.defaultProps = defaultProps;\nexport default PopperContent;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport PopperContent from './PopperContent';\nimport { getTarget, targetPropType, omit, PopperPlacements, mapToCssModules, DOMElement } from './utils';\nexport var propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n placement: PropTypes.oneOf(PopperPlacements),\n target: targetPropType.isRequired,\n container: targetPropType,\n isOpen: PropTypes.bool,\n disabled: PropTypes.bool,\n hideArrow: PropTypes.bool,\n boundariesElement: PropTypes.oneOfType([PropTypes.string, DOMElement]),\n className: PropTypes.string,\n innerClassName: PropTypes.string,\n arrowClassName: PropTypes.string,\n popperClassName: PropTypes.string,\n cssModule: PropTypes.object,\n toggle: PropTypes.func,\n autohide: PropTypes.bool,\n placementPrefix: PropTypes.string,\n delay: PropTypes.oneOfType([PropTypes.shape({\n show: PropTypes.number,\n hide: PropTypes.number\n }), PropTypes.number]),\n modifiers: PropTypes.array,\n strategy: PropTypes.string,\n offset: PropTypes.arrayOf(PropTypes.number),\n innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object]),\n trigger: PropTypes.string,\n fade: PropTypes.bool,\n flip: PropTypes.bool\n};\nvar DEFAULT_DELAYS = {\n show: 0,\n hide: 50\n};\nvar defaultProps = {\n isOpen: false,\n hideArrow: false,\n autohide: false,\n delay: DEFAULT_DELAYS,\n toggle: function toggle() {},\n trigger: 'click',\n fade: true\n};\nfunction isInDOMSubtree(element, subtreeRoot) {\n return subtreeRoot && (element === subtreeRoot || subtreeRoot.contains(element));\n}\nfunction isInDOMSubtrees(element) {\n var subtreeRoots = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return subtreeRoots && subtreeRoots.length && subtreeRoots.filter(function (subTreeRoot) {\n return isInDOMSubtree(element, subTreeRoot);\n })[0];\n}\nvar TooltipPopoverWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(TooltipPopoverWrapper, _React$Component);\n var _super = _createSuper(TooltipPopoverWrapper);\n function TooltipPopoverWrapper(props) {\n var _this;\n _classCallCheck(this, TooltipPopoverWrapper);\n _this = _super.call(this, props);\n _this._targets = [];\n _this.currentTargetElement = null;\n _this.addTargetEvents = _this.addTargetEvents.bind(_assertThisInitialized(_this));\n _this.handleDocumentClick = _this.handleDocumentClick.bind(_assertThisInitialized(_this));\n _this.removeTargetEvents = _this.removeTargetEvents.bind(_assertThisInitialized(_this));\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n _this.showWithDelay = _this.showWithDelay.bind(_assertThisInitialized(_this));\n _this.hideWithDelay = _this.hideWithDelay.bind(_assertThisInitialized(_this));\n _this.onMouseOverTooltipContent = _this.onMouseOverTooltipContent.bind(_assertThisInitialized(_this));\n _this.onMouseLeaveTooltipContent = _this.onMouseLeaveTooltipContent.bind(_assertThisInitialized(_this));\n _this.show = _this.show.bind(_assertThisInitialized(_this));\n _this.hide = _this.hide.bind(_assertThisInitialized(_this));\n _this.onEscKeyDown = _this.onEscKeyDown.bind(_assertThisInitialized(_this));\n _this.getRef = _this.getRef.bind(_assertThisInitialized(_this));\n _this.state = {\n isOpen: props.isOpen\n };\n _this._isMounted = false;\n return _this;\n }\n _createClass(TooltipPopoverWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._isMounted = true;\n this.updateTarget();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._isMounted = false;\n this.removeTargetEvents();\n this._targets = null;\n this.clearShowTimeout();\n this.clearHideTimeout();\n }\n }, {\n key: \"handleDocumentClick\",\n value: function handleDocumentClick(e) {\n var triggers = this.props.trigger.split(' ');\n if (triggers.indexOf('legacy') > -1 && (this.props.isOpen || isInDOMSubtrees(e.target, this._targets))) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n if (this.props.isOpen && !isInDOMSubtree(e.target, this._popover)) {\n this.hideWithDelay(e);\n } else if (!this.props.isOpen) {\n this.showWithDelay(e);\n }\n } else if (triggers.indexOf('click') > -1 && isInDOMSubtrees(e.target, this._targets)) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n if (!this.props.isOpen) {\n this.showWithDelay(e);\n } else {\n this.hideWithDelay(e);\n }\n }\n }\n }, {\n key: \"onMouseOverTooltipContent\",\n value: function onMouseOverTooltipContent() {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n if (this.state.isOpen && !this.props.isOpen) {\n this.toggle();\n }\n }\n }\n }, {\n key: \"onMouseLeaveTooltipContent\",\n value: function onMouseLeaveTooltipContent(e) {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n e.persist();\n this._hideTimeout = setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n }\n }, {\n key: \"onEscKeyDown\",\n value: function onEscKeyDown(e) {\n if (e.key === 'Escape') {\n this.hide(e);\n }\n }\n }, {\n key: \"getRef\",\n value: function getRef(ref) {\n var innerRef = this.props.innerRef;\n if (innerRef) {\n if (typeof innerRef === 'function') {\n innerRef(ref);\n } else if (_typeof(innerRef) === 'object') {\n innerRef.current = ref;\n }\n }\n this._popover = ref;\n }\n }, {\n key: \"getDelay\",\n value: function getDelay(key) {\n var delay = this.props.delay;\n if (_typeof(delay) === 'object') {\n return isNaN(delay[key]) ? DEFAULT_DELAYS[key] : delay[key];\n }\n return delay;\n }\n }, {\n key: \"getCurrentTarget\",\n value: function getCurrentTarget(target) {\n if (!target) return null;\n var index = this._targets.indexOf(target);\n if (index >= 0) return this._targets[index];\n return this.getCurrentTarget(target.parentElement);\n }\n }, {\n key: \"show\",\n value: function show(e) {\n if (!this.props.isOpen) {\n this.clearShowTimeout();\n this.currentTargetElement = e ? e.currentTarget || this.getCurrentTarget(e.target) : null;\n if (e && e.composedPath && typeof e.composedPath === 'function') {\n var path = e.composedPath();\n this.currentTargetElement = path && path[0] || this.currentTargetElement;\n }\n this.toggle(e);\n }\n }\n }, {\n key: \"showWithDelay\",\n value: function showWithDelay(e) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n this._showTimeout = setTimeout(this.show.bind(this, e), this.getDelay('show'));\n }\n }, {\n key: \"hide\",\n value: function hide(e) {\n if (this.props.isOpen) {\n this.clearHideTimeout();\n this.currentTargetElement = null;\n this.toggle(e);\n }\n }\n }, {\n key: \"hideWithDelay\",\n value: function hideWithDelay(e) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n this._hideTimeout = setTimeout(this.hide.bind(this, e), this.getDelay('hide'));\n }\n }, {\n key: \"clearShowTimeout\",\n value: function clearShowTimeout() {\n clearTimeout(this._showTimeout);\n this._showTimeout = undefined;\n }\n }, {\n key: \"clearHideTimeout\",\n value: function clearHideTimeout() {\n clearTimeout(this._hideTimeout);\n this._hideTimeout = undefined;\n }\n }, {\n key: \"addEventOnTargets\",\n value: function addEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(function (target) {\n target.addEventListener(type, handler, isBubble);\n });\n }\n }, {\n key: \"removeEventOnTargets\",\n value: function removeEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(function (target) {\n target.removeEventListener(type, handler, isBubble);\n });\n }\n }, {\n key: \"addTargetEvents\",\n value: function addTargetEvents() {\n if (this.props.trigger) {\n var triggers = this.props.trigger.split(' ');\n if (triggers.indexOf('manual') === -1) {\n if (triggers.indexOf('click') > -1 || triggers.indexOf('legacy') > -1) {\n document.addEventListener('click', this.handleDocumentClick, true);\n }\n if (this._targets && this._targets.length) {\n if (triggers.indexOf('hover') > -1) {\n this.addEventOnTargets('mouseover', this.showWithDelay, true);\n this.addEventOnTargets('mouseout', this.hideWithDelay, true);\n }\n if (triggers.indexOf('focus') > -1) {\n this.addEventOnTargets('focusin', this.show, true);\n this.addEventOnTargets('focusout', this.hide, true);\n }\n this.addEventOnTargets('keydown', this.onEscKeyDown, true);\n }\n }\n }\n }\n }, {\n key: \"removeTargetEvents\",\n value: function removeTargetEvents() {\n if (this._targets) {\n this.removeEventOnTargets('mouseover', this.showWithDelay, true);\n this.removeEventOnTargets('mouseout', this.hideWithDelay, true);\n this.removeEventOnTargets('keydown', this.onEscKeyDown, true);\n this.removeEventOnTargets('focusin', this.show, true);\n this.removeEventOnTargets('focusout', this.hide, true);\n }\n document.removeEventListener('click', this.handleDocumentClick, true);\n }\n }, {\n key: \"updateTarget\",\n value: function updateTarget() {\n var newTarget = getTarget(this.props.target, true);\n if (newTarget !== this._targets) {\n this.removeTargetEvents();\n this._targets = newTarget ? Array.from(newTarget) : [];\n this.currentTargetElement = this.currentTargetElement || this._targets[0];\n this.addTargetEvents();\n }\n }\n }, {\n key: \"toggle\",\n value: function toggle(e) {\n if (this.props.disabled || !this._isMounted) {\n return e && e.preventDefault();\n }\n return this.props.toggle(e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n if (this.props.isOpen) {\n this.updateTarget();\n }\n var target = this.currentTargetElement || this._targets[0];\n if (!target) {\n return null;\n }\n var _this$props = this.props,\n className = _this$props.className,\n cssModule = _this$props.cssModule,\n innerClassName = _this$props.innerClassName,\n isOpen = _this$props.isOpen,\n hideArrow = _this$props.hideArrow,\n boundariesElement = _this$props.boundariesElement,\n placement = _this$props.placement,\n placementPrefix = _this$props.placementPrefix,\n arrowClassName = _this$props.arrowClassName,\n popperClassName = _this$props.popperClassName,\n container = _this$props.container,\n modifiers = _this$props.modifiers,\n strategy = _this$props.strategy,\n offset = _this$props.offset,\n fade = _this$props.fade,\n flip = _this$props.flip,\n children = _this$props.children;\n var attributes = omit(this.props, Object.keys(propTypes));\n var popperClasses = mapToCssModules(popperClassName, cssModule);\n var classes = mapToCssModules(innerClassName, cssModule);\n return /*#__PURE__*/React.createElement(PopperContent, {\n className: className,\n target: target,\n isOpen: isOpen,\n hideArrow: hideArrow,\n boundariesElement: boundariesElement,\n placement: placement,\n placementPrefix: placementPrefix,\n arrowClassName: arrowClassName,\n popperClassName: popperClasses,\n container: container,\n modifiers: modifiers,\n strategy: strategy,\n offset: offset,\n cssModule: cssModule,\n fade: fade,\n flip: flip\n }, function (_ref) {\n var update = _ref.update;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n ref: _this2.getRef,\n className: classes,\n role: \"tooltip\",\n onMouseOver: _this2.onMouseOverTooltipContent,\n onMouseLeave: _this2.onMouseLeaveTooltipContent,\n onKeyDown: _this2.onEscKeyDown\n }), typeof children === 'function' ? children({\n update: update\n }) : children);\n });\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return {\n isOpen: props.isOpen\n };\n }\n return null;\n }\n }]);\n return TooltipPopoverWrapper;\n}(React.Component);\nTooltipPopoverWrapper.propTypes = propTypes;\nTooltipPopoverWrapper.defaultProps = defaultProps;\nexport default TooltipPopoverWrapper;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from 'react';\nimport classNames from 'classnames';\nimport TooltipPopoverWrapper, { propTypes } from './TooltipPopoverWrapper';\nvar defaultProps = {\n placement: 'top',\n autohide: true,\n placementPrefix: 'bs-tooltip',\n trigger: 'hover focus'\n};\nfunction Tooltip(props) {\n var arrowClasses = classNames('tooltip-arrow', props.arrowClassName);\n var popperClasses = classNames('tooltip', 'show', props.popperClassName);\n var classes = classNames('tooltip-inner', props.innerClassName);\n return /*#__PURE__*/React.createElement(TooltipPopoverWrapper, _extends({}, props, {\n arrowClassName: arrowClasses,\n popperClassName: popperClasses,\n innerClassName: classes\n }));\n}\nTooltip.propTypes = propTypes;\nTooltip.defaultProps = defaultProps;\nexport default Tooltip;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from './Tooltip';\nimport { omit } from './utils';\nvar omitKeys = ['defaultOpen'];\nvar UncontrolledTooltip = /*#__PURE__*/function (_Component) {\n _inherits(UncontrolledTooltip, _Component);\n var _super = _createSuper(UncontrolledTooltip);\n function UncontrolledTooltip(props) {\n var _this;\n _classCallCheck(this, UncontrolledTooltip);\n _this = _super.call(this, props);\n _this.state = {\n isOpen: props.defaultOpen || false\n };\n _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(UncontrolledTooltip, [{\n key: \"toggle\",\n value: function toggle() {\n this.setState(function (prevState) {\n return {\n isOpen: !prevState.isOpen\n };\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(Tooltip, _extends({\n isOpen: this.state.isOpen,\n toggle: this.toggle\n }, omit(this.props, omitKeys)));\n }\n }]);\n return UncontrolledTooltip;\n}(Component);\nexport { UncontrolledTooltip as default };\nUncontrolledTooltip.propTypes = _objectSpread({\n defaultOpen: PropTypes.bool\n}, Tooltip.propTypes);","// Register `hName`, `hProperties` types, used when turning markdown to HTML:\r\n/// <reference types=\"mdast-util-to-hast\" />\r\n// Register directive nodes in mdast:\r\n/// <reference types=\"mdast-util-directive\" />\r\n\r\nimport { visit } from 'unist-util-visit'\r\n\r\nconst colorMapping = new Map(\r\n Object.entries({\r\n red: '#ff4747',\r\n blue: '#3636ff',\r\n yellow: '#fff238',\r\n orange: '#ffa303',\r\n cyan: '#05deff',\r\n purple: '#dd02ff',\r\n violet: '#ae0cff',\r\n lime: '#2bff01',\r\n green: '#029e3b',\r\n })\r\n)\r\n\r\n// This plugin is an example to turn `::color` into divs, passing the color\r\nexport default function remarkColorDirectivePlugin() {\r\n /**\r\n * @param {import('mdast').Root} tree\r\n * Tree.\r\n * @returns {undefined}\r\n * Nothing.\r\n */\r\n return (tree: any) => {\r\n // @ts-ignore\r\n visit(tree, (node) => {\r\n if (\r\n node.type === 'containerDirective' ||\r\n node.type === 'leafDirective' ||\r\n node.type === 'textDirective'\r\n ) {\r\n const nodeName = String(node.name)\r\n if (!colorMapping.has(nodeName)) return\r\n\r\n const data = node.data || (node.data = {})\r\n const tagName = node.type === 'textDirective' ? 'span' : 'div'\r\n\r\n data.hName = tagName\r\n data.hProperties = { style: `color: ${colorMapping.get(nodeName)}`, }\r\n }\r\n })\r\n }\r\n}","import ReactMarkdown from 'react-markdown'\r\nimport rehypeRaw from 'rehype-raw'\r\nimport rehypeSanitize, { defaultSchema } from 'rehype-sanitize'\r\nimport remarkBreaks from 'remark-breaks'\r\nimport remarkDirective from 'remark-directive'\r\nimport remarkGfm from 'remark-gfm'\r\nimport remarkImages from 'remark-images'\r\nimport remarkColorDirectivePlugin from '../../remarkColorDirectivePlugin'\r\n\r\ninterface MarkdownPostProps {\r\n content: string\r\n}\r\n\r\nexport default (props: MarkdownPostProps) => {\r\n return (\r\n <ReactMarkdown\r\n remarkPlugins={[[remarkGfm, { singleTilde: false }], remarkBreaks, remarkDirective, remarkImages, remarkColorDirectivePlugin]}\r\n rehypePlugins={[\r\n [\r\n rehypeRaw,\r\n ],\r\n ]}\r\n >\r\n {props.content}\r\n </ReactMarkdown>\r\n )\r\n}\r\n","import RelativeTime from '@yaireo/relative-time'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, CloseButton, Collapse, NavLink, UncontrolledTooltip } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { IIndividualPostVm, ThreadPostsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport MarkdownPost from '../markdown-post/MarkdownPost'\r\n\r\ninterface QuoteBoxProps {\r\n quotedPostId: number\r\n setQuotedPostId: React.Dispatch<React.SetStateAction<number>>\r\n editMode: boolean\r\n}\r\n\r\nexport default (props: QuoteBoxProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [quotedPost, setQuotedPost] = useState<IIndividualPostVm>(null)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [open, setOpen] = useState<boolean>(false)\r\n const relativeTime = new RelativeTime()\r\n\r\n const toggle = async () => {\r\n let op: boolean = !open\r\n\r\n setOpen(op)\r\n\r\n if (op === true) {\r\n loadQuotedPost()\r\n }\r\n }\r\n\r\n const loadQuotedPost = async () => {\r\n if (props.quotedPostId > 0 && (!quotedPost || quotedPost?.post?.id !== props.quotedPostId)) {\r\n setLoading(true)\r\n try {\r\n let client = new ThreadPostsClient()\r\n\r\n const response = await client.getThreadPostByPostId(props.quotedPostId, props.quotedPostId).then((response) => response.toJSON() as Promise<IIndividualPostVm>)\r\n\r\n setQuotedPost(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (open === true) {\r\n toggle()\r\n }\r\n }, [props.quotedPostId])\r\n\r\n return (\r\n <React.Fragment>\r\n {props.quotedPostId > 0 && (\r\n <div>\r\n <div className='quote-box' onClick={toggle}>\r\n <span className='quoted-post-id'>This post is in reply to post id: #{props.quotedPostId}</span>\r\n <div className='quote-post-icons'>\r\n <i className='bi bi-caret-down-square'></i>\r\n {props.editMode && <CloseButton variant='white' onClick={(e) => props.setQuotedPostId(0)} className='ms-2' />}\r\n </div>\r\n </div>\r\n <Collapse isOpen={open}>\r\n <div className='thread-container m-2'>\r\n {!loading && quotedPost && (\r\n <div className='post'>\r\n <div className='post-header'>\r\n <div className='post-author'>\r\n {quotedPost.post.postAuthorUserName && (\r\n <NavLink to={`/user/${quotedPost.post.postAuthorUserName}`}>{quotedPost.post.postAuthorDisplayName}</NavLink>\r\n )}\r\n {!quotedPost.post.postAuthorUserName && quotedPost.post.postAuthorDisplayName}\r\n </div>\r\n {quotedPost.post.postAuthorBadgeUrl.length > 0 && (\r\n <div className='post-author-badge'>\r\n <span id='userBadge'>\r\n <img src={quotedPost.post.postAuthorBadgeUrl} />\r\n </span>\r\n <UncontrolledTooltip flip target='userBadge'>\r\n {quotedPost.post.postAuthorBadgeName}\r\n </UncontrolledTooltip>\r\n </div>\r\n )}\r\n <div className='post-num'>#{quotedPost.post.postNumber}</div>\r\n </div>\r\n <div className='post-body'>\r\n <MarkdownPost content={quotedPost.post.postContent} />\r\n </div>\r\n <div className='post-footer'>\r\n <div className='post-date'>\r\n <span id={'dateCreated' + quotedPost.post.id}>{relativeTime.from(new Date(quotedPost.post.created))}</span>\r\n <UncontrolledTooltip placement='bottom' target={'dateCreated' + quotedPost.post.id}>\r\n {new Intl.DateTimeFormat('default', { dateStyle: 'full', timeStyle: 'long' }).format(new Date(quotedPost.post.created))}\r\n </UncontrolledTooltip>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </Collapse>\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { FileParameter, PostFileUploadItem, ThreadPostsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface SubmitPostButtonProps {\r\n threadId: number\r\n quotedPostId: number\r\n post: string\r\n setPost: React.Dispatch<React.SetStateAction<string>>\r\n setNewPostNum: React.Dispatch<React.SetStateAction<number>>\r\n setQuotedPostId: React.Dispatch<React.SetStateAction<number>>\r\n setMode: React.Dispatch<React.SetStateAction<string>>\r\n uploadedFiles: File[]\r\n setuploadedFiles: React.Dispatch<React.SetStateAction<File[]>>\r\n descriptions: PostFileUploadItem[]\r\n}\r\n\r\nexport default (props: SubmitPostButtonProps) => {\r\n const error = React.useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const submitPost = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ThreadPostsClient()\r\n var quoteId = null\r\n var files: FileParameter[] = []\r\n\r\n if (props.quotedPostId > 0) {\r\n quoteId = props.quotedPostId\r\n }\r\n\r\n props.uploadedFiles.map((s, idx) => {\r\n var f: FileParameter = {\r\n fileName: s.name,\r\n data: s,\r\n }\r\n files = [...files, f]\r\n })\r\n\r\n const response = await client.create(props.threadId, props.post, quoteId, files, props.descriptions).then((response) => response)\r\n props.setPost('')\r\n props.setQuotedPostId(0)\r\n props.setNewPostNum(response)\r\n props.setuploadedFiles([])\r\n props.setMode(null)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex'>\r\n <div className='ms-auto mt-2'>\r\n <Button disabled={!props.post || props.threadId <= 0} onClick={submitPost}>\r\n Submit Post\r\n </Button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { FileRejection } from 'react-dropzone'\r\n\r\nimport { PostFileUploadItem } from '../../lib/DoomCentral'\r\nimport NewPostBoxContainer from './NewPostBoxContainer'\r\nimport PostFileDropzone from './PostFileDropzone'\r\nimport PostFilePreviewer from './PostFilePreviewer'\r\nimport PostFileRejections from './PostFileRejections'\r\nimport QuoteBox from './QuoteBox'\r\nimport SubmitPostButton from './SubmitPostButton'\r\n\r\ninterface PostStationProps {\r\n id: number\r\n quotedPostId: number\r\n setQuotedPostId: React.Dispatch<React.SetStateAction<number>>\r\n setNewPostNum: React.Dispatch<React.SetStateAction<number>>\r\n setGotoMode: React.Dispatch<React.SetStateAction<string>>\r\n allowedFileExtensions: string\r\n maxFileSizeBytes: number\r\n maxFilesInPost: number\r\n}\r\n\r\nexport default (props: PostStationProps) => {\r\n const [uploadedFiles, setUploadedFiles] = useState<File[]>([])\r\n const [fileRejects, setFileRejects] = useState<FileRejection[]>([])\r\n const [descriptions, setDescriptions] = useState<PostFileUploadItem[]>([])\r\n const [post, setPost] = useState<string>('')\r\n\r\n const removeFile = (fileName: string) => {\r\n if (!uploadedFiles.some((s) => s.name === fileName)) {\r\n return\r\n }\r\n\r\n var newFiles = [...uploadedFiles.filter((f) => f.name === fileName)]\r\n\r\n setUploadedFiles(newFiles)\r\n }\r\n\r\n const updateDescription = (fileName: string, description: string): void => {\r\n var updatedDescriptions: PostFileUploadItem[] = []\r\n\r\n if (descriptions.some((s) => s.fileName === fileName)) {\r\n var newArray = descriptions.map((obj) => {\r\n if (obj.fileName === fileName) {\r\n var newDescription = new PostFileUploadItem()\r\n\r\n newDescription.description = description\r\n newDescription.fileName = fileName\r\n\r\n return newDescription\r\n }\r\n return obj\r\n })\r\n\r\n updatedDescriptions = newArray\r\n } else {\r\n var newDescription = new PostFileUploadItem()\r\n\r\n newDescription.description = description\r\n newDescription.fileName = fileName\r\n\r\n updatedDescriptions = [...descriptions, newDescription]\r\n }\r\n\r\n setDescriptions(updatedDescriptions)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <QuoteBox quotedPostId={props.quotedPostId} setQuotedPostId={props.setQuotedPostId} editMode={true} />\r\n <NewPostBoxContainer post={post} setPost={setPost} />\r\n <PostFileDropzone\r\n allowedFileExtensions={props.allowedFileExtensions}\r\n maxFilesInPost={props.maxFilesInPost}\r\n maxFileSizeBytes={props.maxFileSizeBytes}\r\n currentFiles={0}\r\n fileRejects={fileRejects}\r\n setFileRejects={setFileRejects}\r\n setUploadedFiles={setUploadedFiles}\r\n uploadedFiles={uploadedFiles}\r\n />\r\n <PostFilePreviewer removeFile={removeFile} uploadedFiles={uploadedFiles} descriptions={descriptions} updateDescription={updateDescription} />\r\n <PostFileRejections fileRejects={fileRejects} />\r\n <SubmitPostButton\r\n post={post}\r\n quotedPostId={props.quotedPostId}\r\n setPost={setPost}\r\n threadId={props.id}\r\n setMode={props.setGotoMode}\r\n setNewPostNum={props.setNewPostNum}\r\n setQuotedPostId={props.setQuotedPostId}\r\n uploadedFiles={uploadedFiles}\r\n setuploadedFiles={setUploadedFiles}\r\n descriptions={descriptions}\r\n />\r\n </React.Fragment>\r\n )\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link, NavLink } from 'react-router-dom';\n\nlet hashFragment = '';\nlet observer = null;\nlet asyncTimerId = null;\nlet scrollFunction = null;\n\nfunction reset() {\n hashFragment = '';\n if (observer !== null) observer.disconnect();\n if (asyncTimerId !== null) {\n window.clearTimeout(asyncTimerId);\n asyncTimerId = null;\n }\n}\n\nfunction isInteractiveElement(element) {\n const formTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'];\n const linkTags = ['A', 'AREA'];\n return (\n (formTags.includes(element.tagName) && !element.hasAttribute('disabled')) ||\n (linkTags.includes(element.tagName) && element.hasAttribute('href'))\n );\n}\n\nfunction getElAndScroll() {\n let element = null;\n if (hashFragment === '#') {\n // use document.body instead of document.documentElement because of a bug in smoothscroll-polyfill in safari\n // see https://github.com/iamdustan/smoothscroll/issues/138\n // while smoothscroll-polyfill is not included, it is the recommended way to implement smoothscroll\n // in browsers that don't natively support el.scrollIntoView({ behavior: 'smooth' })\n element = document.body;\n } else {\n // check for element with matching id before assume '#top' is the top of the document\n // see https://html.spec.whatwg.org/multipage/browsing-the-web.html#target-element\n const id = hashFragment.replace('#', '');\n element = document.getElementById(id);\n if (element === null && hashFragment === '#top') {\n // see above comment for why document.body instead of document.documentElement\n element = document.body;\n }\n }\n\n if (element !== null) {\n scrollFunction(element);\n\n // update focus to where the page is scrolled to\n // unfortunately this doesn't work in safari (desktop and iOS) when blur() is called\n let originalTabIndex = element.getAttribute('tabindex');\n if (originalTabIndex === null && !isInteractiveElement(element)) {\n element.setAttribute('tabindex', -1);\n }\n element.focus({ preventScroll: true });\n if (originalTabIndex === null && !isInteractiveElement(element)) {\n // for some reason calling blur() in safari resets the focus region to where it was previously,\n // if blur() is not called it works in safari, but then are stuck with default focus styles\n // on an element that otherwise might never had focus styles applied, so not an option\n element.blur();\n element.removeAttribute('tabindex');\n }\n\n reset();\n return true;\n }\n return false;\n}\n\nfunction hashLinkScroll(timeout) {\n // Push onto callback queue so it runs after the DOM is updated\n window.setTimeout(() => {\n if (getElAndScroll() === false) {\n if (observer === null) {\n observer = new MutationObserver(getElAndScroll);\n }\n observer.observe(document, {\n attributes: true,\n childList: true,\n subtree: true,\n });\n // if the element doesn't show up in specified timeout or 10 seconds, stop checking\n asyncTimerId = window.setTimeout(() => {\n reset();\n }, timeout || 10000);\n }\n }, 0);\n}\n\nexport function genericHashLink(As) {\n return React.forwardRef((props, ref) => {\n let linkHash = '';\n if (typeof props.to === 'string' && props.to.includes('#')) {\n linkHash = `#${props.to.split('#').slice(1).join('#')}`;\n } else if (\n typeof props.to === 'object' &&\n typeof props.to.hash === 'string'\n ) {\n linkHash = props.to.hash;\n }\n\n const passDownProps = {};\n if (As === NavLink) {\n passDownProps.isActive = (match, location) =>\n match && match.isExact && location.hash === linkHash;\n }\n\n function handleClick(e) {\n reset();\n hashFragment = props.elementId ? `#${props.elementId}` : linkHash;\n if (props.onClick) props.onClick(e);\n if (\n hashFragment !== '' &&\n // ignore non-vanilla click events, same as react-router\n // below logic adapted from react-router: https://github.com/ReactTraining/react-router/blob/fc91700e08df8147bd2bb1be19a299cbb14dbcaa/packages/react-router-dom/modules/Link.js#L43-L48\n !e.defaultPrevented && // onClick prevented default\n e.button === 0 && // ignore everything but left clicks\n (!props.target || props.target === '_self') && // let browser handle \"target=_blank\" etc\n !(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) // ignore clicks with modifier keys\n ) {\n scrollFunction =\n props.scroll ||\n ((el) =>\n props.smooth\n ? el.scrollIntoView({ behavior: 'smooth' })\n : el.scrollIntoView());\n hashLinkScroll(props.timeout);\n }\n }\n const { scroll, smooth, timeout, elementId, ...filteredProps } = props;\n return (\n <As {...passDownProps} {...filteredProps} onClick={handleClick} ref={ref}>\n {props.children}\n </As>\n );\n });\n}\n\nexport const HashLink = genericHashLink(Link);\n\nexport const NavHashLink = genericHashLink(NavLink);\n\nif (process.env.NODE_ENV !== 'production') {\n HashLink.displayName = 'HashLink';\n NavHashLink.displayName = 'NavHashLink';\n\n const propTypes = {\n onClick: PropTypes.func,\n children: PropTypes.node,\n scroll: PropTypes.func,\n timeout: PropTypes.number,\n elementId: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n };\n\n HashLink.propTypes = propTypes;\n NavHashLink.propTypes = propTypes;\n}\n","import MDEditor from '@uiw/react-md-editor'\r\nimport * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { Button, Input } from 'reactstrap'\r\nimport rehypeRaw from 'rehype-raw'\r\nimport rehypeSanitize, { defaultSchema } from 'rehype-sanitize'\r\nimport remarkBreaks from 'remark-breaks'\r\nimport remarkDirective from 'remark-directive'\r\nimport remarkGfm from 'remark-gfm'\r\nimport remarkImages from 'remark-images'\r\nimport remarkUnwrapImages from 'remark-unwrap-images'\r\n\r\ninterface EditPostBoxProps {\r\n post: string\r\n setPost: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: EditPostBoxProps) => {\r\n return (\r\n <React.Fragment>\r\n <MDEditor\r\n value={props.post}\r\n onChange={props.setPost}\r\n previewOptions={{\r\n remarkPlugins: [\r\n [remarkGfm, { singleTilde: false }],\r\n remarkBreaks,\r\n remarkUnwrapImages,\r\n remarkDirective,\r\n remarkImages\r\n ],\r\n rehypePlugins: [\r\n [\r\n rehypeSanitize,\r\n ],\r\n ],\r\n }}\r\n style={{ boxShadow: 'none' }}\r\n />\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport EditPostBox from '../editpostbox/EditPostBox'\r\n\r\ninterface EditPostBoxContainerProps {\r\n post: string\r\n setPost: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: EditPostBoxContainerProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='mt-2'>\r\n <EditPostBox post={props.post} setPost={props.setPost} />\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Button, Input, InputGroup, InputGroupText } from 'reactstrap'\r\n\r\ninterface EditReasonSubmitCancelProps {\r\n editReason: string\r\n editContent: string\r\n setEditReason: React.Dispatch<React.SetStateAction<string>>\r\n cancelEditMode: VoidFunction\r\n}\r\n\r\nexport default (props: EditReasonSubmitCancelProps) => {\r\n return (\r\n <React.Fragment>\r\n <div>\r\n <InputGroup size='lg'>\r\n <InputGroupText>Edit Reason</InputGroupText>\r\n <Input onChange={(e) => props.setEditReason(e.target.value)} />\r\n <Button color='primary'>Submit</Button>\r\n <Button color='danger' onClick={(e) => props.cancelEditMode()}>\r\n Cancel\r\n </Button>\r\n </InputGroup>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import RelativeTime from '@yaireo/relative-time'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, CloseButton, Collapse, NavLink, UncontrolledTooltip } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { IIndividualPostVm, ThreadPostsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport EditPostBoxContainer from './EditPostBoxContainer'\r\nimport EditReasonSubmitCancel from './EditReasonSubmitCancel'\r\nimport QuoteBox from './QuoteBox'\r\n\r\ninterface EditPostStationProps {\r\n id: number\r\n postToQuote: number\r\n setPostToQuote: React.Dispatch<React.SetStateAction<number>>\r\n editedPost: string\r\n editReason: string\r\n clearEditMode: VoidFunction\r\n}\r\n\r\nexport default (props: EditPostStationProps) => {\r\n const [post, setPost] = useState<string>('')\r\n const [editReason, setEditReason] = useState<string>('')\r\n\r\n useEffect(() => {\r\n setPost(props.editedPost)\r\n }, [props.editedPost])\r\n\r\n useEffect(() => {\r\n setEditReason(props.editReason)\r\n }, [props.editReason])\r\n\r\n return (\r\n <React.Fragment>\r\n <QuoteBox quotedPostId={props.postToQuote} setQuotedPostId={props.setPostToQuote} editMode={true} />\r\n <EditPostBoxContainer post={post} setPost={setPost} />\r\n <EditReasonSubmitCancel cancelEditMode={props.clearEditMode} editReason={editReason} setEditReason={setEditReason} editContent={post} />\r\n </React.Fragment>\r\n )\r\n}\r\n","import { formatBytes } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useCallback, useEffect, useState } from 'react'\r\nimport { Button, Card, CardImg, CardImgOverlay, CardText, CardTitle, Input } from 'reactstrap'\r\n\r\nimport { PostFileDto } from '../../lib/DoomCentral'\r\n\r\ninterface PostFileDisplayProps {\r\n postFile: PostFileDto\r\n postId: number\r\n removeFile: (id: number) => void\r\n}\r\n\r\nexport default (props: PostFileDisplayProps) => {\r\n const getPreviewImageForFileNameString = (fileName: string, postId: number): string => {\r\n var approvedImageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webm', '.webp'] as string[]\r\n if (approvedImageExtensions.some((s) => fileName.endsWith(s))) {\r\n return '/postfiles/' + String(postId) + '/' + fileName\r\n }\r\n\r\n // Put other file types here.\r\n var zipExtensions = ['.zip', '.pk3', '.7z', '.rar'] as string[]\r\n if (zipExtensions.some((s) => fileName.endsWith(s))) {\r\n return '/images/filetypes/filetypeplaceholder_zip.png'\r\n }\r\n\r\n return '/images/filetypes/filetypeplaceholder_any.png'\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n {props.postFile && (\r\n <React.Fragment>\r\n <Card inverse>\r\n <CardImg\r\n alt={`Image preview for file ${props.postFile.postFileName}`}\r\n src={getPreviewImageForFileNameString(props.postFile.postFileName, props.postId)}\r\n style={{\r\n height: 150,\r\n }}\r\n width='100%'\r\n />\r\n <CardImgOverlay>\r\n <CardTitle tag='h5'>{props.postFile.postFileName}</CardTitle>\r\n <CardText>\r\n <small className='text-muted'>{formatBytes(props.postFile.sizeBytes)}</small>\r\n </CardText>\r\n <CardText>{props.postFile.postFileDescription}</CardText>\r\n </CardImgOverlay>\r\n <a\r\n href={getPreviewImageForFileNameString(props.postFile.postFileName, props.postId)}\r\n target='_blank'\r\n rel='noopener noreferrer'\r\n className='btn btn-primary stretched-link'\r\n >\r\n Download\r\n </a>\r\n </Card>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport styled from 'styled-components'\r\n\r\nimport { PostFileDto, PostFileUploadItem } from '../../lib/DoomCentral'\r\nimport PostFileDisplay from './PostFileDisplay'\r\nimport PostFilePreview from './PostFilePreview'\r\n\r\ninterface PostFileDisplayerProps {\r\n postFiles: PostFileDto[]\r\n postId: number\r\n}\r\n\r\nexport default (props: PostFileDisplayerProps) => {\r\n const removeFile = (id: number) => {}\r\n\r\n return (\r\n <React.Fragment>\r\n {props.postFiles && props.postFiles.length > 0 && (\r\n <PostFileDisplayerContainer>\r\n {props.postFiles.map((s, idx) => (\r\n <PostFileDisplay postFile={s} postId={props.postId} removeFile={removeFile} />\r\n ))}\r\n </PostFileDisplayerContainer>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nconst PostFileDisplayerContainer = styled.div`\r\n padding: 7px 10px;\r\n margin: 0;\r\n font-size: 13px;\r\n line-height: 16px;\r\n color: var(--bs-secondary-text-emphasis);\r\n background-color: var(--bs-secondary-bg);\r\n border: 1px solid var(--bs-secondary-color);\r\n border-top: 0;\r\n border-top-color: currentcolor;\r\n border-bottom-right-radius: 6px;\r\n border-bottom-left-radius: 6px;\r\n`\r\n","import * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { ApproveThreadPostCommand, DeleteThreadPostCommand, LockThreadPostCommand, ThreadPostsClient, UnlockThreadPostCommand } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface PostModeratorToolsProps {\r\n postId: number\r\n setModPost: React.Dispatch<React.SetStateAction<number>>\r\n locked: boolean\r\n approved: boolean\r\n}\r\n\r\nexport default (props: PostModeratorToolsProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const lockPost = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ThreadPostsClient()\r\n let command = new LockThreadPostCommand()\r\n command.postId = props.postId\r\n\r\n const response = await client.lock(command).then((response) => response)\r\n props.setModPost(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const unlockPost = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ThreadPostsClient()\r\n let command = new UnlockThreadPostCommand()\r\n command.postId = props.postId\r\n\r\n const response = await client.unlock(command).then((response) => response)\r\n props.setModPost(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const approvePost = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ThreadPostsClient()\r\n let command = new ApproveThreadPostCommand()\r\n command.postId = props.postId\r\n\r\n const response = await client.approve(command).then((response) => response)\r\n props.setModPost(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const deletePost = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ThreadPostsClient()\r\n let command = new DeleteThreadPostCommand()\r\n command.postId = props.postId\r\n\r\n const response = await client.delete(props.postId, command).then((response) => response)\r\n props.setModPost(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='post-moderator-tool-container'>\r\n <div className='post-moderator-tools'>\r\n {!props.approved && (\r\n <Button className='moderator-btn' color='success' onClick={approvePost}>\r\n <i className='bi bi-check'></i>\r\n </Button>\r\n )}{' '}\r\n {props.locked && (\r\n <Button className='moderator-btn' color='warning' onClick={unlockPost}>\r\n <i className='bi bi-unlock-fill'></i>\r\n </Button>\r\n )}{' '}\r\n {!props.locked && (\r\n <Button className='moderator-btn' color='danger' onClick={lockPost}>\r\n <i className='bi bi-lock-fill'></i>\r\n </Button>\r\n )}{' '}\r\n <Button className='moderator-btn' color='danger' onClick={deletePost}>\r\n <i className='bi bi-trash3-fill'></i>\r\n </Button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import RelativeTime from '@yaireo/relative-time'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useRef, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { NavLink, useLocation } from 'react-router-dom'\r\nimport { HashLink } from 'react-router-hash-link'\r\nimport { Card, UncontrolledTooltip } from 'reactstrap'\r\n\r\nimport { PostItemDto } from '../../lib/DoomCentral'\r\nimport MarkdownPost from '../markdown-post/MarkdownPost'\r\nimport EditPostStation from './EditPostStation'\r\nimport PostFileDisplayer from './PostFileDisplayer'\r\nimport ForumModeratorTools from './PostModeratorTools'\r\nimport QuoteBox from './QuoteBox'\r\n\r\ninterface ThreadPostProps {\r\n postItem: PostItemDto\r\n editMode: boolean\r\n isAdmin: boolean\r\n authorized: boolean\r\n postToEdit: number\r\n pageNumber: number\r\n postToQuote: number\r\n editedPost: string\r\n editReason: string\r\n setPostToQuote: React.Dispatch<React.SetStateAction<number>>\r\n setModPost: React.Dispatch<React.SetStateAction<number>>\r\n setQuotedPostId: React.Dispatch<React.SetStateAction<number>>\r\n editPost(postId: number, quotedPostId: number, postContent: string): void\r\n clearEditMode: VoidFunction\r\n}\r\n\r\nexport default (props: ThreadPostProps) => {\r\n const auth = useAuth()\r\n const relativeTime = new RelativeTime()\r\n\r\n return (\r\n <React.Fragment>\r\n <div id={`postid-${props.postItem.id}`}>\r\n <Card className='p-2 mb-2'>\r\n {(!props.editMode || (props.editMode && props.postToEdit != props.postItem.id)) && (\r\n <>\r\n <div className='post-header'>\r\n {props.postItem.unread && <span className='forum-unread-posts'>� </span>}\r\n <div className='post-author'>\r\n <span>{props.postItem.postAuthorDisplayName}</span>\r\n </div>\r\n {props.postItem.postAuthorBadgeUrl.length > 0 && (\r\n <div className='post-author-badge'>\r\n <span id='userBadge'>\r\n <img src={props.postItem.postAuthorBadgeUrl} />\r\n </span>\r\n <UncontrolledTooltip flip target='userBadge'>\r\n {props.postItem.postAuthorBadgeName}\r\n </UncontrolledTooltip>\r\n </div>\r\n )}\r\n <div className='post-num'>\r\n <HashLink to={`?page=${props.pageNumber}#postid-${props.postItem.id}`}>#{props.postItem.postNumber}</HashLink>\r\n </div>\r\n </div>\r\n {props.postItem.quotedPostId > 0 && <QuoteBox quotedPostId={props.postItem.quotedPostId} setQuotedPostId={null} editMode={false} />}\r\n {props.isAdmin && (\r\n <ForumModeratorTools postId={props.postItem.id} setModPost={props.setModPost} locked={props.postItem.locked} approved={props.postItem.approved} />\r\n )}\r\n <figure>\r\n <MarkdownPost content={props.postItem.postContent} />\r\n <figcaption className='blockquote-footer'>\r\n Posted{' '}\r\n <span>\r\n <span id={'dateCreated' + props.postItem.id}>{relativeTime.from(new Date(props.postItem.created))}</span>\r\n <UncontrolledTooltip placement='bottom' target={'dateCreated' + props.postItem.id}>\r\n {new Intl.DateTimeFormat('default', { dateStyle: 'full', timeStyle: 'long' }).format(new Date(props.postItem.created))}\r\n </UncontrolledTooltip>\r\n </span>{' '}\r\n by{' '}\r\n {props.postItem.postAuthorUserName && (\r\n <NavLink to={`/user/${props.postItem.postAuthorUserName}`}>{props.postItem.postAuthorDisplayName}</NavLink>\r\n )}\r\n {!props.postItem.postAuthorUserName && props.postItem.postAuthorDisplayName}\r\n </figcaption>\r\n </figure>\r\n <div className='post-footer'>\r\n <div className='post-actions'>\r\n {/* <div className='post-num'>\r\n <HashLink to={`#${s.id}`}>\r\n <small>hash: #{s.postNumber}</small>\r\n </HashLink>\r\n </div> */}\r\n {auth.user && auth.isAuthenticated && props.authorized && (\r\n <small>\r\n <a onClick={(e) => props.setQuotedPostId(props.postItem.id)} className='post-action'>\r\n quote\r\n </a>\r\n <i className='bi bi-dot post-action-div'></i>\r\n </small>\r\n )}\r\n\r\n <p className='text-end'>\r\n <HashLink to={`?page=${props.pageNumber}#postid-${props.postItem.id}`} className='post-action text-right'>\r\n <small>Link to this comment</small>\r\n </HashLink>\r\n </p>\r\n\r\n {auth.user && auth.isAuthenticated && (auth.user.profile.sub === props.postItem.postAuthorId || props.isAdmin) && (\r\n <small>\r\n <i className='bi bi-dot post-action-div'></i>\r\n <a onClick={(e) => props.editPost(props.postItem.id, props.postItem.quotedPostId, props.postItem.postContent)} className='post-action'>\r\n edit\r\n </a>\r\n </small>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n {auth.user && auth.isAuthenticated && props.editMode && props.postToEdit === props.postItem.id && (\r\n <EditPostStation\r\n clearEditMode={props.clearEditMode}\r\n editedPost={props.editedPost}\r\n editReason={props.editReason}\r\n id={props.postItem.id}\r\n postToQuote={props.postToQuote}\r\n setPostToQuote={props.setPostToQuote}\r\n />\r\n )}\r\n <PostFileDisplayer postFiles={props.postItem.postFiles} postId={props.postItem.id} />\r\n </Card>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import RelativeTime from '@yaireo/relative-time'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useRef, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { useLocation } from 'react-router-dom'\r\nimport { HashLink } from 'react-router-hash-link'\r\nimport { UncontrolledTooltip } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { IPostPaginatedListVm, MarkThreadPostsAsReadCommand, PostViewMode, ThreadsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport MarkdownPost from '../markdown-post/MarkdownPost'\r\nimport EditPostStation from './EditPostStation'\r\nimport ForumModeratorTools from './PostModeratorTools'\r\nimport QuoteBox from './QuoteBox'\r\nimport ThreadPost from './ThreadPost'\r\n\r\ninterface ThreadPostListProps {\r\n id: number\r\n loading: boolean // only begin loading if the base page has stopped loading\r\n isAdmin: boolean // has moderator status or better on specific thread\r\n authorized: boolean\r\n pageNumber: number // Controls pagination\r\n pageNumberCounter: number // Doesn't control pagination\r\n pageSize: number\r\n newPostNum: number\r\n mode: string\r\n postId?: number\r\n setPageChange: (page: number, displayOnly: boolean) => void\r\n setMode: React.Dispatch<React.SetStateAction<string>>\r\n setPageCount: React.Dispatch<React.SetStateAction<number>>\r\n setQuotedPostId: React.Dispatch<React.SetStateAction<number>>\r\n setNewPostNum: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: ThreadPostListProps) => {\r\n const error = useContext(ErrorContext)\r\n const auth = useAuth()\r\n const relativeTime = new RelativeTime()\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [editMode, setEditMode] = useState<boolean>(false)\r\n const [postToEdit, setPostToEdit] = useState<number>(0)\r\n const [quoteMode, setQuoteMode] = useState<boolean>(false)\r\n const [postToQuote, setPostToQuote] = useState<number>(0)\r\n\r\n const [editedPost, setEditedPost] = useState<string>('')\r\n const [editReason, setEditReason] = useState<string>('')\r\n\r\n const [postData, setPostData] = useState<IPostPaginatedListVm>(null)\r\n const [highestUnread, setHighestUnread] = useState<number>(0)\r\n\r\n const [modPost, setModPost] = useState<number>(0)\r\n\r\n // Async scrolling on load\r\n const scrolledRef = useRef(false)\r\n const { hash } = useLocation()\r\n const hashRef = useRef(hash)\r\n\r\n const editPost = (postId: number, quotedPostId: number, postContent: string) => {\r\n setEditMode(true)\r\n setPostToEdit(postId)\r\n setEditReason('')\r\n setEditedPost(postContent)\r\n setPostToQuote(quotedPostId)\r\n }\r\n\r\n const clearEditMode = () => {\r\n setEditMode(false)\r\n setPostToEdit(0)\r\n setEditReason('')\r\n setEditedPost('')\r\n setPostToQuote(0)\r\n }\r\n\r\n // Default page load mode: no page? Just load the first (or user pref)\r\n useEffect(() => {\r\n if (props.id > 0 && props.pageNumber <= 0 && (props.mode == null || props.mode.trim() === '') && props.postId === 0) {\r\n props.setPageChange(1, false)\r\n }\r\n }, [props.id])\r\n\r\n // Hook to load posts based on changes to pagination/page size\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n setHighestUnread(0)\r\n if (props.id > 0 && props.pageNumber > 0) {\r\n try {\r\n let client = new ThreadsClient()\r\n const response = await client\r\n .getPostsByThreadId(props.id, props.id, props.pageNumber, props.pageSize)\r\n .then((response) => response.toJSON() as Promise<IPostPaginatedListVm>)\r\n props.setMode(null)\r\n setPostData(response)\r\n props.setPageCount(response.totalPages)\r\n if (modPost > 0) {\r\n setModPost(0)\r\n }\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [props.pageNumber, props.pageSize, props.id])\r\n\r\n // Hook to load posts based on mode changes.\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (!props.loading && props.id > 0 && props.mode && !((props.mode as PostViewMode) === PostViewMode.Post && (props.postId === null || props.postId === 0))) {\r\n setLoading(true)\r\n setHighestUnread(0)\r\n try {\r\n let client = new ThreadsClient()\r\n const response = await client\r\n .getThreadPostsByParameters(props.mode as PostViewMode, props.id, props.postId)\r\n .then((response) => response.toJSON() as Promise<IPostPaginatedListVm>)\r\n setPostData(response)\r\n props.setPageCount(response.totalPages)\r\n props.setPageChange(response.pageNumber, true)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n }\r\n\r\n fetchData()\r\n }, [props.mode, props.id])\r\n\r\n // Hook to load latest post after posting\r\n useEffect(() => {\r\n if (!props.loading && props.id > 0 && props.newPostNum > 0) {\r\n props.setMode(PostViewMode.LastPost)\r\n }\r\n }, [props.newPostNum])\r\n\r\n // Hook to mark posts loaded as read\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (postData && postData.highestPostId > highestUnread && postData.postList.length > 0 && auth.isAuthenticated) {\r\n try {\r\n let client = new ThreadsClient()\r\n const command = new MarkThreadPostsAsReadCommand()\r\n command.threadId = props.id\r\n if (highestUnread <= 0) {\r\n command.highestReadThreadPost = postData.highestPostId\r\n } else {\r\n command.highestReadThreadPost = highestUnread\r\n }\r\n const response = await client.markAsRead(command).then((response) => response as number)\r\n setHighestUnread(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n }\r\n }\r\n\r\n fetchData()\r\n }, [postData])\r\n\r\n // Scroll to hash on load\r\n useEffect(() => {\r\n if (hash) {\r\n // We want to reset if the hash has changed\r\n if (hashRef.current !== hash) {\r\n hashRef.current = hash\r\n scrolledRef.current = false\r\n }\r\n\r\n // only attempt to scroll if we haven't yet (this could have just reset above if hash changed)\r\n if (!scrolledRef.current) {\r\n const id = hash.replace('#', '')\r\n const element = document.getElementById(id)\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'auto' })\r\n scrolledRef.current = true\r\n }\r\n }\r\n }\r\n })\r\n\r\n // Hook to go to posts depending on mode\r\n useEffect(() => {\r\n if (props.mode) {\r\n var id = ''\r\n if (props.mode === 'LastPost') {\r\n if (postData && postData.postList.length > 0) {\r\n const highestId = Math.max(...postData.postList.map((o) => o.id))\r\n id = `postid-${highestId}`\r\n }\r\n } else if (props.mode === 'Unread') {\r\n if (postData && postData.postList.length > 0) {\r\n const unread = postData.postList.find((f) => f.unread === true)?.id ?? 0\r\n id = `postid-${unread}`\r\n }\r\n }\r\n // We want to reset if the hash has changed\r\n if (hashRef.current !== id) {\r\n hashRef.current = id\r\n scrolledRef.current = false\r\n }\r\n\r\n // only attempt to scroll if we haven't yet (this could have just reset above if hash changed)\r\n if (!scrolledRef.current) {\r\n const element = document.getElementById(id)\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'auto' })\r\n scrolledRef.current = true\r\n }\r\n }\r\n }\r\n })\r\n\r\n // Hook to go to posts depending on postId\r\n useEffect(() => {\r\n if (props.postId && props.postId > 0) {\r\n const id = `postid-${props.postId}`\r\n // We want to reset if the hash has changed\r\n if (hashRef.current !== id) {\r\n hashRef.current = id\r\n scrolledRef.current = false\r\n }\r\n\r\n // only attempt to scroll if we haven't yet (this could have just reset above if hash changed)\r\n if (!scrolledRef.current) {\r\n const element = document.getElementById(id)\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'auto' })\r\n scrolledRef.current = true\r\n }\r\n }\r\n }\r\n })\r\n\r\n return (\r\n <React.Fragment>\r\n {postData?.postList?.length > 0 && (\r\n <div>\r\n {!loading &&\r\n postData.postList.map((s, idx) => (\r\n <ThreadPost\r\n key={idx}\r\n postItem={s}\r\n authorized={props.authorized}\r\n isAdmin={props.isAdmin}\r\n pageNumber={props.pageNumberCounter}\r\n editReason={editReason}\r\n editedPost={editedPost}\r\n postToEdit={postToEdit}\r\n postToQuote={postToQuote}\r\n editMode={editMode}\r\n clearEditMode={clearEditMode}\r\n editPost={editPost}\r\n setModPost={setModPost}\r\n setPostToQuote={setPostToQuote}\r\n setQuotedPostId={props.setQuotedPostId}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import PostPagination from '@/components/thread/PostPagination'\r\nimport PostStation from '@/components/thread/PostStation'\r\nimport ThreadPostList from '@/components/thread/ThreadPostList'\r\nimport useQueryParam from '@/hooks/useQueryParam'\r\nimport * as React from 'react'\r\nimport { useEffect, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\ninterface SingleMediaContainerProps {\r\n children?: React.ReactNode | React.ReactNode[]\r\n loading: boolean\r\n id: number\r\n authorized: boolean\r\n isAdmin: boolean\r\n allowedFileExtensions: string\r\n maxFileSizeBytes: number\r\n maxFilesInPost: number\r\n}\r\n\r\n/**\r\n * A container that is designed to take 1 page media and attach posts to it.\r\n * Now even does forum threads.\r\n */\r\nexport default (props: SingleMediaContainerProps) => {\r\n const [pageNumber, setPageNumber] = useState<number>(0)\r\n const [pageNumberCounter, setPageNumberCounter] = useState<number>(0) // used to display page number, but not control when changing it\r\n const [pageSize, setPageSize] = useState<number>(40)\r\n const [pageCount, setPageCount] = useState<number>(0)\r\n const [postId, setPostId] = useState<number>(null)\r\n const [gotoMode, setGotoMode] = useState<string>(null)\r\n\r\n const [newPostNum, setNewPostNum] = useState<number>(0)\r\n\r\n const [quotedPostId, setQuotedPostId] = useState<number>(0)\r\n\r\n const [pageSizeParam, setPageSizeParam] = useQueryParam('pageSize', '')\r\n const [pageNumberParam, setPageNumberParam] = useQueryParam('pageNumber', '')\r\n const [gotoParam, setGotoParam] = useQueryParam('goto', '')\r\n const [postIdParam, setPostIdParam] = useQueryParam('postId', '')\r\n\r\n const auth = useAuth()\r\n\r\n const setPageChanges = (page: number, displayOnly: boolean) => {\r\n if (displayOnly === true) {\r\n setPageNumberCounter(page)\r\n } else {\r\n setPageNumberParam(page.toString())\r\n setGotoParam('')\r\n }\r\n }\r\n\r\n // Set vars based off of params.\r\n useEffect(() => {\r\n if (pageSizeParam) {\r\n setPageSize(parseInt(pageSizeParam))\r\n } else {\r\n setPageSize(40)\r\n }\r\n }, [pageSizeParam])\r\n\r\n useEffect(() => {\r\n if (pageNumberParam) {\r\n setPageNumber(parseInt(pageNumberParam))\r\n setPageNumberCounter(parseInt(pageNumberParam))\r\n } else {\r\n setPageNumber(0)\r\n setPageNumberCounter(0)\r\n }\r\n }, [pageNumberParam])\r\n\r\n useEffect(() => {\r\n if (postIdParam) {\r\n setPostId(parseInt(postIdParam))\r\n } else {\r\n setPostId(0)\r\n }\r\n }, [postIdParam])\r\n\r\n useEffect(() => {\r\n if (gotoParam) {\r\n setGotoMode(gotoParam)\r\n } else {\r\n setGotoMode(null)\r\n }\r\n }, [gotoParam])\r\n\r\n return (\r\n <>\r\n {props.children}\r\n {pageCount > 1 && <PostPagination pageCount={pageCount} currentPage={pageNumberCounter - 1} setPageChange={setPageChanges} />}\r\n <ThreadPostList\r\n id={props.id}\r\n loading={props.loading}\r\n pageNumber={pageNumber}\r\n pageNumberCounter={pageNumberCounter}\r\n pageSize={pageSize}\r\n newPostNum={newPostNum}\r\n setNewPostNum={setNewPostNum}\r\n setPageCount={setPageCount}\r\n setPageChange={setPageChanges}\r\n setMode={setGotoMode}\r\n setQuotedPostId={setQuotedPostId}\r\n authorized={props.authorized}\r\n isAdmin={props.isAdmin}\r\n mode={gotoMode}\r\n postId={postId}\r\n />\r\n {pageCount > 1 && <PostPagination pageCount={pageCount} currentPage={pageNumberCounter - 1} setPageChange={setPageChanges} />}\r\n {auth.user && auth.isAuthenticated && props.authorized && !props.loading && (\r\n <PostStation\r\n id={props.id}\r\n quotedPostId={quotedPostId}\r\n setNewPostNum={setNewPostNum}\r\n setQuotedPostId={setQuotedPostId}\r\n setGotoMode={setGotoMode}\r\n maxFilesInPost={props.maxFilesInPost}\r\n maxFileSizeBytes={props.maxFileSizeBytes}\r\n allowedFileExtensions={props.allowedFileExtensions}\r\n />\r\n )}\r\n {(!auth.user || !auth.isAuthenticated) && !props.loading && (\r\n <div className='my-2 text-muted text-center'>\r\n To post, you need to{' '}\r\n <a className='link-primary' role='button' onClick={() => auth.signinRedirect()}>\r\n log in\r\n </a>\r\n !\r\n </div>\r\n )}\r\n {auth.user && auth.isAuthenticated && !props.authorized && !props.loading && <div className='my-2 text-muted text-center'>You are not authorized to post here.</div>}\r\n </>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport MarkdownPost from '../markdown-post/MarkdownPost'\r\n\r\ninterface EventDescriptionProps {\r\n postContent: string\r\n}\r\n\r\nexport default (props: EventDescriptionProps) => {\r\n return (\r\n <React.Fragment>\r\n <Row>\r\n <Col>\r\n <div className='event-section-title'>About</div>\r\n <MarkdownPost content={props.postContent} />\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { FormatETA, FormatShortTimeString } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { EventRegion } from '../../lib/DoomCentral'\r\nimport { getFlagForEventRegion } from '../../utils/EventHelpers'\r\n\r\ninterface EventInfoProps {\r\n eventStartDate: Date\r\n eventEndDate: Date\r\n duration: string\r\n streamer: string\r\n streamerPic: string\r\n region: EventRegion\r\n loading: boolean\r\n}\r\n\r\nexport default (props: EventInfoProps) => {\r\n return (\r\n <React.Fragment>\r\n <Row>\r\n <Col>\r\n <div className='event-section-title'>ETA</div>\r\n {props.eventEndDate && props.eventEndDate && !props.loading && <span className='event-eta'>{FormatETA(props.eventStartDate, props.eventEndDate)}</span>}\r\n {props.loading && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-3'></span>\r\n </div>\r\n )}\r\n </Col>\r\n <Col>\r\n <div className='event-section-title'>Event Start</div>\r\n {props.eventStartDate && !props.loading && (\r\n <span className='event-eta'>\r\n {new Intl.DateTimeFormat('default', { dateStyle: 'long' }).format(new Date(props.eventStartDate))}\r\n <br />\r\n {new Intl.DateTimeFormat('default', { timeStyle: 'long' }).format(new Date(props.eventStartDate))}\r\n </span>\r\n )}\r\n {props.loading && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-3'></span>\r\n <span className='module-item-title placeholder col-3'></span>\r\n </div>\r\n )}\r\n </Col>\r\n <Col>\r\n <div className='event-section-title'>Event Duration</div>\r\n {props.duration && props.duration.length > 0 && !props.loading && <span className='event-eta'>{FormatShortTimeString(props.duration)}</span>}\r\n {props.loading && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-3'></span>\r\n </div>\r\n )}\r\n </Col>\r\n {((props.streamer && props.streamer.length > 0) || props.loading) && (\r\n <Col>\r\n <div className='event-section-title'>Stream</div>\r\n {props.streamer && props.streamer.length > 0 && !props.loading && <p>{props.streamer}</p>}\r\n {props.loading && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-3'></span>\r\n </div>\r\n )}\r\n </Col>\r\n )}\r\n <Col>\r\n <div className='event-section-title'>Region</div>\r\n {props.region && !props.loading && <p style={{ fontSize: 42 }}>{getFlagForEventRegion(props.region)}</p>}\r\n {props.loading && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-3'></span>\r\n </div>\r\n )}\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { IEventDetailDto } from '../../lib/DoomCentral'\r\nimport EventDescription from './EventDescription'\r\nimport EventInfo from './EventInfo'\r\n\r\ninterface EventContentProps {\r\n details: IEventDetailDto\r\n loading: boolean\r\n}\r\n\r\nexport default (props: EventContentProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='event-container'>\r\n <EventInfo\r\n eventStartDate={props.details?.eventStartDate}\r\n eventEndDate={props.details?.eventEndDate}\r\n duration={props.details?.eventDuration}\r\n streamer={props.details?.eventStreamer}\r\n streamerPic={props.details?.eventStreamProfilePicName}\r\n region={props.details?.eventRegion}\r\n loading={props.loading}\r\n />\r\n <EventDescription postContent={props.details?.eventPostContent} />\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useEffect } from 'react'\r\nimport { AuthContextProps } from 'react-oidc-context'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\ninterface EventHeaderProps {\r\n title: string\r\n id: number\r\n eventOrganizer: string\r\n eventOrganizerDisplayName: string\r\n canEdit: boolean\r\n eventPublishDate: Date\r\n loading: boolean\r\n}\r\n\r\nexport default (props: EventHeaderProps) => {\r\n return (\r\n <React.Fragment>\r\n {props.canEdit && (\r\n <div className='d-flex'>\r\n <NavLink className='ms-auto' to={`/editevent?eventId=${props.id}`}>\r\n <i className='ms-auto bi bi-pencil-square'></i>\r\n </NavLink>\r\n </div>\r\n )}\r\n <Row>\r\n <Col>\r\n {props.title && <h1>{props.title}</h1>}\r\n {!props.title && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-8'></span>\r\n </div>\r\n )}\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n {props.eventOrganizerDisplayName && (\r\n <p className='lead'>\r\n by <NavLink to={`/user/${props.eventOrganizer}`}>{props.eventOrganizerDisplayName}</NavLink>\r\n </p>\r\n )}\r\n\r\n {!props.eventOrganizerDisplayName && props.loading && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-8'></span>\r\n </div>\r\n )}\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n {props.eventPublishDate && (\r\n <p style={{ fontSize: 12 }}>\r\n Posted on {new Intl.DateTimeFormat('default', { dateStyle: 'full', timeStyle: 'long' }).format(new Date(props.eventPublishDate))} in{' '}\r\n <NavLink to={'/events/'}>Events</NavLink>\r\n </p>\r\n )}\r\n\r\n {!props.eventPublishDate && props.loading && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-8'></span>\r\n </div>\r\n )}\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { UserCanPostInEventThread, UserIsEventAdmin } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { RouteComponentProps } from 'react-router-dom'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { DoomCentralEventsClient, IEventVm } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Reactions from '../reactions/Reactions'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport SingleMediaContainer from '../singlemediacontainer/SingleMediaContainer'\r\nimport EventContent from './EventContent'\r\nimport EventHeader from './EventHeader'\r\n\r\ninterface EventPageRouterProps {\r\n id: string\r\n}\r\n\r\ninterface EventPageProps extends RouteComponentProps<EventPageRouterProps> {\r\n // Add your regular properties here\r\n}\r\n\r\nexport default (props: EventPageProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const auth = useAuth()\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [canEdit, setCanEdit] = useState<boolean>(false)\r\n\r\n const [eventPageData, setEventPageData] = useState<IEventVm>()\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new DoomCentralEventsClient()\r\n const response = await client.getEventById(parseInt(props.match.params.id)).then((response) => response.toJSON() as Promise<IEventVm>)\r\n setEventPageData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (UserIsEventAdmin(auth.user, eventPageData?.eventDetails)) {\r\n setCanEdit(true)\r\n } else {\r\n setCanEdit(false)\r\n }\r\n }, [auth, eventPageData])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={`Doom Central - Event - ${eventPageData?.eventDetails?.title ?? 'Loading...'}`} />\r\n <Sidebars loading={loading} newsItems={eventPageData?.newsItems} recentThreads={eventPageData?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n <SingleMediaContainer\r\n loading={loading}\r\n id={eventPageData?.eventDetails?.threadId ?? 0}\r\n authorized={UserCanPostInEventThread(auth.user, eventPageData?.eventDetails)}\r\n isAdmin={canEdit}\r\n maxFilesInPost={eventPageData?.eventDetails?.maxFilesPerPost ?? 0}\r\n maxFileSizeBytes={eventPageData?.eventDetails?.maxFileSize ?? 0}\r\n allowedFileExtensions={eventPageData?.eventDetails?.allowedFileExtensions ?? ''}\r\n >\r\n <EventHeader\r\n title={eventPageData?.eventDetails?.title}\r\n eventOrganizer={eventPageData?.eventDetails?.eventOrganizerUserName}\r\n eventOrganizerDisplayName={eventPageData?.eventDetails?.eventOrganizerDisplayName}\r\n canEdit={canEdit}\r\n id={eventPageData?.eventDetails?.eventId}\r\n eventPublishDate={eventPageData?.eventDetails?.eventPublished}\r\n loading={loading}\r\n />\r\n <EventContent details={eventPageData?.eventDetails} loading={loading} />\r\n </SingleMediaContainer>\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { navigateToReturnUrl } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext } from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { CreateDoomCentralEventCommand, DoomCentralEventsClient, EventRegion } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface SubmitNewEventButtonProps {\r\n eventName: string\r\n post: string\r\n region: EventRegion\r\n startDate: string\r\n endDate: string\r\n streamerId?: number\r\n publish: boolean\r\n loading: boolean\r\n setLoading: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: SubmitNewEventButtonProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const submitNewEvent = async () => {\r\n props.setLoading(true)\r\n try {\r\n let client = new DoomCentralEventsClient()\r\n const command = new CreateDoomCentralEventCommand()\r\n command.eventRegion = props.region\r\n command.eventName = props.eventName\r\n command.eventPost = props.post\r\n command.eventStartDateTime = new Date(new Date(props.startDate).toISOString())\r\n command.eventEndDateTime = new Date(props.endDate)\r\n if (props.streamerId <= 0) {\r\n command.eventStreamerId = null\r\n } else {\r\n command.eventStreamerId = props.streamerId\r\n }\r\n command.publish = props.publish\r\n const response = await client.create(command).then((response) => response as number)\r\n await navigateToReturnUrl(`/event/${response}`)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n props.setLoading(false)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button color='primary' disabled={props.loading || !props.eventName || !props.post || !props.startDate || !props.endDate} onClick={(e) => submitNewEvent()}>\r\n Submit Event\r\n </Button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { EventRegion, ISidebarVm, SidebarClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport EventEditorBoxContainer from '../eventeditor/EventEditorBoxContainer'\r\nimport EventEditorEndDate from '../eventeditor/EventEditorEndDate'\r\nimport EventEditorPublish from '../eventeditor/EventEditorPublish'\r\nimport EventEditorRegionOptions from '../eventeditor/EventEditorRegionOptions'\r\nimport EventEditorStartDate from '../eventeditor/EventEditorStartDate'\r\nimport EventEditorStreamer from '../eventeditor/EventEditorStreamer'\r\nimport EventEditorTitle from '../eventeditor/EventEditorTitle'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport SubmitNewEventButton from './SubmitNewEventButton'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [sidebarLoading, setSidebarLoading] = useState<boolean>(false)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [region, setRegion] = useState<EventRegion>(EventRegion.Global)\r\n const [title, setTitle] = useState<string>('')\r\n const [post, setPost] = useState<string>('')\r\n const [streamerId, setStreamerId] = useState<number>(0)\r\n const [sidebarData, setSidebarData] = useState<ISidebarVm>()\r\n const [start, setStart] = useState<string>('')\r\n const [end, setEnd] = useState<string>('')\r\n const [publish, setPublish] = useState<boolean>(false)\r\n\r\n // Initial load for the thread page.\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setSidebarLoading(true)\r\n try {\r\n let client = new SidebarClient()\r\n const response = await client.getSidebars().then((response) => response.toJSON() as Promise<ISidebarVm>)\r\n setSidebarData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setSidebarLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title='Doom Central - New Event' />\r\n <Sidebars loading={sidebarLoading} newsItems={sidebarData?.newsItems} recentThreads={sidebarData?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n <h2>Create new event</h2>\r\n <Row>\r\n <Col lg={8}>\r\n <EventEditorRegionOptions region={region} setRegion={setRegion} />\r\n <EventEditorTitle title={title} setTitle={setTitle} />\r\n <EventEditorStartDate startDate={start} setStartDate={setStart} />\r\n <EventEditorEndDate endDate={end} setEndDate={setEnd} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <EventEditorBoxContainer post={post} setPost={setPost} />\r\n <EventEditorStreamer streamerId={streamerId} setStreamerId={setStreamerId} />\r\n <EventEditorPublish publish={publish} setPublish={setPublish} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <SubmitNewEventButton\r\n region={region}\r\n eventName={title}\r\n post={post}\r\n startDate={start}\r\n endDate={end}\r\n publish={publish}\r\n loading={loading}\r\n streamerId={streamerId}\r\n setLoading={setLoading}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Route } from 'react-router'\r\n\r\nimport DoomCentralEventRoles from '../../lib/DoomCentralEventRoles'\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute'\r\nimport EditEvent from '../editevent/EditEvent'\r\nimport EventListing from '../eventlisting/EventListing'\r\nimport EventPage from '../eventpage/EventPage'\r\nimport NewEvent from '../newevent/NewEvent'\r\n\r\nexport default () => (\r\n <>\r\n <AuthorizeRoute\r\n path='/newevent'\r\n component={NewEvent}\r\n componentroles={[DoomCentralEventRoles.GlobalEventAdministrator, DoomCentralEventRoles.EventOrganizer, DoomCentralRoles.GlobalAdministrator]}\r\n />\r\n <AuthorizeRoute\r\n exact\r\n path='/editevent'\r\n component={EditEvent}\r\n componentroles={[DoomCentralEventRoles.GlobalEventAdministrator, DoomCentralEventRoles.EventOrganizer, DoomCentralRoles.GlobalAdministrator]}\r\n />\r\n <Route exact path='/events' component={EventListing} />\r\n <Route exact path='/event/:id' component={EventPage} />\r\n </>\r\n)\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { FormGroup, Label } from 'reactstrap'\r\n\r\nimport NewPostBox from '../newpostbox/NewPostBox'\r\n\r\ninterface NewThreadBoxContainerProps {\r\n post: string\r\n setPost: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: NewThreadBoxContainerProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='post-editor'>Post</Label>\r\n <NewPostBox post={props.post} setPost={props.setPost} />\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwn = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-43c6fea0.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-43c6fea0.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.4\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.3\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.2\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n // $FlowFixMe\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser$1) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport default index;\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useCallback } from 'react';\n\nvar _excluded = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n var _ref$defaultInputValu = _ref.defaultInputValue,\n defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n propsInputValue = _ref.inputValue,\n propsMenuIsOpen = _ref.menuIsOpen,\n propsOnChange = _ref.onChange,\n propsOnInputChange = _ref.onInputChange,\n propsOnMenuClose = _ref.onMenuClose,\n propsOnMenuOpen = _ref.onMenuOpen,\n propsValue = _ref.value,\n restSelectProps = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n _useState2 = _slicedToArray(_useState, 2),\n stateInputValue = _useState2[0],\n setStateInputValue = _useState2[1];\n var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n _useState4 = _slicedToArray(_useState3, 2),\n stateMenuIsOpen = _useState4[0],\n setStateMenuIsOpen = _useState4[1];\n var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n _useState6 = _slicedToArray(_useState5, 2),\n stateValue = _useState6[0],\n setStateValue = _useState6[1];\n var onChange = useCallback(function (value, actionMeta) {\n if (typeof propsOnChange === 'function') {\n propsOnChange(value, actionMeta);\n }\n setStateValue(value);\n }, [propsOnChange]);\n var onInputChange = useCallback(function (value, actionMeta) {\n var newValue;\n if (typeof propsOnInputChange === 'function') {\n newValue = propsOnInputChange(value, actionMeta);\n }\n setStateInputValue(newValue !== undefined ? newValue : value);\n }, [propsOnInputChange]);\n var onMenuOpen = useCallback(function () {\n if (typeof propsOnMenuOpen === 'function') {\n propsOnMenuOpen();\n }\n setStateMenuIsOpen(true);\n }, [propsOnMenuOpen]);\n var onMenuClose = useCallback(function () {\n if (typeof propsOnMenuClose === 'function') {\n propsOnMenuClose();\n }\n setStateMenuIsOpen(false);\n }, [propsOnMenuClose]);\n var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n var value = propsValue !== undefined ? propsValue : stateValue;\n return _objectSpread(_objectSpread({}, restSelectProps), {}, {\n inputValue: inputValue,\n menuIsOpen: menuIsOpen,\n onChange: onChange,\n onInputChange: onInputChange,\n onMenuClose: onMenuClose,\n onMenuOpen: onMenuOpen,\n value: value\n });\n}\n\nexport { useStateManager as u };\n","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nexport { _createSuper as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this,\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nexport { memoizeOne as default };\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nexport { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef, useMemo } from 'react';\nimport { S as Select } from './Select-49a62830.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-49a62830.esm.js';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nexport { c as components } from './index-a301f526.esm.js';\nimport '@babel/runtime/helpers/objectSpread2';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/classCallCheck';\nimport '@babel/runtime/helpers/createClass';\nimport '@babel/runtime/helpers/inherits';\nimport '@babel/runtime/helpers/createSuper';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport 'memoize-one';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@floating-ui/dom';\nimport 'use-isomorphic-layout-effect';\n\nvar StateManagedSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n var baseSelectProps = useStateManager(props);\n return /*#__PURE__*/React.createElement(Select, _extends({\n ref: ref\n }, baseSelectProps));\n});\nvar StateManagedSelect$1 = StateManagedSelect;\n\nvar NonceProvider = (function (_ref) {\n var nonce = _ref.nonce,\n children = _ref.children,\n cacheKey = _ref.cacheKey;\n var emotionCache = useMemo(function () {\n return createCache({\n key: cacheKey,\n nonce: nonce\n });\n }, [cacheKey, nonce]);\n return /*#__PURE__*/React.createElement(CacheProvider, {\n value: emotionCache\n }, children);\n});\n\nexport { NonceProvider, StateManagedSelect$1 as default };\n","import * as React from 'react'\r\nimport { useEffect, useState } from 'react'\r\nimport Select, { GroupProps, components } from 'react-select'\r\nimport { FormGroup, Label } from 'reactstrap'\r\n\r\nimport { IForumGroupDto } from '../../lib/DoomCentral'\r\n\r\ninterface NewThreadOptionsProps {\r\n forumGroups: IForumGroupDto[]\r\n setForumId: React.Dispatch<React.SetStateAction<number>>\r\n forumId: number\r\n}\r\n\r\nexport interface ForumOption {\r\n readonly value: string\r\n readonly label: string\r\n}\r\n\r\nconst Group = (props: GroupProps<ForumOption, false>) => (\r\n <div>\r\n <components.Group {...props} />\r\n </div>\r\n)\r\n\r\nexport interface GroupedOption {\r\n readonly label: string\r\n readonly options: readonly ForumOption[]\r\n}\r\n\r\nexport default (props: NewThreadOptionsProps) => {\r\n const [groupOption, setGroupOption] = useState<GroupedOption[]>(null)\r\n\r\n useEffect(() => {\r\n const forumGroups: GroupedOption[] = []\r\n props.forumGroups &&\r\n props.forumGroups.map((s, idx) => {\r\n const forums: ForumOption[] = []\r\n s.forums.map((t, _idx) => {\r\n forums.push({ label: t.name, value: t.id.toString() })\r\n })\r\n forumGroups.push({ label: s.groupName, options: forums })\r\n })\r\n setGroupOption(forumGroups)\r\n }, [props.forumGroups])\r\n\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='forum'>Forum</Label>\r\n <Select<ForumOption>\r\n options={groupOption}\r\n components={{ Group }}\r\n onChange={(e) => props.setForumId(parseInt(e.value))}\r\n classNames={{\r\n option: (state) => (state.isSelected ? 'text-light' : 'text-dark'),\r\n }}\r\n value={\r\n groupOption\r\n ?.filter((f) => f.options.find((g) => parseInt(g.value) === props.forumId) ?? null)[0]\r\n ?.options?.find((f) => parseInt(f.value) === props.forumId) ?? null\r\n }\r\n />\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\ninterface NewThreadTitleProps {\r\n title: string\r\n setTitle: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: NewThreadTitleProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='title'>Title</Label>\r\n <Input value={props.title} onChange={(e) => props.setTitle(e.target.value)} />\r\n <FormText>Title cannot be changed after the initial post is made.</FormText>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import clsx, { ClassValue } from 'clsx'\r\n\r\ntype Key = string | number\r\n\r\nexport interface GroupedObject<T> {\r\n [key: string]: T[]\r\n}\r\n\r\nexport function groupObjectsBykey<T>(arr: T[], key: keyof T): GroupedObject<T> {\r\n return arr.reduce((acc: GroupedObject<T>, obj: T) => {\r\n const keyValue: Key = obj[key] as Key\r\n const groupKey: string = String(keyValue)\r\n\r\n if (!(groupKey in acc)) {\r\n acc[groupKey] = []\r\n }\r\n\r\n acc[groupKey].push(obj)\r\n return acc\r\n }, {} as GroupedObject<T>)\r\n}\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return clsx(inputs)\r\n}\r\n\r\nexport const getPreviewImageForFileNameString = (fileName: string, postId: number): string => {\r\n var approvedImageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webm', '.webp'] as string[]\r\n if (approvedImageExtensions.some((s) => fileName.endsWith(s))) {\r\n return '/postfiles/' + String(postId) + '/' + fileName\r\n }\r\n\r\n // Put other file types here.\r\n var zipExtensions = ['.zip', '.pk3', '.7z', '.rar'] as string[]\r\n if (zipExtensions.some((s) => fileName.endsWith(s))) {\r\n return '/images/filetypes/filetypeplaceholder_zip.png'\r\n }\r\n\r\n return '/images/filetypes/filetypeplaceholder_any.png'\r\n}\r\n\r\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))\r\n","import { navigateToReturnUrl } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext, useState } from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { CreateForumThreadCommand, ThreadsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport { toast } from 'sonner'\r\nimport { sleep } from '@/utils/utils'\r\n\r\ninterface SubmitThreadButtonProps {\r\n forumId: number\r\n post: string\r\n title: string\r\n}\r\n\r\nexport default (props: SubmitThreadButtonProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const submitPost = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ThreadsClient()\r\n let command = new CreateForumThreadCommand()\r\n command.forumId = props.forumId\r\n command.originalPost = props.post\r\n command.title = props.title\r\n\r\n const response = await client.create(command).then((response) => response)\r\n\r\n toast.success('🚀 Post created. You will be redirected to it.')\r\n\r\n await sleep(1500)\r\n \r\n await navigateToReturnUrl(`/thread/${response}`)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n } finally {\r\n setLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button disabled={props.forumId <= 0 || !props.post || !props.title || loading} onClick={submitPost}>\r\n Submit Thread\r\n </Button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport useQueryParam from '../../hooks/useQueryParam'\r\nimport { ForumsClient, IForumListingVm, ISidebarVm, SidebarClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport NewThreadBoxContainer from './NewThreadBoxContainer'\r\nimport NewThreadOptions from './NewThreadOptions'\r\nimport NewThreadTitle from './NewThreadTitle'\r\nimport SubmitThreadButton from './SubmitThreadButton'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [forumId, setforumId] = useState<number>(0)\r\n const [title, setTitle] = useState<string>('')\r\n const [post, setPost] = useState<string>('')\r\n\r\n const [forumIdParam, setForumIdParam] = useQueryParam('forumId', '')\r\n\r\n const [forumList, setForumList] = useState<IForumListingVm>()\r\n\r\n // Initial load for the thread page.\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumsClient()\r\n const response = await client.getForumListing().then((response) => response.toJSON() as Promise<ISidebarVm>)\r\n setForumList(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (forumIdParam) {\r\n setforumId(parseInt(forumIdParam))\r\n } else {\r\n setforumId(0)\r\n }\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title='Doom Central - Create new thread' />\r\n <Sidebars loading={loading} newsItems={forumList?.newsItems} recentThreads={forumList?.recentThreads}>\r\n <div>\r\n <Row>\r\n <h1>New Thread</h1>\r\n <Col>\r\n <NewThreadOptions forumGroups={forumList?.forumGroups} forumId={forumId} setForumId={setforumId} />\r\n <NewThreadTitle title={title} setTitle={setTitle} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <NewThreadBoxContainer post={post} setPost={setPost} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <SubmitThreadButton forumId={forumId} post={post} title={title} />\r\n </Col>\r\n </Row>\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\ninterface PagesLinksProps {\r\n threadId: number\r\n pages: number\r\n}\r\n\r\nexport default (props: PagesLinksProps) => {\r\n const createPagesLinks = (pages: number): JSX.Element[] => {\r\n let content: JSX.Element[] = []\r\n\r\n if (pages <= 6) {\r\n for (let i = 1; i <= pages; i++) {\r\n content = [\r\n ...content,\r\n <NavLink to={`/thread/${props.threadId}?page=${i}`} className='thread-pages'>\r\n {i}\r\n </NavLink>,\r\n ]\r\n content = [...content, <span> </span>]\r\n }\r\n } else {\r\n for (let i = 1; i <= 3; i++) {\r\n content = [\r\n ...content,\r\n <NavLink to={`/thread/${props.threadId}?page=${i}`} className='thread-pages'>\r\n {i}\r\n </NavLink>,\r\n ]\r\n content = [...content, <span> </span>]\r\n }\r\n\r\n content = [...content, <span>... </span>]\r\n\r\n for (let i = pages - 3; i <= pages; i++) {\r\n content = [\r\n ...content,\r\n <NavLink to={`/thread/${props.threadId}?page=${i}`} className='thread-pages'>\r\n {i}\r\n </NavLink>,\r\n ]\r\n content = [...content, <span> </span>]\r\n }\r\n }\r\n\r\n return content\r\n }\r\n\r\n return <React.Fragment>{props.pages > 0 && props.threadId > 0 && <>{createPagesLinks(props.pages)}</>}</React.Fragment>\r\n}\r\n","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\nimport { PostViewMode } from '../../lib/DoomCentral'\r\n\r\ninterface UnreadControlProps {\r\n threadUrl: string\r\n unreadPosts: number\r\n}\r\n\r\nexport default (props: UnreadControlProps) => {\r\n return (\r\n <React.Fragment>\r\n {props.unreadPosts > 0 && (\r\n <NavLink to={`${props.threadUrl}?goto=${PostViewMode.Unread}`} className='thread-pages'>\r\n {props.unreadPosts} →\r\n </NavLink>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import { idForThreadType, routeForResourceType, routeForThreadType } from '@/utils/helpers'\r\nimport RelativeTime from '@yaireo/relative-time'\r\nimport * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { PostViewMode, PromotedType, ThreadListItemDto } from '../../lib/DoomCentral'\r\nimport PagesLinks from './PagesLinks'\r\nimport UnreadControl from './UnreadControl'\r\n\r\ninterface ThreadListProps {\r\n threadList: ThreadListItemDto[]\r\n}\r\n\r\nexport default (props: ThreadListProps) => {\r\n const relativeTime = new RelativeTime()\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='thread-list'>\r\n {props.threadList &&\r\n props.threadList.map((s, idx) => (\r\n <Row xs={1} sm={1} md={1} lg={3} className='thread g-0' key={s.id}>\r\n <Col lg={8} className='main'>\r\n {s.unread && <span className='forum-unread-posts'>• </span>}\r\n {s.stickied && <span className='tag stickied'>Stickied</span>}\r\n <span className='d-inline-block text-truncate title'>\r\n <NavLink to={`/${routeForThreadType(s)}/${idForThreadType(s)}`}>{s.title}</NavLink>\r\n {s.locked && <span className='tag locked'>🔒 Locked</span>}\r\n {s.moderated && <span className='tag moderated'>🛡️ Moderated</span>}\r\n {s.hidden && <span className='tag hidden'>🔎 Hidden</span>}\r\n {!s.approved && <span className='tag approved'>🧑⚖️ Not Approved</span>}\r\n {s.unread && <UnreadControl threadUrl={`/thread/` + s.id} unreadPosts={s.unreadPosts} />}\r\n </span>\r\n {s.hot && <span className='tag hot'>🔥 Hot</span>}\r\n <div className='description'>\r\n posted {relativeTime.from(new Date(s.created))} by{' '}\r\n {s.threadAuthorUserName && <NavLink to={`/user/${s.threadAuthorUserName}`}>{s.threadAuthorDisplayName}</NavLink>}\r\n {!s.threadAuthorUserName && s.threadAuthorDisplayName}\r\n {s.dcForum && (\r\n <>\r\n {' '}\r\n in <NavLink to={`/forum/${s.dcForum.id}`}>{s.forumName}</NavLink>\r\n </>\r\n )}\r\n {s.dcEvent && (\r\n <>\r\n {' '}\r\n in <NavLink to={`/events`}>Events</NavLink>\r\n </>\r\n )}\r\n {s.dcNews && (\r\n <>\r\n {' '}\r\n in <NavLink to={`/news`}>News</NavLink>\r\n </>\r\n )}\r\n </div>\r\n </Col>\r\n <Col lg={4} className='thread-info-box'>\r\n <Col className='pages'>\r\n Posts: <span className='post-count'>{s.postCount}</span>\r\n <br />\r\n Pages: <PagesLinks threadId={s.id} pages={s.pages} />\r\n </Col>\r\n <Col className='last-post-info'>\r\n {s.lastPost && s.lastPost.postAuthorUserName && (\r\n <React.Fragment>\r\n <NavLink to={`/user/${s.lastPost.postAuthorUserName}`}>{s.lastPost.postAuthorDisplayName}</NavLink>\r\n <br />\r\n <NavLink to={`/thread/${s.id}?goto=${PostViewMode.LastPost}`}>{relativeTime.from(new Date(s.lastPost.created))}</NavLink>\r\n </React.Fragment>\r\n )}\r\n {s.lastPost && !s.lastPost.postAuthorUserName && (\r\n <React.Fragment>\r\n {s.lastPost.postAuthorDisplayName}\r\n <br />\r\n <NavLink to={`/thread/${s.id}?goto=${PostViewMode.LastPost}`}>{relativeTime.from(new Date(s.lastPost.created))}</NavLink>\r\n </React.Fragment>\r\n )}\r\n </Col>\r\n </Col>\r\n </Row>\r\n ))}\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { containsDuplicate } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Button, Col, Input, InputGroup, Row } from 'reactstrap'\r\n\r\nimport { ThreadFilter } from '../../lib/DoomCentral'\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\n\r\nexport interface ThreadOptionsProps {\r\n mode: ThreadFilter\r\n setMode: React.Dispatch<React.SetStateAction<ThreadFilter>>\r\n}\r\n\r\nexport default (props: ThreadOptionsProps) => {\r\n const auth = useAuth()\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='thread-button-tray mb-2'>\r\n <Button color='primary' className='me-2' onClick={(e) => props.setMode(ThreadFilter.Hot)} active={props.mode === ThreadFilter.Hot}>\r\n Hot\r\n </Button>\r\n <Button color='primary' className='me-2' onClick={(e) => props.setMode(ThreadFilter.Active)} active={props.mode === ThreadFilter.Active}>\r\n Active\r\n </Button>\r\n <Button color='primary' className='me-2' onClick={(e) => props.setMode(ThreadFilter.New)} active={props.mode === ThreadFilter.New}>\r\n New\r\n </Button>\r\n {containsDuplicate(DoomCentralRoles.DoomCentralUser, (auth.user?.profile.role as string[]) ?? []) && (\r\n <NavLink className='ms-auto' exact to={'/newthread'}>\r\n <Button color='primary'>New Thread</Button>\r\n </NavLink>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport ReactPaginate from 'react-paginate'\r\n\r\ninterface ThreadPaginationProps {\r\n pageCount: number\r\n setPageChange: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: ThreadPaginationProps) => {\r\n return (\r\n <React.Fragment>\r\n {props.pageCount > 1 && (\r\n <div className='d-flex justify-content-end my-2'>\r\n <ReactPaginate\r\n previousLabel={'←'}\r\n nextLabel={'→'}\r\n pageCount={props.pageCount}\r\n onPageChange={(p) => props.setPageChange(p.selected)}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n containerClassName={'pagination pagination-sm'}\r\n previousLinkClassName={'page-link'}\r\n nextLinkClassName={'page-link'}\r\n disabledClassName={'page-item disabled'}\r\n activeClassName={'page-item active'}\r\n activeLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n previousClassName={'page-item'}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n renderOnZeroPageCount={null}\r\n />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { IThreadListingPageVm, ThreadFilter, ThreadsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport ThreadList from '../threadlist/ThreadList'\r\nimport ThreadOptions from '../threadlist/ThreadOptions'\r\nimport ThreadPagination from '../threadlist/ThreadPagination'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [pageNumber, setPageNumber] = useState<number>(1)\r\n const [pageSize, setPageSize] = useState<number>(20)\r\n const [threadFilter, setThreadFilter] = useState<ThreadFilter>(ThreadFilter.Active)\r\n\r\n const [threadListing, setThreadListingData] = useState<IThreadListingPageVm>(null)\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ThreadsClient()\r\n const response = await client.getThreadList(threadFilter, pageNumber, pageSize).then((response) => response.toJSON() as Promise<IThreadListingPageVm>)\r\n setThreadListingData(response)\r\n } catch (e) {\r\n console.log(e)\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [threadFilter, pageNumber, pageSize])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title='Doom Central - Thread Listing' />\r\n <Sidebars loading={loading} newsItems={threadListing?.newsItems} recentThreads={threadListing?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n <ThreadOptions mode={threadFilter} setMode={setThreadFilter} />\r\n <ThreadPagination pageCount={threadListing?.threadList?.totalPages ?? 0} setPageChange={setPageNumber} />\r\n <ThreadList threadList={threadListing?.threadList?.threadList} />\r\n <ThreadPagination pageCount={threadListing?.threadList?.totalPages ?? 0} setPageChange={setPageNumber} />\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { Col, Container, Row } from 'reactstrap'\r\n\r\nexport const Columns = ({ leftColumn = undefined, children, rightColumn, ...rest }) => {\r\n return (\r\n <Container fluid className='g-0 d-flex justify-content-center' {...rest}>\r\n <Row className='w-100'>\r\n {leftColumn && (\r\n <Col xs={12} md={3}>\r\n <aside>{leftColumn}</aside>\r\n </Col>\r\n )}\r\n <Col xs={12} md={9} style={{ flex: 1 }}>\r\n <main>{children}</main>\r\n </Col>\r\n {rightColumn && (\r\n <Col xs={12} md={3}>\r\n <aside>{rightColumn}</aside>\r\n </Col>\r\n )}\r\n </Row>\r\n </Container>\r\n )\r\n}\r\n","function _checkPrivateRedeclaration(e, t) {\n if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n}\nexport { _checkPrivateRedeclaration as default };","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nfunction _classPrivateMethodInitSpec(e, a) {\n checkPrivateRedeclaration(e, a), a.add(e);\n}\nexport { _classPrivateMethodInitSpec as default };","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nfunction _classPrivateFieldInitSpec(e, t, a) {\n checkPrivateRedeclaration(e, t), t.set(e, a);\n}\nexport { _classPrivateFieldInitSpec as default };","function _assertClassBrand(e, t, n) {\n if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;\n throw new TypeError(\"Private element is not present on this object\");\n}\nexport { _assertClassBrand as default };","import assertClassBrand from \"./assertClassBrand.js\";\nfunction _classPrivateFieldGet2(s, a) {\n return s.get(assertClassBrand(s, a));\n}\nexport { _classPrivateFieldGet2 as default };","import assertClassBrand from \"./assertClassBrand.js\";\nfunction _classPrivateFieldSet2(s, a, r) {\n return s.set(assertClassBrand(s, a), r), r;\n}\nexport { _classPrivateFieldSet2 as default };","import type {\n DefaultError,\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryFunction,\n QueryKey,\n QueryOptions,\n StaleTime,\n} from './types'\nimport type { Mutation } from './mutation'\nimport type { FetchOptions, Query } from './query'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation<any, any, any>) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type Updater<TInput, TOutput> = TOutput | ((input: TInput) => TOutput)\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined' || 'Deno' in globalThis\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as (_: TInput) => TOutput)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function resolveStaleTime<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n staleTime: undefined | StaleTime<TQueryFnData, TError, TData, TQueryKey>,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n): number | undefined {\n return typeof staleTime === 'function' ? staleTime(query) : staleTime\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query<any, any, any, any>,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation<any, any>,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(\n queryKey: TQueryKey,\n options?: Pick<QueryOptions<any, any, any, any>, 'queryKeyHashFn'>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep<T>(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aItems = array ? a : Object.keys(a)\n const aSize = aItems.length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n if (\n ((!array && aItems.includes(key)) || array) &&\n a[key] === undefined &&\n b[key] === undefined\n ) {\n copy[key] = undefined\n equalItems++\n } else {\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key] && a[key] !== undefined) {\n equalItems++\n }\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects.\n */\nexport function shallowEqualObjects<T extends Record<string, any>>(\n a: T,\n b: T | undefined,\n): boolean {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has no constructor\n const ctor = o.constructor\n if (ctor === undefined) {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Handles Objects created by Object.create(<arbitrary prototype>)\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions<any, any, any, any>,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data) as TData\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData<T>(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd<T>(items: Array<T>, item: T, max = 0): Array<T> {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart<T>(items: Array<T>, item: T, max = 0): Array<T> {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n\nexport const skipToken = Symbol()\nexport type SkipToken = typeof skipToken\n\nexport const ensureQueryFn = <\n TQueryFnData = unknown,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: {\n queryFn?: QueryFunction<TQueryFnData, TQueryKey> | SkipToken\n queryHash?: string\n },\n fetchOptions?: FetchOptions<TQueryFnData>,\n): QueryFunction<TQueryFnData, TQueryKey> => {\n if (process.env.NODE_ENV !== 'production') {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`,\n )\n }\n }\n\n // if we attempt to retry a fetch that was triggered from an initialPromise\n // when we don't have a queryFn yet, we can't retry, so we just return the already rejected initialPromise\n // if an observer has already mounted, we will be able to retry with that queryFn\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise!\n }\n\n if (!options.queryFn || options.queryFn === skipToken) {\n return () =>\n Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`))\n }\n\n return options.queryFn\n}\n","// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\ntype BatchCallsCallback<T extends Array<unknown>> = (...args: T) => void\n\ntype ScheduleFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: Array<NotifyCallback> = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n let scheduleFn: ScheduleFunction = (cb) => setTimeout(cb, 0)\n\n const setScheduler = (fn: ScheduleFunction) => {\n scheduleFn = fn\n }\n\n const batch = <T>(callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n }\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleFn(() => {\n notifyFn(callback)\n })\n }\n }\n\n /**\n * All calls to the wrapped function will be batched.\n */\n const batchCalls = <T extends Array<unknown>>(\n callback: BatchCallsCallback<T>,\n ): BatchCallsCallback<T> => {\n return (...args) => {\n schedule(() => {\n callback(...args)\n })\n }\n }\n\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n const setNotifyFunction = (fn: NotifyFunction) => {\n notifyFn = fn\n }\n\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n const setBatchNotifyFunction = (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n }\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n setScheduler,\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n","type Listener = () => void\n\nexport class Subscribable<TListener extends Function = Listener> {\n protected listeners: Set<TListener>\n\n constructor() {\n this.listeners = new Set()\n this.subscribe = this.subscribe.bind(this)\n }\n\n subscribe(listener: TListener): () => void {\n this.listeners.add(listener)\n\n this.onSubscribe()\n\n return () => {\n this.listeners.delete(listener)\n this.onUnsubscribe()\n }\n }\n\n hasListeners(): boolean {\n return this.listeners.size > 0\n }\n\n protected onSubscribe(): void {\n // Do nothing\n }\n\n protected onUnsubscribe(): void {\n // Do nothing\n }\n}\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (focused: boolean) => void\n\ntype SetupFn = (\n setFocused: (focused?: boolean) => void,\n) => (() => void) | undefined\n\nexport class FocusManager extends Subscribable<Listener> {\n #focused?: boolean\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onFocus) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus()\n // Listen to visibilitychange\n window.addEventListener('visibilitychange', listener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener)\n }\n }\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup((focused) => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused)\n } else {\n this.onFocus()\n }\n })\n }\n\n setFocused(focused?: boolean): void {\n const changed = this.#focused !== focused\n if (changed) {\n this.#focused = focused\n this.onFocus()\n }\n }\n\n onFocus(): void {\n const isFocused = this.isFocused()\n this.listeners.forEach((listener) => {\n listener(isFocused)\n })\n }\n\n isFocused(): boolean {\n if (typeof this.#focused === 'boolean') {\n return this.#focused\n }\n\n // document global can be unavailable in react native\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return globalThis.document?.visibilityState !== 'hidden'\n }\n}\n\nexport const focusManager = new FocusManager()\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype Listener = (online: boolean) => void\ntype SetupFn = (setOnline: Listener) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable<Listener> {\n #online = true\n #cleanup?: () => void\n\n #setup: SetupFn\n\n constructor() {\n super()\n this.#setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true)\n const offlineListener = () => onOnline(false)\n // Listen to online\n window.addEventListener('online', onlineListener, false)\n window.addEventListener('offline', offlineListener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', onlineListener)\n window.removeEventListener('offline', offlineListener)\n }\n }\n\n return\n }\n }\n\n protected onSubscribe(): void {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.()\n this.#cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.#setup = setup\n this.#cleanup?.()\n this.#cleanup = setup(this.setOnline.bind(this))\n }\n\n setOnline(online: boolean): void {\n const changed = this.#online !== online\n\n if (changed) {\n this.#online = online\n this.listeners.forEach((listener) => {\n listener(online)\n })\n }\n }\n\n isOnline(): boolean {\n return this.#online\n }\n}\n\nexport const onlineManager = new OnlineManager()\n","import { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { isServer, sleep } from './utils'\nimport type { CancelOptions, DefaultError, NetworkMode } from './types'\n\n// TYPES\n\ninterface RetryerConfig<TData = unknown, TError = DefaultError> {\n fn: () => TData | Promise<TData>\n initialPromise?: Promise<TData>\n abort?: () => void\n onError?: (error: TError) => void\n onSuccess?: (data: TData) => void\n onFail?: (failureCount: number, error: TError) => void\n onPause?: () => void\n onContinue?: () => void\n retry?: RetryValue<TError>\n retryDelay?: RetryDelayValue<TError>\n networkMode: NetworkMode | undefined\n canRun: () => boolean\n}\n\nexport interface Retryer<TData = unknown> {\n promise: Promise<TData>\n cancel: (cancelOptions?: CancelOptions) => void\n continue: () => Promise<unknown>\n cancelRetry: () => void\n continueRetry: () => void\n canStart: () => boolean\n start: () => Promise<TData>\n}\n\nexport type RetryValue<TError> = boolean | number | ShouldRetryFunction<TError>\n\ntype ShouldRetryFunction<TError = DefaultError> = (\n failureCount: number,\n error: TError,\n) => boolean\n\nexport type RetryDelayValue<TError> = number | RetryDelayFunction<TError>\n\ntype RetryDelayFunction<TError = DefaultError> = (\n failureCount: number,\n error: TError,\n) => number\n\nfunction defaultRetryDelay(failureCount: number) {\n return Math.min(1000 * 2 ** failureCount, 30000)\n}\n\nexport function canFetch(networkMode: NetworkMode | undefined): boolean {\n return (networkMode ?? 'online') === 'online'\n ? onlineManager.isOnline()\n : true\n}\n\nexport class CancelledError {\n revert?: boolean\n silent?: boolean\n constructor(options?: CancelOptions) {\n this.revert = options?.revert\n this.silent = options?.silent\n }\n}\n\nexport function isCancelledError(value: any): value is CancelledError {\n return value instanceof CancelledError\n}\n\nexport function createRetryer<TData = unknown, TError = DefaultError>(\n config: RetryerConfig<TData, TError>,\n): Retryer<TData> {\n let isRetryCancelled = false\n let failureCount = 0\n let isResolved = false\n let continueFn: ((value?: unknown) => void) | undefined\n let promiseResolve: (data: TData) => void\n let promiseReject: (error: TError) => void\n\n const promise = new Promise<TData>((outerResolve, outerReject) => {\n promiseResolve = outerResolve\n promiseReject = outerReject\n })\n\n const cancel = (cancelOptions?: CancelOptions): void => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions))\n\n config.abort?.()\n }\n }\n const cancelRetry = () => {\n isRetryCancelled = true\n }\n\n const continueRetry = () => {\n isRetryCancelled = false\n }\n\n const canContinue = () =>\n focusManager.isFocused() &&\n (config.networkMode === 'always' || onlineManager.isOnline()) &&\n config.canRun()\n\n const canStart = () => canFetch(config.networkMode) && config.canRun()\n\n const resolve = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onSuccess?.(value)\n continueFn?.()\n promiseResolve(value)\n }\n }\n\n const reject = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onError?.(value)\n continueFn?.()\n promiseReject(value)\n }\n }\n\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || canContinue()) {\n continueResolve(value)\n }\n }\n config.onPause?.()\n }).then(() => {\n continueFn = undefined\n if (!isResolved) {\n config.onContinue?.()\n }\n })\n }\n\n // Create loop function\n const run = () => {\n // Do nothing if already resolved\n if (isResolved) {\n return\n }\n\n let promiseOrValue: any\n\n // we can re-use config.initialPromise on the first call of run()\n const initialPromise =\n failureCount === 0 ? config.initialPromise : undefined\n\n // Execute query\n try {\n promiseOrValue = initialPromise ?? config.fn()\n } catch (error) {\n promiseOrValue = Promise.reject(error)\n }\n\n Promise.resolve(promiseOrValue)\n .then(resolve)\n .catch((error) => {\n // Stop if the fetch is already resolved\n if (isResolved) {\n return\n }\n\n // Do we need to retry the request?\n const retry = config.retry ?? (isServer ? 0 : 3)\n const retryDelay = config.retryDelay ?? defaultRetryDelay\n const delay =\n typeof retryDelay === 'function'\n ? retryDelay(failureCount, error)\n : retryDelay\n const shouldRetry =\n retry === true ||\n (typeof retry === 'number' && failureCount < retry) ||\n (typeof retry === 'function' && retry(failureCount, error))\n\n if (isRetryCancelled || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error)\n return\n }\n\n failureCount++\n\n // Notify on fail\n config.onFail?.(failureCount, error)\n\n // Delay\n sleep(delay)\n // Pause if the document is not visible or when the device is offline\n .then(() => {\n return canContinue() ? undefined : pause()\n })\n .then(() => {\n if (isRetryCancelled) {\n reject(error)\n } else {\n run()\n }\n })\n })\n }\n\n return {\n promise,\n cancel,\n continue: () => {\n continueFn?.()\n return promise\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n // Start loop\n if (canStart()) {\n run()\n } else {\n pause().then(run)\n }\n return promise\n },\n }\n}\n","import { isServer, isValidTimeout } from './utils'\n\nexport abstract class Removable {\n gcTime!: number\n #gcTimeout?: ReturnType<typeof setTimeout>\n\n destroy(): void {\n this.clearGcTimeout()\n }\n\n protected scheduleGc(): void {\n this.clearGcTimeout()\n\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = setTimeout(() => {\n this.optionalRemove()\n }, this.gcTime)\n }\n }\n\n protected updateGcTime(newGcTime: number | undefined): void {\n // Default to 5 minutes (Infinity for server-side) if no gcTime is set\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1000),\n )\n }\n\n protected clearGcTimeout() {\n if (this.#gcTimeout) {\n clearTimeout(this.#gcTimeout)\n this.#gcTimeout = undefined\n }\n }\n\n protected abstract optionalRemove(): void\n}\n","import { ensureQueryFn, noop, replaceData, timeUntilStale } from './utils'\nimport { notifyManager } from './notifyManager'\nimport { canFetch, createRetryer, isCancelledError } from './retryer'\nimport { Removable } from './removable'\nimport type {\n CancelOptions,\n DefaultError,\n FetchStatus,\n InitialDataFunction,\n OmitKeyof,\n QueryFunction,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n cache: QueryCache\n queryKey: TQueryKey\n queryHash: string\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state?: QueryState<TData, TError>\n}\n\nexport interface QueryState<TData = unknown, TError = DefaultError> {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: FetchMeta | null\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise<unknown>\n fetchOptions?: FetchOptions\n signal: AbortSignal\n options: QueryOptions<TQueryFnData, TError, TData, any>\n queryKey: TQueryKey\n state: QueryState<TData, TError>\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n query: Query,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions<TData = unknown> {\n cancelRefetch?: boolean\n meta?: FetchMeta\n initialPromise?: Promise<TData>\n}\n\ninterface FailedAction<TError> {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: FetchMeta\n}\n\ninterface SuccessAction<TData> {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError> {\n type: 'setState'\n state: Partial<QueryState<TData, TError>>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action<TData, TError> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction<TError>\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction<TData, TError>\n | SuccessAction<TData>\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state: QueryState<TData, TError>\n isFetchingOptimistic?: boolean\n\n #initialState: QueryState<TData, TError>\n #revertState?: QueryState<TData, TError>\n #cache: QueryCache\n #retryer?: Retryer<TData>\n observers: Array<QueryObserver<any, any, any, any, any>>\n #defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n #abortSignalConsumed: boolean\n\n constructor(config: QueryConfig<TQueryFnData, TError, TData, TQueryKey>) {\n super()\n\n this.#abortSignalConsumed = false\n this.#defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.#cache = config.cache\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = config.state || getDefaultState(this.options)\n this.state = this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n get promise(): Promise<TData> | undefined {\n return this.#retryer?.promise\n }\n\n setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n this.updateGcTime(this.options.gcTime)\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.#cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.#dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: Partial<QueryState<TData, TError>>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.#dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.#retryer?.promise\n this.#retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.#initialState)\n }\n\n isActive(): boolean {\n return this.observers.some((observer) => observer.options.enabled !== false)\n }\n\n isDisabled(): boolean {\n return this.getObserversCount() > 0 && !this.isActive()\n }\n\n isStale(): boolean {\n if (this.state.isInvalidated) {\n return true\n }\n\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale,\n )\n }\n\n return this.state.data === undefined\n }\n\n isStaleByTime(staleTime = 0): boolean {\n return (\n this.state.isInvalidated ||\n this.state.data === undefined ||\n !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n )\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n observer?.refetch({ cancelRefetch: false })\n\n // Continue fetch if currently paused\n this.#retryer?.continue()\n }\n\n addObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.#cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true })\n } else {\n this.#retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.#cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: 'invalidate' })\n }\n }\n\n fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions<TQueryFnData>,\n ): Promise<TData> {\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.data !== undefined && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetch\n this.cancel({ silent: true })\n } else if (this.#retryer) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.#retryer.continueRetry()\n // Return current promise if we are already fetching\n return this.#retryer.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = new AbortController()\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true\n return abortController.signal\n },\n })\n }\n\n // Create fetch function\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions)\n\n // Create query function context\n const queryFnContext: OmitKeyof<\n QueryFunctionContext<TQueryKey>,\n 'signal'\n > = {\n queryKey: this.queryKey,\n meta: this.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n this.#abortSignalConsumed = false\n if (this.options.persister) {\n return this.options.persister(\n queryFn as QueryFunction<any>,\n queryFnContext as QueryFunctionContext<TQueryKey>,\n this as unknown as Query,\n )\n }\n\n return queryFn(queryFnContext as QueryFunctionContext<TQueryKey>)\n }\n\n // Trigger behavior hook\n const context: OmitKeyof<\n FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(\n context as FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n this as unknown as Query,\n )\n\n // Store state in case the current fetch needs to be reverted\n this.#revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.#dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n const onError = (error: TError | { silent?: boolean }) => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.#dispatch({\n type: 'error',\n error: error as TError,\n })\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n this.#cache.config.onError?.(\n error as any,\n this as Query<any, any, any, any>,\n )\n this.#cache.config.onSettled?.(\n this.state.data,\n error as any,\n this as Query<any, any, any, any>,\n )\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n }\n\n // Try to fetch the data\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise as\n | Promise<TData>\n | undefined,\n fn: context.fetchFn as () => Promise<TData>,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (data === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n onError(new Error(`${this.queryHash} data is undefined`) as any)\n return\n }\n\n this.setData(data)\n\n // Notify cache callback\n this.#cache.config.onSuccess?.(data, this as Query<any, any, any, any>)\n this.#cache.config.onSettled?.(\n data,\n this.state.error as any,\n this as Query<any, any, any, any>,\n )\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true,\n })\n\n return this.#retryer.start()\n }\n\n #dispatch(action: Action<TData, TError>): void {\n const reducer = (\n state: QueryState<TData, TError>,\n ): QueryState<TData, TError> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null,\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n case 'error':\n const error = action.error as unknown\n\n if (isCancelledError(error) && error.revert && this.#revertState) {\n return { ...this.#revertState, fetchStatus: 'idle' }\n }\n\n return {\n ...state,\n error: error as TError,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error as TError,\n fetchStatus: 'idle',\n status: 'error',\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate()\n })\n\n this.#cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nexport function fetchState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n data: TData | undefined,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? 'fetching' : 'paused',\n ...(data === undefined &&\n ({\n error: null,\n status: 'pending',\n } as const)),\n } as const\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryState<TData, TError> {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction<TData>)()\n : options.initialData\n\n const hasData = data !== undefined\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'pending',\n fetchStatus: 'idle',\n }\n}\n","import {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { focusManager } from './focusManager'\nimport { Subscribable } from './subscribable'\nimport { fetchState } from './query'\nimport type { FetchOptions, Query, QueryState } from './query'\nimport type { QueryClient } from './queryClient'\nimport type {\n DefaultError,\n DefaultedQueryObserverOptions,\n PlaceholderDataFunction,\n QueryKey,\n QueryObserverBaseResult,\n QueryObserverOptions,\n QueryObserverResult,\n QueryOptions,\n RefetchOptions,\n} from './types'\n\ntype QueryObserverListener<TData, TError> = (\n result: QueryObserverResult<TData, TError>,\n) => void\n\nexport interface NotifyOptions {\n listeners?: boolean\n}\n\nexport interface ObserverFetchOptions extends FetchOptions {\n throwOnError?: boolean\n}\n\nexport class QueryObserver<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Subscribable<QueryObserverListener<TData, TError>> {\n #client: QueryClient\n #currentQuery: Query<TQueryFnData, TError, TQueryData, TQueryKey> = undefined!\n #currentQueryInitialState: QueryState<TQueryData, TError> = undefined!\n #currentResult: QueryObserverResult<TData, TError> = undefined!\n #currentResultState?: QueryState<TQueryData, TError>\n #currentResultOptions?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n #selectError: TError | null\n #selectFn?: (data: TQueryData) => TData\n #selectResult?: TData\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData?: Query<TQueryFnData, TError, TQueryData, TQueryKey>\n #staleTimeoutId?: ReturnType<typeof setTimeout>\n #refetchIntervalId?: ReturnType<typeof setInterval>\n #currentRefetchInterval?: number | false\n #trackedProps = new Set<keyof QueryObserverResult>()\n\n constructor(\n client: QueryClient,\n public options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super()\n\n this.#client = client\n this.#selectError = null\n this.bindMethods()\n this.setOptions(options)\n }\n\n protected bindMethods(): void {\n this.refetch = this.refetch.bind(this)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this)\n\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch()\n } else {\n this.updateResult()\n }\n\n this.#updateTimers()\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.hasListeners()) {\n this.destroy()\n }\n }\n\n shouldFetchOnReconnect(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect,\n )\n }\n\n shouldFetchOnWindowFocus(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus,\n )\n }\n\n destroy(): void {\n this.listeners = new Set()\n this.#clearStaleTimeout()\n this.#clearRefetchInterval()\n this.#currentQuery.removeObserver(this)\n }\n\n setOptions(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n const prevOptions = this.options\n const prevQuery = this.#currentQuery\n\n this.options = this.#client.defaultQueryOptions(options)\n\n if (\n this.options.enabled !== undefined &&\n typeof this.options.enabled !== 'boolean'\n ) {\n throw new Error('Expected enabled to be a boolean')\n }\n\n this.#updateQuery()\n this.#currentQuery.setOptions(this.options)\n\n if (\n prevOptions._defaulted &&\n !shallowEqualObjects(this.options, prevOptions)\n ) {\n this.#client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.#currentQuery,\n observer: this,\n })\n }\n\n const mounted = this.hasListeners()\n\n // Fetch if there are subscribers\n if (\n mounted &&\n shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions,\n )\n ) {\n this.#executeFetch()\n }\n\n // Update result\n this.updateResult(notifyOptions)\n\n // Update stale interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n resolveStaleTime(this.options.staleTime, this.#currentQuery) !==\n resolveStaleTime(prevOptions.staleTime, this.#currentQuery))\n ) {\n this.#updateStaleTimeout()\n }\n\n const nextRefetchInterval = this.#computeRefetchInterval()\n\n // Update refetch interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n nextRefetchInterval !== this.#currentRefetchInterval)\n ) {\n this.#updateRefetchInterval(nextRefetchInterval)\n }\n }\n\n getOptimisticResult(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const query = this.#client.getQueryCache().build(this.#client, options)\n\n const result = this.createResult(query, options)\n\n if (shouldAssignObserverCurrentProperties(this, result)) {\n // this assigns the optimistic result to the current Observer\n // because if the query function changes, useQuery will be performing\n // an effect where it would fetch again.\n // When the fetch finishes, we perform a deep data cloning in order\n // to reuse objects references. This deep data clone is performed against\n // the `observer.currentResult.data` property\n // When QueryKey changes, we refresh the query and get new `optimistic`\n // result, while we leave the `observer.currentResult`, so when new data\n // arrives, it finds the old `observer.currentResult` which is related\n // to the old QueryKey. Which means that currentResult and selectData are\n // out of sync already.\n // To solve this, we move the cursor of the currentResult every time\n // an observer reads an optimistic value.\n\n // When keeping the previous data, the result doesn't change until new\n // data arrives.\n this.#currentResult = result\n this.#currentResultOptions = this.options\n this.#currentResultState = this.#currentQuery.state\n }\n return result\n }\n\n getCurrentResult(): QueryObserverResult<TData, TError> {\n return this.#currentResult\n }\n\n trackResult(\n result: QueryObserverResult<TData, TError>,\n onPropTracked?: (key: keyof QueryObserverResult) => void,\n ): QueryObserverResult<TData, TError> {\n const trackedResult = {} as QueryObserverResult<TData, TError>\n\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackProp(key as keyof QueryObserverResult)\n onPropTracked?.(key as keyof QueryObserverResult)\n return result[key as keyof QueryObserverResult]\n },\n })\n })\n\n return trackedResult\n }\n\n trackProp(key: keyof QueryObserverResult) {\n this.#trackedProps.add(key)\n }\n\n getCurrentQuery(): Query<TQueryFnData, TError, TQueryData, TQueryKey> {\n return this.#currentQuery\n }\n\n refetch({ ...options }: RefetchOptions = {}): Promise<\n QueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n })\n }\n\n fetchOptimistic(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): Promise<QueryObserverResult<TData, TError>> {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n\n const query = this.#client\n .getQueryCache()\n .build(this.#client, defaultedOptions)\n query.isFetchingOptimistic = true\n\n return query.fetch().then(() => this.createResult(query, defaultedOptions))\n }\n\n protected fetch(\n fetchOptions: ObserverFetchOptions,\n ): Promise<QueryObserverResult<TData, TError>> {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true,\n }).then(() => {\n this.updateResult()\n return this.#currentResult\n })\n }\n\n #executeFetch(\n fetchOptions?: Omit<ObserverFetchOptions, 'initialPromise'>,\n ): Promise<TQueryData | undefined> {\n // Make sure we reference the latest query as the current one might have been removed\n this.#updateQuery()\n\n // Fetch\n let promise: Promise<TQueryData | undefined> = this.#currentQuery.fetch(\n this.options as QueryOptions<TQueryFnData, TError, TQueryData, TQueryKey>,\n fetchOptions,\n )\n\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n #updateStaleTimeout(): void {\n this.#clearStaleTimeout()\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery,\n )\n\n if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return\n }\n\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime)\n\n // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n const timeout = time + 1\n\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult()\n }\n }, timeout)\n }\n\n #computeRefetchInterval() {\n return (\n (typeof this.options.refetchInterval === 'function'\n ? this.options.refetchInterval(this.#currentQuery)\n : this.options.refetchInterval) ?? false\n )\n }\n\n #updateRefetchInterval(nextInterval: number | false): void {\n this.#clearRefetchInterval()\n\n this.#currentRefetchInterval = nextInterval\n\n if (\n isServer ||\n this.options.enabled === false ||\n !isValidTimeout(this.#currentRefetchInterval) ||\n this.#currentRefetchInterval === 0\n ) {\n return\n }\n\n this.#refetchIntervalId = setInterval(() => {\n if (\n this.options.refetchIntervalInBackground ||\n focusManager.isFocused()\n ) {\n this.#executeFetch()\n }\n }, this.#currentRefetchInterval)\n }\n\n #updateTimers(): void {\n this.#updateStaleTimeout()\n this.#updateRefetchInterval(this.#computeRefetchInterval())\n }\n\n #clearStaleTimeout(): void {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId)\n this.#staleTimeoutId = undefined\n }\n }\n\n #clearRefetchInterval(): void {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId)\n this.#refetchIntervalId = undefined\n }\n }\n\n protected createResult(\n query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const prevQuery = this.#currentQuery\n const prevOptions = this.options\n const prevResult = this.#currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n const prevResultState = this.#currentResultState\n const prevResultOptions = this.#currentResultOptions\n const queryChange = query !== prevQuery\n const queryInitialState = queryChange\n ? query.state\n : this.#currentQueryInitialState\n\n const { state } = query\n let newState = { ...state }\n let isPlaceholderData = false\n let data: TData | undefined\n\n // Optimistically set result in fetching state if needed\n if (options._optimisticResults) {\n const mounted = this.hasListeners()\n\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options)\n\n const fetchOptionally =\n mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions)\n\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options),\n }\n }\n if (options._optimisticResults === 'isRestoring') {\n newState.fetchStatus = 'idle'\n }\n }\n\n let { error, errorUpdatedAt, status } = newState\n\n // Select data if needed\n if (options.select && newState.data !== undefined) {\n // Memoize select result\n if (\n prevResult &&\n newState.data === prevResultState?.data &&\n options.select === this.#selectFn\n ) {\n data = this.#selectResult\n } else {\n try {\n this.#selectFn = options.select\n data = options.select(newState.data)\n data = replaceData(prevResult?.data, data, options)\n this.#selectResult = data\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n // Use query data\n else {\n data = newState.data as unknown as TData\n }\n\n // Show placeholder data if needed\n if (\n options.placeholderData !== undefined &&\n data === undefined &&\n status === 'pending'\n ) {\n let placeholderData\n\n // Memoize placeholder data\n if (\n prevResult?.isPlaceholderData &&\n options.placeholderData === prevResultOptions?.placeholderData\n ) {\n placeholderData = prevResult.data\n } else {\n placeholderData =\n typeof options.placeholderData === 'function'\n ? (\n options.placeholderData as unknown as PlaceholderDataFunction<TQueryData>\n )(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData as any,\n )\n : options.placeholderData\n if (options.select && placeholderData !== undefined) {\n try {\n placeholderData = options.select(placeholderData)\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n\n if (placeholderData !== undefined) {\n status = 'success'\n data = replaceData(\n prevResult?.data,\n placeholderData as unknown,\n options,\n ) as TData\n isPlaceholderData = true\n }\n }\n\n if (this.#selectError) {\n error = this.#selectError as any\n data = this.#selectResult\n errorUpdatedAt = Date.now()\n status = 'error'\n }\n\n const isFetching = newState.fetchStatus === 'fetching'\n const isPending = status === 'pending'\n const isError = status === 'error'\n\n const isLoading = isPending && isFetching\n const hasData = data !== undefined\n\n const result: QueryObserverBaseResult<TData, TError> = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n isFetchedAfterMount:\n newState.dataUpdateCount > queryInitialState.dataUpdateCount ||\n newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === 'paused',\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n }\n\n return result as QueryObserverResult<TData, TError>\n }\n\n updateResult(notifyOptions?: NotifyOptions): void {\n const prevResult = this.#currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n\n const nextResult = this.createResult(this.#currentQuery, this.options)\n this.#currentResultState = this.#currentQuery.state\n this.#currentResultOptions = this.options\n\n if (this.#currentResultState.data !== undefined) {\n this.#lastQueryWithDefinedData = this.#currentQuery\n }\n\n // Only notify and update result if something has changed\n if (shallowEqualObjects(nextResult, prevResult)) {\n return\n }\n\n this.#currentResult = nextResult\n\n // Determine which callbacks to trigger\n const defaultNotifyOptions: NotifyOptions = {}\n\n const shouldNotifyListeners = (): boolean => {\n if (!prevResult) {\n return true\n }\n\n const { notifyOnChangeProps } = this.options\n const notifyOnChangePropsValue =\n typeof notifyOnChangeProps === 'function'\n ? notifyOnChangeProps()\n : notifyOnChangeProps\n\n if (\n notifyOnChangePropsValue === 'all' ||\n (!notifyOnChangePropsValue && !this.#trackedProps.size)\n ) {\n return true\n }\n\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps,\n )\n\n if (this.options.throwOnError) {\n includedProps.add('error')\n }\n\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key as keyof QueryObserverResult\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey]\n return changed && includedProps.has(typedKey)\n })\n }\n\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true\n }\n\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions })\n }\n\n #updateQuery(): void {\n const query = this.#client.getQueryCache().build(this.#client, this.options)\n\n if (query === this.#currentQuery) {\n return\n }\n\n const prevQuery = this.#currentQuery as\n | Query<TQueryFnData, TError, TQueryData, TQueryKey>\n | undefined\n this.#currentQuery = query\n this.#currentQueryInitialState = query.state\n\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this)\n query.addObserver(this)\n }\n }\n\n onQueryUpdate(): void {\n this.updateResult()\n\n if (this.hasListeners()) {\n this.#updateTimers()\n }\n }\n\n #notify(notifyOptions: NotifyOptions): void {\n notifyManager.batch(() => {\n // First, trigger the listeners\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n }\n\n // Then the cache listeners\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: 'observerResultsUpdated',\n })\n })\n }\n}\n\nfunction shouldLoadOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n query.state.data === undefined &&\n !(query.state.status === 'error' && options.retryOnMount === false)\n )\n}\n\nfunction shouldFetchOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n shouldLoadOnMount(query, options) ||\n (query.state.data !== undefined &&\n shouldFetchOn(query, options, options.refetchOnMount))\n )\n}\n\nfunction shouldFetchOn(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n field: (typeof options)['refetchOnMount'] &\n (typeof options)['refetchOnWindowFocus'] &\n (typeof options)['refetchOnReconnect'],\n) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field\n\n return value === 'always' || (value !== false && isStale(query, options))\n }\n return false\n}\n\nfunction shouldFetchOptionally(\n query: Query<any, any, any, any>,\n prevQuery: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n prevOptions: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n (query !== prevQuery || prevOptions.enabled === false) &&\n (!options.suspense || query.state.status !== 'error') &&\n isStale(query, options)\n )\n}\n\nfunction isStale(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n query.isStaleByTime(resolveStaleTime(options.staleTime, query))\n )\n}\n\n// this function would decide if we will update the observer's 'current'\n// properties after an optimistic reading via getOptimisticResult\nfunction shouldAssignObserverCurrentProperties<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n observer: QueryObserver<TQueryFnData, TError, TData, TQueryData, TQueryKey>,\n optimisticResult: QueryObserverResult<TData, TError>,\n) {\n // if the newly created result isn't what the observer is holding as current,\n // then we'll need to update the properties as well\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true\n }\n\n // basically, just keep previous properties if nothing changed\n return false\n}\n","'use client'\nimport * as React from 'react'\n\n// CONTEXT\n\nexport interface QueryErrorResetBoundaryValue {\n clearReset: () => void\n isReset: () => boolean\n reset: () => void\n}\n\nfunction createValue(): QueryErrorResetBoundaryValue {\n let isReset = false\n return {\n clearReset: () => {\n isReset = false\n },\n reset: () => {\n isReset = true\n },\n isReset: () => {\n return isReset\n },\n }\n}\n\nconst QueryErrorResetBoundaryContext = React.createContext(createValue())\n\n// HOOK\n\nexport const useQueryErrorResetBoundary = () =>\n React.useContext(QueryErrorResetBoundaryContext)\n\n// COMPONENT\n\nexport interface QueryErrorResetBoundaryProps {\n children:\n | ((value: QueryErrorResetBoundaryValue) => React.ReactNode)\n | React.ReactNode\n}\n\nexport const QueryErrorResetBoundary = ({\n children,\n}: QueryErrorResetBoundaryProps) => {\n const [value] = React.useState(() => createValue())\n return (\n <QueryErrorResetBoundaryContext.Provider value={value}>\n {typeof children === 'function'\n ? (children as Function)(value)\n : children}\n </QueryErrorResetBoundaryContext.Provider>\n )\n}\n","'use client'\nimport * as React from 'react'\n\nimport type { QueryClient } from '@tanstack/query-core'\n\nexport const QueryClientContext = React.createContext<QueryClient | undefined>(\n undefined,\n)\n\nexport const useQueryClient = (queryClient?: QueryClient) => {\n const client = React.useContext(QueryClientContext)\n\n if (queryClient) {\n return queryClient\n }\n\n if (!client) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one')\n }\n\n return client\n}\n\nexport type QueryClientProviderProps = {\n client: QueryClient\n children?: React.ReactNode\n}\n\nexport const QueryClientProvider = ({\n client,\n children,\n}: QueryClientProviderProps): React.JSX.Element => {\n React.useEffect(() => {\n client.mount()\n return () => {\n client.unmount()\n }\n }, [client])\n\n return (\n <QueryClientContext.Provider value={client}>\n {children}\n </QueryClientContext.Provider>\n )\n}\n","'use client'\nimport * as React from 'react'\n\nconst IsRestoringContext = React.createContext(false)\n\nexport const useIsRestoring = () => React.useContext(IsRestoringContext)\nexport const IsRestoringProvider = IsRestoringContext.Provider\n","export function shouldThrowError<T extends (...args: Array<any>) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n\nexport function noop() {}\n","'use client'\nimport * as React from 'react'\nimport { shouldThrowError } from './utils'\nimport type {\n DefaultedQueryObserverOptions,\n Query,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'\n\nexport const ensurePreventErrorBoundaryRetry = <\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) => {\n if (options.suspense || options.throwOnError) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false\n }\n }\n}\n\nexport const useClearResetErrorBoundary = (\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset()\n }, [errorResetBoundary])\n}\n\nexport const getHasError = <\n TData,\n TError,\n TQueryFnData,\n TQueryData,\n TQueryKey extends QueryKey,\n>({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n}: {\n result: QueryObserverResult<TData, TError>\n errorResetBoundary: QueryErrorResetBoundaryValue\n throwOnError: ThrowOnError<TQueryFnData, TError, TQueryData, TQueryKey>\n query: Query<TQueryFnData, TError, TQueryData, TQueryKey> | undefined\n}) => {\n return (\n result.isError &&\n !errorResetBoundary.isReset() &&\n !result.isFetching &&\n query &&\n shouldThrowError(throwOnError, [result.error, query])\n )\n}\n","import type { DefaultError } from '@tanstack/query-core'\nimport type {\n DefaultedQueryObserverOptions,\n Query,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'\n\nexport const defaultThrowOnError = <\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n _error: TError,\n query: Query<TQueryFnData, TError, TData, TQueryKey>,\n) => query.state.data === undefined\n\nexport const ensureStaleTime = (\n defaultedOptions: DefaultedQueryObserverOptions<any, any, any, any, any>,\n) => {\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (typeof defaultedOptions.staleTime !== 'number') {\n defaultedOptions.staleTime = 1000\n }\n }\n}\n\nexport const willFetch = (\n result: QueryObserverResult<any, any>,\n isRestoring: boolean,\n) => result.isLoading && result.isFetching && !isRestoring\n\nexport const shouldSuspend = (\n defaultedOptions:\n | DefaultedQueryObserverOptions<any, any, any, any, any>\n | undefined,\n result: QueryObserverResult<any, any>,\n) => defaultedOptions?.suspense && result.isPending\n\nexport const fetchOptimistic = <\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n defaultedOptions: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n observer: QueryObserver<TQueryFnData, TError, TData, TQueryData, TQueryKey>,\n errorResetBoundary: QueryErrorResetBoundaryValue,\n) =>\n observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset()\n })\n","'use client'\nimport { QueryObserver } from '@tanstack/query-core'\nimport { useBaseQuery } from './useBaseQuery'\nimport type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core'\nimport type {\n DefinedUseQueryResult,\n UseQueryOptions,\n UseQueryResult,\n} from './types'\nimport type {\n DefinedInitialDataOptions,\n UndefinedInitialDataOptions,\n} from './queryOptions'\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): DefinedUseQueryResult<TData, TError>\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): UseQueryResult<TData, TError>\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): UseQueryResult<TData, TError>\n\nexport function useQuery(options: UseQueryOptions, queryClient?: QueryClient) {\n return useBaseQuery(options, QueryObserver, queryClient)\n}\n","'use client'\nimport * as React from 'react'\n\nimport { notifyManager } from '@tanstack/query-core'\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary'\nimport { useQueryClient } from './QueryClientProvider'\nimport { useIsRestoring } from './isRestoring'\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary,\n} from './errorBoundaryUtils'\nimport { ensureStaleTime, fetchOptimistic, shouldSuspend } from './suspense'\nimport type { UseBaseQueryOptions } from './types'\nimport type {\n QueryClient,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: UseBaseQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n Observer: typeof QueryObserver,\n queryClient?: QueryClient,\n): QueryObserverResult<TData, TError> {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof options !== 'object' || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object',\n )\n }\n }\n\n const client = useQueryClient(queryClient)\n const isRestoring = useIsRestoring()\n const errorResetBoundary = useQueryErrorResetBoundary()\n const defaultedOptions = client.defaultQueryOptions(options)\n\n // Make sure results are optimistically set in fetching state before subscribing or updating options\n defaultedOptions._optimisticResults = isRestoring\n ? 'isRestoring'\n : 'optimistic'\n\n ensureStaleTime(defaultedOptions)\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary)\n\n useClearResetErrorBoundary(errorResetBoundary)\n\n const [observer] = React.useState(\n () =>\n new Observer<TQueryFnData, TError, TData, TQueryData, TQueryKey>(\n client,\n defaultedOptions,\n ),\n )\n\n const result = observer.getOptimisticResult(defaultedOptions)\n\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = isRestoring\n ? () => undefined\n : observer.subscribe(notifyManager.batchCalls(onStoreChange))\n\n // Update result to make sure we did not miss any query updates\n // between creating the observer and subscribing to it.\n observer.updateResult()\n\n return unsubscribe\n },\n [observer, isRestoring],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n React.useEffect(() => {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, { listeners: false })\n }, [defaultedOptions, observer])\n\n // Handle suspense\n if (shouldSuspend(defaultedOptions, result)) {\n // Do the same thing as the effect right above because the effect won't run\n // when we suspend but also, the component won't re-mount so our observer would\n // be out of date.\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n }\n\n // Handle error boundary\n if (\n getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query: client\n .getQueryCache()\n .get<\n TQueryFnData,\n TError,\n TQueryData,\n TQueryKey\n >(defaultedOptions.queryHash),\n })\n ) {\n throw result.error\n }\n\n // Handle result property usage tracking\n return !defaultedOptions.notifyOnChangeProps\n ? observer.trackResult(result)\n : result\n}\n","import { HomeClient } from '@/lib/DoomCentral'\r\nimport { useQuery } from '@tanstack/react-query'\r\n\r\nexport const useCommunityNews = () => {\r\n return useQuery({\r\n queryKey: ['community-news'],\r\n queryFn: async () => {\r\n const client = new HomeClient()\r\n const data = await client.getHomePage()\r\n return data.newsItems\r\n },\r\n })\r\n}\r\n","import { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator'\r\nimport { useCommunityNews } from '@/hooks/useCommunityNews'\r\nimport { Card, CardBody, CardHeader, CardTitle } from 'reactstrap'\r\n\r\nexport const CommunityNewsCard = ({ ...rest }) => {\r\n const { isLoading, error, data: communityNews } = useCommunityNews()\r\n\r\n return (\r\n <Card {...rest}>\r\n <CardBody style={{ minHeight: 64 }}>\r\n <CardTitle tag='h2' className='mb-3'>\r\n Community News\r\n </CardTitle>\r\n {isLoading ? (\r\n <LoadingIndicator />\r\n ) : error || communityNews.length === 0 ? (\r\n <p>No news available.</p>\r\n ) : (\r\n communityNews.map((newsItem) => (\r\n <div key={newsItem.id}>\r\n <h6>\r\n <strong>{newsItem.title}</strong>\r\n </h6>\r\n <p>{newsItem.postDate.toDateString()}</p>\r\n <p>{newsItem.posts} posts</p>\r\n </div>\r\n ))\r\n )}\r\n </CardBody>\r\n </Card>\r\n )\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ShieldCheck\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/shield-check\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ShieldCheck = createLucideIcon('ShieldCheck', [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n ['path', { d: 'm9 12 2 2 4-4', key: 'dzmm74' }],\n]);\n\nexport default ShieldCheck;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ShieldPlus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/shield-plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ShieldPlus = createLucideIcon('ShieldPlus', [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n ['path', { d: 'M9 12h6', key: '1c52cq' }],\n ['path', { d: 'M12 9v6', key: '199k2o' }],\n]);\n\nexport default ShieldPlus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('Shield', [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n]);\n\nexport default Shield;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Flame\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/flame\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flame = createLucideIcon('Flame', [\n [\n 'path',\n {\n d: 'M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z',\n key: '96xj49',\n },\n ],\n]);\n\nexport default Flame;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name EyeOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/eye-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst EyeOff = createLucideIcon('EyeOff', [\n ['path', { d: 'M9.88 9.88a3 3 0 1 0 4.24 4.24', key: '1jxqfv' }],\n [\n 'path',\n {\n d: 'M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68',\n key: '9wicm4',\n },\n ],\n [\n 'path',\n { d: 'M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61', key: '1jreej' },\n ],\n ['line', { x1: '2', x2: '22', y1: '2', y2: '22', key: 'a6p6uj' }],\n]);\n\nexport default EyeOff;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Pin\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/pin\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pin = createLucideIcon('Pin', [\n ['line', { x1: '12', x2: '12', y1: '17', y2: '22', key: '1jrz49' }],\n [\n 'path',\n {\n d: 'M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z',\n key: '13yl11',\n },\n ],\n]);\n\nexport default Pin;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name PinOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/pin-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PinOff = createLucideIcon('PinOff', [\n ['line', { x1: '2', x2: '22', y1: '2', y2: '22', key: 'a6p6uj' }],\n ['line', { x1: '12', x2: '12', y1: '17', y2: '22', key: '1jrz49' }],\n ['path', { d: 'M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V17h12', key: '13x2n8' }],\n ['path', { d: 'M15 9.34V6h1a2 2 0 0 0 0-4H7.89', key: 'reo3ki' }],\n]);\n\nexport default PinOff;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Activity\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/activity\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Activity = createLucideIcon('Activity', [\n [\n 'path',\n {\n d: 'M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2',\n key: '169zse',\n },\n ],\n]);\n\nexport default Activity;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Radio\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/radio\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Radio = createLucideIcon('Radio', [\n ['path', { d: 'M4.9 19.1C1 15.2 1 8.8 4.9 4.9', key: '1vaf9d' }],\n ['path', { d: 'M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5', key: 'u1ii0m' }],\n ['circle', { cx: '12', cy: '12', r: '2', key: '1c9p78' }],\n ['path', { d: 'M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5', key: '1j5fej' }],\n ['path', { d: 'M19.1 4.9C23 8.8 23 15.1 19.1 19', key: '10b0cb' }],\n]);\n\nexport default Radio;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Lock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/lock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Lock = createLucideIcon('Lock', [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 10 0v4', key: 'fwvmzm' }],\n]);\n\nexport default Lock;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name LockOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/lock-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LockOpen = createLucideIcon('LockOpen', [\n ['rect', { width: '18', height: '11', x: '3', y: '11', rx: '2', ry: '2', key: '1w4ew1' }],\n ['path', { d: 'M7 11V7a5 5 0 0 1 9.9-1', key: '1mm8w8' }],\n]);\n\nexport default LockOpen;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Trash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/trash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash = createLucideIcon('Trash', [\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6', key: '4alrt4' }],\n ['path', { d: 'M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2', key: 'v07s0e' }],\n]);\n\nexport default Trash;\n","import {\r\n Activity,\r\n EyeIcon,\r\n EyeOffIcon,\r\n FlameIcon,\r\n LockIcon,\r\n LockOpenIcon,\r\n MessageSquareDotIcon,\r\n PinIcon,\r\n PinOffIcon,\r\n Radio,\r\n MessageSquarePlusIcon,\r\n ShieldBanIcon,\r\n ShieldCheckIcon,\r\n ShieldIcon,\r\n ShieldMinusIcon,\r\n ShieldPlusIcon,\r\n TrashIcon,\r\n} from 'lucide-react'\r\n\r\nexport const ApprovedIcon = (props) => <ShieldCheckIcon {...props} />\r\nexport const UnapprovedIcon = (props) => <ShieldMinusIcon {...props} />\r\nexport const ModeratedIcon = (props) => <ShieldPlusIcon {...props} />\r\nexport const NewMessageIcon = (props) => <MessageSquarePlusIcon {...props} />\r\nexport const UnmoderatedIcon = (props) => <ShieldIcon {...props} />\r\nexport const BanIcon = (props) => <ShieldBanIcon {...props} />\r\nexport const HotIcon = (props) => <FlameIcon {...props} />\r\nexport const HiddenIcon = (props) => <EyeOffIcon {...props} />\r\nexport const ShowIcon = (props) => <EyeIcon {...props} />\r\nexport const StickiedIcon = (props) => <PinIcon {...props} />\r\nexport const UnstickiedIcon = (props) => <PinOffIcon {...props} />\r\nexport const ActivityIcon = (props) => <Activity {...props} />\r\nexport const LiveIcon = (props) => <Radio {...props} />\r\nexport const UnreadIcon = (props) => <MessageSquareDotIcon {...props} />\r\nexport const LockedIcon = (props) => <LockIcon {...props} />\r\nexport const UnlockedIcon = (props) => <LockOpenIcon {...props} />\r\nexport const DeleteIcon = (props) => <TrashIcon {...props} />\r\n","var _excluded = [\"className\", \"cssModule\", \"tag\", \"flush\", \"horizontal\", \"numbered\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Remove borders to make the list appear flush */\n flush: PropTypes.bool,\n /** Make the list horizontal instead of vertical */\n horizontal: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /** Add number to the ListItems */\n numbered: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nvar getHorizontalClass = function getHorizontalClass(horizontal) {\n if (horizontal === false) {\n return false;\n }\n if (horizontal === true || horizontal === 'xs') {\n return 'list-group-horizontal';\n }\n return \"list-group-horizontal-\".concat(horizontal);\n};\nfunction ListGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'ul' : _props$tag,\n flush = props.flush,\n _props$horizontal = props.horizontal,\n horizontal = _props$horizontal === void 0 ? false : _props$horizontal,\n _props$numbered = props.numbered,\n numbered = _props$numbered === void 0 ? false : _props$numbered,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'list-group',\n // list-group-horizontal cannot currently be mixed with list-group-flush\n // we only try to apply horizontal classes if flush is false\n flush ? 'list-group-flush' : getHorizontalClass(horizontal), {\n 'list-group-numbered': numbered\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nListGroup.propTypes = propTypes;\nexport default ListGroup;","var _excluded = [\"className\", \"cssModule\", \"tag\", \"active\", \"disabled\", \"action\", \"color\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Add action prop to give effects while hovering over element */\n action: PropTypes.bool,\n /** Add active prop to make the current selection active */\n active: PropTypes.bool,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** Add background colour to the list item */\n color: PropTypes.string,\n /** Make the list item appear disabled */\n disabled: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nvar handleDisabledOnClick = function handleDisabledOnClick(e) {\n e.preventDefault();\n};\nfunction ListGroupItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'li' : _props$tag,\n active = props.active,\n disabled = props.disabled,\n action = props.action,\n color = props.color,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, active ? 'active' : false, disabled ? 'disabled' : false, action ? 'list-group-item-action' : false, color ? \"list-group-item-\".concat(color) : false, 'list-group-item'), cssModule);\n\n // Prevent click event when disabled.\n if (disabled) {\n attributes.onClick = handleDisabledOnClick;\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n}\nListGroupItem.propTypes = propTypes;\nexport default ListGroupItem;","import { LiveIcon } from '@/components/icons/Icons'\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator'\r\nimport { useEvents } from '@/hooks/useEvents'\r\nimport { getFlagForEventRegion } from '@/utils/EventHelpers'\r\nimport { Card, CardBody, CardHeader, CardTitle, ListGroup, ListGroupItem } from 'reactstrap'\r\n\r\nexport const EventsCard = ({ ...rest }) => {\r\n const { isLoading, isError, data } = useEvents()\r\n\r\n if (isLoading) {\r\n return (\r\n <Card>\r\n <CardBody style={{ minHeight: 64 }}>\r\n <LoadingIndicator />\r\n </CardBody>\r\n </Card>\r\n )\r\n }\r\n\r\n if (isError) {\r\n ; <Card>\r\n <CardBody style={{ minHeight: 64 }}>\r\n <div>Could not get events.</div>\r\n </CardBody>\r\n </Card>\r\n }\r\n\r\n const { liveEventItems: liveEvents, pastEventItems: pastEvents, upcomingEventItems: upcomingEvents } = data\r\n\r\n return (\r\n <Card {...rest}>\r\n <CardBody style={{ minHeight: 64 }}>\r\n <CardTitle tag='h2' className='mb-3'>\r\n Events\r\n </CardTitle>\r\n <>\r\n {liveEvents.eventList.length === 0\r\n ? <p>No live events</p>\r\n : (\r\n <div className=\"mb-3\">\r\n <h5>Live Events</h5>\r\n <ListGroup>\r\n {liveEvents.eventList.map(({ eventId, title, eventStartDate, eventEndDate, eventRegion, organizerId }) => (\r\n <ListGroupItem key={eventId}>\r\n <LiveIcon className='me-1' />\r\n {title}\r\n </ListGroupItem>\r\n ))}\r\n </ListGroup>\r\n </div>\r\n )}\r\n\r\n {upcomingEvents.eventList.length === 0\r\n ? <p>No upcoming events</p>\r\n : (\r\n <div className=\"mb-3\">\r\n <h5>Upcoming Events</h5>\r\n <ListGroup>\r\n {upcomingEvents.eventList.map(({ eventId, title, eventStartDate, eventEndDate, eventRegion, organizerId }) => (\r\n <ListGroupItem key={eventId} className=\"d-flex flex-row justify-content-between\" action tag=\"a\" href={`/event/${eventId}`}>\r\n <div>\r\n <span className=\"me-2\">{getFlagForEventRegion(eventRegion)}</span>\r\n <span>\r\n {new Date(eventStartDate).toLocaleDateString()}\r\n </span>\r\n </div>\r\n <h6 className=\"mb-0\">\r\n {title}\r\n </h6>\r\n </ListGroupItem>\r\n ))}\r\n </ListGroup>\r\n </div>\r\n )}\r\n\r\n {pastEvents.eventList.length === 0\r\n ? <p>No past events.</p>\r\n : (\r\n <div className=\"mb-3\">\r\n <h5>Past Events</h5>\r\n <ListGroup>\r\n\r\n {pastEvents.eventList.map(({ eventId, title, eventStartDate, eventEndDate, eventRegion, organizerId }) => (\r\n <ListGroupItem key={eventId} className=\"d-flex flex-row justify-content-between\" action tag=\"a\" href={`/event/${eventId}`}>\r\n <div>\r\n <span className=\"me-2\">{getFlagForEventRegion(eventRegion)}</span>\r\n <span>\r\n {new Date(eventStartDate).toLocaleDateString()}\r\n </span>\r\n </div>\r\n <h6 className=\"mb-0\">\r\n {title}\r\n </h6>\r\n </ListGroupItem>\r\n ))}\r\n </ListGroup>\r\n </div>\r\n )}\r\n\r\n </>\r\n </CardBody>\r\n </Card>\r\n )\r\n}\r\n","import { DoomCentralEventsClient } from '@/lib/DoomCentral'\r\nimport { useQuery } from '@tanstack/react-query'\r\n\r\nexport const useEvents = () => {\r\n return useQuery({\r\n queryKey: ['events'],\r\n queryFn: async () => {\r\n const client = new DoomCentralEventsClient()\r\n const { liveEventItems, pastEventItems, upcomingEventItems } = await client.getEvents(1, 10, 1, 10)\r\n return { liveEventItems, pastEventItems, upcomingEventItems }\r\n },\r\n })\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Flag\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/flag\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Flag = createLucideIcon('Flag', [\n ['path', { d: 'M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z', key: 'i9b6wo' }],\n ['line', { x1: '4', x2: '4', y1: '22', y2: '15', key: '1cm3nv' }],\n]);\n\nexport default Flag;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name MessageSquarePlus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/message-square-plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst MessageSquarePlus = createLucideIcon('MessageSquarePlus', [\n ['path', { d: 'M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z', key: '1lielz' }],\n ['path', { d: 'M12 7v6', key: 'lw1j43' }],\n ['path', { d: 'M9 10h6', key: '9gxzsh' }],\n]);\n\nexport default MessageSquarePlus;\n","import { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator'\r\nimport { useRecentThreads } from '@/hooks/useRecentThreads'\r\nimport { FlagIcon, FlameIcon, MessageSquarePlusIcon } from 'lucide-react'\r\nimport { Link } from 'react-router-dom'\r\nimport { Button, Card, CardBody, CardHeader, CardTitle } from 'reactstrap'\r\n\r\nexport const RecentThreadsCard = ({ ...rest }) => {\r\n const { isLoading, isError, data: recentThreads } = useRecentThreads()\r\n\r\n return (\r\n <Card {...rest}>\r\n <CardBody style={{ minHeight: 64 }}>\r\n <CardTitle className='mb-3' tag='h2'>\r\n Recent Threads\r\n </CardTitle>\r\n {isLoading ? (\r\n <LoadingIndicator />\r\n ) : isError || recentThreads?.length === 0 ? (\r\n <p>No threads available.</p>\r\n ) : (\r\n recentThreads.map(({ id, isSticky, isHot, isNew, title, posts }) => (\r\n <div key={id}>\r\n <Link to={`/thread/${id}`} className='ps-0'>\r\n {isSticky && <FlagIcon className='me-1' style={{ width: '1rem', height: '1rem' }} />}\r\n {isHot && <FlameIcon className='me-1' style={{ width: '1rem', height: '1rem' }} />}\r\n {isNew && <MessageSquarePlusIcon className='me-1' style={{ width: '1rem', height: '1rem' }} /> }\r\n {title}\r\n </Link>\r\n <p>\r\n <small>{posts} posts</small>\r\n </p>\r\n </div>\r\n ))\r\n )}\r\n </CardBody>\r\n </Card>\r\n )\r\n}\r\n","import { HomeClient } from '@/lib/DoomCentral'\r\nimport { useQuery } from '@tanstack/react-query'\r\n\r\nexport const useRecentThreads = () => {\r\n return useQuery({\r\n queryKey: ['recent-threads'],\r\n queryFn: async () => {\r\n const client = new HomeClient()\r\n const res = await client.getHomePage()\r\n return res.recentThreads\r\n },\r\n })\r\n}\r\n","import { useRoles } from '@/hooks/useRoles'\r\nimport DoomCentralEventRoles from '@/lib/DoomCentralEventRoles'\r\nimport DoomCentralRoles from '@/lib/DoomCentralRoles'\r\nimport ForumRoles from '@/lib/ForumRoles'\r\nimport NewsPostRoles from '@/lib/NewsPostRoles'\r\nimport { containsDuplicate } from '@/utils/helpers'\r\nimport { useAuth } from 'react-oidc-context'\r\n\r\nexport const useCapabilities = () => {\r\n const auth = useAuth()\r\n\r\n const { roles } = useRoles()\r\n\r\n const adminMenuRoles = [\r\n DoomCentralRoles.GlobalAdministrator,\r\n DoomCentralRoles.PromotionAdministrator,\r\n ForumRoles.GlobalForumAdministrator,\r\n DoomCentralEventRoles.GlobalEventAdministrator,\r\n NewsPostRoles.GlobalNewsAdministrator,\r\n ]\r\n\r\n const isGlobalAdmin = roles.includes(DoomCentralRoles.GlobalAdministrator)\r\n const isGlobalForumAdmin = roles.includes(ForumRoles.GlobalForumAdministrator)\r\n const isGlobalEventAdmin = roles.includes(DoomCentralEventRoles.GlobalEventAdministrator)\r\n const isGlobalNewsAdmin = roles.includes(NewsPostRoles.GlobalNewsAdministrator)\r\n const isAuthenticated = auth.isAuthenticated\r\n\r\n const canPromote =\r\n auth.user &&\r\n (auth.user?.profile.role as string[]) &&\r\n containsDuplicate([DoomCentralRoles.PromotionAdministrator, DoomCentralRoles.GlobalAdministrator], auth.user?.profile.role as string[])\r\n\r\n return {\r\n canPromote,\r\n isGlobalAdmin,\r\n isGlobalForumAdmin,\r\n isGlobalEventAdmin,\r\n isGlobalNewsAdmin,\r\n isAuthenticated\r\n }\r\n}\r\n","import { useAuth } from 'react-oidc-context'\r\n\r\nexport const useRoles = () => {\r\n const auth = useAuth()\r\n\r\n return {\r\n roles: auth.isAuthenticated ? (auth.user.profile.role as string[]) : [],\r\n }\r\n}\r\n","import { getThreads } from '@/api/getThreads'\r\nimport { keepPreviousData, useQuery } from '@tanstack/react-query'\r\n\r\nexport type useThreadsProps = {\r\n id: number | string\r\n}\r\n\r\nexport const useThreads = ({ id }: useThreadsProps) => {\r\n return useQuery({\r\n queryKey: ['threads'],\r\n queryFn: async () => await getThreads({ id: +id })\r\n })\r\n}\r\n","import { ForumsClient, ThreadsClient } from '@/lib/DoomCentral'\r\n\r\ntype getThreadsArgs = {\r\n id: number\r\n page?: number\r\n limit?: number\r\n}\r\n\r\nexport const getThreads = async ({ id, page = 1, limit = 10 }: getThreadsArgs) => {\r\n const fc = new ForumsClient()\r\n const [forumMeta] = (await fc.getForums()).forums.filter(({ id: forumId }) => +forumId === id)\r\n const { threadList: res } = await fc.getThreadsByForumId(id, id, page, limit)\r\n // const { threadList: res } = await new ThreadsClient().getThreadList(id, page, limit)\r\n const { totalCount, totalPages, threadList } = res\r\n return { threads: threadList, totalPages, totalThreads: totalCount, forumMeta }\r\n}\r\n","var _excluded = [\"className\", \"cssModule\", \"color\", \"innerRef\", \"pill\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Pass children so this component can wrap the child elements */\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Change background color of Badge */\n color: PropTypes.string,\n /** Change existing className with a new className */\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n /** Add rounded corners to the Badge */\n pill: PropTypes.bool,\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction Badge(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$color = props.color,\n color = _props$color === void 0 ? 'secondary' : _props$color,\n innerRef = props.innerRef,\n _props$pill = props.pill,\n pill = _props$pill === void 0 ? false : _props$pill,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'span' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'badge', 'bg-' + color, pill ? 'rounded-pill' : false), cssModule);\n if (attributes.href && Tag === 'span') {\n Tag = 'a';\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n}\nBadge.propTypes = propTypes;\nexport default Badge;","import { getUserUnreadPosts } from '@/api/getUserUnreadPosts'\r\nimport { Columns } from '@/components/columns/Columns'\r\nimport { CommunityNewsCard } from '@/components/community-news-card/CommunityNewsCard'\r\nimport { EventsCard } from '@/components/events-card/EventsCard'\r\nimport { ApprovedIcon, HotIcon, LockedIcon, ModeratedIcon, StickiedIcon } from '@/components/icons/Icons'\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator'\r\nimport { RecentThreadsCard } from '@/components/recent-threads-card/RecentThreadsCard'\r\nimport { useCapabilities } from '@/hooks/useCapabilities'\r\nimport { useThreads } from '@/hooks/useThreads'\r\nimport { cn } from '@/utils/utils'\r\nimport RelativeTime from '@yaireo/relative-time'\r\nimport { NavLink, useHistory, useParams } from 'react-router-dom'\r\nimport { Badge, Button, Card, CardBody, ListGroup, ListGroupItem } from 'reactstrap'\r\nimport { toast } from 'sonner'\r\n\r\nconst relativeTime = new RelativeTime()\r\n\r\nexport const ForumPage = () => {\r\n\r\n const { id } = useParams<{ id: string }>()\r\n\r\n if (!id) {\r\n toast.error('Invalid forum id')\r\n // TODO: Should probably redirect here\r\n }\r\n\r\n const history = useHistory()\r\n\r\n const { data, isLoading, isError, isFetching } = useThreads({ id })\r\n\r\n const { isGlobalForumAdmin, isGlobalAdmin, isAuthenticated } = useCapabilities()\r\n\r\n if (isLoading || isFetching) {\r\n return <LoadingIndicator />\r\n }\r\n\r\n if (isError) {\r\n toast.error('Error fetching threads')\r\n return <div>There was an error fetching threads.</div>\r\n }\r\n\r\n const jumpToLastUnread = async (threadId: number) => {\r\n const unreadPosts = await getUserUnreadPosts({threadId})\r\n if (unreadPosts.length === 0) {\r\n toast.error('You have 0 unread posts')\r\n return\r\n }\r\n const highestId = unreadPosts.reduce((max, obj) => obj.id > max ? obj.id : max, unreadPosts[0].id);\r\n const redirectUrl = `/thread/${threadId}#post-${highestId}`\r\n history.push(redirectUrl)\r\n }\r\n\r\n return (\r\n <>\r\n <Columns\r\n rightColumn={\r\n <div>\r\n {(isGlobalForumAdmin || isGlobalAdmin) && (\r\n <Card className='mb-3'>\r\n <CardBody>\r\n <div>\r\n <h5>Forum mod tools</h5>\r\n <p>\r\n <strong>Coming Soon</strong>\r\n </p>\r\n </div>\r\n </CardBody>\r\n </Card>\r\n )}\r\n <CommunityNewsCard className='mb-3' />\r\n <EventsCard className='mb-3' />\r\n <RecentThreadsCard className='mb-3' />\r\n </div>\r\n }\r\n >\r\n <Card>\r\n <CardBody>\r\n <h1 className={cn(data.forumMeta.description ? 'mb-3' : 'mb-4')}>{data.forumMeta.name}</h1>\r\n {data.forumMeta.description && <h4 className='mb-4 fs-5'>{data.forumMeta.description}</h4>}\r\n <div>\r\n {data.threads.length === 0 ? (\r\n <div>\r\n <p>There are no threads in this forum.</p>\r\n <Button color='primary' onClick={() => history.push(`/newthread?forumid=${id}`)}>\r\n Create Thread\r\n </Button>\r\n </div>\r\n ) : (\r\n <div>\r\n <ListGroup>\r\n {data.threads.map(({ id: threadId, title, unread, unreadPosts, hot, locked, moderated, approved, dcEvent, dcForum, dcNews, stickied, highestPostId }) => (\r\n <ListGroupItem key={threadId} className={cn('d-flex', 'flex-row', 'justify-content-between')}>\r\n <div className={cn(\"d-inline-flex\", 'align-items-center')}>\r\n {stickied && <StickiedIcon className='mb-1' />}\r\n {dcEvent && <span>DC EVENT</span>}\r\n {dcNews && <span>DC NEWS</span>}\r\n {hot && <HotIcon className='mb-1' />}\r\n {locked && <LockedIcon className='mb-1' />}\r\n {moderated && <ModeratedIcon className='mb-1' />}\r\n {approved && <ApprovedIcon className='mb-1' />}\r\n <h4 className='ms-2'>\r\n <NavLink to={`/thread/${threadId}`}>{title}</NavLink>\r\n </h4>\r\n </div>\r\n {isAuthenticated && <div>\r\n {unreadPosts > 0 \r\n ? (\r\n <Button onClick={() => jumpToLastUnread(threadId)} color=\"link\">\r\n <span className=\"me-1\">\r\n Jump to last unread\r\n </span>\r\n <Badge className=\"ms-1\" pill color={unreadPosts > 0 ? 'primary' : 'secondary'}>\r\n {unreadPosts} Unread\r\n </Badge>\r\n </Button>\r\n ): (\r\n <Button color=\"link\" onClick={() => history.push(`/thread/${threadId}?page=1&pageSize=50#post-${highestPostId}`)}>Jump to last post</Button>\r\n )}\r\n </div>}\r\n </ListGroupItem>\r\n ))}\r\n </ListGroup>\r\n </div>\r\n )}\r\n </div>\r\n </CardBody>\r\n </Card>\r\n </Columns>\r\n </>\r\n )\r\n}\r\n","import { ThreadsClient } from \"@/lib/DoomCentral\"\r\n\r\nexport type getUserUnreadPosts = {\r\n threadId: number\r\n}\r\n\r\nexport const getUserUnreadPosts = async ({ threadId }: getUserUnreadPosts) => {\r\n const c = new ThreadsClient()\r\n const res = await c.getPostsByThreadId(threadId, threadId, 1, 500)\r\n return res.postList.filter(post => post.unread)\r\n}","import { containsDuplicate } from '@/utils/helpers'\r\nimport RelativeTime from '@yaireo/relative-time'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Card, CardBody, CardDeck, CardSubtitle, CardTitle, Col, List, ListGroup, ListGroupItem, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { ForumGroupDto, ForumsClient } from '../../lib/DoomCentral'\r\nimport DoomCentralEventRoles from '../../lib/DoomCentralEventRoles'\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport ForumRoles from '../../lib/ForumRoles'\r\nimport NewsPostRoles from '../../lib/NewsPostRoles'\r\nimport { ErrorContext } from '../../state'\r\nimport { ActivityIcon } from '../icons/Icons'\r\nimport { LoadingIndicator } from '../loading-indicator/LoadingIndicator'\r\n\r\nconst relativeTime = new RelativeTime()\r\n\r\nexport const ForumList = () => {\r\n const auth = useAuth()\r\n const adminMenuRoles = [\r\n DoomCentralRoles.GlobalAdministrator,\r\n DoomCentralRoles.PromotionAdministrator,\r\n ForumRoles.GlobalForumAdministrator,\r\n DoomCentralEventRoles.GlobalEventAdministrator,\r\n NewsPostRoles.GlobalNewsAdministrator,\r\n ]\r\n\r\n const canModForums =\r\n auth.user &&\r\n (auth.user?.profile.role as string[]) &&\r\n containsDuplicate([DoomCentralRoles.GlobalAdministrator, ForumRoles.GlobalForumAdministrator], auth.user?.profile.role as string[])\r\n\r\n const error = useContext(ErrorContext)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [pageData, setPageData] = useState<ForumGroupDto[]>([])\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n setLoading(true)\r\n try {\r\n const client = new ForumsClient()\r\n const { forumGroups } = await client.getForumListing()\r\n setPageData(forumGroups)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n } finally {\r\n setLoading(false)\r\n }\r\n })()\r\n }, [])\r\n\r\n return (\r\n <>\r\n {loading && <LoadingIndicator />}\r\n\r\n <Card>\r\n <CardBody>\r\n <h1 className='mb-3'>Doom Central Forums</h1>\r\n\r\n <ListGroup flush>\r\n {pageData.map(({ forums, groupDescription, groupName }) => {\r\n return (\r\n <ListGroup key={groupName} flush>\r\n <ListGroupItem>\r\n <h2>{groupName}</h2>\r\n {groupDescription && <h5>{groupDescription}</h5>}\r\n {forums.length > 0 ? (\r\n <ListGroup flush>\r\n {forums.map(({ id, description, name, threadCount, postCount, hidden, locked, moderated, lastActive, unread, highestPostId }) => {\r\n if (hidden && !canModForums) {\r\n return <></>\r\n }\r\n\r\n return (\r\n <ListGroupItem key={id} className='border-0'>\r\n <Row>\r\n <Col xs='12' sm='12'>\r\n <NavLink to={`/forum/${id}`}>{name}</NavLink>\r\n {description && <p>{description}</p>}\r\n {lastActive && (\r\n <p>\r\n <ActivityIcon className='me-1' style={{ width: '1rem', height: '1rem' }} />\r\n <span className='visually-hidden'>Latest activity: </span> {lastActive.postAuthorDisplayName} posted{' '}\r\n <NavLink to={`/thread/${lastActive.threadId}`}>{relativeTime.from(lastActive.created)}</NavLink>\r\n </p>\r\n )}\r\n </Col>\r\n {/* <Col xs='auto' className='d-flex align-items-start'>\r\n {threadCount} Threads\r\n </Col>\r\n <Col xs='auto' className='d-flex align-items-start'>\r\n {postCount} Posts\r\n </Col> */}\r\n </Row>\r\n </ListGroupItem>\r\n )\r\n })}\r\n </ListGroup>\r\n ) : (\r\n <div>No forums available.</div>\r\n )}\r\n </ListGroupItem>\r\n </ListGroup>\r\n )\r\n })}\r\n </ListGroup>\r\n </CardBody>\r\n </Card>\r\n </>\r\n )\r\n}\r\n","import { Columns } from '@/components/columns/Columns'\r\nimport { CommunityNewsCard } from '@/components/community-news-card/CommunityNewsCard'\r\nimport { EventsCard } from '@/components/events-card/EventsCard'\r\nimport HelmetPages from '@/components/helmet/HelmetPages'\r\nimport { RecentThreadsCard } from '@/components/recent-threads-card/RecentThreadsCard'\r\nimport { ForumList } from '../../components/forum-list/ForumList'\r\n\r\nexport const ForumsPage = () => {\r\n return (\r\n <>\r\n <HelmetPages title='Doom Central - Forums' />\r\n <Columns\r\n rightColumn={\r\n <div>\r\n <CommunityNewsCard className='mb-3' />\r\n <EventsCard className='mb-3' />\r\n <RecentThreadsCard className='mb-3' />\r\n </div>\r\n }\r\n >\r\n <ForumList />\r\n </Columns>\r\n </>\r\n )\r\n}\r\n","import MDEditor, { ContextStore, RefMDEditor } from '@uiw/react-md-editor'\r\nimport { ForwardedRef, LegacyRef, forwardRef } from 'react'\r\nimport rehypeRaw from 'rehype-raw'\r\nimport rehypeSanitize, { defaultSchema } from 'rehype-sanitize'\r\nimport remarkBreaks from 'remark-breaks'\r\nimport remarkDirective from 'remark-directive'\r\nimport remarkGfm from 'remark-gfm'\r\nimport remarkImages from 'remark-images'\r\nimport remarkUnwrapImages from 'remark-unwrap-images'\r\nimport remarkColorDirectivePlugin from '../../remarkColorDirectivePlugin'\r\n\r\nexport type MarkdownEditorProps = {\r\n value?: string\r\n onChange: (value?: string, event?: React.ChangeEvent<HTMLTextAreaElement>, state?: ContextStore) => void\r\n}\r\n\r\nexport const MarkdownEditor = forwardRef<ForwardedRef<LegacyRef<RefMDEditor>>, MarkdownEditorProps>(({ value, onChange }, ref) => {\r\n return (\r\n <MDEditor\r\n ref={ref}\r\n value={value}\r\n onChange={onChange}\r\n previewOptions={{\r\n remarkPlugins: [\r\n [remarkGfm, { singleTilde: false }],\r\n remarkBreaks,\r\n remarkUnwrapImages,\r\n remarkImages,\r\n remarkDirective,\r\n remarkColorDirectivePlugin\r\n ],\r\n rehypePlugins: [\r\n [\r\n rehypeSanitize,\r\n ],\r\n ],\r\n }}\r\n />\r\n )\r\n})\r\n","import { PostFileDto } from '@/lib/DoomCentral'\r\nimport { formatBytes } from '@/utils/helpers'\r\nimport { useHistory } from 'react-router'\r\nimport { Button, Card, CardBody, CardImg, CardImgOverlay, CardText, CardTitle } from 'reactstrap'\r\n\r\nimport { getPreviewImageForFileNameString } from '../../utils/utils'\r\n\r\nexport type PostFileCardProps = {\r\n postId: number | string\r\n postFile: PostFileDto\r\n maxWidth?: number\r\n}\r\n\r\nexport const PostFileCard = ({ postId, postFile, maxWidth = 300 }: PostFileCardProps) => {\r\n const history = useHistory()\r\n\r\n const { postFileName, postFileDescription, sizeBytes } = postFile\r\n\r\n return (\r\n <Card style={{ maxWidth }}>\r\n <CardImg\r\n alt={postFileDescription || `Image preview for ${postFileName}`}\r\n src={getPreviewImageForFileNameString(postFileName, +postId)}\r\n className='rounded-0'\r\n style={{\r\n height: 200,\r\n maxHeight: 200,\r\n width: '100%',\r\n objectFit: 'cover',\r\n objectPosition: 'top',\r\n }}\r\n width={'100%'}\r\n />\r\n\r\n {/* <CardImgOverlay>\r\n <CardTitle tag='h5'>{postFile.postFileName}</CardTitle>\r\n <CardText>\r\n {formatBytes(postFile.sizeBytes)}\r\n {postFile.postFileDescription}\r\n </CardText>\r\n </CardImgOverlay> */}\r\n\r\n <div className='p-1 d-flex flex-column' style={{ fontSize: '0.8rem' }}>\r\n <strong>\r\n <span>{postFileName}</span>\r\n </strong>\r\n <span>{formatBytes(sizeBytes)}</span>\r\n {postFileDescription && <span>{postFileDescription}</span>}\r\n </div>\r\n\r\n <a\r\n href={getPreviewImageForFileNameString(postFileName, +postId)}\r\n target='_blank'\r\n rel='noopener noreferrer'\r\n className='btn btn-outline-secondary stretched-link rounded-0'\r\n >\r\n Download\r\n </a>\r\n </Card>\r\n )\r\n}\r\n","import React from 'react';\n\n/**\n * AccordionContext\n * {\n * toggle: PropTypes.func.isRequired,\n * openId: PropTypes.string,\n * }\n */\nexport var AccordionContext = /*#__PURE__*/React.createContext({});","var _excluded = [\"flush\", \"open\", \"toggle\", \"className\", \"cssModule\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport { AccordionContext } from './AccordionContext';\nvar propTypes = {\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Change existing className with a new className */\n cssModule: PropTypes.object,\n /** Render accordions edge-to-edge with their parent container */\n flush: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** The current active key that corresponds to the currently expanded card */\n open: PropTypes.oneOfType([PropTypes.array, PropTypes.string]).isRequired,\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Function that's triggered on clicking `AccordionHeader` */\n toggle: PropTypes.func.isRequired\n};\nfunction Accordion(props) {\n var flush = props.flush,\n open = props.open,\n toggle = props.toggle,\n className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'accordion', {\n 'accordion-flush': flush\n }), cssModule);\n var accordionContext = useMemo(function () {\n return {\n open: open,\n toggle: toggle\n };\n });\n return /*#__PURE__*/React.createElement(AccordionContext.Provider, {\n value: accordionContext\n }, /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n })));\n}\nAccordion.propTypes = propTypes;\nexport default Accordion;","var _excluded = [\"className\", \"cssModule\", \"tag\", \"innerRef\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n children: PropTypes.node,\n /** To add custom class */\n className: PropTypes.string,\n /** Change existing base class name with a new class name */\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction AccordionItem(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n innerRef = props.innerRef,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, 'accordion-item'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }));\n}\nAccordionItem.propTypes = propTypes;\nexport default AccordionItem;","var _excluded = [\"className\", \"cssModule\", \"tag\", \"innerRef\", \"children\", \"targetId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport { AccordionContext } from './AccordionContext';\nvar propTypes = {\n children: PropTypes.node,\n /** Add custom class */\n className: PropTypes.string,\n /** Change existing base class name with a new class name */\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Unique key used to control item's collapse/expand */\n targetId: PropTypes.string.isRequired\n};\nfunction AccordionHeader(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'h2' : _props$tag,\n innerRef = props.innerRef,\n children = props.children,\n targetId = props.targetId,\n attributes = _objectWithoutProperties(props, _excluded);\n var _useContext = useContext(AccordionContext),\n open = _useContext.open,\n toggle = _useContext.toggle;\n var classes = mapToCssModules(classNames(className, 'accordion-header'), cssModule);\n var buttonClasses = mapToCssModules(classNames('accordion-button', {\n collapsed: !(Array.isArray(open) ? open.includes(targetId) : open === targetId)\n }), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n className: classes,\n ref: innerRef\n }), /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: buttonClasses,\n onClick: function onClick() {\n return toggle(targetId);\n }\n }, children));\n}\nAccordionHeader.propTypes = propTypes;\nexport default AccordionHeader;","var _excluded = [\"className\", \"cssModule\", \"tag\", \"innerRef\", \"children\", \"accordionId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Collapse from './Collapse';\nimport { AccordionContext } from './AccordionContext';\nvar propTypes = {\n /** Unique key used to control item's collapse/expand */\n accordionId: PropTypes.string.isRequired,\n /** To add custom class */\n className: PropTypes.string,\n children: PropTypes.node,\n /** Change existing base class name with a new class name */\n cssModule: PropTypes.object,\n /** Pass ref to the component */\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func]),\n /** Set a custom element for this component */\n tag: tagPropType\n};\nfunction AccordionBody(props) {\n var className = props.className,\n cssModule = props.cssModule,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n innerRef = props.innerRef,\n children = props.children,\n accordionId = props.accordionId,\n attributes = _objectWithoutProperties(props, _excluded);\n var _useContext = useContext(AccordionContext),\n open = _useContext.open;\n var classes = mapToCssModules(classNames(className, 'accordion-collapse'), cssModule);\n return /*#__PURE__*/React.createElement(Collapse, _extends({}, attributes, {\n className: classes,\n ref: innerRef,\n isOpen: Array.isArray(open) ? open.includes(accordionId) : open === accordionId\n }), /*#__PURE__*/React.createElement(Tag, {\n className: \"accordion-body\"\n }, children));\n}\nAccordionBody.propTypes = propTypes;\nexport default AccordionBody;","import { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator'\r\nimport { useQuotedPost } from '@/hooks/useQuotedPost'\r\nimport { useState } from 'react'\r\nimport { Accordion, AccordionBody, AccordionHeader, AccordionItem, Card, CardBody } from 'reactstrap'\r\n\r\nimport MarkdownPost from '../../components/markdown-post/MarkdownPost'\r\n\r\nexport type QuotedPost = {\r\n postId: number\r\n reply?: boolean\r\n}\r\n\r\nexport const QuotedPost = ({ postId, reply = false }: QuotedPost) => {\r\n const { isLoading, error, post } = useQuotedPost({ id: postId })\r\n\r\n if (isLoading) {\r\n return <LoadingIndicator />\r\n }\r\n\r\n if (error) {\r\n console.error(error)\r\n return <div>Could not load post.</div>\r\n }\r\n\r\n const targetId = reply ? 'reply-to-post-' + post?.id : 'quote-post' + post?.id\r\n\r\n const [open, setOpen] = useState(reply ? targetId : '1')\r\n\r\n const toggle = (id: string) => (open === id ? setOpen('') : setOpen(id))\r\n\r\n return (\r\n <Accordion toggle={toggle} open={open}>\r\n <AccordionItem>\r\n <AccordionHeader targetId={targetId}>{reply ? `Replying to ${post?.postAuthorDisplayName}` : `${post?.postAuthorDisplayName} sayz`}</AccordionHeader>\r\n <AccordionBody accordionId={targetId}>\r\n <Card>\r\n <CardBody>\r\n <MarkdownPost content={post?.postContent} />\r\n </CardBody>\r\n </Card>\r\n </AccordionBody>\r\n </AccordionItem>\r\n </Accordion>\r\n )\r\n}\r\n","// TODO: use react-query for this\r\nimport { IndividualPostItemDto, ThreadPostsClient } from '@/lib/DoomCentral'\r\nimport { useEffect, useState } from 'react'\r\n\r\nexport const useQuotedPost = ({ id }: { id: string | number }) => {\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [error, setError] = useState('')\r\n const [data, setData] = useState<IndividualPostItemDto>()\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n try {\r\n const client = new ThreadPostsClient()\r\n const { post } = await client.getThreadPostByPostId(+id, +id)\r\n setData(post)\r\n setIsLoading(true)\r\n } catch (e) {\r\n console.error(e)\r\n setError(e.message)\r\n } finally {\r\n setIsLoading(false)\r\n }\r\n })()\r\n }, [id])\r\n\r\n return { isLoading, error, post: data }\r\n}\r\n","import { markPostAsRead } from \"@/api/markPostAsRead\";\r\nimport { createContext, useEffect, useState } from \"react\";\r\n\r\nexport const ReadPostsContext = createContext({ postsToRead: [], setPostsToRead: (ids: number[]) => {}})\r\n\r\nconst UPDATE_READ_STATUS_DEBOUNCE = 300\r\n\r\nexport const ReadPostsContextProvider = ({ children, threadId }) => {\r\n const [postsToRead, setPostsToRead] = useState<number[]>([])\r\n\r\n useEffect(() => {\r\n\r\n const timerId = setTimeout(async () => {\r\n\r\n if (postsToRead.length > 0) {\r\n // console.log(`Setting highest read ${Math.max(...postsToRead)} on thread ${threadId}`)\r\n await markPostAsRead({ highestReadPostId: Math.max(...postsToRead), threadId })\r\n }\r\n\r\n }, UPDATE_READ_STATUS_DEBOUNCE)\r\n\r\n return () => clearTimeout(timerId)\r\n\r\n }, [postsToRead])\r\n\r\n return <ReadPostsContext.Provider \r\n value={{ \r\n postsToRead, \r\n setPostsToRead \r\n }}>{children}</ReadPostsContext.Provider>\r\n}","import { MarkThreadPostsAsReadCommand, ThreadsClient } from \"@/lib/DoomCentral\"\r\n\r\nexport type markPostAsReadArgs = {\r\n highestReadPostId: number;\r\n threadId: number;\r\n}\r\n\r\nexport const markPostAsRead = async ({ highestReadPostId, threadId }) => {\r\n const client = new ThreadsClient()\r\n const cmd = new MarkThreadPostsAsReadCommand({ threadId, highestReadThreadPost: highestReadPostId })\r\n return await client.markAsRead(cmd)\r\n}","import { IThreadDetailDto, PostItemDto, ThreadPostsClient, UpdateThreadPostCommand } from '@/lib/DoomCentral'\r\nimport { UserCanEditForumPost, UserCanPostInThread, UserIsForumAdmin } from '@/utils/helpers'\r\nimport { cn } from '@/utils/utils'\r\nimport RelativeTime from '@yaireo/relative-time'\r\nimport { useEffect, useState } from 'react'\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { useHistory } from 'react-router'\r\nimport { Button, Card, CardBody, Input, InputGroup, Label } from 'reactstrap'\r\nimport { toast } from 'sonner'\r\n\r\nimport MarkdownPost from '../../components/markdown-post/MarkdownPost'\r\nimport { MarkdownEditor } from '../markdown-editor/MarkdownEditor'\r\nimport { PostFileCard } from '../post-file-card/PostFileCard'\r\nimport { QuotedPost } from '../quoted-post/QuotedPost'\r\nimport { useInView } from '@/hooks/useInView'\r\nimport { useMarkPostsAsRead } from '@/hooks/useMarkPostsAsRead'\r\n\r\ninterface PostProps {\r\n post: PostItemDto\r\n meta: IThreadDetailDto\r\n onQuotePostClick: (post: PostItemDto) => void\r\n}\r\n\r\nconst relativeTime = new RelativeTime()\r\n\r\n\r\nexport const Post = ({ post, meta, onQuotePostClick, ...rest }: PostProps) => {\r\n const auth = useAuth()\r\n\r\n const [isEditing, setIsEditing] = useState(false)\r\n const [isSubmittingEdit, setIsSubmittingEdit] = useState(false)\r\n const [canSubmitEdit, setCanSubmitEdit] = useState(false)\r\n const [editReason, setEditReason] = useState('')\r\n const [editedPost, setEditedPost] = useState(post.embedlessPost)\r\n\r\n const [ref, isInView] = useInView()\r\n\r\n useMarkPostsAsRead({ post, isInView, threadId: meta.id })\r\n\r\n // TODO: User capabilities hook\r\n const canEditPost = auth.isAuthenticated ? UserCanEditForumPost(auth.user, post) : false\r\n const canQuotePost = auth.isAuthenticated ? UserCanPostInThread(auth.user, meta) : false\r\n const isOwner = auth.isAuthenticated ? Boolean(post.postAuthorId === auth?.user.profile.sub) : false\r\n const canDeletePost = (auth.isAuthenticated ? UserIsForumAdmin(auth.user, meta.forumId) : false) || isOwner\r\n\r\n const generatePostURL = () => `${window.location.origin}/thread/${meta.id}#post-${post.id}`\r\n\r\n const onEditClick = () => setIsEditing(true)\r\n\r\n const onDeleteClick = (post: PostItemDto) => {\r\n alert('Not implemented')\r\n // onDelete(post)\r\n }\r\n\r\n const onQuoteClick = (e, post: PostItemDto) => {\r\n e.preventDefault()\r\n onQuotePostClick(post)\r\n }\r\n\r\n const history = useHistory()\r\n\r\n const submitEdit = async () => {\r\n try {\r\n setIsSubmittingEdit(true)\r\n const client = new ThreadPostsClient()\r\n const payload = {\r\n post: editedPost,\r\n postId: post.id,\r\n editReason,\r\n quotedPostId: post.quotedPostId,\r\n }\r\n const cmd = new UpdateThreadPostCommand(payload)\r\n await client.update(post.id, cmd)\r\n history.push(window.location) // refresh the page\r\n } catch (e) {\r\n console.error(e)\r\n toast.error('Failed to edit post')\r\n } finally {\r\n setIsSubmittingEdit(false)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (editReason === '' || editedPost === '' || editedPost === post.embedlessPost) {\r\n setCanSubmitEdit(false)\r\n } else {\r\n setCanSubmitEdit(true)\r\n }\r\n }, [editReason])\r\n\r\n return (\r\n <div ref={ref as any}>\r\n <Card {...rest} className='rounded-0' id={`post-${post.id}`}>\r\n <CardBody>\r\n {!isEditing ? (\r\n <>\r\n <div className={cn('d-flex', 'flex-row', 'justify-content-between', 'align-items-center', 'mb-3')}>\r\n <p className={cn(post.unread && 'text-bold', 'mb-0')}>\r\n Posted {relativeTime.from(post.created)} by {post.postAuthorDisplayName}\r\n </p>\r\n <div className='d-flex'>\r\n <CopyToClipboard text={generatePostURL()} onCopy={() => toast.success('Post URL copied to clipboard')}>\r\n <Button outline className='me-1 border-0'>\r\n Link to this post\r\n </Button>\r\n </CopyToClipboard>\r\n {canQuotePost && (\r\n <Button outline className='border-0 me-1' onClick={(e) => onQuoteClick(e, post)}>\r\n Quote\r\n </Button>\r\n )}\r\n {canEditPost && (\r\n <Button outline className='border-0' onClick={onEditClick}>\r\n Edit\r\n </Button>\r\n )}\r\n {canDeletePost && (\r\n <Button outline color='danger' className='border-0' onClick={() => onDeleteClick(post)}>\r\n Delete\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div>\r\n {post.quotedPostId && (\r\n <div className='mb-3'>\r\n <QuotedPost postId={post.quotedPostId} />\r\n </div>\r\n )}\r\n <Card className='mb-3'>\r\n <CardBody>\r\n <MarkdownPost content={post.postContent} />\r\n </CardBody>\r\n </Card>\r\n {post.postFiles.filter((p) => !p.hidden && !p.deleted).length > 0 && (\r\n <>\r\n <div className='d-inline-flex'>\r\n {post.postFiles.map((file) => (\r\n <PostFileCard key={file.id} postFile={file} postId={post.id} />\r\n ))}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n\r\n {post.editIteration >= 1 && post.editReason && (\r\n <div>\r\n <p className='text-sm m-0'>\r\n <em>\r\n Edited {post.editIteration} times. Edit reason: {post.editReason}\r\n </em>\r\n </p>\r\n </div>\r\n )}\r\n </>\r\n ) : (\r\n <>\r\n <div className={cn('d-flex', 'flex-row', 'justify-content-end', 'mb-3')}>\r\n <Button outline className='me-1 border-0' onClick={submitEdit} color='primary' disabled={!canSubmitEdit || isSubmittingEdit}>\r\n Save\r\n </Button>\r\n <Button outline className='me-1 border-0' onClick={() => setIsEditing(false)}>\r\n Cancel\r\n </Button>\r\n </div>\r\n\r\n <div className='mb-3'>\r\n <MarkdownEditor value={editedPost} onChange={(v) => setEditedPost(v)} />\r\n </div>\r\n\r\n <InputGroup className={cn('d-flex', 'align-items-center')}>\r\n <Label for='editReason' className='me-3'>\r\n Reason for edit\r\n </Label>\r\n <Input id='editReason' value={editReason} onChange={(e) => setEditReason(e.target.value)} />\r\n </InputGroup>\r\n </>\r\n )}\r\n </CardBody>\r\n </Card>\r\n </div>\r\n\r\n )\r\n}\r\n\r\n// {(!props.editMode || (props.editMode && props.postToEdit != props.postItem.id)) && (\r\n// <>\r\n// <div className='post-header'>\r\n// {props.postItem.unread && <span className='forum-unread-posts'>� </span>}\r\n// <div className='post-author'>\r\n// <span>{props.postItem.postAuthorDisplayName}</span>\r\n// </div>\r\n// {props.postItem.postAuthorBadgeUrl.length > 0 && (\r\n// <div className='post-author-badge'>\r\n// <span id='userBadge'>\r\n// <img src={props.postItem.postAuthorBadgeUrl} />\r\n// </span>\r\n// <UncontrolledTooltip flip target='userBadge'>\r\n// {props.postItem.postAuthorBadgeName}\r\n// </UncontrolledTooltip>\r\n// </div>\r\n// )}\r\n// <div className='post-num'>\r\n// <HashLink to={`?page=${props.pageNumber}#postid-${props.postItem.id}`}>#{props.postItem.postNumber}</HashLink>\r\n// </div>\r\n// </div>\r\n// {props.postItem.quotedPostId > 0 && <QuoteBox quotedPostId={props.postItem.quotedPostId} setQuotedPostId={null} editMode={false} />}\r\n// {props.isAdmin && (\r\n// <ForumModeratorTools postId={props.postItem.id} setModPost={props.setModPost} locked={props.postItem.locked} approved={props.postItem.approved} />\r\n// )}\r\n// <figure>\r\n// <MarkdownPost content={props.postItem.postContent} />\r\n// <figcaption className='blockquote-footer'>\r\n// Posted{' '}\r\n// <span>\r\n// <span id={'dateCreated' + props.postItem.id}>{relativeTime.from(new Date(props.postItem.created))}</span>\r\n// <UncontrolledTooltip placement='bottom' target={'dateCreated' + props.postItem.id}>\r\n// {new Intl.DateTimeFormat('default', { dateStyle: 'full', timeStyle: 'long' }).format(new Date(props.postItem.created))}\r\n// </UncontrolledTooltip>\r\n// </span>{' '}\r\n// by{' '}\r\n// {props.postItem.postAuthorUserName && (\r\n// <NavLink to={`/user/${props.postItem.postAuthorUserName}`}>{props.postItem.postAuthorDisplayName}</NavLink>\r\n// )}\r\n// {!props.postItem.postAuthorUserName && props.postItem.postAuthorDisplayName}\r\n// </figcaption>\r\n// </figure>\r\n// <div className='post-footer'>\r\n// <div className='post-actions'>\r\n// {/* <div className='post-num'>\r\n// <HashLink to={`#${s.id}`}>\r\n// <small>hash: #{s.postNumber}</small>\r\n// </HashLink>\r\n// </div> */}\r\n// {auth.user && auth.isAuthenticated && props.authorized && (\r\n// <small>\r\n// <a onClick={(e) => props.setQuotedPostId(props.postItem.id)} className='post-action'>\r\n// quote\r\n// </a>\r\n// <i className='bi bi-dot post-action-div'></i>\r\n// </small>\r\n// )}\r\n\r\n// <p className='text-end'>\r\n// <HashLink to={`?page=${props.pageNumber}#postid-${props.postItem.id}`} className='post-action text-right'>\r\n// <small>Link to this comment</small>\r\n// </HashLink>\r\n// </p>\r\n\r\n// {auth.user && auth.isAuthenticated && (auth.user.profile.sub === props.postItem.postAuthorId || props.isAdmin) && (\r\n// <small>\r\n// <i className='bi bi-dot post-action-div'></i>\r\n// <a onClick={(e) => props.editPost(props.postItem.id, props.postItem.quotedPostId, props.postItem.postContent)} className='post-action'>\r\n// edit\r\n// </a>\r\n// </small>\r\n// )}\r\n// </div>\r\n// </div>\r\n// </>\r\n// )}\r\n// {auth.user && auth.isAuthenticated && props.editMode && props.postToEdit === props.postItem.id && (\r\n// <EditPostStation\r\n// clearEditMode={props.clearEditMode}\r\n// editedPost={props.editedPost}\r\n// editReason={props.editReason}\r\n// id={props.postItem.id}\r\n// postToQuote={props.postToQuote}\r\n// setPostToQuote={props.setPostToQuote}\r\n// />\r\n// )}\r\n// <PostFileDisplayer postFiles={props.postItem.postFiles} postId={props.postItem.id} />\r\n// </Card>\r\n","import { useEffect, useRef, useState } from \"react\"\r\n\r\nexport const useInView = () => {\r\n\r\n const ref = useRef()\r\n\r\n const [isInView, setIsInView] = useState(false)\r\n\r\n const callbackFunction = entries => {\r\n const [entry] = entries\r\n setIsInView(entry.isIntersecting)\r\n }\r\n\r\n useEffect(() => {\r\n\r\n const observer = new IntersectionObserver(callbackFunction)\r\n\r\n if (ref.current) observer.observe(ref.current)\r\n\r\n const currentRef = ref.current\r\n\r\n return () => {\r\n if (currentRef) observer.unobserve(currentRef)\r\n }\r\n\r\n }, [ref])\r\n\r\n return [ref, isInView]\r\n \r\n}","import { MutableRefObject, useContext, useEffect, useState } from \"react\"\r\nimport { useCapabilities } from \"./useCapabilities\"\r\nimport { ReadPostsContext } from \"@/contexts/ReadPostsContext\"\r\nimport { PostItemDto } from \"@/lib/DoomCentral\"\r\n\r\nexport type useMarkPostsAsReadProps = {\r\n post: PostItemDto\r\n isInView: boolean | MutableRefObject<undefined>\r\n threadId: number\r\n}\r\n\r\nexport const useMarkPostsAsRead = ({ post, isInView }: useMarkPostsAsReadProps) => {\r\n\r\n const { postsToRead, setPostsToRead } = useContext(ReadPostsContext)\r\n\r\n const { isAuthenticated } = useCapabilities()\r\n\r\n useEffect(() => {\r\n if (!isAuthenticated) return\r\n\r\n if (post.unread && isInView && !postsToRead.includes(post.id)) {\r\n setPostsToRead([...postsToRead, post.id])\r\n }\r\n\r\n }, [isInView, post])\r\n\r\n}","import { PostItemDto, ThreadDetailDto } from '@/lib/DoomCentral'\r\nimport { ListGroup } from 'reactstrap'\r\nimport { useRef, useEffect } from 'react'\r\n\r\nimport { Post } from '../post/Post'\r\n\r\nexport type PostListProps = {\r\n meta: ThreadDetailDto\r\n posts: PostItemDto[]\r\n onQuotePostClick: (post: PostItemDto) => void\r\n}\r\n\r\nexport const PostList = ({ meta, posts, onQuotePostClick }: PostListProps) => {\r\n const scriptRoot = useRef<HTMLInputElement | null>(null) // gets assigned to a root node\r\n\r\n const tiktokscript = `<script async defer src=\"https://www.tiktok.com/embed.js\"></script>`\r\n const twitterscript = `<script async defer src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>`\r\n const redditscript = `<script async defer src=\"https://embed.reddit.com/widgets.js\" charset=\"UTF-8\"></script>`\r\n\r\n useEffect(() => {\r\n // creates a document range (grouping of nodes in the document is my understanding)\r\n // in this case we instantiate it as empty, on purpose\r\n const range = document.createRange()\r\n // creates a mini-document (light weight version), in our range with our script in it\r\n const twitterFragment = range.createContextualFragment(twitterscript)\r\n const tiktokFragment = range.createContextualFragment(tiktokscript)\r\n const redditFragment = range.createContextualFragment(redditscript)\r\n // appends it to our script root - so it renders in the correct location\r\n scriptRoot.current?.append(twitterFragment)\r\n scriptRoot.current?.append(tiktokFragment)\r\n scriptRoot.current?.append(redditFragment)\r\n });\r\n\r\n return (\r\n <ListGroup>\r\n <>\r\n <div ref={scriptRoot}></div>\r\n {posts.length === 0 ? <div>There are no posts.</div> : posts.map((post) => <div key={post.id} className=\"mb-3\">\r\n <Post meta={meta} post={post} onQuotePostClick={onQuotePostClick} />\r\n </div>)}\r\n </>\r\n </ListGroup>\r\n )\r\n}\r\n","import { ThreadsClient } from '@/lib/DoomCentral'\r\n\r\nexport type getThreadMetaArgs = {\r\n id: number\r\n}\r\n\r\nexport const getThreadMeta = async ({ id }: getThreadMetaArgs) => {\r\n const client = new ThreadsClient()\r\n const { threadDetail } = await client.getThreadPageById(+id)\r\n return threadDetail\r\n}\r\n","import { getThreadMeta } from '@/api/getThreadMeta'\r\nimport { useQuery } from '@tanstack/react-query'\r\n\r\nexport type useThreadMetaProps = {\r\n id: number\r\n}\r\n\r\nexport const useThreadMeta = ({ id }) => {\r\n return useQuery({\r\n queryKey: ['thread-meta', id],\r\n queryFn: async () => await getThreadMeta({ id: +id }),\r\n })\r\n}\r\n","import { ApprovedIcon, HiddenIcon, LockedIcon, ModeratedIcon, StickiedIcon } from '@/components/icons/Icons'\r\nimport { useThreadMeta } from '@/hooks/useThreadMeta'\r\nimport { formatBytes } from '@/utils/helpers'\r\nimport RelativeTime from '@yaireo/relative-time'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Badge, Col, Row } from 'reactstrap'\r\n\r\nconst relativeTime = new RelativeTime()\r\n\r\nexport type ThreadHeaderProps = {\r\n id: number\r\n}\r\n\r\nexport const ThreadHeader = ({ id }: ThreadHeaderProps) => {\r\n const { isLoading, isError, data } = useThreadMeta({ id })\r\n\r\n // don't need to show loading indicator here\r\n if (isLoading) return\r\n\r\n if (isError) {\r\n return <div>There was an error getting the thread header.</div>\r\n }\r\n\r\n const { approved, forumId, forumName, title, moderated, hidden, stickied, locked, allowedFileExtensions, maxFileSize, maxFilesPerPost, threadDate, threadAuthorDisplayName } =\r\n data\r\n\r\n return (\r\n <div className='mb-3'>\r\n <Row>\r\n <>\r\n <Col xs={12} md={9} className='align-content-center'>\r\n <h1>{title}</h1>\r\n <p>\r\n Posted {relativeTime.from(threadDate)} by {threadAuthorDisplayName} in <NavLink to={`/forum/${forumId}`}>{forumName}</NavLink>\r\n </p>\r\n\r\n {approved && (\r\n <Badge className='me-1' color='success'>\r\n <ApprovedIcon className={'me-1'} style={{ width: '1rem' }} />\r\n Approved\r\n </Badge>\r\n )}\r\n {stickied && (\r\n <Badge className='me-1' color='primary'>\r\n <StickiedIcon className={'me-1'} style={{ width: '1rem' }} />\r\n Stickied\r\n </Badge>\r\n )}\r\n {locked && (\r\n <Badge className='me-1' color='warning'>\r\n <LockedIcon className={'me-1'} style={{ width: '1rem' }} />\r\n Locked\r\n </Badge>\r\n )}\r\n {moderated && (\r\n <Badge className='me-1' color='warning'>\r\n <ModeratedIcon className={'me-1'} style={{ width: '1rem' }} />\r\n Moderated\r\n </Badge>\r\n )}\r\n {hidden && (\r\n <Badge className='me-1' color='secondary'>\r\n <HiddenIcon className={'me-1'} style={{ width: '1rem' }} />\r\n Hidden\r\n </Badge>\r\n )}\r\n </Col>\r\n {allowedFileExtensions && (\r\n <Col xs={12} md={3} className='d-flex flex-column align-content-center'>\r\n <Badge style={{ maxWidth: 200 }} className='mb-1'>\r\n <small>Max files per post: {maxFilesPerPost}</small>\r\n </Badge>\r\n <Badge style={{ maxWidth: 200 }} className='mb-1'>\r\n <small>Max upload file size: {formatBytes(maxFileSize)}</small>\r\n </Badge>\r\n <Badge style={{ maxWidth: 200 }} className='mb-1'>\r\n <small>Allowed extensions: {allowedFileExtensions}</small>\r\n </Badge>\r\n </Col>\r\n )}\r\n </>\r\n </Row>\r\n </div>\r\n )\r\n}\r\n","import { getPaginatedThread } from '@/api/getPaginatedThread'\r\nimport { keepPreviousData, useQuery } from '@tanstack/react-query'\r\n\r\nexport type useThreadProps = {\r\n id: number | string\r\n page?: number\r\n limit?: number\r\n}\r\n\r\nexport const usePaginatedThread = ({ id, page = 1, limit = 10 }: useThreadProps) => {\r\n return useQuery({\r\n queryKey: ['thread', { id, page, limit }],\r\n queryFn: async () => await getPaginatedThread({ id: +id, page, limit }),\r\n placeholderData: keepPreviousData,\r\n staleTime: 5000,\r\n })\r\n}\r\n","import { getThreadMeta } from '@/api/getThreadMeta'\r\nimport { ThreadsClient } from '@/lib/DoomCentral'\r\n\r\ntype getThreadArgs = {\r\n id: number\r\n page?: number\r\n limit?: number\r\n}\r\n\r\nexport const getPaginatedThread = async ({ id, page = 1, limit = 10 }: getThreadArgs) => {\r\n const meta = await getThreadMeta({ id })\r\n const client = new ThreadsClient()\r\n const { postList: posts, totalPages, totalCount, highestPostId } = await client.getPostsByThreadId(id, id, +page, +limit)\r\n return { meta, posts, totalPages, totalPosts: totalCount, highestPostId }\r\n}\r\n","import { notifyManager } from './notifyManager'\nimport { Removable } from './removable'\nimport { createRetryer } from './retryer'\nimport type {\n DefaultError,\n MutationMeta,\n MutationOptions,\n MutationStatus,\n} from './types'\nimport type { MutationCache } from './mutationCache'\nimport type { MutationObserver } from './mutationObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface MutationConfig<TData, TError, TVariables, TContext> {\n mutationId: number\n mutationCache: MutationCache\n options: MutationOptions<TData, TError, TVariables, TContext>\n state?: MutationState<TData, TError, TVariables, TContext>\n}\n\nexport interface MutationState<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> {\n context: TContext | undefined\n data: TData | undefined\n error: TError | null\n failureCount: number\n failureReason: TError | null\n isPaused: boolean\n status: MutationStatus\n variables: TVariables | undefined\n submittedAt: number\n}\n\ninterface FailedAction<TError> {\n type: 'failed'\n failureCount: number\n error: TError | null\n}\n\ninterface PendingAction<TVariables, TContext> {\n type: 'pending'\n isPaused: boolean\n variables?: TVariables\n context?: TContext\n}\n\ninterface SuccessAction<TData> {\n type: 'success'\n data: TData\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\nexport type Action<TData, TError, TVariables, TContext> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction<TError>\n | PendingAction<TVariables, TContext>\n | PauseAction\n | SuccessAction<TData>\n\n// CLASS\n\nexport class Mutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = unknown,\n TContext = unknown,\n> extends Removable {\n state: MutationState<TData, TError, TVariables, TContext>\n options!: MutationOptions<TData, TError, TVariables, TContext>\n readonly mutationId: number\n\n #observers: Array<MutationObserver<TData, TError, TVariables, TContext>>\n #mutationCache: MutationCache\n #retryer?: Retryer<TData>\n\n constructor(config: MutationConfig<TData, TError, TVariables, TContext>) {\n super()\n\n this.mutationId = config.mutationId\n this.#mutationCache = config.mutationCache\n this.#observers = []\n this.state = config.state || getDefaultState()\n\n this.setOptions(config.options)\n this.scheduleGc()\n }\n\n setOptions(\n options: MutationOptions<TData, TError, TVariables, TContext>,\n ): void {\n this.options = options\n\n this.updateGcTime(this.options.gcTime)\n }\n\n get meta(): MutationMeta | undefined {\n return this.options.meta\n }\n\n addObserver(observer: MutationObserver<any, any, any, any>): void {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer)\n\n // Stop the mutation from being garbage collected\n this.clearGcTimeout()\n\n this.#mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer,\n })\n }\n }\n\n removeObserver(observer: MutationObserver<any, any, any, any>): void {\n this.#observers = this.#observers.filter((x) => x !== observer)\n\n this.scheduleGc()\n\n this.#mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer,\n })\n }\n\n protected optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === 'pending') {\n this.scheduleGc()\n } else {\n this.#mutationCache.remove(this)\n }\n }\n }\n\n continue(): Promise<unknown> {\n return (\n this.#retryer?.continue() ??\n // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables!)\n )\n }\n\n async execute(variables: TVariables): Promise<TData> {\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error('No mutationFn found'))\n }\n return this.options.mutationFn(variables)\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.#dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.#dispatch({ type: 'continue' })\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this),\n })\n\n const restored = this.state.status === 'pending'\n const isPaused = !this.#retryer.canStart()\n\n try {\n if (!restored) {\n this.#dispatch({ type: 'pending', variables, isPaused })\n // Notify cache callback\n await this.#mutationCache.config.onMutate?.(\n variables,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n const context = await this.options.onMutate?.(variables)\n if (context !== this.state.context) {\n this.#dispatch({\n type: 'pending',\n context,\n variables,\n isPaused,\n })\n }\n }\n const data = await this.#retryer.start()\n\n // Notify cache callback\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onSuccess?.(data, variables, this.state.context!)\n\n // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onSettled?.(data, null, variables, this.state.context)\n\n this.#dispatch({ type: 'success', data })\n return data\n } catch (error) {\n try {\n // Notify cache callback\n await this.#mutationCache.config.onError?.(\n error as any,\n variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onError?.(\n error as TError,\n variables,\n this.state.context,\n )\n\n // Notify cache callback\n await this.#mutationCache.config.onSettled?.(\n undefined,\n error as any,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onSettled?.(\n undefined,\n error as TError,\n variables,\n this.state.context,\n )\n throw error\n } finally {\n this.#dispatch({ type: 'error', error: error as TError })\n }\n } finally {\n this.#mutationCache.runNext(this)\n }\n }\n\n #dispatch(action: Action<TData, TError, TVariables, TContext>): void {\n const reducer = (\n state: MutationState<TData, TError, TVariables, TContext>,\n ): MutationState<TData, TError, TVariables, TContext> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n isPaused: true,\n }\n case 'continue':\n return {\n ...state,\n isPaused: false,\n }\n case 'pending':\n return {\n ...state,\n context: action.context,\n data: undefined,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: 'pending',\n variables: action.variables,\n submittedAt: Date.now(),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: 'success',\n isPaused: false,\n }\n case 'error':\n return {\n ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: 'error',\n }\n }\n }\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action)\n })\n this.#mutationCache.notify({\n mutation: this,\n type: 'updated',\n action,\n })\n })\n }\n}\n\nexport function getDefaultState<\n TData,\n TError,\n TVariables,\n TContext,\n>(): MutationState<TData, TError, TVariables, TContext> {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: 'idle',\n variables: undefined,\n submittedAt: 0,\n }\n}\n","import { getDefaultState } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport { hashKey, shallowEqualObjects } from './utils'\nimport type { QueryClient } from './queryClient'\nimport type {\n DefaultError,\n MutateOptions,\n MutationObserverOptions,\n MutationObserverResult,\n} from './types'\nimport type { Action, Mutation } from './mutation'\n\n// TYPES\n\ntype MutationObserverListener<TData, TError, TVariables, TContext> = (\n result: MutationObserverResult<TData, TError, TVariables, TContext>,\n) => void\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener<TData, TError, TVariables, TContext>\n> {\n options!: MutationObserverOptions<TData, TError, TVariables, TContext>\n\n #client: QueryClient\n #currentResult: MutationObserverResult<TData, TError, TVariables, TContext> =\n undefined!\n #currentMutation?: Mutation<TData, TError, TVariables, TContext>\n #mutateOptions?: MutateOptions<TData, TError, TVariables, TContext>\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n super()\n\n this.#client = client\n this.setOptions(options)\n this.bindMethods()\n this.#updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n const prevOptions = this.options as\n | MutationObserverOptions<TData, TError, TVariables, TContext>\n | undefined\n this.options = this.#client.defaultMutationOptions(options)\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.#currentMutation,\n observer: this,\n })\n }\n\n if (\n prevOptions?.mutationKey &&\n this.options.mutationKey &&\n hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)\n ) {\n this.reset()\n } else if (this.#currentMutation?.state.status === 'pending') {\n this.#currentMutation.setOptions(this.options)\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action<TData, TError, TVariables, TContext>): void {\n this.#updateResult()\n\n this.#notify(action)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.#currentResult\n }\n\n reset(): void {\n // reset needs to remove the observer from the mutation because there is no way to \"get it back\"\n // another mutate call will yield a new mutation!\n this.#currentMutation?.removeObserver(this)\n this.#currentMutation = undefined\n this.#updateResult()\n this.#notify()\n }\n\n mutate(\n variables: TVariables,\n options?: MutateOptions<TData, TError, TVariables, TContext>,\n ): Promise<TData> {\n this.#mutateOptions = options\n\n this.#currentMutation?.removeObserver(this)\n\n this.#currentMutation = this.#client\n .getMutationCache()\n .build(this.#client, this.options)\n\n this.#currentMutation.addObserver(this)\n\n return this.#currentMutation.execute(variables)\n }\n\n #updateResult(): void {\n const state =\n this.#currentMutation?.state ??\n getDefaultState<TData, TError, TVariables, TContext>()\n\n this.#currentResult = {\n ...state,\n isPending: state.status === 'pending',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n } as MutationObserverResult<TData, TError, TVariables, TContext>\n }\n\n #notify(action?: Action<TData, TError, TVariables, TContext>): void {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables!\n const context = this.#currentResult.context\n\n if (action?.type === 'success') {\n this.#mutateOptions.onSuccess?.(action.data, variables, context!)\n this.#mutateOptions.onSettled?.(action.data, null, variables, context)\n } else if (action?.type === 'error') {\n this.#mutateOptions.onError?.(action.error, variables, context)\n this.#mutateOptions.onSettled?.(\n undefined,\n action.error,\n variables,\n context,\n )\n }\n }\n\n // Then trigger the listeners\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n })\n }\n}\n","'use client'\nimport * as React from 'react'\nimport { MutationObserver, notifyManager } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport { noop, shouldThrowError } from './utils'\nimport type {\n UseMutateFunction,\n UseMutationOptions,\n UseMutationResult,\n} from './types'\nimport type { DefaultError, QueryClient } from '@tanstack/query-core'\n\n// HOOK\n\nexport function useMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: UseMutationOptions<TData, TError, TVariables, TContext>,\n queryClient?: QueryClient,\n): UseMutationResult<TData, TError, TVariables, TContext> {\n const client = useQueryClient(queryClient)\n\n const [observer] = React.useState(\n () =>\n new MutationObserver<TData, TError, TVariables, TContext>(\n client,\n options,\n ),\n )\n\n React.useEffect(() => {\n observer.setOptions(options)\n }, [observer, options])\n\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) =>\n observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer],\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult(),\n )\n\n const mutate = React.useCallback<\n UseMutateFunction<TData, TError, TVariables, TContext>\n >(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n },\n [observer],\n )\n\n if (\n result.error &&\n shouldThrowError(observer.options.throwOnError, [result.error])\n ) {\n throw result.error\n }\n\n return { ...result, mutate, mutateAsync: result.mutate }\n}\n","import {\r\n ApproveForumThreadCommand,\r\n DeleteForumThreadCommand,\r\n LockThreadCommand,\r\n ModerateThreadCommand,\r\n StickyForumThreadCommand,\r\n ThreadsClient,\r\n UnlockThreadCommand,\r\n UnmoderateThreadCommand,\r\n UnstickyForumThreadCommand,\r\n} from '@/lib/DoomCentral'\r\nimport { useMutation, useQueryClient } from '@tanstack/react-query'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { toast } from 'sonner'\r\n\r\nexport const useThreadModTools = ({ id }) => {\r\n const client = new ThreadsClient()\r\n const queryClient = useQueryClient()\r\n const history = useHistory()\r\n\r\n const handleSuccess = (message: string) => {\r\n toast.success(message)\r\n queryClient.invalidateQueries({ queryKey: ['thread-meta', id] })\r\n }\r\n\r\n const lockThreadMutation = useMutation({\r\n mutationFn: async () => {\r\n const cmd = new LockThreadCommand()\r\n cmd.threadId = id\r\n return client.lock(cmd)\r\n },\r\n onSuccess: () => {\r\n handleSuccess('Thread Locked')\r\n },\r\n })\r\n\r\n const unlockThreadMutation = useMutation({\r\n mutationFn: async () => {\r\n const cmd = new UnlockThreadCommand()\r\n cmd.threadId = id\r\n return client.unlock(cmd)\r\n },\r\n onSuccess: () => {\r\n handleSuccess('Thread Unlocked')\r\n },\r\n })\r\n\r\n const stickyThreadMutation = useMutation({\r\n mutationFn: async () => {\r\n const cmd = new StickyForumThreadCommand()\r\n cmd.threadId = id\r\n return client.sticky(cmd)\r\n },\r\n onSuccess: () => {\r\n handleSuccess('Thread Stickied')\r\n },\r\n })\r\n\r\n const unstickyThreadMutation = useMutation({\r\n mutationFn: async () => {\r\n const cmd = new UnstickyForumThreadCommand()\r\n cmd.threadId = id\r\n return client.unsticky(cmd)\r\n },\r\n onSuccess: () => {\r\n handleSuccess('Thread Unstickied')\r\n },\r\n })\r\n\r\n const moderateThreadMutation = useMutation({\r\n mutationFn: async () => {\r\n const cmd = new ModerateThreadCommand()\r\n cmd.threadId = id\r\n return client.moderate(cmd)\r\n },\r\n onSuccess: () => {\r\n handleSuccess('Thread Moderated')\r\n },\r\n })\r\n\r\n const unmoderateThreadMutation = useMutation({\r\n mutationFn: async () => {\r\n const cmd = new UnmoderateThreadCommand()\r\n cmd.threadId = id\r\n return client.unmoderate(cmd)\r\n },\r\n onSuccess: () => {\r\n handleSuccess('Thread Unmoderated')\r\n },\r\n })\r\n\r\n const approveThreadMutation = useMutation({\r\n mutationFn: async () => {\r\n const cmd = new ApproveForumThreadCommand()\r\n cmd.threadId = id\r\n return client.approve(cmd)\r\n },\r\n onSuccess: () => {\r\n handleSuccess('Thread Approved')\r\n },\r\n })\r\n\r\n const deleteThreadMutation = useMutation({\r\n mutationFn: async () => {\r\n const command = new DeleteForumThreadCommand()\r\n command.threadId = id\r\n const confirmation = confirm('Are you sure you want to delete this thread? The changes are irreversible.')\r\n if (confirmation) {\r\n await client.delete(id, command)\r\n toast.success('Thread deleted. Refresh the page.')\r\n }\r\n },\r\n onSuccess: () => {\r\n toast.success('Thread Deleted')\r\n history.push('/forums')\r\n },\r\n })\r\n\r\n return {\r\n lockThreadMutation,\r\n unlockThreadMutation,\r\n stickyThreadMutation,\r\n unstickyThreadMutation,\r\n moderateThreadMutation,\r\n unmoderateThreadMutation,\r\n approveThreadMutation,\r\n deleteThreadMutation,\r\n }\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name SquarePlus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/square-plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SquarePlus = createLucideIcon('SquarePlus', [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', key: 'afitv7' }],\n ['path', { d: 'M8 12h8', key: '1wcyev' }],\n ['path', { d: 'M12 8v8', key: 'napkw2' }],\n]);\n\nexport default SquarePlus;\n","var _excluded = [\"className\", \"cssModule\", \"size\", \"vertical\", \"tag\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n /** Aria label */\n 'aria-label': PropTypes.string,\n /** Add custom class */\n className: PropTypes.string,\n /** Change underlying component's CSS base class name */\n cssModule: PropTypes.object,\n /** In order for assistive technologies (such as screen readers) to convey that a series of buttons is grouped, an appropriate role attribute needs to be provided. For button groups, this would be role=\"group\", while toolbars should have a role=\"toolbar\". */\n role: PropTypes.string,\n /** Make the button bigger or smaller */\n size: PropTypes.string,\n /** Set a custom element for this component */\n tag: tagPropType,\n /** Make button group vertical */\n vertical: PropTypes.bool\n};\nfunction ButtonGroup(props) {\n var className = props.className,\n cssModule = props.cssModule,\n size = props.size,\n vertical = props.vertical,\n _props$tag = props.tag,\n Tag = _props$tag === void 0 ? 'div' : _props$tag,\n attributes = _objectWithoutProperties(props, _excluded);\n var classes = mapToCssModules(classNames(className, size ? 'btn-group-' + size : false, vertical ? 'btn-group-vertical' : 'btn-group'), cssModule);\n return /*#__PURE__*/React.createElement(Tag, _extends({}, _objectSpread({\n role: 'group'\n }, attributes), {\n className: classes\n }));\n}\nButtonGroup.propTypes = propTypes;\nexport default ButtonGroup;","import { ApprovedIcon, DeleteIcon, LockedIcon, ModeratedIcon, StickiedIcon, UnlockedIcon, UnmoderatedIcon, UnstickiedIcon } from '@/components/icons/Icons'\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator'\r\nimport { useThreadMeta } from '@/hooks/useThreadMeta'\r\nimport { useThreadModTools } from '@/hooks/useThreadModTools'\r\nimport { cn } from '@/utils/utils'\r\nimport { SquarePlusIcon } from 'lucide-react'\r\nimport { useHistory } from 'react-router'\r\nimport { Button, ButtonGroup, Card, CardBody } from 'reactstrap'\r\n\r\ninterface ThreadModToolsProps {\r\n id: number\r\n}\r\n\r\nexport const ThreadModTools = ({ id }: ThreadModToolsProps) => {\r\n const { data, isLoading, isError } = useThreadMeta({ id })\r\n\r\n const {\r\n approveThreadMutation,\r\n deleteThreadMutation,\r\n lockThreadMutation,\r\n moderateThreadMutation,\r\n stickyThreadMutation,\r\n unlockThreadMutation,\r\n unmoderateThreadMutation,\r\n unstickyThreadMutation,\r\n } = useThreadModTools({ id })\r\n\r\n const history = useHistory()\r\n\r\n if (isLoading) {\r\n return <LoadingIndicator />\r\n }\r\n\r\n if (isError) {\r\n return <div>Error loading thread metadata</div>\r\n }\r\n\r\n const { approved, moderated, locked, stickied } = data\r\n\r\n return (\r\n <Card className='rounded-0'>\r\n <CardBody>\r\n <h2>Thread Mod Tools</h2>\r\n <ButtonGroup vertical className='rounded-0'>\r\n <BaseThreadModToolButton color='primary' onClick={() => history.push('/newthread')} icon={<SquarePlusIcon />} label='New Thread' />\r\n {!approved && <BaseThreadModToolButton onClick={() => approveThreadMutation.mutate()} icon={<ApprovedIcon />} label='Approve Thread' />}\r\n {!locked && <BaseThreadModToolButton onClick={() => lockThreadMutation.mutate()} icon={<LockedIcon />} label='Lock Thread' />}\r\n {locked && <BaseThreadModToolButton onClick={() => unlockThreadMutation.mutate()} icon={<UnlockedIcon />} label='Unlock Thread' />}\r\n {!stickied && <BaseThreadModToolButton onClick={() => stickyThreadMutation.mutate()} icon={<StickiedIcon />} label='Sticky Thread' />}\r\n {stickied && <BaseThreadModToolButton onClick={() => unstickyThreadMutation.mutate()} icon={<UnstickiedIcon />} label='Unsticky Thread' />}\r\n {!moderated && <BaseThreadModToolButton onClick={() => moderateThreadMutation.mutate()} icon={<UnmoderatedIcon className='me-1' />} label='Moderate Thread' />}\r\n {moderated && <BaseThreadModToolButton onClick={() => unmoderateThreadMutation.mutate()} icon={<ModeratedIcon />} label='Unmoderate Thread' />}\r\n <BaseThreadModToolButton\r\n color='danger'\r\n onClick={() => deleteThreadMutation.mutate()}\r\n icon={deleteThreadMutation.isPending ? <LoadingIndicator /> : <DeleteIcon />}\r\n label={'Delete Thread'}\r\n />\r\n </ButtonGroup>\r\n </CardBody>\r\n </Card>\r\n )\r\n}\r\n\r\nconst BaseThreadModToolButton = ({ icon, label, ...rest }) => (\r\n <Button variant='secondary' className={cn('d-flex', 'flex-row', 'rounded-0')} outline style={{ border: 0 }} {...rest}>\r\n <span className='me-3'>{icon}</span>\r\n <span className='flex-1'>{label}</span>\r\n </Button>\r\n)\r\n","import { PostFileUploadItem, PostFilesClient, PostItemDto, ThreadDetailDto, ThreadPostsClient } from '@/lib/DoomCentral'\r\nimport { ReactNode, createContext, useEffect, useState } from 'react'\r\nimport { FileRejection } from 'react-dropzone'\r\nimport { useHistory } from 'react-router'\r\nimport { toast } from 'sonner'\r\n\r\ntype PostStation2ContextType = {\r\n quotedPost: PostItemDto | null\r\n postContent: string\r\n meta: ThreadDetailDto\r\n uploadedFiles: File[]\r\n fileRejects: FileRejection[]\r\n descriptions: PostFileUploadItem[]\r\n actions: {\r\n setPostContent: (content: string) => void\r\n removeFile: (fileName: string) => void\r\n updateDescription: (filename: string, description: string) => void\r\n setUploadedFiles: (files: File[]) => void\r\n setFileRejects: (rejects: FileRejection[]) => void\r\n setDescriptions: (descriptions: PostFileUploadItem[]) => void\r\n submitPost: {\r\n isLoading: boolean\r\n error: string | undefined\r\n exec: () => Promise<void>\r\n }\r\n }\r\n}\r\n\r\nexport const PostStation2Context = createContext<PostStation2ContextType>({\r\n quotedPost: null,\r\n postContent: '',\r\n meta: null,\r\n uploadedFiles: [],\r\n fileRejects: [],\r\n descriptions: [],\r\n actions: {\r\n setPostContent: () => {},\r\n removeFile: () => {},\r\n updateDescription: () => {},\r\n setUploadedFiles: () => {},\r\n setFileRejects: () => {},\r\n setDescriptions: () => {},\r\n submitPost: {\r\n isLoading: false,\r\n error: undefined,\r\n exec: () => Promise.resolve(),\r\n },\r\n },\r\n})\r\n\r\nexport const PostStation2Provider = ({ children, meta, quotedPost }: { children: ReactNode; meta: ThreadDetailDto; quotedPost?: PostItemDto }) => {\r\n const [postContent, setPostContent] = useState<string>('')\r\n\r\n const [uploadedFiles, setUploadedFiles] = useState<File[]>([])\r\n const [fileRejects, setFileRejects] = useState<FileRejection[]>([])\r\n const [descriptions, setDescriptions] = useState<PostFileUploadItem[]>([])\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false)\r\n const [submitError, setSubmitError] = useState<string | undefined>()\r\n\r\n const history = useHistory()\r\n\r\n const removeFile = (fileName: string) => {\r\n const fileExists = uploadedFiles.some((s) => s.name === fileName)\r\n\r\n if (!fileExists) {\r\n return\r\n }\r\n\r\n const newFiles = uploadedFiles.filter((f) => f.name !== fileName)\r\n\r\n setUploadedFiles(newFiles)\r\n }\r\n\r\n const updateDescription = (fileName: string, description: string): void => {\r\n const updatedDescriptions = descriptions.map((obj) => (obj.fileName === fileName ? new PostFileUploadItem({ fileName, description }) : obj))\r\n\r\n const fileExists = descriptions.some((s) => s.fileName === fileName)\r\n\r\n if (!fileExists) {\r\n updatedDescriptions.push(new PostFileUploadItem({ fileName, description }))\r\n }\r\n\r\n setDescriptions(updatedDescriptions)\r\n }\r\n\r\n const submitPost = async () => {\r\n try {\r\n setIsSubmitting(true)\r\n const files = uploadedFiles.map((file) => ({\r\n fileName: file.name,\r\n data: file,\r\n }))\r\n await new ThreadPostsClient().create(meta.id, postContent, quotedPost?.id || null, files, descriptions)\r\n toast.success('Post created')\r\n } catch (e) {\r\n console.error(e)\r\n setSubmitError(e.message)\r\n toast.error(e.message)\r\n } finally {\r\n setIsSubmitting(false)\r\n history.go(0)\r\n }\r\n }\r\n\r\n return (\r\n <PostStation2Context.Provider\r\n value={{\r\n quotedPost,\r\n postContent,\r\n meta,\r\n uploadedFiles,\r\n fileRejects,\r\n descriptions,\r\n actions: {\r\n setPostContent,\r\n removeFile,\r\n updateDescription,\r\n setDescriptions,\r\n setFileRejects,\r\n setUploadedFiles,\r\n submitPost: {\r\n isLoading: isSubmitting,\r\n error: submitError,\r\n exec: submitPost,\r\n },\r\n },\r\n }}\r\n >\r\n {children}\r\n </PostStation2Context.Provider>\r\n )\r\n}\r\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('Image', [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n]);\n\nexport default Image;\n","import { ImageIcon } from 'lucide-react'\r\nimport { useEffect, useRef, useState } from 'react'\r\nimport { Tooltip } from 'reactstrap'\r\n\r\nexport type ImagePreviewPopoverProps = {\r\n file: File\r\n label: string\r\n}\r\n\r\n// use ref instead of id for tooltip trigger\r\n// see: https://github.com/reactstrap/reactstrap/issues/773\r\nexport const ImagePreviewTooltip = ({ file, label, ...rest }: ImagePreviewPopoverProps) => {\r\n\r\n const previewRef = useRef<HTMLImageElement>()\r\n const linkRef = useRef()\r\n\r\n const [isOpen, setIsOpen] = useState(false)\r\n const [isReady, setIsReady] = useState(false)\r\n\r\n if (file.type.match('image.*')) {\r\n const reader = new FileReader()\r\n reader.onload = (e) => {\r\n if (!previewRef.current) return\r\n previewRef.current.src = e.target.result as string\r\n previewRef.current.style.display = 'block'\r\n }\r\n reader.readAsDataURL(file)\r\n } else {\r\n console.warn('Provided file is not an image.')\r\n if (previewRef.current) previewRef.current.style.display = 'none'\r\n }\r\n\r\n const toggle = () => setIsOpen(!isOpen)\r\n\r\n\r\n useEffect(() => {\r\n if (linkRef.current) {\r\n setIsReady(true)\r\n }\r\n\r\n }, [linkRef.current])\r\n\r\n return (\r\n <div {...rest}>\r\n <a type='button' ref={linkRef} rel=\"noopener noreferrer\">\r\n <ImageIcon className='me-1' style={{ width: '1rem' }} />\r\n {label}\r\n </a>\r\n {isReady && <Tooltip isOpen={isOpen} target={linkRef.current} toggle={toggle} style={{background: 'transparent'}}>\r\n <img ref={previewRef} style={{ display: 'none', minWidth: '420px', maxWidth: '100%', height: 'auto' }} />\r\n </Tooltip>}\r\n </div>\r\n )\r\n}\r\n","import { FileError, FileRejection } from 'react-dropzone'\r\n\r\nexport const fileAmountValidator = (files: File[], maxFilesInPost: number): FileError => {\r\n if (files.length + 1 > maxFilesInPost) {\r\n return {\r\n code: 'too-many-files',\r\n message: `This file you tried to upload exceeds the max limit of ${maxFilesInPost} files per post.`,\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const sameFileNameCheckValidator = (file: File, files: File[]): FileError => {\r\n if (files.some((s) => s.name === file.name)) {\r\n return {\r\n code: 'same-file-name',\r\n message: `This file has the same file name as another file being prepared to be uploaded.`,\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const validateFileName = (fileName: string, allowedFileExtensions: string): boolean => {\r\n const extensionList: string[] = allowedFileExtensions.split('/')\r\n return Boolean(extensionList.some((s) => fileName.endsWith(s)))\r\n}\r\n\r\nexport const fileSizeValidator = (file: File, maxFileSizeBytes: number): FileError => {\r\n if (file.size > maxFileSizeBytes) {\r\n return {\r\n code: 'file-too-large',\r\n message: `File size is larger than ${maxFileSizeBytes} bytes.`,\r\n }\r\n }\r\n return null\r\n}\r\n\r\nexport const fileExtensionValidator = (file: File, allowedFileExtensions): FileError => {\r\n if (!validateFileName(file.name, allowedFileExtensions)) {\r\n return {\r\n code: 'invalid-file',\r\n message: `You tried to upload a file type not allowed here! Allowed file types are: ${allowedFileExtensions.replaceAll('/', ', ')}`,\r\n }\r\n }\r\n return null\r\n}\r\n\r\nexport const validatePostFile = (file: File, fileList: File[], maxFileSizeBytes: number, maxFilesInPost: number, allowedFileExtensions: string): FileRejection => {\r\n const sizeCheck = fileSizeValidator(file, maxFileSizeBytes)\r\n if (sizeCheck != null) {\r\n return {\r\n file: file,\r\n errors: [sizeCheck],\r\n } as FileRejection\r\n }\r\n\r\n var extensionCheck = fileExtensionValidator(file, allowedFileExtensions)\r\n if (extensionCheck != null) {\r\n return {\r\n file: file,\r\n errors: [extensionCheck],\r\n } as FileRejection\r\n }\r\n\r\n var sameFileNameCheck = sameFileNameCheckValidator(file, fileList)\r\n if (sameFileNameCheck != null) {\r\n return {\r\n file: file,\r\n errors: [sameFileNameCheck],\r\n } as FileRejection\r\n }\r\n\r\n var fileAmountCheck = fileAmountValidator(fileList, maxFilesInPost)\r\n if (fileAmountCheck != null) {\r\n return {\r\n file: file,\r\n errors: [fileAmountCheck],\r\n } as FileRejection\r\n }\r\n\r\n return null\r\n}\r\n","import { DeleteIcon } from '@/components/icons/Icons'\r\nimport { PostStation2Context } from '@/contexts/PostStation2Context'\r\nimport { formatBytes } from '@/utils/helpers'\r\nimport { RefMDEditor } from '@uiw/react-md-editor'\r\nimport { ForwardedRef, LegacyRef, forwardRef, useCallback, useContext, useImperativeHandle, useRef } from 'react'\r\nimport { FileRejection, useDropzone } from 'react-dropzone'\r\nimport { Button, Col, ListGroup, ListGroupItem, Row, Tooltip } from 'reactstrap'\r\n\r\nimport { cn } from '../../utils/utils'\r\nimport { MarkdownEditor } from '../markdown-editor/MarkdownEditor'\r\nimport { QuotedPost } from '../quoted-post/QuotedPost'\r\nimport { ImagePreviewTooltip } from './ImagePreviewTooltip'\r\nimport { validatePostFile } from './postFileValidator'\r\n\r\nexport type PostStation2Props = {}\r\n\r\nexport const PostStation2 = forwardRef<ForwardedRef<LegacyRef<RefMDEditor>>, PostStation2Props>((props, ref) => {\r\n const { actions, meta, quotedPost, postContent, fileRejects, uploadedFiles } = useContext(PostStation2Context)\r\n const allowedFileExtensions = meta.allowedFileExtensions\r\n const maxFileSize = meta.maxFileSize\r\n const maxFiles = meta.maxFilesPerPost\r\n\r\n const canPostFiles = allowedFileExtensions?.length > 0 && maxFileSize > 0 && maxFiles > 0\r\n\r\n const onDrop = useCallback(\r\n (acceptedFiles: File[], fileRejections: FileRejection[]) => {\r\n const validatedFiles: File[] = []\r\n const newFileErrors: FileRejection[] = []\r\n\r\n acceptedFiles.forEach((file) => {\r\n const combinedFiles = [...uploadedFiles, ...validatedFiles]\r\n const validationResult = validatePostFile(file, combinedFiles, maxFileSize, maxFiles, allowedFileExtensions)\r\n\r\n if (validationResult === null) {\r\n validatedFiles.push(file)\r\n } else {\r\n newFileErrors.push(validationResult)\r\n }\r\n })\r\n\r\n newFileErrors.push(...fileRejections)\r\n const newFileRejects = [...fileRejects, ...newFileErrors]\r\n const newUploadedFiles = [...uploadedFiles, ...validatedFiles]\r\n\r\n actions.setFileRejects(newFileRejects)\r\n actions.setUploadedFiles(newUploadedFiles)\r\n },\r\n [uploadedFiles, fileRejects],\r\n )\r\n\r\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({ onDrop, noClick: true, noKeyboard: true })\r\n\r\n return (\r\n <>\r\n {quotedPost && (\r\n <div className='my-3'>\r\n <QuotedPost reply postId={quotedPost.id} />\r\n </div>\r\n )}\r\n\r\n <div {...getRootProps()} className={cn(isDragActive && 'border border-success')}>\r\n <input {...getInputProps()} />\r\n <div className='my-3'>\r\n <MarkdownEditor ref={ref} value={postContent} onChange={(v) => actions.setPostContent(v)} />\r\n {(uploadedFiles.length > 0 || fileRejects.length > 0) && (\r\n <Row className='my-3'>\r\n {uploadedFiles.length > 0 && (\r\n <Col xs={12} md={6}>\r\n <ListGroup>\r\n <h6>Uploaded Files</h6>\r\n {uploadedFiles.map((file) => {\r\n return (\r\n <ListGroupItem key={file.name + file.size} className={cn('d-flex', 'justify-content-between', 'align-items-center')}>\r\n <ImagePreviewTooltip label={`${file.name} - ${formatBytes(file.size)}`} file={file} />\r\n <Button size='sm' color='danger' outline style={{ border: 0 }} onClick={() => actions.removeFile(file.name)}>\r\n <DeleteIcon />\r\n </Button>\r\n </ListGroupItem>\r\n )\r\n })}\r\n </ListGroup>\r\n </Col>\r\n )}\r\n\r\n {fileRejects.length > 0 && (\r\n <Col xs={12} md={6}>\r\n <ListGroup>\r\n <h6>Rejected Files</h6>\r\n {fileRejects.map((rejected) => (\r\n <ListGroupItem key={rejected.file.name}>\r\n <p>\r\n {rejected.file.name} - {formatBytes(rejected.file.size)}\r\n </p>\r\n {rejected.errors.length > 0 && (\r\n <ListGroup>\r\n {rejected.errors.map((error) => (\r\n <ListGroupItem color='danger' key={error.code + error.message}>\r\n {error.code} {error.message}\r\n </ListGroupItem>\r\n ))}\r\n </ListGroup>\r\n )}\r\n </ListGroupItem>\r\n ))}\r\n </ListGroup>\r\n </Col>\r\n )}\r\n </Row>\r\n )}\r\n <div className='my-3'>\r\n {canPostFiles && (\r\n <Button color='secondary' onClick={open} className='me-1'>\r\n Attach Files\r\n </Button>\r\n )}\r\n <Button color='primary' disabled={actions.submitPost.isLoading || postContent === ''} onClick={actions.submitPost.exec}>\r\n Submit Post\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n )\r\n})\r\n","import { PostStation2 } from '@/components/poststation2/PostStation2'\r\nimport { PostStation2Provider } from '@/contexts/PostStation2Context'\r\nimport { PostItemDto, ThreadDetailDto } from '@/lib/DoomCentral'\r\nimport { RefMDEditor } from '@uiw/react-md-editor'\r\nimport { ForwardedRef, LegacyRef, forwardRef } from 'react'\r\n\r\nexport type ReplyEditorProps = {\r\n meta: ThreadDetailDto\r\n quotedPost?: PostItemDto\r\n}\r\nexport const ReplyEditor = forwardRef<ForwardedRef<LegacyRef<RefMDEditor>>, ReplyEditorProps>(({ meta, quotedPost = null }, ref) => {\r\n return (\r\n <div>\r\n <PostStation2Provider meta={meta} quotedPost={quotedPost}>\r\n <PostStation2 ref={ref} />\r\n </PostStation2Provider>\r\n </div>\r\n )\r\n})\r\n","import { Columns } from '@/components/columns/Columns'\r\nimport { CommunityNewsCard } from '@/components/community-news-card/CommunityNewsCard'\r\nimport { EventsCard } from '@/components/events-card/EventsCard'\r\nimport HelmetPages from '@/components/helmet/HelmetPages'\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator'\r\nimport { PostList } from '@/components/postlist/PostList'\r\nimport { ThreadHeader } from '@/components/thread-header/ThreadHeader'\r\nimport { useCapabilities } from '@/hooks/useCapabilities'\r\nimport { usePaginatedThread } from '@/hooks/usePaginatedThread'\r\nimport { PostItemDto } from '@/lib/DoomCentral'\r\nimport { ThreadModTools } from '@/pages/thread/ThreadModTools'\r\nimport { cn } from '@/utils/utils'\r\nimport { RefMDEditor } from '@uiw/react-md-editor'\r\nimport { ForwardedRef, LegacyRef, useRef, useState } from 'react'\r\nimport Pager from 'react-paginate'\r\nimport { useHistory, useLocation, useParams } from 'react-router-dom'\r\nimport { Input, InputGroup, Label } from 'reactstrap'\r\n\r\nimport { ReplyEditor } from './ReplyEditor'\r\nimport { ReadPostsContextProvider } from '@/contexts/ReadPostsContext'\r\nimport { useScrollToHash } from '@/hooks/useScrollToHash'\r\n\r\nexport const ThreadPage = () => {\r\n\r\n const editorRef = useRef<ForwardedRef<LegacyRef<RefMDEditor>>>(null)\r\n\r\n const { id } = useParams<{ id: string }>()\r\n\r\n const { search, hash } = useLocation()\r\n const searchParams = new URLSearchParams(search)\r\n\r\n const history = useHistory()\r\n\r\n // pager data\r\n const [page, setPage] = useState(+searchParams.get('page') || 1)\r\n const [limit, setLimit] = useState(+searchParams.get('pageSize') || 5)\r\n\r\n const query = usePaginatedThread({ id, page, limit })\r\n\r\n const { isGlobalAdmin, isGlobalForumAdmin } = useCapabilities()\r\n\r\n const [quotedPost, setQuotedPost] = useState(null as PostItemDto)\r\n\r\n useScrollToHash(hash)\r\n\r\n if (query.isLoading) {\r\n return <LoadingIndicator />\r\n }\r\n\r\n if (!query.isSuccess) {\r\n return <div>Error getting data</div>\r\n }\r\n\r\n const onQuotePostClick = (post: PostItemDto) => {\r\n if (editorRef.current) {\r\n console.log(editorRef.current)\r\n // @ts-ignore\r\n editorRef.current.textarea.scrollIntoView({ behavior: 'smooth' })\r\n // @ts-ignore\r\n editorRef.current.textarea.focus()\r\n }\r\n setQuotedPost(post)\r\n }\r\n\r\n const showPager = query.data.totalPages > 1\r\n\r\n return (\r\n <>\r\n <HelmetPages title={`Doom Central - ${query?.data?.meta?.title ?? 'Loading...'}`} />\r\n\r\n <Columns\r\n rightColumn={\r\n <div>\r\n {(isGlobalAdmin || isGlobalForumAdmin) && (\r\n <div className='mb-3'>\r\n <ThreadModTools id={+id} />\r\n </div>\r\n )}\r\n <div className='mb-3'>\r\n <CommunityNewsCard />\r\n </div>\r\n <div className='mb-3'>\r\n <EventsCard />\r\n </div>\r\n </div>\r\n }\r\n >\r\n <ThreadHeader id={+id} />\r\n <div>\r\n {showPager && (\r\n <div className='d-flex my-3'>\r\n <InputGroup className='d-flex align-items-center me-3' style={{ maxWidth: 160 }}>\r\n <Label className='m-0 me-1'>Page Size</Label>\r\n <Input\r\n className='rounded-0'\r\n name='select'\r\n type='select'\r\n value={limit}\r\n onChange={(e) => {\r\n const params = new URLSearchParams(searchParams)\r\n params.set('pageSize', e.target.value)\r\n history.replace({ pathname: location.pathname, search: params.toString() })\r\n setLimit(+e.target.value)\r\n }}\r\n >\r\n {[5, 10, 15, 20, 25].map((n) => (\r\n <option key={n}>{n.toString()}</option>\r\n ))}\r\n </Input>\r\n </InputGroup>\r\n\r\n <Pager\r\n previousLabel={'←'}\r\n nextLabel={'→'}\r\n pageCount={query?.data?.totalPages}\r\n onPageChange={(p) => {\r\n const params = new URLSearchParams(searchParams)\r\n params.set('page', `${p.selected + 1}`)\r\n history.replace({ pathname: location.pathname, search: params.toString() })\r\n setPage(p.selected + 1)\r\n }}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={3}\r\n renderOnZeroPageCount={null}\r\n containerClassName={cn('pagination', 'm-0', 'w-100')}\r\n previousLinkClassName={'page-link'}\r\n nextLinkClassName={'page-link'}\r\n disabledClassName={'page-item disabled'}\r\n activeClassName={'page-item active'}\r\n activeLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n previousClassName={'page-item'}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n />\r\n </div>\r\n )}\r\n <ReadPostsContextProvider threadId={id}>\r\n <PostList meta={query?.data?.meta} posts={query?.data?.posts} onQuotePostClick={onQuotePostClick} />\r\n </ReadPostsContextProvider>\r\n </div>\r\n\r\n <ReplyEditor ref={editorRef} meta={query.data.meta} quotedPost={quotedPost} />\r\n </Columns>\r\n </>\r\n )\r\n}\r\n","import { useEffect } from 'react';\r\n\r\nexport const useScrollToHash = (hash: string) => {\r\n useEffect(() => {\r\n if (!hash) return;\r\n \r\n const targetId = hash.substring(1);\r\n\r\n const scrollToElement = () => {\r\n const $target = document.getElementById(targetId);\r\n if ($target) {\r\n $target.scrollIntoView();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n if (!scrollToElement()) {\r\n const observer = new MutationObserver((_, me) => {\r\n if (scrollToElement()) {\r\n me.disconnect(); // stop observing once we've found and scrolled to the target\r\n }\r\n });\r\n\r\n observer.observe(document, {\r\n childList: true,\r\n subtree: true\r\n });\r\n\r\n return () => observer.disconnect();\r\n }\r\n }, [hash]);\r\n};\r\n","import AuthorizeRoute from '@/components/api-authorization/AuthorizeRoute'\r\nimport ForumThreadListing from '@/components/forumthreadlisting/ForumThreadListing'\r\nimport NewThread from '@/components/newthread/NewThread'\r\nimport ThreadListing from '@/components/threadlisting/ThreadListing'\r\nimport DoomCentralRoles from '@/lib/DoomCentralRoles'\r\nimport { ForumPage } from '@/pages/forum/Forum'\r\n// import ForumListing from './forumlisting/ForumListing'\r\nimport { ForumsPage } from '@/pages/forums/Forums'\r\nimport { ThreadPage } from '@/pages/thread/ThreadPage'\r\nimport * as React from 'react'\r\nimport { Route } from 'react-router'\r\n\r\nexport default () => (\r\n <React.Fragment>\r\n <AuthorizeRoute path='/newthread' component={NewThread} componentroles={[DoomCentralRoles.DoomCentralUser]} />\r\n <Route exact path='/threads' component={ThreadListing} />\r\n <Route exact path='/forums' component={ForumsPage} />\r\n <Route exact path='/thread/:id' component={ThreadPage} />\r\n <Route exact path='/forum/:id' component={ForumPage} />\r\n </React.Fragment>\r\n)\r\n","import * as React from 'react'\r\nimport { useState } from 'react'\r\nimport { FormGroup, Label } from 'reactstrap'\r\n\r\nimport NewPostBox from '../newpostbox/NewPostBox'\r\n\r\ninterface NewsEditorBoxProps {\r\n post: string\r\n setPost: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: NewsEditorBoxProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup>\r\n <Label for='post-editor'>News Post</Label>\r\n <NewPostBox post={props.post} setPost={props.setPost} />\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\ninterface NewsEditorPublishProps {\r\n publish: boolean\r\n setPublish: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: NewsEditorPublishProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup row>\r\n <Label for='publish'>\r\n <Input id='publish' name='publish' type='checkbox' checked={props.publish} onChange={(e) => props.setPublish(e.target.checked)} /> Publish this news item. This\r\n will make this event viewable to users.\r\n </Label>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Col, FormGroup, FormText, Input, Label } from 'reactstrap'\r\n\r\ninterface NewsEditorTitleProps {\r\n title: string\r\n setTitle: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: NewsEditorTitleProps) => {\r\n return (\r\n <React.Fragment>\r\n <FormGroup row>\r\n <Label for='title' sm={2}>\r\n Title\r\n </Label>\r\n <Col sm={10}>\r\n <Input value={props.title} onChange={(e) => props.setTitle(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { navigateToReturnUrl } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext } from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { NewsClient, UpdateNewsCommand } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface SubmitEditNewsButtonProps {\r\n newsId: number\r\n newsTitle: string\r\n post: string\r\n publish: boolean\r\n loading: boolean\r\n setLoading: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: SubmitEditNewsButtonProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const submitEditNews = async () => {\r\n props.setLoading(true)\r\n try {\r\n let client = new NewsClient()\r\n const command = new UpdateNewsCommand()\r\n command.newsId = props.newsId\r\n command.newsTitle = props.newsTitle\r\n command.newsContent = props.post\r\n command.publish = props.publish\r\n const response = await client.update(props.newsId, command).then((response) => response as number)\r\n await navigateToReturnUrl(`/news/${response}`)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n props.setLoading(false)\r\n }\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button color='secondary' disabled={props.newsId <= 0 || props.loading || !props.newsTitle || !props.post} onClick={(e) => submitEditNews()}>\r\n Submit Event\r\n </Button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport useQueryParam from '../../hooks/useQueryParam'\r\nimport { IRawNewsPostVm, ISidebarVm, NewsClient, SidebarClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport NewsEditorBoxContainer from '../newseditor/NewsEditorBoxContainer'\r\nimport NewsEditorPublish from '../newseditor/NewsEditorPublish'\r\nimport NewsEditorTitle from '../newseditor/NewsEditorTitle'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport SubmitEditNewsButton from './SubmitEditNewsButton'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [sidebarLoading, setSidebarLoading] = useState<boolean>(false)\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [title, setTitle] = useState<string>('')\r\n const [postData, setPostData] = useState<string>('')\r\n const [sidebarData, setSidebarData] = useState<ISidebarVm>()\r\n const [publish, setPublish] = useState<boolean>(false)\r\n\r\n const [newsId, setNewsId] = useQueryParam('newsId', '')\r\n\r\n // Initial load for the sidebars.\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setSidebarLoading(true)\r\n try {\r\n let client = new SidebarClient()\r\n const response = await client.getSidebars().then((response) => response.toJSON() as Promise<ISidebarVm>)\r\n setSidebarData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setSidebarLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n // Load details for every change to NewsId\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n if (parseInt(newsId) > 0) {\r\n let client = new NewsClient()\r\n const response = await client.getRawNewsDataById(parseInt(newsId)).then((response) => response.toJSON() as Promise<IRawNewsPostVm>)\r\n setPostData(response.newsDetails.content)\r\n setTitle(response.newsDetails.title)\r\n setPublish(response.newsDetails.published)\r\n }\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [newsId])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title='Doom Central - Edit News Post' />\r\n <Sidebars loading={sidebarLoading} newsItems={sidebarData?.newsItems} recentThreads={sidebarData?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n <Row>\r\n <Col lg={8}>\r\n <NewsEditorTitle title={title} setTitle={setTitle} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <NewsEditorBoxContainer post={postData} setPost={setPostData} />\r\n <NewsEditorPublish publish={publish} setPublish={setPublish} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <SubmitEditNewsButton newsId={parseInt(newsId)} loading={loading} setLoading={setLoading} newsTitle={title} post={postData} publish={publish} />\r\n </Col>\r\n </Row>\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { navigateToReturnUrl } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext } from 'react'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { CreateNewsCommand, NewsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface SubmitNewNewsButtonProps {\r\n newsTitle: string\r\n post: string\r\n publish: boolean\r\n loading: boolean\r\n setLoading: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport default (props: SubmitNewNewsButtonProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const submitNewNews = async () => {\r\n props.setLoading(true)\r\n try {\r\n let client = new NewsClient()\r\n const command = new CreateNewsCommand()\r\n command.newsTitle = props.newsTitle\r\n command.newsContent = props.post\r\n command.publish = props.publish\r\n const response = await client.create(command).then((response) => response as number)\r\n await navigateToReturnUrl(`/news/${response}`)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n props.setLoading(false)\r\n }\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex'>\r\n <div className='ms-auto'>\r\n <Button color='primary' disabled={props.loading || !props.newsTitle || !props.post} onClick={(e) => submitNewNews()}>\r\n Submit News Post\r\n </Button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { ISidebarVm, SidebarClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport NewsEditorBoxContainer from '../newseditor/NewsEditorBoxContainer'\r\nimport NewsEditorPublish from '../newseditor/NewsEditorPublish'\r\nimport NewsEditorTitle from '../newseditor/NewsEditorTitle'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport SubmitNewNewsButton from './SubmitNewNewsButton'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [title, setTitle] = useState<string>('')\r\n const [postData, setPostData] = useState<string>('')\r\n const [sidebarData, setSidebarData] = useState<ISidebarVm>()\r\n const [publish, setPublish] = useState<boolean>(false)\r\n\r\n // Initial load for the thread page.\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new SidebarClient()\r\n const response = await client.getSidebars().then((response) => response.toJSON() as Promise<ISidebarVm>)\r\n setSidebarData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title='Doom Central - Create News Post' />\r\n <Sidebars loading={loading} newsItems={sidebarData?.newsItems} recentThreads={sidebarData?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n <Row>\r\n <Col lg={8}>\r\n <NewsEditorTitle title={title} setTitle={setTitle} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <NewsEditorBoxContainer post={postData} setPost={setPostData} />\r\n <NewsEditorPublish publish={publish} setPublish={setPublish} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <SubmitNewNewsButton loading={loading} setLoading={setLoading} newsTitle={title} post={postData} publish={publish} />\r\n </Col>\r\n </Row>\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Button } from 'reactstrap'\r\n\r\nimport { NewsPageMode } from './NewsListing'\r\n\r\ninterface NewsAdminProps {\r\n mode: NewsPageMode\r\n setMode: React.Dispatch<React.SetStateAction<NewsPageMode>>\r\n}\r\n\r\nexport default (props: NewsAdminProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex my-2'>\r\n <Button color='primary' className='me-2' onClick={(e) => props.setMode(NewsPageMode.AllNews)} active={props.mode === NewsPageMode.AllNews}>\r\n All News\r\n </Button>\r\n <Button color='primary' className='me-2' onClick={(e) => props.setMode(NewsPageMode.MyNews)} active={props.mode === NewsPageMode.MyNews}>\r\n My News\r\n </Button>\r\n <NavLink className='ms-auto' exact to={'/newnews'}>\r\n <Button color='primary'>New News Post</Button>\r\n </NavLink>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { containsDuplicate } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useEffect, useState } from 'react'\r\nimport { AuthContextProps } from 'react-oidc-context'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Table } from 'reactstrap'\r\n\r\nimport { INewsListingItemDto } from '../../lib/DoomCentral'\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport NewsPostRoles from '../../lib/NewsPostRoles'\r\n\r\ninterface NewsListProps {\r\n newsItems: INewsListingItemDto[]\r\n auth: AuthContextProps\r\n}\r\n\r\nexport default (props: NewsListProps) => {\r\n const [isAuthor, setIsAuthor] = useState<boolean>(false)\r\n const [isGlobalAdmin, setIsGlobalAdmin] = useState<boolean>(false)\r\n\r\n useEffect(() => {\r\n if (\r\n props.auth.user &&\r\n (props.auth.user?.profile.role as string[]) &&\r\n containsDuplicate([NewsPostRoles.GlobalNewsAdministrator, NewsPostRoles.NewsAuthor, DoomCentralRoles.GlobalAdministrator], props.auth.user?.profile.role as string[])\r\n ) {\r\n setIsAuthor(true)\r\n } else {\r\n setIsAuthor(false)\r\n }\r\n }, [props.auth])\r\n\r\n useEffect(() => {\r\n if (\r\n props.auth.user &&\r\n (props.auth.user?.profile.role as string[]) &&\r\n containsDuplicate([NewsPostRoles.GlobalNewsAdministrator, DoomCentralRoles.GlobalAdministrator], props.auth.user?.profile.role as string[])\r\n ) {\r\n setIsGlobalAdmin(true)\r\n } else {\r\n setIsGlobalAdmin(false)\r\n }\r\n }, [props.auth])\r\n\r\n return (\r\n <React.Fragment>\r\n <Table>\r\n <thead>\r\n <tr>\r\n <th>News</th>\r\n <th>Author</th>\r\n <th>Published</th>\r\n {((isAuthor || isGlobalAdmin) && <th>Edit</th>) || <th></th>}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {props.newsItems &&\r\n props.newsItems.map((s, idx) => (\r\n <tr key={s.id}>\r\n <td>\r\n <NavLink to={`/news/${s.id}`}>{s.title}</NavLink>\r\n </td>\r\n <td>\r\n by {s.newsPublisherUserName && <NavLink to={`/user/${s.newsPublisherUserName}`}>{s.newsPublisherDisplayName}</NavLink>}\r\n {!s.newsPublisherUserName && s.newsPublisherDisplayName}\r\n </td>\r\n <td>{new Date(s.publishDate).toLocaleString()}</td>\r\n {((isAuthor && props.auth.user && props.auth.user.profile.sid === s.newsPublisherId) || isGlobalAdmin) && (\r\n <td>\r\n <NavLink to={`/editnews?newsId=${s.id}`}>\r\n <i className='bi bi-pencil-square'></i>\r\n </NavLink>\r\n </td>\r\n )}\r\n {isAuthor && !isGlobalAdmin && props.auth.user && props.auth.user.profile.sid !== s.newsPublisherId && <td></td>}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </Table>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport ReactPaginate from 'react-paginate'\r\n\r\ninterface NewsPaginationProps {\r\n pageCount: number\r\n setPageChange: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: NewsPaginationProps) => {\r\n return (\r\n <React.Fragment>\r\n <div className='d-flex justify-content-end my-2'>\r\n <ReactPaginate\r\n previousLabel={'← Previous'}\r\n nextLabel={'Next →'}\r\n pageCount={props.pageCount}\r\n onPageChange={(p) => props.setPageChange(p.selected)}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n containerClassName={'pagination pagination-sm'}\r\n previousLinkClassName={'page-link'}\r\n nextLinkClassName={'page-link'}\r\n disabledClassName={'page-item disabled'}\r\n activeClassName={'page-item active'}\r\n activeLinkClassName={'page-link'}\r\n nextClassName={'page-item'}\r\n previousClassName={'page-item'}\r\n breakClassName={'page-item'}\r\n breakLinkClassName={'page-link'}\r\n pageClassName={'page-item'}\r\n pageLinkClassName={'page-link'}\r\n renderOnZeroPageCount={null}\r\n />\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { containsDuplicate } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { Card, CardBody, CardTitle } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { INewsListingPageVm, NewsClient } from '../../lib/DoomCentral'\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport NewsPostRoles from '../../lib/NewsPostRoles'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport NewsAdmin from './NewsAdmin'\r\nimport NewsList from './NewsList'\r\nimport NewsPagination from './NewsPagination'\r\n\r\nexport enum NewsPageMode {\r\n AllNews = 0,\r\n MyNews = 1,\r\n}\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n const auth = useAuth()\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [isAdmin, setIsAdmin] = useState<boolean>(false)\r\n const [pageNumber, setPageNumber] = useState<number>(1)\r\n const [pageSize, setPageSize] = useState<number>(20)\r\n const [mode, setMode] = useState<NewsPageMode>(NewsPageMode.AllNews)\r\n\r\n const [newsListing, setNewsListingData] = useState<INewsListingPageVm>()\r\n\r\n useEffect(() => {\r\n if (\r\n auth.user &&\r\n (auth.user?.profile.role as string[]) &&\r\n containsDuplicate([NewsPostRoles.GlobalNewsAdministrator, NewsPostRoles.NewsAuthor, DoomCentralRoles.GlobalAdministrator], auth.user?.profile.role as string[])\r\n ) {\r\n setIsAdmin(true)\r\n } else {\r\n setIsAdmin(false)\r\n }\r\n }, [auth])\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new NewsClient()\r\n const response = await client.getNewsListingPage(pageNumber, pageSize).then((response) => response.toJSON() as Promise<INewsListingPageVm>)\r\n setNewsListingData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [pageNumber, pageSize, mode])\r\n\r\n return (\r\n <>\r\n <HelmetPages title='Doom Central - News Listing' />\r\n <Card className='mb-3'>\r\n <CardBody>\r\n <div className='d-flex flex-row justify-content-between mb-3'>\r\n <div className='flex-grow'>\r\n <CardTitle tag='h5'>News</CardTitle>\r\n </div>\r\n <div className='d-flex flex-row justify-content-end align-items-center'>\r\n <NewsPagination pageCount={newsListing?.newsListing?.totalPages ?? 0} setPageChange={setPageNumber} />\r\n </div>\r\n </div>\r\n {isAdmin && <NewsAdmin mode={mode} setMode={setMode} />}\r\n <NewsList newsItems={newsListing?.newsListing?.newsList} auth={auth} />\r\n </CardBody>\r\n </Card>\r\n </>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Button, Col, Input, InputGroup, Row } from 'reactstrap'\r\n\r\nimport { countries } from '../../countries'\r\n\r\nconst Reactions = () => {\r\n return (\r\n <React.Fragment>\r\n <div className='reactions'>\r\n <div className='click-to-react'>React to this</div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default Reactions\r\n","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Button, Col, Input, InputGroup, Row } from 'reactstrap'\r\n\r\ninterface NewsAuthorInfoProps {\r\n newsAuthorDisplayName: string\r\n newsAuthor: string\r\n newsDate: Date\r\n}\r\n\r\nexport default (props: NewsAuthorInfoProps) => {\r\n return (\r\n <React.Fragment>\r\n <Row>\r\n <Col>\r\n {props.newsAuthor && (\r\n <p className='lead'>\r\n by <NavLink to={`/user/${props.newsAuthor}`}>{props.newsAuthorDisplayName}</NavLink>\r\n </p>\r\n )}\r\n {!props.newsAuthor && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-8'></span>\r\n </div>\r\n )}\r\n </Col>\r\n </Row>\r\n <hr />\r\n <Row>\r\n <Col>\r\n {props.newsDate && (\r\n <p className='mb-0'>\r\n Posted on {new Intl.DateTimeFormat('default', { dateStyle: 'full', timeStyle: 'long' }).format(new Date(props.newsDate))} in{' '}\r\n <NavLink to={'/news/'}>News</NavLink>\r\n </p>\r\n )}\r\n {!props.newsDate && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-8'></span>\r\n </div>\r\n )}\r\n </Col>\r\n </Row>\r\n <hr />\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Button, Col, Input, InputGroup, Row } from 'reactstrap'\r\n\r\nimport MarkdownPost from '../markdown-post/MarkdownPost'\r\n\r\ninterface NewsContentProps {\r\n content: string\r\n}\r\n\r\nexport default (props: NewsContentProps) => {\r\n return (\r\n <React.Fragment>\r\n <Row>\r\n <Col>\r\n <MarkdownPost content={props.content} />\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Button, Col, Input, InputGroup, Row } from 'reactstrap'\r\n\r\ninterface NewsHeaderProps {\r\n title: string\r\n}\r\n\r\nexport default (props: NewsHeaderProps) => {\r\n return (\r\n <React.Fragment>\r\n <Row>\r\n <Col>\r\n {props.title && <h1>{props.title}</h1>}\r\n {!props.title && (\r\n <div className='placeholder-glow'>\r\n <span className='module-item-title placeholder col-8'></span>\r\n </div>\r\n )}\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { UserCanPostInNewsThread, UserIsNewsAdmin } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\nimport { RouteComponentProps } from 'react-router'\r\n\r\nimport { INewsPostVm, NewsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Reactions from '../reactions/Reactions'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport SingleMediaContainer from '../singlemediacontainer/SingleMediaContainer'\r\nimport NewsAuthorInfo from './NewsAuthorInfo'\r\nimport NewsContent from './NewsContent'\r\nimport NewsHeader from './NewsHeader'\r\n\r\ninterface NewsPageRouterProps {\r\n id: string\r\n}\r\n\r\ninterface NewsPageProps extends RouteComponentProps<NewsPageRouterProps> {\r\n // Add your regular properties here\r\n}\r\n\r\nexport default (props: NewsPageProps) => {\r\n const auth = useAuth()\r\n\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [canEdit, setCanEdit] = useState<boolean>(false)\r\n\r\n const [newsPageData, setNewsPageData] = useState<INewsPostVm>()\r\n\r\n // Initial load for the thread page.\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new NewsClient()\r\n const response = await client.getNewsById(parseInt(props.match.params.id)).then((response) => response.toJSON() as Promise<INewsPostVm>)\r\n setNewsPageData(response)\r\n } catch (e) {\r\n error.setError(e.response)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (UserIsNewsAdmin(auth.user, newsPageData?.newsDetails)) {\r\n setCanEdit(true)\r\n } else {\r\n setCanEdit(false)\r\n }\r\n }, [auth, newsPageData])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title={`Doom Central - News - ${newsPageData?.newsDetails?.title ?? 'Loading...'}`} />\r\n <Sidebars loading={loading} newsItems={newsPageData?.newsItems} recentThreads={newsPageData?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n <SingleMediaContainer\r\n loading={loading}\r\n id={newsPageData?.newsDetails?.threadId ?? 0}\r\n authorized={UserCanPostInNewsThread(auth.user, newsPageData?.newsDetails)}\r\n isAdmin={canEdit}\r\n maxFilesInPost={newsPageData?.newsDetails?.maxFilesPerPost ?? 0}\r\n maxFileSizeBytes={newsPageData?.newsDetails?.maxFileSize ?? 0}\r\n allowedFileExtensions={newsPageData?.newsDetails?.allowedFileExtensions ?? ''}\r\n >\r\n <NewsHeader title={newsPageData?.newsDetails?.title} />\r\n <NewsAuthorInfo\r\n newsDate={newsPageData?.newsDetails?.newsDate}\r\n newsAuthor={newsPageData?.newsDetails?.newsPublisherUsername}\r\n newsAuthorDisplayName={newsPageData?.newsDetails?.newsPublisherDisplayName}\r\n />\r\n <NewsContent content={newsPageData?.newsDetails?.content} />\r\n <Reactions />\r\n </SingleMediaContainer>\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Route } from 'react-router'\r\n\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport NewsPostRoles from '../../lib/NewsPostRoles'\r\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute'\r\nimport EditNews from '../editnews/EditNews'\r\nimport NewNews from '../newnews/NewNews'\r\nimport NewsListing from '../newslisting/NewsListing'\r\nimport NewsPage from '../newspage/NewsPage'\r\n\r\nexport default () => (\r\n <React.Fragment>\r\n <AuthorizeRoute\r\n path='/newnews'\r\n component={NewNews}\r\n componentroles={[NewsPostRoles.GlobalNewsAdministrator, NewsPostRoles.NewsAuthor, DoomCentralRoles.GlobalAdministrator]}\r\n />\r\n <AuthorizeRoute\r\n path='/editnews'\r\n component={EditNews}\r\n componentroles={[NewsPostRoles.GlobalNewsAdministrator, NewsPostRoles.NewsAuthor, DoomCentralRoles.GlobalAdministrator]}\r\n />\r\n <Route exact path='/news' component={NewsListing} />\r\n <Route exact path='/news/:id' component={NewsPage} />\r\n </React.Fragment>\r\n)\r\n","import { IsResourceUniqueToPromotions } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { Button, Row } from 'reactstrap'\r\n\r\nimport { IPromotableItemDto, IPromotedItemDto } from '../../lib/DoomCentral'\r\n\r\ninterface AddToCurrentPromotionsProps {\r\n promotions: IPromotedItemDto[]\r\n setPromotions: React.Dispatch<React.SetStateAction<IPromotedItemDto[]>>\r\n selectedResource: IPromotableItemDto\r\n title: string\r\n blurb: string\r\n imageUrl: string\r\n setModPromotion: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: AddToCurrentPromotionsProps) => {\r\n const addNewPromotion = () => {\r\n const promotion: IPromotedItemDto = {\r\n resourceId: props.selectedResource.resourceId,\r\n promotedType: props.selectedResource.promotedType,\r\n promotedBlurb: props.blurb,\r\n promotedTitle: props.title,\r\n promotedImageUrl: props.imageUrl,\r\n }\r\n\r\n // Check if this promotion already exists\r\n if (!IsResourceUniqueToPromotions(promotion, props.promotions)) {\r\n return\r\n }\r\n // Add to the bottom of a new list and set it.\r\n var newPromotions: IPromotedItemDto[] = [...props.promotions]\r\n newPromotions.push(promotion)\r\n\r\n props.setPromotions([...newPromotions])\r\n props.setModPromotion(newPromotions.length + 1)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Row className='my-2'>\r\n <Button color='primary' onClick={(e) => addNewPromotion()} disabled={!props.blurb || !props.imageUrl || !props.title || !props.selectedResource}>\r\n Add Promotion to List\r\n </Button>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useEffect } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Button, Form, FormGroup, Input, Label, Table } from 'reactstrap'\r\n\r\nimport { IPromotableItemDto } from '../../lib/DoomCentral'\r\n\r\ninterface PromotionInfoProps {\r\n selectedResource: IPromotableItemDto\r\n title: string\r\n setTitle: React.Dispatch<React.SetStateAction<string>>\r\n blurb: string\r\n setBlurb: React.Dispatch<React.SetStateAction<string>>\r\n imageUrl: string\r\n setImageUrl: React.Dispatch<React.SetStateAction<string>>\r\n}\r\n\r\nexport default (props: PromotionInfoProps) => {\r\n return (\r\n <React.Fragment>\r\n <Form>\r\n <FormGroup row>\r\n <Label for='title'>Title</Label>\r\n <Input name='title' value={props.title} onChange={(e) => props.setTitle(e.target.value)} />\r\n <Button className='my-2' disabled={!props.selectedResource} onClick={(e) => props.setTitle(props.selectedResource.title)}>\r\n Use resource title\r\n </Button>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='blurb'>Blurb</Label>\r\n <Input name='blurb' value={props.blurb} onChange={(e) => props.setBlurb(e.target.value)} />\r\n <Button className='my-2' disabled={!props.selectedResource} onClick={(e) => props.setBlurb(props.selectedResource.sampleContent)}>\r\n Use resource blurb\r\n </Button>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label for='image'>Image Url</Label>\r\n <Input name='image' value={props.imageUrl} onChange={(e) => props.setImageUrl(e.target.value)} />\r\n </FormGroup>\r\n </Form>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Button, Col, Form, FormGroup, Input, Label, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { ForumsClient, IForumDto, IForumListVm, IPromotableItemDto, IPromotableResourceVm, PromotionsClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface SearchForResourcesProps {\r\n setResources: React.Dispatch<React.SetStateAction<IPromotableItemDto[]>>\r\n modPromotion: number\r\n}\r\n\r\nexport default (props: SearchForResourcesProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [forum, setForum] = useState<number>()\r\n const [forumList, setForumList] = useState<IForumDto[]>()\r\n const [includeNews, setIncludeNews] = useState<boolean>(true)\r\n const [includeEvents, setIncludeEvents] = useState<boolean>(true)\r\n const [title, setTitle] = useState<string>('')\r\n\r\n useEffect(() => {\r\n setTitle('')\r\n }, [props.modPromotion])\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new ForumsClient()\r\n const response = await client.getForums().then((response) => response.toJSON() as Promise<IForumListVm>)\r\n setForumList(response.forums)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n const fetchResourceSearch = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new PromotionsClient()\r\n const response = await client\r\n .searchForPromotableResources(includeNews, includeEvents, forum, title)\r\n .then((response) => response.toJSON() as Promise<IPromotableResourceVm>)\r\n props.setResources(response.promotableItems)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n const renderForumSelect = () => {\r\n return (\r\n <Col sm={10}>\r\n <select name='forums' id='forums' value={forum} onChange={(e) => handleForumChange(e)}>\r\n <option key={null} value={null}>\r\n All Forums\r\n </option>\r\n {forumList &&\r\n forumList.length > 0 &&\r\n forumList.map((f) => (\r\n <option key={f.id} value={f.id}>\r\n {f.name}\r\n </option>\r\n ))}\r\n </select>\r\n </Col>\r\n )\r\n }\r\n\r\n const handleForumChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\r\n if (e.target.value !== 'All Forums') {\r\n setForum(parseInt(e.target.value))\r\n } else {\r\n setForum(null)\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Form>\r\n <FormGroup row>\r\n <Label for='forums'>Forums</Label>\r\n {renderForumSelect()}\r\n </FormGroup>\r\n <FormGroup check>\r\n <ul>\r\n <li>\r\n <Label check>\r\n <Input type='checkbox' name='eventsBox' id='eventsBox' onChange={(e) => setIncludeEvents(e.target.checked)} checked={includeEvents} />\r\n {' '}\r\n Include Events\r\n </Label>\r\n </li>\r\n <li>\r\n <Label check>\r\n <Input type='checkbox' name='newsBox' id='newsBox' onChange={(e) => setIncludeNews(e.target.checked)} checked={includeNews} />\r\n {' '}\r\n Include News\r\n </Label>\r\n </li>\r\n </ul>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Label>Title</Label>\r\n <Col sm={10}>\r\n <Input value={title} onChange={(e) => setTitle(e.target.value)} />\r\n </Col>\r\n </FormGroup>\r\n <FormGroup row>\r\n <Button color='primary' onClick={(e) => fetchResourceSearch()} disabled={loading || !title}>\r\n Search for resource\r\n </Button>\r\n </FormGroup>\r\n </Form>\r\n </React.Fragment>\r\n )\r\n}\r\n","import { routeForResourceType } from '@/utils/helpers'\r\nimport * as React from 'react'\r\nimport { useEffect } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\nimport { Input, Table } from 'reactstrap'\r\n\r\nimport { IPromotableItemDto } from '../../lib/DoomCentral'\r\n\r\ninterface SelectResourceProps {\r\n resources: IPromotableItemDto[]\r\n selectedResource: IPromotableItemDto\r\n setSelectedResource: React.Dispatch<React.SetStateAction<IPromotableItemDto>>\r\n}\r\n\r\nexport default (props: SelectResourceProps) => {\r\n const selectResource = (index: number) => {\r\n props.setSelectedResource(props.resources[index] ?? props.resources[0])\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Table>\r\n <thead>\r\n <tr key='header'>\r\n <th> </th>\r\n <th>#</th>\r\n <th>Resource Type</th>\r\n <th>Link</th>\r\n <th>Sample Content</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {props.resources &&\r\n props.resources.map((s, idx) => (\r\n <tr key={idx}>\r\n <td>\r\n <Input type='radio' name='usergroup' value={idx} onClick={(s) => selectResource(idx)} />\r\n </td>\r\n <td>{idx}</td>\r\n <td>{routeForResourceType(s.promotedType)}</td>\r\n <td>\r\n <NavLink to={`/${routeForResourceType(s.promotedType)}/${s.resourceId}`}>{s.title}</NavLink>\r\n </td>\r\n <td>{s.sampleContent}</td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n </Table>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IPromotableItemDto, IPromotedItemDto } from '../../lib/DoomCentral'\r\nimport AddToCurrentPromotions from './AddToCurrentPromotions'\r\nimport PromotionInfo from './PromotionInfo'\r\nimport SearchForResources from './SearchForResources'\r\nimport SelectResource from './SelectResource'\r\n\r\ninterface SearchAddPromotionsProps {\r\n promotions: IPromotedItemDto[]\r\n setPromotions: React.Dispatch<React.SetStateAction<IPromotedItemDto[]>>\r\n modPromotion: number\r\n setModPromotion: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nexport default (props: SearchAddPromotionsProps) => {\r\n const [promotableItems, setPromotableItems] = useState<IPromotableItemDto[]>()\r\n const [selectedResource, setSelectedResource] = useState<IPromotableItemDto>()\r\n const [title, setTitle] = useState<string>('')\r\n const [blurb, setBlurb] = useState<string>('')\r\n const [imageUrl, setImageUrl] = useState<string>('')\r\n\r\n useEffect(() => {\r\n setTitle('')\r\n setBlurb('')\r\n setImageUrl('')\r\n setSelectedResource(null)\r\n setPromotableItems([])\r\n }, [props.modPromotion])\r\n\r\n return (\r\n <React.Fragment>\r\n <SearchForResources setResources={setPromotableItems} modPromotion={props.modPromotion} />\r\n <Row>\r\n <Col>\r\n <SelectResource resources={promotableItems} selectedResource={selectedResource} setSelectedResource={setSelectedResource} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <PromotionInfo\r\n selectedResource={selectedResource}\r\n title={title}\r\n setTitle={setTitle}\r\n blurb={blurb}\r\n setBlurb={setBlurb}\r\n imageUrl={imageUrl}\r\n setImageUrl={setImageUrl}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <AddToCurrentPromotions\r\n promotions={props.promotions}\r\n setPromotions={props.setPromotions}\r\n selectedResource={selectedResource}\r\n title={title}\r\n blurb={blurb}\r\n imageUrl={imageUrl}\r\n setModPromotion={props.setModPromotion}\r\n />\r\n </Col>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport function invariant(condition: any, format: string, ...args: any[]) {\n\tif (isProduction()) {\n\t\tif (format === undefined) {\n\t\t\tthrow new Error('invariant requires an error message argument')\n\t\t}\n\t}\n\n\tif (!condition) {\n\t\tlet error\n\t\tif (format === undefined) {\n\t\t\terror = new Error(\n\t\t\t\t'Minified exception occurred; use the non-minified dev environment ' +\n\t\t\t\t\t'for the full error message and additional helpful warnings.',\n\t\t\t)\n\t\t} else {\n\t\t\tlet argIndex = 0\n\t\t\terror = new Error(\n\t\t\t\tformat.replace(/%s/g, function () {\n\t\t\t\t\treturn args[argIndex++]\n\t\t\t\t}),\n\t\t\t)\n\t\t\terror.name = 'Invariant Violation'\n\t\t}\n\n\t\t;(error as any).framesToPop = 1 // we don't care about invariant's own frame\n\t\tthrow error\n\t}\n}\n\nfunction isProduction() {\n\treturn (\n\t\ttypeof process !== 'undefined' && process.env['NODE_ENV'] === 'production'\n\t)\n}\n","// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get<T>(obj: any, path: string, defaultValue: T): T {\n\treturn path\n\t\t.split('.')\n\t\t.reduce((a, c) => (a && a[c] ? a[c] : defaultValue || null), obj) as T\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without<T>(items: T[], item: T): T[] {\n\treturn items.filter((i) => i !== item)\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isString(input: any): boolean {\n\treturn typeof input === 'string'\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isObject(input: any): boolean {\n\treturn typeof input === 'object'\n}\n\n/**\n * replacement for _.xor\n * @param itemsA\n * @param itemsB\n */\nexport function xor<T extends string | number>(itemsA: T[], itemsB: T[]): T[] {\n\tconst map = new Map<T, number>()\n\tconst insertItem = (item: T) => {\n\t\tmap.set(item, map.has(item) ? (map.get(item) as number) + 1 : 1)\n\t}\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tmap.forEach((count, key) => {\n\t\tif (count === 1) {\n\t\t\tresult.push(key)\n\t\t}\n\t})\n\treturn result\n}\n\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\nexport function intersection<T>(itemsA: T[], itemsB: T[]): T[] {\n\treturn itemsA.filter((t) => itemsB.indexOf(t) > -1)\n}\n","export const INIT_COORDS = 'dnd-core/INIT_COORDS'\nexport const BEGIN_DRAG = 'dnd-core/BEGIN_DRAG'\nexport const PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE'\nexport const HOVER = 'dnd-core/HOVER'\nexport const DROP = 'dnd-core/DROP'\nexport const END_DRAG = 'dnd-core/END_DRAG'\n","import type { AnyAction } from 'redux'\n\nimport type { XYCoord } from '../../../interfaces.js'\nimport { INIT_COORDS } from '../types.js'\n\nexport function setClientOffset(\n\tclientOffset: XYCoord | null | undefined,\n\tsourceClientOffset?: XYCoord | null | undefined,\n): AnyAction {\n\treturn {\n\t\ttype: INIT_COORDS,\n\t\tpayload: {\n\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\tclientOffset: clientOffset || null,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tBeginDragOptions,\n\tBeginDragPayload,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tXYCoord,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { setClientOffset } from './local/setClientOffset.js'\nimport { BEGIN_DRAG, INIT_COORDS } from './types.js'\n\nconst ResetCoordinatesAction = {\n\ttype: INIT_COORDS,\n\tpayload: {\n\t\tclientOffset: null,\n\t\tsourceClientOffset: null,\n\t},\n}\n\nexport function createBeginDrag(manager: DragDropManager) {\n\treturn function beginDrag(\n\t\tsourceIds: Identifier[] = [],\n\t\toptions: BeginDragOptions = {\n\t\t\tpublishSource: true,\n\t\t},\n\t): Action<BeginDragPayload> | undefined {\n\t\tconst {\n\t\t\tpublishSource = true,\n\t\t\tclientOffset,\n\t\t\tgetSourceClientOffset,\n\t\t}: BeginDragOptions = options\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\n\t\t// Initialize the coordinates using the client offset\n\t\tmanager.dispatch(setClientOffset(clientOffset))\n\n\t\tverifyInvariants(sourceIds, monitor, registry)\n\n\t\t// Get the draggable source\n\t\tconst sourceId = getDraggableSource(sourceIds, monitor)\n\t\tif (sourceId == null) {\n\t\t\tmanager.dispatch(ResetCoordinatesAction)\n\t\t\treturn\n\t\t}\n\n\t\t// Get the source client offset\n\t\tlet sourceClientOffset: XYCoord | null = null\n\t\tif (clientOffset) {\n\t\t\tif (!getSourceClientOffset) {\n\t\t\t\tthrow new Error('getSourceClientOffset must be defined')\n\t\t\t}\n\t\t\tverifyGetSourceClientOffsetIsFunction(getSourceClientOffset)\n\t\t\tsourceClientOffset = getSourceClientOffset(sourceId)\n\t\t}\n\n\t\t// Initialize the full coordinates\n\t\tmanager.dispatch(setClientOffset(clientOffset, sourceClientOffset))\n\n\t\tconst source = registry.getSource(sourceId)\n\t\tconst item = source.beginDrag(monitor, sourceId)\n\t\t// If source.beginDrag returns null, this is an indicator to cancel the drag\n\t\tif (item == null) {\n\t\t\treturn undefined\n\t\t}\n\t\tverifyItemIsObject(item)\n\t\tregistry.pinSource(sourceId)\n\n\t\tconst itemType = registry.getSourceType(sourceId)\n\t\treturn {\n\t\t\ttype: BEGIN_DRAG,\n\t\t\tpayload: {\n\t\t\t\titemType,\n\t\t\t\titem,\n\t\t\t\tsourceId,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\t\tisSourcePublic: !!publishSource,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyInvariants(\n\tsourceIds: Identifier[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.')\n\tsourceIds.forEach(function (sourceId) {\n\t\tinvariant(\n\t\t\tregistry.getSource(sourceId),\n\t\t\t'Expected sourceIds to be registered.',\n\t\t)\n\t})\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset: any) {\n\tinvariant(\n\t\ttypeof getSourceClientOffset === 'function',\n\t\t'When clientOffset is provided, getSourceClientOffset must be a function.',\n\t)\n}\n\nfunction verifyItemIsObject(item: any) {\n\tinvariant(isObject(item), 'Item must be an object.')\n}\n\nfunction getDraggableSource(sourceIds: Identifier[], monitor: DragDropMonitor) {\n\tlet sourceId = null\n\tfor (let i = sourceIds.length - 1; i >= 0; i--) {\n\t\tif (monitor.canDragSource(sourceIds[i])) {\n\t\t\tsourceId = sourceIds[i]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn sourceId\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tDropPayload,\n\tHandlerRegistry,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { DROP } from './types.js'\n\nexport function createDrop(manager: DragDropManager) {\n\treturn function drop(options = {}): void {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyInvariants(monitor)\n\t\tconst targetIds = getDroppableTargets(monitor)\n\n\t\t// Multiple actions are dispatched here, which is why this doesn't return an action\n\t\ttargetIds.forEach((targetId, index) => {\n\t\t\tconst dropResult = determineDropResult(targetId, index, registry, monitor)\n\t\t\tconst action: Action<DropPayload> = {\n\t\t\t\ttype: DROP,\n\t\t\t\tpayload: {\n\t\t\t\t\tdropResult: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\t...dropResult,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t\tmanager.dispatch(action)\n\t\t})\n\t}\n}\n\nfunction verifyInvariants(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call drop while not dragging.')\n\tinvariant(\n\t\t!monitor.didDrop(),\n\t\t'Cannot call drop twice during one drag operation.',\n\t)\n}\n\nfunction determineDropResult(\n\ttargetId: Identifier,\n\tindex: number,\n\tregistry: HandlerRegistry,\n\tmonitor: DragDropMonitor,\n) {\n\tconst target = registry.getTarget(targetId)\n\tlet dropResult = target ? target.drop(monitor, targetId) : undefined\n\tverifyDropResultType(dropResult)\n\tif (typeof dropResult === 'undefined') {\n\t\tdropResult = index === 0 ? {} : monitor.getDropResult()\n\t}\n\treturn dropResult\n}\n\nfunction verifyDropResultType(dropResult: any) {\n\tinvariant(\n\t\ttypeof dropResult === 'undefined' || isObject(dropResult),\n\t\t'Drop result must either be an object or undefined.',\n\t)\n}\n\nfunction getDroppableTargets(monitor: DragDropMonitor) {\n\tconst targetIds = monitor\n\t\t.getTargetIds()\n\t\t.filter(monitor.canDropOnTarget, monitor)\n\ttargetIds.reverse()\n\treturn targetIds\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tSentinelAction,\n} from '../../interfaces.js'\nimport { END_DRAG } from './types.js'\n\nexport function createEndDrag(manager: DragDropManager) {\n\treturn function endDrag(): SentinelAction {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyIsDragging(monitor)\n\n\t\tconst sourceId = monitor.getSourceId()\n\t\tif (sourceId != null) {\n\t\t\tconst source = registry.getSource(sourceId, true)\n\t\t\tsource.endDrag(monitor, sourceId)\n\t\t\tregistry.unpinSource()\n\t\t}\n\t\treturn { type: END_DRAG }\n\t}\n}\n\nfunction verifyIsDragging(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.')\n}\n","import type { Identifier } from '../interfaces.js'\n\nexport function matchesType(\n\ttargetType: Identifier | Identifier[] | null,\n\tdraggedItemType: Identifier | null,\n): boolean {\n\tif (draggedItemType === null) {\n\t\treturn targetType === null\n\t}\n\treturn Array.isArray(targetType)\n\t\t? (targetType as Identifier[]).some((t) => t === draggedItemType)\n\t\t: targetType === draggedItemType\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tHoverOptions,\n\tHoverPayload,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { matchesType } from '../../utils/matchesType.js'\nimport { HOVER } from './types.js'\n\nexport function createHover(manager: DragDropManager) {\n\treturn function hover(\n\t\ttargetIdsArg: string[],\n\t\t{ clientOffset }: HoverOptions = {},\n\t): Action<HoverPayload> {\n\t\tverifyTargetIdsIsArray(targetIdsArg)\n\t\tconst targetIds = targetIdsArg.slice(0)\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tconst draggedItemType = monitor.getItemType()\n\t\tremoveNonMatchingTargetIds(targetIds, registry, draggedItemType)\n\t\tcheckInvariants(targetIds, monitor, registry)\n\t\thoverAllTargets(targetIds, monitor, registry)\n\n\t\treturn {\n\t\t\ttype: HOVER,\n\t\t\tpayload: {\n\t\t\t\ttargetIds,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg: string[]) {\n\tinvariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.')\n}\n\nfunction checkInvariants(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(monitor.isDragging(), 'Cannot call hover while not dragging.')\n\tinvariant(!monitor.didDrop(), 'Cannot call hover after drop.')\n\tfor (let i = 0; i < targetIds.length; i++) {\n\t\tconst targetId = targetIds[i] as string\n\t\tinvariant(\n\t\t\ttargetIds.lastIndexOf(targetId) === i,\n\t\t\t'Expected targetIds to be unique in the passed array.',\n\t\t)\n\n\t\tconst target = registry.getTarget(targetId)\n\t\tinvariant(target, 'Expected targetIds to be registered.')\n\t}\n}\n\nfunction removeNonMatchingTargetIds(\n\ttargetIds: string[],\n\tregistry: HandlerRegistry,\n\tdraggedItemType: Identifier | null,\n) {\n\t// Remove those targetIds that don't match the targetType. This\n\t// fixes shallow isOver which would only be non-shallow because of\n\t// non-matching targets.\n\tfor (let i = targetIds.length - 1; i >= 0; i--) {\n\t\tconst targetId = targetIds[i] as string\n\t\tconst targetType = registry.getTargetType(targetId)\n\t\tif (!matchesType(targetType, draggedItemType)) {\n\t\t\ttargetIds.splice(i, 1)\n\t\t}\n\t}\n}\n\nfunction hoverAllTargets(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\t// Finally call hover on all matching targets.\n\ttargetIds.forEach(function (targetId) {\n\t\tconst target = registry.getTarget(targetId)\n\t\ttarget.hover(monitor, targetId)\n\t})\n}\n","import type { DragDropManager, SentinelAction } from '../../interfaces.js'\nimport { PUBLISH_DRAG_SOURCE } from './types.js'\n\nexport function createPublishDragSource(manager: DragDropManager) {\n\treturn function publishDragSource(): SentinelAction | undefined {\n\t\tconst monitor = manager.getMonitor()\n\t\tif (monitor.isDragging()) {\n\t\t\treturn { type: PUBLISH_DRAG_SOURCE }\n\t\t}\n\t\treturn\n\t}\n}\n","import type { Action, Store } from 'redux'\n\nimport { createDragDropActions } from '../actions/dragDrop/index.js'\nimport type {\n\tActionCreator,\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport type { DragDropMonitorImpl } from './DragDropMonitorImpl.js'\n\nexport class DragDropManagerImpl implements DragDropManager {\n\tprivate store: Store<State>\n\tprivate monitor: DragDropMonitor\n\tprivate backend: Backend | undefined\n\tprivate isSetUp = false\n\n\tpublic constructor(store: Store<State>, monitor: DragDropMonitor) {\n\t\tthis.store = store\n\t\tthis.monitor = monitor\n\t\tstore.subscribe(this.handleRefCountChange)\n\t}\n\n\tpublic receiveBackend(backend: Backend): void {\n\t\tthis.backend = backend\n\t}\n\n\tpublic getMonitor(): DragDropMonitor {\n\t\treturn this.monitor\n\t}\n\n\tpublic getBackend(): Backend {\n\t\treturn this.backend as Backend\n\t}\n\n\tpublic getRegistry(): HandlerRegistry {\n\t\treturn (this.monitor as DragDropMonitorImpl).registry\n\t}\n\n\tpublic getActions(): DragDropActions {\n\t\t/* eslint-disable-next-line @typescript-eslint/no-this-alias */\n\t\tconst manager = this\n\t\tconst { dispatch } = this.store\n\n\t\tfunction bindActionCreator(actionCreator: ActionCreator<any>) {\n\t\t\treturn (...args: any[]) => {\n\t\t\t\tconst action = actionCreator.apply(manager, args as any)\n\t\t\t\tif (typeof action !== 'undefined') {\n\t\t\t\t\tdispatch(action)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst actions = createDragDropActions(this)\n\n\t\treturn Object.keys(actions).reduce(\n\t\t\t(boundActions: DragDropActions, key: string) => {\n\t\t\t\tconst action: ActionCreator<any> = (actions as any)[\n\t\t\t\t\tkey\n\t\t\t\t] as ActionCreator<any>\n\t\t\t\t;(boundActions as any)[key] = bindActionCreator(action)\n\t\t\t\treturn boundActions\n\t\t\t},\n\t\t\t{} as DragDropActions,\n\t\t)\n\t}\n\n\tpublic dispatch(action: Action<any>): void {\n\t\tthis.store.dispatch(action)\n\t}\n\n\tprivate handleRefCountChange = (): void => {\n\t\tconst shouldSetUp = this.store.getState().refCount > 0\n\t\tif (this.backend) {\n\t\t\tif (shouldSetUp && !this.isSetUp) {\n\t\t\t\tthis.backend.setup()\n\t\t\t\tthis.isSetUp = true\n\t\t\t} else if (!shouldSetUp && this.isSetUp) {\n\t\t\t\tthis.backend.teardown()\n\t\t\t\tthis.isSetUp = false\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { DragDropActions, DragDropManager } from '../../interfaces.js'\nimport { createBeginDrag } from './beginDrag.js'\nimport { createDrop } from './drop.js'\nimport { createEndDrag } from './endDrag.js'\nimport { createHover } from './hover.js'\nimport { createPublishDragSource } from './publishDragSource.js'\n\nexport * from './types.js'\n\nexport function createDragDropActions(\n\tmanager: DragDropManager,\n): DragDropActions {\n\treturn {\n\t\tbeginDrag: createBeginDrag(manager),\n\t\tpublishDragSource: createPublishDragSource(manager),\n\t\thover: createHover(manager),\n\t\tdrop: createDrop(manager),\n\t\tendDrag: createEndDrag(manager),\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\nimport type { State } from '../reducers/dragOffset.js'\n\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x + b.x,\n\t\ty: a.y + b.y,\n\t}\n}\n\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function subtract(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x - b.x,\n\t\ty: a.y - b.y,\n\t}\n}\n\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nexport function getSourceClientOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset, initialSourceClientOffset } = state\n\tif (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(\n\t\tadd(clientOffset, initialSourceClientOffset),\n\t\tinitialClientOffset,\n\t)\n}\n\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nexport function getDifferenceFromInitialOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset } = state\n\tif (!clientOffset || !initialClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(clientOffset, initialClientOffset)\n}\n","import { intersection } from './js_utils.js'\n\nexport const NONE: string[] = []\nexport const ALL: string[] = []\n// Add these flags for debug\n;(NONE as any).__IS_NONE__ = true\n;(ALL as any).__IS_ALL__ = true\n\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nexport function areDirty(\n\tdirtyIds: string[],\n\thandlerIds: string[] | undefined,\n): boolean {\n\tif (dirtyIds === NONE) {\n\t\treturn false\n\t}\n\n\tif (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n\t\treturn true\n\t}\n\n\tconst commonIds = intersection(handlerIds, dirtyIds)\n\treturn commonIds.length > 0\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport type {\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport {\n\tgetDifferenceFromInitialOffset,\n\tgetSourceClientOffset,\n} from '../utils/coords.js'\nimport { areDirty } from '../utils/dirtiness.js'\nimport { matchesType } from '../utils/matchesType.js'\n\nexport class DragDropMonitorImpl implements DragDropMonitor {\n\tprivate store: Store<State>\n\tpublic readonly registry: HandlerRegistry\n\n\tpublic constructor(store: Store<State>, registry: HandlerRegistry) {\n\t\tthis.store = store\n\t\tthis.registry = registry\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions: { handlerIds?: string[] } = {},\n\t): Unsubscribe {\n\t\tconst { handlerIds } = options\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\t\tinvariant(\n\t\t\ttypeof handlerIds === 'undefined' || Array.isArray(handlerIds),\n\t\t\t'handlerIds, when specified, must be an array of strings.',\n\t\t)\n\n\t\tlet prevStateId = this.store.getState().stateId\n\t\tconst handleChange = () => {\n\t\t\tconst state = this.store.getState()\n\t\t\tconst currentStateId = state.stateId\n\t\t\ttry {\n\t\t\t\tconst canSkipListener =\n\t\t\t\t\tcurrentStateId === prevStateId ||\n\t\t\t\t\t(currentStateId === prevStateId + 1 &&\n\t\t\t\t\t\t!areDirty(state.dirtyHandlerIds, handlerIds))\n\n\t\t\t\tif (!canSkipListener) {\n\t\t\t\t\tlistener()\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tprevStateId = currentStateId\n\t\t\t}\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\n\t\tlet previousState = this.store.getState().dragOffset\n\t\tconst handleChange = () => {\n\t\t\tconst nextState = this.store.getState().dragOffset\n\t\t\tif (nextState === previousState) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tpreviousState = nextState\n\t\t\tlistener()\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic canDragSource(sourceId: string | undefined): boolean {\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.canDrag(this, sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\t\tconst target = this.registry.getTarget(targetId)\n\t\tinvariant(target, `Expected to find a valid target. targetId=${targetId}`)\n\n\t\tif (!this.isDragging() || this.didDrop()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\treturn (\n\t\t\tmatchesType(targetType, draggedItemType) && target.canDrop(this, targetId)\n\t\t)\n\t}\n\n\tpublic isDragging(): boolean {\n\t\treturn Boolean(this.getItemType())\n\t}\n\n\tpublic isDraggingSource(sourceId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId, true)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (!this.isDragging() || !this.isSourcePublic()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst sourceType = this.registry.getSourceType(sourceId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (sourceType !== draggedItemType) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.isDragging(this, sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: string | undefined,\n\t\toptions = { shallow: false },\n\t): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst { shallow } = options\n\t\tif (!this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (draggedItemType && !matchesType(targetType, draggedItemType)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetIds = this.getTargetIds()\n\t\tif (!targetIds.length) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst index = targetIds.indexOf(targetId)\n\t\tif (shallow) {\n\t\t\treturn index === targetIds.length - 1\n\t\t} else {\n\t\t\treturn index > -1\n\t\t}\n\t}\n\n\tpublic getItemType(): Identifier {\n\t\treturn this.store.getState().dragOperation.itemType as Identifier\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.store.getState().dragOperation.item\n\t}\n\n\tpublic getSourceId(): string | null {\n\t\treturn this.store.getState().dragOperation.sourceId\n\t}\n\n\tpublic getTargetIds(): string[] {\n\t\treturn this.store.getState().dragOperation.targetIds\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.store.getState().dragOperation.dropResult\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.store.getState().dragOperation.didDrop\n\t}\n\n\tpublic isSourcePublic(): boolean {\n\t\treturn Boolean(this.store.getState().dragOperation.isSourcePublic)\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialClientOffset\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialSourceClientOffset\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.clientOffset\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn getSourceClientOffset(this.store.getState().dragOffset)\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn getDifferenceFromInitialOffset(this.store.getState().dragOffset)\n\t}\n}\n","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t // reliably everywhere they are implemented.\n\t\t // They are implemented in all modern browsers.\n\t\t //\n\t\t // - Android 4-4.3\n\t\t // - Chrome 26-34\n\t\t // - Firefox 14-29\n\t\t // - Internet Explorer 11\n\t\t // - iPad Safari 6-7.1\n\t\t // - iPhone Safari 7-7.1\n\t\t // - Safari 6-7\n\t\t makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t // 11-12, and in web workers in many engines.\n\t\t // Although message channels yield to any queued rendering and IO tasks, they\n\t\t // would be better than imposing the 4ms delay of timers.\n\t\t // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t // not have MutationObservers.\n\t\t // Although setImmediate yields to the browser's renderer, it would be\n\t\t // preferrable to falling back to setTimeout since it does not have\n\t\t // the minimum 4ms penalty.\n\t\t // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t // Desktop to a lesser extent) that renders both setImmediate and\n\t\t // MessageChannel useless for the purposes of ASAP.\n\t\t // https://github.com/kriskowal/q/issues/396\n\n\t\t // Timers are implemented universally.\n\t\t // We fall back to timers in workers in most engines, and in foreground\n\t\t // contexts in the following browsers.\n\t\t // However, note that even this simple case requires nuances to operate in a\n\t\t // broad spectrum of browsers.\n\t\t //\n\t\t // - Firefox 3-13\n\t\t // - Internet Explorer 6-9\n\t\t // - iPad Safari 4.3\n\t\t // - Lynx 2.8.7\n\t\t makeRequestCallFromTimer\n","// We wrap tasks with recyclable task objects. A task object implements\n\nimport type { Task, TaskFn } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\nimport type { Task } from './types.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","import { RawTask } from './RawTask.js'\nimport type { Task } from './types.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","import type { Action, SourceIdPayload, TargetIdPayload } from '../interfaces.js'\n\nexport const ADD_SOURCE = 'dnd-core/ADD_SOURCE'\nexport const ADD_TARGET = 'dnd-core/ADD_TARGET'\nexport const REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE'\nexport const REMOVE_TARGET = 'dnd-core/REMOVE_TARGET'\n\nexport function addSource(sourceId: string): Action<SourceIdPayload> {\n\treturn {\n\t\ttype: ADD_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function addTarget(targetId: string): Action<TargetIdPayload> {\n\treturn {\n\t\ttype: ADD_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n\nexport function removeSource(sourceId: string): Action<SourceIdPayload> {\n\treturn {\n\t\ttype: REMOVE_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function removeTarget(targetId: string): Action<TargetIdPayload> {\n\treturn {\n\t\ttype: REMOVE_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type { DragSource, DropTarget, Identifier } from './interfaces.js'\n\nexport function validateSourceContract(source: DragSource): void {\n\tinvariant(\n\t\ttypeof source.canDrag === 'function',\n\t\t'Expected canDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.beginDrag === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.endDrag === 'function',\n\t\t'Expected endDrag to be a function.',\n\t)\n}\n\nexport function validateTargetContract(target: DropTarget): void {\n\tinvariant(\n\t\ttypeof target.canDrop === 'function',\n\t\t'Expected canDrop to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.hover === 'function',\n\t\t'Expected hover to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.drop === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n}\n\nexport function validateType(\n\ttype: Identifier | Identifier[],\n\tallowArray?: boolean,\n): void {\n\tif (allowArray && Array.isArray(type)) {\n\t\ttype.forEach((t) => validateType(t, false))\n\t\treturn\n\t}\n\n\tinvariant(\n\t\ttypeof type === 'string' || typeof type === 'symbol',\n\t\tallowArray\n\t\t\t? 'Type can only be a string, a symbol, or an array of either.'\n\t\t\t: 'Type can only be a string or a symbol.',\n\t)\n}\n","export type Identifier = string | symbol\nexport type SourceType = Identifier\nexport type TargetType = Identifier | Identifier[]\nexport type Unsubscribe = () => void\nexport type Listener = () => void\n\nexport interface XYCoord {\n\tx: number\n\ty: number\n}\n\nexport enum HandlerRole {\n\tSOURCE = 'SOURCE',\n\tTARGET = 'TARGET',\n}\n\nexport interface Backend {\n\tsetup(): void\n\tteardown(): void\n\tconnectDragSource(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDragPreview(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDropTarget(targetId: any, node?: any, options?: any): Unsubscribe\n\tprofile(): Record<string, number>\n}\n\nexport interface DragDropMonitor {\n\tsubscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: {\n\t\t\thandlerIds?: Identifier[]\n\t\t},\n\t): Unsubscribe\n\tsubscribeToOffsetChange(listener: Listener): Unsubscribe\n\tcanDragSource(sourceId: Identifier | undefined): boolean\n\tcanDropOnTarget(targetId: Identifier | undefined): boolean\n\n\t/**\n\t * Returns true if a drag operation is in progress, and either the owner initiated the drag, or its isDragging()\n\t * is defined and returns true.\n\t */\n\tisDragging(): boolean\n\tisDraggingSource(sourceId: Identifier | undefined): boolean\n\tisOverTarget(\n\t\ttargetId: Identifier | undefined,\n\t\toptions?: {\n\t\t\tshallow?: boolean\n\t\t},\n\t): boolean\n\n\t/**\n\t * Returns a string or a symbol identifying the type of the current dragged item. Returns null if no item is being dragged.\n\t */\n\tgetItemType(): Identifier | null\n\n\t/**\n\t * Returns a plain object representing the currently dragged item. Every drag source must specify it by returning an object\n\t * from its beginDrag() method. Returns null if no item is being dragged.\n\t */\n\tgetItem(): any\n\tgetSourceId(): Identifier | null\n\tgetTargetIds(): Identifier[]\n\t/**\n\t * Returns a plain object representing the last recorded drop result. The drop targets may optionally specify it by returning an\n\t * object from their drop() methods. When a chain of drop() is dispatched for the nested targets, bottom up, any parent that\n\t * explicitly returns its own result from drop() overrides the child drop result previously set by the child. Returns null if\n\t * called outside endDrag().\n\t */\n\tgetDropResult(): any\n\t/**\n\t * Returns true if some drop target has handled the drop event, false otherwise. Even if a target did not return a drop result,\n\t * didDrop() returns true. Use it inside endDrag() to test whether any drop target has handled the drop. Returns false if called\n\t * outside endDrag().\n\t */\n\tdidDrop(): boolean\n\tisSourcePublic(): boolean | null\n\t/**\n\t * Returns the { x, y } client offset of the pointer at the time when the current drag operation has started.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetInitialClientOffset(): XYCoord | null\n\t/**\n\t * Returns the { x, y } client offset of the drag source component's root DOM node at the time when the current drag\n\t * operation has started. Returns null if no item is being dragged.\n\t */\n\tgetInitialSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the last recorded { x, y } client offset of the pointer while a drag operation is in progress.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the projected { x, y } client offset of the drag source component's root DOM node, based on its position at the time\n\t * when the current drag operation has started, and the movement difference. Returns null if no item is being dragged.\n\t */\n\tgetSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the { x, y } difference between the last recorded client offset of the pointer and the client offset when the current\n\t * drag operation has started. Returns null if no item is being dragged.\n\t */\n\tgetDifferenceFromInitialOffset(): XYCoord | null\n}\n\nexport interface HandlerRegistry {\n\taddSource(type: SourceType, source: DragSource): Identifier\n\taddTarget(type: TargetType, target: DropTarget): Identifier\n\tcontainsHandler(handler: DragSource | DropTarget): boolean\n\tgetSource(sourceId: Identifier, includePinned?: boolean): DragSource\n\tgetSourceType(sourceId: Identifier): SourceType\n\tgetTargetType(targetId: Identifier): TargetType\n\tgetTarget(targetId: Identifier): DropTarget\n\tisSourceId(handlerId: Identifier): boolean\n\tisTargetId(handlerId: Identifier): boolean\n\tremoveSource(sourceId: Identifier): void\n\tremoveTarget(targetId: Identifier): void\n\tpinSource(sourceId: Identifier): void\n\tunpinSource(): void\n}\n\nexport interface Action<Payload> {\n\ttype: Identifier\n\tpayload: Payload\n}\nexport interface SentinelAction {\n\ttype: Identifier\n}\n\nexport type ActionCreator<Payload> = (args: any[]) => Action<Payload>\n\nexport interface BeginDragOptions {\n\tpublishSource?: boolean\n\tclientOffset?: XYCoord\n\tgetSourceClientOffset?: (sourceId: Identifier | undefined) => XYCoord\n}\n\nexport interface InitCoordsPayload {\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n}\n\nexport interface BeginDragPayload {\n\titemType: Identifier\n\titem: any\n\tsourceId: Identifier\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n\tisSourcePublic: boolean\n}\n\nexport interface HoverPayload {\n\ttargetIds: Identifier[]\n\tclientOffset: XYCoord | null\n}\n\nexport interface HoverOptions {\n\tclientOffset?: XYCoord\n}\n\nexport interface DropPayload {\n\tdropResult: any\n}\n\nexport interface TargetIdPayload {\n\ttargetId: Identifier\n}\n\nexport interface SourceIdPayload {\n\tsourceId: Identifier\n}\n\nexport interface DragDropActions {\n\tbeginDrag(\n\t\tsourceIds?: Identifier[],\n\t\toptions?: any,\n\t): Action<BeginDragPayload> | undefined\n\tpublishDragSource(): SentinelAction | undefined\n\thover(targetIds: Identifier[], options?: any): Action<HoverPayload>\n\tdrop(options?: any): void\n\tendDrag(): SentinelAction\n}\n\nexport interface DragDropManager {\n\tgetMonitor(): DragDropMonitor\n\tgetBackend(): Backend\n\tgetRegistry(): HandlerRegistry\n\tgetActions(): DragDropActions\n\tdispatch(action: any): void\n}\n\nexport type BackendFactory = (\n\tmanager: DragDropManager,\n\tglobalContext?: any,\n\tconfiguration?: any,\n) => Backend\n\nexport interface DragSource {\n\tbeginDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tendDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tcanDrag(monitor: DragDropMonitor, targetId: Identifier): boolean\n\tisDragging(monitor: DragDropMonitor, targetId: Identifier): boolean\n}\n\nexport interface DropTarget {\n\tcanDrop(monitor: DragDropMonitor, targetId: Identifier): boolean\n\thover(monitor: DragDropMonitor, targetId: Identifier): void\n\tdrop(monitor: DragDropMonitor, targetId: Identifier): any\n}\n","let nextUniqueId = 0\n\nexport function getNextUniqueId(): number {\n\treturn nextUniqueId++\n}\n","import { asap } from '@react-dnd/asap'\nimport { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport {\n\taddSource,\n\taddTarget,\n\tremoveSource,\n\tremoveTarget,\n} from '../actions/registry.js'\nimport {\n\tvalidateSourceContract,\n\tvalidateTargetContract,\n\tvalidateType,\n} from '../contracts.js'\nimport type {\n\tDragSource,\n\tDropTarget,\n\tHandlerRegistry,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n} from '../interfaces.js'\nimport { HandlerRole } from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport { getNextUniqueId } from '../utils/getNextUniqueId.js'\n\nfunction getNextHandlerId(role: HandlerRole): string {\n\tconst id = getNextUniqueId().toString()\n\tswitch (role) {\n\t\tcase HandlerRole.SOURCE:\n\t\t\treturn `S${id}`\n\t\tcase HandlerRole.TARGET:\n\t\t\treturn `T${id}`\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown Handler Role: ${role}`)\n\t}\n}\n\nfunction parseRoleFromHandlerId(handlerId: string) {\n\tswitch (handlerId[0]) {\n\t\tcase 'S':\n\t\t\treturn HandlerRole.SOURCE\n\t\tcase 'T':\n\t\t\treturn HandlerRole.TARGET\n\t\tdefault:\n\t\t\tthrow new Error(`Cannot parse handler ID: ${handlerId}`)\n\t}\n}\n\nfunction mapContainsValue<T>(map: Map<string, T>, searchValue: T) {\n\tconst entries = map.entries()\n\tlet isDone = false\n\tdo {\n\t\tconst {\n\t\t\tdone,\n\t\t\tvalue: [, value],\n\t\t} = entries.next()\n\t\tif (value === searchValue) {\n\t\t\treturn true\n\t\t}\n\t\tisDone = !!done\n\t} while (!isDone)\n\treturn false\n}\n\nexport class HandlerRegistryImpl implements HandlerRegistry {\n\tprivate types: Map<string, SourceType | TargetType> = new Map()\n\tprivate dragSources: Map<string, DragSource> = new Map()\n\tprivate dropTargets: Map<string, DropTarget> = new Map()\n\tprivate pinnedSourceId: string | null = null\n\tprivate pinnedSource: any = null\n\tprivate store: Store<State>\n\n\tpublic constructor(store: Store<State>) {\n\t\tthis.store = store\n\t}\n\n\tpublic addSource(type: SourceType, source: DragSource): string {\n\t\tvalidateType(type)\n\t\tvalidateSourceContract(source)\n\n\t\tconst sourceId = this.addHandler(HandlerRole.SOURCE, type, source)\n\t\tthis.store.dispatch(addSource(sourceId))\n\t\treturn sourceId\n\t}\n\n\tpublic addTarget(type: TargetType, target: DropTarget): string {\n\t\tvalidateType(type, true)\n\t\tvalidateTargetContract(target)\n\n\t\tconst targetId = this.addHandler(HandlerRole.TARGET, type, target)\n\t\tthis.store.dispatch(addTarget(targetId))\n\t\treturn targetId\n\t}\n\n\tpublic containsHandler(handler: DragSource | DropTarget): boolean {\n\t\treturn (\n\t\t\tmapContainsValue(this.dragSources, handler) ||\n\t\t\tmapContainsValue(this.dropTargets, handler)\n\t\t)\n\t}\n\n\tpublic getSource(sourceId: string, includePinned = false): DragSource {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\tconst isPinned = includePinned && sourceId === this.pinnedSourceId\n\t\tconst source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId)\n\t\treturn source\n\t}\n\n\tpublic getTarget(targetId: string): DropTarget {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.dropTargets.get(targetId) as DropTarget\n\t}\n\n\tpublic getSourceType(sourceId: string): Identifier {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\treturn this.types.get(sourceId) as Identifier\n\t}\n\n\tpublic getTargetType(targetId: string): Identifier | Identifier[] {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.types.get(targetId) as Identifier | Identifier[]\n\t}\n\n\tpublic isSourceId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.SOURCE\n\t}\n\n\tpublic isTargetId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.TARGET\n\t}\n\n\tpublic removeSource(sourceId: string): void {\n\t\tinvariant(this.getSource(sourceId), 'Expected an existing source.')\n\t\tthis.store.dispatch(removeSource(sourceId))\n\t\tasap(() => {\n\t\t\tthis.dragSources.delete(sourceId)\n\t\t\tthis.types.delete(sourceId)\n\t\t})\n\t}\n\n\tpublic removeTarget(targetId: string): void {\n\t\tinvariant(this.getTarget(targetId), 'Expected an existing target.')\n\t\tthis.store.dispatch(removeTarget(targetId))\n\t\tthis.dropTargets.delete(targetId)\n\t\tthis.types.delete(targetId)\n\t}\n\n\tpublic pinSource(sourceId: string): void {\n\t\tconst source = this.getSource(sourceId)\n\t\tinvariant(source, 'Expected an existing source.')\n\n\t\tthis.pinnedSourceId = sourceId\n\t\tthis.pinnedSource = source\n\t}\n\n\tpublic unpinSource(): void {\n\t\tinvariant(this.pinnedSource, 'No source is pinned at the time.')\n\n\t\tthis.pinnedSourceId = null\n\t\tthis.pinnedSource = null\n\t}\n\n\tprivate addHandler(\n\t\trole: HandlerRole,\n\t\ttype: SourceType | TargetType,\n\t\thandler: DragSource | DropTarget,\n\t): string {\n\t\tconst id = getNextHandlerId(role)\n\t\tthis.types.set(id, type)\n\t\tif (role === HandlerRole.SOURCE) {\n\t\t\tthis.dragSources.set(id, handler as DragSource)\n\t\t} else if (role === HandlerRole.TARGET) {\n\t\t\tthis.dropTargets.set(id, handler as DropTarget)\n\t\t}\n\t\treturn id\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\n\nexport type EqualityCheck<T> = (a: T, b: T) => boolean\nexport const strictEquality = <T>(a: T, b: T): boolean => a === b\n\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nexport function areCoordsEqual(\n\toffsetA: XYCoord | null | undefined,\n\toffsetB: XYCoord | null | undefined,\n): boolean {\n\tif (!offsetA && !offsetB) {\n\t\treturn true\n\t} else if (!offsetA || !offsetB) {\n\t\treturn false\n\t} else {\n\t\treturn offsetA.x === offsetB.x && offsetA.y === offsetB.y\n\t}\n}\n\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nexport function areArraysEqual<T>(\n\ta: T[],\n\tb: T[],\n\tisEqual: EqualityCheck<T> = strictEquality,\n): boolean {\n\tif (a.length !== b.length) {\n\t\treturn false\n\t}\n\tfor (let i = 0; i < a.length; ++i) {\n\t\tif (!isEqual(a[i] as T, b[i] as T)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\nimport { ALL, NONE } from '../utils/dirtiness.js'\nimport { areArraysEqual } from '../utils/equality.js'\nimport { xor } from '../utils/js_utils.js'\n\nexport type State = string[]\n\nexport interface DirtyHandlerIdPayload {\n\ttargetIds: string[]\n\tprevTargetIds: string[]\n}\n\nexport function reduce(\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t_state: State = NONE,\n\taction: Action<DirtyHandlerIdPayload>,\n): State {\n\tswitch (action.type) {\n\t\tcase HOVER:\n\t\t\tbreak\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\tcase REMOVE_TARGET:\n\t\tcase REMOVE_SOURCE:\n\t\t\treturn NONE\n\t\tcase BEGIN_DRAG:\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\tdefault:\n\t\t\treturn ALL\n\t}\n\n\tconst { targetIds = [], prevTargetIds = [] } = action.payload\n\tconst result = xor(targetIds, prevTargetIds)\n\tconst didChange =\n\t\tresult.length > 0 || !areArraysEqual(targetIds, prevTargetIds)\n\n\tif (!didChange) {\n\t\treturn NONE\n\t}\n\n\t// Check the target ids at the innermost position. If they are valid, add them\n\t// to the result\n\tconst prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1]\n\tconst innermostTargetId = targetIds[targetIds.length - 1]\n\tif (prevInnermostTargetId !== innermostTargetId) {\n\t\tif (prevInnermostTargetId) {\n\t\t\tresult.push(prevInnermostTargetId)\n\t\t}\n\t\tif (innermostTargetId) {\n\t\t\tresult.push(innermostTargetId)\n\t\t}\n\t}\n\n\treturn result\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tINIT_COORDS,\n} from '../actions/dragDrop/index.js'\nimport type { Action, XYCoord } from '../interfaces.js'\nimport { areCoordsEqual } from '../utils/equality.js'\n\nexport interface State {\n\tinitialSourceClientOffset: XYCoord | null\n\tinitialClientOffset: XYCoord | null\n\tclientOffset: XYCoord | null\n}\n\nconst initialState: State = {\n\tinitialSourceClientOffset: null,\n\tinitialClientOffset: null,\n\tclientOffset: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\tsourceClientOffset: XYCoord\n\t\tclientOffset: XYCoord\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase INIT_COORDS:\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\tinitialSourceClientOffset: payload.sourceClientOffset,\n\t\t\t\tinitialClientOffset: payload.clientOffset,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\tif (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\t\treturn initialState\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport { REMOVE_TARGET } from '../actions/registry.js'\nimport type { Action, Identifier } from '../interfaces.js'\nimport { without } from '../utils/js_utils.js'\n\nexport interface State {\n\titemType: Identifier | Identifier[] | null\n\titem: any\n\tsourceId: string | null\n\ttargetIds: string[]\n\tdropResult: any\n\tdidDrop: boolean\n\tisSourcePublic: boolean | null\n}\n\nconst initialState: State = {\n\titemType: null,\n\titem: null,\n\tsourceId: null,\n\ttargetIds: [],\n\tdropResult: null,\n\tdidDrop: false,\n\tisSourcePublic: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\titemType: Identifier | Identifier[]\n\t\titem: any\n\t\tsourceId: string\n\t\ttargetId: string\n\t\ttargetIds: string[]\n\t\tisSourcePublic: boolean\n\t\tdropResult: any\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: payload.itemType,\n\t\t\t\titem: payload.item,\n\t\t\t\tsourceId: payload.sourceId,\n\t\t\t\tisSourcePublic: payload.isSourcePublic,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t}\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisSourcePublic: true,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: payload.targetIds,\n\t\t\t}\n\t\tcase REMOVE_TARGET:\n\t\t\tif (state.targetIds.indexOf(payload.targetId) === -1) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: without(state.targetIds, payload.targetId),\n\t\t\t}\n\t\tcase DROP:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdropResult: payload.dropResult,\n\t\t\t\tdidDrop: true,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tcase END_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: null,\n\t\t\t\titem: null,\n\t\t\t\tsourceId: null,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t\tisSourcePublic: null,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\n\nexport type State = number\n\nexport function reduce(state: State = 0, action: Action<any>): State {\n\tswitch (action.type) {\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\t\treturn state + 1\n\t\tcase REMOVE_SOURCE:\n\t\tcase REMOVE_TARGET:\n\t\t\treturn state - 1\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","export type State = number\n\nexport function reduce(state: State = 0): State {\n\treturn state + 1\n}\n","import type { Action } from '../interfaces.js'\nimport { get } from '../utils/js_utils.js'\nimport type { State as DirtyHandlerIdsState } from './dirtyHandlerIds.js'\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds.js'\nimport type { State as DragOffsetState } from './dragOffset.js'\nimport { reduce as dragOffset } from './dragOffset.js'\nimport type { State as DragOperationState } from './dragOperation.js'\nimport { reduce as dragOperation } from './dragOperation.js'\nimport type { State as RefCountState } from './refCount.js'\nimport { reduce as refCount } from './refCount.js'\nimport type { State as StateIdState } from './stateId.js'\nimport { reduce as stateId } from './stateId.js'\n\nexport interface State {\n\tdirtyHandlerIds: DirtyHandlerIdsState\n\tdragOffset: DragOffsetState\n\trefCount: RefCountState\n\tdragOperation: DragOperationState\n\tstateId: StateIdState\n}\n\nexport function reduce(state: State = {} as State, action: Action<any>): State {\n\treturn {\n\t\tdirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n\t\t\ttype: action.type,\n\t\t\tpayload: {\n\t\t\t\t...action.payload,\n\t\t\t\tprevTargetIds: get<string[]>(state, 'dragOperation.targetIds', []),\n\t\t\t},\n\t\t}),\n\t\tdragOffset: dragOffset(state.dragOffset, action),\n\t\trefCount: refCount(state.refCount, action),\n\t\tdragOperation: dragOperation(state.dragOperation, action),\n\t\tstateId: stateId(state.stateId),\n\t}\n}\n","import type { Store } from 'redux'\nimport { createStore } from 'redux'\n\nimport { DragDropManagerImpl } from './classes/DragDropManagerImpl.js'\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl.js'\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl.js'\nimport type { BackendFactory, DragDropManager } from './interfaces.js'\nimport type { State } from './reducers/index.js'\nimport { reduce } from './reducers/index.js'\n\nexport function createDragDropManager(\n\tbackendFactory: BackendFactory,\n\tglobalContext: unknown = undefined,\n\tbackendOptions: unknown = {},\n\tdebugMode = false,\n): DragDropManager {\n\tconst store = makeStoreInstance(debugMode)\n\tconst monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store))\n\tconst manager = new DragDropManagerImpl(store, monitor)\n\tconst backend = backendFactory(manager, globalContext, backendOptions)\n\tmanager.receiveBackend(backend)\n\treturn manager\n}\n\nfunction makeStoreInstance(debugMode: boolean): Store<State> {\n\t// TODO: if we ever make a react-native version of this,\n\t// we'll need to consider how to pull off dev-tooling\n\tconst reduxDevTools =\n\t\ttypeof window !== 'undefined' &&\n\t\t(window as any).__REDUX_DEVTOOLS_EXTENSION__\n\treturn createStore(\n\t\treduce,\n\t\tdebugMode &&\n\t\t\treduxDevTools &&\n\t\t\treduxDevTools({\n\t\t\t\tname: 'dnd-core',\n\t\t\t\tinstanceId: 'dnd-core',\n\t\t\t}),\n\t)\n}\n","import type { DragDropManager } from 'dnd-core'\nimport { createContext } from 'react'\n\n/**\n * The React context type\n */\nexport interface DndContextType {\n\tdragDropManager: DragDropManager | undefined\n}\n\n/**\n * Create the React Context\n */\nexport const DndContext = createContext<DndContextType>({\n\tdragDropManager: undefined,\n})\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\nimport { createDragDropManager } from 'dnd-core'\nimport type { FC, ReactNode } from 'react'\nimport { memo, useEffect } from 'react'\n\nimport { DndContext } from './DndContext.js'\n\nexport type DndProviderProps<BackendContext, BackendOptions> =\n\t| {\n\t\t\tchildren?: ReactNode\n\t\t\tmanager: DragDropManager\n\t }\n\t| {\n\t\t\tbackend: BackendFactory\n\t\t\tchildren?: ReactNode\n\t\t\tcontext?: BackendContext\n\t\t\toptions?: BackendOptions\n\t\t\tdebugMode?: boolean\n\t }\n\nlet refCount = 0\nconst INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__')\n\n/**\n * A React component that provides the React-DnD context\n */\nexport const DndProvider: FC<DndProviderProps<unknown, unknown>> = memo(\n\tfunction DndProvider({ children, ...props }) {\n\t\tconst [manager, isGlobalInstance] = getDndContextValue(props) // memoized from props\n\t\t/**\n\t\t * If the global context was used to store the DND context\n\t\t * then where theres no more references to it we should\n\t\t * clean it up to avoid memory leaks\n\t\t */\n\t\tuseEffect(() => {\n\t\t\tif (isGlobalInstance) {\n\t\t\t\tconst context = getGlobalContext()\n\t\t\t\t++refCount\n\n\t\t\t\treturn () => {\n\t\t\t\t\tif (--refCount === 0) {\n\t\t\t\t\t\tcontext[INSTANCE_SYM] = null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn\n\t\t}, [])\n\n\t\treturn <DndContext.Provider value={manager}>{children}</DndContext.Provider>\n\t},\n)\n\nfunction getDndContextValue(props: DndProviderProps<unknown, unknown>) {\n\tif ('manager' in props) {\n\t\tconst manager = { dragDropManager: props.manager }\n\t\treturn [manager, false]\n\t}\n\n\tconst manager = createSingletonDndContext(\n\t\tprops.backend,\n\t\tprops.context,\n\t\tprops.options,\n\t\tprops.debugMode,\n\t)\n\tconst isGlobalInstance = !props.context\n\n\treturn [manager, isGlobalInstance]\n}\n\nfunction createSingletonDndContext<BackendContext, BackendOptions>(\n\tbackend: BackendFactory,\n\tcontext: BackendContext = getGlobalContext(),\n\toptions: BackendOptions,\n\tdebugMode?: boolean,\n) {\n\tconst ctx = context as any\n\tif (!ctx[INSTANCE_SYM]) {\n\t\tctx[INSTANCE_SYM] = {\n\t\t\tdragDropManager: createDragDropManager(\n\t\t\t\tbackend,\n\t\t\t\tcontext,\n\t\t\t\toptions,\n\t\t\t\tdebugMode,\n\t\t\t),\n\t\t}\n\t}\n\treturn ctx[INSTANCE_SYM]\n}\n\ndeclare const global: any\nfunction getGlobalContext() {\n\treturn typeof global !== 'undefined' ? global : (window as any)\n}\n","// cheap lodash replacements\n\nexport function memoize<T>(fn: () => T): () => T {\n\tlet result: T | null = null\n\tconst memoized = () => {\n\t\tif (result == null) {\n\t\t\tresult = fn()\n\t\t}\n\t\treturn result\n\t}\n\treturn memoized\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without<T>(items: T[], item: T) {\n\treturn items.filter((i) => i !== item)\n}\n\nexport function union<T extends string | number>(itemsA: T[], itemsB: T[]) {\n\tconst set = new Set<T>()\n\tconst insertItem = (item: T) => set.add(item)\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tset.forEach((key) => result.push(key))\n\treturn result\n}\n","import { union, without } from './utils/js_utils.js'\n\ntype NodePredicate = (node: Node | null | undefined) => boolean\n\nexport class EnterLeaveCounter {\n\tprivate entered: any[] = []\n\tprivate isNodeInDocument: NodePredicate\n\n\tpublic constructor(isNodeInDocument: NodePredicate) {\n\t\tthis.isNodeInDocument = isNodeInDocument\n\t}\n\n\tpublic enter(enteringNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tconst isNodeEntered = (node: Node): boolean =>\n\t\t\tthis.isNodeInDocument(node) &&\n\t\t\t(!node.contains || node.contains(enteringNode as Node))\n\n\t\tthis.entered = union(this.entered.filter(isNodeEntered), [enteringNode])\n\n\t\treturn previousLength === 0 && this.entered.length > 0\n\t}\n\n\tpublic leave(leavingNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tthis.entered = without(\n\t\t\tthis.entered.filter(this.isNodeInDocument),\n\t\t\tleavingNode,\n\t\t)\n\n\t\treturn previousLength > 0 && this.entered.length === 0\n\t}\n\n\tpublic reset(): void {\n\t\tthis.entered = []\n\t}\n}\n","import type { DragDropMonitor } from 'dnd-core'\n\nimport type { NativeItemConfig } from './nativeTypesConfig.js'\n\nexport class NativeDragSource {\n\tpublic item: any\n\tprivate config: NativeItemConfig\n\n\tpublic constructor(config: NativeItemConfig) {\n\t\tthis.config = config\n\t\tthis.item = {}\n\t\tthis.initializeExposedProperties()\n\t}\n\n\tprivate initializeExposedProperties() {\n\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\tObject.defineProperty(this.item, property, {\n\t\t\t\tconfigurable: true, // This is needed to allow redefining it later\n\t\t\t\tenumerable: true,\n\t\t\t\tget() {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Browser doesn't allow reading \"${property}\" until the drop event.`,\n\t\t\t\t\t)\n\t\t\t\t\treturn null\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic loadDataTransfer(dataTransfer: DataTransfer | null | undefined): void {\n\t\tif (dataTransfer) {\n\t\t\tconst newProperties: PropertyDescriptorMap = {}\n\t\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\t\tconst propertyFn = this.config.exposeProperties[property]\n\t\t\t\tif (propertyFn != null) {\n\t\t\t\t\tnewProperties[property] = {\n\t\t\t\t\t\tvalue: propertyFn(dataTransfer, this.config.matchesTypes),\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tObject.defineProperties(this.item, newProperties)\n\t\t}\n\t}\n\n\tpublic canDrag(): boolean {\n\t\treturn true\n\t}\n\n\tpublic beginDrag(): any {\n\t\treturn this.item\n\t}\n\n\tpublic isDragging(monitor: DragDropMonitor, handle: string): boolean {\n\t\treturn handle === monitor.getSourceId()\n\t}\n\n\tpublic endDrag(): void {\n\t\t// empty\n\t}\n}\n","export const FILE = '__NATIVE_FILE__'\nexport const URL = '__NATIVE_URL__'\nexport const TEXT = '__NATIVE_TEXT__'\nexport const HTML = '__NATIVE_HTML__'\n","export function getDataFromDataTransfer(\n\tdataTransfer: DataTransfer,\n\ttypesToTry: string[],\n\tdefaultValue: string,\n): string {\n\tconst result = typesToTry.reduce(\n\t\t(resultSoFar, typeToTry) => resultSoFar || dataTransfer.getData(typeToTry),\n\t\t'',\n\t)\n\n\treturn result != null ? result : defaultValue\n}\n","import * as NativeTypes from '../NativeTypes.js'\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer.js'\n\nexport interface NativeItemConfigExposePropreties {\n\t[property: string]: (\n\t\tdataTransfer: DataTransfer,\n\t\tmatchesTypes: string[],\n\t) => any\n}\n\nexport interface NativeItemConfig {\n\texposeProperties: NativeItemConfigExposePropreties\n\tmatchesTypes: string[]\n}\n\nexport const nativeTypesConfig: {\n\t[key: string]: NativeItemConfig\n} = {\n\t[NativeTypes.FILE]: {\n\t\texposeProperties: {\n\t\t\tfiles: (dataTransfer: DataTransfer): File[] =>\n\t\t\t\tArray.prototype.slice.call(dataTransfer.files),\n\t\t\titems: (dataTransfer: DataTransfer): DataTransferItemList =>\n\t\t\t\tdataTransfer.items,\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Files'],\n\t},\n\t[NativeTypes.HTML]: {\n\t\texposeProperties: {\n\t\t\thtml: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Html', 'text/html'],\n\t},\n\t[NativeTypes.URL]: {\n\t\texposeProperties: {\n\t\t\turls: (dataTransfer: DataTransfer, matchesTypes: string[]): string[] =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n'),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Url', 'text/uri-list'],\n\t},\n\t[NativeTypes.TEXT]: {\n\t\texposeProperties: {\n\t\t\ttext: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Text', 'text/plain'],\n\t},\n}\n","import { NativeDragSource } from './NativeDragSource.js'\nimport { nativeTypesConfig } from './nativeTypesConfig.js'\n\nexport function createNativeDragSource(\n\ttype: string,\n\tdataTransfer?: DataTransfer,\n): NativeDragSource {\n\tconst config = nativeTypesConfig[type]\n\tif (!config) {\n\t\tthrow new Error(`native type ${type} has no configuration`)\n\t}\n\tconst result = new NativeDragSource(config)\n\tresult.loadDataTransfer(dataTransfer)\n\treturn result\n}\n\nexport function matchNativeItemType(\n\tdataTransfer: DataTransfer | null,\n): string | null {\n\tif (!dataTransfer) {\n\t\treturn null\n\t}\n\n\tconst dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || [])\n\treturn (\n\t\tObject.keys(nativeTypesConfig).filter((nativeItemType) => {\n\t\t\tconst typeConfig = nativeTypesConfig[nativeItemType]\n\t\t\tif (!typeConfig?.matchesTypes) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn typeConfig.matchesTypes.some(\n\t\t\t\t(t) => dataTransferTypes.indexOf(t) > -1,\n\t\t\t)\n\t\t})[0] || null\n\t)\n}\n","import { memoize } from './utils/js_utils.js'\n\ndeclare global {\n\tinterface Window extends HTMLElement {\n\t\tsafari: any\n\t}\n}\n\nexport type Predicate = () => boolean\nexport const isFirefox: Predicate = memoize(() =>\n\t/firefox/i.test(navigator.userAgent),\n)\nexport const isSafari: Predicate = memoize(() => Boolean(window.safari))\n","export class MonotonicInterpolant {\n\tprivate xs: any\n\tprivate ys: any\n\tprivate c1s: any\n\tprivate c2s: any\n\tprivate c3s: any\n\n\tpublic constructor(xs: number[], ys: number[]) {\n\t\tconst { length } = xs\n\n\t\t// Rearrange xs and ys so that xs is sorted\n\t\tconst indexes = []\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tindexes.push(i)\n\t\t}\n\t\tindexes.sort((a, b) => ((xs[a] as number) < (xs[b] as number) ? -1 : 1))\n\n\t\t// Get consecutive differences and slopes\n\t\tconst dys = []\n\t\tconst dxs = []\n\t\tconst ms = []\n\t\tlet dx\n\t\tlet dy\n\t\tfor (let i = 0; i < length - 1; i++) {\n\t\t\tdx = (xs[i + 1] as number) - (xs[i] as number)\n\t\t\tdy = (ys[i + 1] as number) - (ys[i] as number)\n\t\t\tdxs.push(dx)\n\t\t\tdys.push(dy)\n\t\t\tms.push(dy / dx)\n\t\t}\n\n\t\t// Get degree-1 coefficients\n\t\tconst c1s = [ms[0]]\n\t\tfor (let i = 0; i < dxs.length - 1; i++) {\n\t\t\tconst m2 = ms[i] as number\n\t\t\tconst mNext = ms[i + 1] as number\n\t\t\tif (m2 * mNext <= 0) {\n\t\t\t\tc1s.push(0)\n\t\t\t} else {\n\t\t\t\tdx = dxs[i] as number\n\t\t\t\tconst dxNext = dxs[i + 1] as number\n\t\t\t\tconst common = dx + dxNext\n\t\t\t\tc1s.push(\n\t\t\t\t\t(3 * common) / ((common + dxNext) / m2 + (common + dx) / mNext),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tc1s.push(ms[ms.length - 1])\n\n\t\t// Get degree-2 and degree-3 coefficients\n\t\tconst c2s = []\n\t\tconst c3s = []\n\t\tlet m\n\t\tfor (let i = 0; i < c1s.length - 1; i++) {\n\t\t\tm = ms[i] as number\n\t\t\tconst c1 = c1s[i] as number\n\t\t\tconst invDx = 1 / (dxs[i] as number)\n\t\t\tconst common = c1 + (c1s[i + 1] as number) - m - m\n\t\t\tc2s.push((m - c1 - common) * invDx)\n\t\t\tc3s.push(common * invDx * invDx)\n\t\t}\n\n\t\tthis.xs = xs\n\t\tthis.ys = ys\n\t\tthis.c1s = c1s\n\t\tthis.c2s = c2s\n\t\tthis.c3s = c3s\n\t}\n\n\tpublic interpolate(x: number): number {\n\t\tconst { xs, ys, c1s, c2s, c3s } = this\n\n\t\t// The rightmost point in the dataset should give an exact result\n\t\tlet i = xs.length - 1\n\t\tif (x === xs[i]) {\n\t\t\treturn ys[i]\n\t\t}\n\n\t\t// Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\t\tlet low = 0\n\t\tlet high = c3s.length - 1\n\t\tlet mid\n\t\twhile (low <= high) {\n\t\t\tmid = Math.floor(0.5 * (low + high))\n\t\t\tconst xHere = xs[mid]\n\t\t\tif (xHere < x) {\n\t\t\t\tlow = mid + 1\n\t\t\t} else if (xHere > x) {\n\t\t\t\thigh = mid - 1\n\t\t\t} else {\n\t\t\t\treturn ys[mid]\n\t\t\t}\n\t\t}\n\t\ti = Math.max(0, high)\n\n\t\t// Interpolate\n\t\tconst diff = x - xs[i]\n\t\tconst diffSq = diff * diff\n\t\treturn ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq\n\t}\n}\n","import type { XYCoord } from 'dnd-core'\n\nimport { isFirefox, isSafari } from './BrowserDetector.js'\nimport { MonotonicInterpolant } from './MonotonicInterpolant.js'\n\nconst ELEMENT_NODE = 1\n\nexport function getNodeClientOffset(node: Node): XYCoord | null {\n\tconst el = node.nodeType === ELEMENT_NODE ? node : node.parentElement\n\n\tif (!el) {\n\t\treturn null\n\t}\n\n\tconst { top, left } = (el as HTMLElement).getBoundingClientRect()\n\treturn { x: left, y: top }\n}\n\nexport function getEventClientOffset(e: MouseEvent): XYCoord {\n\treturn {\n\t\tx: e.clientX,\n\t\ty: e.clientY,\n\t}\n}\n\nfunction isImageNode(node: any) {\n\treturn (\n\t\tnode.nodeName === 'IMG' &&\n\t\t(isFirefox() || !document.documentElement?.contains(node))\n\t)\n}\n\nfunction getDragPreviewSize(\n\tisImage: boolean,\n\tdragPreview: any,\n\tsourceWidth: number,\n\tsourceHeight: number,\n) {\n\tlet dragPreviewWidth = isImage ? dragPreview.width : sourceWidth\n\tlet dragPreviewHeight = isImage ? dragPreview.height : sourceHeight\n\n\t// Work around @2x coordinate discrepancies in browsers\n\tif (isSafari() && isImage) {\n\t\tdragPreviewHeight /= window.devicePixelRatio\n\t\tdragPreviewWidth /= window.devicePixelRatio\n\t}\n\treturn { dragPreviewWidth, dragPreviewHeight }\n}\n\nexport function getDragPreviewOffset(\n\tsourceNode: HTMLElement,\n\tdragPreview: HTMLElement,\n\tclientOffset: XYCoord,\n\tanchorPoint: { anchorX: number; anchorY: number },\n\toffsetPoint: { offsetX: number; offsetY: number },\n): XYCoord {\n\t// The browsers will use the image intrinsic size under different conditions.\n\t// Firefox only cares if it's an image, but WebKit also wants it to be detached.\n\tconst isImage = isImageNode(dragPreview)\n\tconst dragPreviewNode = isImage ? sourceNode : dragPreview\n\tconst dragPreviewNodeOffsetFromClient = getNodeClientOffset(\n\t\tdragPreviewNode,\n\t) as XYCoord\n\tconst offsetFromDragPreview = {\n\t\tx: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n\t\ty: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n\t}\n\tconst { offsetWidth: sourceWidth, offsetHeight: sourceHeight } = sourceNode\n\tconst { anchorX, anchorY } = anchorPoint\n\tconst { dragPreviewWidth, dragPreviewHeight } = getDragPreviewSize(\n\t\tisImage,\n\t\tdragPreview,\n\t\tsourceWidth,\n\t\tsourceHeight,\n\t)\n\n\tconst calculateYOffset = () => {\n\t\tconst interpolantY = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the top\n\t\t\t\toffsetFromDragPreview.y,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n\t\t\t\t// Dock to the bottom\n\t\t\t\toffsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n\t\t\t],\n\t\t)\n\t\tlet y = interpolantY.interpolate(anchorY)\n\t\t// Work around Safari 8 positioning bug\n\t\tif (isSafari() && isImage) {\n\t\t\t// We'll have to wait for @3x to see if this is entirely correct\n\t\t\ty += (window.devicePixelRatio - 1) * dragPreviewHeight\n\t\t}\n\t\treturn y\n\t}\n\n\tconst calculateXOffset = () => {\n\t\t// Interpolate coordinates depending on anchor point\n\t\t// If you know a simpler way to do this, let me know\n\t\tconst interpolantX = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the left\n\t\t\t\toffsetFromDragPreview.x,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n\t\t\t\t// Dock to the right\n\t\t\t\toffsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n\t\t\t],\n\t\t)\n\t\treturn interpolantX.interpolate(anchorX)\n\t}\n\n\t// Force offsets if specified in the options.\n\tconst { offsetX, offsetY } = offsetPoint\n\tconst isManualOffsetX = offsetX === 0 || offsetX\n\tconst isManualOffsetY = offsetY === 0 || offsetY\n\treturn {\n\t\tx: isManualOffsetX ? offsetX : calculateXOffset(),\n\t\ty: isManualOffsetY ? offsetY : calculateYOffset(),\n\t}\n}\n","import type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport class OptionsReader {\n\tpublic ownerDocument: Document | null = null\n\tprivate globalContext: HTML5BackendContext\n\tprivate optionsArgs: HTML5BackendOptions | undefined\n\n\tpublic constructor(\n\t\tglobalContext: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.globalContext = globalContext\n\t\tthis.optionsArgs = options\n\t}\n\n\tpublic get window(): Window | undefined {\n\t\tif (this.globalContext) {\n\t\t\treturn this.globalContext\n\t\t} else if (typeof window !== 'undefined') {\n\t\t\treturn window\n\t\t}\n\t\treturn undefined\n\t}\n\n\tpublic get document(): Document | undefined {\n\t\tif (this.globalContext?.document) {\n\t\t\treturn this.globalContext.document\n\t\t} else if (this.window) {\n\t\t\treturn this.window.document\n\t\t} else {\n\t\t\treturn undefined\n\t\t}\n\t}\n\n\tpublic get rootElement(): Node | undefined {\n\t\treturn this.optionsArgs?.rootElement || this.window\n\t}\n}\n","import type {\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter.js'\nimport {\n\tcreateNativeDragSource,\n\tmatchNativeItemType,\n} from './NativeDragSources/index.js'\nimport type { NativeDragSource } from './NativeDragSources/NativeDragSource.js'\nimport * as NativeTypes from './NativeTypes.js'\nimport {\n\tgetDragPreviewOffset,\n\tgetEventClientOffset,\n\tgetNodeClientOffset,\n} from './OffsetUtils.js'\nimport { OptionsReader } from './OptionsReader.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\ntype RootNode = Node & { __isReactDndBackendSetUp: boolean | undefined }\n\nexport class HTML5BackendImpl implements Backend {\n\tprivate options: OptionsReader\n\n\t// React-Dnd Components\n\tprivate actions: DragDropActions\n\tprivate monitor: DragDropMonitor\n\tprivate registry: HandlerRegistry\n\n\t// Internal State\n\tprivate enterLeaveCounter: EnterLeaveCounter\n\n\tprivate sourcePreviewNodes: Map<string, Element> = new Map()\n\tprivate sourcePreviewNodeOptions: Map<string, any> = new Map()\n\tprivate sourceNodes: Map<string, Element> = new Map()\n\tprivate sourceNodeOptions: Map<string, any> = new Map()\n\n\tprivate dragStartSourceIds: string[] | null = null\n\tprivate dropTargetIds: string[] = []\n\tprivate dragEnterTargetIds: string[] = []\n\tprivate currentNativeSource: NativeDragSource | null = null\n\tprivate currentNativeHandle: Identifier | null = null\n\tprivate currentDragSourceNode: Element | null = null\n\tprivate altKeyPressed = false\n\tprivate mouseMoveTimeoutTimer: number | null = null\n\tprivate asyncEndDragFrameId: number | null = null\n\tprivate dragOverTargetIds: string[] | null = null\n\n\tprivate lastClientOffset: XYCoord | null = null\n\tprivate hoverRafId: number | null = null\n\n\tpublic constructor(\n\t\tmanager: DragDropManager,\n\t\tglobalContext?: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.options = new OptionsReader(globalContext, options)\n\t\tthis.actions = manager.getActions()\n\t\tthis.monitor = manager.getMonitor()\n\t\tthis.registry = manager.getRegistry()\n\t\tthis.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument)\n\t}\n\n\t/**\n\t * Generate profiling statistics for the HTML5Backend.\n\t */\n\tpublic profile(): Record<string, number> {\n\t\treturn {\n\t\t\tsourcePreviewNodes: this.sourcePreviewNodes.size,\n\t\t\tsourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n\t\t\tsourceNodeOptions: this.sourceNodeOptions.size,\n\t\t\tsourceNodes: this.sourceNodes.size,\n\t\t\tdragStartSourceIds: this.dragStartSourceIds?.length || 0,\n\t\t\tdropTargetIds: this.dropTargetIds.length,\n\t\t\tdragEnterTargetIds: this.dragEnterTargetIds.length,\n\t\t\tdragOverTargetIds: this.dragOverTargetIds?.length || 0,\n\t\t}\n\t}\n\n\t// public for test\n\tpublic get window(): Window | undefined {\n\t\treturn this.options.window\n\t}\n\tpublic get document(): Document | undefined {\n\t\treturn this.options.document\n\t}\n\t/**\n\t * Get the root element to use for event subscriptions\n\t */\n\tprivate get rootElement(): Node | undefined {\n\t\treturn this.options.rootElement as Node\n\t}\n\n\tpublic setup(): void {\n\t\tconst root = this.rootElement as RootNode | undefined\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tif (root.__isReactDndBackendSetUp) {\n\t\t\tthrow new Error('Cannot have two HTML5 backends at the same time.')\n\t\t}\n\t\troot.__isReactDndBackendSetUp = true\n\t\tthis.addEventListeners(root)\n\t}\n\n\tpublic teardown(): void {\n\t\tconst root = this.rootElement as RootNode\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\troot.__isReactDndBackendSetUp = false\n\t\tthis.removeEventListeners(this.rootElement as Element)\n\t\tthis.clearCurrentDragSourceNode()\n\t\tif (this.asyncEndDragFrameId) {\n\t\t\tthis.window?.cancelAnimationFrame(this.asyncEndDragFrameId)\n\t\t}\n\t}\n\n\tpublic connectDragPreview(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourcePreviewNodeOptions.set(sourceId, options)\n\t\tthis.sourcePreviewNodes.set(sourceId, node)\n\n\t\treturn (): void => {\n\t\t\tthis.sourcePreviewNodes.delete(sourceId)\n\t\t\tthis.sourcePreviewNodeOptions.delete(sourceId)\n\t\t}\n\t}\n\n\tpublic connectDragSource(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourceNodes.set(sourceId, node)\n\t\tthis.sourceNodeOptions.set(sourceId, options)\n\n\t\tconst handleDragStart = (e: any) => this.handleDragStart(e, sourceId)\n\t\tconst handleSelectStart = (e: any) => this.handleSelectStart(e)\n\n\t\tnode.setAttribute('draggable', 'true')\n\t\tnode.addEventListener('dragstart', handleDragStart)\n\t\tnode.addEventListener('selectstart', handleSelectStart)\n\n\t\treturn (): void => {\n\t\t\tthis.sourceNodes.delete(sourceId)\n\t\t\tthis.sourceNodeOptions.delete(sourceId)\n\n\t\t\tnode.removeEventListener('dragstart', handleDragStart)\n\t\t\tnode.removeEventListener('selectstart', handleSelectStart)\n\t\t\tnode.setAttribute('draggable', 'false')\n\t\t}\n\t}\n\n\tpublic connectDropTarget(targetId: string, node: HTMLElement): Unsubscribe {\n\t\tconst handleDragEnter = (e: DragEvent) => this.handleDragEnter(e, targetId)\n\t\tconst handleDragOver = (e: DragEvent) => this.handleDragOver(e, targetId)\n\t\tconst handleDrop = (e: DragEvent) => this.handleDrop(e, targetId)\n\n\t\tnode.addEventListener('dragenter', handleDragEnter)\n\t\tnode.addEventListener('dragover', handleDragOver)\n\t\tnode.addEventListener('drop', handleDrop)\n\n\t\treturn (): void => {\n\t\t\tnode.removeEventListener('dragenter', handleDragEnter)\n\t\t\tnode.removeEventListener('dragover', handleDragOver)\n\t\t\tnode.removeEventListener('drop', handleDrop)\n\t\t}\n\t}\n\n\tprivate addEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.addEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.addEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStart as EventListener,\n\t\t)\n\t\ttarget.addEventListener('dragstart', this.handleTopDragStartCapture, true)\n\t\ttarget.addEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('dragover', this.handleTopDragOver as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate removeEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.removeEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.removeEventListener('dragstart', this.handleTopDragStart as any)\n\t\ttarget.removeEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStartCapture,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOver as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.removeEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate getCurrentSourceNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourceNodeOptions = this.sourceNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tdropEffect: this.altKeyPressed ? 'copy' : 'move',\n\t\t\t...(sourceNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getCurrentDropEffect() {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\t// It makes more sense to default to 'copy' for native resources\n\t\t\treturn 'copy'\n\t\t}\n\n\t\treturn this.getCurrentSourceNodeOptions().dropEffect\n\t}\n\n\tprivate getCurrentSourcePreviewNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tanchorX: 0.5,\n\t\t\tanchorY: 0.5,\n\t\t\tcaptureDraggingState: false,\n\t\t\t...(sourcePreviewNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getSourceClientOffset = (sourceId: string): XYCoord | null => {\n\t\tconst source = this.sourceNodes.get(sourceId)\n\t\treturn (source && getNodeClientOffset(source as HTMLElement)) || null\n\t}\n\n\tprivate isDraggingNativeItem() {\n\t\tconst itemType = this.monitor.getItemType()\n\t\treturn Object.keys(NativeTypes).some(\n\t\t\t(key: string) => (NativeTypes as any)[key] === itemType,\n\t\t)\n\t}\n\n\tprivate beginDragNativeItem(type: string, dataTransfer?: DataTransfer) {\n\t\tthis.clearCurrentDragSourceNode()\n\n\t\tthis.currentNativeSource = createNativeDragSource(type, dataTransfer)\n\t\tthis.currentNativeHandle = this.registry.addSource(\n\t\t\ttype,\n\t\t\tthis.currentNativeSource,\n\t\t)\n\t\tthis.actions.beginDrag([this.currentNativeHandle])\n\t}\n\n\tprivate endDragNativeItem = (): void => {\n\t\tif (!this.isDraggingNativeItem()) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.actions.endDrag()\n\t\tif (this.currentNativeHandle) {\n\t\t\tthis.registry.removeSource(this.currentNativeHandle)\n\t\t}\n\t\tthis.currentNativeHandle = null\n\t\tthis.currentNativeSource = null\n\t}\n\n\tprivate isNodeInDocument = (node: Node | null | undefined): boolean => {\n\t\t// Check the node either in the main document or in the current context\n\t\treturn Boolean(\n\t\t\tnode &&\n\t\t\t\tthis.document &&\n\t\t\t\tthis.document.body &&\n\t\t\t\tthis.document.body.contains(node),\n\t\t)\n\t}\n\n\tprivate endDragIfSourceWasRemovedFromDOM = (): void => {\n\t\tconst node = this.currentDragSourceNode\n\t\tif (node == null || this.isNodeInDocument(node)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tprivate setCurrentDragSourceNode(node: Element | null) {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.currentDragSourceNode = node\n\n\t\t// A timeout of > 0 is necessary to resolve Firefox issue referenced\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\tconst MOUSE_MOVE_TIMEOUT = 1000\n\n\t\t// Receiving a mouse event in the middle of a dragging operation\n\t\t// means it has ended and the drag source node disappeared from DOM,\n\t\t// so the browser didn't dispatch the dragend event.\n\t\t//\n\t\t// We need to wait before we start listening for mousemove events.\n\t\t// This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n\t\t// immediately in some browsers.\n\t\t//\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\t//\n\t\tthis.mouseMoveTimeoutTimer = setTimeout(() => {\n\t\t\treturn this.rootElement?.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\ttrue,\n\t\t\t)\n\t\t}, MOUSE_MOVE_TIMEOUT) as any as number\n\t}\n\n\tprivate clearCurrentDragSourceNode() {\n\t\tif (this.currentDragSourceNode) {\n\t\t\tthis.currentDragSourceNode = null\n\n\t\t\tif (this.rootElement) {\n\t\t\t\tthis.window?.clearTimeout(this.mouseMoveTimeoutTimer || undefined)\n\t\t\t\tthis.rootElement.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\t\ttrue,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.mouseMoveTimeoutTimer = null\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate scheduleHover = (dragOverTargetIds: string[] | null) => {\n\t\tif (\n\t\t\tthis.hoverRafId === null &&\n\t\t\ttypeof requestAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tthis.hoverRafId = requestAnimationFrame(() => {\n\t\t\t\tif (this.monitor.isDragging()) {\n\t\t\t\t\tthis.actions.hover(dragOverTargetIds || [], {\n\t\t\t\t\t\tclientOffset: this.lastClientOffset,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.hoverRafId = null\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate cancelHover = () => {\n\t\tif (\n\t\t\tthis.hoverRafId !== null &&\n\t\t\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tcancelAnimationFrame(this.hoverRafId)\n\t\t\tthis.hoverRafId = null\n\t\t}\n\t}\n\n\tpublic handleTopDragStartCapture = (): void => {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.dragStartSourceIds = []\n\t}\n\n\tpublic handleDragStart(e: DragEvent, sourceId: string): void {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.dragStartSourceIds) {\n\t\t\tthis.dragStartSourceIds = []\n\t\t}\n\t\tthis.dragStartSourceIds.unshift(sourceId)\n\t}\n\n\tpublic handleTopDragStart = (e: DragEvent): void => {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dragStartSourceIds } = this\n\t\tthis.dragStartSourceIds = null\n\n\t\tconst clientOffset = getEventClientOffset(e)\n\n\t\t// Avoid crashing if we missed a drop event or our previous drag died\n\t\tif (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t\tthis.cancelHover()\n\t\t}\n\n\t\t// Don't publish the source just yet (see why below)\n\t\tthis.actions.beginDrag(dragStartSourceIds || [], {\n\t\t\tpublishSource: false,\n\t\t\tgetSourceClientOffset: this.getSourceClientOffset,\n\t\t\tclientOffset,\n\t\t})\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (this.monitor.isDragging()) {\n\t\t\tif (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n\t\t\t\t// Use custom drag image if user specifies it.\n\t\t\t\t// If child drag source refuses drag but parent agrees,\n\t\t\t\t// use parent's node as drag image. Neither works in IE though.\n\t\t\t\tconst sourceId: string = this.monitor.getSourceId() as string\n\t\t\t\tconst sourceNode = this.sourceNodes.get(sourceId)\n\t\t\t\tconst dragPreview = this.sourcePreviewNodes.get(sourceId) || sourceNode\n\n\t\t\t\tif (dragPreview) {\n\t\t\t\t\tconst { anchorX, anchorY, offsetX, offsetY } =\n\t\t\t\t\t\tthis.getCurrentSourcePreviewNodeOptions()\n\t\t\t\t\tconst anchorPoint = { anchorX, anchorY }\n\t\t\t\t\tconst offsetPoint = { offsetX, offsetY }\n\t\t\t\t\tconst dragPreviewOffset = getDragPreviewOffset(\n\t\t\t\t\t\tsourceNode as HTMLElement,\n\t\t\t\t\t\tdragPreview as HTMLElement,\n\t\t\t\t\t\tclientOffset,\n\t\t\t\t\t\tanchorPoint,\n\t\t\t\t\t\toffsetPoint,\n\t\t\t\t\t)\n\n\t\t\t\t\tdataTransfer.setDragImage(\n\t\t\t\t\t\tdragPreview,\n\t\t\t\t\t\tdragPreviewOffset.x,\n\t\t\t\t\t\tdragPreviewOffset.y,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Firefox won't drag without setting data\n\t\t\t\tdataTransfer?.setData('application/json', {} as any)\n\t\t\t} catch (err) {\n\t\t\t\t// IE doesn't support MIME types in setData\n\t\t\t}\n\n\t\t\t// Store drag source node so we can check whether\n\t\t\t// it is removed from DOM and trigger endDrag manually.\n\t\t\tthis.setCurrentDragSourceNode(e.target as Element)\n\n\t\t\t// Now we are ready to publish the drag source.. or are we not?\n\t\t\tconst { captureDraggingState } = this.getCurrentSourcePreviewNodeOptions()\n\t\t\tif (!captureDraggingState) {\n\t\t\t\t// Usually we want to publish it in the next tick so that browser\n\t\t\t\t// is able to screenshot the current (not yet dragging) state.\n\t\t\t\t//\n\t\t\t\t// It also neatly avoids a situation where render() returns null\n\t\t\t\t// in the same tick for the source element, and browser freaks out.\n\t\t\t\tsetTimeout(() => this.actions.publishDragSource(), 0)\n\t\t\t} else {\n\t\t\t\t// In some cases the user may want to override this behavior, e.g.\n\t\t\t\t// to work around IE not supporting custom drag previews.\n\t\t\t\t//\n\t\t\t\t// When using a custom drag layer, the only way to prevent\n\t\t\t\t// the default drag preview from drawing in IE is to screenshot\n\t\t\t\t// the dragging state in which the node itself has zero opacity\n\t\t\t\t// and height. In this case, though, returning null from render()\n\t\t\t\t// will abruptly end the dragging, which is not obvious.\n\t\t\t\t//\n\t\t\t\t// This is the reason such behavior is strictly opt-in.\n\t\t\t\tthis.actions.publishDragSource()\n\t\t\t}\n\t\t} else if (nativeType) {\n\t\t\t// A native item (such as URL) dragged from inside the document\n\t\t\tthis.beginDragNativeItem(nativeType)\n\t\t} else if (\n\t\t\tdataTransfer &&\n\t\t\t!dataTransfer.types &&\n\t\t\t((e.target && !(e.target as Element).hasAttribute) ||\n\t\t\t\t!(e.target as Element).hasAttribute('draggable'))\n\t\t) {\n\t\t\t// Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n\t\t\t// Just let it drag. It's a native type (URL or text) and will be picked up in\n\t\t\t// dragenter handler.\n\t\t\treturn\n\t\t} else {\n\t\t\t// If by this time no drag source reacted, tell browser not to drag.\n\t\t\te.preventDefault()\n\t\t}\n\t}\n\n\tpublic handleTopDragEndCapture = (): void => {\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\t// Firefox can dispatch this event in an infinite loop\n\t\t\t// if dragend handler does something like showing an alert.\n\t\t\t// Only proceed if we have not handled it already.\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDragEnterCapture = (e: DragEvent): void => {\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\n\t\tconst isFirstEnter = this.enterLeaveCounter.enter(e.target)\n\t\tif (!isFirstEnter || this.monitor.isDragging()) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (nativeType) {\n\t\t\t// A native item (such as file or URL) dragged from outside the document\n\t\t\tthis.beginDragNativeItem(nativeType, dataTransfer as DataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragEnter(_e: DragEvent, targetId: string): void {\n\t\tthis.dragEnterTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragEnter = (e: DragEvent): void => {\n\t\tconst { dragEnterTargetIds } = this\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\n\t\t// If the target changes position as the result of `dragenter`, `dragover` might still\n\t\t// get dispatched despite target being no longer there. The easy solution is to check\n\t\t// whether there actually is a target before firing `hover`.\n\t\tif (dragEnterTargetIds.length > 0) {\n\t\t\tthis.actions.hover(dragEnterTargetIds, {\n\t\t\t\tclientOffset: getEventClientOffset(e),\n\t\t\t})\n\t\t}\n\n\t\tconst canDrop = dragEnterTargetIds.some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// IE requires this to fire dragover events\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragOverCapture = (e: DragEvent): void => {\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragOver(_e: DragEvent, targetId: string): void {\n\t\tif (this.dragOverTargetIds === null) {\n\t\t\tthis.dragOverTargetIds = []\n\t\t}\n\t\tthis.dragOverTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragOver = (e: DragEvent): void => {\n\t\tconst { dragOverTargetIds } = this\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\t// Prevent default \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\t\tthis.lastClientOffset = getEventClientOffset(e)\n\n\t\tthis.scheduleHover(dragOverTargetIds)\n\n\t\tconst canDrop = (dragOverTargetIds || []).some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// Show user-specified drop effect.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t} else if (this.isDraggingNativeItem()) {\n\t\t\t// Don't show a nice cursor but still prevent default\n\t\t\t// \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t} else {\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragLeaveCapture = (e: DragEvent): void => {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tconst isLastLeave = this.enterLeaveCounter.leave(e.target)\n\t\tif (!isLastLeave) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tsetTimeout(() => this.endDragNativeItem(), 0)\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDropCapture = (e: DragEvent): void => {\n\t\tthis.dropTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t} else if (matchNativeItemType(e.dataTransfer)) {\n\t\t\t// Dragging some elements, like <a> and <img> may still behave like a native drag event,\n\t\t\t// even if the current drag event matches a user-defined type.\n\t\t\t// Stop the default behavior when we're not expecting a native item to be dropped.\n\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tthis.enterLeaveCounter.reset()\n\t}\n\n\tpublic handleDrop(_e: DragEvent, targetId: string): void {\n\t\tthis.dropTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDrop = (e: DragEvent): void => {\n\t\tconst { dropTargetIds } = this\n\t\tthis.dropTargetIds = []\n\n\t\tthis.actions.hover(dropTargetIds, {\n\t\t\tclientOffset: getEventClientOffset(e),\n\t\t})\n\t\tthis.actions.drop({ dropEffect: this.getCurrentDropEffect() })\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.endDragNativeItem()\n\t\t} else if (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleSelectStart = (e: DragEvent): void => {\n\t\tconst target = e.target as HTMLElement & { dragDrop: () => void }\n\n\t\t// Only IE requires us to explicitly say\n\t\t// we want drag drop operation to start\n\t\tif (typeof target.dragDrop !== 'function') {\n\t\t\treturn\n\t\t}\n\n\t\t// Inputs and textareas should be selectable\n\t\tif (\n\t\t\ttarget.tagName === 'INPUT' ||\n\t\t\ttarget.tagName === 'SELECT' ||\n\t\t\ttarget.tagName === 'TEXTAREA' ||\n\t\t\ttarget.isContentEditable\n\t\t) {\n\t\t\treturn\n\t\t}\n\n\t\t// For other targets, ask IE\n\t\t// to enable drag and drop\n\t\te.preventDefault()\n\t\ttarget.dragDrop()\n\t}\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\n\nimport { HTML5BackendImpl } from './HTML5BackendImpl.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\nexport { getEmptyImage } from './getEmptyImage.js'\nexport * as NativeTypes from './NativeTypes.js'\nexport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport const HTML5Backend: BackendFactory = function createBackend(\n\tmanager: DragDropManager,\n\tcontext?: HTML5BackendContext,\n\toptions?: HTML5BackendOptions,\n): HTML5BackendImpl {\n\treturn new HTML5BackendImpl(manager, context, options)\n}\n","import { useEffect, useLayoutEffect } from 'react'\n\n// suppress the useLayoutEffect warning on server side.\nexport const useIsomorphicLayoutEffect =\n\ttypeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useCollector } from './useCollector.js'\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\nexport function useMonitorOutput<Monitor extends HandlerManager, Collected>(\n\tmonitor: Monitor & MonitorEventEmitter,\n\tcollect: (monitor: Monitor) => Collected,\n\tonCollect?: () => void,\n): Collected {\n\tconst [collected, updateCollected] = useCollector(monitor, collect, onCollect)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction subscribeToMonitorStateChange() {\n\t\t\tconst handlerId = monitor.getHandlerId()\n\t\t\tif (handlerId == null) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn monitor.subscribeToStateChange(updateCollected, {\n\t\t\t\thandlerIds: [handlerId],\n\t\t\t})\n\t\t},\n\t\t[monitor, updateCollected],\n\t)\n\n\treturn collected\n}\n","import equal from 'fast-deep-equal'\nimport { useCallback, useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\nexport function useCollector<T, S>(\n\tmonitor: T,\n\tcollect: (monitor: T) => S,\n\tonUpdate?: () => void,\n): [S, () => void] {\n\tconst [collected, setCollected] = useState(() => collect(monitor))\n\n\tconst updateCollected = useCallback(() => {\n\t\tconst nextValue = collect(monitor)\n\t\t// This needs to be a deep-equality check because some monitor-collected values\n\t\t// include XYCoord objects that may be equivalent, but do not have instance equality.\n\t\tif (!equal(collected, nextValue)) {\n\t\t\tsetCollected(nextValue)\n\t\t\tif (onUpdate) {\n\t\t\t\tonUpdate()\n\t\t\t}\n\t\t}\n\t}, [collected, monitor, onUpdate])\n\n\t// update the collected properties after react renders.\n\t// Note that the \"Dustbin Stress Test\" fails if this is not\n\t// done when the component updates\n\tuseIsomorphicLayoutEffect(updateCollected)\n\n\treturn [collected, updateCollected]\n}\n","import type { Connector } from '../internals/index.js'\nimport type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useMonitorOutput } from './useMonitorOutput.js'\n\nexport function useCollectedProps<Collected, Monitor extends HandlerManager>(\n\tcollector: ((monitor: Monitor) => Collected) | undefined,\n\tmonitor: Monitor & MonitorEventEmitter,\n\tconnector: Connector,\n) {\n\treturn useMonitorOutput(monitor, collector || (() => ({} as Collected)), () =>\n\t\tconnector.reconnect(),\n\t)\n}\n","import { useMemo } from 'react'\n\nimport type { FactoryOrInstance } from './types.js'\n\nexport function useOptionalFactory<T>(\n\targ: FactoryOrInstance<T>,\n\tdeps?: unknown[],\n): T {\n\tconst memoDeps = [...(deps || [])]\n\tif (deps == null && typeof arg !== 'function') {\n\t\tmemoDeps.push(arg)\n\t}\n\treturn useMemo<T>(() => {\n\t\treturn typeof arg === 'function' ? (arg as () => T)() : (arg as T)\n\t}, memoDeps)\n}\n","import { useMemo } from 'react'\n\nimport type { TargetConnector } from '../../internals/index.js'\n\nexport function useConnectDropTarget(connector: TargetConnector) {\n\treturn useMemo(() => connector.hooks.dropTarget(), [connector])\n}\n","export function shallowEqual<T>(\n\tobjA: T,\n\tobjB: T,\n\tcompare?: (a: T, b: T, key?: string) => boolean | void,\n\tcompareContext?: any,\n) {\n\tlet compareResult = compare\n\t\t? compare.call(compareContext, objA, objB)\n\t\t: void 0\n\tif (compareResult !== void 0) {\n\t\treturn !!compareResult\n\t}\n\n\tif (objA === objB) {\n\t\treturn true\n\t}\n\n\tif (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n\t\treturn false\n\t}\n\n\tconst keysA = Object.keys(objA)\n\tconst keysB = Object.keys(objB)\n\n\tif (keysA.length !== keysB.length) {\n\t\treturn false\n\t}\n\n\tconst bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB)\n\n\t// Test for A's keys different from B.\n\tfor (let idx = 0; idx < keysA.length; idx++) {\n\t\tconst key = keysA[idx] as string\n\n\t\tif (!bHasOwnProperty(key)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst valueA = (objA as any)[key]\n\t\tconst valueB = (objB as any)[key]\n\n\t\tcompareResult = compare\n\t\t\t? compare.call(compareContext, valueA, valueB, key)\n\t\t\t: void 0\n\n\t\tif (\n\t\t\tcompareResult === false ||\n\t\t\t(compareResult === void 0 && valueA !== valueB)\n\t\t) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n","export interface Ref<T> {\n\tcurrent: T\n}\n\nexport function isRef(obj: unknown): boolean {\n\treturn (\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tobj !== null &&\n\t\ttypeof obj === 'object' &&\n\t\tObject.prototype.hasOwnProperty.call(obj, 'current')\n\t)\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { ReactElement } from 'react'\nimport { cloneElement, isValidElement } from 'react'\n\nfunction throwIfCompositeComponentElement(element: ReactElement<any>) {\n\t// Custom components can no longer be wrapped directly in React DnD 2.0\n\t// so that we don't need to depend on findDOMNode() from react-dom.\n\tif (typeof element.type === 'string') {\n\t\treturn\n\t}\n\n\tconst displayName =\n\t\t(element.type as any).displayName || element.type.name || 'the component'\n\n\tthrow new Error(\n\t\t'Only native element nodes can now be passed to React DnD connectors.' +\n\t\t\t`You can either wrap ${displayName} into a <div>, or turn it into a ` +\n\t\t\t'drag source or a drop target itself.',\n\t)\n}\n\nfunction wrapHookToRecognizeElement(hook: (node: any, options: any) => void) {\n\treturn (elementOrNode = null, options = null) => {\n\t\t// When passed a node, call the hook straight away.\n\t\tif (!isValidElement(elementOrNode)) {\n\t\t\tconst node = elementOrNode\n\t\t\thook(node, options)\n\t\t\t// return the node so it can be chained (e.g. when within callback refs\n\t\t\t// <div ref={node => connectDragSource(connectDropTarget(node))}/>\n\t\t\treturn node\n\t\t}\n\n\t\t// If passed a ReactElement, clone it and attach this function as a ref.\n\t\t// This helps us achieve a neat API where user doesn't even know that refs\n\t\t// are being used under the hood.\n\t\tconst element: ReactElement | null = elementOrNode\n\t\tthrowIfCompositeComponentElement(element as any)\n\n\t\t// When no options are passed, use the hook directly\n\t\tconst ref = options ? (node: Element) => hook(node, options) : hook\n\t\treturn cloneWithRef(element, ref)\n\t}\n}\n\nexport function wrapConnectorHooks(hooks: any) {\n\tconst wrappedHooks: any = {}\n\n\tObject.keys(hooks).forEach((key) => {\n\t\tconst hook = hooks[key]\n\n\t\t// ref objects should be passed straight through without wrapping\n\t\tif (key.endsWith('Ref')) {\n\t\t\twrappedHooks[key] = hooks[key]\n\t\t} else {\n\t\t\tconst wrappedHook = wrapHookToRecognizeElement(hook)\n\t\t\twrappedHooks[key] = () => wrappedHook\n\t\t}\n\t})\n\n\treturn wrappedHooks\n}\n\nfunction setRef(ref: any, node: any) {\n\tif (typeof ref === 'function') {\n\t\tref(node)\n\t} else {\n\t\tref.current = node\n\t}\n}\n\nfunction cloneWithRef(element: any, newRef: any): ReactElement<any> {\n\tconst previousRef = element.ref\n\tinvariant(\n\t\ttypeof previousRef !== 'string',\n\t\t'Cannot connect React DnD to an element with an existing string ref. ' +\n\t\t\t'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' +\n\t\t\t'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs',\n\t)\n\n\tif (!previousRef) {\n\t\t// When there is no ref on the element, use the new ref directly\n\t\treturn cloneElement(element, {\n\t\t\tref: newRef,\n\t\t})\n\t} else {\n\t\treturn cloneElement(element, {\n\t\t\tref: (node: any) => {\n\t\t\t\tsetRef(previousRef, node)\n\t\t\t\tsetRef(newRef, node)\n\t\t\t},\n\t\t})\n\t}\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { RefObject } from 'react'\n\nimport type { DropTargetOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport type { Connector } from './SourceConnector.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport class TargetConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdropTarget: (node: any, options: DropTargetOptions) => {\n\t\t\tthis.clearDropTarget()\n\t\t\tthis.dropTargetOptions = options\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dropTargetRef = node\n\t\t\t} else {\n\t\t\t\tthis.dropTargetNode = node\n\t\t\t}\n\t\t\tthis.reconnect()\n\t\t},\n\t})\n\n\tprivate handlerId: Identifier | null = null\n\t// The drop target may either be attached via ref or connect function\n\tprivate dropTargetRef: RefObject<any> | null = null\n\tprivate dropTargetNode: any\n\tprivate dropTargetOptionsInternal: DropTargetOptions | null = null\n\tprivate unsubscribeDropTarget: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDropTarget: any = null\n\tprivate lastConnectedDropTargetOptions: DropTargetOptions | null = null\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dropTarget\n\t}\n\n\tpublic reconnect(): void {\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didDropTargetChange() ||\n\t\t\tthis.didOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDropTarget()\n\t\t}\n\n\t\tconst dropTarget = this.dropTarget\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dropTarget) {\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\tthis.lastConnectedDropTargetOptions = this.dropTargetOptions\n\n\t\t\tthis.unsubscribeDropTarget = this.backend.connectDropTarget(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdropTarget,\n\t\t\t\tthis.dropTargetOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (newHandlerId === this.handlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get dropTargetOptions(): DropTargetOptions {\n\t\treturn this.dropTargetOptionsInternal\n\t}\n\tpublic set dropTargetOptions(options: DropTargetOptions) {\n\t\tthis.dropTargetOptionsInternal = options\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didDropTargetChange(): boolean {\n\t\treturn this.lastConnectedDropTarget !== this.dropTarget\n\t}\n\n\tprivate didOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDropTargetOptions,\n\t\t\tthis.dropTargetOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDropTarget() {\n\t\tif (this.unsubscribeDropTarget) {\n\t\t\tthis.unsubscribeDropTarget()\n\t\t\tthis.unsubscribeDropTarget = undefined\n\t\t}\n\t}\n\n\tprivate get dropTarget() {\n\t\treturn (\n\t\t\tthis.dropTargetNode || (this.dropTargetRef && this.dropTargetRef.current)\n\t\t)\n\t}\n\n\tprivate clearDropTarget() {\n\t\tthis.dropTargetRef = null\n\t\tthis.dropTargetNode = null\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { DragDropManager } from 'dnd-core'\nimport { useContext } from 'react'\n\nimport { DndContext } from '../core/index.js'\n\n/**\n * A hook to retrieve the DragDropManager from Context\n */\nexport function useDragDropManager(): DragDropManager {\n\tconst { dragDropManager } = useContext(DndContext)\n\tinvariant(dragDropManager != null, 'Expected drag drop context')\n\treturn dragDropManager as DragDropManager\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../types/index.js'\n\nlet isCallingCanDrop = false\n\nexport class DropTargetMonitorImpl implements DropTargetMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate targetId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(targetId: Identifier | null): void {\n\t\tthis.targetId = targetId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.targetId\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic canDrop(): boolean {\n\t\t// Cut out early if the target id has not been set. This should prevent errors\n\t\t// where the user has an older version of dnd-core like in\n\t\t// https://github.com/react-dnd/react-dnd/issues/1310\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingCanDrop,\n\t\t\t'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrop = true\n\t\t\treturn this.internalMonitor.canDropOnTarget(this.targetId)\n\t\t} finally {\n\t\t\tisCallingCanDrop = false\n\t\t}\n\t}\n\n\tpublic isOver(options?: { shallow?: boolean }): boolean {\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\treturn this.internalMonitor.isOverTarget(this.targetId, options)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import type { DropTarget } from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\n\nexport class DropTargetImpl<O, R, P> implements DropTarget {\n\tpublic constructor(\n\t\tpublic spec: DropTargetHookSpec<O, R, P>,\n\t\tprivate monitor: DropTargetMonitor<O, R>,\n\t) {}\n\n\tpublic canDrop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\treturn spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true\n\t}\n\n\tpublic hover() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.hover) {\n\t\t\tspec.hover(monitor.getItem(), monitor)\n\t\t}\n\t}\n\n\tpublic drop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.drop) {\n\t\t\treturn spec.drop(monitor.getItem(), monitor)\n\t\t}\n\t\treturn\n\t}\n}\n","import type { TargetConnector } from '../../internals/index.js'\nimport { registerTarget } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useAccept } from './useAccept.js'\nimport { useDropTarget } from './useDropTarget.js'\n\nexport function useRegisteredDropTarget<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n\tmonitor: DropTargetMonitor<O, R>,\n\tconnector: TargetConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst dropTarget = useDropTarget(spec, monitor)\n\tconst accept = useAccept(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDropTarget() {\n\t\t\tconst [handlerId, unregister] = registerTarget(\n\t\t\t\taccept,\n\t\t\t\tdropTarget,\n\t\t\t\tmanager,\n\t\t\t)\n\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\treturn unregister\n\t\t},\n\t\t[\n\t\t\tmanager,\n\t\t\tmonitor,\n\t\t\tdropTarget,\n\t\t\tconnector,\n\t\t\taccept.map((a) => a.toString()).join('|'),\n\t\t],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { DropTargetImpl } from './DropTargetImpl.js'\n\nexport function useDropTarget<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n\tmonitor: DropTargetMonitor<O, R>,\n) {\n\tconst dropTarget = useMemo(() => new DropTargetImpl(spec, monitor), [monitor])\n\tuseEffect(() => {\n\t\tdropTarget.spec = spec\n\t}, [spec])\n\treturn dropTarget\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DropTargetHookSpec } from '../types.js'\n\n/**\n * Internal utility hook to get an array-version of spec.accept.\n * The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.\n * @param spec\n */\nexport function useAccept<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n): Identifier[] {\n\tconst { accept } = spec\n\treturn useMemo(() => {\n\t\tinvariant(spec.accept != null, 'accept must be defined')\n\t\treturn Array.isArray(accept) ? accept : [accept]\n\t}, [accept])\n}\n","import type {\n\tDragDropManager,\n\tDragSource,\n\tDropTarget,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n\tUnsubscribe,\n} from 'dnd-core'\n\nexport function registerTarget(\n\ttype: TargetType,\n\ttarget: DropTarget,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst targetId = registry.addTarget(type, target)\n\n\treturn [targetId, () => registry.removeTarget(targetId)]\n}\n\nexport function registerSource(\n\ttype: SourceType,\n\tsource: DragSource,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst sourceId = registry.addSource(type, source)\n\n\treturn [sourceId, () => registry.removeSource(sourceId)]\n}\n","import type { ConnectDropTarget } from '../../types/index.js'\nimport type { DropTargetHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDropTarget } from './connectors.js'\nimport { useDropTargetConnector } from './useDropTargetConnector.js'\nimport { useDropTargetMonitor } from './useDropTargetMonitor.js'\nimport { useRegisteredDropTarget } from './useRegisteredDropTarget.js'\n\n/**\n * useDropTarget Hook\n * @param spec The drop target specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrop<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDropTargetHookSpec<DragObject, DropResult, CollectedProps>\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDropTarget] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tconst monitor = useDropTargetMonitor<DragObject, DropResult>()\n\tconst connector = useDropTargetConnector(spec.options)\n\tuseRegisteredDropTarget(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDropTarget(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DropTargetMonitorImpl } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDropTargetMonitor<O, R>(): DropTargetMonitor<O, R> {\n\tconst manager = useDragDropManager()\n\treturn useMemo(() => new DropTargetMonitorImpl(manager), [manager])\n}\n","import { useMemo } from 'react'\n\nimport { TargetConnector } from '../../internals/index.js'\nimport type { DropTargetOptions } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDropTargetConnector(\n\toptions: DropTargetOptions,\n): TargetConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new TargetConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dropTargetOptions = options || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDropTarget()\n\t}, [options])\n\treturn connector\n}\n","import { useMemo } from 'react'\n\nimport type { SourceConnector } from '../../internals/index.js'\n\nexport function useConnectDragSource(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragSource(), [connector])\n}\n\nexport function useConnectDragPreview(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragPreview(), [connector])\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { ReactElement, Ref, RefObject } from 'react'\n\nimport type { DragPreviewOptions, DragSourceOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport interface Connector {\n\thooks: any\n\tconnectTarget: any\n\treceiveHandlerId(handlerId: Identifier | null): void\n\treconnect(): void\n}\n\nexport class SourceConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdragSource: (\n\t\t\tnode: Element | ReactElement | Ref<any>,\n\t\t\toptions?: DragSourceOptions,\n\t\t) => {\n\t\t\tthis.clearDragSource()\n\t\t\tthis.dragSourceOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragSourceRef = node as RefObject<any>\n\t\t\t} else {\n\t\t\t\tthis.dragSourceNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragSource()\n\t\t},\n\t\tdragPreview: (node: any, options?: DragPreviewOptions) => {\n\t\t\tthis.clearDragPreview()\n\t\t\tthis.dragPreviewOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragPreviewRef = node\n\t\t\t} else {\n\t\t\t\tthis.dragPreviewNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragPreview()\n\t\t},\n\t})\n\tprivate handlerId: Identifier | null = null\n\n\t// The drop target may either be attached via ref or connect function\n\tprivate dragSourceRef: RefObject<any> | null = null\n\tprivate dragSourceNode: any\n\tprivate dragSourceOptionsInternal: DragSourceOptions | null = null\n\tprivate dragSourceUnsubscribe: Unsubscribe | undefined\n\n\t// The drag preview may either be attached via ref or connect function\n\tprivate dragPreviewRef: RefObject<any> | null = null\n\tprivate dragPreviewNode: any\n\tprivate dragPreviewOptionsInternal: DragPreviewOptions | null = null\n\tprivate dragPreviewUnsubscribe: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDragSource: any = null\n\tprivate lastConnectedDragSourceOptions: any = null\n\tprivate lastConnectedDragPreview: any = null\n\tprivate lastConnectedDragPreviewOptions: any = null\n\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (this.handlerId === newHandlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dragSource\n\t}\n\n\tpublic get dragSourceOptions(): DragSourceOptions | null {\n\t\treturn this.dragSourceOptionsInternal\n\t}\n\tpublic set dragSourceOptions(options: DragSourceOptions | null) {\n\t\tthis.dragSourceOptionsInternal = options\n\t}\n\n\tpublic get dragPreviewOptions(): DragPreviewOptions | null {\n\t\treturn this.dragPreviewOptionsInternal\n\t}\n\n\tpublic set dragPreviewOptions(options: DragPreviewOptions | null) {\n\t\tthis.dragPreviewOptionsInternal = options\n\t}\n\n\tpublic reconnect(): void {\n\t\tconst didChange = this.reconnectDragSource()\n\t\tthis.reconnectDragPreview(didChange)\n\t}\n\n\tprivate reconnectDragSource(): boolean {\n\t\tconst dragSource = this.dragSource\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragSourceChange() ||\n\t\t\tthis.didDragSourceOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragSource()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn didChange\n\t\t}\n\t\tif (!dragSource) {\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\treturn didChange\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\tthis.lastConnectedDragSourceOptions = this.dragSourceOptions\n\t\t\tthis.dragSourceUnsubscribe = this.backend.connectDragSource(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragSource,\n\t\t\t\tthis.dragSourceOptions,\n\t\t\t)\n\t\t}\n\t\treturn didChange\n\t}\n\n\tprivate reconnectDragPreview(forceDidChange = false): void {\n\t\tconst dragPreview = this.dragPreview\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tforceDidChange ||\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragPreviewChange() ||\n\t\t\tthis.didDragPreviewOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragPreview()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dragPreview) {\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\tthis.lastConnectedDragPreviewOptions = this.dragPreviewOptions\n\t\t\tthis.dragPreviewUnsubscribe = this.backend.connectDragPreview(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragPreview,\n\t\t\t\tthis.dragPreviewOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didConnectedDragSourceChange(): boolean {\n\t\treturn this.lastConnectedDragSource !== this.dragSource\n\t}\n\n\tprivate didConnectedDragPreviewChange(): boolean {\n\t\treturn this.lastConnectedDragPreview !== this.dragPreview\n\t}\n\n\tprivate didDragSourceOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragSourceOptions,\n\t\t\tthis.dragSourceOptions,\n\t\t)\n\t}\n\n\tprivate didDragPreviewOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragPreviewOptions,\n\t\t\tthis.dragPreviewOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDragSource() {\n\t\tif (this.dragSourceUnsubscribe) {\n\t\t\tthis.dragSourceUnsubscribe()\n\t\t\tthis.dragSourceUnsubscribe = undefined\n\t\t}\n\t}\n\n\tpublic disconnectDragPreview() {\n\t\tif (this.dragPreviewUnsubscribe) {\n\t\t\tthis.dragPreviewUnsubscribe()\n\t\t\tthis.dragPreviewUnsubscribe = undefined\n\t\t\tthis.dragPreviewNode = null\n\t\t\tthis.dragPreviewRef = null\n\t\t}\n\t}\n\n\tprivate get dragSource() {\n\t\treturn (\n\t\t\tthis.dragSourceNode || (this.dragSourceRef && this.dragSourceRef.current)\n\t\t)\n\t}\n\n\tprivate get dragPreview() {\n\t\treturn (\n\t\t\tthis.dragPreviewNode ||\n\t\t\t(this.dragPreviewRef && this.dragPreviewRef.current)\n\t\t)\n\t}\n\n\tprivate clearDragSource() {\n\t\tthis.dragSourceNode = null\n\t\tthis.dragSourceRef = null\n\t}\n\n\tprivate clearDragPreview() {\n\t\tthis.dragPreviewNode = null\n\t\tthis.dragPreviewRef = null\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DragSourceMonitor } from '../types/index.js'\n\nlet isCallingCanDrag = false\nlet isCallingIsDragging = false\n\nexport class DragSourceMonitorImpl implements DragSourceMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate sourceId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(sourceId: Identifier | null): void {\n\t\tthis.sourceId = sourceId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.sourceId\n\t}\n\n\tpublic canDrag(): boolean {\n\t\tinvariant(\n\t\t\t!isCallingCanDrag,\n\t\t\t'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrag = true\n\t\t\treturn this.internalMonitor.canDragSource(this.sourceId as Identifier)\n\t\t} finally {\n\t\t\tisCallingCanDrag = false\n\t\t}\n\t}\n\n\tpublic isDragging(): boolean {\n\t\tif (!this.sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingIsDragging,\n\t\t\t'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingIsDragging = true\n\t\t\treturn this.internalMonitor.isDraggingSource(this.sourceId)\n\t\t} finally {\n\t\t\tisCallingIsDragging = false\n\t\t}\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic isDraggingSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.isDraggingSource(sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: Identifier,\n\t\toptions?: { shallow: boolean },\n\t): boolean {\n\t\treturn this.internalMonitor.isOverTarget(targetId, options)\n\t}\n\n\tpublic getTargetIds(): Identifier[] {\n\t\treturn this.internalMonitor.getTargetIds()\n\t}\n\n\tpublic isSourcePublic(): boolean | null {\n\t\treturn this.internalMonitor.isSourcePublic()\n\t}\n\n\tpublic getSourceId(): Identifier | null {\n\t\treturn this.internalMonitor.getSourceId()\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToOffsetChange(listener)\n\t}\n\n\tpublic canDragSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDragSource(sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDropOnTarget(targetId)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import type { DragDropMonitor, DragSource, Identifier } from 'dnd-core'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragObjectFactory, DragSourceHookSpec } from '../types.js'\n\nexport class DragSourceImpl<O, R, P> implements DragSource {\n\tpublic constructor(\n\t\tpublic spec: DragSourceHookSpec<O, R, P>,\n\t\tprivate monitor: DragSourceMonitor<O, R>,\n\t\tprivate connector: Connector,\n\t) {}\n\n\tpublic beginDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\n\t\tlet result: O | null = null\n\t\tif (typeof spec.item === 'object') {\n\t\t\tresult = spec.item as O\n\t\t} else if (typeof spec.item === 'function') {\n\t\t\tresult = (spec.item as DragObjectFactory<O>)(monitor)\n\t\t} else {\n\t\t\tresult = {} as O\n\t\t}\n\t\treturn result ?? null\n\t}\n\n\tpublic canDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (typeof spec.canDrag === 'boolean') {\n\t\t\treturn spec.canDrag\n\t\t} else if (typeof spec.canDrag === 'function') {\n\t\t\treturn spec.canDrag(monitor)\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tpublic isDragging(globalMonitor: DragDropMonitor, target: Identifier) {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst { isDragging } = spec\n\t\treturn isDragging\n\t\t\t? isDragging(monitor)\n\t\t\t: target === globalMonitor.getSourceId()\n\t}\n\n\tpublic endDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst connector = this.connector\n\t\tconst { end } = spec\n\t\tif (end) {\n\t\t\tend(monitor.getItem(), monitor)\n\t\t}\n\t\tconnector.reconnect()\n\t}\n}\n","import type { SourceConnector } from '../../internals/index.js'\nimport { registerSource } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useDragSource } from './useDragSource.js'\nimport { useDragType } from './useDragType.js'\n\nexport function useRegisteredDragSource<O, R, P>(\n\tspec: DragSourceHookSpec<O, R, P>,\n\tmonitor: DragSourceMonitor<O, R>,\n\tconnector: SourceConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst handler = useDragSource(spec, monitor, connector)\n\tconst itemType = useDragType(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDragSource() {\n\t\t\tif (itemType != null) {\n\t\t\t\tconst [handlerId, unregister] = registerSource(\n\t\t\t\t\titemType,\n\t\t\t\t\thandler,\n\t\t\t\t\tmanager,\n\t\t\t\t)\n\t\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\t\treturn unregister\n\t\t\t}\n\t\t\treturn\n\t\t},\n\t\t[manager, monitor, connector, handler, itemType],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { DragSourceImpl } from './DragSourceImpl.js'\n\nexport function useDragSource<O, R, P>(\n\tspec: DragSourceHookSpec<O, R, P>,\n\tmonitor: DragSourceMonitor<O, R>,\n\tconnector: Connector,\n) {\n\tconst handler = useMemo(\n\t\t() => new DragSourceImpl(spec, monitor, connector),\n\t\t[monitor, connector],\n\t)\n\tuseEffect(() => {\n\t\thandler.spec = spec\n\t}, [spec])\n\treturn handler\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DragSourceHookSpec } from '../types.js'\n\nexport function useDragType(\n\tspec: DragSourceHookSpec<any, any, any>,\n): Identifier {\n\treturn useMemo(() => {\n\t\tconst result: Identifier = spec.type\n\t\tinvariant(result != null, 'spec.type must be defined')\n\t\treturn result\n\t}, [spec])\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tConnectDragPreview,\n\tConnectDragSource,\n} from '../../types/index.js'\nimport type { DragSourceHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDragPreview, useConnectDragSource } from './connectors.js'\nimport { useDragSourceConnector } from './useDragSourceConnector.js'\nimport { useDragSourceMonitor } from './useDragSourceMonitor.js'\nimport { useRegisteredDragSource } from './useRegisteredDragSource.js'\n\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrag<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDragSourceHookSpec<DragObject, DropResult, CollectedProps>\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDragSource, ConnectDragPreview] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tinvariant(\n\t\t!(spec as any).begin,\n\t\t`useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)`,\n\t)\n\n\tconst monitor = useDragSourceMonitor<DragObject, DropResult>()\n\tconst connector = useDragSourceConnector(spec.options, spec.previewOptions)\n\tuseRegisteredDragSource(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDragSource(connector),\n\t\tuseConnectDragPreview(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DragSourceMonitorImpl } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDragSourceMonitor<O, R>(): DragSourceMonitor<O, R> {\n\tconst manager = useDragDropManager()\n\treturn useMemo<DragSourceMonitor<O, R>>(\n\t\t() => new DragSourceMonitorImpl(manager),\n\t\t[manager],\n\t)\n}\n","import { useMemo } from 'react'\n\nimport { SourceConnector } from '../../internals/index.js'\nimport type {\n\tDragPreviewOptions,\n\tDragSourceOptions,\n} from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDragSourceConnector(\n\tdragSourceOptions: DragSourceOptions | undefined,\n\tdragPreviewOptions: DragPreviewOptions | undefined,\n): SourceConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new SourceConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragSourceOptions = dragSourceOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragSource()\n\t}, [connector, dragSourceOptions])\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragPreviewOptions = dragPreviewOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragPreview()\n\t}, [connector, dragPreviewOptions])\n\treturn connector\n}\n","export const ItemTypes = {\r\n CARD: 'card',\r\n}\r\n","import { routeForResourceType } from '@/utils/helpers'\r\nimport type { Identifier, XYCoord } from 'dnd-core'\r\nimport type { FC } from 'react'\r\nimport { useRef } from 'react'\r\nimport { useDrag, useDrop } from 'react-dnd'\r\nimport { Card, CardBody, CardImg, CardText, CardTitle, CloseButton } from 'reactstrap'\r\n\r\nimport { PromotedType } from '../../lib/DoomCentral'\r\nimport { ItemTypes } from './ItemTypes'\r\n\r\nexport interface CardProps {\r\n id: any\r\n title: string\r\n blurb: string\r\n url: string\r\n type: PromotedType\r\n index: number\r\n deletePromotion: (index: number) => void\r\n moveCard: (dragIndex: number, hoverIndex: number) => void\r\n}\r\n\r\ninterface DragItem {\r\n index: number\r\n id: string\r\n type: string\r\n}\r\n\r\nexport const PromotionItem: FC<CardProps> = ({ id, title, blurb, url, type, index, moveCard, deletePromotion }) => {\r\n const ref = useRef<HTMLDivElement>(null)\r\n const [{ handlerId }, drop] = useDrop<DragItem, void, { handlerId: Identifier | null }>({\r\n accept: ItemTypes.CARD,\r\n collect(monitor) {\r\n return {\r\n handlerId: monitor.getHandlerId(),\r\n }\r\n },\r\n hover(item: DragItem, monitor) {\r\n if (!ref.current) {\r\n return\r\n }\r\n const dragIndex = item.index\r\n const hoverIndex = index\r\n\r\n // Don't replace items with themselves\r\n if (dragIndex === hoverIndex) {\r\n return\r\n }\r\n\r\n // Determine rectangle on screen\r\n const hoverBoundingRect = ref.current?.getBoundingClientRect()\r\n\r\n // Get vertical middle\r\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2\r\n\r\n // Determine mouse position\r\n const clientOffset = monitor.getClientOffset()\r\n\r\n // Get pixels to the top\r\n const hoverClientY = (clientOffset as XYCoord).y - hoverBoundingRect.top\r\n\r\n // Only perform the move when the mouse has crossed half of the items height\r\n // When dragging downwards, only move when the cursor is below 50%\r\n // When dragging upwards, only move when the cursor is above 50%\r\n\r\n // Dragging downwards\r\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\r\n return\r\n }\r\n\r\n // Dragging upwards\r\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\r\n return\r\n }\r\n\r\n // Time to actually perform the action\r\n moveCard(dragIndex, hoverIndex)\r\n\r\n // Note: we're mutating the monitor item here!\r\n // Generally it's better to avoid mutations,\r\n // but it's good here for the sake of performance\r\n // to avoid expensive index searches.\r\n item.index = hoverIndex\r\n },\r\n })\r\n\r\n const [{ isDragging }, drag] = useDrag({\r\n type: ItemTypes.CARD,\r\n item: () => {\r\n return { id, index }\r\n },\r\n collect: (monitor: any) => ({\r\n isDragging: monitor.isDragging(),\r\n }),\r\n })\r\n\r\n const opacity = isDragging ? 0 : 1\r\n drag(drop(ref))\r\n return (\r\n <Card className='my-2' innerRef={ref} data-handler-id={handlerId} style={{ opacity }}>\r\n <CloseButton className=' p-2 ms-auto me-2 my-2 bg-light' onClick={(e) => deletePromotion(index)} />\r\n <CardImg\r\n alt='Promotion Image'\r\n src={url}\r\n style={{\r\n height: 180,\r\n }}\r\n top\r\n width='100%'\r\n />\r\n <CardBody>\r\n <CardTitle tag='h5'>{title}</CardTitle>\r\n <CardText>{blurb}</CardText>\r\n <CardText>\r\n <small className='text-muted'>\r\n {routeForResourceType(type)}\r\n <br />#{index + 1}\r\n </small>\r\n </CardText>\r\n </CardBody>\r\n </Card>\r\n )\r\n}\r\n","import update from 'immutability-helper'\r\nimport * as React from 'react'\r\nimport { useCallback, useEffect } from 'react'\r\nimport { DndProvider } from 'react-dnd'\r\nimport { HTML5Backend } from 'react-dnd-html5-backend'\r\n\r\nimport { IPromotedItemDto } from '../../lib/DoomCentral'\r\nimport { PromotionItem } from './PromotionItem'\r\n\r\ninterface SetPromotionOrderProps {\r\n promotions: IPromotedItemDto[]\r\n setPromotions: React.Dispatch<React.SetStateAction<IPromotedItemDto[]>>\r\n}\r\n\r\nexport default (props: SetPromotionOrderProps) => {\r\n const moveCard = useCallback(\r\n (dragIndex: number, hoverIndex: number) => {\r\n props.setPromotions((prevCards: IPromotedItemDto[]) =>\r\n update(prevCards, {\r\n $splice: [\r\n [dragIndex, 1],\r\n [hoverIndex, 0, prevCards[dragIndex] as IPromotedItemDto],\r\n ],\r\n }),\r\n )\r\n },\r\n [props.promotions],\r\n )\r\n\r\n const renderCard = useCallback(\r\n (promotedItem: IPromotedItemDto, index: number) => {\r\n return (\r\n <PromotionItem\r\n key={index}\r\n index={index}\r\n id={promotedItem.resourceId}\r\n title={promotedItem.promotedTitle}\r\n blurb={promotedItem.promotedBlurb}\r\n url={promotedItem.promotedImageUrl}\r\n type={promotedItem.promotedType}\r\n deletePromotion={deletePromotion}\r\n moveCard={moveCard}\r\n />\r\n )\r\n },\r\n [props.promotions],\r\n )\r\n\r\n const deletePromotion = (index: number) => {\r\n var newPromotions: IPromotedItemDto[] = [...props.promotions]\r\n newPromotions.splice(index, 1)\r\n props.setPromotions([...newPromotions])\r\n }\r\n\r\n // Normally you would want to split things out into separate components.\r\n // But in this example everything is just done in one place for simplicity\r\n return (\r\n <React.Fragment>\r\n <h2>Set Promotion Order</h2>\r\n <h5>Only top 3 are shown on the home page. 7 shown here.</h5>\r\n {props.promotions.length <= 0 && <h3>No promotions are currently in the system.</h3>}\r\n <DndProvider backend={HTML5Backend} key={1}>\r\n {props.promotions.map((promotion, i) => renderCard(promotion, i))}\r\n </DndProvider>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Alert, Button, Fade, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { IPromotedItemDto, PromotedItemDto, PromotionsClient, SetPromotedItemsCommand } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ninterface SubmitNewPromotionsProps {\r\n promotions: IPromotedItemDto[]\r\n}\r\n\r\nexport default (props: SubmitNewPromotionsProps) => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [hidden, setHidden] = useState<boolean>(true)\r\n const [modResponse, setModResponse] = useState<number>(0)\r\n\r\n useEffect(() => {\r\n if (modResponse > 0) {\r\n setHidden(false)\r\n const timer = setTimeout(() => {\r\n setHidden(true)\r\n }, 5000)\r\n return () => {\r\n clearTimeout(timer)\r\n }\r\n }\r\n }, [modResponse])\r\n\r\n const submitNewPromotionLineup = async () => {\r\n try {\r\n let client = new PromotionsClient()\r\n const command = new SetPromotedItemsCommand()\r\n let promotedItems: PromotedItemDto[] = []\r\n props.promotions.map((s, idx) => {\r\n var p = new PromotedItemDto()\r\n p.promotedBlurb = s.promotedBlurb\r\n p.promotedImageUrl = s.promotedImageUrl\r\n p.promotedTitle = s.promotedTitle\r\n p.promotedType = s.promotedType\r\n p.resourceId = s.resourceId\r\n promotedItems.push(p)\r\n })\r\n command.newPromotedItems = promotedItems\r\n const response = await client.setNewPromotions(command).then((response) => response as number)\r\n setModResponse(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Row>\r\n <Button color='primary' onClick={(e) => submitNewPromotionLineup()}>\r\n Submit New Promotion Lineup\r\n </Button>\r\n </Row>\r\n <Row className='my-2'>\r\n <Fade in={!hidden}>\r\n <Alert color='success' hidden={hidden}>\r\n Success!\r\n <br />\r\n The new promotion order has been saved!\r\n <br />\r\n </Alert>\r\n </Fade>\r\n </Row>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { Col, Row } from 'reactstrap'\r\n\r\nimport { IErrorResponse } from '../../ErrorResponse'\r\nimport { IPromotedItemDto, IPromotedItemsVm, ISidebarVm, PromotionsClient, SidebarClient } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\nimport HelmetPages from '../helmet/HelmetPages'\r\nimport Sidebars from '../sidebars/Sidebars'\r\nimport SearchAddPromotions from './SearchAddPromotions'\r\nimport SetPromotionOrder from './SetPromotionOrder'\r\nimport SubmitNewPromotions from './SubmitNewPromotions'\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n\r\n const [promotionData, setPromotionData] = useState<IPromotedItemDto[]>([])\r\n const [sidebarData, setSidebarData] = useState<ISidebarVm>()\r\n\r\n const [modPromotions, setModPromotions] = useState<number>(0)\r\n\r\n // Initial load for the edit promotion page.\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new SidebarClient()\r\n const response = await client.getSidebars().then((response) => response.toJSON() as Promise<ISidebarVm>)\r\n setSidebarData(response)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setLoading(true)\r\n try {\r\n let client = new PromotionsClient()\r\n const response = await client.getPromotions().then((response) => response.toJSON() as Promise<IPromotedItemsVm>)\r\n setPromotionData(response.promotedItems)\r\n } catch (e) {\r\n error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n }\r\n\r\n fetchData()\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <HelmetPages title='Doom Central - Edit Promotions' />\r\n <Sidebars loading={loading} newsItems={sidebarData?.newsItems} recentThreads={sidebarData?.recentThreads}>\r\n <div className='maincontent-container p-4'>\r\n <Row>\r\n <Col>\r\n <SetPromotionOrder promotions={promotionData} setPromotions={setPromotionData} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <SearchAddPromotions promotions={promotionData} setPromotions={setPromotionData} modPromotion={modPromotions} setModPromotion={setModPromotions} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <SubmitNewPromotions promotions={promotionData} />\r\n </Col>\r\n </Row>\r\n </div>\r\n </Sidebars>\r\n </React.Fragment>\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport DoomCentralRoles from '../../lib/DoomCentralRoles'\r\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute'\r\nimport EditPromotions from '../editpromotions/EditPromotions'\r\n\r\nexport default () => (\r\n <React.Fragment>\r\n <AuthorizeRoute path='/editpromotions' component={EditPromotions} componentroles={[DoomCentralRoles.PromotionAdministrator, DoomCentralRoles.GlobalAdministrator]} />\r\n </React.Fragment>\r\n)\r\n","import { routeForResourceType } from '@/utils/helpers'\r\nimport { cn } from '@/utils/utils'\r\nimport { MouseEvent, useEffect, useRef, useState } from 'react'\r\nimport { Link, NavLink, useHistory } from 'react-router-dom'\r\nimport { Card, CardBody, CardImg, CardSubtitle, CardText, CardTitle, Col, Row } from 'reactstrap'\r\n\r\nimport { IPromotedItemDto, PromotedType } from '../../lib/DoomCentral'\r\nimport { LoadingIndicator } from '../loading-indicator/LoadingIndicator'\r\nimport './promoted.scss'\r\n\r\ninterface PromotedProps {\r\n promotedItems: IPromotedItemDto[]\r\n loading: boolean\r\n}\r\n\r\nexport const Promoted = ({ promotedItems, loading }: PromotedProps) => {\r\n const buildPromoUrl = (type: PromotedType, id: string | number) => `${routeForResourceType(type)}/${id}`\r\n\r\n const [bigPromo, ...promos] = promotedItems\r\n\r\n return (\r\n <div className='mb-3'>\r\n {loading ? (\r\n <LoadingIndicator />\r\n ) : (\r\n <Row className='g-0'>\r\n <Col lg={12} xl={8}>\r\n {bigPromo && (\r\n <Link key={bigPromo.resourceId} to={buildPromoUrl(bigPromo.promotedType, bigPromo.resourceId)} style={{ textDecoration: 'none', color: 'inherit' }}>\r\n <div className='card promo-card p-0 me-3 h-100' style={{ maxHeight: 1080, maxWidth: 1920 }}>\r\n <img\r\n src={bigPromo.promotedImageUrl}\r\n className='card-img'\r\n alt={`Promo image for event: ${bigPromo.promotedTitle}`}\r\n style={{ objectFit: 'cover', width: '100%', height: '100%' }}\r\n />\r\n\r\n <div className='card-img-overlay d-flex flex-column justify-content-end'>\r\n <div className={cn('p-3', 'bg-primary')}>\r\n <h1 className='card-title fs-3'>\r\n <strong>{bigPromo.promotedTitle}</strong>\r\n </h1>\r\n <p className='card-text text-body'>\r\n <strong>{bigPromo.promotedBlurb}</strong>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </Link>\r\n )}\r\n </Col>\r\n <Col lg={6} xl={4}>\r\n {promos.map(({ promotedType, resourceId, promotedTitle, promotedImageUrl, promotedBlurb }) => (\r\n <Link key={resourceId} to={buildPromoUrl(promotedType, resourceId)} style={{ textDecoration: 'none', color: 'inherit' }}>\r\n <div className='card promo-card p-0 me-3 h-100' style={{ maxHeight: 300, maxWidth: 400 }}>\r\n <img\r\n src={promotedImageUrl}\r\n className='card-img'\r\n alt={`Promo image for event: ${promotedTitle}`}\r\n style={{ objectFit: 'cover', width: '100%', height: '100%' }}\r\n />\r\n\r\n <div className='card-img-overlay d-flex flex-column justify-content-end'>\r\n <div className={cn('p-3', 'bg-secondary')}>\r\n <h2 className='card-title fs-3'>\r\n <strong>{promotedTitle}</strong>\r\n </h2>\r\n <p className='card-text text-body'>\r\n <strong>{promotedBlurb}</strong>\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </Link>\r\n ))}\r\n </Col>\r\n </Row>\r\n )}\r\n </div>\r\n )\r\n}\r\n","import { Columns } from '@/components/columns/Columns'\r\nimport RelativeTime from '@yaireo/relative-time'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport { useAuth } from 'react-oidc-context'\r\n\r\nimport { CommunityNewsCard } from '../../components/community-news-card/CommunityNewsCard'\r\nimport { EventsCard } from '../../components/events-card/EventsCard'\r\nimport HelmetPages from '../../components/helmet/HelmetPages'\r\nimport { LoadingIndicator } from '../../components/loading-indicator/LoadingIndicator'\r\nimport { Promoted } from '../../components/promoted/Promoted'\r\nimport { RecentThreadsCard } from '../../components/recent-threads-card/RecentThreadsCard'\r\nimport { EventItemDto, ForumGroupDto, ForumsClient, HomeClient, NewsItemsDto, PromotedItemDto, RecentThreadDto } from '../../lib/DoomCentral'\r\nimport { ErrorContext } from '../../state'\r\n\r\ntype HomePageData = {\r\n forumGroups: ForumGroupDto[]\r\n eventItems: EventItemDto[]\r\n newsItems: NewsItemsDto[]\r\n promotedItems: PromotedItemDto[]\r\n recentThreads: RecentThreadDto[]\r\n}\r\n\r\nconst relativeTime = new RelativeTime()\r\n\r\nconst forumsClient = new ForumsClient()\r\n\r\nexport const Home = () => {\r\n const error = useContext(ErrorContext)\r\n const auth = useAuth()\r\n\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [pageData, setPageData] = useState<HomePageData>()\r\n\r\n const getHomePageData = async () => {\r\n const { forumGroups } = await forumsClient.getForumListing()\r\n const { eventItems, newsItems, promotedItems, recentThreads } = await new HomeClient().getHomePage()\r\n\r\n const data = {} as HomePageData\r\n data.forumGroups = forumGroups\r\n data.eventItems = eventItems\r\n data.newsItems = newsItems\r\n data.promotedItems = promotedItems\r\n data.recentThreads = recentThreads\r\n\r\n return data\r\n }\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n setIsLoading(true)\r\n try {\r\n const homePageData = await getHomePageData()\r\n setPageData(homePageData)\r\n } catch (e) {\r\n console.error(e)\r\n error.setError(e)\r\n } finally {\r\n setIsLoading(false)\r\n }\r\n })()\r\n }, [])\r\n\r\n return (\r\n <>\r\n <HelmetPages title='Doom Central - Home' />\r\n <Columns\r\n rightColumn={\r\n <div>\r\n <CommunityNewsCard className='mb-3' />\r\n <EventsCard className='mb-3' />\r\n <RecentThreadsCard className='mb-3' />\r\n </div>\r\n }\r\n >\r\n {isLoading ? (\r\n <LoadingIndicator />\r\n ) : pageData ? (\r\n <>\r\n <Promoted loading={isLoading} promotedItems={pageData?.promotedItems} />\r\n </>\r\n ) : (\r\n <div>No page data</div>\r\n )}\r\n </Columns>\r\n </>\r\n )\r\n}\r\n","import { hashQueryKeyByOptions, matchQuery } from './utils'\nimport { Query } from './query'\nimport { notifyManager } from './notifyManager'\nimport { Subscribable } from './subscribable'\nimport type { QueryFilters } from './utils'\nimport type { Action, QueryState } from './query'\nimport type {\n DefaultError,\n NotifyEvent,\n QueryKey,\n QueryOptions,\n WithRequired,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (\n error: DefaultError,\n query: Query<unknown, unknown, unknown>,\n ) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n query: Query<unknown, unknown, unknown>,\n ) => void\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query<any, any, any, any>\n action: Action<any, any>\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\nexport type QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\nexport interface QueryStore {\n has: (queryHash: string) => boolean\n set: (queryHash: string, query: Query) => void\n get: (queryHash: string) => Query | undefined\n delete: (queryHash: string) => void\n values: () => IterableIterator<Query>\n}\n\n// CLASS\n\nexport class QueryCache extends Subscribable<QueryCacheListener> {\n #queries: QueryStore\n\n constructor(public config: QueryCacheConfig = {}) {\n super()\n this.#queries = new Map<string, Query>()\n }\n\n build<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n client: QueryClient,\n options: WithRequired<\n QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'queryKey'\n >,\n state?: QueryState<TData, TError>,\n ): Query<TQueryFnData, TError, TData, TQueryKey> {\n const queryKey = options.queryKey\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get<TQueryFnData, TError, TData, TQueryKey>(queryHash)\n\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query<any, any, any, any>): void {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query)\n\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query<any, any, any, any>): void {\n const queryInMap = this.#queries.get(query.queryHash)\n\n if (queryInMap) {\n query.destroy()\n\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash)\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueryKey> | undefined {\n return this.#queries.get(queryHash) as\n | Query<TQueryFnData, TError, TData, TQueryKey>\n | undefined\n }\n\n getAll(): Array<Query> {\n return [...this.#queries.values()]\n }\n\n find<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(\n filters: WithRequired<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.getAll().find((query) =>\n matchQuery(defaultedFilters, query),\n ) as Query<TQueryFnData, TError, TData> | undefined\n }\n\n findAll(filters: QueryFilters = {}): Array<Query> {\n const queries = this.getAll()\n return Object.keys(filters).length > 0\n ? queries.filter((query) => matchQuery(filters, query))\n : queries\n }\n\n notify(event: QueryCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n","import { notifyManager } from './notifyManager'\nimport { Mutation } from './mutation'\nimport { matchMutation, noop } from './utils'\nimport { Subscribable } from './subscribable'\nimport type { MutationObserver } from './mutationObserver'\nimport type { DefaultError, MutationOptions, NotifyEvent } from './types'\nimport type { QueryClient } from './queryClient'\nimport type { Action, MutationState } from './mutation'\nimport type { MutationFilters } from './utils'\n\n// TYPES\n\ninterface MutationCacheConfig {\n onError?: (\n error: DefaultError,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n onSuccess?: (\n data: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n onMutate?: (\n variables: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => Promise<unknown> | unknown\n}\n\ninterface NotifyEventMutationAdded extends NotifyEvent {\n type: 'added'\n mutation: Mutation<any, any, any, any>\n}\ninterface NotifyEventMutationRemoved extends NotifyEvent {\n type: 'removed'\n mutation: Mutation<any, any, any, any>\n}\n\ninterface NotifyEventMutationObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverOptionsUpdated extends NotifyEvent {\n type: 'observerOptionsUpdated'\n mutation?: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any, any>\n}\n\ninterface NotifyEventMutationUpdated extends NotifyEvent {\n type: 'updated'\n mutation: Mutation<any, any, any, any>\n action: Action<any, any, any, any>\n}\n\nexport type MutationCacheNotifyEvent =\n | NotifyEventMutationAdded\n | NotifyEventMutationRemoved\n | NotifyEventMutationObserverAdded\n | NotifyEventMutationObserverRemoved\n | NotifyEventMutationObserverOptionsUpdated\n | NotifyEventMutationUpdated\n\ntype MutationCacheListener = (event: MutationCacheNotifyEvent) => void\n\n// CLASS\n\nexport class MutationCache extends Subscribable<MutationCacheListener> {\n #mutations: Map<string, Array<Mutation<any, any, any, any>>>\n #mutationId: number\n\n constructor(public config: MutationCacheConfig = {}) {\n super()\n this.#mutations = new Map()\n this.#mutationId = Date.now()\n }\n\n build<TData, TError, TVariables, TContext>(\n client: QueryClient,\n options: MutationOptions<TData, TError, TVariables, TContext>,\n state?: MutationState<TData, TError, TVariables, TContext>,\n ): Mutation<TData, TError, TVariables, TContext> {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state,\n })\n\n this.add(mutation)\n\n return mutation\n }\n\n add(mutation: Mutation<any, any, any, any>): void {\n const scope = scopeFor(mutation)\n const mutations = this.#mutations.get(scope) ?? []\n mutations.push(mutation)\n this.#mutations.set(scope, mutations)\n this.notify({ type: 'added', mutation })\n }\n\n remove(mutation: Mutation<any, any, any, any>): void {\n const scope = scopeFor(mutation)\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations\n .get(scope)\n ?.filter((x) => x !== mutation)\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope)\n } else {\n this.#mutations.set(scope, mutations)\n }\n }\n }\n\n this.notify({ type: 'removed', mutation })\n }\n\n canRun(mutation: Mutation<any, any, any, any>): boolean {\n const firstPendingMutation = this.#mutations\n .get(scopeFor(mutation))\n ?.find((m) => m.state.status === 'pending')\n\n // we can run if there is no current pending mutation (start use-case)\n // or if WE are the first pending mutation (continue use-case)\n return !firstPendingMutation || firstPendingMutation === mutation\n }\n\n runNext(mutation: Mutation<any, any, any, any>): Promise<unknown> {\n const foundMutation = this.#mutations\n .get(scopeFor(mutation))\n ?.find((m) => m !== mutation && m.state.isPaused)\n\n return foundMutation?.continue() ?? Promise.resolve()\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation)\n })\n })\n }\n\n getAll(): Array<Mutation> {\n return [...this.#mutations.values()].flat()\n }\n\n find<\n TData = unknown,\n TError = DefaultError,\n TVariables = any,\n TContext = unknown,\n >(\n filters: MutationFilters,\n ): Mutation<TData, TError, TVariables, TContext> | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.getAll().find((mutation) =>\n matchMutation(defaultedFilters, mutation),\n ) as Mutation<TData, TError, TVariables, TContext> | undefined\n }\n\n findAll(filters: MutationFilters = {}): Array<Mutation> {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation))\n }\n\n notify(event: MutationCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n resumePausedMutations(): Promise<unknown> {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused)\n\n return notifyManager.batch(() =>\n Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop)),\n ),\n )\n }\n}\n\nfunction scopeFor(mutation: Mutation<any, any, any, any>) {\n return mutation.options.scope?.id ?? String(mutation.mutationId)\n}\n","import { addToEnd, addToStart, ensureQueryFn } from './utils'\nimport type { QueryBehavior } from './query'\nimport type {\n InfiniteData,\n InfiniteQueryPageParamsOptions,\n OmitKeyof,\n QueryFunctionContext,\n QueryKey,\n} from './types'\n\nexport function infiniteQueryBehavior<TQueryFnData, TError, TData, TPageParam>(\n pages?: number,\n): QueryBehavior<TQueryFnData, TError, InfiniteData<TData, TPageParam>> {\n return {\n onFetch: (context, query) => {\n const fetchFn = async () => {\n const options = context.options as InfiniteQueryPageParamsOptions<TData>\n const direction = context.fetchOptions?.meta?.fetchMore?.direction\n const oldPages = context.state.data?.pages || []\n const oldPageParams = context.state.data?.pageParams || []\n const empty = { pages: [], pageParams: [] }\n let cancelled = false\n\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true\n } else {\n context.signal.addEventListener('abort', () => {\n cancelled = true\n })\n }\n return context.signal\n },\n })\n }\n\n const queryFn = ensureQueryFn(context.options, context.fetchOptions)\n\n // Create function to fetch a page\n const fetchPage = async (\n data: InfiniteData<unknown>,\n param: unknown,\n previous?: boolean,\n ): Promise<InfiniteData<unknown>> => {\n if (cancelled) {\n return Promise.reject()\n }\n\n if (param == null && data.pages.length) {\n return Promise.resolve(data)\n }\n\n const queryFnContext: OmitKeyof<\n QueryFunctionContext<QueryKey, unknown>,\n 'signal'\n > = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? 'backward' : 'forward',\n meta: context.options.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n const page = await queryFn(\n queryFnContext as QueryFunctionContext<QueryKey, unknown>,\n )\n\n const { maxPages } = context.options\n const addTo = previous ? addToStart : addToEnd\n\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages),\n }\n }\n\n let result: InfiniteData<unknown>\n\n // fetch next / previous page?\n if (direction && oldPages.length) {\n const previous = direction === 'backward'\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams,\n }\n const param = pageParamFn(options, oldData)\n\n result = await fetchPage(oldData, param, previous)\n } else {\n // Fetch first page\n result = await fetchPage(\n empty,\n oldPageParams[0] ?? options.initialPageParam,\n )\n\n const remainingPages = pages ?? oldPages.length\n\n // Fetch remaining pages\n for (let i = 1; i < remainingPages; i++) {\n const param = getNextPageParam(options, result)\n result = await fetchPage(result, param)\n }\n }\n\n return result\n }\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn as any,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal,\n },\n query,\n )\n }\n } else {\n context.fetchFn = fetchFn\n }\n },\n }\n}\n\nfunction getNextPageParam(\n options: InfiniteQueryPageParamsOptions<any>,\n { pages, pageParams }: InfiniteData<unknown>,\n): unknown | undefined {\n const lastIndex = pages.length - 1\n return options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams,\n )\n}\n\nfunction getPreviousPageParam(\n options: InfiniteQueryPageParamsOptions<any>,\n { pages, pageParams }: InfiniteData<unknown>,\n): unknown | undefined {\n return options.getPreviousPageParam?.(\n pages[0],\n pages,\n pageParams[0],\n pageParams,\n )\n}\n\n/**\n * Checks if there is a next page.\n */\nexport function hasNextPage(\n options: InfiniteQueryPageParamsOptions<any, any>,\n data?: InfiniteData<unknown>,\n): boolean {\n if (!data) return false\n return getNextPageParam(options, data) != null\n}\n\n/**\n * Checks if there is a previous page.\n */\nexport function hasPreviousPage(\n options: InfiniteQueryPageParamsOptions<any, any>,\n data?: InfiniteData<unknown>,\n): boolean {\n if (!data || !options.getPreviousPageParam) return false\n return getPreviousPageParam(options, data) != null\n}\n","import {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken,\n} from './utils'\nimport { QueryCache } from './queryCache'\nimport { MutationCache } from './mutationCache'\nimport { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { notifyManager } from './notifyManager'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport type { DataTag, NoInfer, OmitKeyof } from './types'\nimport type { QueryState } from './query'\nimport type {\n CancelOptions,\n DefaultError,\n DefaultOptions,\n DefaultedQueryObserverOptions,\n EnsureQueryDataOptions,\n FetchInfiniteQueryOptions,\n FetchQueryOptions,\n InfiniteData,\n InvalidateOptions,\n InvalidateQueryFilters,\n MutationKey,\n MutationObserverOptions,\n MutationOptions,\n QueryClientConfig,\n QueryKey,\n QueryObserverOptions,\n QueryOptions,\n RefetchOptions,\n RefetchQueryFilters,\n ResetOptions,\n SetDataOptions,\n} from './types'\nimport type { MutationFilters, QueryFilters, Updater } from './utils'\n\n// TYPES\n\ninterface QueryDefaults {\n queryKey: QueryKey\n defaultOptions: OmitKeyof<QueryOptions<any, any, any>, 'queryKey'>\n}\n\ninterface MutationDefaults {\n mutationKey: MutationKey\n defaultOptions: MutationOptions<any, any, any, any>\n}\n\n// CLASS\n\nexport class QueryClient {\n #queryCache: QueryCache\n #mutationCache: MutationCache\n #defaultOptions: DefaultOptions\n #queryDefaults: Map<string, QueryDefaults>\n #mutationDefaults: Map<string, MutationDefaults>\n #mountCount: number\n #unsubscribeFocus?: () => void\n #unsubscribeOnline?: () => void\n\n constructor(config: QueryClientConfig = {}) {\n this.#queryCache = config.queryCache || new QueryCache()\n this.#mutationCache = config.mutationCache || new MutationCache()\n this.#defaultOptions = config.defaultOptions || {}\n this.#queryDefaults = new Map()\n this.#mutationDefaults = new Map()\n this.#mountCount = 0\n }\n\n mount(): void {\n this.#mountCount++\n if (this.#mountCount !== 1) return\n\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations()\n this.#queryCache.onFocus()\n }\n })\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations()\n this.#queryCache.onOnline()\n }\n })\n }\n\n unmount(): void {\n this.#mountCount--\n if (this.#mountCount !== 0) return\n\n this.#unsubscribeFocus?.()\n this.#unsubscribeFocus = undefined\n\n this.#unsubscribeOnline?.()\n this.#unsubscribeOnline = undefined\n }\n\n isFetching(filters?: QueryFilters): number {\n return this.#queryCache.findAll({ ...filters, fetchStatus: 'fetching' })\n .length\n }\n\n isMutating(filters?: MutationFilters): number {\n return this.#mutationCache.findAll({ ...filters, status: 'pending' }).length\n }\n\n getQueryData<\n TQueryFnData = unknown,\n TTaggedQueryKey extends QueryKey = QueryKey,\n TInferredQueryFnData = TTaggedQueryKey extends DataTag<\n unknown,\n infer TaggedValue\n >\n ? TaggedValue\n : TQueryFnData,\n >(queryKey: TTaggedQueryKey): TInferredQueryFnData | undefined\n getQueryData(queryKey: QueryKey) {\n const options = this.defaultQueryOptions({ queryKey })\n return this.#queryCache.get(options.queryHash)?.state.data\n }\n\n ensureQueryData<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: EnsureQueryDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData> {\n const cachedData = this.getQueryData<TData>(options.queryKey)\n\n if (cachedData === undefined) return this.fetchQuery(options)\n else {\n const defaultedOptions = this.defaultQueryOptions(options)\n const query = this.#queryCache.build(this, defaultedOptions)\n\n if (\n options.revalidateIfStale &&\n query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))\n ) {\n void this.prefetchQuery(defaultedOptions)\n }\n\n return Promise.resolve(cachedData)\n }\n }\n\n getQueriesData<TQueryFnData = unknown>(\n filters: QueryFilters,\n ): Array<[QueryKey, TQueryFnData | undefined]> {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data as TQueryFnData | undefined\n return [queryKey, data]\n })\n }\n\n setQueryData<\n TQueryFnData = unknown,\n TTaggedQueryKey extends QueryKey = QueryKey,\n TInferredQueryFnData = TTaggedQueryKey extends DataTag<\n unknown,\n infer TaggedValue\n >\n ? TaggedValue\n : TQueryFnData,\n >(\n queryKey: TTaggedQueryKey,\n updater: Updater<\n NoInfer<TInferredQueryFnData> | undefined,\n NoInfer<TInferredQueryFnData> | undefined\n >,\n options?: SetDataOptions,\n ): TInferredQueryFnData | undefined {\n const defaultedOptions = this.defaultQueryOptions<\n any,\n any,\n unknown,\n any,\n QueryKey\n >({ queryKey })\n\n const query = this.#queryCache.get<TInferredQueryFnData>(\n defaultedOptions.queryHash,\n )\n const prevData = query?.state.data\n const data = functionalUpdate(updater, prevData)\n\n if (data === undefined) {\n return undefined\n }\n\n return this.#queryCache\n .build(this, defaultedOptions)\n .setData(data, { ...options, manual: true })\n }\n\n setQueriesData<TQueryFnData>(\n filters: QueryFilters,\n updater: Updater<TQueryFnData | undefined, TQueryFnData | undefined>,\n options?: SetDataOptions,\n ): Array<[QueryKey, TQueryFnData | undefined]> {\n return notifyManager.batch(() =>\n this.#queryCache\n .findAll(filters)\n .map(({ queryKey }) => [\n queryKey,\n this.setQueryData<TQueryFnData>(queryKey, updater, options),\n ]),\n )\n }\n\n getQueryState<\n TQueryFnData = unknown,\n TError = DefaultError,\n TTaggedQueryKey extends QueryKey = QueryKey,\n TInferredQueryFnData = TTaggedQueryKey extends DataTag<\n unknown,\n infer TaggedValue\n >\n ? TaggedValue\n : TQueryFnData,\n >(\n queryKey: TTaggedQueryKey,\n ): QueryState<TInferredQueryFnData, TError> | undefined {\n const options = this.defaultQueryOptions({ queryKey })\n return this.#queryCache.get<TInferredQueryFnData, TError>(options.queryHash)\n ?.state\n }\n\n removeQueries(filters?: QueryFilters): void {\n const queryCache = this.#queryCache\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query)\n })\n })\n }\n\n resetQueries(filters?: QueryFilters, options?: ResetOptions): Promise<void> {\n const queryCache = this.#queryCache\n\n const refetchFilters: RefetchQueryFilters = {\n type: 'active',\n ...filters,\n }\n\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset()\n })\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n cancelQueries(\n filters: QueryFilters = {},\n cancelOptions: CancelOptions = {},\n ): Promise<void> {\n const defaultedCancelOptions = { revert: true, ...cancelOptions }\n\n const promises = notifyManager.batch(() =>\n this.#queryCache\n .findAll(filters)\n .map((query) => query.cancel(defaultedCancelOptions)),\n )\n\n return Promise.all(promises).then(noop).catch(noop)\n }\n\n invalidateQueries(\n filters: InvalidateQueryFilters = {},\n options: InvalidateOptions = {},\n ): Promise<void> {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate()\n })\n\n if (filters.refetchType === 'none') {\n return Promise.resolve()\n }\n const refetchFilters: RefetchQueryFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? 'active',\n }\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n refetchQueries(\n filters: RefetchQueryFilters = {},\n options?: RefetchOptions,\n ): Promise<void> {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true,\n }\n const promises = notifyManager.batch(() =>\n this.#queryCache\n .findAll(filters)\n .filter((query) => !query.isDisabled())\n .map((query) => {\n let promise = query.fetch(undefined, fetchOptions)\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop)\n }\n return query.state.fetchStatus === 'paused'\n ? Promise.resolve()\n : promise\n }),\n )\n\n return Promise.all(promises).then(noop)\n }\n\n fetchQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n >(\n options: FetchQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n ): Promise<TData> {\n const defaultedOptions = this.defaultQueryOptions(options)\n\n // https://github.com/tannerlinsley/react-query/issues/652\n if (defaultedOptions.retry === undefined) {\n defaultedOptions.retry = false\n }\n\n const query = this.#queryCache.build(this, defaultedOptions)\n\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query),\n )\n ? query.fetch(defaultedOptions)\n : Promise.resolve(query.state.data as TData)\n }\n\n prefetchQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void> {\n return this.fetchQuery(options).then(noop).catch(noop)\n }\n\n fetchInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n >(\n options: FetchInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n ): Promise<InfiniteData<TData, TPageParam>> {\n options.behavior = infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData,\n TPageParam\n >(options.pages)\n return this.fetchQuery(options)\n }\n\n prefetchInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n >(\n options: FetchInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n ): Promise<void> {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop)\n }\n\n resumePausedMutations(): Promise<unknown> {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations()\n }\n return Promise.resolve()\n }\n\n getQueryCache(): QueryCache {\n return this.#queryCache\n }\n\n getMutationCache(): MutationCache {\n return this.#mutationCache\n }\n\n getDefaultOptions(): DefaultOptions {\n return this.#defaultOptions\n }\n\n setDefaultOptions(options: DefaultOptions): void {\n this.#defaultOptions = options\n }\n\n setQueryDefaults(\n queryKey: QueryKey,\n options: Partial<\n OmitKeyof<QueryObserverOptions<unknown, any, any, any>, 'queryKey'>\n >,\n ): void {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options,\n })\n }\n\n getQueryDefaults(\n queryKey: QueryKey,\n ): OmitKeyof<QueryObserverOptions<any, any, any, any, any>, 'queryKey'> {\n const defaults = [...this.#queryDefaults.values()]\n\n let result: OmitKeyof<\n QueryObserverOptions<any, any, any, any, any>,\n 'queryKey'\n > = {}\n\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions }\n }\n })\n return result\n }\n\n setMutationDefaults(\n mutationKey: MutationKey,\n options: OmitKeyof<\n MutationObserverOptions<any, any, any, any>,\n 'mutationKey'\n >,\n ): void {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options,\n })\n }\n\n getMutationDefaults(\n mutationKey: MutationKey,\n ): MutationObserverOptions<any, any, any, any> {\n const defaults = [...this.#mutationDefaults.values()]\n\n let result: MutationObserverOptions<any, any, any, any> = {}\n\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions }\n }\n })\n\n return result\n }\n\n defaultQueryOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n >(\n options:\n | QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >\n | DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n > {\n if (options._defaulted) {\n return options as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true,\n }\n\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions,\n )\n }\n\n // dependent default values\n if (defaultedOptions.refetchOnReconnect === undefined) {\n defaultedOptions.refetchOnReconnect =\n defaultedOptions.networkMode !== 'always'\n }\n if (defaultedOptions.throwOnError === undefined) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense\n }\n\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = 'offlineFirst'\n }\n\n if (\n defaultedOptions.enabled !== true &&\n defaultedOptions.queryFn === skipToken\n ) {\n defaultedOptions.enabled = false\n }\n\n return defaultedOptions as DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n }\n\n defaultMutationOptions<T extends MutationOptions<any, any, any, any>>(\n options?: T,\n ): T {\n if (options?._defaulted) {\n return options\n }\n return {\n ...this.#defaultOptions.mutations,\n ...(options?.mutationKey &&\n this.getMutationDefaults(options.mutationKey)),\n ...options,\n _defaulted: true,\n } as T\n }\n\n clear(): void {\n this.#queryCache.clear()\n this.#mutationCache.clear()\n }\n}\n","import ApiAuthorizationRoutes from '@/components/api-authorization/ApiAuthorizationRoutes'\r\nimport { Footer } from '@/components/footer/Footer'\r\nimport { Layout } from '@/components/layout/Layout'\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator'\r\nimport { Navbar } from '@/components/navbar/Navbar'\r\nimport AdminRoutes from '@/components/routes/AdminRoutes'\r\nimport DoomCentralRoutes from '@/components/routes/DoomCentralRoutes'\r\nimport EventRoutes from '@/components/routes/EventRoutes'\r\nimport ForumRoutes from '@/components/routes/ForumRoutes'\r\nimport NewsRoutes from '@/components/routes/NewsRoutes'\r\nimport PromotionRoutes from '@/components/routes/PromotionRoutes'\r\nimport { GoogleAnalyticsClient } from '@/lib/DoomCentral'\r\nimport { Home } from '@/pages/home/Home'\r\nimport { ErrorContext, ErrorProvider } from '@/state'\r\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\r\nimport { useContext, useEffect, useState } from 'react'\r\nimport ReactGA from 'react-ga4'\r\nimport { HelmetProvider } from 'react-helmet-async'\r\nimport { AuthProvider } from 'react-oidc-context'\r\nimport { Route } from 'react-router'\r\nimport { BrowserRouter as Router } from 'react-router-dom'\r\n\r\nimport { oidcConfig } from './configuration'\r\n\r\nconst queryClient = new QueryClient()\r\n\r\nexport default () => {\r\n const error = useContext(ErrorContext)\r\n\r\n const [loading, setLoading] = useState<boolean>(false)\r\n const [initialized, setInitialized] = useState<boolean>(false)\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n setLoading(true)\r\n try {\r\n const client = new GoogleAnalyticsClient()\r\n const response = await client.getGoogleAnalyticsId().then((response) => response as string)\r\n ReactGA.initialize(response)\r\n setInitialized(true)\r\n } catch (e) {\r\n // any error is likely due to the user blocking traffic from GA\r\n console.warn([e.code, e.name, e.message].join(', '))\r\n // error.setError(e.response as IErrorResponse)\r\n }\r\n setLoading(false)\r\n })()\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (initialized) {\r\n ReactGA.send({ hitType: 'pageview', page: location.pathname + location.search })\r\n }\r\n }, [initialized, location])\r\n\r\n return (\r\n <HelmetProvider>\r\n <AuthProvider {...oidcConfig}>\r\n <ErrorProvider>\r\n <QueryClientProvider client={queryClient}>\r\n <Router>\r\n <Layout navbar={<Navbar />} footer={<Footer />}>\r\n {loading ? (\r\n <LoadingIndicator />\r\n ) : (\r\n <div className='mb-3'>\r\n <ApiAuthorizationRoutes />\r\n <AdminRoutes />\r\n <DoomCentralRoutes />\r\n <PromotionRoutes />\r\n <ForumRoutes />\r\n <NewsRoutes />\r\n <EventRoutes />\r\n <Route exact path='/' component={Home} />\r\n </div>\r\n )}\r\n </Layout>\r\n </Router>\r\n </QueryClientProvider>\r\n </ErrorProvider>\r\n </AuthProvider>\r\n </HelmetProvider>\r\n )\r\n}\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\r\n)\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const url = process.env.PUBLIC_URL as string\r\n const publicUrl = new URL(url, window.location.toString())\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl)\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl)\r\n }\r\n })\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing as ServiceWorker\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.')\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.')\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error)\r\n })\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type')\r\n if (response.status === 404 || (contentType && contentType.indexOf('javascript') === -1)) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload()\r\n })\r\n })\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl)\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.')\r\n })\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister()\r\n })\r\n }\r\n}\r\n","import { ReportHandler } from 'web-vitals'\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry)\r\n getFID(onPerfEntry)\r\n getFCP(onPerfEntry)\r\n getLCP(onPerfEntry)\r\n getTTFB(onPerfEntry)\r\n })\r\n }\r\n}\r\n\r\nexport default reportWebVitals\r\n","// bootstrap the app with bootstrap (and bootstrap accessories)\r\nimport 'bootstrap-icons/font/bootstrap-icons.css'\r\n// create and mount the react app\r\nimport { createRoot } from 'react-dom/client'\r\n\r\nimport App from './App'\r\nimport registerServiceWorker from './registerServiceWorker'\r\nimport reportWebVitals from './reportWebVitals'\r\nimport './theme/custom.scss'\r\n\r\nconst container = document.getElementById('root')\r\nconst root = createRoot(container!)\r\n\r\nroot.render(<App />)\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://cra.link/PWA\r\nregisterServiceWorker()\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals()\r\n"],"names":["copyTextToClipboard","text","cb","document","el","createElement","value","setAttribute","style","position","left","body","appendChild","selected","getSelection","rangeCount","getRangeAt","select","isCopy","execCommand","err","removeChild","removeAllRanges","addRange","e","t","o","amd","module","exports","this","year","month","day","hour","minute","second","numeric","n","locale","options","rtf","Intl","RelativeTimeFormat","prototype","from","Date","Math","abs","format","round","file","acceptedFiles","acceptedFilesArray","Array","isArray","split","fileName","name","mimeType","type","toLowerCase","baseMimeType","replace","some","validType","trim","charAt","endsWith","trueFunc","falseFunc","deselectCurrent","require","clipboardToIE11Formatting","debug","message","reselectPrevious","range","selection","mark","success","createRange","textContent","ariaHidden","all","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","preventDefault","clipboardData","console","warn","window","clearData","setData","onCopy","selectNodeContents","Error","error","copyKey","test","navigator","userAgent","prompt","removeRange","CryptoJS","undefined","crypto","self","globalThis","msCrypto","global","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","create","Object","F","obj","subtype","C","C_lib","lib","Base","extend","overrides","mixIn","hasOwnProperty","init","$super","apply","arguments","instance","properties","propertyName","toString","clone","WordArray","words","sigBytes","length","encoder","Hex","stringify","concat","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","i","thatByte","j","ceil","call","slice","random","nBytes","push","C_enc","enc","hexChars","bite","join","parse","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","String","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","data","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","max","_minBufferSize","nBytesReady","min","offset","_doProcessBlock","splice","C_algo","Hasher","cfg","_doReset","update","messageUpdate","finalize","_doFinalize","_createHelper","hasher","_createHmacHelper","key","HMAC","algo","factory","root","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","Base64","map","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","indexOf","H","K","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","pow","W","SHA256","_hash","M","a","b","c","d","f","g","h","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","nBitsTotal","nBitsLeft","floor","HmacSHA256","parser_context_1","render_1","CssSelectorParser","pseudos","attrEqualityMods","ruleNestingOperators","substitutesEnabled","registerSelectorPseudos","_i","_a","pseudos_1","pseudo","unregisterSelectorPseudos","pseudos_2","registerNumericPseudos","pseudos_3","unregisterNumericPseudos","pseudos_4","registerNestingOperators","operators","operators_1","operator","unregisterNestingOperators","operators_2","registerAttrEqualityMods","mods","mods_1","mod","unregisterAttrEqualityMods","mods_2","enableSubstitutes","disableSubstitutes","str","parseCssSelector","render","path","renderEntity","defineProperty","utils_1","pos","l","chr","getStr","quote","escapeTable","result","esc","isHex","hex","getIdent","isIdent","identSpecialChars","skipWhitespace","parseSelector","selector","parseSingleSelector","res","selectors","rule","parseRule","currentRule","op","nestingOperator","tagName","isIdentStart","classNames","id","attr","attrValue","valueType","doubleQuotesEscapeChars","singleQuoteEscapeChars","attrs","pseudoName","entity","currentEntity","parts","escapeIdentifier","cn","escapeStr","s","len","charCode","extraCharCode","replacement","strReplacementsRev","r","hasOwn","toStr","gOPD","getOwnPropertyDescriptor","arr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","enumerable","configurable","newValue","writable","getProperty","src","copy","copyIsArray","deep","equal","keys","RegExp","source","flags","valueOf","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","stringifiable","isProduction","process","invariant","condition","assign","getAllKeys","forEach","object","Map","Set","Context","commands","defaultCommands","bind","isEquals","x","y","newContext","get","set","directive","fn","$spec","_this","spec","$apply","nextObject","objectWasNextObject","nextValueForKey","nextObjectValue","$push","invariantPushAndUnshift","$unshift","$splice","originalObject","invariantSplice","invariantSplices","args","$set","_nextObject","invariantSet","$toggle","targets","invariantSpecArray","nextObjectCopy","$unset","_spec","$add","values","invariantMapOrSet","has","add","$remove","delete","$merge","specValue","original","defaultContext","command","typeOfTarget","default","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","TypeError","lineno","column","updatePosition","lines","match","lastIndexOf","start","line","node","Position","whitespace","end","content","errorsList","msg","reason","filename","silent","re","m","exec","comments","rules","comment","declaration","prop","val","ret","property","decl","decls","declarations","argIndex","framesToPop","isBuffer","string","protocolAndDomainRE","everythingAfterProtocol","localhostDomainRE","nonLocalhostDomainRE","moment","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","input","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","pluralForm","plurals","pluralize","u","withoutSuffix","isFuture","weekdaysParseExact","postformat","symbolMap","pluralForm$1","plurals$1","pluralize$1","months$1","preparse","symbolMap$1","numberMap","reverse","symbolMap$2","numberMap$1","symbolMap$3","numberMap$2","pluralForm$2","plurals$2","pluralize$2","months$2","suffixes","plural","word","num","forms","relativeTimeWithPlural","standalone","isFormat","period","w","ww","lastDigit","last2Digits","symbolMap$4","numberMap$3","meridiemHour","symbolMap$5","numberMap$4","symbolMap$6","numberMap$5","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","substring","monthsShortRegex","monthsParseExact","monthsParse","monthsRegex","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","processRelativeTime","translate","weekdaysParse","longMonthsParse","shortMonthsParse","token","ll","lll","llll","output","months$3","monthsParse$1","monthsRegex$1","plural$1","translate$1","processRelativeTime$1","processRelativeTime$2","processRelativeTime$3","months$4","isFunction","Function","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$2","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$3","invalidDate","monthsShortDot$2","monthsShort$3","monthsParse$4","monthsRegex$4","monthsShortDot$3","monthsShort$4","monthsParse$5","monthsRegex$5","processRelativeTime$4","symbolMap$7","numberMap$6","numbersPast","numbersFuture","translate$2","verbalNumber","monthsStrictRegex$1","monthsShortStrictRegex$1","monthsRegex$6","monthsParse$6","monthsShortWithDots","monthsShortWithoutDots","months$5","monthsShort$5","weekdays$1","months$6","monthsShort$6","weekdays$2","weekdaysShort$1","weekdaysMin$1","processRelativeTime$5","processRelativeTime$6","symbolMap$8","numberMap$7","symbolMap$9","numberMap$8","monthsParse$7","translate$3","weekEndings","translate$4","plural$2","translate$5","eras","since","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","now","$0","$1","$2","suffixes$1","symbolMap$a","numberMap$9","symbolMap$b","numberMap$a","processRelativeTime$7","ezafeNumSuffix","isUpper","p","includes","symbolMap$c","numberMap$b","months$7","suffixes$2","processRelativeTime$8","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","isNaN","units","translateSeconds","translateSingular","special","translate$6","units$1","relativeTimeWithPlural$1","relativeTimeWithSingular","relativeSeconds","translator","correctGrammaticalCase","wordKey","translate$7","symbolMap$d","numberMap$c","relativeTimeMr","symbolMap$e","numberMap$d","symbolMap$f","numberMap$e","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$8","monthsRegex$7","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$9","monthsRegex$8","symbolMap$g","numberMap$f","monthsNominative","monthsSubjective","monthsParse$a","plural$3","translate$8","relativeTimeWithPlural$2","separator","plural$4","relativeTimeWithPlural$3","monthsParse$b","months$8","days","months$9","monthsShort$7","plural$5","translate$9","processRelativeTime$9","translator$1","translator$2","symbolMap$h","numberMap$g","suffixes$3","suffixes$4","numbersNouns","translateFuture","time","translatePast","translate$a","numberNoun","numberAsNoun","hundred","ten","one","suffixes$5","processRelativeTime$a","plural$6","relativeTimeWithPlural$4","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","hm","months$a","days$1","hookCallback","hooks","setHookCallback","callback","isObject","hasOwnProp","isObjectEmpty","k","isUndefined","isNumber","isDate","arrLen","createUTC","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","to","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","argLen","stack","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","func","localeData","removeFormattingTokens","makeFormatFunction","array","formatMoment","expandFormat","replaceLongDateFormatTokens","lastIndex","defaultLongDateFormat","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","diff","aliases","D","dates","date","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","ms","milliseconds","millisecond","Q","quarters","quarter","seconds","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","isoweeks","isoweek","years","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","unit","priority","sort","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","daysInMonth","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","next","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","parsePart","_","lhs","sep","rhs","incr","DOCUMENT_MODE","VALID_DOCTYPE_NAME","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","enquoteDoctypeId","hasPrefix","publicId","prefixes","isConforming","systemId","getDocumentMode","QUIRKS","LIMITED_QUIRKS","NO_QUIRKS","serializeContent","controlCharacterInInputStream","noncharacterInInputStream","surrogateInInputStream","nonVoidHtmlElementStartTagWithTrailingSolidus","endTagWithAttributes","endTagWithTrailingSolidus","unexpectedSolidusInTag","unexpectedNullCharacter","unexpectedQuestionMarkInsteadOfTagName","invalidFirstCharacterOfTagName","unexpectedEqualsSignBeforeAttributeName","missingEndTagName","unexpectedCharacterInAttributeName","unknownNamedCharacterReference","missingSemicolonAfterCharacterReference","unexpectedCharacterAfterDoctypeSystemIdentifier","unexpectedCharacterInUnquotedAttributeValue","eofBeforeTagName","eofInTag","missingAttributeValue","missingWhitespaceBetweenAttributes","missingWhitespaceAfterDoctypePublicKeyword","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingWhitespaceAfterDoctypeSystemKeyword","missingQuoteBeforeDoctypePublicIdentifier","missingQuoteBeforeDoctypeSystemIdentifier","missingDoctypePublicIdentifier","missingDoctypeSystemIdentifier","abruptDoctypePublicIdentifier","abruptDoctypeSystemIdentifier","cdataInHtmlContent","incorrectlyOpenedComment","eofInScriptHtmlCommentLikeText","eofInDoctype","nestedComment","abruptClosingOfEmptyComment","eofInComment","incorrectlyClosedComment","eofInCdata","absenceOfDigitsInNumericCharacterReference","nullCharacterReference","surrogateCharacterReference","characterReferenceOutsideUnicodeRange","controlCharacterReference","noncharacterCharacterReference","missingWhitespaceBeforeDoctypeName","missingDoctypeName","invalidCharacterSequenceAfterDoctypeName","duplicateAttribute","nonConformingDoctype","missingDoctype","misplacedDoctype","endTagWithoutMatchingOpenElement","closingOfElementWithOpenChildElements","disallowedContentInNoscriptInHead","openElementsLeftAfterEof","abandonedHeadElementChild","misplacedStartTagForHeadElement","nestedNoscriptInHead","eofInElementThatCanContainOnlyText","Tokenizer","HTML","$","TAG_NAMES","NS","NAMESPACES","ATTRS","MIME_TYPES","SVG_ATTRS_ADJUSTMENT_MAP","attributename","attributetype","basefrequency","baseprofile","calcmode","clippathunits","diffuseconstant","edgemode","filterunits","glyphref","gradienttransform","gradientunits","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","limitingconeangle","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","pathlength","patterncontentunits","patterntransform","patternunits","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","repeatcount","repeatdur","requiredextensions","requiredfeatures","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","surfacescale","systemlanguage","tablevalues","targetx","targety","textlength","viewbox","viewtarget","xchannelselector","ychannelselector","zoomandpan","XML_ATTRS_ADJUSTMENT_MAP","namespace","XLINK","XML","xmlns","XMLNS","SVG_TAG_NAMES_ADJUSTMENT_MAP","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","clippath","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","foreignobject","lineargradient","radialgradient","textpath","EXITS_FOREIGN_CONTENT","B","BIG","BLOCKQUOTE","BODY","BR","CENTER","CODE","DD","DIV","DL","DT","EM","EMBED","H1","H2","H3","H4","H5","H6","HEAD","HR","I","IMG","LI","LISTING","MENU","META","NOBR","OL","P","PRE","RUBY","S","SMALL","SPAN","STRONG","STRIKE","SUB","SUP","TABLE","TT","U","UL","VAR","causesExit","startTagToken","tn","FONT","getTokenAttr","COLOR","SIZE","FACE","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","adjustTokenSVGTagName","adjustedTagName","isIntegrationPoint","ns","foreignNS","MATHML","ANNOTATION_XML","ENCODING","SVG","FOREIGN_OBJECT","DESC","TITLE","isHtmlIntegrationPoint","MI","MO","MN","MS","MTEXT","isMathMLTextIntegrationPoint","TYPE","ACTION","PROMPT","NAME","A","ADDRESS","APPLET","AREA","ARTICLE","ASIDE","BASE","BASEFONT","BGSOUND","BUTTON","CAPTION","COL","COLGROUP","DETAILS","DIALOG","DIR","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAME","FRAMESET","HEADER","HGROUP","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LINK","MAIN","MALIGNMARK","MARQUEE","MATH","MGLYPH","NAV","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OPTGROUP","OPTION","PARAM","PLAINTEXT","RB","RP","RT","RTC","SCRIPT","SECTION","SELECT","SOURCE","STYLE","SUMMARY","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TR","TRACK","WBR","XMP","SPECIAL_ELEMENTS","UNDEFINED_CODE_POINTS","REPLACEMENT_CHARACTER","CODE_POINTS","EOF","NULL","TABULATION","CARRIAGE_RETURN","LINE_FEED","FORM_FEED","SPACE","EXCLAMATION_MARK","QUOTATION_MARK","NUMBER_SIGN","AMPERSAND","APOSTROPHE","HYPHEN_MINUS","SOLIDUS","DIGIT_0","DIGIT_9","SEMICOLON","LESS_THAN_SIGN","EQUALS_SIGN","GREATER_THAN_SIGN","QUESTION_MARK","LATIN_CAPITAL_A","LATIN_CAPITAL_F","LATIN_CAPITAL_X","LATIN_CAPITAL_Z","RIGHT_SQUARE_BRACKET","GRAVE_ACCENT","LATIN_SMALL_A","LATIN_SMALL_F","LATIN_SMALL_X","LATIN_SMALL_Z","CODE_POINT_SEQUENCES","DASH_DASH_STRING","DOCTYPE_STRING","CDATA_START_STRING","SCRIPT_STRING","PUBLIC_STRING","SYSTEM_STRING","isSurrogate","cp","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","isControlCodePoint","isUndefinedCodePoint","Mixin","host","opts","super","posTracker","onParseError","_setErrorLocation","startLine","endLine","startCol","endCol","col","startOffset","endOffset","_reportError","code","_getOverriddenMethods","mxn","_err","ErrorReportingMixinBase","ErrorReportingTokenizerMixin","LocationInfoTokenizerMixin","parser","ctLoc","locBeforeToken","orig","_bootstrap","fragmentContext","install","tokenizer","_processInputToken","location","beforeToken","PositionTrackingPreprocessorMixin","preprocessor","lastErrOffset","ErrorReportingPreprocessorMixin","preprocessorMixin","onItemPop","pop","current","popAllUpToHtmlElement","stackTop","items","remove","element","LocationInfoOpenElementStackMixin","treeAdapter","lastStartTagToken","lastFosterParentingLocation","currentToken","_setStartLocation","loc","startTag","setNodeSourceCodeLocation","_setEndLocation","closingToken","getNodeSourceCodeLocation","getTagName","endLoc","END_TAG_TOKEN","endTag","updateNodeSourceCodeLocation","tokenizerMixin","openElements","_runParsingLoop","scriptHandler","_processTokenInForeignContent","_processToken","hasInScope","_setDocumentType","documentChildren","getChildNodes","cnLength","isDocumentTypeNode","_attachElementToTree","_appendElement","namespaceURI","_insertElement","_insertTemplate","tmplContent","getTemplateContent","_insertFakeRootElement","_appendCommentNode","parent","children","commentNode","_findFosterParentingLocation","_insertCharacters","hasFosterParent","_shouldFosterParentOnInsertion","currentTmplContent","siblings","textNodeIdx","beforeElement","textNode","currentAttrLocation","_getCurrentLocation","_attachCurrentAttrLocationInfo","currentAttr","methods","_createStartTagToken","_createEndTagToken","_createCommentToken","_createDoctypeToken","initialName","_createCharacterToken","ch","currentCharacterToken","_createEOFToken","_createAttr","attrNameFirstCh","_leaveAttrName","toState","_leaveAttrValue","_emitCurrentToken","EOF_TOKEN","_emitCurrentCharacterToken","MODE","modeName","state","isEol","lineStartPos","droppedBufferSize","advance","html","retreat","dropParsedChunk","prevPos","reduction","FormattingElementList","entries","bookmark","_getNoahArkConditionCandidates","newElement","candidates","neAttrsLength","getAttrList","neTagName","neNamespaceURI","getNamespaceURI","entry","MARKER_ENTRY","elementAttrs","idx","_ensureNoahArkCondition","cLength","neAttrs","neAttrsMap","neAttr","cAttr","NOAH_ARK_CAPACITY","insertMarker","pushElement","ELEMENT_ENTRY","insertElementAfterBookmark","bookmarkIdx","removeEntry","clearToLastMarker","getElementEntryInScopeWithTagName","getElementEntry","OpenElementStack","LocationInfoParserMixin","ErrorReportingParserMixin","defaultTreeAdapter","mergeOptions","doctype","foreignContent","ERR","unicode","DEFAULT_OPTIONS","scriptingEnabled","sourceCodeLocationInfo","HIDDEN_INPUT_TYPE","AA_OUTER_LOOP_ITER","AA_INNER_LOOP_ITER","INITIAL_MODE","BEFORE_HTML_MODE","BEFORE_HEAD_MODE","IN_HEAD_MODE","IN_HEAD_NO_SCRIPT_MODE","AFTER_HEAD_MODE","IN_BODY_MODE","TEXT_MODE","IN_TABLE_MODE","IN_TABLE_TEXT_MODE","IN_CAPTION_MODE","IN_COLUMN_GROUP_MODE","IN_TABLE_BODY_MODE","IN_ROW_MODE","IN_CELL_MODE","IN_SELECT_MODE","IN_SELECT_IN_TABLE_MODE","IN_TEMPLATE_MODE","AFTER_BODY_MODE","IN_FRAMESET_MODE","AFTER_FRAMESET_MODE","AFTER_AFTER_BODY_MODE","AFTER_AFTER_FRAMESET_MODE","INSERTION_MODE_RESET_MAP","TEMPLATE_INSERTION_MODE_SWITCH_MAP","TOKEN_HANDLERS","CHARACTER_TOKEN","tokenInInitialMode","NULL_CHARACTER_TOKEN","WHITESPACE_CHARACTER_TOKEN","ignoreToken","COMMENT_TOKEN","appendComment","DOCTYPE_TOKEN","mode","forceQuirks","setDocumentMode","insertionMode","START_TAG_TOKEN","tokenBeforeHtml","tokenBeforeHead","startTagInBody","headElement","tokenInHead","insertCharacters","startTagInHead","endTagInHead","tokenInHeadNoScript","tokenAfterHead","framesetOk","characterInBody","whitespaceCharacterInBody","endTagInBody","eofInBody","pendingScript","originalInsertionMode","characterInTable","startTagInTable","endTagInTable","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","tokenInTableText","hasInTableScope","generateImpliedEndTags","popUntilTagNamePopped","activeFormattingElements","tokenInColumnGroup","ackSelfClosing","currentTagName","clearBackToTableBodyContext","_insertFakeElement","hasTableBodyContextInTableScope","clearBackToTableRowContext","_closeTableCell","startTagInSelect","endTagInSelect","_resetInsertionMode","newInsertionMode","_popTmplInsertionMode","_pushTmplInsertionMode","eofInTemplate","tokenAfterBody","stopParsing","isRootHtmlElementCurrent","tokenAfterAfterBody","appendCommentToDocument","aaObtainFormattingElementEntry","formattingElementEntry","contains","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","popUntilElementPopped","aaInnerLoop","formattingElement","lastElement","nextElement","getCommonAncestor","elementEntry","counterOverflow","aaRecreateElementFromEntry","detachNode","aaInsertLastNodeInCommonAncestor","commonAncestor","_isElementCausesFosterParenting","_fosterParentElement","aaReplaceFormattingElement","_adoptNodes","insertAfter","callAdoptionAgency","stopped","_switchToTextParsing","RCDATA","RAWTEXT","SCRIPT_DATA","tmplCount","generateImpliedEndTagsThoroughly","errCode","_reconstructActiveFormattingElements","addressStartTagInBody","hasInButtonScope","_closePElement","preStartTagInBody","skipNextNewLine","bStartTagInBody","appletStartTagInBody","areaStartTagInBody","paramStartTagInBody","noembedStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","genericStartTagInBody","activeElementEntry","aStartTagInBody","numberedHeaderStartTagInBody","elementTn","closeTn","generateImpliedEndTagsWithExclusion","listItemStartTagInBody","hrStartTagInBody","rtStartTagInBody","xmpStartTagInBody","selfClosing","svgStartTagInBody","adoptAttributes","htmlStartTagInBody","bodyElement","tryPeekProperlyNestedBodyElement","bodyStartTagInBody","inTemplate","formElement","formStartTagInBody","nobrStartTagInBody","mathStartTagInBody","menuStartTagInBody","tableStartTagInBody","inputType","inputStartTagInBody","imageStartTagInBody","buttonStartTagInBody","iframeStartTagInBody","selectStartTagInBody","framesetStartTagInBody","textareaStartTagInBody","plaintextStartTagInBody","addressEndTagInBody","appletEndTagInBody","pEndTagInBody","hasInListItemScope","liEndTagInBody","ddEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","numberedHeaderEndTagInBody","brEndTagInBody","bodyEndTagInBody","htmlEndTagInBody","formEndTagInBody","tmplInsertionModeStackTop","curTn","tokenInTable","clearBackToTableContext","tdStartTagInTable","colStartTagInTable","formStartTagInTable","tableStartTagInTable","tbodyStartTagInTable","inputStartTagInTable","captionStartTagInTable","colgroupStartTagInTable","savedFosterParentingState","fosterParentingEnabled","_processTokenInBodyMode","hasInSelectScope","prevOpenElement","prevOpenElementTn","createDocument","write","parseFragment","documentMock","_initTokenizerForFragmentParsing","_findFormInFragmentContext","rootElement","getFirstChild","fragment","createDocumentFragment","tmplInsertionModeStack","currentTmplInsertionMode","_setupTokenizerCDATAMode","getNextToken","HIBERNATION_TOKEN","chars","runParsingLoopForCurrentChunk","writeCallback","script","_getAdjustedCurrentElement","allowCDATA","_isIntegrationPoint","nextTokenizerState","switchToPlaintextParsing","getParentNode","setDocumentType","tmpl","setTemplateContent","createCommentNode","_fosterParentText","insertText","donor","recipient","child","_shouldProcessTokenInForeignContent","isCharacterToken","characterInForeignContent","nullCharacterInForeignContent","currentNs","startTagInForeignContent","endTagInForeignContent","listLength","unopenIdx","popUntilTableCellPopped","last","_resetInsertionModeForSelect","selectIdx","ancestor","openElement","insertBefore","insertTextBefore","isImpliedEndTagRequired","isImpliedEndTagRequiredThoroughly","isScopingElement","_indexOf","_isInTemplate","_updateCurrentElement","oldElement","referenceElement","insertionIdx","poppedElement","elementIdx","exclusionTagName","Preprocessor","neTree","$$","C1_CONTROLS_REFERENCE_REPLACEMENTS","DATA_STATE","RCDATA_STATE","RAWTEXT_STATE","SCRIPT_DATA_STATE","PLAINTEXT_STATE","TAG_OPEN_STATE","END_TAG_OPEN_STATE","TAG_NAME_STATE","RCDATA_LESS_THAN_SIGN_STATE","RCDATA_END_TAG_OPEN_STATE","RCDATA_END_TAG_NAME_STATE","RAWTEXT_LESS_THAN_SIGN_STATE","RAWTEXT_END_TAG_OPEN_STATE","RAWTEXT_END_TAG_NAME_STATE","SCRIPT_DATA_LESS_THAN_SIGN_STATE","SCRIPT_DATA_END_TAG_OPEN_STATE","SCRIPT_DATA_END_TAG_NAME_STATE","SCRIPT_DATA_ESCAPE_START_STATE","SCRIPT_DATA_ESCAPE_START_DASH_STATE","SCRIPT_DATA_ESCAPED_STATE","SCRIPT_DATA_ESCAPED_DASH_STATE","SCRIPT_DATA_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE","BEFORE_ATTRIBUTE_NAME_STATE","ATTRIBUTE_NAME_STATE","AFTER_ATTRIBUTE_NAME_STATE","BEFORE_ATTRIBUTE_VALUE_STATE","ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE","ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE","ATTRIBUTE_VALUE_UNQUOTED_STATE","AFTER_ATTRIBUTE_VALUE_QUOTED_STATE","SELF_CLOSING_START_TAG_STATE","BOGUS_COMMENT_STATE","MARKUP_DECLARATION_OPEN_STATE","COMMENT_START_STATE","COMMENT_START_DASH_STATE","COMMENT_STATE","COMMENT_LESS_THAN_SIGN_STATE","COMMENT_LESS_THAN_SIGN_BANG_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE","COMMENT_END_DASH_STATE","COMMENT_END_STATE","COMMENT_END_BANG_STATE","DOCTYPE_STATE","BEFORE_DOCTYPE_NAME_STATE","DOCTYPE_NAME_STATE","AFTER_DOCTYPE_NAME_STATE","AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE","AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE","BOGUS_DOCTYPE_STATE","CDATA_SECTION_STATE","CDATA_SECTION_BRACKET_STATE","CDATA_SECTION_END_STATE","CHARACTER_REFERENCE_STATE","NAMED_CHARACTER_REFERENCE_STATE","AMBIGUOUS_AMPERSAND_STATE","NUMERIC_CHARACTER_REFERENCE_STATE","HEXADEMICAL_CHARACTER_REFERENCE_START_STATE","DECIMAL_CHARACTER_REFERENCE_START_STATE","HEXADEMICAL_CHARACTER_REFERENCE_STATE","DECIMAL_CHARACTER_REFERENCE_STATE","NUMERIC_CHARACTER_REFERENCE_END_STATE","isWhitespace","isAsciiDigit","isAsciiUpper","isAsciiLower","isAsciiLetter","isAsciiAlphaNumeric","isAsciiUpperHexDigit","isAsciiLowerHexDigit","toAsciiLowerCodePoint","toChar","toAsciiLowerChar","findNamedEntityTreeBranch","nodeIx","branchCount","lo","hi","mid","midCp","tokenQueue","returnState","charRefCode","tempBuff","lastStartTagName","consumedAfterSnapshot","active","_errOnNextCodePoint","_consume","_unconsume","_ensureHibernation","chunk","isLastChunk","insertHtmlAtCurrentPos","endOfChunkHit","_reconsumeInState","_consumeSequenceIfMatch","pattern","startCp","caseSensitive","consumedCount","isMatch","patternLength","patternCp","patternPos","_isTempBufferEqualToScriptString","ct","_emitEOFToken","_appendCharToCurrentCharacterToken","_emitCodePoint","_emitSeveralCodePoints","codePoints","_emitChars","_matchNamedCharacterReference","excess","inNode","HAS_DATA_FLAG","_isCharacterReferenceInAttribute","_isCharacterReferenceAttributeQuirk","withSemicolon","nextCp","_flushCodePointsConsumedAsCharacterReference","matchResult","isAsciiHexDigit","DATA","attrName","Uint16Array","lastGapPos","lastCharPos","gapStack","lastChunkWritten","bufferWaterline","_addGap","_processSurrogate","_checkForProblematicCharacters","nodeName","childNodes","parentNode","createTextNode","newNode","referenceNode","templateElement","contentElement","doctypeNode","prevNode","recipientAttrsMap","getTextNodeContent","getCommentNodeContent","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isTextNode","isCommentNode","isElementNode","sourceCodeLocation","endLocation","reduce","merged","optObj","originalMethods","overriddenMethods","Ctor","__mixins","mixin","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","capture","group","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","encode","pretty","segment","JSON","attachKeys","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_typeof","iterator","CopyToClipboard","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_defineProperties","_setPrototypeOf","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","_React$PureComponent","subClass","superClass","_inherits","Constructor","protoProps","staticProps","_super","_classCallCheck","_len","_key","event","_this$props","elem","Children","only","onClick","_this$props2","cloneElement","PureComponent","aa","ca","da","ea","fa","ha","ia","ja","ka","la","ma","v","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","z","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","tag","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","tb","menuitem","area","br","embed","hr","img","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","ed","transition","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","keyCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","email","password","search","tel","url","me","ne","oe","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","anchorNode","anchorOffset","focusNode","focusOffset","setStart","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","listener","of","pf","qf","rf","sf","passive","J","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","ref","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","implementation","Sg","Tg","q","done","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","dependencies","firstContext","lanes","dh","eh","context","memoizedValue","fh","gh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","nh","oh","ph","qh","rh","sh","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","N","O","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","di","lastEffect","stores","ei","fi","gi","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","R","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","digest","Ki","Li","Mi","WeakMap","Ni","Oi","Pi","Qi","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","tail","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onclick","size","createElementNS","autoFocus","T","Gj","Hj","Ij","Jj","Kj","WeakSet","V","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","Vk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","cache","pendingSuspenseBoundaries","dl","fl","gl","hl","il","yj","Zk","kl","reportError","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","querySelectorAll","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","hasElementType","Element","hasMap","hasSet","hasArrayBuffer","ArrayBuffer","isView","it","titleCase","redactingEmail","_str","title","smallWords","mightBeEmail","redacted","redactEmail","GA4","_gtag","_format","_excluded2","_excluded3","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_slicedToArray","_arrayWithHoles","_s","_e","_x","_r","_arr","_n","_iterableToArrayLimit","_nonIterableRest","minLen","_toPropertyKey","hint","prim","toPrimitive","Number","_toPrimitive","isInitialized","_testMode","_currentMeasurementId","_hasLoadedGA","_isQueuing","_queueGtag","GA_MEASUREMENT_ID","nonce","gtagUrl","async","dataLayer","gtag","gaOptions","mapFields","cookieUpdate","cookieExpires","cookieDomain","cookieFlags","userId","clientId","anonymizeIp","contentGroup1","contentGroup2","contentGroup3","contentGroup4","contentGroup5","allowAdFeatures","allowAdPersonalizationSignals","nonInteraction","page","hitCallback","prev","_ref","_ref2","initConfigs","trackingId","gtagOptions","_options$testMode","testMode","_loadGA","mergedGtagOptions","_toGtagOptions","queues","fieldsObject","_gaCommand","eventCategory","eventAction","eventLabel","eventValue","event_category","event_label","non_interaction","_len2","_key2","_gaCommandSendEvent","_args$","rest","hitType","timingCategory","timingVar","timingValue","timingLabel","_this$_toGtagOptions","page_path","page_title","page_location","_len3","_key3","_gaCommandSendPageview","_args$2","_len4","_key4","_gaCommandSendEventParameters","_gaCommandSendPageviewParameters","_gaCommandSendTiming","_len5","_key5","_len6","_key6","_gaCommandSend","_gaCommandSet","_len7","_key7","readyCallback","ga","optionsOrName","params","category","label","transport","fieldObject","_default","_window","_ga","nodeInterop","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","cacheBabelInterop","cacheNodeInterop","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","SuspenseList","isSuspenseList","getModuleId","toStringTag","pageClassName","pageLinkClassName","activeClassName","activeLinkClassName","getEventListener","pageSelectedHandler","extraAriaContext","pageLabelBuilder","rel","ariaLabel","className","role","tabIndex","onKeyPress","breakLabel","breakAriaLabel","breakClassName","breakLinkClassName","breakHandler","handleClick","isPrevious","pageCount","isNext","callActiveCallback","isActive","setState","callCallback","eventListener","isBreak","nextSelectedPage","isInteger","handlePageChange","getForwardJump","getBackwardJump","onPageChange","onPageActive","nextPageRel","prevPageRel","selectedPageRel","pageRangeDisplayed","marginPagesDisplayed","breakAriaLabels","getPageElement","backward","forward","handleBreakClick","initialPage","forcePage","disableInitialCallback","hrefBuilder","hrefAllControls","ariaLabelBuilder","handlePageSelected","getElementPageRel","getElementHref","renderOnZeroPageCount","disabledClassName","disabledLinkClassName","containerClassName","previousLabel","previousClassName","previousLinkClassName","previousAriaLabel","prevRel","nextLabel","nextClassName","nextLinkClassName","nextAriaLabel","nextRel","handlePreviousPage","pagination","handleNextPage","Component","define","_propTypes","_react2","_createClass","_extends","uniq","getClipboardData","getData","defaultRenderTag","onRemove","classNameRemove","getTagDisplayValue","defaultRenderInput","addTag","onChange","defaultRenderLayout","tagComponents","inputComponent","defaultPasteSplit","defaultInputProps","placeholder","TagsInput","_React$Component","isFocused","blur","accept","tagDisplayProp","changed","hasControlledInput","onChangeInput","inputValue","tags","_this2","_props","onValidationReject","onlyUnique","maxTags","every","currentTag","_getTagDisplayValue","rejectedTags","_validate","tagDisplayValue","remainingLimit","indexes","_clearInput","_props2","validate","validationRegex","added","preventSubmit","handleOnFocus","handleOnBlur","_tag","_makeTag","_addTags","_this3","_props3","addOnPaste","pasteSplit","_props4","removeKeys","addKeys","_shouldPreventDefaultEventOnAdd","_removeTag","clickedElement","parentElement","div","inputProps","onFocus","onBlur","addOnBlur","_props$inputProps","otherInputProps","currentValue","_props5","prevProps","_this4","_props6","tagProps","renderLayout","renderTag","renderInput","focusedClassName","handleRemove","onPaste","handlePaste","onKeyDown","handleKeyDown","handleChange","__self","__source","jsx","jsxs","forceUpdate","_status","_result","count","act","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","valueA","valueB","StyleToObject","hasIterator","ranges","inst","warning","classes","appendClass","parseValue","newClass","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","leafPrototypes","getProto","def","definition","chunkId","promises","miniCssF","inProgress","dataWebpackPrefix","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","onerror","onload","doneFns","head","nmd","paths","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","_inheritsLoose","isAbsolute","pathname","spliceOne","list","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","part","valueEqual","aValue","bValue","provided","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","locationsAreEqual$$1","allPaths","baseTag","querySelector","pushHashPath","nextPaths","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","React","calculateChangedBits","contextProp","getUniqueId","emitter","handlers","on","handler","off","changedBits","createEventEmitter","nextProps","oldValue","objectIs","_Provider$childContex","_React$Component2","observedBits","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","Lifecycle","onMount","onUnmount","cacheLimit","cacheCount","generatePath","generator","compilePath","Redirect","computedMatch","_ref$push","method","locationsAreEqual","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","_options$strict","_options$sensitive","cacheKey","pathCache","regexp","compilePath$1","_compilePath","Route","context$1","isEmptyChildren","createURL","staticHandler","methodName","noop","Switch","useHistory","useLocation","useParams","atob","header","level","logger","Log2","nopLogger","info","Log","setLevel","setLogger","Logger","_name","_method","throw","methodLogger","createStatic","staticMethod","staticLogger","_len8","_key8","CryptoUtils","_randomWord","generateUUIDv4","generateCodeVerifier","generateCodeChallenge","code_verifier","hashed","sha256","generateBasicAuth","client_id","client_secret","basicAuth","Event","_logger","_callbacks","addHandler","removeHandler","raise","_len9","ev","_key9","JwtUtils","decode","jwt_decode","PopupUtils","center","features","find","outerWidth","outerHeight","serialize","_ref3","Timer","_timerHandle","_expiration","_callback","getEpochTime","cancel","durationInSeconds","logger2","expiration","timerDurationInSeconds","setInterval","clearInterval","UrlUtils","readParams","responseMode","URL","URLSearchParams","ErrorResponse","_b","_c","error_description","error_uri","userState","session_state","url_state","ErrorTimeout","AccessTokenEvents","_expiringTimer","_expiredTimer","_expiringNotificationTimeInSeconds","expiringNotificationTimeInSeconds","load","container","access_token","expires_in","expiring","expired","unload","addAccessTokenExpiring","removeAccessTokenExpiring","addAccessTokenExpired","removeAccessTokenExpired","CheckSessionIFrame","_client_id","_intervalInSeconds","_stopOnError","_timer","_session_state","_message","origin","_frame_origin","_frame","stop","parsedUrl","visibility","send","InMemoryWebStorage","clear","getItem","setItem","removeItem","JsonService","additionalContentTypes","_jwtHandler","_extraHeaders","_contentTypes","fetchWithTimeout","timeoutInSeconds","initFetch","fetch","controller","AbortController","timeoutId","abort","signal","DOMException","getJson","credentials","headers","response","appendExtraHeaders","status","contentType","startsWith","json","statusText","postForm","_ref4","initCredentials","responseText","customKeys","protectedHeaders","headerName","MetadataService","_settings","_signingKeys","_metadata","_metadataUrl","metadataUrl","_jsonService","extraHeaders","signingKeys","metadata","fetchRequestCredentials","_fetchRequestCredentials","resetSigningKeys","getMetadata","metadataSeed","getIssuer","_getMetadataProperty","getAuthorizationEndpoint","getUserInfoEndpoint","getTokenEndpoint","getCheckSessionIframe","getEndSessionEndpoint","getRevocationEndpoint","getKeysEndpoint","getSigningKeys","jwks_uri","keySet","WebStorageStateStore","store","localStorage","_store","_prefix","DefaultResponseType","DefaultScope","DefaultClientAuthentication","DefaultResponseMode","DefaultStaleStateAgeInSeconds","DefaultClockSkewInSeconds","OidcClientSettingsStore","_ref5","authority","response_type","scope","redirect_uri","post_logout_redirect_uri","client_authentication","max_age","ui_locales","acr_values","resource","response_mode","filterProtocolClaims","loadUserInfo","staleStateAgeInSeconds","clockSkewInSeconds","userInfoJwtIssuer","mergeClaims","disablePKCE","stateStore","refreshTokenCredentials","revokeTokenAdditionalContentTypes","refreshTokenAllowedScope","extraQueryParams","extraTokenParams","UserInfoService","_metadataService","_getClaimsFromJwt","getClaims","claims","TokenClient","exchangeCode","_ref6","grant_type","append","exchangeCredentials","_ref7","exchangeRefreshToken","_ref8","refresh_token","revoke","token_type_hint","ResponseValidator","_claimsService","_userInfoService","_tokenClient","validateSigninResponse","_processSigninState","_processCode","isOpenId","_validateIdTokenAttributes","_processClaims","skipUserInfo","validateCredentialsResponse","id_token","validateRefreshResponse","profile","hasIdToken","validateSignoutResponse","validateSub","sub","tokenResponse","existingToken","incoming","existing","auth_time","azp","State","created","request_type","toStorageString","fromStorageString","storageString","clearStaleState","storage","age","cutoff","SigninState","code_challenge","SigninRequest","_ref9","state_data","optionalParams","searchParams","SigninResponse","token_type","splitState","expires_at","SignoutRequest","_ref10","id_token_hint","SignoutResponse","DefaultProtocolClaims","InternalRequiredProtocolClaims","ClaimsService","protocolClaims","claim","claims1","claims2","previousValue","OidcClient","settings","metadataService","_validator","createSigninRequest","_ref11","request_uri","login_hint","signinRequest","signinState","readSigninResponseState","removeState","storedStateString","processSigninResponse","processResourceOwnerPasswordCredentials","_ref12","username","signinResponse","useRefreshToken","_ref13","allowableScopes","createSignoutRequest","signoutState","readSignoutResponseState","processSignoutResponse","revokeToken","SessionMonitor","_userManager","_start","user","_sub","_sid","sid","_checkSessionIFrame","intervalInSeconds","checkSessionIntervalInSeconds","stopOnError","stopCheckSessionOnError","checkSessionIFrame","_stop","monitorAnonymousSession","timerHandle","session","querySessionStatus","tmpUser","raiseEvent","events","_raiseUserSessionChanged","_raiseUserSignedOut","_raiseUserSignedIn","addUserLoaded","addUserUnloaded","getUser","User","scopes","messageSource","AbstractChildWindow","_abort","_disposeHandlers","navigate","keepOpen","scriptOrigin","_dispose","close","dispose","_notifyParent","targetOrigin","DefaultPopupWindowFeatures","toolbar","closePopupWindowAfterInSeconds","DefaultPopupTarget","DefaultAccessTokenExpiringNotificationTimeInSeconds","DefaultCheckSessionIntervalInSeconds","DefaultSilentRequestTimeoutInSeconds","UserManagerSettingsStore","popup_redirect_uri","popup_post_logout_redirect_uri","popupWindowFeatures","popupWindowTarget","redirectMethod","redirectTarget","iframeNotifyParentOrigin","iframeScriptOrigin","silent_redirect_uri","silentRequestTimeoutInSeconds","automaticSilentRenew","validateSubOnSilentRenew","includeIdTokenInSilentRenew","monitorSession","query_status_response_type","revokeTokenTypes","revokeTokensOnSignout","includeIdTokenInSilentSignout","accessTokenExpiringNotificationTimeInSeconds","userStore","sessionStorage","IFrameWindow","_ref14","_timeoutInSeconds","createHiddenIframe","iframe","timer","_a2","frame","notifyParent","IFrameNavigator","prepare","_ref15","PopupWindow","_ref16","centeredPopup","open","closed","popupClosedInterval","notifyOpener","opener","PopupNavigator","_ref17","_ref18","RedirectNavigator","_ref19","targetWindow","redirect","UserManagerEvents","_userLoaded","_userUnloaded","_silentRenewError","_userSignedIn","_userSignedOut","_userSessionChanged","removeUserLoaded","removeUserUnloaded","addSilentRenewError","removeSilentRenewError","_raiseSilentRenewError","addUserSignedIn","removeUserSignedIn","addUserSignedOut","removeUserSignedOut","addUserSessionChanged","removeUserSessionChanged","SilentRenewService","_isStarted","_retryTimer","_tokenExpiring","signinSilent","RefreshState","ApiClientBase","oidcStorage","authority_url","transformOptions","authorization","thisArg","kindOf","thing","kindOfTest","typeOfTest","isArrayBuffer","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","findKey","_global","isContextDefined","isTypedArray","TypedArray","Uint8Array","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","reducedDescriptors","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","isFormData","kind","FormData","isArrayBufferView","buffer","isBoolean","isStream","pipe","merge","caseless","assignValue","targetKey","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","searchString","forEachEntry","pair","matchAll","regExp","freezeMethods","toObjectSet","arrayOrString","toCamelCase","toFiniteNumber","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","captureStackTrace","utils","description","lineNumber","columnNumber","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","formData","metaTokens","option","visitor","defaultVisitor","useBlob","Blob","convertValue","Buffer","isFlatArray","exposedHelpers","build","charMap","AxiosURLSearchParams","_pairs","toFormData","_encode","buildURL","serializeFn","serializedParams","hashmarkIndex","use","fulfilled","rejected","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","protocols","hasBrowserEnv","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","platform","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","transitionalDefaults","adapter","transformRequest","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","parseHeaders","tokensRE","parseTokens","deleted","deleteHeader","normalize","normalized","formatHeader","asStrings","first","computed","accessor","accessors","defineAccessor","accessorName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","ERR_BAD_REQUEST","samplesCount","bytes","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","passed","freq","timestamp","force","isDownloadStream","bytesNotified","_speedometer","speedometer","throttle","lengthComputable","progressBytes","rate","progress","estimated","msie","urlParsingNode","originURL","resolveURL","protocol","hostname","port","requestURL","expires","domain","secure","cookie","toGMTString","read","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","newConfig","auth","btoa","isURLSameOrigin","xsrfValue","cookies","XMLHttpRequest","resolveConfig","requestData","requestHeaders","onCanceled","unsubscribe","onloadend","responseHeaders","getAllResponseHeaders","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","progressEventReducer","upload","subscribe","aborted","parseProtocol","composeSignals","signals","streamChunk","chunkSize","byteLength","trackStream","stream","onProgress","onFinish","iterable","readBytes","ReadableStream","pull","enqueue","highWaterMark","fetchProgressDecorator","isFetchSupported","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","getBodyLength","fetchOptions","finished","composedSignal","stopTimeout","requestContentLength","contentTypeHeader","_request","isStreamResponse","responseContentLength","responseData","knownAdapters","http","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","formatMessage","opt","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","defaultConfig","Cancel","spread","isAxiosError","formToJSON","getAdapter","BadgesClient","baseUrl","jsonParseReviver","badgeName","badgeFile","url_","content_","options_","transformedOptions_","_error","_response","processCreate","_headers","_responseText","result200","throwException","processGet","resultData200","BadgeListVm","fromJS","processDelete","getById","processGetById","BadgeForIdDto","award","processAward","processRevoke","setPreferredBadge","processSetPreferredBadge","CountriesClient","CountryListVm","DoomCentralEventsClient","getEvents","upcomingEventsPageNumber","upcomingEventsPageSize","pastEventsPageNumber","pastEventsPageSize","processGetEvents","EventsPageVm","contentDisposition","fileNameMatch","processUpdate","getEventById","processGetEventById","EventVm","getRawEventDataById","processGetRawEventDataById","RawEventPostVm","getMyEvents","processGetMyEvents","EmotesClient","emoteName","emoteCode","emoteFile","EmoteListVm","ForumGroupsClient","ForumGroupListVm","reorder","processReorder","ForumPermissionGroupsClient","ForumPermissionGroupListVm","getGroupById","processGetGroupById","ForumPermissionsGroupVm","ForumsClient","getForums","processGetForums","ForumListVm","getForumListing","processGetForumListing","ForumListingVm","getThreadsByForumId","forumId","pageNumber","pageSize","processGetThreadsByForumId","ForumThreadListingPageVm","getAllForumsAndGroups","processGetAllForumsAndGroups","AllForumListingVm","GoogleAnalyticsClient","getGoogleAnalyticsId","processGetGoogleAnalyticsId","HomeClient","getHomePage","processGetHomePage","HomePageVm","NewsClient","getNewsListingPage","processGetNewsListingPage","NewsListingPageVm","getNewsById","processGetNewsById","NewsPostVm","publish","processPublish","unpublish","processUnpublish","getRawNewsDataById","processGetRawNewsDataById","RawNewsPostVm","getMyNews","processGetMyNews","NotificationsClient","getUserNotifications","processGetUserNotifications","NotificationVm","ackUserNotification","processAckUserNotification","deleteUserNotification","processDeleteUserNotification","PromotionsClient","getPromotions","processGetPromotions","PromotedItemsVm","searchForPromotableResources","includeNews","includeEvents","processSearchForPromotableResources","PromotableResourceVm","setNewPromotions","processSetNewPromotions","ReactionsClient","reactName","reactFile","ReactionsListVm","SidebarClient","getSidebars","processGetSidebars","SidebarVm","StreamerClient","streamId","streamerNationality_CountryCode","profilePicture","StreamListVm","SubscriptionClient","getSubscriptions","includeNewsAndEvents","processGetSubscriptions","UserSubscriptionVm","deleteSubscriptions","processDeleteSubscriptions","ThreadPostsClient","threadId","post","quotedPostId","postFiles","postFileDescriptions","item_","getThreadPostByPostId","postId","processGetThreadPostByPostId","IndividualPostVm","approve","processApprove","lock","processLock","unlock","processUnlock","ThreadsClient","getThreadList","processGetThreadList","ThreadListingPageVm","getThreadPageById","processGetThreadPageById","ThreadViewVm","move","processMove","processSplit","moderate","processModerate","unmoderate","processUnmoderate","sticky","processSticky","unsticky","processUnsticky","markAsRead","processMarkAsRead","getPostsByThreadId","processGetPostsByThreadId","PostPaginatedListVm","getThreadPostsByParameters","viewMode","processGetThreadPostsByParameters","UsersClient","UsersVm","searchUsers","userSearchQuery","processSearchUsers","SearchUsersVm","getSummaryForUser","processGetSummaryForUser","UserSummaryVm","getUserProfile","userName","processGetUserProfile","UserProfileVm","getBadgeReportForUser","processGetBadgeReportForUser","UserBadgeReportVm","setRoleForUser","processSetRoleForUser","setBanForUser","processSetBanForUser","DeleteBadgeCommand","badgeId","AwardBadgeCommand","badgeOwner","RevokeBadgeCommand","badgeOwnerId","SetPreferredBadgeCommand","badges","BadgesDto","badgeFileName","countries","Country","ValueObject","countryCode","CreateDoomCentralEventCommand","eventName","eventPost","eventStartDateTime","eventEndDateTime","eventRegion","eventStreamerId","allowedFileExtensions","maxFileSize","maxFilesPerPost","EventRegion","DeleteDoomCentralEventCommand","eventId","UpdateDoomCentralEventCommand","published","eventDetails","RawEventPostDetailDto","eventStartDate","eventEndDate","streamerId","locked","hidden","moderated","liveEventItems","upcomingEventItems","pastEventItems","newsItems","recentThreads","EventListVm","EventPaginatedListVm","NewsItemsDto","RecentThreadDto","eventList","EventItemDto","organizerId","totalCount","totalPages","postAuthor","posts","postDate","isSticky","isHot","isNew","EventDetailDto","eventDuration","eventPublished","eventStreamer","eventStreamProfilePicName","eventOrganizerId","eventOrganizerUserName","eventOrganizerDisplayName","eventPostContent","DeleteEmoteCommand","emoteId","emotes","EmotesDto","emoteFileName","CreateForumGroupCommand","DeleteForumGroupCommand","clobber","UpdateForumGroupCommand","ReorderForumGroupsAndForumsCommand","orderArray","ForumOrderObject","resourceId","forumGroups","ForumGroupsDto","CreateForumPermissionGroupCommand","groupName","initialGroupMembers","initialForumGrants","initialForumGroupGrants","ForumGrants","ForumGroupGrants","permissionLevel","ForumPermissionLevel","forumGroupId","forumPermissionGroups","ForumPermissionsGroupsDto","forumPermissionGroupDetails","permissionGroupUsers","permissionGroupForumClaims","permissionGroupForumGroupClaims","ForumPermissionGroupDetailDto","ForumPermissionGroupUsersDto","ForumPermissionGroupForumClaimsDto","ForumPermissionGroupForumGroupClaimsDto","applicationUserId","forumName","forumGroupName","CreateForumCommand","DeleteForumCommand","UpdateForumCommand","ForumGroupDto","groupDescription","forums","ForumDetailDto","threadCount","postCount","lastActive","highestPostId","unread","LastActiveDto","postAuthorId","postAuthorUserName","postAuthorDisplayName","forumDetails","threadList","ForumThreadDetailDto","ForumThreadPaginatedListVm","groupId","ThreadListItemDto","stickied","approved","hot","threadAuthorUserName","threadAuthorDisplayName","dcEvent","dcNews","dcForum","lastPost","pages","unreadPosts","DcEventDto","DcNewsPostDto","DCForumDto","LastPostDto","ForumDto","AllForumGroupDto","AllForumDetailDto","promotedItems","eventItems","PromotedItemDto","promotedTitle","promotedBlurb","promotedImageUrl","promotedType","PromotedType","CreateNewsCommand","newsTitle","newsContent","DeleteNewsCommand","newsId","UpdateNewsCommand","newsDetails","RawNewsPostDetailDto","newsDate","newsPublisherId","newsPublisherUsername","newsListing","NewsPaginatedListVm","newsList","NewsListingItemDto","publishDate","newsPublisherUserName","newsPublisherDisplayName","NewsPostDetailDto","newNotifications","postNotifications","PostNotificationDto","notifierName","threadName","acknowledged","PostNotificationType","AckNotificationCommand","notificationId","DeleteNotificationCommand","promotableItems","PromotableItemDto","sampleContent","SetPromotedItemsCommand","newPromotedItems","DeleteReactionCommand","reactionId","reactions","ReactionsDto","reactFileName","StreamPlatform","DeleteStreamerCommand","streamers","StreamerDto","channelId","channelName","profilePictureName","streamerNationality","streamPlatform","subscriptions","ThreadSubscriptionDto","authorName","lastUpdate","DeleteSubscriptionCommand","subscriptionId","PostFileUploadItem","DeleteThreadPostCommand","UpdateThreadPostCommand","editReason","ApproveThreadPostCommand","LockThreadPostCommand","UnlockThreadPostCommand","IndividualPostItemDto","postContent","embedlessPost","editIteration","postNumber","postAuthorBadgeUrl","postAuthorBadgeName","CreateForumThreadCommand","originalPost","DeleteForumThreadCommand","ApproveForumThreadCommand","LockThreadCommand","UnlockThreadCommand","ModerateThreadCommand","UnmoderateThreadCommand","StickyForumThreadCommand","UnstickyForumThreadCommand","MarkThreadPostsAsReadCommand","highestReadThreadPost","ThreadPaginatedListVm","ThreadFilter","threadDetail","ThreadDetailDto","threadDate","postList","goToPostId","PostItemDto","PostFileDto","postFileName","postPath","postFileDescription","sizeBytes","PostViewMode","userList","UserDto","lockoutEnabled","lockoutEnd","banned","userRoles","userBadges","availableBadges","UserBadgeDto","userSummary","threadPosts","UserSummaryDto","ThreadPostItemDto","badgeUrl","registrationDate","lastLoginDate","threadTitle","SetRolesForUserCommand","roles","SetBanForUserCommand","SwaggerException","isSwaggerException","DoomCentralEventRoles","GlobalEventAdministrator","EventOrganizer","DoomCentralRoles","GlobalAdministrator","PromotionAdministrator","DoomCentralUser","ForumRoles","GlobalForumAdministrator","NewsPostRoles","GlobalNewsAdministrator","NewsAuthor","FormatETA","startDate","endDate","RelativeTime","containsDuplicate","NumberFormat","minimumFractionDigits","maximumFractionDigits","componentroles","userroles","comRoles","usrRoles","navigateToReturnUrl","returnUrl","routeForResourceType","DoomCentralEvent","ForumThread","NewsPost","idForThreadType","dto","padTo2Digits","padStart","FormatUTCISOToLocalISO","utcDate","localDateString","toLocaleDateString","formatBytes","decimals","dm","getReturnUrl","fromQuery","QueryParameterNames","ReturnUrl","redirectToApiAuthorizationPath","apiAuthorizationPath","redirectUrl","Message","LoginActions","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","DiscoveryEndpoint","ApiAuthorizationPrefix","Login","LoginCallback","LogOutCallback","IdentityRegisterPath","IdentityManagePath","AccessDenied","oidcConfig","onSigninCallback","_jsx","AuthContext","fallbackMessage","initialAuthState","isLoading","isAuthenticated","activeNavigator","loginError","userManagerContextKeys","navigatorKeys","unsupportedEnvironment","fnName","defaultUserManagerImpl","redirectNavigator","popupNavigator","iframeNavigator","_client","_redirectNavigator","_popupNavigator","_iframeNavigator","_events","_silentRenewService","startSilentRenew","_sessionMonitor","_loadUser","removeUser","storeUser","signinRedirect","requestArgs","handle","_signinStart","signinRedirectCallback","_signinEnd","signinResourceOwnerCredentials","_ref20","_buildUser","signinPopup","_signin","signinPopupCallback","_useRefreshToken","verifySub","signinSilentCallback","signinCallback","signoutCallback","signoutRedirectCallback","signoutPopupCallback","signoutSilentCallback","navResponse","signoutRedirect","_signoutStart","_signoutEnd","signoutPopup","_signout","_revokeInternal","signoutRequest","signoutResponse","signoutSilent","revokeTokens","types","typesPresent","stopSilentRenew","_userStoreKey","AuthProvider","skipSigninCallback","onRemoveUser","onSignoutRedirect","onSignoutPopup","UserManagerImpl","userManager","userManagerProp","userManagerSettings","userManagerContext","fromEntries","didInitialize","hasAuthParams","handleUserLoaded","handleUserUnloaded","handleSilentRenewError","React2","useAuth","React3","LoginRedirect","LogoutCallback","ApiAuthorizationRoutes","_jsxs","SiTwitter","others","fill","viewBox","SiInstagram","SiYoutube","SiTwitch","globalCssModule","mapToCssModules","cssModule","omit","omitKeys","pick","pickKeys","warned","warnOnce","deprecated","propType","explanation","DOMElement","targetPropType","tagPropType","TransitionTimeouts","TransitionPropTypeKeys","TransitionStatuses","keyCodes","space","enter","tab","down","home","getTag","findDOMElements","isReactRefObj","isArrayOrNodeList","els","getTarget","allElements","fluid","Container","_props$tag","Tag","attributes","containerClass","variant","innerRef","CloseButton","outline","Button","_props$color","btnOutlineColor","Footer","_Fragment","alt","maxHeight","toKebabCase","mergeClasses","defaultAttributes","stroke","strokeLinecap","strokeLinejoin","Icon","absoluteStrokeWidth","iconNode","createLucideIcon","iconName","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appear","isMounting","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","prevState","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","ReactDOM","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","onExited","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","TransitionGroupContext","baseClass","baseClassActive","Fade","_props$baseClass","_props$baseClassActiv","_props$innerRef","otherProps","transitionProps","fade","isOpen","Toast","_props$isOpen","_props$transition","_props$fade","toastTransition","ErrorContext","setError","ErrorProvider","ErrorMessage","setHidden","errors","Ft","It","visible","$t","fillRule","clipRule","Wt","_t","Ut","subscribers","addToast","toasts","dismissible","dismiss","loading","Ot","finally","custom","Kt","toastFunction","Jt","getHistory","insertAt","styleSheet","cssText","ft","qt","yt","xt","vt","wt","Tt","St","Rt","Et","Nt","Pt","invert","toast","unstyled","interacting","setHeights","visibleToasts","heights","expanded","removeToast","defaultRichColors","closeButton","cancelButtonStyle","actionButtonStyle","tt","descriptionClassName","et","ot","gap","loadingIcon","expandByDefault","icons","closeButtonAriaLabel","at","pauseWhenPageIsHidden","nt","st","rt","Mt","At","findIndex","toastId","Lt","mt","pt","gt","zt","ht","bt","useIsDocumentHidden","kt","Dt","jt","lt","getBoundingClientRect","onAutoClose","important","richColors","onPointerDown","setPointerCapture","onPointerUp","dt","getPropertyValue","onDismiss","onPointerMove","Bt","x1","y1","x2","y2","icon","Ct","cancelButton","actionButton","Ht","getComputedStyle","hotkey","expand","theme","toastOptions","containerAriaLabel","matchMedia","Gt","preventScroll","HTMLElement","onMouseEnter","onMouseMove","onMouseLeave","MAX_WIDTH","Layout","navbar","footer","maxWidth","minHeight","Toaster","LoadingIndicator","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","_onClick","ex","isModifiedEvent","Link","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","NavLink","ariaCurrent","_ref$ariaCurrent","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","dark","fixed","light","Navbar","_classNames","_props$expand","_props$container","getExpandClass","NavbarBrand","NavbarToggler","_transitionStatusToCl","horizontal","transitionStatusToClassHash","Collapse","_Component","dimension","isAppearing","getNode","getDimension","scrollWidth","scrollHeight","collapseClass","getTransitionClass","card","justified","pills","tabs","vertical","Nav","_props$vertical","getVerticalClass","NavItem","_this$props$tag","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","Manager","_React$useState","setReferenceNode","hasUnmounted","handleSetReferenceNode","DropdownContext","InputGroupContext","a11y","nav","toggle","dropup","inNavbar","setActiveFromChild","menuRole","preventDefaultKeys","Dropdown","addEvents","handleDocumentClick","removeEvents","handleMenuRef","handleToggleRef","containerRef","menuRef","toggleRef","handleProps","getContainer","menu","getMenu","getToggle","targetIsToggle","clickIsInMenu","clickIsInInput","classList","isTargetMenuItem","isTargetMenuCtrl","getMenuCtrl","isTab","_this2$getMenuItems$","getMenuItems","_this$getMenuItems$","click","$menuitems","_$menuitems","_$menuitems3","charPressed","onMenuRef","onToggleRef","_$menuCtrl","menuContainer","getItemType","_this5","_omit","subItemIsActive","dropdownItem","insideInputGroup","getContextValue","UncontrolledDropdown","defaultOpen","onToggle","unwrapArray","safeInvoke","setRef","acc","useIsomorphicLayoutEffect","Reference","refHandler","caret","DropdownToggle","returnFunction","tagRef","getRole","getWindow","isHTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","offsetTop","right","bottom","getWindowScroll","win","pageXOffset","pageYOffset","getNodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","rect","isElementScaled","scroll","offsets","getNodeScroll","clientLeft","clientTop","getLayoutRect","assignedSlot","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placement","placements","modifierPhases","modifiers","visited","requires","requiresIfExists","dep","depModifier","debounce","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","modifiersData","elements","styles","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","mergeByName","enabled","_ref$options","effect","cleanupFn","noopFn","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","_options$scroll","_options$resize","resize","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","popperOffsets","arrow","initialStyles","margin","attribute","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","getOppositePlacement","getOppositeVariationPlacement","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","clientWidth","clientHeight","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","fittingPlacement","within","mathMax","mathMin","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","createPopper","eventListeners","computeStyles","applyStyles","flip","hide","EMPTY_MODIFIERS","NOOP","NOOP_PROMISE","Popper","_ref$placement","_ref$strategy","_ref$modifiers","popperElement","setPopperElement","_React$useState2","setArrowElement","_usePopper","prevOptions","optionsWithDefaults","updateStateModifier","popperOptions","newOptions","isEqual","popperInstanceRef","popperInstance","defaultCreatePopper","usePopper","childrenProps","arrowProps","updateOnSelect","directionPositionMap","DropdownMenu","_this$props$flip","_this$props$modifiers","show","position1","position2","poperPlacement","poperModifiers","persistStyles","combinedStyle","divider","DropdownItem","getTabIndex","_this$props$toggle","_omit$tag","Spinner","_props$type","_props$children","inverse","Card","CardHeader","CardBody","CardTitle","CardFooter","ReactPaginate","setPageChange","setLoading","notifications","NotificationPagination","setPageNumber","_s$notifierName","MentionOrQuoted","client","setModNotification","submitAckNotification","submitDeleteNotification","setIsOpen","modNotification","setNotifications","fetchData","NotificationsList","ThemeDropdown","setTheme","useTheme","prefersDarkMode","initialTheme","userThemePref","selectedTheme","dropdownOpen","setDropdownOpen","FORUM_LINKS","_auth$user","_auth$user2","_auth$user3","_auth$user4","adminMenuRoles","canPromote","BSNavbar","preferred_username","Notifications","StreamerRoles","StreamAdministrator","FRAGMENT","accesskey","class","contenteditable","contextmenu","itemprop","tabindex","toComponent","titleAttributes","bodyAttributes","htmlAttributes","noscriptTags","styleTags","linkTags","metaTags","scriptTags","prioritizeSeoTags","priorityMethods","noscript","instances","setHelmet","helmet","helmetInstances","encodeSpecialCharacters","helmetData","isEqualNode","oldTags","newTags","onChangeClientState","rendered","emitChange","defer","cancelAnimationFrame","requestAnimationFrame","mapNestedChildrenToProps","flattenArrayTypeChildren","arrayTypeChildren","newChildProps","nestedChildren","mapObjectTypeChildren","newProps","mapArrayTypeChildrenToProps","warnOnInvalidChildren","mapChildrenToProps","defaultTitle","titleTemplate","Helmet","rowColWidths","rowColsPropType","noGutters","xs","sm","xl","xxl","widths","Row","_props$widths","colClasses","colWidth","colSize","isXs","colWidths","stringOrNumberProp","columnProps","getColumnSizeClass","Col","_getColumnClasses","modifiedAttributes","columnProp","colSizeInterfix","colClass","_colClass","getColumnClasses","AdminNav","HelmetPages","AdminPanel","row","inline","floating","noMargin","FormGroup","switchProp","formCheck","Label","htmlFor","colFormLabel","formLabel","bsSize","valid","plaintext","addon","Input","getRef","_this$props$type","checkInput","selectInput","rangeInput","formControlClass","setBadgeName","setBadgeFile","evt","files","setModBadge","setBadges","selectedBadge","setSelectedBadge","modBadge","_badges$find","CreateNewBadge","DeleteBadge","setEmoteName","setEmoteFile","setEmoteCode","setModEmote","_selectedEmote$id","setEmotes","selectedEmote","setSelectedEmotes","modEmote","_emotes$find","CreateNewEmote","DeleteEmote","setPageSize","bordered","borderless","hover","responsive","responsiveTag","striped","Table","_props$responsiveTag","ResponsiveTag","table","responsiveClassName","setModEvent","deleteSubmit","_events$liveEventItem","_events$liveEventItem2","_events$liveEventItem3","_events$upcomingEvent","_events$upcomingEvent2","_events$upcomingEvent3","_events$pastEventItem","_events$pastEventItem2","_events$pastEventItem3","modEvent","setEvents","setUpcomingEventsPageNumber","setUpcomingEventsPageSize","setPastEventsPageNumber","setPastEventsPageSize","EventTable","EventPagination","EventOptions","selectedGroupId","setSelectedGroupId","selectedForum","selectGroup","setGroupSelect","FormText","setMaxFileSize","invalidTagNames","setInvalidTagNames","setTags","rejectTags","DataTypePresetButtons","DataCounter","DataSizePresetButtons","setMaxFilesPerPost","setName","setDesc","setLocked","setModerated","maxFileSizePerPost","setMaxFileSizePerPost","PostFileSettings","forumGroup","setNewForum","setDeletedForum","selectedForumId","setSelectedForumId","setForums","modForum","selectForum","_forums$forums$find","setForumSelect","updateForum","setUpdateForum","_props$selectedForum$","_props$selectedForum$2","setUpdatedForum","selectedForumGroup","_props$forumGroups","setSelectedForum","setSelectedForumGroup","ForumGroupSelect","CreateNewForum","setModForum","ForumSelect","UpdateForum","DeleteForum","setNewGroup","setClobber","selectedGroup","setDeletedGroup","setUpdatedGroup","setSelectedGroup","CreateNewForumGroup","setModGroup","UpdateForumGroup","DeleteForumGroup","setOrderArray","_idx","childobj","step","changeGroupOrder","newOrder","flatMap","changeForumOrder","orderItem","orderChildren","setModOrder","submitNewOrder","modOrder","modGroup","ForumOrderComponent","setForumGroups","ManageForumGroup","ManageForum","ManageForumOrder","closeClassName","closeAriaLabel","Alert","_props$closeAriaLabel","closeClasses","alertTransition","InputGroup","InputGroupText","setUserName","userSearchList","setUserSearchList","selectedAddUser","setSelectedAddUser","selectedRemoveUser","setSelectedRemoveUser","userNameSearchQuery","setUsers","dupes","users","addUser","dupeUser","ForumPermission","currentPermission","setCurrentPermission","Inherit","selectedTreeItem","permission","tree","forumTree","setForumTree","setSelectedTreeItem","selectedItem","changeForumPermission","TreeApiContext","useTreeApi","NodesContext","DndContext","DataUpdatesContext","useDataUpdates","bound","isItem","isLeaf","isClosed","isInternal","isOpenWithEmptyChildren","isDescendant","dfs","walk","focusNextElement","getFocusable","nextItem","focusPrevElement","prevItem","access","identifyNull","identify","safeRun","waitFor","tries","getInsertIndex","focusedNode","childIndex","getInsertParentId","isRoot","placeholderStyle","alignItems","lineStyle","background","borderRadius","circleStyle","boxShadow","DefaultCursor","indent","pointerEvents","DefaultRow","DefaultNode","dragHandle","isEditing","Edit","Show","submit","edit","NodeApi","disableMultiSelection","isSelected","deselect","selectMulti","selectContiguous","activate","isDraggable","rowIndex","ROOT_ID","isEditable","editingId","isOnlySelection","hasOneSelection","isSelectedStart","isSelectedEnd","isDragging","willReceiveDrop","isAncestorOf","openParents","visitSelfAndChildren","accessId","accessChildren","actions","filtered","openMapReducer","initialState","nodes","unfiltered","initialOpenState","treeFocused","drag","selectedIds","destinationParentId","destinationIndex","ids","mostRecent","dnd","cursor","dragId","dragIds","parentId","dragStart","dragEnd","hovering","layerStyles","getStyle","getCountStyle","DefaultDragPreview","mouse","Overlay","PreviewNode","Count","renderNode","preview","paddingLeft","safeIsNaN","areInputsEqual","newInputs","lastInputs","resultFn","lastThis","lastResult","lastArgs","calledOnce","newArgs","cancelTimeout","timeoutID","requestTimeout","tick","getScrollbarSize","recalculate","cachedRTLResult","getRTLOffsetType","outerDiv","outerStyle","innerDiv","innerStyle","defaultItemKey$1","createListComponent","_class","getItemOffset","getEstimatedTotalSize","getItemSize","getOffsetForIndexAndAlignment","getStartIndexForOffset","getStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","_PureComponent","List","_instanceProps","_outerRef","_resetIsScrollingTimeoutId","isScrolling","scrollDirection","scrollOffset","initialScrollOffset","scrollUpdateWasRequested","_callOnItemsRendered","memoizeOne","overscanStartIndex","overscanStopIndex","visibleStartIndex","visibleStopIndex","onItemsRendered","_callOnScroll","onScroll","_getItemStyle","itemSize","layout","itemStyleCache","_getItemStyleCache","isHorizontal","isRtl","offsetHorizontal","__","___","_onScrollHorizontal","_event$currentTarget","_resetIsScrollingDebounced","_onScrollVertical","_event$currentTarget2","_outerRefSetter","outerRef","_resetIsScrolling","validateSharedProps$1","scrollTo","scrollToItem","align","itemCount","scrollbarSize","_this$props3","_callPropsCallbacks","_this$props4","_this$state","_this$props5","innerElementType","innerTagName","itemData","_this$props5$itemKey","itemKey","outerElementType","outerTagName","useIsScrolling","_this$_getRangeToRend","_getRangeToRender","startIndex","stopIndex","_index","estimatedTotalSize","WebkitOverflowScrolling","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_this$state2","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","_this$props6","overscanCount","_this$state3","overscanBackward","overscanForward","FixedSizeList","instanceProps","lastItemOffset","middleOffset","numVisibleItems","Cursor","useDndContext","rowHeight","paddingTop","renderCursor","__rest","ListOuterElement","deselectAll","DropContainer","visibleNodes","ListInnerElement","paddingBottom","DragSourceImpl","monitor","connector","canDrag","globalMonitor","getSourceId","reconnect","dragDropManager","useDragDropManager","useRegisteredDragSource","manager","useDragSource","itemType","useDragType","_registerSource","registry","getRegistry","sourceId","addSource","removeSource","registerSource","_registerSource2","handlerId","unregister","receiveHandlerId","useOptionalFactory","memoDeps","isCallingCanDrag","isCallingIsDragging","DragSourceMonitorImpl","internalMonitor","getMonitor","canDragSource","isDraggingSource","subscribeToStateChange","targetId","isOverTarget","getTargetIds","isSourcePublic","subscribeToOffsetChange","canDropOnTarget","getDropResult","didDrop","getInitialClientOffset","getInitialSourceClientOffset","getSourceClientOffset","getClientOffset","getDifferenceFromInitialOffset","wrapHookToRecognizeElement","hook","elementOrNode","throwIfCompositeComponentElement","newRef","previousRef","cloneWithRef","wrapConnectorHooks","wrappedHooks","wrappedHook","isRef","shallowEqual","compareResult","SourceConnector","backend","dragSource","clearDragSource","dragSourceOptions","dragSourceRef","dragSourceNode","reconnectDragSource","dragPreview","clearDragPreview","dragPreviewOptions","dragPreviewRef","dragPreviewNode","reconnectDragPreview","newHandlerId","dragSourceOptionsInternal","dragPreviewOptionsInternal","didChange","didHandlerIdChange","didConnectedDragSourceChange","didDragSourceOptionsChange","disconnectDragSource","lastConnectedHandlerId","lastConnectedDragSource","lastConnectedDragSourceOptions","dragSourceUnsubscribe","connectDragSource","didConnectedDragPreviewChange","didDragPreviewOptionsChange","disconnectDragPreview","lastConnectedDragPreview","lastConnectedDragPreviewOptions","dragPreviewUnsubscribe","connectDragPreview","emptyImage","useCollector","collect","_useState2","collected","setCollected","updateCollected","nextValue","useCollectedProps","collector","onCollect","_useCollector2","getHandlerId","handlerIds","useMonitorOutput","useConnectDragSource","useConnectDragPreview","useDrag","specArg","begin","useDragSourceMonitor","getBackend","useDragSourceConnector","previewOptions","useDragHook","hideCursor","canDrop","onMove","dragNodes","Image","DropTargetImpl","drop","useRegisteredDropTarget","dropTarget","useDropTarget","useAccept","_registerTarget","addTarget","removeTarget","registerTarget","_registerTarget2","isCallingCanDrop","DropTargetMonitorImpl","TargetConnector","clearDropTarget","dropTargetOptions","dropTargetRef","dropTargetNode","didDropTargetChange","didOptionsChange","disconnectDropTarget","lastConnectedDropTarget","lastConnectedDropTargetOptions","unsubscribeDropTarget","connectDropTarget","dropTargetOptionsInternal","useConnectDropTarget","useDrop","useDropTargetMonitor","useDropTargetConnector","dropAt","lineCursor","highlightCursor","walkUpFrom","computeDrop","inTopHalf","inBottomHalf","pad","inMiddle","atTop","atBottom","measureHover","hoverLevel","nextNode","above","below","getNodesAroundCursor","RowContainer","useNodesContext","fresh","useFreshNode","dragRef","dropRef","_item","showCursor","useDropHook","nodeStyle","rowStyle","rowAttrs","rowClassName","Node","renderRow","focusSearchTerm","DefaultContainer","minWidth","onContextMenu","onDelete","nextFocus","mostRecentNode","lastNode","sib","firstNode","selectAll","onCreate","createLeaf","createInternal","onRename","openSiblings","pageUp","pageDown","listEl","createList","isFiltered","markMatch","assignRowIndex","flattenAndFilterTree","flattenTree","createIndex","__awaiter","_arguments","TreeApi","idToIndex","getState","openState","searchTerm","matchFn","searchMatch","term","childrenAccessor","idAccessor","nodesBetween","startId","endId","index1","index2","resolveEdit","cancelled","editPromise","identity","onActivate","selectedNodes","selectionFollowsFocus","changeFocus","onSelect","setSelection","cursorParentId","cursorOverFolder","dragNode","dragDestinationParent","dragDestinationIndex","disableDrop","openAll","closeAll","hasFocus","hasNoSelection","hasMultipleSelections","openByDefault","disableEdit","disableDrag","renderContainer","renderDragPreview","formatProdErrorMessage","symbol_observable_default","observable","randomString","actionTypes_default","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","listenerIdCounter","isDispatching","ensureCanMutateNextListeners","isSubscribed","listenerId","replaceReducer","nextReducer","outerSubscribe","observer","observeState","observerAsObserver","combineReducers","reducers","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","rootReducer","memoize","EnterLeaveCounter","isNodeInDocument","enteringNode","previousLength","entered","itemsA","itemsB","insertItem","union","leavingNode","isSafari","safari","MonotonicInterpolant","ys","dx","dy","dys","dxs","c1s","_i2","m2","mNext","dxNext","c2s","c3s","_i3","c1","invDx","_common","low","high","xHere","diffSq","ELEMENT_NODE","getNodeClientOffset","_el$getBoundingClient","getEventClientOffset","getDragPreviewOffset","sourceNode","anchorPoint","offsetPoint","isImage","_document$documentEle","isImageNode","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","sourceWidth","sourceHeight","anchorX","anchorY","_getDragPreviewSize","dragPreviewWidth","dragPreviewHeight","getDragPreviewSize","offsetX","offsetY","isManualOffsetY","interpolate","calculateYOffset","_nativeTypesConfig","FILE","TEXT","getDataFromDataTransfer","typesToTry","resultSoFar","typeToTry","nativeTypesConfig","NativeTypes","exposeProperties","_dataTransfer","matchesTypes","_dataTransfer2","urls","_dataTransfer3","_dataTransfer4","NativeDragSource","initializeExposedProperties","newProperties","matchNativeItemType","dataTransferTypes","nativeItemType","OptionsReader","globalContext","optionsArgs","_this$globalContext","_this$optionsArgs","HTML5BackendImpl","sourceNodes","isDraggingNativeItem","endDrag","currentNativeHandle","currentNativeSource","currentDragSourceNode","clearCurrentDragSourceNode","dragStartSourceIds","beginDrag","publishSource","nativeType","setDragImage","sourcePreviewNodes","_this$getCurrentSourc","getCurrentSourcePreviewNodeOptions","dragPreviewOffset","setCurrentDragSourceNode","captureDraggingState","publishDragSource","beginDragNativeItem","hasAttribute","dragEnterTargetIds","enterLeaveCounter","altKeyPressed","dropEffect","getCurrentDropEffect","dragOverTargetIds","lastClientOffset","hoverRafId","leave","endDragNativeItem","_this$currentNativeSo","dropTargetIds","loadDataTransfer","dragDrop","isContentEditable","getActions","_this$dragStartSource","_this$dragOverTargetI","sourcePreviewNodeOptions","sourceNodeOptions","__isReactDndBackendSetUp","addEventListeners","_this$window","removeEventListeners","asyncEndDragFrameId","handleDragStart","handleSelectStart","handleDragEnter","handleDragOver","handleDrop","handleTopDragStart","handleTopDragStartCapture","handleTopDragEndCapture","handleTopDragEnter","handleTopDragEnterCapture","handleTopDragLeaveCapture","handleTopDragOver","handleTopDragOverCapture","handleTopDrop","handleTopDropCapture","getCurrentSourceNodeOptions","createNativeDragSource","mouseMoveTimeoutTimer","_this5$rootElement","endDragIfSourceWasRemovedFromDOM","_this$window2","HTML5Backend","INIT_COORDS","BEGIN_DRAG","PUBLISH_DRAG_SOURCE","HOVER","DROP","END_DRAG","setClientOffset","sourceClientOffset","ResetCoordinatesAction","createBeginDrag","sourceIds","_options$publishSourc","getSource","verifyInvariants","getDraggableSource","verifyGetSourceClientOffsetIsFunction","verifyItemIsObject","pinSource","getSourceType","createPublishDragSource","matchesType","targetType","draggedItemType","createHover","targetIdsArg","verifyTargetIdsIsArray","targetIds","checkInvariants","getTargetType","removeNonMatchingTargetIds","hoverAllTargets","createDrop","getDroppableTargets","dropResult","verifyDropResultType","determineDropResult","createEndDrag","verifyIsDragging","unpinSource","DragDropManagerImpl","shouldSetUp","refCount","isSetUp","setup","teardown","handleRefCountChange","createDragDropActions","boundActions","actionCreator","$$observable","ActionTypes","strictEquality","initialSourceClientOffset","initialClientOffset","offsetA","offsetB","ADD_SOURCE","ADD_TARGET","REMOVE_SOURCE","REMOVE_TARGET","NONE","ALL","_action$payload","_action$payload$targe","_action$payload$prevT","prevTargetIds","xor","areArraysEqual","prevInnermostTargetId","innermostTargetId","dirtyHandlerIds","dragOffset","dragOperation","stateId","__IS_NONE__","__IS_ALL__","HandlerRole","DragDropMonitorImpl","prevStateId","currentStateId","canSkipListener","dirtyIds","areDirty","previousState","shallow","_getSourceClientOffset","_getDifferenceFromInitialOffset","nextUniqueId","validateType","allowArray","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","makeRequestCallFromTimer","handleTimer","intervalHandle","makeRequestCall","observe","characterData","RawTask","task","release","asapQueue","enqueueTask","requestFlush","flushing","pendingErrors","capacity","flush","currentIndex","scan","newLength","registerPendingError","requestErrorThrow","taskFactory","tasks","freeTasks","getNextHandlerId","TARGET","parseRoleFromHandlerId","mapContainsValue","searchValue","isDone","_entries$next","HandlerRegistryImpl","validateSourceContract","_addSource","validateTargetContract","_addTarget","dragSources","dropTargets","includePinned","isSourceId","pinnedSourceId","pinnedSource","isTargetId","_removeSource","_removeTarget","createDragDropManager","backendFactory","backendOptions","debugMode","reduxDevTools","__REDUX_DEVTOOLS_EXTENSION__","instanceId","makeStoreInstance","receiveBackend","INSTANCE_SYM","DndProvider","_getDndContextValue","getGlobalContext","ctx","createSingletonDndContext","isGlobalInstance","getDndContextValue","_getDndContextValue2","SERVER_STATE","TreeProvider","treeProps","imperativeHandle","api","updateCount","dndRootElement","dndManager","OuterDrop","isOver","useOuterDrop","TreeContainer","DragPreviewContainer","useDragLayer","DragPreview","SimpleTree","SimpleNode","createNode","addChild","changes","found","hasParent","nextId","useValidatedProps","initialData","useSimpleTree","Tree","getNodeClasses","Moderator","Viewer","Poster","ForumTreeNode","_nodes$0$data","_nodes$","selectTreeItem","setGroupName","groupUsers","setGroupUsers","AddUserToPermissionsGroup","SelectForumAndGroup","GrantPanel","forumGrants","forumGroupGrants","newGroupGrant","groupperm","Reader","entityId","newGrant","perm","submitForumPermissionGroup","checkIfNewGroupAllowed","treeChanged","ForumTreeObject","createForumTreeObjects","treeObjects","CreateNewForumPermissionGroup","news","toLocaleString","setModNews","_news$totalPages","_news$totalPages2","modNews","setNews","NewsPagination","NewsOptions","NewsTable","setReactName","setReactFile","setModReaction","_selectedReaction$id","setReactions","selectedReaction","setSelectedReaction","modReaction","_reactions$find","CreateNewReaction","DeleteReaction","setStreamerId","streamerName","setStreamerName","setCountryCode","setPlatform","Twitch","streamerProfileFile","setStreamerProfileFile","DisplayNames","_props$countries$0$co","_props$countries$","setModStreamer","_selectedStreamer$id","setStreamers","selectedStreamer","setSelectedStreamer","_response$streamers$","modStreamer","_streamers$find","setCountries","CreateNewStreamer","DeleteStreamer","Form","_userBadge$id","_allBadge$id","userBadge","setUserBadge","allBadge","setAllBadge","selectedUser","_props$userBadges$fin","_props$availableBadge","setModUser","setBanned","submitBan","doomCentralUser","setDoomCentralUser","globalAdministrator","setGlobalAdministrator","globalEventAdministrator","setGlobalEventAdministrator","globalForumAdministrator","setGlobalForumAdministrator","globalNewsAdministrator","setGlobalNewsAdministrator","eventOrganizer","setEventOrganizer","promotionAdministrator","setPromotionAdministrator","newsAuthor","setNewsAuthor","submitNewUserRoles","createRolesArray","setUserSummary","modUser","UserRoles","UserBan","UserBadges","_s$lockoutEnd$toISOSt","_s$lockoutEnd","_props$users$find","setSelectedUser","selectUser","_users$totalPages","_users$totalPages2","UserPagination","UserOptions","UserTable","UserActionPanel","loginRedirectUrl","renderprops","AuthorizeRoute","AdminHome","ManageForums","ManageForumPermissionGroups","ManageUsers","ManageEmotes","ManageBadges","ManageReactions","ManageEvents","ManageNews","ManageStreamer","DateTimeFormat","dateStyle","timeStyle","setModSub","submitDeleteSubscription","setForumId","setIncludeEventsAndNews","includeEventsAndNews","sidebarData","setSidebarData","subData","setSubData","modSub","Sidebars","SubscriptionOptions","SubscriptionList","_userData$userSummary","_userData$userSummary2","_userData$userSummary3","_userData$userSummary4","_userData$userSummary5","_userData$userSummary6","_userData$userSummary7","_userData$userSummary8","_userData$userSummary9","_userData$userSummary10","_userData$userSummary11","_userData$userSummary12","userData","setUserData","ManageSubscriptions","ProfilePage","getQuery","useQueryParam","defaultVal","query","setQuery","getQueryStringVal","newVal","newUrl","stringifyPosition","point","VFileMessage","place","fatal","ruleId","actual","expected","note","ext","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","joined","segments","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","normalizeString","proc","cwd","isUrl","fileUrlOrPath","urlToPath","third","getPathFromURLPosix","VFile","bufferLike","messages","stored","assertNonEmpty","assertPart","stem","encoding","fail","bail","trough","pipeline","run","middlewareIndex","middleware","called","wrapped","parameters","fnExpectsCallback","wrap","middelware","unified","transformers","attachers","frozen","freezeIndex","processor","Parser","Compiler","freeze","attacher","transformer","POSITIVE_INFINITY","doc","vfile","assertParser","newable","assertCompiler","assertNode","runSync","complete","assertDone","processSync","destination","assertUnfrozen","own","addPlugin","addList","addPreset","plugin","plugins","isPlainObj","asyncName","looksLikeAVFile","emptyOptions","includeImageAlt","includeHtml","chunkStart","combineExtensions","extensions","syntaxExtension","extension","constructs","before","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","factorySpace","consume","tokenize","contentStart","attempt","contentInitial","lineStart","previous","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flow","_tokenizer","flowContinue","writeToChild","eof","sliceStream","defineSkip","seen","nok","disable","null","blankLine","after","subtokenize","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_isInFirstContentOfListItem","subcontent","_container","eventIndex","startPosition","startPositions","childEvents","gaps","adjust","breaks","_gfmTasklistFirstContentOfListItem","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","initial","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","bufferIndex","_bufferIndex","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startBufferIndex","endIndex","endBufferIndex","sliceChunks","chunkIndex","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","resolveTo","thematicBreak","marker","sequence","initialSize","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","raw","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","normalizeIdentifier","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","defined","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","headingAtx","sequenceOpen","sequenceFurther","setextUnderline","paragraph","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","decodeNamedCharacterReference","characterReference","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","media","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","instruction","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","hardBreakEscape","codeText","between","tailExitIndex","headEnterIndex","resolveText","decodeNumericCharacterReference","characterEscapeOrReference","decodeString","fromMarkdown","transforms","canContainEols","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","image","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","configure","mdastExtensions","tokenStack","resume","listStack","prepareList","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","errorHandler","onExitError","depth","referenceType","ordered","compiler","postprocess","defaultConstructs","atCarriageReturn","endPosition","preprocess","combined","remarkParse","normalizeUri","skip","convert","castFactory","typeFactory","tests","anyFactory","propsFactory","CONTINUE","EXIT","SKIP","visitParents","parents","subresult","grandparents","toResult","pointStart","pointEnd","clean","footnoteReference","safeId","footnoteOrder","counter","footnoteCounts","reuseCounter","clobberPrefix","dataFootnoteRef","ariaDescribedBy","patch","sup","applyData","revert","contents","listItemLoose","trimLines","trimLine","codePointAt","blockquote","break","footnote","footnoteById","no","dangerous","imageReference","inlineCode","linkReference","results","loose","listLoose","rows","firstRow","tableContent","tableCell","tableRow","cellIndex","cells","cell","alignValue","toml","ignore","yaml","footnoteDefinition","createState","allowDangerousHtml","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","footnoteBackLabel","unknownHandler","passThrough","definitions","augment","hName","hProperties","hChildren","generated","defaultUnknownHandler","toHast","foot","listItems","referenceIndex","backReferences","backReference","dataFootnoteBackref","tailTail","dataFootnotes","bridge","mutate","Schema","normal","Info","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","powers","increment","DefinedInfo","mask","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaInvalid","ariaKeyShortcuts","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","acceptcharset","classname","htmlfor","httpequiv","acceptCharset","accessKey","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","autoCapitalize","autoComplete","autoPlay","blocking","charSet","cite","cols","colSpan","controls","controlsList","coords","crossOrigin","dateTime","decoding","dirName","download","draggable","encType","enterKeyHint","fetchPriority","formAction","formEncType","formMethod","formNoValidate","formTarget","hrefLang","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","language","loop","manifest","maxLength","minLength","muted","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onCancel","onCanPlay","onCanPlayThrough","onClose","onContextLost","onContextRestored","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onFormData","onHashChange","onInput","onInvalid","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPause","onPlay","onPlaying","onPopState","onRateChange","onRejectionHandled","onReset","onResize","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","required","reversed","rowSpan","sandbox","scoped","seamless","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","typeMustMatch","useMap","writingSuggestions","aLink","archive","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","codeType","compact","declare","face","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","rev","rightMargin","scheme","scrolling","standby","summary","topMargin","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","floodColor","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","renderingIntent","shapeRendering","stopColor","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textDecoration","textRendering","transformOrigin","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","alphabetic","amplitude","ascent","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","bias","by","calcMode","clipPathUnits","contentScriptType","contentStyleType","cx","cy","defaultAction","descent","diffuseConstant","dur","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","orient","orientation","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","rx","ry","scale","seed","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan","htmlBase","svgBase","rehypeFilter","allowedElements","disallowedElements","allowElement","parent_","unwrapDisallowed","dash","cap","Type","camelcase","dashes","kebab","hastToReact","padRight","padLeft","uriTransformer","uri","colon","tableElements","childrenToReact","toReact","skipHtml","transformLinkUri","parentSchema","addProperty","listDepth","components","basic","ReactIs","linkTarget","transformImageUri","getInputElement","getElementsBeforeCount","textAlign","isHeader","sourcePos","rawSourcePos","sourcePosition","includeElementIndex","siblingCount","commas","spaces","styleReplacer","parseStyle","renderers","astPlugins","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","ReactMarkdown","deprecation","remarkPlugins","remarkRehype","remarkRehypeOptions","rehypePlugins","hastNode","wwwPrefix","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","trail","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trailCharRefStart","trailBracketAfter","trailCharRefInside","emailDomainDotTrail","wwwAutolink","previousWww","previousUnbalanced","wwwAfter","protocolAutolink","previousProtocol","fromCodePoint","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","emailAutolink","dot","gfmAtext","previousEmail","atext","emailDomain","emailDomainAfter","emailDomainDot","gfmAutolinkLiteral","_gfmAutolinkLiteralWalkedInto","tokenizePotentialGfmFootnoteCall","gfmFootnotes","resolveToPotentialGfmFootnoteCall","tokenizeGfmFootnoteCall","callStart","callData","callEscape","tokenizeDefinitionStart","labelAtMarker","whitespaceAfter","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","gfmStrikethrough","single","singleTilde","strikethrough","EditMap","editMap","addImpl","vecs","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","sizeB","bodyRowStart","headRowBefore","headRowBreak","headRowStart","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","flushTableEnd","flushCell","_align","rowEnd","previousCell","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","tasklistCheck","spaceThenNonSpace","gfmTaskListItem","ccount","character","findAndReplace","ignored","pairs","toExpression","toFunction","toPairs","pairIndex","grandparent","change","matchObject","inConstruct","notInConstruct","gfmAutolinkLiteralFromMarkdown","findUrl","findEmail","literalAutolink","literalAutolinkEmail","enterLiteralAutolinkValue","literalAutolinkHttp","literalAutolinkWww","gfmAutolinkLiteralToMarkdown","unsafe","isCorrectDomain","trailExec","closingParenIndex","openingParens","closingParens","splitUrl","association","containerFlow","indexStack","tracker","createTracker","bulletLastUsed","eol","patternCompile","_compiled","patternInScope","listInScope","none","safe","positions","infos","expression","numerical","escapeBackslashes","whole","lineShift","enterFootnoteDefinition","enterFootnoteDefinitionLabelString","exitFootnoteDefinitionLabelString","exitFootnoteDefinition","enterFootnoteCall","enterFootnoteCallString","exitFootnoteCallString","exitFootnoteCall","safeOptions","subexit","indentLines","blank","containerPhrasing","peek","handleDelete","gfmStrikethroughFromMarkdown","gfmStrikethroughToMarkdown","defaultStringLength","toAlignment","gfmTableFromMarkdown","tableData","enterCell","tableHeader","gfmTableToMarkdown","tableCellPadding","alignDelimiters","tablePipeAlign","around","serializeData","handleTableRowAsData","handleTableAsData","handleTableCell","matrix","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","columnIndex","delimiterStart","delimiterEnd","markdownTable","listItemIndent","checkListItemIndent","bullet","bulletCurrent","checkBullet","incrementListMarker","gfmTaskListItemFromMarkdown","taskListCheckValueChecked","exitCheck","taskListCheckValueUnchecked","firstParaghraph","gfmTaskListItemToMarkdown","checkable","checkbox","remarkGfm","gfm","gfmFootnoteDefinition","gfmFootnoteDefinitionLabelString","gfmFootnoteCall","gfmFootnoteCallString","gfmToMarkdown","buttonTypes","core","defaultTagName","createAdjustMap","subvalue","isProperties","parsePrimitive","finalResult","webNamespaces","mathml","fromParse5","verbose","quirksMode","indices","toPoint","toOffset","opening","closing","zwitch","unknown","currentSchema","createProperty","htmlVoidElements","endTagToken","parseOptions","resetTokenizer","createParse5Location","locationTracker","stitches","stitch","mock","toParse5","rehypeRaw","getParentElement","dom","useCopied","_container$current","_container$current2","_container$current3","prefixCls","disableCopy","pluginsFilter","wrapperElement","warpperElement","mdp","cls","wrapperProps","clike","Prism","languages","lookbehind","greedy","punctuation","keyword","register","refractorClike","macro","constant","cpp","refractorC","modName","generic","arduino","refractorCpp","builtin","ino","bash","envVars","commandAfterHeredoc","insideString","environment","variable","shebang","parameter","toBeCopied","shell","csharp","replacements","nested","depthLog2","keywordKinds","keywordsToPattern","typeDeclarationKeywords","keywords","nonTypeKeywords","nonContextualKeywords","nestedRound","genericName","typeExpressionWithoutTuple","tupleElement","tuple","typeExpression","typeInside","regularString","verbatimString","regularStringOrCharacter","regularStringCharacterOrComment","roundExpression","attrTarget","formatString","mInterpolationRound","mInterpolation","sInterpolationRound","sInterpolation","createInterpolationInside","interpolation","interpolationRound","dotnet","cs","markup","prolog","includedCdataInside","ssml","atom","rss","atrule","addInlined","addAttribute","coord","PREFIXES","unchanged","ini","section","java","classNamePrefix","annotation","generics","import","static","specialEscape","rangeChar","backreference","quantifier","alternation","javascript","js","webmanifest","kotlin","interpolationInside","kts","less","refractorCss","lua","makefile","anchorOrAlias","plainKey","createValuePattern","scalar","yml","markdown","refractorMarkup","inner","createInline","tableLine","bold","italic","strike","walkTokens","codeLang","codeBlock","grammar","highlight","autoloader","loadLanguages","ele","getElementById","objectivec","objc","perl","brackets","filehandle","markupTemplating","getPlaceholder","buildPlaceholders","placeholderPattern","replaceFilter","tokenizePlaceholders","middle","Token","php","refractorMarkupTemplating","package","string_interpolation","python","decorator","py","ellipsis","ruby","percentExpression","symbolName","rust","multilineComment","sass","scss","statement","sql","swift","literal","nil","typescript","refractorJavascript","ts","vbnet","refractorBasic","characterEntitiesLegacy","characterReferenceInvalid","isDecimal","isHexadecimal","isAlphanumerical","isAlphabetical","parseEntities","additional","following","characterReferenceCharacters","characters","terminated","namedReference","nonTerminated","referenceCode","prohibited","disallowed","referenceContext","warningContext","textContext","uniqueId","plainTextGrammar","util","objId","deepClone","plain","txt","redef","insert","newToken","old","DFS","propertyType","tokenList","LinkedList","addAfter","matchGrammar","callbacks","matchedStr","matchPattern","lookbehindLength","startNode","startPos","rematch","patterns","patternObj","reach","removeCount","matchStr","removeFrom","nestedRematch","Refractor","refractor","abap","abnf","coreRules","terminal","repetition","actionscript","ada","agda","antlr4","g4","apacheconf","apex","refractorSql","insertClassName","classNameInside","trigger","apl","assignment","dfn","applescript","aql","arff","armasm","arturo","createLanguageString","embedded","multistring","predicate","sugar","art","asciidoc","quoted","interpreted","specifiers","admonition","callout","copyFromAsciiDoc","adoc","aspnet","refractorCsharp","asm6502","asmatmel","autohotkey","autoit","avisynth","allinternals","argument","avs","avroIdl","avdl","awk","gawk","batch","bbcode","shortcode","bbj","bicep","datatype","birb","bison","bnf","rbnf","bqn","brainfuck","pointer","decrement","branching","brightscript","bro","bsl","oscript","cfscript","cfc","chaiscript","cil","cilkc","cilkcpp","clojure","cmake","inserted","cobol","coffeescript","coffee","concurnas","langext","conc","csp","cooklang","single_token_suffix","multi_token_infix","multi_token","timer_units","cookware","quantity","ingredient","amount","coq","commentSource","punct","crystal","refractorRuby","expansion","cssExtras","selectorInside","combinator","hexcode","csv","cue","stringLiteral","cypher","relationship","dart","packagePrefix","dataweave","dax","measure","dhall","django","jinja2","dnsZoneFile","docker","spaceAfterBackSlash","stringRule","commentRule","dockerfile","ID","IDInside","withID","gv","ebnf","editorconfig","eiffel","ejs","eta","elixir","elm","hvariable","etlua","refractorLua","erb","erlang","excelFormula","sheet","fsharp","comment_inside","string_inside","combinators","arrToWordsRegExp","builtins","$false","firestoreSecurityRules","fortran","ftl","FTL_EXPR","gml","gamemakerlanguage","gcode","checksum","gdscript","gedcom","record","gettext","po","gherkin","pystring","feature","scenario","git","glsl","gn","gni","linkerScript","goModule","gradle","graphql","validTokens","startToken","inputVariables","isTokenType","getToken","definitionEnd","findClosingBracket","addAlias","mutationEnd","varToken","stackHeight","groovy","textile","modifierRegex","parenthesesRegex","withModifier","modifierTokens","phrase","acronym","phraseInside","nestedPatterns","phraseInlineInside","phraseTableInside","haml","filters","all_filters","handlebars","hbs","mustache","haskell","hs","haxe","reification","hcl","heredoc","hlsl","hoon","hpkp","hsts","headerValueOf","langs","httpLanguages","suffixTypes","getSuffixPattern","ichigojam","icuMessageFormat","stringPattern","argumentSource","nestedMessage","idris","refractorHaskell","idr","gitignore","hgignore","npmignore","inform7","substitution","verb","io","adverb","conjunction","javadoclike","javaDocLike","docLanguage","tokenName","docCommentSupport","addSupport","scala","refractorJava","javadoc","refractorJavadoclike","codeLinePattern","memberReference","javastacktrace","exceptions","jexl","jolie","aggregates","redirects","jq","stringInterpolation","jsTemplates","templateString","templateLiteralPattern","interpolationObject","interpolationPunctuationObject","interpolationPattern","createTemplate","tokenizeWithHooks","tokenizeInterpolationExpression","tempGrammar","tokenizeEmbedded","_tokens","placeholderCounter","placeholderMap","embeddedCode","interpolationExpression","embeddedTokens","placeholders","afterTokens","supportedLanguages","tsx","stringContent","findTemplateStrings","jsdoc","refractorTypescript","parameterPrefix","example","n4js","n4jsd","jsExtras","withId","imports","maybeClassNameTokens","json5","refractorJson","jsonp","jsstacktrace","julia","keepalived","ip","keyman","kumir","nonId","wrapId","kum","kusto","latex","funcPattern","insideEqu","equation","headline","tex","latte","refractorPhp","markupLatte","SortedBNF","lilypond","refractorScheme","schemeExpression","ly","liquid","insideRaw","tagMatch","lisp","simple_form","primitive","par","nestedPar","interactive","defvar","defun","lambda","car","varform","arglist","sublist","elisp","emacs","livescript","llvm","exception","uuid","lolcode","magma","mata","orgType","missing","matlab","maxscript","mel","flag","mermaid","metafont","mizar","mongodb","operatorsSource","monkey","moonscript","moon","n1ql","nand2tetrisHdl","naniscript","expressionDef","getTextContent","nani","bracket","bracketsIndex","isBracketsBalanced","nasm","neon","nevod","nginx","nim","nix","antiquotation","nsis","ocaml","odin","escapes","discard","opencl","openqasm","qasm","oz","parigp","pascal","asm","objectpascal","pascaligo","braces","accum","psl","pcaxis","tlist","px","peoplecode","pcode","phpdoc","phpExtras","plantUml","arrowAttr","arrowDirection","arrowBody","arrowRight","arrowPrefix","plsql","powerquery","pq","mscript","powershell","processing","promql","vectorMatching","protobuf","builtinTypes","stylus","twig","pug","each","branch","filter_pattern","puppet","pure","inlineLanguageRe","purebasic","pbfasm","purescript","purs","qsharp","qualifiedName","interpolationExpr","qs","qml","jsString","jsComment","jsExpr","qore","racket","rkt","cshtml","commentLike","stringLike","square","curly","angle","inlineCs","tagAttrValue","tagAttrs","tagContent","tagRegion","inlineValue","razor","stringifyToken","openedTags","notTagNorBrace","openedBraces","plainText","refractorJsx","rego","renpy","rpy","rescript","rip","roboconf","wildcard","robotframework","createSection","extendecInside","docTag","testNameLike","testPropertyLike","documentation","variables","robot","sas","numericConstant","macroVariable","macroKeyword","equals","altformat","globalStatements","submitStatement","actionSets","casActions","datalines","shellSession","refractorBash","strings","smali","smalltalk","smarty","smartyPattern","smartyLiteralMode","sml","smlnj","solidity","sol","solutionFile","guid","soy","numberPattern","soyLitteralMode","turtle","trig","sparql","refractorTurtle","rq","splunkSpl","sqf","squirrel","stan","higherOrderFunctions","constraint","stata","refractorMata","refractorPython","iecst","address","supercollider","sclang","systemd","quotesSource","t4Templating","createBlock","contentAlias","insideLang","standard","t4Cs","refractorT4Templating","t4","createT4","t4Vb","refractorVbnet","tap","refractorYaml","pass","pragma","bailout","plan","subtest","yamlish","tcl","tt2","insertKey","tremor","extractor","troy","trickle","typoscript","tsconfig","unrealscript","uscript","uorazor","vala","velocity","unparsed","verilog","vhdl","vim","visualBasic","vba","warpscript","wasm","webIdl","wgsl","functions","wiki","nowiki","wolfram","mathematica","wl","wren","xeora","xeoracube","xmlDoc","insertDocComment","docComment","slashDocComment","tickDocComment","xojo","xquery","yang","zig","IDENTIFIER","ALIGN","syntax","registered","aliasOrLanguage","listLanguages","defaultLanguage","metastring","ignoreMissing","cascadeRaw","cascade","preorder","showLineNumbers","rtlRange","ltrRange","rtl","ltr","dirBidi","dirProperty","hasProperty","cast","rightIndex","leftIndex","extendedFilter","ZERO","NINE","nthCheck","formula","boolbase","absA","bMod","readSign","readNumber","fauxEsmNthCheck","someChildren","_1","_2","_3","assertDeep","elementIndex","typeIndex","childState","scopeElements","rootQuery","queryToSelectors","elementCount","typeCount","not","getCachedNthCheck","readWrite","editableOrEditingHost","_cachedFn","needsIndex","currentRules","nestResult","directChild","descendant","adjacentSibling","generalSibling","currentDirection","dirInferred","enterState","selectorIndex","ruleSet","nest","applySelectors","combine","fromParent","fromSibling","counts","getCodeString","nextChild","codeBlockParames","getCommentObject","getURLParameters","keyName","propertiesHandle","defaultAttrs","rehyp","prevChild","reservedMeta","headingRank","slugs","occurrences","slug","maintainCase","originalSlug","convertElement","tagNameFactory","contentDefaults","openDelimiter","closeDelimiter","octiconLink","defaultRehypePlugins","behavior","behaviour","toChildren","grouping","toNode","rehypeIgnore","_props$disableCopy","rehypePrism","rehypeRewrite","rehypeAttrs","MarkdownPreview","EditorContext","getCommands","resulte","keyCommand","shortcuts","execute","shortcutsHandle","commandOrchestrator","isequal","executeCommand","fatalities","defaultSubsetRegex","surrogatePairsRegex","controlCharactersRegex","regexEscapeRegex","subsetToRegexCache","subset","cached","charactersToExpression","charactersToExpressionCached","escapeOnly","hexadecimalRegex","decimalRegex","characterEntitiesHtml4","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","fnof","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Omicron","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","epsilon","zeta","theta","iota","kappa","mu","nu","omicron","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","bull","hellip","prime","Prime","oline","frasl","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","exist","nabla","isin","notin","prod","sum","minus","lowast","radic","infin","ang","or","cup","int","there4","sim","cong","asymp","equiv","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","rang","loz","spades","clubs","hearts","diams","quot","amp","OElig","oelig","Scaron","scaron","Yuml","circ","tilde","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","permil","lsaquo","rsaquo","euro","notAlphanumericRegex","formatSmart","named","toHexadecimal","omitOptionalSemicolons","useNamedReferences","useShortestReferences","toNamed","decimal","toDecimal","formatBasic","stringifyEntities","siblingAfter","siblingBefore","includeWhitespace","omission","headOrColgroupOrCaption","rubyElement","rp","optgroup","colgroup","caption","thead","tbody","tfoot","tr","constants","unquoted","double","serializeAttribute","allowParseErrors","allowDangerousCharacters","characterReferences","tightCommaSeparatedLists","collapseEmptyAttributes","preferUnquoted","quoteSmart","alternative","bogusComments","upperDoctype","tightDoctype","omitOptionalTags","closeEmptyElements","voids","tightAttributes","serializeAttributes","closeSelfClosing","tightSelfClosing","rehype","processorSettings","emitParseErrors","setting","Parser5","entities","toHtml","_templateObject","browserSupportsTextareaTextNodes","Markdown","highlightEnable","preRef","textareaPre","mdStr","_taggedTemplateLiteralLoose","canManipulateViaTextNodes","textarea","insertTextAtPosition","ieRange","collapse","setRangeText","endNode","nodeLength","deleteContents","commonAncestorContainer","insertNode","setSelectionRange","createEvent","initEvent","selectWord","isWordDelimiter","getSurroundingWord","selectedTextContext","selectLine","getBreaksNeededForEmptyLineBefore","neededBreaks","isInFirstLine","getBreaksNeededForEmptyLineAfter","isInLastLine","selectedText","replaceSelection","insertBeforeEachLine","insertionLength","modifiedText","insertionResult","buttonProps","newSelectionRange","state1","newSelectionRange2","state2","fullscreen","executeCommandState","textArea","_objectDestructuringEmpty","makeList","breaksBeforeCount","breaksBefore","breaksAfterCount","breaksAfter","_selectionStart","_selectionEnd","unorderedListCommand","orderedListCommand","checkedListCommand","codePreview","codeEdit","codeLive","title1","titleExecute","title2","title3","title4","title5","title6","help","getExtraCommands","getStateFromTextArea","_textArea$value","TextAreaTextApi","TextAreaCommandOrchestrator","textApi","handleLineMove","blockText","prevLineSelection","prevLineText","nextLineSelection","nextLineText","Textarea","_onChange","_useContext","extraCommands","defaultTabEnable","textRef","executeRef","statesRef","valArr","currentLineStr","_star","_end","modifiedTextLine","oldSelectText","newStarNum","startTabSize","endTabSize","startStr","savedSelection","textToDuplicate","TextArea","renderTextarea","warp","textareaWarp","_commandOrchestrator","textStyle","WebkitTextFillColor","Child","barPopup","Toolbar","isChild","ToolbarItems","originalOverflow","liProps","activeBtn","childNode","com","evn","ToolbarVisibility","hideToolbar","toolbarBottom","$dom","heightRef","handleMouseMove","_changedTouches$","newHeight","dragY","handleMouseUp","_$dom$current","_$dom$current2","handleMouseDown","_changedTouches$2","_$dom$current3","_$dom$current4","_$dom$current5","_$dom$current6","_$dom$current7","setGroupPopFalse","keyname","InternalMDEditor","propsValue","commandsFilter","enableScroll","visibleDragbar","visiableDragbar","previewType","textareaProps","onStatistics","onHeightChange","cmds","extraCmds","scrollTopPreview","previewRef","enableScrollRef","stateInit","textareaDomRef","initScroll","handleScroll","textareaDom","previewDom","previewClassName","handlePreviewScroll","mdPreview","containerStyle","containerClick","HTMLTextAreaElement","objState","lineCount","DragBar","Editor","defaultSchema","strip","ancestors","tagNames","del","ins","nodeSchema","allowDoctypes","handleDoctypeName","allowComments","handleCommentValue","handleTagName","reqs","allowed","toPropertyValueMap","handlePropertyValues","handlePropertyValue","questionMark","numberSign","safeProtocol","rehypeSanitize","hastUtilSanitize","newlineToBreak","remarkBreaks","factoryAttributes","attributesType","attributesMarkerType","attributeIdType","attributeClassType","attributeNameType","attributeInitializerType","attributeValueLiteralType","attributeValueType","attributeValueMarker","attributeValueData","disallowEol","shortcutStart","shortcutStartAfter","shortcut","nameAfter","valueBefore","valueQuotedStart","valueUnquoted","valueQuotedAfter","valueQuotedBetween","valueQuoted","afterStart","atClosingBrace","dataEscape","factoryName","directiveContainer","afterName","afterLabel","afterAttributes","openAfter","afterOpening","nonLazyLine","tokenizeClosingFence","nonLazyLineAfter","lineAfter","closingSequenceEnd","directiveLeaf","inStart","directiveText","handleDirective","directiveFromMarkdown","directiveContainerAttributes","enterAttributes","directiveContainerLabel","directiveLabel","directiveLeafAttributes","directiveTextAttributes","directiveContainerAttributeClassValue","exitAttributeClassValue","directiveContainerAttributeIdValue","exitAttributeIdValue","directiveContainerAttributeName","exitAttributeName","directiveContainerAttributeValue","exitAttributeValue","exitAttributes","directiveContainerName","exitName","directiveLeafAttributeClassValue","directiveLeafAttributeIdValue","directiveLeafAttributeName","directiveLeafAttributeValue","directiveLeafName","directiveTextAttributeClassValue","directiveTextAttributeIdValue","directiveTextAttributeName","directiveTextAttributeValue","directiveTextName","directiveToMarkdown","containerDirective","leafDirective","textDirective","cleaned","nesting","fence","inlineDirectiveLabel","labelType","checkQuote","classesFull","classesFullList","classesList","stringifyEntitiesLight","remarkDirective","defaultImageExtensions","remarkImages","imageExtensions","imgExtRegex","isImgPath","isImgExt","containsImage","containsOther","remarkUnwrapImages","applicable","inLink","linkResult","MDEditor","setPost","NewPostBox","setEndDate","setPublish","region","setRegion","setStartDate","streamList","setStreamList","setTitle","eventTitle","submitEditEvent","Global","setEventId","EventEditorRegionOptions","EventEditorTitle","EventEditorStartDate","EventEditorEndDate","EventEditorBoxContainer","EventEditorStreamer","EventEditorPublish","SubmitEditEventButton","setMode","EventsPageMode","AllEvents","MyEvents","dial_code","getFlagForEventRegion","Americas","Europe","Asia","Australia","getEventDate","today","getEventTime","toLocaleTimeString","isOrganizer","setIsOrganizer","isGlobalAdmin","setIsGlobalAdmin","_props$auth$user","_props$auth$user2","_props$auth$user3","_props$auth$user4","textWrap","_eventListingData$liv","_eventListingData$liv2","_eventListingData$upc","_eventListingData$upc2","_eventListingData$upc3","_eventListingData$pas","_eventListingData$pas2","_eventListingData$pas3","isAdmin","setIsAdmin","setPastEventPageNumber","pastEventsPageNumberPageSize","setPastEventsPageNumberPageSize","eventListingData","setEventListingData","EventAdmin","EventList","currentPage","_taggedTemplateLiteral","__generator","sent","trys","ops","__read","ar","__spreadArray","pack","SuppressedError","COMMON_MIME_TYPES","toFileWithPath","withMimeType","webkitRelativePath","FILES_TO_IGNORE","getInputFiles","fromList","getFsHandleFiles","handles","getFile","getDataTransferFiles","toFilePromises","noIgnoredFiles","flatten","webkitGetAsEntry","fromDataTransferItem","isDirectory","fromDirEntry","getAsFile","fwp","fromEntry","fromFileEntry","reader","createReader","readEntries","err_1","fullPath","FILE_INVALID_TYPE","FILE_TOO_LARGE","FILE_TOO_SMALL","TOO_MANY_FILES","getInvalidTypeRejectionErr","messageSuffix","getTooLargeRejectionErr","maxSize","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","accepts","fileMatchSize","isDefined","isEvtWithFiles","onDocumentDragOver","composeEventHandlers","isMIMEType","isExt","_excluded4","Dropzone","_useDropzone","useDropzone","getFilesFromEvent","isChangeEvt","maxFiles","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","useFsAccessApi","onFileDialogCancel","onFileDialogOpen","onDropAccepted","onDropRejected","isFileDialogActive","isDragActive","isDragAccept","isDragReject","fileRejections","_defaultProps$props","acceptAttr","acceptPropAsAcceptAttr","pickerTypes","acceptForPicker","agg","pickerOptionsFromAccept","onFileDialogOpenCb","onFileDialogCancelCb","rootRef","inputRef","_useReducer2","fsAccessApiWorksRef","isSecureContext","onWindowFocus","dragTargetsRef","onDocumentDrop","onErrCb","onDragEnterCb","fileCount","accepted","sizeMatch","customErrors","allFilesAccepted","onDragOverCb","hasFiles","_unused","onDragLeaveCb","targetIdx","setFiles","_fileAccepted2","acceptError","_fileMatchSize2","sizeError","onDropCb","openFileDialog","showOpenFilePicker","ABORT_ERR","isAbort","SECURITY_ERR","isSecurityError","onKeyDownCb","onFocusCb","onBlurCb","onClickCb","isIe","isEdge","isIeOrEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","onInputElementClick","getInputProps","_ref3$refKey","__assign","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","IMPORT","KEYFRAMES","LAYER","indexof","charat","strlen","sizeof","lift","alloc","dealloc","delimit","escaping","commenter","prefixer","rulesets","scanning","ampersand","ruleset","unitlessKeys","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","REACT_APP_SC_ATTR","SC_ATTR","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","groupSizes","indexOfGroup","insertRules","insertRule","clearGroup","deleteRule","getGroup","getRule","registerName","__webpack_nonce__","styleSheets","ownerNode","cssRules","isServer","useCSSOMInjection","gs","server","registerId","reconstructWithOptions","allocateGSInstance","hasNameForId","clearNames","clearRules","clearTag","replaceAll","collection","shouldForwardProp","stylis","Ge","stylisPlugins","disableCSSOMInjection","enableVendorPrefixes","getName","isCss","styledComponentId","staticRulesId","isStatic","componentId","baseHash","baseStyle","generateAndInjectStyles","parentComponentId","componentStyle","foldedComponentIds","forwardedAs","_foldedDefaultProps","withConfig","ut","createStyles","removeStyles","renderStyles","_emitSheetCSS","getStyleTags","sealed","getStyleElement","seal","collectStyles","interleaveWithNodeStream","validatedFiles","newFileErrors","uploadedFiles","validatePostFile","setFileRejects","fileRejects","setUploadedFiles","fileSizeValidator","maxFileSizeBytes","fileExtensionValidator","fileList","sizeCheck","extensionCheck","sameFileNameCheck","sameFileNameCheckValidator","fileAmountCheck","maxFilesInPost","PostFileContainer","PostFileContainerText","styled","_templateObject2","CardImg","cardImgClassName","CardImgOverlay","CardText","imageUrl","setImageUrl","createObjectURL","revokeObjectURL","updateDescription","PostFilePreviewerContainer","_props$descriptions$f","_props$descriptions$f2","PostFilePreview","removeFile","descriptions","rejection","PostFileRejectionContainer","PostFileRejection","popperClassName","placementPrefix","arrowClassName","hideArrow","boundariesElement","onClosed","PopperContent","setTargetNode","getTargetNode","_element","targetNode","_arrowClassName","_popperClassName","modifierNames","baseModifiers","extendedModifiers","popperTransition","ReactPopper","popperPlacement","renderChildren","getContainerNode","innerClassName","autohide","DEFAULT_DELAYS","isInDOMSubtree","subtreeRoot","isInDOMSubtrees","subtreeRoots","subTreeRoot","TooltipPopoverWrapper","_targets","currentTargetElement","addTargetEvents","removeTargetEvents","showWithDelay","hideWithDelay","onMouseOverTooltipContent","onMouseLeaveTooltipContent","onEscKeyDown","updateTarget","clearShowTimeout","clearHideTimeout","triggers","_hideTimeout","_popover","_showTimeout","getDelay","getCurrentTarget","composedPath","isBubble","addEventOnTargets","removeEventOnTargets","newTarget","popperClasses","Tooltip","arrowClasses","UncontrolledTooltip","colorMapping","red","blue","yellow","orange","cyan","purple","violet","lime","green","remarkColorDirectivePlugin","quotedPost","setQuotedPost","setOpen","loadQuotedPost","_quotedPost$post","editMode","setQuotedPostId","MarkdownPost","quoteId","setNewPostNum","setuploadedFiles","setDescriptions","QuoteBox","NewPostBoxContainer","PostFileDropzone","currentFiles","PostFilePreviewer","newFiles","updatedDescriptions","newArray","newDescription","PostFileRejections","SubmitPostButton","setGotoMode","hashFragment","asyncTimerId","scrollFunction","disconnect","isInteractiveElement","getElAndScroll","originalTabIndex","genericHashLink","As","linkHash","passDownProps","filteredProps","elementId","smooth","scrollIntoView","childList","subtree","HashLink","EditPostBox","setEditReason","cancelEditMode","editedPost","postToQuote","setPostToQuote","EditPostBoxContainer","EditReasonSubmitCancel","clearEditMode","editContent","getPreviewImageForFileNameString","postFile","PostFileDisplayerContainer","PostFileDisplay","setModPost","postItem","postToEdit","ForumModeratorTools","authorized","editPost","EditPostStation","PostFileDisplayer","_postData$postList","setEditMode","setPostToEdit","quoteMode","setQuoteMode","setEditedPost","postData","setPostData","highestUnread","setHighestUnread","modPost","scrolledRef","hashRef","setPageCount","Post","newPostNum","LastPost","highestId","_postData$postList$fi","_postData$postList$fi2","ThreadPost","pageNumberCounter","setPageNumberCounter","setPostId","gotoMode","pageSizeParam","setPageSizeParam","pageNumberParam","setPageNumberParam","gotoParam","setGotoParam","postIdParam","setPostIdParam","setPageChanges","displayOnly","PostPagination","ThreadPostList","PostStation","iso8601duration","streamer","_props$details","_props$details2","_props$details3","_props$details4","_props$details5","_props$details6","_props$details7","EventInfo","details","streamerPic","EventDescription","canEdit","eventPublishDate","_eventPageData$eventD","_eventPageData$eventD2","_eventPageData$eventD3","_eventPageData$eventD4","_eventPageData$eventD5","_eventPageData$eventD6","_eventPageData$eventD7","_eventPageData$eventD8","_eventPageData$eventD9","_eventPageData$eventD10","_eventPageData$eventD11","_eventPageData$eventD12","_eventPageData$eventD13","_eventPageData$eventD14","_eventPageData$eventD15","setCanEdit","eventPageData","setEventPageData","UserIsEventAdmin","SingleMediaContainer","EventHeader","EventContent","UserCanPostInEventThread","submitNewEvent","sidebarLoading","setSidebarLoading","SubmitNewEventButton","NewEvent","EditEvent","EventListing","EventPage","toPropertyKey","StyleSheet","_insertTag","insertionPoint","prepend","isSpeedy","speedy","ctr","createStyleElement","sheetForTag","identifierWithPointTracking","getRules","toRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","defaultStylisPlugins","createCache","ssrStyles","_insert","nodesToHydrate","attrib","currentSheet","finalizingPlugins","serializer","serialized","shouldCache","registerStyles","isStringTag","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","unitless","handleInterpolation","mergedProps","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","labelPattern","serializeStyles","stringMode","identifierName","hashString","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","withEmotionCache","ThemeContext","typePropName","Insertion","insertStyles","Emotion","cssProp","WrappedComponent","registeredStyles","rawClassName","getRegisteredStyles","Emotion$1","argsLength","createElementArgArray","createEmotionProps","createCoords","_node$ownerDocument","isOverflowElement","isWebKit","CSS","supports","isLastTraversableNode","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","frameElement","getCssDimensions","hasOffset","shouldFallback","unwrapElement","getScale","domElement","noOffsets","getVisualOffsets","visualOffsets","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","autoUpdate","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","cleanupIo","cleanup","_io","refresh","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","insertable","memoized","StateManagedSelect","baseSelectProps","_ref$defaultInputValu","defaultInputValue","_ref$defaultMenuIsOpe","defaultMenuIsOpen","_ref$defaultValue","propsInputValue","propsMenuIsOpen","menuIsOpen","propsOnChange","propsOnInputChange","onInputChange","propsOnMenuClose","onMenuClose","propsOnMenuOpen","onMenuOpen","restSelectProps","stateInputValue","setStateInputValue","_useState4","stateMenuIsOpen","setStateMenuIsOpen","_useState6","stateValue","setStateValue","actionMeta","useStateManager","Select","StateManagedSelect$1","Group","_groupOption$filter$","_groupOption$filter$2","_groupOption$filter$3","groupOption","setGroupOption","_f$options$find","inputs","clsx","setforumId","forumIdParam","setForumIdParam","forumList","setForumList","NewThreadOptions","NewThreadTitle","NewThreadBoxContainer","SubmitThreadButton","createPagesLinks","threadUrl","Unread","UnreadControl","PagesLinks","Hot","Active","New","_threadListing$thread","_threadListing$thread2","_threadListing$thread3","_threadListing$thread4","_threadListing$thread5","threadFilter","setThreadFilter","threadListing","setThreadListingData","ThreadOptions","ThreadPagination","ThreadList","Columns","leftColumn","rightColumn","_checkPrivateRedeclaration","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_assertClassBrand","_classPrivateFieldSet2","isValidTimeout","timeUntilStale","updatedAt","staleTime","resolveStaleTime","matchQuery","fetchStatus","queryKey","stale","queryHash","hashQueryKeyByOptions","partialMatchKey","isStale","matchMutation","mutationKey","hashKey","queryKeyHashFn","replaceEqualDeep","isPlainArray","aItems","aSize","bItems","bSize","equalItems","shallowEqualObjects","hasObjectPrototype","ctor","prot","replaceData","prevData","structuralSharing","keepPreviousData","previousData","addToEnd","newItems","addToStart","skipToken","ensureQueryFn","queryFn","initialPromise","notifyManager","transactions","notifyFn","batchNotifyFn","scheduleFn","schedule","originalQueue","batchCalls","setNotifyFunction","setBatchNotifyFunction","setScheduler","createNotifyManager","Subscribable","onSubscribe","onUnsubscribe","hasListeners","focusManager","_focused","_cleanup","_setup","_classPrivateFieldSet","_classPrivateFieldGet","setEventListener","_classPrivateFieldGet2","_classPrivateFieldGet3","focused","setFocused","_globalThis$document","visibilityState","onlineManager","_online","onlineListener","offlineListener","setOnline","online","isOnline","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","isCancelledError","createRetryer","continueFn","promiseResolve","promiseReject","isRetryCancelled","isResolved","outerResolve","outerReject","canContinue","canRun","canStart","_config$onSuccess","_continueFn","onSuccess","_config$onError","_continueFn2","pause","continueResolve","_config$onPause","_config$onContinue","onContinue","promiseOrValue","_config$retry","_config$retryDelay","_config$onFail","retry","retryDelay","shouldRetry","onFail","cancelOptions","_config$abort","continue","_continueFn3","cancelRetry","continueRetry","Removable","_gcTimeout","clearGcTimeout","scheduleGc","gcTime","optionalRemove","updateGcTime","newGcTime","Query","_initialState","_revertState","_cache","_retryer","_defaultOptions","_abortSignalConsumed","_Class_brand","observers","hasData","initialDataUpdatedAt","dataUpdateCount","dataUpdatedAt","errorUpdateCount","errorUpdatedAt","fetchFailureCount","fetchFailureReason","fetchMeta","isInvalidated","getDefaultState","newData","_dispatch","manual","setStateOptions","_classPrivateFieldGet4","getObserversCount","getCurrentResult","isStaleByTime","_classPrivateFieldGet5","shouldFetchOnWindowFocus","refetch","cancelRefetch","_classPrivateFieldGet6","shouldFetchOnReconnect","addObserver","notify","removeObserver","invalidate","_this$options$behavio","_context$fetchOptions","abortController","addSignalProperty","fetchFn","queryFnContext","persister","_context$fetchOptions2","onFetch","_classPrivateFieldGet7","_classPrivateFieldGet8","_classPrivateFieldGet9","_classPrivateFieldGet10","onSettled","isFetchingOptimistic","_classPrivateFieldGet11","_classPrivateFieldGet12","_classPrivateFieldGet13","_classPrivateFieldGet14","_action$meta","_action$dataUpdatedAt","fetchState","onQueryUpdate","QueryObserver","_currentQuery","_currentQueryInitialState","_currentResult","_currentResultState","_currentResultOptions","_selectError","_selectFn","_selectResult","_lastQueryWithDefinedData","_staleTimeoutId","_refetchIntervalId","_currentRefetchInterval","_trackedProps","bindMethods","shouldFetchOnMount","_executeFetch","updateResult","_updateTimers","shouldFetchOn","refetchOnReconnect","refetchOnWindowFocus","_clearStaleTimeout","_clearRefetchInterval","notifyOptions","prevQuery","defaultQueryOptions","_updateQuery","_defaulted","getQueryCache","mounted","shouldFetchOptionally","_updateStaleTimeout","nextRefetchInterval","_computeRefetchInterval","_updateRefetchInterval","getOptimisticResult","createResult","optimisticResult","shouldAssignObserverCurrentProperties","trackResult","onPropTracked","trackedResult","trackProp","getCurrentQuery","fetchOptimistic","defaultedOptions","_fetchOptions$cancelR","prevResult","prevResultState","prevResultOptions","queryInitialState","newState","isPlaceholderData","_optimisticResults","fetchOnMount","fetchOptionally","selectError","placeholderData","isFetching","isPending","isError","isSuccess","isInitialLoading","failureReason","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isPaused","isRefetchError","nextResult","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","throwOnError","typedKey","_notify","refetchInterval","nextInterval","refetchIntervalInBackground","retryOnMount","shouldLoadOnMount","refetchOnMount","suspense","createValue","isReset","clearReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","QueryClientContext","useQueryClient","queryClient","QueryClientProvider","mount","IsRestoringContext","useIsRestoring","shouldThrowError","throwError","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","ensureStaleTime","shouldSuspend","useQuery","Observer","isRestoring","onStoreChange","useBaseQuery","CommunityNewsCard","communityNews","newsItem","toDateString","ShieldCheck","ShieldPlus","Shield","Flame","EyeOff","Pin","PinOff","Activity","Radio","Lock","LockOpen","Trash","ApprovedIcon","ShieldCheckIcon","ModeratedIcon","ShieldPlusIcon","UnmoderatedIcon","ShieldIcon","HotIcon","FlameIcon","HiddenIcon","EyeOffIcon","StickiedIcon","PinIcon","UnstickiedIcon","PinOffIcon","ActivityIcon","LiveIcon","LockedIcon","LockIcon","UnlockedIcon","LockOpenIcon","DeleteIcon","TrashIcon","numbered","ListGroup","_props$horizontal","_props$numbered","getHorizontalClass","handleDisabledOnClick","ListGroupItem","EventsCard","liveEvents","pastEvents","upcomingEvents","Flag","MessageSquarePlus","RecentThreadsCard","FlagIcon","MessageSquarePlusIcon","useCapabilities","useRoles","isGlobalForumAdmin","isGlobalEventAdmin","isGlobalNewsAdmin","useThreads","forumMeta","threads","totalThreads","getThreads","pill","Badge","_props$pill","ForumPage","jumpToLastUnread","getUserUnreadPosts","ForumList","canModForums","pageData","setPageData","ForumsPage","MarkdownEditor","PostFileCard","objectFit","objectPosition","AccordionContext","Accordion","accordionContext","AccordionItem","AccordionHeader","buttonClasses","collapsed","accordionId","AccordionBody","QuotedPost","reply","setIsLoading","useQuotedPost","ReadPostsContext","postsToRead","setPostsToRead","ReadPostsContextProvider","timerId","highestReadPostId","cmd","markPostAsRead","onQuotePostClick","setIsEditing","isSubmittingEdit","setIsSubmittingEdit","canSubmitEdit","setCanSubmitEdit","isInView","useInView","setIsInView","callbackFunction","isIntersecting","currentRef","useMarkPostsAsRead","canEditPost","canQuotePost","thread","UserCanPostInThread","isOwner","canDeletePost","UserIsForumAdmin","onQuoteClick","onEditClick","alert","PostList","scriptRoot","_scriptRoot$current","_scriptRoot$current2","_scriptRoot$current3","twitterFragment","createContextualFragment","tiktokFragment","redditFragment","getThreadMeta","useThreadMeta","ThreadHeader","usePaginatedThread","totalPosts","getPaginatedThread","Mutation","_observers","_mutationCache","mutationId","mutationCache","submittedAt","_this$options$retry","mutationFn","restored","_this$options$onSucce","_this$options2","_this$options$onSettl","_this$options3","_this$options$onMutat","_this$options","onMutate","_this$options$onError","_this$options4","_this$options$onSettl2","_this$options5","runNext","onMutationUpdate","_currentMutation","_mutateOptions","_updateResult","defaultMutationOptions","getMutationCache","isIdle","_classPrivateFieldGet15","useMutation","mutateOptions","mutateAsync","SquarePlus","ButtonGroup","ThreadModTools","approveThreadMutation","deleteThreadMutation","lockThreadMutation","moderateThreadMutation","stickyThreadMutation","unlockThreadMutation","unmoderateThreadMutation","unstickyThreadMutation","handleSuccess","invalidateQueries","useThreadModTools","BaseThreadModToolButton","SquarePlusIcon","PostStation2Context","setPostContent","submitPost","PostStation2Provider","isSubmitting","setIsSubmitting","submitError","setSubmitError","fileExists","ImagePreviewTooltip","linkRef","isReady","setIsReady","FileReader","readAsDataURL","ImageIcon","validateFileName","extensionList","PostStation2","canPostFiles","validationResult","fileAmountValidator","newFileRejects","newUploadedFiles","ReplyEditor","ThreadPage","_query$data$meta$titl","_query$data","_query$data$meta","_query$data2","_query$data3","_query$data4","editorRef","setPage","setLimit","scrollToElement","$target","useScrollToHash","showPager","Pager","NewThread","ThreadListing","submitEditNews","setNewsId","NewsEditorTitle","NewsEditorBoxContainer","NewsEditorPublish","SubmitEditNewsButton","submitNewNews","SubmitNewNewsButton","NewsPageMode","AllNews","MyNews","isAuthor","setIsAuthor","_newsListing$newsList","_newsListing$newsList2","_newsListing$newsList3","setNewsListingData","NewsAdmin","NewsList","Reactions","newsAuthorDisplayName","_newsPageData$newsDet","_newsPageData$newsDet2","_newsPageData$newsDet3","_newsPageData$newsDet4","_newsPageData$newsDet5","_newsPageData$newsDet6","_newsPageData$newsDet7","_newsPageData$newsDet8","_newsPageData$newsDet9","_newsPageData$newsDet10","_newsPageData$newsDet11","_newsPageData$newsDet12","_newsPageData$newsDet13","_newsPageData$newsDet14","_newsPageData$newsDet15","newsPageData","setNewsPageData","UserIsNewsAdmin","NewsHeader","NewsAuthorInfo","NewsContent","UserCanPostInNewsThread","NewNews","EditNews","NewsListing","NewsPage","addNewPromotion","promotion","selectedResource","blurb","IsResourceUniqueToPromotions","promotions","noDuplicate","newPromotions","setPromotions","setModPromotion","setBlurb","forum","setForum","setIncludeNews","setIncludeEvents","modPromotion","handleForumChange","setResources","fetchResourceSearch","resources","_props$resources$inde","setSelectedResource","selectResource","setPromotableItems","SearchForResources","SelectResource","PromotionInfo","AddToCurrentPromotions","containsHandler","_param","propertyFn","typeConfig","i1","i2","i3","ref1","cancelHover","scheduleHover","connectTarget","forceDidChange","ItemTypes","PromotionItem","moveCard","deletePromotion","_ref$current","dragIndex","hoverIndex","hoverBoundingRect","hoverMiddleY","hoverClientY","prevCards","renderCard","promotedItem","modResponse","setModResponse","submitNewPromotionLineup","promotionData","setPromotionData","modPromotions","setModPromotions","SetPromotionOrder","SearchAddPromotions","SubmitNewPromotions","EditPromotions","Promoted","buildPromoUrl","bigPromo","promos","forumsClient","Home","homePageData","getHomePageData","QueryCache","_queries","_options$queryHash","getQueryDefaults","queryInMap","getAll","defaultedFilters","findAll","queries","MutationCache","_mutations","_mutationId","_this$mutationId","scopeFor","mutations","firstPendingMutation","_foundMutation$contin","foundMutation","flat","resumePausedMutations","pausedMutations","_mutation$options$sco","_mutation$options$sco2","infiniteQueryBehavior","_context$state$data","_context$state$data2","fetchMore","oldPages","oldPageParams","pageParams","fetchPage","pageParam","maxPages","addTo","oldData","getPreviousPageParam","getNextPageParam","_oldPageParams$","initialPageParam","remainingPages","_context$options$pers","_context$options","_options$getPreviousP","QueryClient","_queryCache","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","queryCache","_this$mountCount","_this$mountCount3","isMutating","getQueryData","ensureQueryData","cachedData","fetchQuery","revalidateIfStale","prefetchQuery","getQueriesData","setQueryData","functionalUpdate","setQueriesData","getQueryState","removeQueries","resetQueries","refetchFilters","refetchQueries","cancelQueries","defaultedCancelOptions","_filters$refetchType","refetchType","_options$cancelRefetc","fetchInfiniteQuery","prefetchInfiniteQuery","getDefaultOptions","setDefaultOptions","setQueryDefaults","queryDefault","setMutationDefaults","getMutationDefaults","initialized","setInitialized","ReactGA","HelmetProvider","AdminRoutes","DoomCentralRoutes","PromotionRoutes","ForumRoutes","NewsRoutes","EventRoutes","isLocalhost","registerValidSW","swUrl","serviceWorker","registration","onupdatefound","installingWorker","installing","onstatechange","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","App","ready","reload","checkValidServiceWorker","registerServiceWorker","reportWebVitals"],"sourceRoot":""}