define([], function () { function order(c) { if (/^\d$/.test(c)) return 0 else if (/^[a-z]$/i.test(c)) return c.charCodeAt(0) else if (c === "~") return -1 else if (c) return c.charCodeAt(0) + 256 else return 0 } // Based on dpkg code function vercomp(a, b) { var apos = 0, bpos = 0 while (apos < a.length || bpos < b.length) { var firstDiff = 0 while ((apos < a.length && !/^\d$/.test(a[apos])) || (bpos < b.length && !/^\d$/.test(b[bpos]))) { var ac = order(a[apos]) var bc = order(b[bpos]) if (ac !== bc) return ac - bc apos++ bpos++ } while (a[apos] === "0") apos++ while (b[bpos] === "0") bpos++ while (/^\d$/.test(a[apos]) && /^\d$/.test(b[bpos])) { if (firstDiff === 0) firstDiff = a.charCodeAt(apos) - b.charCodeAt(bpos) apos++ bpos++ } if (/^\d$/.test(a[apos])) return 1 if (/^\d$/.test(b[bpos])) return -1 if (firstDiff !== 0) return firstDiff } return 0 } return vercomp })