UNPKG

@dashkite/joy

Version:

[![Hippocratic License HL3-CORE](https://img.shields.io/static/v1?label=Hippocratic%20License&message=HL3-CORE&labelColor=5e2751&color=bc8c3d)](https://firstdonoharm.dev/version/3/0/core.html)

144 lines (143 loc) 15.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: Object.getOwnPropertyDescriptor(all, name).get }); } _export(exports, { get benchmark () { return benchmark; }, get debounce () { return debounce; }, get default () { return _default //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL3RpbWUuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUEsU0FBQSxFQUFBLFFBQUEsRUFBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE9BQUEsRUFBQSxZQUFBLEVBQUEsS0FBQSxFQUFBOztBQUFBLE9BQUE7RUFBUSxLQUFSO0NBQUEsTUFBQTs7QUFFQSxLQUFBLEdBQVEsS0FBQSxDQUFNLFFBQUEsQ0FBQyxRQUFELEVBQVcsTUFBWCxDQUFBO0FBQ2QsTUFBQTtFQUFFLEVBQUEsR0FBSyxVQUFBLENBQVcsTUFBWCxFQUFtQixRQUFuQjtTQUNMLFFBQUEsQ0FBQSxDQUFBO1dBQUcsWUFBQSxDQUFjLEVBQWQ7RUFBSDtBQUZZLENBQU47O0FBSVIsS0FBQSxHQUFRLFFBQUEsQ0FBQyxRQUFELENBQUE7U0FDTixJQUFJLE9BQUosQ0FBWSxRQUFBLENBQUMsT0FBRCxDQUFBO1dBQWEsVUFBQSxDQUFXLE9BQVgsRUFBb0IsUUFBcEI7RUFBYixDQUFaO0FBRE07O0FBR1IsWUFBQSxHQUNLLDBEQUFILEdBQ0UsUUFBQSxDQUFBLENBQUE7U0FBRyxXQUFXLENBQUMsR0FBWixDQUFBO0FBQUgsQ0FERixHQUdFLFFBQUEsQ0FBQSxDQUFBO1NBQUcsSUFBSSxDQUFDLEdBQUwsQ0FBQTtBQUFIOztBQUVKLFNBQUEsR0FBWSxNQUFBLFFBQUEsQ0FBRSxJQUFGLENBQUE7U0FDVixDQUFFLENBQUEsTUFBTSxPQUFBLENBQVEsV0FBUixFQUFxQixJQUFyQixDQUFOLENBQUYsQ0FDRSxDQUFDO0FBRk87O0FBSVosT0FBQSxHQUFVLFFBQUEsQ0FBRSxJQUFGLEVBQVEsSUFBUixDQUFBO1NBQ0wsQ0FBQSxRQUFBLENBQUMsQ0FBRSxNQUFGLEVBQVUsT0FBVixFQUFtQixNQUFuQixDQUFELENBQUE7SUFDRCxXQUFXLENBQUMsSUFBWixDQUFpQixDQUFBLENBQUEsQ0FBSSxJQUFKLENBQUEsTUFBQSxDQUFqQjtJQUNBLE1BQUEsR0FBUyxRQUFBLENBQUEsQ0FBQTtNQUNQLFdBQVcsQ0FBQyxJQUFaLENBQWlCLENBQUEsQ0FBQSxDQUFJLElBQUosQ0FBQSxPQUFBLENBQWpCO01BQ0EsT0FBQSxHQUFVLFdBQVcsQ0FBQyxPQUFaLENBQW9CLENBQUEsQ0FBQSxDQUFJLElBQUosQ0FBQSxDQUFwQixFQUNSLENBQUEsQ0FBQSxDQUFJLElBQUosQ0FBQSxNQUFBLENBRFEsRUFDVyxDQUFBLENBQUEsQ0FBSSxJQUFKLENBQUEsT0FBQSxDQURYO2FBRVY7SUFKTztJQUtULE1BQUEsR0FBUyxJQUFBLENBQUE7SUFDVCxJQUFHLG1CQUFIO2FBQXVCLE1BQU0sQ0FBQyxJQUFQLENBQVksTUFBWixFQUF2QjtLQUFBLE1BQUE7YUFBaUQsTUFBQSxDQUFBLEVBQWpEOztFQVJDLENBQUEsRUFBK0IsQ0FBQTtBQUQxQjs7QUFXVixRQUFBLEdBQWMsQ0FBQSxRQUFBLENBQUUsSUFBRixDQUFBO1NBQ1osUUFBQSxDQUFFLFFBQUYsRUFBWSxDQUFaLENBQUE7V0FBbUIsUUFBQSxDQUFBLENBQUE7QUFDckIsVUFBQTtNQUFJLEdBQUEsR0FBTSxJQUFJLENBQUMsR0FBTCxDQUFBO01BQ04sSUFBRyxDQUFFLEdBQUEsR0FBTSxJQUFSLENBQUEsR0FBaUIsUUFBcEI7UUFDRSxJQUFBLEdBQU87ZUFDSixJQUZMOztJQUZpQjtFQUFuQjtBQURZLENBQUEsRUFBUyxHQTlCdkI7OztBQXVDQSxLQUFBLEdBQVEsUUFBQSxDQUFBLENBQUE7U0FDTixJQUFJLE9BQUosQ0FBWSxRQUFBLENBQUUsT0FBRixDQUFBO1dBQ1YsY0FBQSxDQUFlLE9BQWY7RUFEVSxDQUFaO0FBRE0sRUF2Q1I7Ozs7QUE2Q0EsTUFBQSxHQUFTLFFBQUEsQ0FBQSxDQUFBO0FBQ1QsTUFBQTtFQUFFLElBQUEsR0FBTztTQUNKLENBQUEsUUFBQSxDQUFDLENBQUUsT0FBRixFQUFXLFNBQVgsRUFBc0IsS0FBdEIsRUFBNkIsTUFBN0IsRUFBcUMsSUFBckMsQ0FBRCxDQUFBO0lBRUQsQ0FBRSxPQUFGLEVBQVcsU0FBWCxDQUFBO0FBQXlCLGNBQU8sSUFBSSxDQUFDLE1BQVo7QUFBQSxhQUNsQixDQURrQjtpQkFDWCxDQUFDLENBQUEsQ0FBRCxFQUFLLEdBQUEsSUFBTDtBQURXLGFBRWxCLENBRmtCO2lCQUVYO0FBRlc7VUFHbEIsTUFBTSxJQUFJLEtBQUosQ0FBVSwyQkFBVjtBQUhZOzs7TUFLekIsT0FBTyxDQUFDLFVBQVc7O0lBQ25CLEtBQUEsR0FBUSxJQUFJLENBQUMsR0FBTCxDQUFBO0lBRVIsSUFBQSxHQUFPLFFBQUEsQ0FBQSxDQUFBO2FBQ0wsQ0FBRSxNQUFBLEdBQVMsU0FBQSxDQUFBLENBQVgsQ0FBQSxJQUNFLENBQUMsQ0FBRSxJQUFJLENBQUMsR0FBTCxDQUFBLENBQUEsR0FBYSxLQUFmLENBQUEsR0FBeUIsT0FBTyxDQUFDLE9BQWxDO0lBRkc7SUFJUCxNQUFBLEdBQVM7V0FFVCxJQUFJLE9BQUosQ0FBWSxNQUFBLFFBQUEsQ0FBRSxPQUFGLENBQUE7QUFDVixhQUF1QixDQUFDLElBQUEsQ0FBQSxDQUF4QjtRQUFFLENBQUEsTUFBTSxLQUFBLENBQU0sQ0FBTixDQUFOO01BQUY7YUFDQSxPQUFBLENBQVEsTUFBUjtJQUZVLENBQVo7RUFoQkMsQ0FBQSxFQUErQyxDQUFBO0FBRjNDOztBQXNCVCxPQUFBO0VBQ0UsS0FERjtFQUVFLEtBRkY7RUFHRSxZQUhGO0VBSUUsU0FKRjtFQUtFLE9BTEY7RUFNRSxRQU5GO0VBT0UsS0FQRjtFQVFFLE1BUkY7OztBQVdBLE9BQUEsUUFBZSxDQUNiLEtBRGEsRUFFYixLQUZhLEVBR2IsWUFIYSxFQUliLFNBSmEsRUFLYixPQUxhLEVBTWIsUUFOYSxFQU9iLEtBUGEsRUFRYixNQVJhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjdXJyeX0gZnJvbSBcIi4vZnVuY3Rpb25cIlxuXG50aW1lciA9IGN1cnJ5IChpbnRlcnZhbCwgYWN0aW9uKSAtPlxuICBpZCA9IHNldFRpbWVvdXQoYWN0aW9uLCBpbnRlcnZhbClcbiAgLT4gY2xlYXJUaW1lb3V0KCBpZCApXG5cbnNsZWVwID0gKGludGVydmFsKSAtPlxuICBuZXcgUHJvbWlzZSAocmVzb2x2ZSkgLT4gc2V0VGltZW91dCByZXNvbHZlLCBpbnRlcnZhbFxuXG5taWxsaXNlY29uZHMgPVxuICBpZiBwZXJmb3JtYW5jZT9cbiAgICAtPiBwZXJmb3JtYW5jZS5ub3coKVxuICBlbHNlXG4gICAgLT4gRGF0ZS5ub3coKVxuXG5iZW5jaG1hcmsgPSAoIHRhc2sgKSAtPlxuICAoIGF3YWl0IG1lYXN1cmUgXCJhbm9ueW1vdXNcIiwgdGFzayApXG4gICAgLmR1cmF0aW9uXG5cbm1lYXN1cmUgPSAoIG5hbWUsIHRhc2sgKSAtPlxuICBkbyAoeyBmaW5pc2gsIG1lYXN1cmUsIHJlc3VsdCB9ID0ge30pIC0+XG4gICAgcGVyZm9ybWFuY2UubWFyayBcIiN7IG5hbWUgfS1zdGFydFwiXG4gICAgZmluaXNoID0gLT5cbiAgICAgIHBlcmZvcm1hbmNlLm1hcmsgXCIjeyBuYW1lIH0tZmluaXNoXCJcbiAgICAgIG1lYXN1cmUgPSBwZXJmb3JtYW5jZS5tZWFzdXJlIFwiI3sgbmFtZSB9XCIsIFxuICAgICAgICBcIiN7IG5hbWUgfS1zdGFydFwiLCBcIiN7IG5hbWUgfS1maW5pc2hcIlxuICAgICAgbWVhc3VyZVxuICAgIHJlc3VsdCA9IHRhc2soKVxuICAgIGlmIHJlc3VsdC50aGVuPyB0aGVuICggcmVzdWx0LnRoZW4gZmluaXNoICkgZWxzZSBmaW5pc2goKVxuXG5kZWJvdW5jZSA9IGRvICggbGFzdCA9IDAgKSAtPlxuICAoIGludGVydmFsLCBmICkgLT4gLT5cbiAgICBub3cgPSBEYXRlLm5vdygpXG4gICAgaWYgKCBub3cgLSBsYXN0ICkgPiBpbnRlcnZhbFxuICAgICAgbGFzdCA9IG5vd1xuICAgICAgZG8gZlxuXG4jIGZyb20gV2F5bGFuZFxuXG5mcmFtZSA9IC0+XG4gIG5ldyBQcm9taXNlICggcmVzb2x2ZSApIC0+XG4gICAgcXVldWVNaWNyb3Rhc2sgcmVzb2x2ZVxuXG4jIHdlJ3JlIGZvcmNlZCB0byB1c2UgRGF0ZS5ub3cgYmVsb3dcbiMgYmVjYXVzZSBOb2RlIGRvZXNuJ3QgaW5jbHVkZSBpdCBhcyBhIGdsb2JhbFxuZXhwZWN0ID0gLT5cbiAgYXJncyA9IGFyZ3VtZW50c1xuICBkbyAoeyBvcHRpb25zLCBwcmVkaWNhdGUsIHN0YXJ0LCByZXN1bHQsIGRvbmUgfSA9IHt9KSAtPlxuXG4gICAgWyBvcHRpb25zLCBwcmVkaWNhdGUgXSA9IHN3aXRjaCBhcmdzLmxlbmd0aFxuICAgICAgd2hlbiAxIHRoZW4gW3t9LCBhcmdzLi4uIF1cbiAgICAgIHdoZW4gMiB0aGVuIGFyZ3NcbiAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yIFwiZXhwZWN0OiBpbnZhbGlkIGFyZ3VtZW50c1wiXG5cbiAgICBvcHRpb25zLnRpbWVvdXQgPz0gMTAwMFxuICAgIHN0YXJ0ID0gRGF0ZS5ub3coKVxuXG4gICAgZG9uZSA9IC0+XG4gICAgICAoIHJlc3VsdCA9IHByZWRpY2F0ZSgpKSB8fFxuICAgICAgICAoKCBEYXRlLm5vdygpIC0gc3RhcnQgKSA+IG9wdGlvbnMudGltZW91dCApXG5cbiAgICByZXN1bHQgPSBmYWxzZVxuXG4gICAgbmV3IFByb21pc2UgKCByZXNvbHZlICkgLT5cbiAgICAgICggYXdhaXQgc2xlZXAgMSkgd2hpbGUgIWRvbmUoKVxuICAgICAgcmVzb2x2ZSByZXN1bHRcblxuZXhwb3J0IHtcbiAgc2xlZXBcbiAgdGltZXJcbiAgbWlsbGlzZWNvbmRzXG4gIGJlbmNobWFya1xuICBtZWFzdXJlXG4gIGRlYm91bmNlXG4gIGZyYW1lXG4gIGV4cGVjdFxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNsZWVwXG4gIHRpbWVyXG4gIG1pbGxpc2Vjb25kc1xuICBiZW5jaG1hcmtcbiAgbWVhc3VyZVxuICBkZWJvdW5jZVxuICBmcmFtZVxuICBleHBlY3Rcbn1cbiJdfQ== //# sourceURL=/@dashkite/joy/src/time.coffee ; }, get expect () { return expect; }, get frame () { return frame; }, get measure () { return measure; }, get milliseconds () { return milliseconds; }, get sleep () { return sleep; }, get timer () { return timer; } }); const _function = require("./function"); var benchmark, debounce, expect, frame, measure, milliseconds, sleep, timer; timer = (0, _function.curry)(function(interval, action) { var id; id = setTimeout(action, interval); return function() { return clearTimeout(id); }; }); sleep = function(interval) { return new Promise(function(resolve) { return setTimeout(resolve, interval); }); }; milliseconds = typeof performance !== "undefined" && performance !== null ? function() { return performance.now(); } : function() { return Date.now(); }; benchmark = async function(task) { return (await measure("anonymous", task)).duration; }; measure = function(name, task) { return function({ finish, measure, result }) { performance.mark(`${name}-start`); finish = function() { performance.mark(`${name}-finish`); measure = performance.measure(`${name}`, `${name}-start`, `${name}-finish`); return measure; }; result = task(); if (result.then != null) { return result.then(finish); } else { return finish(); } }({}); }; debounce = function(last) { return function(interval, f) { return function() { var now; now = Date.now(); if (now - last > interval) { last = now; return f(); } }; }; }(0); // from Wayland frame = function() { return new Promise(function(resolve) { return queueMicrotask(resolve); }); }; // we're forced to use Date.now below // because Node doesn't include it as a global expect = function() { var args; args = arguments; return function({ options, predicate, start, result, done }) { [options, predicate] = function() { switch(args.length){ case 1: return [ {}, ...args ]; case 2: return args; default: throw new Error("expect: invalid arguments"); } }(); if (options.timeout == null) { options.timeout = 1000; } start = Date.now(); done = function() { return (result = predicate()) || Date.now() - start > options.timeout; }; result = false; return new Promise(async function(resolve) { while(!done()){ await sleep(1); } return resolve(result); }); }({}); }; const _default = { sleep, timer, milliseconds, benchmark, measure, debounce, frame, expect }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvdGltZS5jb2ZmZWUiXSwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3Vycnl9IGZyb20gXCIuL2Z1bmN0aW9uXCJcblxudGltZXIgPSBjdXJyeSAoaW50ZXJ2YWwsIGFjdGlvbikgLT5cbiAgaWQgPSBzZXRUaW1lb3V0KGFjdGlvbiwgaW50ZXJ2YWwpXG4gIC0+IGNsZWFyVGltZW91dCggaWQgKVxuXG5zbGVlcCA9IChpbnRlcnZhbCkgLT5cbiAgbmV3IFByb21pc2UgKHJlc29sdmUpIC0+IHNldFRpbWVvdXQgcmVzb2x2ZSwgaW50ZXJ2YWxcblxubWlsbGlzZWNvbmRzID1cbiAgaWYgcGVyZm9ybWFuY2U/XG4gICAgLT4gcGVyZm9ybWFuY2Uubm93KClcbiAgZWxzZVxuICAgIC0+IERhdGUubm93KClcblxuYmVuY2htYXJrID0gKCB0YXNrICkgLT5cbiAgKCBhd2FpdCBtZWFzdXJlIFwiYW5vbnltb3VzXCIsIHRhc2sgKVxuICAgIC5kdXJhdGlvblxuXG5tZWFzdXJlID0gKCBuYW1lLCB0YXNrICkgLT5cbiAgZG8gKHsgZmluaXNoLCBtZWFzdXJlLCByZXN1bHQgfSA9IHt9KSAtPlxuICAgIHBlcmZvcm1hbmNlLm1hcmsgXCIjeyBuYW1lIH0tc3RhcnRcIlxuICAgIGZpbmlzaCA9IC0+XG4gICAgICBwZXJmb3JtYW5jZS5tYXJrIFwiI3sgbmFtZSB9LWZpbmlzaFwiXG4gICAgICBtZWFzdXJlID0gcGVyZm9ybWFuY2UubWVhc3VyZSBcIiN7IG5hbWUgfVwiLCBcbiAgICAgICAgXCIjeyBuYW1lIH0tc3RhcnRcIiwgXCIjeyBuYW1lIH0tZmluaXNoXCJcbiAgICAgIG1lYXN1cmVcbiAgICByZXN1bHQgPSB0YXNrKClcbiAgICBpZiByZXN1bHQudGhlbj8gdGhlbiAoIHJlc3VsdC50aGVuIGZpbmlzaCApIGVsc2UgZmluaXNoKClcblxuZGVib3VuY2UgPSBkbyAoIGxhc3QgPSAwICkgLT5cbiAgKCBpbnRlcnZhbCwgZiApIC0+IC0+XG4gICAgbm93ID0gRGF0ZS5ub3coKVxuICAgIGlmICggbm93IC0gbGFzdCApID4gaW50ZXJ2YWxcbiAgICAgIGxhc3QgPSBub3dcbiAgICAgIGRvIGZcblxuIyBmcm9tIFdheWxhbmRcblxuZnJhbWUgPSAtPlxuICBuZXcgUHJvbWlzZSAoIHJlc29sdmUgKSAtPlxuICAgIHF1ZXVlTWljcm90YXNrIHJlc29sdmVcblxuIyB3ZSdyZSBmb3JjZWQgdG8gdXNlIERhdGUubm93IGJlbG93XG4jIGJlY2F1c2UgTm9kZSBkb2Vzbid0IGluY2x1ZGUgaXQgYXMgYSBnbG9iYWxcbmV4cGVjdCA9IC0+XG4gIGFyZ3MgPSBhcmd1bWVudHNcbiAgZG8gKHsgb3B0aW9ucywgcHJlZGljYXRlLCBzdGFydCwgcmVzdWx0LCBkb25lIH0gPSB7fSkgLT5cblxuICAgIFsgb3B0aW9ucywgcHJlZGljYXRlIF0gPSBzd2l0Y2ggYXJncy5sZW5ndGhcbiAgICAgIHdoZW4gMSB0aGVuIFt7fSwgYXJncy4uLiBdXG4gICAgICB3aGVuIDIgdGhlbiBhcmdzXG4gICAgICBlbHNlIHRocm93IG5ldyBFcnJvciBcImV4cGVjdDogaW52YWxpZCBhcmd1bWVudHNcIlxuXG4gICAgb3B0aW9ucy50aW1lb3V0ID89IDEwMDBcbiAgICBzdGFydCA9IERhdGUubm93KClcblxuICAgIGRvbmUgPSAtPlxuICAgICAgKCByZXN1bHQgPSBwcmVkaWNhdGUoKSkgfHxcbiAgICAgICAgKCggRGF0ZS5ub3coKSAtIHN0YXJ0ICkgPiBvcHRpb25zLnRpbWVvdXQgKVxuXG4gICAgcmVzdWx0ID0gZmFsc2VcblxuICAgIG5ldyBQcm9taXNlICggcmVzb2x2ZSApIC0+XG4gICAgICAoIGF3YWl0IHNsZWVwIDEpIHdoaWxlICFkb25lKClcbiAgICAgIHJlc29sdmUgcmVzdWx0XG5cbmV4cG9ydCB7XG4gIHNsZWVwXG4gIHRpbWVyXG4gIG1pbGxpc2Vjb25kc1xuICBiZW5jaG1hcmtcbiAgbWVhc3VyZVxuICBkZWJvdW5jZVxuICBmcmFtZVxuICBleHBlY3Rcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBzbGVlcFxuICB0aW1lclxuICBtaWxsaXNlY29uZHNcbiAgYmVuY2htYXJrXG4gIG1lYXN1cmVcbiAgZGVib3VuY2VcbiAgZnJhbWVcbiAgZXhwZWN0XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7UUF1RUUsU0FKRjs7OztlQU1FLFFBTkY7Ozs7Ozs7O2VBUUUsTUFSRjs7O2VBT0UsS0FQRjs7O2VBS0UsT0FMRjs7O2VBR0UsWUFIRjs7O2VBQ0UsS0FERjs7UUFFRSxLQUZGOzs7OzBCQW5FQTtBQUFBLElBQUEsU0FBQSxFQUFBLFFBQUEsRUFBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE9BQUEsRUFBQSxZQUFBLEVBQUEsS0FBQSxFQUFBO0FBRUEsS0FBQSxPQUFRLGVBQUEsRUFBTSxRQUFBLENBQUMsUUFBRCxFQUFXLE1BQVgsQ0FBQTtJQUNkLElBQUE7SUFBRSxFQUFBLEdBQUssVUFBQSxDQUFXLE1BQVgsRUFBbUIsUUFBbkI7V0FDTCxRQUFBLENBQUEsQ0FBQTtlQUFHLFlBQUEsQ0FBYyxFQUFkO0lBQUg7QUFGWSxDQUFOO0FBSVIsS0FBQSxHQUFRLFFBQUEsQ0FBQyxRQUFELENBQUE7V0FDTixJQUFJLE9BQUosQ0FBWSxRQUFBLENBQUMsT0FBRCxDQUFBO2VBQWEsVUFBQSxDQUFXLE9BQVgsRUFBb0IsUUFBcEI7SUFBYixDQUFaO0FBRE07QUFHUixZQUFBLEdBQ0ssT0FBQSxnQkFBQSxlQUFBLGdCQUFBLElBQUgsR0FDRSxRQUFBLENBQUEsQ0FBQTtXQUFHLFdBQVcsQ0FBQyxHQUFaLENBQUE7QUFBSCxDQURGLEdBR0UsUUFBQSxDQUFBLENBQUE7V0FBRyxJQUFJLENBQUMsR0FBTCxDQUFBO0FBQUg7QUFFSixTQUFBLEdBQVksTUFBQSxRQUFBLENBQUUsSUFBRixDQUFBO1dBQ1YsQ0FBRSxNQUFNLE9BQUEsQ0FBUSxXQUFSLEVBQXFCLEtBQXJCLENBQU4sQ0FBRixB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