encode = (data) =>
encodeURIComponent(
(data + "")
.replace(/^\s+|\s+$/g, "")
.replace(/<!--[\s\S]*?-->/g, "")
.replace(/<(\S+)\s*>\s*<[/]\1\s*>/g, "")
.replace(/"([^"]*)"/g, "'$1'")
)
.replace(/(%(?:0A|20))\1*/g, (match, p1) => decodeURIComponent(p1))
.replace(/(%(?:2[BF]|3A|[37][BD]))/g, (match, p1) => decodeURIComponent(p1))
.replace(/(?:[^\S]*[\n\r\f\x0b\x85\u2028\u2029]){2,}/g, "\n")
.replace(/^ +/gm, "")
.split(/\n/)
.join("")