class BitSet {
constructor(length) {
length = Math.floor(length);
if (!(length >= 0)) throw new Error("invalid length");
Object.defineProperties(this, {
length: {value: length, enumerable: true},
array: {value: new Uint32Array(Math.ceil(length / 32)), enumerable: true}
});
}
has(i) {
if ((i = +i) !== (i | 0) || i < 0 || i >= this.length) return;
return (this.array[i >>> 5] & (1 << i)) !== 0;
}
add(i) {
if ((i = +i) !== (i | 0) || i < 0 || i >= this.length) return this;
this.array[i >>> 5] |= 1 << i;
return this;
}
delete(i) {
if ((i = +i) !== (i | 0) || i < 0 || i >= this.length) return this;
this.array[i >>> 5] &= ~(1 << i);
return this;
}
}