occam-languages 2.2.38 → 2.2.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get asyncEvery () {
|
|
13
|
+
return asyncEvery;
|
|
14
|
+
},
|
|
15
|
+
get asyncForEach () {
|
|
16
|
+
return asyncForEach;
|
|
17
|
+
},
|
|
18
|
+
get asyncReduce () {
|
|
19
|
+
return asyncReduce;
|
|
20
|
+
},
|
|
21
|
+
get asyncSome () {
|
|
22
|
+
return asyncSome;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
async function asyncSome(array, callback) {
|
|
26
|
+
let result = false;
|
|
27
|
+
const length = array.length;
|
|
28
|
+
for(let index = 0; index < length; index += 1){
|
|
29
|
+
const element = array[index];
|
|
30
|
+
result = !!await callback(element, index, array);
|
|
31
|
+
if (result) {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
async function asyncEvery(array, callback) {
|
|
38
|
+
let result = true;
|
|
39
|
+
const length = array.length;
|
|
40
|
+
for(let index = 0; index < length; index += 1){
|
|
41
|
+
const element = array[index];
|
|
42
|
+
result = !!await callback(element, index, array);
|
|
43
|
+
if (!result) {
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
async function asyncReduce(array, callback, initialValue) {
|
|
50
|
+
let value = initialValue; ///
|
|
51
|
+
const length = array.length;
|
|
52
|
+
for(let index = 0; index < length; index += 1){
|
|
53
|
+
const element = array[index];
|
|
54
|
+
value = await callback(value, element, index, array);
|
|
55
|
+
}
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
async function asyncForEach(array, callback) {
|
|
59
|
+
const length = array.length;
|
|
60
|
+
for(let index = 0; index < length; index += 1){
|
|
61
|
+
const element = array[index];
|
|
62
|
+
await callback(element, index, array);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXN5bmMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY1NvbWUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCByZXN1bHQgPSBmYWxzZTtcblxuICBjb25zdCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXN1bHQgPSAhIWF3YWl0IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4LCBhcnJheSk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgbGV0IHJlc3VsdCA9IHRydWU7XG5cbiAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmVzdWx0ID0gISFhd2FpdCBjYWxsYmFjayhlbGVtZW50LCBpbmRleCwgYXJyYXkpO1xuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY1JlZHVjZShhcnJheSwgY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHZhbHVlID0gYXdhaXQgY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4LCBhcnJheSk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY0ZvckVhY2goYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIGF3YWl0IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4LCBhcnJheSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJhc3luY0V2ZXJ5IiwiYXN5bmNGb3JFYWNoIiwiYXN5bmNSZWR1Y2UiLCJhc3luY1NvbWUiLCJhcnJheSIsImNhbGxiYWNrIiwicmVzdWx0IiwibGVuZ3RoIiwiaW5kZXgiLCJlbGVtZW50IiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQW9Cc0JBO2VBQUFBOztRQWdDQUM7ZUFBQUE7O1FBZEFDO2VBQUFBOztRQXBDQUM7ZUFBQUE7OztBQUFmLGVBQWVBLFVBQVVDLEtBQUssRUFBRUMsUUFBUTtJQUM3QyxJQUFJQyxTQUFTO0lBRWIsTUFBTUMsU0FBU0gsTUFBTUcsTUFBTTtJQUUzQixJQUFLLElBQUlDLFFBQVEsR0FBR0EsUUFBUUQsUUFBUUMsU0FBUyxFQUFHO1FBQzlDLE1BQU1DLFVBQVVMLEtBQUssQ0FBQ0ksTUFBTTtRQUU1QkYsU0FBUyxDQUFDLENBQUMsTUFBTUQsU0FBU0ksU0FBU0QsT0FBT0o7UUFFMUMsSUFBSUUsUUFBUTtZQUNWO1FBQ0Y7SUFDRjtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxlQUFlTixXQUFXSSxLQUFLLEVBQUVDLFFBQVE7SUFDOUMsSUFBSUMsU0FBUztJQUViLE1BQU1DLFNBQVNILE1BQU1HLE1BQU07SUFFM0IsSUFBSyxJQUFJQyxRQUFRLEdBQUdBLFFBQVFELFFBQVFDLFNBQVMsRUFBRztRQUM5QyxNQUFNQyxVQUFVTCxLQUFLLENBQUNJLE1BQU07UUFFNUJGLFNBQVMsQ0FBQyxDQUFDLE1BQU1ELFNBQVNJLFNBQVNELE9BQU9KO1FBRTFDLElBQUksQ0FBQ0UsUUFBUTtZQUNYO1FBQ0Y7SUFDRjtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxlQUFlSixZQUFZRSxLQUFLLEVBQUVDLFFBQVEsRUFBRUssWUFBWTtJQUM3RCxJQUFJQyxRQUFRRCxjQUFjLEdBQUc7SUFFN0IsTUFBTUgsU0FBU0gsTUFBTUcsTUFBTTtJQUUzQixJQUFLLElBQUlDLFFBQVEsR0FBR0EsUUFBUUQsUUFBUUMsU0FBUyxFQUFHO1FBQzlDLE1BQU1DLFVBQVVMLEtBQUssQ0FBQ0ksTUFBTTtRQUU1QkcsUUFBUSxNQUFNTixTQUFTTSxPQUFPRixTQUFTRCxPQUFPSjtJQUNoRDtJQUVBLE9BQU9PO0FBQ1Q7QUFFTyxlQUFlVixhQUFhRyxLQUFLLEVBQUVDLFFBQVE7SUFDaEQsTUFBTUUsU0FBU0gsTUFBTUcsTUFBTTtJQUUzQixJQUFLLElBQUlDLFFBQVEsR0FBR0EsUUFBUUQsUUFBUUMsU0FBUyxFQUFHO1FBQzlDLE1BQU1DLFVBQVVMLEtBQUssQ0FBQ0ksTUFBTTtRQUU1QixNQUFNSCxTQUFTSSxTQUFTRCxPQUFPSjtJQUNqQztBQUNGIn0=
|
|
@@ -24,9 +24,9 @@ _export(exports, {
|
|
|
24
24
|
});
|
|
25
25
|
const _occammodel = require("occam-model");
|
|
26
26
|
const _necessary = require("necessary");
|
|
27
|
-
const
|
|
28
|
-
const _asynchronous = require("../utilities/asynchronous");
|
|
27
|
+
const _async = require("../utilities/async");
|
|
29
28
|
const _constants = require("../constants");
|
|
29
|
+
const _continuation = require("../utilities/continuation");
|
|
30
30
|
const { last } = _necessary.arrayUtilities;
|
|
31
31
|
async function createReleaseContexts(dependencyName, context) {
|
|
32
32
|
let releaseContextsCreated = false;
|
|
@@ -117,7 +117,7 @@ async function createDependencyReleaseContexts(releaseContext, dependency, depen
|
|
|
117
117
|
dependentName
|
|
118
118
|
]; ///
|
|
119
119
|
const array = dependencies.getArray();
|
|
120
|
-
dependencyReleaseContextsCreated = await (0,
|
|
120
|
+
dependencyReleaseContextsCreated = await (0, _async.asyncEvery)(array, async (dependency)=>{
|
|
121
121
|
const cyclicDependencyPresent = checkCyclicDependencyPresent(dependency, dependentNames, context);
|
|
122
122
|
if (!cyclicDependencyPresent) {
|
|
123
123
|
const releaseContextCreated = await createReleaseContext(dependency, dependentNames, dependentReleased, context);
|
|
@@ -199,4 +199,4 @@ function checkProjectDependencyOfPackage(releaseContext, dependentReleased, depe
|
|
|
199
199
|
return projectDependencyOfPackage;
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEZXBlbmRlbmN5IH0gZnJvbSBcIm9jY2FtLW1vZGVsXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNocm9ub3VzRXZlcnkgIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGFzeW5jRXZlcnkgIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hc3luY2hyb25vdXNcIjtcbmltcG9ydCB7IFNJTkdMRV9TUEFDRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuY29uc3QgeyBsYXN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5TmFtZSwgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZUNvbnRleHRzQ3JlYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgIC8vL1xuICAgICAgICBkZXBlbmRlbmN5ID0gRGVwZW5kZW5jeS5mcm9tTmFtZShuYW1lKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXMgPSBbXSxcbiAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSBmYWxzZSxcbiAgICAgICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gYXdhaXQgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KTtcblxuICBpZiAocmVsZWFzZUNvbnRleHRDcmVhdGVkKSB7XG4gICAgcmVsZWFzZUNvbnRleHRzQ3JlYXRlZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRzQ3JlYXRlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMoY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0cyhjb250ZXh0LCBjb250aXVuYXRpb24pIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dHMgfSA9IGNvbnRleHQ7XG5cbiAgcmV0dXJuIGFzeW5jaHJvbm91c0V2ZXJ5KHJlbGVhc2VDb250ZXh0cywgdmVyaWZ5UmVsZWFzZUNvbnRleHQsIGNvbnRleHQsIGNvbnRpdW5hdGlvbik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHRzLFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzLFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dHNcbn07XG5cbmZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0LCBjb250aXVuYXRpb24pIHtcbiAgY29uc3QgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCksXG4gICAgICAgIHZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaGFzVmVyaWZpZWQoKTtcblxuICBpZiAocmVsZWFzZWQgfHwgdmVyaWZpZWQpIHtcbiAgICBjb25zdCByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcblxuICAgIHJldHVybiBjb250aXVuYXRpb24ocmVsZWFzZUNvbnRleHRWZXJpZmllcywgY29udGV4dCk7XG4gIH1cblxuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lOyAvLy9cblxuICBsb2cuaW5mbyhgVmVyaWZ5aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuLi5gKTtcblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQudmVyaWZ5KCh2ZXJpZmllcykgPT4ge1xuICAgIGxldCByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGxvZy5pbmZvKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0LmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGl1bmF0aW9uKHJlbGVhc2VDb250ZXh0VmVyaWZpZXMsIGNvbnRleHQpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKTtcblxuICBsZXQgcmVsZWFzZUNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHRGb3VuZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgY29uc3QgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGgsXG4gICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgIGlmIChkZXBlbmRlbnROYW1lc0xlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSB9ID0gY29udGV4dDtcblxuICAgIHJlbGVhc2VDb250ZXh0ID0gYXdhaXQgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0KTtcbiAgfVxuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0Rm91bmQpIHtcbiAgICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gYXdhaXQgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkKSB7XG4gICAgICAgICAgICBhZGRSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG5cbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgP1xuICAgICAgICBsb2cuZGVidWcoYC4uLmNyZWF0ZWQgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgcGFja2FnZSBjb250ZXh0LmApIDpcbiAgICAgICAgICBsb2cud2FybmluZyhgLi4udW5hYmxlIHRvIGNyZWF0ZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0Q3JlYXRlZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xuXG4gIGNvbnN0IG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSByZWxlYXNlZDsgIC8vL1xuXG4gIGRlcGVuZGVudE5hbWVzID0gWyAuLi5kZXBlbmRlbnROYW1lcywgZGVwZW5kZW50TmFtZSBdOyAgLy8vXG5cbiAgY29uc3QgYXJyYXkgPSBkZXBlbmRlbmNpZXMuZ2V0QXJyYXkoKTtcblxuICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCA9IGF3YWl0IGFzeW5jRXZlcnkoYXJyYXksIGFzeW5jIChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghY3ljbGljRGVwZW5kZW5jeVByZXNlbnQpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IGF3YWl0IGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbnRSZWxlYXNlZCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG59XG5cbmZ1bmN0aW9uIGFkZFJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5wdXNoKHJlbGVhc2VDb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dHMgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmZpbmQoKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWVNYXRjaGVzID0gcmVsZWFzZUNvbnRleHQubWF0Y2hEZXBlbmRlbmN5TmFtZShkZXBlbmRlbmN5TmFtZSk7XG5cbiAgICAgICAgICBpZiAoZGVwZW5kZW5jeU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5mdW5jdGlvbiByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzID0gW10pIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0KSB7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgICByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzKTtcbiAgICB9KTtcblxuICAgIHJlbGVhc2VDb250ZXh0cy51bnNoaWZ0KHJlbGVhc2VDb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0Li4uYCk7XG5cbiAgY29uc3QgeyBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgpO1xuXG4gIGxvZy5kZWJ1ZyhgLi4uaW5pdGlhbGlzZWQgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0LmApO1xufVxuXG5mdW5jdGlvbiBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIGluZGV4ID0gZGVwZW5kZW50TmFtZXMuaW5kZXhPZihkZXBlbmRlbmN5TmFtZSk7XG5cbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVudE5hbWVzID0gZGVwZW5kZW50TmFtZXMuc2xpY2UoaW5kZXgpLFxuICAgICAgICAgIGNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzID0gW1xuICAgICAgICAgICAgLi4uY2lyY3VsYXJEZXBlbmRlbnROYW1lcyxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lOYW1lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZyA9IGNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzLmpvaW4oU0lOR0xFX1NQQUNFKTtcblxuICAgIGxvZy53YXJuaW5nKGBUaGVyZSBpcyBhIGN5Y2xpYyBkZXBlbmRlbmN5LCAnJHtjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZ30nLmApO1xuXG4gICAgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50O1xufVxuXG5mdW5jdGlvbiBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IHRydWU7XG5cbiAgY29uc3Qgc2hvcnRlbmVkVmVyc2lvbiA9IGRlcGVuZGVuY3kuZ2V0U2hvcnRlbmVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0Lm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIGlmICghZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbikge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZUNvbnRleHQuZ2V0VmVyc2lvbigpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZSwgIC8vL1xuICAgICAgICAgICAgdmVyc2lvblN0cmluZyA9IHZlcnNpb24udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCk7XG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCByZXF1aXJlcyB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kgYnV0IGEgY29udGV4dCB3aXRoIHZlcnNpb24gJyR7dmVyc2lvblN0cmluZ30nIHdhcyBwcm92aWRlZC5gKTtcblxuICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeTtcbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSA9IGZhbHNlO1xuXG4gIGlmIChkZXBlbmRlbnRSZWxlYXNlZCkge1xuICAgIGNvbnN0IHVucmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1VucmVsZWFzZWQoKTtcblxuICAgIGlmICh1bnJlbGVhc2VkKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgICAgICBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBuYW1lLC8vL1xuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBkZXBlbmRlbmN5IGlzIGEgcHJvamVjdCB3aGlsc3QgaXRzICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgaXMgYSBwYWNrYWdlLmApO1xuXG4gICAgICBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMiLCJ2ZXJpZnlSZWxlYXNlQ29udGV4dHMiLCJsYXN0IiwiYXJyYXlVdGlsaXRpZXMiLCJkZXBlbmRlbmN5TmFtZSIsImNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHNDcmVhdGVkIiwibmFtZSIsImRlcGVuZGVuY3kiLCJEZXBlbmRlbmN5IiwiZnJvbU5hbWUiLCJkZXBlbmRlbnROYW1lcyIsImRlcGVuZGVudFJlbGVhc2VkIiwicmVsZWFzZUNvbnRleHRDcmVhdGVkIiwiY3JlYXRlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHMiLCJmb3JFYWNoIiwicmVsZWFzZUNvbnRleHQiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQiLCJjb250aXVuYXRpb24iLCJhc3luY2hyb25vdXNFdmVyeSIsInZlcmlmeVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZWQiLCJpc1JlbGVhc2VkIiwidmVyaWZpZWQiLCJoYXNWZXJpZmllZCIsInJlbGVhc2VDb250ZXh0VmVyaWZpZXMiLCJsb2ciLCJnZXROYW1lIiwicmVsZWFzZU5hbWUiLCJpbmZvIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJmaW5kUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dEZvdW5kIiwiZGVwZW5kZW50TmFtZXNMZW5ndGgiLCJsZW5ndGgiLCJkZXBlbmRlbmN5U3RyaW5nIiwiYXNTdHJpbmciLCJsYXN0RGVwZW5kZW50TmFtZSIsImRlcGVuZGVudE5hbWUiLCJyZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5Iiwid2FybmluZyIsInByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlIiwiY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSIsInJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSIsImNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQiLCJjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiYWRkUmVsZWFzZUNvbnRleHQiLCJkZWJ1ZyIsImRlcGVuZGVuY2llcyIsImdldERlcGVuZGVuY2llcyIsImFycmF5IiwiZ2V0QXJyYXkiLCJhc3luY0V2ZXJ5IiwiY3ljbGljRGVwZW5kZW5jeVByZXNlbnQiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50IiwicHVzaCIsImZpbmQiLCJkZXBlbmRlbmN5TmFtZU1hdGNoZXMiLCJtYXRjaERlcGVuZGVuY3lOYW1lIiwicmV0cmlldmVSZWxlYXNlQ29udGV4dHMiLCJyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiaW5jbHVkZXMiLCJmb3JFYWNoRGVwZW5kZW5jeSIsInVuc2hpZnQiLCJGaWxlQ29udGV4dEZyb21GaWxlUGF0aCIsImluaXRpYWxpc2UiLCJpbmRleCIsImluZGV4T2YiLCJjaXJjdWxhckRlcGVuZGVudE5hbWVzIiwic2xpY2UiLCJjaXJjdWxhckRlcGVuZGVuY3lOYW1lcyIsImNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzU3RyaW5nIiwiam9pbiIsIlNJTkdMRV9TUEFDRSIsInNob3J0ZW5lZFZlcnNpb24iLCJnZXRTaG9ydGVuZWRWZXJzaW9uIiwiZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiIsIm1hdGNoU2hvcnRlbmVkVmVyc2lvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwidmVyc2lvblN0cmluZyIsInRvU3RyaW5nIiwidW5yZWxlYXNlZCIsImlzVW5yZWxlYXNlZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBV3NCQTtlQUFBQTs7UUE4QnRCO2VBQUE7O1FBZGdCQztlQUFBQTs7UUFRQUM7ZUFBQUE7Ozs0QkFqQ1c7MkJBQ0k7OEJBRUk7OEJBQ1A7MkJBQ0M7QUFFN0IsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MseUJBQWM7QUFFeEIsZUFBZUosc0JBQXNCSyxjQUFjLEVBQUVDLE9BQU87SUFDakUsSUFBSUMseUJBQXlCO0lBRTdCLE1BQU1DLE9BQU9ILGdCQUNQSSxhQUFhQyxzQkFBVSxDQUFDQyxRQUFRLENBQUNILE9BQ2pDSSxpQkFBaUIsRUFBRSxFQUNuQkMsb0JBQW9CLE9BQ3BCQyx3QkFBd0IsTUFBTUMscUJBQXFCTixZQUFZRyxnQkFBZ0JDLG1CQUFtQlA7SUFFeEcsSUFBSVEsdUJBQXVCO1FBQ3pCUCx5QkFBeUI7SUFDM0I7SUFFQSxPQUFPQTtBQUNUO0FBRU8sU0FBU04sMEJBQTBCSyxPQUFPO0lBQy9DLE1BQU0sRUFBRVUsZUFBZSxFQUFFLEdBQUdWO0lBRTVCVSxnQkFBZ0JDLE9BQU8sQ0FBQyxDQUFDQztRQUN2QkMseUJBQXlCRCxnQkFBZ0JaO0lBQzNDO0FBQ0Y7QUFFTyxTQUFTSixzQkFBc0JJLE9BQU8sRUFBRWMsWUFBWTtJQUN6RCxNQUFNLEVBQUVKLGVBQWUsRUFBRSxHQUFHVjtJQUU1QixPQUFPZSxJQUFBQSwrQkFBaUIsRUFBQ0ws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
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEZXBlbmRlbmN5IH0gZnJvbSBcIm9jY2FtLW1vZGVsXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeSAgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FzeW5jXCI7XG5pbXBvcnQgeyBTSU5HTEVfU1BBQ0UgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBhc3luY2hyb25vdXNFdmVyeSAgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuXG5jb25zdCB7IGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3lOYW1lLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gZmFsc2U7XG5cbiAgY29uc3QgbmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAgLy8vXG4gICAgICAgIGRlcGVuZGVuY3kgPSBEZXBlbmRlbmN5LmZyb21OYW1lKG5hbWUpLFxuICAgICAgICBkZXBlbmRlbnROYW1lcyA9IFtdLFxuICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IGZhbHNlLFxuICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHRzKGNvbnRleHQsIGNvbnRpdW5hdGlvbikge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZXR1cm4gYXN5bmNocm9ub3VzRXZlcnkocmVsZWFzZUNvbnRleHRzLCB2ZXJpZnlSZWxlYXNlQ29udGV4dCwgY29udGV4dCwgY29udGl1bmF0aW9uKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVSZWxlYXNlQ29udGV4dHMsXG4gIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMsXG4gIHZlcmlmeVJlbGVhc2VDb250ZXh0c1xufTtcblxuZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIGNvbnRleHQsIGNvbnRpdW5hdGlvbikge1xuICBjb25zdCByZWxlYXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzUmVsZWFzZWQoKSxcbiAgICAgICAgdmVyaWZpZWQgPSByZWxlYXNlQ29udGV4dC5oYXNWZXJpZmllZCgpO1xuXG4gIGlmIChyZWxlYXNlZCB8fCB2ZXJpZmllZCkge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSB0cnVlO1xuXG4gICAgcmV0dXJuIGNvbnRpdW5hdGlvbihyZWxlYXNlQ29udGV4dFZlcmlmaWVzLCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IG5hbWU7IC8vL1xuXG4gIGxvZy5pbmZvKGBWZXJpZnlpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcHJvamVjdC4uLmApO1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dC52ZXJpZnkoKHZlcmlmaWVzKSA9PiB7XG4gICAgbGV0IHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgbG9nLmluZm8oYC4uLnZlcmlmaWVkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuYCk7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aXVuYXRpb24ocmVsZWFzZUNvbnRleHRWZXJpZmllcywgY29udGV4dCk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpO1xuXG4gIGxldCByZWxlYXNlQ29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dCA9IGZpbmRSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KTtcblxuICBjb25zdCByZWxlYXNlQ29udGV4dEZvdW5kID0gKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKTtcblxuICBpZiAoIXJlbGVhc2VDb250ZXh0Rm91bmQpIHtcbiAgICBjb25zdCBkZXBlbmRlbnROYW1lc0xlbmd0aCA9IGRlcGVuZGVudE5hbWVzLmxlbmd0aCxcbiAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gICAgaWYgKGRlcGVuZGVudE5hbWVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBsb2cuaW5mbyhgQ3JlYXRpbmcgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgcGFja2FnZSBjb250ZXh0Li4uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWU7ICAvLy9cblxuICAgICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dCBnaXZlbiB0aGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGFudCdzICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5Li4uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IH0gPSBjb250ZXh0O1xuXG4gICAgcmVsZWFzZUNvbnRleHQgPSBhd2FpdCByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuICB9XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ID09PSBudWxsKSB7XG4gICAgbG9nLndhcm5pbmcoYFRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dCBjb3VsZCBub3QgYmUgY3JlYXRlZC4gUGVyaGFwcyB0aGUgJ21ldGEuanNvbicgZmlsZSBpcyBtaXNzaW5nIG9yIGludmFsaWQuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UgPSBjaGVja1Byb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnRSZWxlYXNlZCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSkge1xuICAgICAgY29uc3QgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSkge1xuICAgICAgICBpZiAocmVsZWFzZUNvbnRleHRGb3VuZCkge1xuICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBhd2FpdCBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQpIHtcbiAgICAgICAgICAgIGFkZFJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcblxuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJlbGVhc2VDb250ZXh0Rm91bmQpIHtcbiAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA/XG4gICAgICAgIGxvZy5kZWJ1ZyhgLi4uY3JlYXRlZCB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCkgOlxuICAgICAgICAgIGxvZy53YXJuaW5nKGAuLi51bmFibGUgdG8gY3JlYXRlIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRDcmVhdGVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG5cbiAgY29uc3QgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCksXG4gICAgICAgIGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpLFxuICAgICAgICBkZXBlbmRlbnROYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IHJlbGVhc2VkOyAgLy8vXG5cbiAgZGVwZW5kZW50TmFtZXMgPSBbIC4uLmRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbnROYW1lIF07ICAvLy9cblxuICBjb25zdCBhcnJheSA9IGRlcGVuZGVuY2llcy5nZXRBcnJheSgpO1xuXG4gIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gYXdhaXQgYXN5bmNFdmVyeShhcnJheSwgYXN5bmMgKGRlcGVuZGVuY3kpID0+IHtcbiAgICBjb25zdCBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jeVByZXNlbnQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCkge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gYXdhaXQgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZDtcbn1cblxuZnVuY3Rpb24gYWRkUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dHMgfSA9IGNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHRzLnB1c2gocmVsZWFzZUNvbnRleHQpO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dHMuZmluZCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5TmFtZU1hdGNoZXMgPSByZWxlYXNlQ29udGV4dC5tYXRjaERlcGVuZGVuY3lOYW1lKGRlcGVuZGVuY3lOYW1lKTtcblxuICAgICAgICAgIGlmIChkZXBlbmRlbmN5TmFtZU1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBjb250ZXh0LCByZWxlYXNlQ29udGV4dHMgPSBbXSkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KTtcblxuICBpZiAoIXJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICAgIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgICAgIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBjb250ZXh0LCByZWxlYXNlQ29udGV4dHMpO1xuICAgIH0pO1xuXG4gICAgcmVsZWFzZUNvbnRleHRzLnVuc2hpZnQocmVsZWFzZUNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0cztcbn1cblxuZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IG5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dHMgPSByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG5cbiAgbG9nLmluZm8oYEluaXRpYWxpc2luZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuLi5gKTtcblxuICBjb25zdCB7IEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UocmVsZWFzZUNvbnRleHRzLCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCk7XG5cbiAgbG9nLmRlYnVnKGAuLi5pbml0aWFsaXNlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ3ljbGljRGVwZW5kZW5jeVByZXNlbnQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50ID0gZmFsc2U7XG5cbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgaW5kZXggPSBkZXBlbmRlbnROYW1lcy5pbmRleE9mKGRlcGVuZGVuY3lOYW1lKTtcblxuICBpZiAoaW5kZXggPiAtMSkge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgIGNpcmN1bGFyRGVwZW5kZW50TmFtZXMgPSBkZXBlbmRlbnROYW1lcy5zbGljZShpbmRleCksXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXMgPSBbXG4gICAgICAgICAgICAuLi5jaXJjdWxhckRlcGVuZGVudE5hbWVzLFxuICAgICAgICAgICAgZGVwZW5kZW5jeU5hbWVcbiAgICAgICAgICBdLFxuICAgICAgICAgIGNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzU3RyaW5nID0gY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXMuam9pbihTSU5HTEVfU1BBQ0UpO1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZXJlIGlzIGEgY3ljbGljIGRlcGVuZGVuY3ksICcke2NpcmN1bGFyRGVwZW5kZW5jeU5hbWVzU3RyaW5nfScuYCk7XG5cbiAgICBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gY3ljbGljRGVwZW5kZW5jeVByZXNlbnQ7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gdHJ1ZTtcblxuICBjb25zdCBzaG9ydGVuZWRWZXJzaW9uID0gZGVwZW5kZW5jeS5nZXRTaG9ydGVuZWRWZXJzaW9uKCk7XG5cbiAgaWYgKHNob3J0ZW5lZFZlcnNpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uID0gcmVsZWFzZUNvbnRleHQubWF0Y2hTaG9ydGVuZWRWZXJzaW9uKHNob3J0ZW5lZFZlcnNpb24pO1xuXG4gICAgaWYgKCFlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIHZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5nZXRWZXJzaW9uKCksXG4gICAgICAgICAgICBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lLCAgLy8vXG4gICAgICAgICAgICB2ZXJzaW9uU3RyaW5nID0gdmVyc2lvbi50b1N0cmluZygpLFxuICAgICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgICAgbG9nLndhcm5pbmcoYFRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IHJlcXVpcmVzIHRoZSAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeSBidXQgYSBjb250ZXh0IHdpdGggdmVyc2lvbiAnJHt2ZXJzaW9uU3RyaW5nfScgd2FzIHByb3ZpZGVkLmApO1xuXG4gICAgICByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5O1xufVxuXG5mdW5jdGlvbiBjaGVja1Byb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnRSZWxlYXNlZCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gZmFsc2U7XG5cbiAgaWYgKGRlcGVuZGVudFJlbGVhc2VkKSB7XG4gICAgY29uc3QgdW5yZWxlYXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzVW5yZWxlYXNlZCgpO1xuXG4gICAgaWYgKHVucmVsZWFzZWQpIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IG5hbWUsLy8vXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWU7ICAvLy9cblxuICAgICAgbG9nLndhcm5pbmcoYFRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGRlcGVuZGVuY3kgaXMgYSBwcm9qZWN0IHdoaWxzdCBpdHMgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCBpcyBhIHBhY2thZ2UuYCk7XG5cbiAgICAgIHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2U7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUmVsZWFzZUNvbnRleHRzIiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyIsInZlcmlmeVJlbGVhc2VDb250ZXh0cyIsImxhc3QiLCJhcnJheVV0aWxpdGllcyIsImRlcGVuZGVuY3lOYW1lIiwiY29udGV4dCIsInJlbGVhc2VDb250ZXh0c0NyZWF0ZWQiLCJuYW1lIiwiZGVwZW5kZW5jeSIsIkRlcGVuZGVuY3kiLCJmcm9tTmFtZSIsImRlcGVuZGVudE5hbWVzIiwiZGVwZW5kZW50UmVsZWFzZWQiLCJyZWxlYXNlQ29udGV4dENyZWF0ZWQiLCJjcmVhdGVSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0cyIsImZvckVhY2giLCJyZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsImNvbnRpdW5hdGlvbiIsImFzeW5jaHJvbm91c0V2ZXJ5IiwidmVyaWZ5UmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlZCIsImlzUmVsZWFzZWQiLCJ2ZXJpZmllZCIsImhhc1ZlcmlmaWVkIiwicmVsZWFzZUNvbnRleHRWZXJpZmllcyIsImxvZyIsImdldE5hbWUiLCJyZWxlYXNlTmFtZSIsImluZm8iLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImZpbmRSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0Rm91bmQiLCJkZXBlbmRlbnROYW1lc0xlbmd0aCIsImxlbmd0aCIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsImxhc3REZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50TmFtZSIsInJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kiLCJ3YXJuaW5nIiwicHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UiLCJjaGVja1Byb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlIiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJhZGRSZWxlYXNlQ29udGV4dCIsImRlYnVnIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiYXJyYXkiLCJnZXRBcnJheSIsImFzeW5jRXZlcnkiLCJjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCIsImNoZWNrQ3ljbGljRGVwZW5kZW5jeVByZXNlbnQiLCJwdXNoIiwiZmluZCIsImRlcGVuZGVuY3lOYW1lTWF0Y2hlcyIsIm1hdGNoRGVwZW5kZW5jeU5hbWUiLCJyZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJpbmNsdWRlcyIsImZvckVhY2hEZXBlbmRlbmN5IiwidW5zaGlmdCIsIkZpbGVDb250ZXh0RnJvbUZpbGVQYXRoIiwiaW5pdGlhbGlzZSIsImluZGV4IiwiaW5kZXhPZiIsImNpcmN1bGFyRGVwZW5kZW50TmFtZXMiLCJzbGljZSIsImNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzIiwiY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmciLCJqb2luIiwiU0lOR0xFX1NQQUNFIiwic2hvcnRlbmVkVmVyc2lvbiIsImdldFNob3J0ZW5lZFZlcnNpb24iLCJlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwibWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidG9TdHJpbmciLCJ1bnJlbGVhc2VkIiwiaXNVbnJlbGVhc2VkIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFXc0JBO2VBQUFBOztRQThCdEI7ZUFBQTs7UUFkZ0JDO2VBQUFBOztRQVFBQztlQUFBQTs7OzRCQWpDVzsyQkFDSTt1QkFFSDsyQkFDQzs4QkFDTTtBQUVuQyxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5QkFBYztBQUV4QixlQUFlSixzQkFBc0JLLGNBQWMsRUFBRUMsT0FBTztJQUNqRSxJQUFJQyx5QkFBeUI7SUFFN0IsTUFBTUMsT0FBT0gsZ0JBQ1BJLGFBQWFDLHNCQUFVLENBQUNDLFFBQVEsQ0FBQ0gsT0FDakNJLGlCQUFpQixFQUFFLEVBQ25CQyxvQkFBb0IsT0FDcEJDLHdCQUF3QixNQUFNQyxxQkFBcUJOLFlBQVlHLGdCQUFnQkMsbUJBQW1CUDtJQUV4RyxJQUFJUSx1QkFBdUI7UUFDekJQLHlCQUF5QjtJQUMzQjtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTTiwwQkFBMEJLLE9BQU87SUFDL0MsTUFBTSxFQUFFVSxlQUFlLEVBQUUsR0FBR1Y7SUFFNUJVLGdCQUFnQkMsT0FBTyxDQUFDLENBQUNDO1FBQ3ZCQyx5QkFBeUJELGdCQUFnQlo7SUFDM0M7QUFDRjtBQUVPLFNBQVNKLHNCQUFzQkksT0FBTyxFQUFFYyxZQUFZO0lBQ3pELE1BQU0sRUFBRUosZUFBZSxFQUFFLEdBQUdWO0lBRTVCLE9BQU9lLElBQUFBLCtCQUFpQixFQUFDTCxpQkFBaUJN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
|
package/package.json
CHANGED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export async function asyncSome(array, callback) {
|
|
4
|
+
let result = false;
|
|
5
|
+
|
|
6
|
+
const length = array.length;
|
|
7
|
+
|
|
8
|
+
for (let index = 0; index < length; index += 1) {
|
|
9
|
+
const element = array[index];
|
|
10
|
+
|
|
11
|
+
result = !!await callback(element, index, array);
|
|
12
|
+
|
|
13
|
+
if (result) {
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export async function asyncEvery(array, callback) {
|
|
22
|
+
let result = true;
|
|
23
|
+
|
|
24
|
+
const length = array.length;
|
|
25
|
+
|
|
26
|
+
for (let index = 0; index < length; index += 1) {
|
|
27
|
+
const element = array[index];
|
|
28
|
+
|
|
29
|
+
result = !!await callback(element, index, array);
|
|
30
|
+
|
|
31
|
+
if (!result) {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export async function asyncReduce(array, callback, initialValue) {
|
|
40
|
+
let value = initialValue; ///
|
|
41
|
+
|
|
42
|
+
const length = array.length;
|
|
43
|
+
|
|
44
|
+
for (let index = 0; index < length; index += 1) {
|
|
45
|
+
const element = array[index];
|
|
46
|
+
|
|
47
|
+
value = await callback(value, element, index, array);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export async function asyncForEach(array, callback) {
|
|
54
|
+
const length = array.length;
|
|
55
|
+
|
|
56
|
+
for (let index = 0; index < length; index += 1) {
|
|
57
|
+
const element = array[index];
|
|
58
|
+
|
|
59
|
+
await callback(element, index, array);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
import { Dependency } from "occam-model";
|
|
4
4
|
import { arrayUtilities } from "necessary";
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { asyncEvery } from "../utilities/asynchronous";
|
|
6
|
+
import { asyncEvery } from "../utilities/async";
|
|
8
7
|
import { SINGLE_SPACE } from "../constants";
|
|
8
|
+
import { asynchronousEvery } from "../utilities/continuation";
|
|
9
9
|
|
|
10
10
|
const { last } = arrayUtilities;
|
|
11
11
|
|