Preparation Code Preparation HTML (this will be inserted in the <body>
of a valid HTML5 document in standards mode) (useful when testing DOM operations or including libraries) <script src ="https://cdnjs.cloudflare.com/ajax/libs/sugar/1.3.9/sugar.min.js" > </script >
<script >
(function ( ) {
function r (a, c, d ) {
if (a === c) return a !== 0 || 1 / a == 1 / c;
if (a == null || c == null ) return a === c;
if (a._chain ) a = a._wrapped ;
if (c._chain ) c = c._wrapped ;
if (a.isEqual && b.isFunction (a.isEqual )) return a.isEqual (c);
if (c.isEqual && b.isFunction (c.isEqual )) return c.isEqual (a);
var e = l.call (a);
if (e != l.call (c)) return false ;
switch (e) {
case "[object String]" :
return a == String (c);
case "[object Number]" :
return a != +a ? c != +c : a == 0 ? 1 / a == 1 / c : a == +c;
case "[object Date]" :
case "[object Boolean]" :
return +a == +c;
case "[object RegExp]" :
return a.source == c.source && a.global == c.global && a.multiline == c.multiline && a.ignoreCase == c.ignoreCase
}
if (typeof a != "object" || typeof c != "object" ) return false ;
for (var f = d.length ; f--;) if (d[f] == a) return true ;
d.push (a);
var f = 0 ,
g = true ;
if (e == "[object Array]" ) {
if (f = a.length , g = f == c.length ) for (; f--;) if (!(g = f in a == f in c && r (a[f], c[f], d))) break
} else {
if ("constructor" in a != "constructor" in c || a.constructor != c.constructor ) return false ;
for (var h in a) if (m.call (a, h) && (f++, !(g = m.call (c, h) && r (a[h], c[h], d)))) break ;
if (g) {
for (h in c) if (m.call (c, h) && !f--) break ;
g = !f
}
}
d.pop ();
return g
}
var s = this ,
F = s._ ,
o = {},
k = Array .prototype ,
p = Object .prototype ,
i = k.slice ,
G = k.concat ,
H = k.unshift ,
l = p.toString ,
m = p.hasOwnProperty ,
v = k.forEach ,
w = k.map ,
x = k.reduce ,
y = k.reduceRight ,
z = k.filter ,
A = k.every ,
B = k.some ,
q = k.indexOf ,
C = k.lastIndexOf ,
p = Array .isArray ,
I = Object .keys ,
t = Function .prototype .bind ,
b = function (a ) {
return new n (a)
};
if (typeof exports !== "undefined" ) {
if (typeof module !== "undefined" && module .exports ) exports = module .exports = b;
exports ._ = b
} else typeof define === "function" && define.amd ? define ("underscore" , function ( ) {
return b
}) : s._ = b;
b.VERSION = "1.2.3" ;
var j = b.each = b.forEach = function (a, c, b ) {
if (a != null ) if (v && a.forEach === v) a.forEach (c, b);
else if (a.length === +a.length ) for (var e = 0 , f = a.length ; e < f; e++) {
if (e in a && c.call (b, a[e], e, a) === o) break
} else for (e in a) if (m.call (a, e) && c.call (b, a[e], e, a) === o) break
};
b.map = function (a, c, b ) {
var e = [];
if (a == null ) return e;
if (w && a.map === w) return a.map (c, b);
j (a, function (a, g, h ) {
e[e.length ] = c.call (b, a, g, h)
});
return e
};
b.reduce = b.foldl = b.inject = function (a, c, d, e ) {
var f = arguments .length > 2 ;
a == null && (a = []);
if (x && a.reduce === x) return e && (c = b.bind (c, e)), f ? a.reduce (c, d) : a.reduce (c);
j (a, function (a, b, i ) {
f ? d = c.call (e, d, a, b, i) : (d = a, f = true )
});
if (!f) throw new TypeError ("Reduce of empty array with no initial value" );
return d
};
b.reduceRight = b.foldr = function (a, c, d, e ) {
var f = arguments .length > 2 ;
a == null && (a = []);
if (y && a.reduceRight === y) return e && (c = b.bind (c, e)), f ? a.reduceRight (c, d) : a.reduceRight (c);
var g = b.toArray (a).reverse ();
e && !f && (c = b.bind (c, e));
return f ? b.reduce (g, c, d, e) : b.reduce (g, c)
};
b.find = b.detect = function (a, c, b ) {
var e;
D (a, function (a, g, h ) {
if (c.call (b, a, g, h)) return e = a, true
});
return e
};
b.filter = b.select = function (a, c, b ) {
var e = [];
if (a == null ) return e;
if (z && a.filter === z) return a.filter (c, b);
j (a, function (a, g, h ) {
c.call (b, a, g, h) && (e[e.length ] = a)
});
return e
};
b.reject = function (a, c, b ) {
var e = [];
if (a == null ) return e;
j (a, function (a, g, h ) {
c.call (b, a, g, h) || (e[e.length ] = a)
});
return e
};
b.every = b.all = function (a, c, b ) {
var e = true ;
if (a == null ) return e;
if (A && a.every === A) return a.every (c, b);
j (a, function (a, g, h ) {
if (!(e = e && c.call (b, a, g, h))) return o
});
return e
};
var D = b.some = b.any = function (a, c, d ) {
c || (c = b.identity );
var e = false ;
if (a == null ) return e;
if (B && a.some === B) return a.some (c, d);
j (a, function (a, b, h ) {
if (e || (e = c.call (d, a, b, h))) return o
});
return !!e
};
b.include = b.contains = function (a, c ) {
var b = false ;
if (a == null ) return b;
return q && a.indexOf === q ? a.indexOf (c) != -1 : b = D (a, function (a ) {
return a === c
})
};
b.invoke = function (a, c ) {
var d = i.call (arguments , 2 );
return b.map (a, function (a ) {
return (c.call ? c || a : a[c]).apply (a, d)
})
};
b.pluck = function (a, c ) {
return b.map (a, function (a ) {
return a[c]
})
};
b.max = function (a, c, d ) {
if (!c && b.isArray (a)) return Math .max .apply (Math , a);
if (!c && b.isEmpty (a)) return -Infinity ;
var e = {
computed : -Infinity
};
j (a, function (a, b, h ) {
b = c ? c.call (d, a, b, h) : a;
b >= e.computed && (e = {
value : a,
computed : b
})
});
return e.value
};
b.min = function (a, c, d ) {
if (!c && b.isArray (a)) return Math .min .apply (Math , a);
if (!c && b.isEmpty (a)) return Infinity ;
var e = {
computed : Infinity
};
j (a, function (a, b, h ) {
b = c ? c.call (d, a, b, h) : a;
b < e.computed && (e = {
value : a,
computed : b
})
});
return e.value
};
b.shuffle = function (a ) {
var c = [],
b;
j (a, function (a, f ) {
f == 0 ? c[0 ] = a : (b = Math .floor (Math .random () * (f + 1 )), c[f] = c[b], c[b] = a)
});
return c
};
b.sortBy = function (a, c, d ) {
return b.pluck (b.map (a, function (a, b, g ) {
return {
value : a,
criteria : c.call (d, a, b, g)
}
}).sort (function (a, c ) {
var b = a.criteria ,
d = c.criteria ;
return b < d ? -1 : b > d ? 1 : 0
}), "value" )
};
b.groupBy = function (a, c ) {
var d = {},
e = b.isFunction (c) ? c : function (a ) {
return a[c]
};
j (a, function (a, b ) {
var c = e (a, b);
(d[c] || (d[c] = [])).push (a)
});
return d
};
b.sortedIndex = function (a, c, d ) {
d || (d = b.identity );
for (var e = 0 , f = a.length ; e < f;) {
var g = e + f >> 1 ;
d (a[g]) < d (c) ? e = g + 1 : f = g
}
return e
};
b.toArray = function (a ) {
return !a ? [] : a.toArray ? a.toArray () : b.isArray (a) ? i.call (a) : b.isArguments (a) ? i.call (a) : b.values (a)
};
b.size = function (a ) {
return b.toArray (a).length
};
b.first = b.head = function (a, b, d ) {
return b != null && !d ? i.call (a, 0 , b) : a[0 ]
};
b.initial = function (a, b, d ) {
return i.call (a, 0 , a.length - (b == null || d ? 1 : b))
};
b.last = function (a, b, d ) {
return b != null && !d ? i.call (a, Math .max (a.length - b, 0 )) : a[a.length - 1 ]
};
b.rest = b.tail = function (a, b, d ) {
return i.call (a, b == null || d ? 1 : b)
};
b.compact = function (a ) {
return b.filter (a, function (a ) {
return !!a
})
};
b.flatten = function (a, c ) {
return b.reduce (a, function (a, e ) {
if (b.isArray (e)) return a.concat (c ? e : b.flatten (e));
a[a.length ] = e;
return a
}, [])
};
b.without = function (a ) {
return b.difference (a, i.call (arguments , 1 ))
};
b.uniq = b.unique = function (a, c, d ) {
var d = d ? b.map (a, d) : a,
e = [];
b.reduce (d, function (d, g, h ) {
if (0 == h || (c === true ? b.last (d) != g : !b.include (d, g))) d[d.length ] = g, e[e.length ] = a[h];
return d
}, []);
return e
};
b.union = function ( ) {
return b.uniq (b.flatten (arguments , true ))
};
b.intersection = b.intersect = function (a ) {
var c = i.call (arguments , 1 );
return b.filter (b.uniq (a), function (a ) {
return b.every (c, function (c ) {
return b.indexOf (c, a) >= 0
})
})
};
b.difference = function (a ) {
var c = b.flatten (i.call (arguments , 1 ));
return b.filter (a, function (a ) {
return !b.include (c, a)
})
};
b.zip = function ( ) {
for (var a = i.call (arguments ), c = b.max (b.pluck (a, "length" )), d = Array (c), e = 0 ; e < c; e++) d[e] = b.pluck (a, "" + e);
return d
};
b.indexOf = function (a, c, d ) {
if (a == null ) return -1 ;
var e;
if (d) return d = b.sortedIndex (a, c), a[d] === c ? d : -1 ;
if (q && a.indexOf === q) return a.indexOf (c);
for (d = 0 , e = a.length ; d < e; d++) if (d in a && a[d] === c) return d;
return -1
};
b.lastIndexOf = function (a, b ) {
if (a == null ) return -1 ;
if (C && a.lastIndexOf === C) return a.lastIndexOf (b);
for (var d = a.length ; d--;) if (d in a && a[d] === b) return d;
return -1
};
b.range = function (a, b, d ) {
arguments .length <= 1 && (b = a || 0 , a = 0 );
for (var d = arguments [2 ] || 1 , e = Math .max (Math .ceil ((b - a) / d), 0 ), f = 0 , g = Array (e); f < e;) g[f++] = a, a += d;
return g
};
var E = function ( ) {};
b.bind = function (a, c ) {
var d, e;
if (a.bind === t && t) return t.apply (a, i.call (arguments , 1 ));
if (!b.isFunction (a)) throw new TypeError ;
e = i.call (arguments , 2 );
return d = function ( ) {
if (!(this instanceof d)) return a.apply (c, e.concat (i.call (arguments )));
E.prototype = a.prototype ;
var b = new E,
g = a.apply (b, e.concat (i.call (arguments )));
return Object (g) === g ? g : b
}
};
b.bindAll = function (a ) {
var c = i.call (arguments , 1 );
c.length == 0 && (c = b.functions (a));
j (c, function (c ) {
a[c] = b.bind (a[c], a)
});
return a
};
b.memoize = function (a, c ) {
var d = {};
c || (c = b.identity );
return function ( ) {
var b = c.apply (this , arguments );
return m.call (d, b) ? d[b] : d[b] = a.apply (this , arguments )
}
};
b.delay = function (a, b ) {
var d = i.call (arguments , 2 );
return setTimeout (function ( ) {
return a.apply (a, d)
}, b)
};
b.defer = function (a ) {
return b.delay .apply (b, [a, 1 ].concat (i.call (arguments , 1 )))
};
b.throttle = function (a, c ) {
var d, e, f, g, h, i = b.debounce (function ( ) {
h = g = false
}, c);
return function ( ) {
d = this ;
e = arguments ;
var b;
f || (f = setTimeout (function ( ) {
f = null ;
h && a.apply (d, e);
i ()
}, c));
g ? h = true : a.apply (d, e);
i ();
g = true
}
};
b.debounce = function (a, b ) {
var d;
return function ( ) {
var e = this ,
f = arguments ;
clearTimeout (d);
d = setTimeout (function ( ) {
d = null ;
a.apply (e, f)
}, b)
}
};
b.once = function (a ) {
var b = false ,
d;
return function ( ) {
if (b) return d;
b = true ;
return d = a.apply (this , arguments )
}
};
b.wrap = function (a, b ) {
return function ( ) {
var d = G.apply ([a], arguments );
return b.apply (this , d)
}
};
b.compose = function ( ) {
var a = arguments ;
return function ( ) {
for (var b = arguments , d = a.length - 1 ; d >= 0 ; d--) b = [a[d].apply (this , b)];
return b[0 ]
}
};
b.after = function (a, b ) {
return a <= 0 ? b () : function ( ) {
if (--a < 1 ) return b.apply (this , arguments )
}
};
b.keys = I ||
function (a ) {
if (a !== Object (a)) throw new TypeError ("Invalid object" );
var b = [],
d;
for (d in a) m.call (a, d) && (b[b.length ] = d);
return b
};
b.values = function (a ) {
return b.map (a, b.identity )
};
b.functions = b.methods = function (a ) {
var c = [],
d;
for (d in a) b.isFunction (a[d]) && c.push (d);
return c.sort ()
};
b.extend = function (a ) {
j (i.call (arguments , 1 ), function (b ) {
for (var d in b) b[d] !== void 0 && (a[d] = b[d])
});
return a
};
b.defaults = function (a ) {
j (i.call (arguments , 1 ), function (b ) {
for (var d in b) a[d] == null && (a[d] = b[d])
});
return a
};
b.clone = function (a ) {
return !b.isObject (a) ? a : b.isArray (a) ? a.slice () : b.extend ({}, a)
};
b.tap = function (a, b ) {
b (a);
return a
};
b.isEqual = function (a, b ) {
return r (a, b, [])
};
b.isEmpty = function (a ) {
if (b.isArray (a) || b.isString (a)) return a.length === 0 ;
for (var c in a) if (m.call (a, c)) return false ;
return true
};
b.isElement = function (a ) {
return !!(a && a.nodeType == 1 )
};
b.isArray = p ||
function (a ) {
return l.call (a) == "[object Array]"
};
b.isObject = function (a ) {
return a === Object (a)
};
b.isArguments = function (a ) {
return l.call (a) == "[object Arguments]"
};
if (!b.isArguments (arguments )) b.isArguments = function (a ) {
return !(!a || !m.call (a, "callee" ))
};
b.isFunction = function (a ) {
return l.call (a) == "[object Function]"
};
b.isString = function (a ) {
return l.call (a) == "[object String]"
};
b.isNumber = function (a ) {
return l.call (a) == "[object Number]"
};
b.isNaN = function (a ) {
return a !== a
};
b.isBoolean = function (a ) {
return a === true || a === false || l.call (a) == "[object Boolean]"
};
b.isDate = function (a ) {
return l.call (a) == "[object Date]"
};
b.isRegExp = function (a ) {
return l.call (a) == "[object RegExp]"
};
b.isNull = function (a ) {
return a === null
};
b.isUndefined = function (a ) {
return a === void 0
};
b.noConflict = function ( ) {
s._ = F;
return this
};
b.identity = function (a ) {
return a
};
b.times = function (a, b, d ) {
for (var e = 0 ; e < a; e++) b.call (d, e)
};
b.escape = function (a ) {
return ("" + a).replace (/&/g , "&" ).replace (/</g , "<" ).replace (/>/g , ">" ).replace (/"/g , """ ).replace (/'/g , "'" ).replace (/\//g , "/" )
};
b.mixin = function (a ) {
j (b.functions (a), function (c ) {
J (c, b[c] = a[c])
})
};
var K = 0 ;
b.uniqueId = function (a ) {
var b = K++;
return a ? a + b : b
};
b.templateSettings = {
evaluate : /<%([\s\S]+?)%>/g ,
interpolate : /<%=([\s\S]+?)%>/g ,
escape : /<%-([\s\S]+?)%>/g
};
b.template = function (a, c ) {
var d = b.templateSettings ,
d = "var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('" + a.replace (/\\/g , "\\\\" ).replace (/'/g , "\\'" ).replace (d.escape , function (a, b ) {
return "',_.escape(" + b.replace (/\\'/g , "'" ) + "),'"
}).replace (d.interpolate , function (a, b ) {
return "'," + b.replace (/\\'/g , "'" ) + ",'"
}).replace (d.evaluate || null , function (a, b ) {
return "');" + b.replace (/\\'/g , "'" ).replace (/[\r\n\t]/g , " " ) + ";__p.push('"
}).replace (/\r/g , "\\r" ).replace (/\n/g , "\\n" ).replace (/\t/g , "\\t" ) + "');}return __p.join('');" ,
e = new Function ("obj" , "_" , d);
return c ? e (c, b) : function (a ) {
return e.call (this , a, b)
}
};
var n = function (a ) {
this ._wrapped = a
};
b.prototype = n.prototype ;
var u = function (a, c ) {
return c ? b (a).chain () : a
},
J = function (a, c ) {
n.prototype [a] = function ( ) {
var a = i.call (arguments );
H.call (a, this ._wrapped );
return u (c.apply (b, a), this ._chain )
}
};
b.mixin (b);
j ("pop,push,reverse,shift,sort,splice,unshift" .split ("," ), function (a ) {
var b = k[a];
n.prototype [a] = function ( ) {
b.apply (this ._wrapped , arguments );
return u (this ._wrapped , this ._chain )
}
});
j (["concat" , "join" , "slice" ], function (a ) {
var b = k[a];
n.prototype [a] = function ( ) {
return u (b.apply (this ._wrapped , arguments ), this ._chain )
}
});
n.prototype .chain = function ( ) {
this ._chain = true ;
return this
};
n.prototype .value = function ( ) {
return this ._wrapped
}
}).call (this );
</script >
Setup JS var chunk = 4 ;
var arr = ["a0" , "a1" , "a2" , "a3" , "a4" , "a5" , "a6" , "a7" , "a8" , "a9" , "a10" , "a11" , "a12" , "a13" , "a14" , "a15" , "a16" , "a17" , "a18" , "a19" , "a20" , "a21" , "a22" , "a23" , "a24" , "a25" , "a26" , "a27" , "a28" , "a29" , "a30" , "a31" , "a32" , "a33" , "a34" , "a35" , "a36" , "a37" , "a38" , "a39" , "a40" , "a41" , "a42" , "a43" , "a44" , "a45" , "a46" , "a47" , "a48" , "a49" , "a50" , "a51" , "a52" , "a53" , "a54" , "a55" , "a56" , "a57" , "a58" , "a59" , "a60" , "a61" , "a62" , "a63" , "a64" , "a65" , "a66" , "a67" , "a68" , "a69" , "a70" , "a71" , "a72" , "a73" , "a74" , "a75" , "a76" , "a77" , "a78" , "a79" , "a80" , "a81" , "a82" , "a83" , "a84" , "a85" , "a86" , "a87" , "a88" , "a89" , "a90" , "a91" , "a92" , "a93" , "a94" , "a95" , "a96" , "a97" , "a98" , "a99" , "a100" , "a101" , "a102" , "a103" , "a104" , "a105" , "a106" , "a107" , "a108" , "a109" , "a110" , "a111" , "a112" , "a113" , "a114" , "a115" , "a116" , "a117" , "a118" , "a119" , "a120" , "a121" , "a122" , "a123" , "a124" , "a125" , "a126" , "a127" , "a128" , "a129" , "a130" , "a131" , "a132" , "a133" , "a134" , "a135" , "a136" , "a137" , "a138" , "a139" , "a140" , "a141" , "a142" , "a143" , "a144" , "a145" , "a146" , "a147" , "a148" , "a149" , "a150" , "a151" , "a152" , "a153" , "a154" , "a155" , "a156" , "a157" , "a158" , "a159" , "a160" , "a161" , "a162" , "a163" , "a164" , "a165" , "a166" , "a167" , "a168" , "a169" , "a170" , "a171" , "a172" , "a173" , "a174" , "a175" , "a176" , "a177" , "a178" , "a179" , "a180" , "a181" , "a182" , "a183" , "a184" , "a185" , "a186" , "a187" , "a188" , "a189" , "a190" , "a191" , "a192" , "a193" , "a194" , "a195" , "a196" , "a197" , "a198" , "a199" , "a200" , "a201" , "a202" , "a203" , "a204" , "a205" , "a206" , "a207" , "a208" , "a209" , "a210" , "a211" , "a212" , "a213" , "a214" , "a215" , "a216" , "a217" , "a218" , "a219" , "a220" , "a221" , "a222" , "a223" , "a224" , "a225" , "a226" , "a227" , "a228" , "a229" , "a230" , "a231" , "a232" , "a233" , "a234" , "a235" , "a236" , "a237" , "a238" , "a239" , "a240" , "a241" , "a242" , "a243" , "a244" , "a245" , "a246" , "a247" , "a248" , "a249" , "a250" , "a251" , "a252" , "a253" , "a254" , "a255" , "a256" , "a257" , "a258" , "a259" , "a260" , "a261" , "a262" , "a263" , "a264" , "a265" , "a266" , "a267" , "a268" , "a269" , "a270" , "a271" , "a272" , "a273" , "a274" , "a275" , "a276" , "a277" , "a278" , "a279" , "a280" , "a281" , "a282" , "a283" , "a284" , "a285" , "a286" , "a287" , "a288" , "a289" , "a290" , "a291" , "a292" , "a293" , "a294" , "a295" , "a296" , "a297" , "a298" , "a299" , "a300" , "a301" , "a302" , "a303" , "a304" , "a305" , "a306" , "a307" , "a308" , "a309" , "a310" , "a311" , "a312" , "a313" , "a314" , "a315" , "a316" , "a317" , "a318" , "a319" , "a320" , "a321" , "a322" , "a323" , "a324" , "a325" , "a326" , "a327" , "a328" , "a329" , "a330" , "a331" , "a332" , "a333" , "a334" , "a335" , "a336" , "a337" , "a338" , "a339" , "a340" , "a341" , "a342" , "a343" , "a344" , "a345" , "a346" , "a347" , "a348" , "a349" , "a350" , "a351" , "a352" , "a353" , "a354" , "a355" , "a356" , "a357" , "a358" , "a359" , "a360" , "a361" , "a362" , "a363" , "a364" , "a365" , "a366" , "a367" , "a368" , "a369" , "a370" , "a371" , "a372" , "a373" , "a374" , "a375" , "a376" , "a377" , "a378" , "a379" , "a380" , "a381" , "a382" , "a383" , "a384" , "a385" , "a386" , "a387" , "a388" , "a389" , "a390" , "a391" , "a392" , "a393" , "a394" , "a395" , "a396" , "a397" , "a398" , "a399" , "a400" , "a401" , "a402" , "a403" , "a404" , "a405" , "a406" , "a407" , "a408" , "a409" , "a410" , "a411" , "a412" , "a413" , "a414" , "a415" , "a416" , "a417" , "a418" , "a419" , "a420" , "a421" , "a422" , "a423" , "a424" , "a425" , "a426" , "a427" , "a428" , "a429" , "a430" , "a431" , "a432" , "a433" , "a434" , "a435" , "a436" , "a437" , "a438" , "a439" , "a440" , "a441" , "a442" , "a443" , "a444" , "a445" , "a446" , "a447" , "a448" , "a449" , "a450" , "a451" , "a452" , "a453" , "a454" , "a455" , "a456" , "a457" , "a458" , "a459" , "a460" , "a461" , "a462" , "a463" , "a464" , "a465" , "a466" , "a467" , "a468" , "a469" , "a470" , "a471" , "a472" , "a473" , "a474" , "a475" , "a476" , "a477" , "a478" , "a479" , "a480" , "a481" , "a482" , "a483" , "a484" , "a485" , "a486" , "a487" , "a488" , "a489" , "a490" , "a491" , "a492" , "a493" , "a494" , "a495" , "a496" , "a497" , "a498" , "a499" , "a500" , "a501" , "a502" , "a503" , "a504" , "a505" , "a506" , "a507" , "a508" , "a509" , "a510" , "a511" , "a512" , "a513" , "a514" , "a515" , "a516" , "a517" , "a518" , "a519" , "a520" , "a521" , "a522" , "a523" , "a524" , "a525" , "a526" , "a527" , "a528" , "a529" , "a530" , "a531" , "a532" , "a533" , "a534" , "a535" , "a536" , "a537" , "a538" , "a539" , "a540" , "a541" , "a542" , "a543" , "a544" , "a545" , "a546" , "a547" , "a548" , "a549" , "a550" , "a551" , "a552" , "a553" , "a554" , "a555" , "a556" , "a557" , "a558" , "a559" , "a560" , "a561" , "a562" , "a563" , "a564" , "a565" , "a566" , "a567" , "a568" , "a569" , "a570" , "a571" , "a572" , "a573" , "a574" , "a575" , "a576" , "a577" , "a578" , "a579" , "a580" , "a581" , "a582" , "a583" , "a584" , "a585" , "a586" , "a587" , "a588" , "a589" , "a590" , "a591" , "a592" , "a593" , "a594" , "a595" , "a596" , "a597" , "a598" , "a599" , "a600" , "a601" , "a602" , "a603" , "a604" , "a605" , "a606" , "a607" , "a608" , "a609" , "a610" , "a611" , "a612" , "a613" , "a614" , "a615" , "a616" , "a617" , "a618" , "a619" , "a620" , "a621" , "a622" , "a623" , "a624" , "a625" , "a626" , "a627" , "a628" , "a629" , "a630" , "a631" , "a632" , "a633" , "a634" , "a635" , "a636" , "a637" , "a638" , "a639" , "a640" , "a641" , "a642" , "a643" , "a644" , "a645" , "a646" , "a647" , "a648" , "a649" , "a650" , "a651" , "a652" , "a653" , "a654" , "a655" , "a656" , "a657" , "a658" , "a659" , "a660" , "a661" , "a662" , "a663" , "a664" , "a665" , "a666" , "a667" , "a668" , "a669" , "a670" , "a671" , "a672" , "a673" , "a674" , "a675" , "a676" , "a677" , "a678" , "a679" , "a680" , "a681" , "a682" , "a683" , "a684" , "a685" , "a686" , "a687" , "a688" , "a689" , "a690" , "a691" , "a692" , "a693" , "a694" , "a695" , "a696" , "a697" , "a698" , "a699" , "a700" , "a701" , "a702" , "a703" , "a704" , "a705" , "a706" , "a707" , "a708" , "a709" , "a710" , "a711" , "a712" , "a713" , "a714" , "a715" , "a716" , "a717" , "a718" , "a719" , "a720" , "a721" , "a722" , "a723" , "a724" , "a725" , "a726" , "a727" , "a728" , "a729" , "a730" , "a731" , "a732" , "a733" , "a734" , "a735" , "a736" , "a737" , "a738" , "a739" , "a740" , "a741" , "a742" , "a743" , "a744" , "a745" , "a746" , "a747" , "a748" , "a749" , "a750" , "a751" , "a752" , "a753" , "a754" , "a755" , "a756" , "a757" , "a758" , "a759" , "a760" , "a761" , "a762" , "a763" , "a764" , "a765" , "a766" , "a767" , "a768" , "a769" , "a770" , "a771" , "a772" , "a773" , "a774" , "a775" , "a776" , "a777" , "a778" , "a779" , "a780" , "a781" , "a782" , "a783" , "a784" , "a785" , "a786" , "a787" , "a788" , "a789" , "a790" , "a791" , "a792" , "a793" , "a794" , "a795" , "a796" , "a797" , "a798" , "a799" , "a800" , "a801" , "a802" , "a803" , "a804" , "a805" , "a806" , "a807" , "a808" , "a809" , "a810" , "a811" , "a812" , "a813" , "a814" , "a815" , "a816" , "a817" , "a818" , "a819" , "a820" , "a821" , "a822" , "a823" , "a824" , "a825" , "a826" , "a827" , "a828" , "a829" , "a830" , "a831" , "a832" , "a833" , "a834" , "a835" , "a836" , "a837" , "a838" , "a839" , "a840" , "a841" , "a842" , "a843" , "a844" , "a845" , "a846" , "a847" , "a848" , "a849" , "a850" , "a851" , "a852" , "a853" , "a854" , "a855" , "a856" , "a857" , "a858" , "a859" , "a860" , "a861" , "a862" , "a863" , "a864" , "a865" , "a866" , "a867" , "a868" , "a869" , "a870" , "a871" , "a872" , "a873" , "a874" , "a875" , "a876" , "a877" , "a878" , "a879" , "a880" , "a881" , "a882" , "a883" , "a884" , "a885" , "a886" , "a887" , "a888" , "a889" , "a890" , "a891" , "a892" , "a893" , "a894" , "a895" , "a896" , "a897" , "a898" , "a899" , "a900" , "a901" , "a902" , "a903" , "a904" , "a905" , "a906" , "a907" , "a908" , "a909" , "a910" , "a911" , "a912" , "a913" , "a914" , "a915" , "a916" , "a917" , "a918" , "a919" , "a920" , "a921" , "a922" , "a923" , "a924" , "a925" , "a926" , "a927" , "a928" , "a929" , "a930" , "a931" , "a932" , "a933" , "a934" , "a935" , "a936" , "a937" , "a938" , "a939" , "a940" , "a941" , "a942" , "a943" , "a944" , "a945" , "a946" , "a947" , "a948" , "a949" , "a950" , "a951" , "a952" , "a953" , "a954" , "a955" , "a956" , "a957" , "a958" , "a959" , "a960" , "a961" , "a962" , "a963" , "a964" , "a965" , "a966" , "a967" , "a968" , "a969" , "a970" , "a971" , "a972" , "a973" , "a974" , "a975" , "a976" , "a977" , "a978" , "a979" , "a980" , "a981" , "a982" , "a983" , "a984" , "a985" , "a986" , "a987" , "a988" , "a989" , "a990" , "a991" , "a992" , "a993" , "a994" , "a995" , "a996" , "a997" , "a998" , "a999" ];
Teardown JS