function expandNum(ary, url) {
var num;
var min, max, def, format;
var i;
if (num = url.match(/\[([a-f\d]+)\-([a-f\d]+)(:([1-9]\d*))?\]/i)) {
format = num[1].length;
def = Number(num[4]) || 1;
if (num[0].match(/[a-f]/)) {
min = Number("0x" + num[1]);
max = Number("0x" + num[2]);
for (i = min; i <= max; i += def) {
expandNum(ary, url.replace(/\[([a-f\d]+)\-([a-f\d]+)(:([1-9]\d*))?\]/i, formatNum(i, format, 16)));
}
}
else if (num[0].match(/[A-F]/)) {
min = Number("0x" + num[1]);
max = Number("0x" + num[2]);
for (i = min; i <= max; i += def) {
expandNum(ary, url.replace(/\[([a-f\d]+)\-([a-f\d]+)(:([1-9]\d*))?\]/, formatNum(i, format, 16, true)));
}