@makerdao/test-helpers
Version:
test helpers for the monorepo
1,294 lines (1,145 loc) • 150 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var fetch = _interopDefault(require('node-fetch'));
var assert = _interopDefault(require('assert'));
var ganacheAddress = 'http://localhost:2000';
var requestCount = 0;
function callGanache(method, params) {
if (params === void 0) {
params = [];
}
return fetch(ganacheAddress, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
jsonrpc: '2.0',
method: method,
params: params,
id: requestCount++
})
});
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function () {
var self = this,
args = arguments;
return new Promise(function (resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
function createCommonjsModule(fn, module) {
return module = { exports: {} }, fn(module, module.exports), module.exports;
}
var runtime_1 = /*#__PURE__*/createCommonjsModule(function (module) {
/**
* Copyright (c) 2014-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var runtime = function (exports) {
var Op = Object.prototype;
var hasOwn = Op.hasOwnProperty;
var undefined$1; // More compressible than void 0.
var $Symbol = typeof Symbol === "function" ? Symbol : {};
var iteratorSymbol = $Symbol.iterator || "@@iterator";
var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
function wrap(innerFn, outerFn, self, tryLocsList) {
// If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
var generator = Object.create(protoGenerator.prototype);
var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,
// .throw, and .return methods.
generator._invoke = makeInvokeMethod(innerFn, self, context);
return generator;
}
exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion
// record like context.tryEntries[i].completion. This interface could
// have been (and was previously) designed to take a closure to be
// invoked without arguments, but in all the cases we care about we
// already have an existing method we want to call, so there's no need
// to create a new function object. We can even get away with assuming
// the method takes exactly one argument, since that happens to be true
// in every case, so we don't have to touch the arguments object. The
// only additional allocation required is the completion record, which
// has a stable shape and so hopefully should be cheap to allocate.
function tryCatch(fn, obj, arg) {
try {
return {
type: "normal",
arg: fn.call(obj, arg)
};
} catch (err) {
return {
type: "throw",
arg: err
};
}
}
var GenStateSuspendedStart = "suspendedStart";
var GenStateSuspendedYield = "suspendedYield";
var GenStateExecuting = "executing";
var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as
// breaking out of the dispatch switch statement.
var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and
// .constructor.prototype properties for functions that return Generator
// objects. For full spec compliance, you may wish to configure your
// minifier not to mangle the names of these two functions.
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that
// don't natively support it.
var IteratorPrototype = {};
IteratorPrototype[iteratorSymbol] = function () {
return this;
};
var getProto = Object.getPrototypeOf;
var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
// This environment has a native %IteratorPrototype%; use it instead
// of the polyfill.
IteratorPrototype = NativeIteratorPrototype;
}
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
GeneratorFunctionPrototype.constructor = GeneratorFunction;
GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the
// Iterator interface in terms of a single ._invoke method.
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
prototype[method] = function (arg) {
return this._invoke(method, arg);
};
});
}
exports.isGeneratorFunction = function (genFun) {
var ctor = typeof genFun === "function" && genFun.constructor;
return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can
// do is to check its .name property.
(ctor.displayName || ctor.name) === "GeneratorFunction" : false;
};
exports.mark = function (genFun) {
if (Object.setPrototypeOf) {
Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
} else {
genFun.__proto__ = GeneratorFunctionPrototype;
if (!(toStringTagSymbol in genFun)) {
genFun[toStringTagSymbol] = "GeneratorFunction";
}
}
genFun.prototype = Object.create(Gp);
return genFun;
}; // Within the body of any async function, `await x` is transformed to
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
// `hasOwn.call(value, "__await")` to determine if the yielded value is
// meant to be awaited.
exports.awrap = function (arg) {
return {
__await: arg
};
};
function AsyncIterator(generator, PromiseImpl) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if (record.type === "throw") {
reject(record.arg);
} else {
var result = record.arg;
var value = result.value;
if (value && typeof value === "object" && hasOwn.call(value, "__await")) {
return PromiseImpl.resolve(value.__await).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
});
}
return PromiseImpl.resolve(value).then(function (unwrapped) {
// When a yielded Promise is resolved, its final value becomes
// the .value of the Promise<{value,done}> result for the
// current iteration.
result.value = unwrapped;
resolve(result);
}, function (error) {
// If a rejected Promise was yielded, throw the rejection back
// into the async generator function so it can be handled there.
return invoke("throw", error, resolve, reject);
});
}
}
var previousPromise;
function enqueue(method, arg) {
function callInvokeWithMethodAndArg() {
return new PromiseImpl(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise = // If enqueue has been called before, then we want to wait until
// all previous Promises have been resolved before calling invoke,
// so that results are always delivered in the correct order. If
// enqueue has not been called before, then it is important to
// call invoke immediately, without waiting on a callback to fire,
// so that the async generator function has the opportunity to do
// any necessary setup in a predictable way. This predictability
// is why the Promise constructor synchronously invokes its
// executor callback, and why async functions synchronously
// execute code before the first await. Since we implement simple
// async functions in terms of async generators, it is especially
// important to get this right, even though it requires care.
previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later
// invocations of the iterator.
callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
} // Define the unified helper method that is used to implement .next,
// .throw, and .return (see defineIteratorMethods).
this._invoke = enqueue;
}
defineIteratorMethods(AsyncIterator.prototype);
AsyncIterator.prototype[asyncIteratorSymbol] = function () {
return this;
};
exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of
// AsyncIterator objects; they just return a Promise for the value of
// the final result produced by the iterator.
exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
if (PromiseImpl === void 0) PromiseImpl = Promise;
var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
: iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
};
function makeInvokeMethod(innerFn, self, context) {
var state = GenStateSuspendedStart;
return function invoke(method, arg) {
if (state === GenStateExecuting) {
throw new Error("Generator is already running");
}
if (state === GenStateCompleted) {
if (method === "throw") {
throw arg;
} // Be forgiving, per 25.3.3.3.3 of the spec:
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
return doneResult();
}
context.method = method;
context.arg = arg;
while (true) {
var delegate = context.delegate;
if (delegate) {
var delegateResult = maybeInvokeDelegate(delegate, context);
if (delegateResult) {
if (delegateResult === ContinueSentinel) continue;
return delegateResult;
}
}
if (context.method === "next") {
// Setting context._sent for legacy support of Babel's
// function.sent implementation.
context.sent = context._sent = context.arg;
} else if (context.method === "throw") {
if (state === GenStateSuspendedStart) {
state = GenStateCompleted;
throw context.arg;
}
context.dispatchException(context.arg);
} else if (context.method === "return") {
context.abrupt("return", context.arg);
}
state = GenStateExecuting;
var record = tryCatch(innerFn, self, context);
if (record.type === "normal") {
// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
state = context.done ? GenStateCompleted : GenStateSuspendedYield;
if (record.arg === ContinueSentinel) {
continue;
}
return {
value: record.arg,
done: context.done
};
} else if (record.type === "throw") {
state = GenStateCompleted; // Dispatch the exception by looping back around to the
// context.dispatchException(context.arg) call above.
context.method = "throw";
context.arg = record.arg;
}
}
};
} // Call delegate.iterator[context.method](context.arg) and handle the
// result, either by returning a { value, done } result from the
// delegate iterator, or by modifying context.method and context.arg,
// setting context.delegate to null, and returning the ContinueSentinel.
function maybeInvokeDelegate(delegate, context) {
var method = delegate.iterator[context.method];
if (method === undefined$1) {
// A .throw or .return when the delegate iterator has no .throw
// method always terminates the yield* loop.
context.delegate = null;
if (context.method === "throw") {
// Note: ["return"] must be used for ES3 parsing compatibility.
if (delegate.iterator["return"]) {
// If the delegate iterator has a return method, give it a
// chance to clean up.
context.method = "return";
context.arg = undefined$1;
maybeInvokeDelegate(delegate, context);
if (context.method === "throw") {
// If maybeInvokeDelegate(context) changed context.method from
// "return" to "throw", let that override the TypeError below.
return ContinueSentinel;
}
}
context.method = "throw";
context.arg = new TypeError("The iterator does not provide a 'throw' method");
}
return ContinueSentinel;
}
var record = tryCatch(method, delegate.iterator, context.arg);
if (record.type === "throw") {
context.method = "throw";
context.arg = record.arg;
context.delegate = null;
return ContinueSentinel;
}
var info = record.arg;
if (!info) {
context.method = "throw";
context.arg = new TypeError("iterator result is not an object");
context.delegate = null;
return ContinueSentinel;
}
if (info.done) {
// Assign the result of the finished delegate to the temporary
// variable specified by delegate.resultName (see delegateYield).
context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).
context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the
// exception, let the outer generator proceed normally. If
// context.method was "next", forget context.arg since it has been
// "consumed" by the delegate iterator. If context.method was
// "return", allow the original .return call to continue in the
// outer generator.
if (context.method !== "return") {
context.method = "next";
context.arg = undefined$1;
}
} else {
// Re-yield the result returned by the delegate method.
return info;
} // The delegate iterator is finished, so forget it and continue with
// the outer generator.
context.delegate = null;
return ContinueSentinel;
} // Define Generator.prototype.{next,throw,return} in terms of the
// unified ._invoke helper method.
defineIteratorMethods(Gp);
Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the
// @@iterator function is called on it. Some browsers' implementations of the
// iterator prototype chain incorrectly implement this, causing the Generator
// object to not be returned from this call. This ensures that doesn't happen.
// See https://github.com/facebook/regenerator/issues/274 for more details.
Gp[iteratorSymbol] = function () {
return this;
};
Gp.toString = function () {
return "[object Generator]";
};
function pushTryEntry(locs) {
var entry = {
tryLoc: locs[0]
};
if (1 in locs) {
entry.catchLoc = locs[1];
}
if (2 in locs) {
entry.finallyLoc = locs[2];
entry.afterLoc = locs[3];
}
this.tryEntries.push(entry);
}
function resetTryEntry(entry) {
var record = entry.completion || {};
record.type = "normal";
delete record.arg;
entry.completion = record;
}
function Context(tryLocsList) {
// The root entry object (effectively a try statement without a catch
// or a finally block) gives us a place to store values thrown from
// locations where there is no enclosing try statement.
this.tryEntries = [{
tryLoc: "root"
}];
tryLocsList.forEach(pushTryEntry, this);
this.reset(true);
}
exports.keys = function (object) {
var keys = [];
for (var key in object) {
keys.push(key);
}
keys.reverse(); // Rather than returning an object with a next method, we keep
// things simple and return the next function itself.
return function next() {
while (keys.length) {
var key = keys.pop();
if (key in object) {
next.value = key;
next.done = false;
return next;
}
} // To avoid creating an additional object, we just hang the .value
// and .done properties off the next function object itself. This
// also ensures that the minifier will not anonymize the function.
next.done = true;
return next;
};
};
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) {
return iteratorMethod.call(iterable);
}
if (typeof iterable.next === "function") {
return iterable;
}
if (!isNaN(iterable.length)) {
var i = -1,
next = function next() {
while (++i < iterable.length) {
if (hasOwn.call(iterable, i)) {
next.value = iterable[i];
next.done = false;
return next;
}
}
next.value = undefined$1;
next.done = true;
return next;
};
return next.next = next;
}
} // Return an iterator with no values.
return {
next: doneResult
};
}
exports.values = values;
function doneResult() {
return {
value: undefined$1,
done: true
};
}
Context.prototype = {
constructor: Context,
reset: function reset(skipTempReset) {
this.prev = 0;
this.next = 0; // Resetting context._sent for legacy support of Babel's
// function.sent implementation.
this.sent = this._sent = undefined$1;
this.done = false;
this.delegate = null;
this.method = "next";
this.arg = undefined$1;
this.tryEntries.forEach(resetTryEntry);
if (!skipTempReset) {
for (var name in this) {
// Not sure about the optimal order of these conditions:
if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
this[name] = undefined$1;
}
}
}
},
stop: function stop() {
this.done = true;
var rootEntry = this.tryEntries[0];
var rootRecord = rootEntry.completion;
if (rootRecord.type === "throw") {
throw rootRecord.arg;
}
return this.rval;
},
dispatchException: function dispatchException(exception) {
if (this.done) {
throw exception;
}
var context = this;
function handle(loc, caught) {
record.type = "throw";
record.arg = exception;
context.next = loc;
if (caught) {
// If the dispatched exception was caught by a catch block,
// then let that catch block handle the exception normally.
context.method = "next";
context.arg = undefined$1;
}
return !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
var record = entry.completion;
if (entry.tryLoc === "root") {
// Exception thrown outside of any try block that could handle
// it, so set the completion value of the entire function to
// throw the exception.
return handle("end");
}
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc");
var hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
} else if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else if (hasCatch) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
}
} else if (hasFinally) {
if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else {
throw new Error("try statement without catch or finally");
}
}
}
},
abrupt: function abrupt(type, arg) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
var finallyEntry = entry;
break;
}
}
if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
// Ignore the finally entry if control is not jumping to a
// location outside the try/catch block.
finallyEntry = null;
}
var record = finallyEntry ? finallyEntry.completion : {};
record.type = type;
record.arg = arg;
if (finallyEntry) {
this.method = "next";
this.next = finallyEntry.finallyLoc;
return ContinueSentinel;
}
return this.complete(record);
},
complete: function complete(record, afterLoc) {
if (record.type === "throw") {
throw record.arg;
}
if (record.type === "break" || record.type === "continue") {
this.next = record.arg;
} else if (record.type === "return") {
this.rval = this.arg = record.arg;
this.method = "return";
this.next = "end";
} else if (record.type === "normal" && afterLoc) {
this.next = afterLoc;
}
return ContinueSentinel;
},
finish: function finish(finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) {
this.complete(entry.completion, entry.afterLoc);
resetTryEntry(entry);
return ContinueSentinel;
}
}
},
"catch": function _catch(tryLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc === tryLoc) {
var record = entry.completion;
if (record.type === "throw") {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
} // The context.catch method must only be called with a location
// argument that corresponds to a known catch block.
throw new Error("illegal catch attempt");
},
delegateYield: function delegateYield(iterable, resultName, nextLoc) {
this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
};
if (this.method === "next") {
// Deliberately forget the last sent value so that we don't
// accidentally pass it on to the delegate.
this.arg = undefined$1;
}
return ContinueSentinel;
}
}; // Regardless of whether this script is executing as a CommonJS module
// or not, return the runtime object so that we can declare the variable
// regeneratorRuntime in the outer scope, which allows this module to be
// injected easily by `bin/regenerator --include-runtime script.js`.
return exports;
}( // If this script is executing as a CommonJS module, use module.exports
// as the regeneratorRuntime namespace. Otherwise create a new empty
// object. Either way, the resulting object will be used to initialize
// the regeneratorRuntime variable at the top of this file.
module.exports );
try {
regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
// This module should not be running in strict mode, so the above
// assignment should always work unless something is misconfigured. Just
// in case runtime.js accidentally runs in strict mode, we can escape
// strict mode using a global Function call. This could conceivably fail
// if a Content Security Policy forbids using Function, but in that case
// the proper solution is to fix the accidental strict mode problem. If
// you've misconfigured your bundler to force strict mode and applied a
// CSP to forbid Function, and you're not willing to fix either of those
// problems, please detail your unique predicament in a GitHub issue.
Function("r", "regeneratorRuntime = r")(runtime);
}
});
var WAIT_AFTER_MINE_CALL = 250;
function mineBlocks(_x, _x2) {
return _mineBlocks.apply(this, arguments);
}
function _mineBlocks() {
_mineBlocks = _asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(service, count) {
var web3Service, serviceName, initialNumber, i, newNumber, expectedNumber;
return runtime_1.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
serviceName = service.manager().name();
if (serviceName === 'web3') {
web3Service = service;
} else {
if (serviceName !== 'token') service = service.get('token');
web3Service = service.get('web3');
}
if (!count) count = web3Service.confirmedBlockCount() + 2;
assert(WAIT_AFTER_MINE_CALL > web3Service._pollingInterval * 2, 'mineBlocks may not work well; pollingInterval is too long');
initialNumber = web3Service.blockNumber();
i = 0;
case 6:
if (!(i < count)) {
_context.next = 14;
break;
}
_context.next = 9;
return callGanache('evm_mine');
case 9:
_context.next = 11;
return new Promise(function (resolve) {
return setTimeout(resolve, WAIT_AFTER_MINE_CALL);
});
case 11:
i++;
_context.next = 6;
break;
case 14:
newNumber = web3Service.blockNumber();
expectedNumber = initialNumber + count;
assert(newNumber >= expectedNumber, "blockNumber should be >= " + expectedNumber + ", is " + newNumber);
case 17:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _mineBlocks.apply(this, arguments);
}
var addresses = [
"0x16fb96a5fa0427af0c8f7cf1eb4870231c8154b6",
"0x81431b69b1e0e334d4161a13c2955e0f3599381e",
"0xda1495ebd7573d8e7f860862baa3abecebfa02e0",
"0xb76a5a26ba0041eca3edc28a992e4eb65a3b3d05",
"0x5ecf66ecb148594c68c3d24e0b3540039d3e208e",
"0x010cc8f37ab1f7fde9b61129f99359b6bb480c52",
"0xa1a828e71fc501126ab0a0a92334a0d1bc859c18",
"0x38eeb0da52f8d267bcf6143b277ad929d2caba1f",
"0x75be2d1186d2806b61f1ac984475979eeed18702",
"0xececc8efe05fcf7e7490db77a334f2880480b9e9",
"0xa71f462b2a7fbba9daf31050c4a82b2084442038",
"0x654e7b3327634c78bfb21c6010afa29a22d7a605",
"0xf0117583019f74e7feef294091af7f137d529f10",
"0x85efdf75b3fa42457e670b43e77dfa58a77799c7",
"0xe09a8f2a8c440b8306b6683a2ff3956d90ac7f69",
"0x4f75a02c8531e92a46064b8c125307856968f772",
"0xe19e2ecc156d8e74768199fb1f3929f3785763f4",
"0x6770135d477c0e7c1691523c0cc0534348f4f148",
"0x500f1154c53a226af15a736ec2c02a7eaab834c1",
"0x37ef41058babb7442cb9fb22d1418a3ff41eea0d",
"0x42c48d42cf02faf3b432eea6021ef3e4be71ef5e",
"0x7abcd26e4a0e6233c489a80f59f7e58a284b3ebb",
"0x5f003c70a62097dda9abfa62c9f6ad9da360236c",
"0x6f33cfa7c354ec62986091127a933d547b90cb57",
"0xc7fc133837cc560dcb558c18d3dc383b877f082c",
"0x12ac71be97b8c7082a9a16e2ed27ba08c8320888",
"0x66822230a8568a2fa625f50146832fe94ed95cbb",
"0x3c63613ee99cc8d2e109860a03531064e57307e6",
"0x35911075785dec8a103c9fb0101193e2d18f28b5",
"0x1f904e31768bb771e381c52c044bde3d8419adb2",
"0x9cc496fa6339648a228ed1f51c8ede6c7909850f",
"0xd7d133108798e9b43c9d2a55892500d02a9ac228",
"0x2ca0e7853199c58cfaaa2318b19b7d68f3b3906e",
"0x116464d38bdf751a45fcfaf5854585b562878f54",
"0x34b9fb8ec27679e8b7bc6e7faab5356d7fe9ea05",
"0xaa8f2fdc89811b0152e1d5026ef6248585e02404",
"0x00533ccf07090a43e4ce11e00a2314cabd2d5e31",
"0x380b9872b457a934a6b630baa5e5dd017a529d09",
"0x3c55ec2d3e2373ce79a5c706bd9f9933f5ac3f7e",
"0x85bf277782b941ae5f198753500f5732b923b666",
"0x26ec003c72eba27749083d588cdf7eba665c0a1d",
"0x54f4e468fb0297f55d8dfe57336d186009a1455a",
"0x8ea2a073650872fc18f14f4f9025f44a3e8be6e2",
"0x18c22d3937d774e0af0214b28c34856ad0a23272",
"0xaf99f4e249522f7bb1d55f78ff9a2a606328d6ce",
"0x832e01c87b2aa54cf9ead99b9c771ef06e5d294a",
"0x3a28c1639815032a553b9b0f1077014477941a19",
"0x3b8675688b23eaddcd25545695cdc9016db4d3df",
"0x26907293e31095674006c7d498bc5a3aa21ad9be",
"0xf8780ff7779a0c36fe011c3a9bb71d6eaa09524e",
"0xdc6030c13150a657ca091b18bbab33815a128362",
"0x1cadd547830669d034715c9080dd8718d82f5efa",
"0x4e48bc76f9ca4ccf2594b1e506cba99535adbbd9",
"0x4b66f1b2f7a5e0542639795a16163cb304eee415",
"0x94ddd0cd953e53a3651da408d233165a99d07cb8",
"0x67a402a45f341c7e69c970cf64bc1d1149ee6e38",
"0xde773566f2446b73ea040364a2e30dd6b4227b4a",
"0x152f09cb8aa535ba5bcf315e07a855ce8ceeccf4",
"0x5b3286a33c346cbe0502bf5d7272a2d3258ce080",
"0x58cae062ab7a054e1946537b725332530ce6ed97",
"0x8ee5348c27131bbf85ad67c147fcd5fe03cef0f0",
"0x04540b673b09592d8695b1dbee5e4ddf69787045",
"0x5e03d0803fc93ff6ace383ae386c433e5299429d",
"0x081e5410080d9703e25eba5e9d13ff195bfd4819",
"0xf8764a2305b83d160a49caf977a9131115e81b81",
"0x2a4a1613ec042aaeb66662fc9efa9b0695ade610",
"0x92a0fdedb577ab39a4fb570f268664aaa089d38c",
"0xce29116d3fe19b159471cf80a18c094b619a8fbf",
"0x5cdb8e5bf7093c7a60f9906f3e5847c209fe7a24",
"0x481e06841d996aa38f374cbe1eba4fd9822fe75d",
"0xaf919be4746d873339e914a2e3fe2f0b99111dde",
"0xec1ef50a1f537b6f1dce383fa088401c4936953c",
"0xc4c7d927aed9226f621ae8aa4632b9c66bb95428",
"0x05fe1efeb288ff6e0f6b9655913401352903b2b7",
"0x51b443b9a7677b038483ab063edac89521418005",
"0xfc052a91f08c2d9a45d61692a36abbd63ad680a0",
"0x22bfe73f44754317734c7378fcdbf0e67ef92be3",
"0xc7a2091e18f61d32d9e79b5d2ebd4f4173dba584",
"0xebcb030b35b4c8624dadb762b75909e12a9279e3",
"0xd084f2266cfeea34919570ad6642ea6e262c9025",
"0xc873a50ae504ec9bb96bcfbeb961971348dcdd75",
"0x654b16d89c11d9887fe330b0afc00e7df8a4d8a7",
"0xae672ffb7983b9c66aeb87ef62373d510f5a19c8",
"0x378079e3ccf36eb30bd3bd5d17ebee5cfbc6c23e",
"0xa4d5982184368aed8b8988a028ae3382fb003c77",
"0x5f5854c7ec60345e7a82a9632362250b03654199",
"0xf7b144964fe229b8e19a8bd51ca1af0457c3db6c",
"0x71d3fc5b80e46f39eaea6b02db6be9c7c1ad49fd",
"0xc4e125912342c21c11722e2f1051b9bfcf9ea223",
"0xa293f1155e903fc786fffcebf6442210c75036ee",
"0x3b91e3062f312c5814daf4ed0410d3a7261e1a76",
"0x1d728d88f22f3013a7f53356f0bc38cbc7a42a2b",
"0x8f82940164399e7ca9946f2b730c33c882e88df5",
"0x598409f8fe21a89d829bf501493ac929c1d2e482",
"0xfc1c062c91bbe355249fdc508986355ee13ec5ba",
"0x5f5fde3dc80ddd6ef040f5e29967b9f83fbecff2",
"0x414a9e9ccfabb3e04b5521c5ebcf8f8fa3301ae8",
"0x75ac1188e69c815844dd433c2b3ccad1f5a109ff",
"0x280ceb01319c1f961b999f8596605e650939e449",
"0xa4650e2aff9b799233f707e6791e202bf96859fd",
"0x5fe804b41dc5e5a6cf43da7d0cef91bebb68921a",
"0xe1ebba9cef330ecb832ac97ce646956c9c40efe5",
"0x15bb13b952e01abcd34547417feea34135c18717",
"0xd6e946f4f6d9404b2524ef7d4c95bdfd729d8561",
"0x836435cff6edb7f0cbd81a6239d877423251559c",
"0xbbed0eb32909ff80a59a1448a912bf285c49191d",
"0x2cc31171b34534edaa6269bf5e872f0f7905ad86",
"0x32f9bd589f8384de89e3b1830d54bea37e071601",
"0x8f10a2b4e79c1e8cba1f46a2c1b1d3aa7a0357ef",
"0xe0ee70a2826e549dfc346f4e8ce8f0517f78e240",
"0x87afec669f5f0429e24a4f1714fa4db50b3df057",
"0x06250d61025e2f894299de87acc538ee5a585eb9",
"0xab107034c18194576c44f3762abc06d8e623781a",
"0xf844f09763c2183a22d4d3b5fce3a7ed5fab11f1",
"0x50885f2685071cb2182b06c0649765a1e0c198c4",
"0x50ea08af4aab125fcf14704e5222e1964e1390ca",
"0x4d92b29db7fbc182d8b33f6760b036d5293bac3f",
"0x9e3b98254a092533599aa5577da510813ea13b86",
"0xd8a93175093e97bc197f938ca5ef2e1c31f80062",
"0xf79229f4e8c6e020e013113f12ea43537fa903dc",
"0x05d495400d3227ed753b9651d4bb637ea8d94b6b",
"0x3633124a9b5f6e121f3f91a429308d334337784b",
"0x6cd447f0e1d7e114126606af858ffcde8cfdc69c",
"0x8f591ceb8cdea5924268cc0feef8d26a63f16678",
"0x915383f8c6c9541173da501b9491413038cfc81d",
"0xe04c7b522d3b98aa42083fe65c25b63fff05b02f",
"0x873af210298897c08c36b558f39e8fe4d4cc5421",
"0x73f676b17ef80e86213f3f6ab36b66c1472a05ff",
"0x2a8f2cdc7a088272b63b4db5081446efa14aea25",
"0x30101ccc0d915f3b37e1f1106d9a8d1dc96894dc",
"0x0cfd66c6596df9ffb3d1aea6b836ea7ad196423b",
"0x900b3003272fca57622e5552e555bf58cd37b8b6",
"0x6f70c5e1358d6c14266db52ee5971b37b8018c68",
"0x25066926267934e322f858b5f4a58cddb049c2ae",
"0xfd377645e2dd6df370bd9082b652db8456a4bf9c",
"0xf80eb6d919b38f83f585e0ec06f72e837a06f5bf",
"0x7d7c7090a05b8c4fe75c07cae0ac10afa06538cd",
"0xcc717c490c7d0bde9981a85dc8cb95358719e9bb",
"0x6b10e671915cea0c95c6d08888f6661f76394550",
"0x950b2fa92ef0fc02383e7173146b864e0107ca0d",
"0x1009ed26f7ad41092c4eca22563ab2a4d3b08701",
"0x9c1469d6a99ccaef556583263aebb3a104a8f858",
"0x2f8792249a546279e2c11126a1a0ea16b6eab713",
"0x3ed91288dc47ae712fcdc040431be58fbe920444",
"0xd6d766565f8a8b6330bab6eb814ed5face9cdd63",
"0x0994ad232c1c70bc8ddc6ce65b2f19764efcc442",
"0x98b5d865b256fa441ae4551bc79289cded7b90d9",
"0xcda6be6086ed9f0b2265ce3e6b0acf5bd016ecb6",
"0xa5e4ecef708c815d0f3377ac4ab86a13ada1c58a",
"0xf9f0e0ffd045aacee873856fea6db44ae291d6bf",
"0x18282d1e358db103d61fa5d8ad6a828da67c694a",
"0xed565f5c599154f8f8c1972a275b5223436c61ab",
"0xcf1d56e84c74726edd511d8f1600bbf2c94988dc",
"0xc14ea7a96b054be2c89ddd880066e9b7aaf704b7",
"0xa0b85e616f0e7997982d57b2d5984a994f657a8d",
"0xb58152e9e1a1e573ad5943408a4276aa1ee31aeb",
"0x968452a925df4c21f7f585796323a003bdc8c076",
"0x99da655c32bfc47308c3512b492f059c63cae2c0",
"0xa054bfc19d8ba3b8ab40b8b7a22c792942f7161c",
"0xa4984a3d98b82e57478ca467ef47224023155564",
"0xc76f024a24007467c852547a90642418c23c7019",
"0x8d099c94222ca8938f5bdedabc65de815ca629a7",
"0xc7385b5aa684b62f76561bd2be94074c5fc4337c",
"0x9f967b04bf75f13b3309660762920760733a89db",
"0x27da41a1e1e2e3de895e60bc86b1eb8de4002bff",
"0x354f435cbcd80caa09233e1ebf3b54caaf3a75cc",
"0xcb4462bda65253c479c57c5a332b3b0874a3794f",
"0x23d9509db1624f3b3d997008946e7665be06360f",
"0x1b695de3370009d0aad524ae698ab55b3d3eaaaf",
"0x1377675692f65527c3f373592e0776c69cba7ee0",
"0x3abb3f568596ab078c57e51661c00253384232d3",
"0xc307f5d340c8e3d7cfcac26afada78f2044af04b",
"0x70e6660de83f90906069374fc8cb7b3dc230893a",
"0xc821c203be7c2e545d347cf0a3b8b858723dfa5a",
"0x51afae49a118d24d84d9108ec60f8209fa3d0e55",
"0x84da27ef03ef030de5394f5c8723f0cd2d5c37b5",
"0x3061c1d1360d331bf6a6c1d8be12a90341ab4f2e",
"0x4d18f0178cf3d4c7ec7743183853da6d7c7f0b01",
"0x1c80e687a84cfdfd7cfba53fd55f526d8469f554",
"0x139ace10c69733950b334d3faf5c77065c301a08",
"0xbbb9ba108986671c5d22553f0f56f7491e618d9f",
"0x2f90419b363accc5d8d90eeac237fa44405b3879",
"0x3fa3cb820b5e9da9453131d03f3bd208a19f0783",
"0xe7b80a8c86be4ff2bdd34c2cd855bbcb0a4889ce",
"0x58a9dd29be91573e8de373fff4bfd088ef803d84",
"0xf63b66c97f0103129ea062e304d4af4c9e571138",
"0x133da08aedbdd15e0ac8e62005719f800f7f8a4a",
"0x9a6dcdb4f4d2a4f7ca8b9268ce0ba1fe3d5e5d2f",
"0xab35a65d1ac689dab33600a63b869d1c7bbc3904",
"0xccad5a1e8a06dddf8ae7b04898d96bddf054089f",
"0x5add26b8e5def44bb17ce18403b8312a4048a048",
"0x9bf0079feffede56a327c6ab9e77902d136882f6",
"0x4bc379d6dc4047f085d8b9f64de287bac8bdda3b",
"0x9252e9ee75de935c847180f825fd7da392ada328",
"0xdc511a88899fe835a3cbe9e5fb00f85a4664eba0",
"0x01e3c413a73039f0de6a77ece1c7a549550bfa0e",
"0x5ab863d639e94e5d4dd281ca479bc80bececc747",
"0xaeaa731ff560ee565ed8f8822910d5683a596998",
"0x33f89579311b31157516702a05a1785c4319f2ba",
"0x78017bc7182a71441ca4d07de54cce3e4f9a1bfc",
"0x597a0c1ba6ad1aaa53e7d5d9840153886af61da8",
"0x83fad489408621f699e18388c7970e98571aad5d",
"0x4eae6406f4c2ff3928e28f29e3effe294de25fe0",
"0xfaab90ebe65039238e65c1398c81a0883fea13c5",
"0x8b54ef89771b4f29be7bd0259236e9192caf953a",
"0x085044b13ef4b85db864f1d685a05fcc114b4953",
"0xad101553e984f6686680a13cdd4a822cb134a522",
"0x47952e87daf90b3bac7be5967d87c81542e419ca",
"0xe44f4b67b0be29104bc4ab1ed1298fd3fbe2cc1f",
"0xe1e52596d3417292ec5b070ebf40c9ba61e61c94",
"0xf7379cb506692f1e7330fbc8bdaf40220bcf1ca7",
"0xffc77e9222fc6d0c46fc7d0b29becfa5a8b281a6",
"0x3a0fced5235e5c13c65ab6ac1e0513f6b2477452",
"0xd16ca8b10953d631d42ea8b9fba34815eec330c5",
"0x6acdcb29ebda7cbf8e5124d6454150f0cd5d89ee",
"0x5016dfc6104018d5d7a777fa494143b1c344d1ac",
"0xa2228e7c9cf7ca23a0e597892900dab346321794",
"0x7d5cc3ef03a4b4cb9ee50edca41d29f08a0daebb",
"0x49c462356db609abf304086a1e41b9f041ff6c35",
"0xe6224cd063d5fb2509daf529c1ac134e6748c69a",
"0xea9da5bbb4f2e7561ba09133716e8b8f443a2788",
"0x099e67dabbd4654da3be829e255dd9f1f9b130d2",
"0x05a098174101231d6dc808c548226c8f75edd3d5",
"0x19629135ed662f70d809dfcc80be38ac00220a3c",
"0xb03af2308bd1e2755e0b4a5117655ccf2de32120",
"0xad91535973b4bf9958297b3796c6ae6477414bc6",
"0x1a58cf9599ce0ecd321088c573fc1cf29f275c4a",
"0x91e2209123501266b944ec97ccfb82b1aee23e94",
"0x32614fe2c1c94d38f11bb6aa7e5dc4cc9144b816",
"0xea40a0914d3c36f91a2b49e3f4b514e1d7544b44",
"0xcade353d73a9278fe0c5fc1b944c32c958170be1",
"0xb0120c1dc80d68376f6d31e8394ed3a7bfa015b0",
"0xca1f93edc67fc23dc4cb2372cd308a302223195b",
"0x28c71deee8b0d41c2a4739926263c01e71d3f963",
"0xf8305d58cd14e1c5ec2a713debbd538d3dba1f78",
"0x0f92a395d4d79c7e813e143fe794fe30b4eb6468",
"0x21d364ad99f53b6964938ac058d680b52a7cb070",
"0x792ff35e0804c2ba1c0129683b215597ebd9017b",
"0xf4cb0a2f505517a542cb62740720615329c10e21",
"0x82d559d8fbd10a7f453236f5cc7c3a0202bdeb53",
"0xec469be9ecb2afadb20f1e61a35085f65c6c0eca",
"0xa4c521fd08c59f8f65a64c2782bf06d5e38418d6",
"0x04f502a6b74c5cb926e89835dc0aef7ec808da74",
"0x6416e3781450c7d9fa74ae31bb9649701d2a74a8",
"0x7ae8f51a190a6e5971749649ca4fa5d151aa85a6",
"0x6e47b10d0b790b23efd1df95c21c577c735db818",
"0x2dbf0280f8df17261cbdedf0c370c9fac8b086a4",
"0xddedae401fe94df24de15f73546ace28a8ae3782",
"0x52a1c33fae3e10d975c5feb225f7aee9fd079d82",
"0x47fa043cb1bd479310549da91d6689f4e897d69c",
"0x33ea93b5dde98d0934a1fc7ab7906eab52933eab",
"0xcb310b595ecc22f973e604eaae618091e38fd14c",
"0xf42f8ede2a5380afec64f63fd9c815ea5b3d9f20",
"0x3cf42c88a983ffca558524044a719dcabb85bcd0",
"0xaa0d58aecccacf95c0379f18622e843b0585b907",
"0xfff5204078b676b434ccb5910aa2a1d14073ea6d",
"0x93ab2f73ddd46f3af346f6f96b7140b6f4495a34",
"0x72ff7268c2b1a59edac82c1d424320d33fa89b3b",
"0x328d2d17af0bb1cc9f3ba41ad526c8ddc708b54a",
"0x70b08cc30e5e6cefa4954ff1aa870ec0f6a003a7",
"0x1a2b14182c09bf54c0683bef04c3321309a94c18",
"0x492366b29c9337909a44ca777086d53d97c6037b",
"0xb87bf49c327240406dd1e0b385f161ac71cb5e50",
"0x7fa5ed18e7c87d9b5adf5a9f049dfefb36caee59",
"0x5b82c9189133a09e2c92cecac1a40f3b1c1713f8",
"0x4f6ed589c782ef2eb58d6db4ed51fff8939ef4d8",
"0xafd6c363f929baaab2cd7fd192491022b6ee6885",
"0xa90694c21fe8a7a16700d10a5b66dd3055e3d14f",
"0x3fbe5b872409967fd0263b6143d77eb03bdc7ec2",
"0xcf06da814a822bf84c358f75694c86731bfabede",
"0xdb038ffe8d8d1d0eeba6179ed548680d37620af6",
"0x7c07cc32762ef1000fe756ed7f8030d7fe208ae7",
"0x7c03a1feb1e93c8e2608bc3fec2c1ab3ca953a32",
"0x8b40354a5c87f8680c54982334a48568b5fe02f0",
"0x4cfd04bc2a54fc58ecbc64aacdffd74dec633d6e",
"0xb14cb8aca129d705393f9186ac8618b239c29b25",
"0xd4379a19a8dd5ebaabdf4ebf5d027f5326dc7007",
"0xd7de4c97ae7f68dcd4ca1cdc333b437e378fcacf",
"0x0a6bf7a63688700f48d9f203802742402828154c",
"0xe4213591d487bd33ef60a716cb80d1d52c55253d",
"0x3b8e83d3ab5ad8e39d285ffd65c6328608cc17c7",
"0xa1e6a89febe9636d546da720acd062c5393346e9",
"0xdd547f5991098462d88894c04804b8eff4aac296",
"0x23f0be4cfd3254ee46b43e541d355531e04aac9c",
"0x8fa1fd27d8a49634955e32941a2afdbad2bec584",
"0x95ae926cb6986eb7269f63107d81a281cabf1aa4",
"0x37afe7239acc6d8ba1171f18d830f60ca86042fb",
"0x592ea3718524c34738a5d36af1bf6f90dc659684",
"0x6e3e04cae22caca81e124a90fc6f37fd85144095",
"0x50deb7dc03eec709ad71ca54bf97cdc36c1b4d1c",
"0x31e7379b6c548fa81ad66deeb36f7a2f87951f95",
"0xadbaf67048acd59b3c9ab859fe6b3a450b5a0016",
"0x9bc5cf59b5d10b48e25c811f8766e8216d5ee96e",
"0x664b0b820573c191bed94cceca04d5a27166fe24",
"0x84cee05d766126b3a4ff24c0e1c77a1c2962d618",
"0x97b6d6b597767f9eee54fd83fcc17bac283d7dde",
"0xd8e64a5a06980d621f7e452467839cdcedc7b61b",
"0xc09e0b10ec89760ab599cffa25bfba7c16533f13",
"0xf307ee66b8703f4d630bba7270aa9ea9d630e119",
"0xa15d393177c743de7e243fab1603b22a23b7e9ab",
"0x0ed909145ddc6c8b4fbb2201f7668344d0cd6e1c",
"0x7557fab6d6ae2a644ef424919b8ba694d186fd61",
"0x9bc9e8b84596a1a949b100a87bf4d4dc59633e84",
"0x2c7878e024c9890239f0717f91407851f09e542c",
"0x63f7db9f68ac6f589b635c4e0cb1cacbf0bef7c8",
"0x39e47355b41ca515452bc5aadec6e89a0cc71445",
"0xd215916953c7047f226206585f1ddd7043d57aac",
"0x5aa0c390d09af534418f2a57c837e21d4cfed6ec",
"0x1d4664d17544bb4e9710ba4e679035da7dbb6042",
"0xdac2f988236790f0bf38525bcca756cfba4ad559",
"0x824dfb65f12e2c15179b26ca21b04bff5cafce2f",
"0xc686c3acd7dd26afad29e35f23757caab95da331",
"0x882630d2be8d3bc86f2c5cbcc863e7d327fe5ec1",
"0x9ad72752b73042965a90137f376b8c704bd927f3",
"0x193eb0ea579ca90de6bcad3d2025c904425ce8dd",
"0x19e63a7e6a84a5994c513d97559757bea9134698",
"0xdda6b12af814e1d11330ffe632e5114eec21306c",
"0x3f7aa0fba810c891ea3d64f513e0ea2bc8d96628",
"0x6de62b09a3bdf548f9ad47729a68a2c179429347",
"0x0ccf4ac6ec3c1ee612978c1c10ca9482fe2eb010",
"0x41e891f084c6985561ecbe1744be189656299c03",
"0xeed97ee10ef26160e9693d538397740a338a63f0",
"0xe51759dd0c7341fea157253a3e23433d8ffd13f1",
"0x26ddb99aa98571ea18b377dfab6ddb95c99e45ad",
"0x0a30852cc9dcd01071bc9c3210245a76b6deda5e",
"0x6f3ba3743da773c7540594e41bd0488bfbb57bc7",
"0xc47097be84d273a41e01e3f66c0badad120d545c",
"0xd73c2081db1fe25c7a3e1f3539eabff20d25bb63",
"0x84824f5348fd6be56681e9ae66c832a06a1b1b1b",
"0x383082bc8b42648e7e918a0a12351c9f453b4894",
"0x1a316f0ceb8261529663ec9850c63391fb61ab60",
"0x3263b198f2fd41c0cca1928fc85b8bc6d4f8c89d",
"0x11ceb73bab9fba3bbbb1a771aaa94333c278cbd7",
"0xa48981fb9ba86b8141ea60b785a57e251826e0b4",
"0x52ea429bb57d48806616b86efafdf31aa6653c25",
"0x42963b3b56b7f90086a3965cfab1f208d597369c",
"0x4c1fa8c1096157ed1869d218646c7eff28a78e10",
"0x868cb9fc2b64f27a32e05c9e0c142c03a39e4bf3",
"0xf5e40e1332a172d735493fde0097651cca22a274",
"0xd38ef7d3b211b2b392ecb3a780fbb26c48fb3f5b",
"0xd7041272ae962bed4c26260049c4a020b1b25cb0",
"0xefdcde68e6232ccfaefd06a957102dedc3cd47ba",
"0xf48f2834a9c65a8fbe1b7eddde41c5ee7c4ca502",
"0x24ec220827c9abcd53ea9618c9d085fef7874c07",
"0x8a9f8be6ea9decccccbb24cd57d68d9246760e1a",
"0x3640c65da31b6e9e1b697259b967cf2bf75fed52",
"0x325d109a130020dbda7bfaefdf26318e3adee7a5",
"0xef9a97fbac3eb78170b4a2c19061aa044dded948",
"0xc7ecd2d6ff53114084c1416c5c2b52224b1bf256",
"0xa0eeb03a685d143e79c0712b75aacd83b6d020f6",
"0x75f60046ba8e0912a769f1d6951e22bd51b1a0f0",
"0x90299f2919532c012d43b61c16b4e8b137fe1042",
"0x7592031f33e872fad156e6f28c8fb742abef8eb4",
"0xcf1b0ba5e4846e859811ed4d4d1cf99b6b114aa6",
"0x5091697d5bcfafb8e6407135dde9de1a4002f695",
"0x33528c68622b6f450b9ff35d838d499f9be042c8",
"0x810fb9b44edb5c23f9a3edc4b8fab01c599d5e16",
"0x3e98a5b1ba51dbc7bb7b01ab1df2430b655ff1df",
"0x7d1d4f9e80ddfcbb75fcea96ec3e420a5cc427d6",
"0x6819501412ca7f89bc41091187287cc3da77242a",
"0x18a6cb34df65c2f0d0e5e3b600e6a377c6432341",
"0x277a058f9c9c94f8fcf686d157bb47ea2e53d22e",
"0xc57fe98086a4f53b1af2ae9dc1bfa037b1e163ec",
"0xbb218c4ee1f20858abe61c9eeaf644e179dc742b",
"0xee7e92ff8869bf8d24382e02a4c94d1dd6150761",
"0x1fa31e61c4a1b54d376db25a1e5fcca737ce9f1f",
"0x12d9bfbb2b49bbee19981391b53291adf8fbc382",
"0x35e0608707b3d4d585612f0dee77a097c293d39c",
"0x712e2bbf9ecdd33b8cdf8640f8430a956a4f2ad0",
"0x0d1ec44076675818f707bb1a98e264b866ba79f8",
"0x153fe67ffb3bb23a576f37b52337784484498ff6",
"0xb89459cd6bddc572e04fe11120650bb65582a0da",
"0x8f772f8911611d729a271ed3e78df1fae786a384",
"0x7bc307f3ce96f77ff700984f5c374b0d7f4616f3",
"0xa22e5d1449e88d651b640d7fcb0022ae70597dde",
"0xc0c316c8fc5ea90bfbfbe3a9fe0d999c6676a6b1",
"0x39dacc79627e62c1600428edafb68a157d056477",
"0x49cf9b735a42647fa0102535503f1610f9b65808",
"0x6d456b874a424eb2749a150d1050bbb5f4ab19aa",
"0xc375191f446522b260f0e527818a40460452dcff",
"0x813024eb1e2b816a3fa992b8b156b3acadfc068d",
"0x8bf0789cda2065bbb5f2ba43b837df2fa5c10ad7",
"0x11f96791f7c7f8dadb150edece50917cb69d0926",
"0x70284d3d1b45083e92115f01a2d3add51f83214a",
"0xffdacbc61ed5baf7b77875ebd8826597ba795d1f",
"0x15054e2d52f9b409263a21a8005a283c14be8fab",
"0x27c0973dca0dd9245f3e1d0d2c3a5fad9fbf9c79",
"0xea35debcbfbaf54120aa330fca69e68b62087680",
"0xeb0d0fc4e3b86066b9039078967709dfe27bc3aa",
"0xfd4cfaf22af3c83442a84cd80513f2438bc119ad",
"0x06e2ced6db19de67dccf4c670fd947c5f69a2ccc",
"0xcc11543c4610a13a48c1a2169b900bc3832b059e",
"0xd994ce0b4d444cbbbc7596933396b8f0903d7d20",
"0x6ea2bd2fbfd2262fb392022e4c783b7b998a28c2",
"0x757611433983d1f88aac0f4a6d507de74078c694",
"0xaa744e725e81f4c402c7dd2c186b2699486310d5",
"0xf0c3c2112a94ae5d944b88eed67992c6297997c5",
"0x3cac2a8e343ff7707718edfc39aaf749eb5b70c2",
"0xae7dc1e2804ce4c6d3465086eb4dfef926ddff49",
"0xce2a04a5e232a56b5bc4ff9474edce247d8ce7a8",
"0x1dcdac665f5cb43aed3a137939a83e930258dac4",
"0xbd65d59aa5b0f284ad6f93008e0e1b910827d688",
"0x6649dc4b2fca2b10e693de1ab4f7d1b19244bf8e",
"0xdcd8bba61c6b1251d23102a6ea05cb10eb56db6f",
"0xc2fbe8d5201cf0dc316304c6b196c0c6d65c816e",
"0xe943090d9740f274398409bf786a09c71f2e20ef",
"0x6f5008e23107bb96191d0895a839edc88372f3a1",
"0x57879b690959fe10c1fa1457d5df88a781a18a11",
"0x547941704be9a0d7e6e358f202a882685a6fa5da",
"0xa3b83931540bc036a3f8e19c7da8e4fd7f2d7c03",
"0xa763d34f2a2e146c94e13fd6a07d0dbadba53a8c",
"0x9bd698a1604de44cfed7977ccd9db415c60e2146",
"0xea9046618eac83ebecb8faacb4d91cb4e5f2279a",
"0x97397e987ec8be1f9f87379d7e94ac3c0cbcade4",
"0x99be8f046483e9fd1ecbe464787e7dc2a4cb7e4a",
"0x23bd494e25104b76dfcc725b438b9bce879a5522",
"0x29765916fef3ba15aaf19b9f84e1cd82b0464c96",
"0xbf3aa5dd6def9194c70d0afd045f2d4ab6a5b73d",
"0xc5331b779796ce7ebc1d0aa8375ad381df8c6f2f",
"0xccedceac4af7c8e115128872d53d8d7267874a00",
"0x1270fcf9e5bec866fb636409e3f8630ba5792b84",
"0x2b6891bb50d7c553c69a014e73d5e096ae32ae00",
"0x4c332ae64ed3830d09184f6053f29721cbe8b94c",
"0x5dc899b6e661c43c2bd3e13bcbb4dbd08d1944ba",
"0x8e6b0b61dd6a7635b28a6e93641a1eefcb058bf2",
"0xb15d723932804d41516347e7285dd2a86a8f1f83",
"0x1ab610e80b518dc5a64d26a87ff3464e19f0d829",
"0xf63f19cffe12d4ce8111c4710b4fe8aa1a7d0e62",
"0x81fa135af129d27e28dc2faa4417689c9044f5d2",
"0xc414d83345d201f091b6c86aa66fa5bf45980bba",
"0x5c43c300e5e177705853e1308ae8b59fe68a1f92",
"0x82c92222d542639122b93b0a0f3f7abc092ce3a1",
"0x2ba8e13b020fc51a77f556b628544003b998fc49",
"0x741d7fc2983a80dd3a76a1ade211d1c0ebaa04aa",
"0x477c5c14b30349147ed7f2c1611e6a83399b0822",
"0xd0257091d9b9efed55ef581d0eb2a04baea5ffbb",
"0xd992d28d69154d00e006fb5531ae209a964460e3",
"0xe0307354c96017844c89c512f604456d1cab7927",
"0xdb983a1a2bd5707b1a5b0da17b1669f4b93735f5",
"0x47cbabdcf6beca64830e9c9600e2d7beb5b35d29",
"0x191e0170a8df022a798a4f002af49492e3387993",
"0x5c7f2650213a50c20b43495e49f097ea48bea401",
"0xd59e454fa827944e1b70631061341a5571d0b113",
"0x85823be8c18bcb3b1af336be64992a876ab4d6ac",
"0x71ae348d8367d60e0ac003c65cec50b55604b9d0",
"0x0ce26d76d2a22fa0b57f9b94417f23424c61d28c",
"0x30e057cfb1a410dd21994707598917ceff3a93b1",
"0xd67a30d4210d19742f41bbb0c210d3e57ad923e4",
"0xc5274df1ba21ea33845d9c88e80869713e1d3428",
"0xd35718c28ccf958c82f5e6f823fef5d051c9ff2d",
"0x2190b407451e85843f64691aaf7eab94fa7543f4",
"0x5a58d45543a689c3a0a24a49d5e9dce8b3de5929",
"0xc24