occam-verify-cli 1.0.207 → 1.0.211
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.
- package/lib/constants.js +1 -5
- package/lib/dom/assertion/satisfies.js +36 -54
- package/lib/dom/axiom.js +49 -25
- package/lib/dom/metavariable.js +4 -7
- package/lib/dom/signature.js +197 -0
- package/lib/dom/substitution/frame.js +216 -0
- package/lib/dom/substitution/reference.js +203 -0
- package/lib/dom/substitution/statement.js +297 -0
- package/lib/dom/substitution/term.js +237 -0
- package/lib/dom/substitution.js +214 -0
- package/lib/dom/topLevelAssertion.js +21 -10
- package/lib/dom/topLevelMetaAssertion.js +4 -4
- package/lib/dom/variable.js +9 -10
- package/lib/index.js +6 -1
- package/lib/mixins/step/unify.js +3 -4
- package/lib/node/assertion/satisfies.js +5 -5
- package/lib/node/signature.js +116 -0
- package/lib/node/topLevelAssertion.js +8 -18
- package/lib/nonTerminalNodeMap.js +3 -2
- package/lib/ruleNames.js +5 -1
- package/lib/substitutions.js +2 -14
- package/lib/unifier/metaLevel.js +2 -4
- package/lib/utilities/json.js +49 -12
- package/lib/utilities/node.js +36 -1
- package/lib/utilities/substitutions.js +2 -4
- package/package.json +1 -1
- package/src/constants.js +0 -1
- package/src/dom/assertion/satisfies.js +45 -72
- package/src/dom/axiom.js +59 -31
- package/src/dom/metavariable.js +6 -6
- package/src/dom/signature.js +145 -0
- package/src/{substitution → dom/substitution}/frame.js +6 -4
- package/src/{substitution → dom/substitution}/reference.js +6 -4
- package/src/{substitution → dom/substitution}/statement.js +8 -7
- package/src/{substitution → dom/substitution}/term.js +7 -6
- package/src/dom/topLevelAssertion.js +26 -11
- package/src/dom/topLevelMetaAssertion.js +2 -2
- package/src/dom/variable.js +8 -10
- package/src/index.js +5 -0
- package/src/mixins/step/unify.js +4 -3
- package/src/node/assertion/satisfies.js +5 -5
- package/src/node/signature.js +16 -0
- package/src/node/topLevelAssertion.js +8 -21
- package/src/nonTerminalNodeMap.js +4 -1
- package/src/ruleNames.js +1 -0
- package/src/substitutions.js +3 -15
- package/src/unifier/metaLevel.js +2 -3
- package/src/utilities/json.js +60 -13
- package/src/utilities/node.js +45 -0
- package/src/utilities/substitutions.js +2 -3
- package/lib/substitution/frame.js +0 -175
- package/lib/substitution/reference.js +0 -162
- package/lib/substitution/statement.js +0 -296
- package/lib/substitution/term.js +0 -196
- package/lib/substitution.js +0 -214
- /package/src/{substitution.js → dom/substitution.js} +0 -0
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return ReferenceSubstitution;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _dom = /*#__PURE__*/ _interop_require_default(require("../dom"));
|
|
12
|
-
var _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
|
|
13
|
-
var _reference = /*#__PURE__*/ _interop_require_default(require("../context/partial/substitution/reference"));
|
|
14
|
-
function _assert_this_initialized(self) {
|
|
15
|
-
if (self === void 0) {
|
|
16
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
17
|
-
}
|
|
18
|
-
return self;
|
|
19
|
-
}
|
|
20
|
-
function _call_super(_this, derived, args) {
|
|
21
|
-
derived = _get_prototype_of(derived);
|
|
22
|
-
return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
23
|
-
}
|
|
24
|
-
function _class_call_check(instance, Constructor) {
|
|
25
|
-
if (!(instance instanceof Constructor)) {
|
|
26
|
-
throw new TypeError("Cannot call a class as a function");
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function _defineProperties(target, props) {
|
|
30
|
-
for(var i = 0; i < props.length; i++){
|
|
31
|
-
var descriptor = props[i];
|
|
32
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
33
|
-
descriptor.configurable = true;
|
|
34
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
35
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
39
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
40
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
41
|
-
return Constructor;
|
|
42
|
-
}
|
|
43
|
-
function _get_prototype_of(o) {
|
|
44
|
-
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
45
|
-
return o.__proto__ || Object.getPrototypeOf(o);
|
|
46
|
-
};
|
|
47
|
-
return _get_prototype_of(o);
|
|
48
|
-
}
|
|
49
|
-
function _inherits(subClass, superClass) {
|
|
50
|
-
if (typeof superClass !== "function" && superClass !== null) {
|
|
51
|
-
throw new TypeError("Super expression must either be null or a function");
|
|
52
|
-
}
|
|
53
|
-
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
54
|
-
constructor: {
|
|
55
|
-
value: subClass,
|
|
56
|
-
writable: true,
|
|
57
|
-
configurable: true
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
if (superClass) _set_prototype_of(subClass, superClass);
|
|
61
|
-
}
|
|
62
|
-
function _interop_require_default(obj) {
|
|
63
|
-
return obj && obj.__esModule ? obj : {
|
|
64
|
-
default: obj
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
function _possible_constructor_return(self, call) {
|
|
68
|
-
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
69
|
-
return call;
|
|
70
|
-
}
|
|
71
|
-
return _assert_this_initialized(self);
|
|
72
|
-
}
|
|
73
|
-
function _set_prototype_of(o, p) {
|
|
74
|
-
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
75
|
-
o.__proto__ = p;
|
|
76
|
-
return o;
|
|
77
|
-
};
|
|
78
|
-
return _set_prototype_of(o, p);
|
|
79
|
-
}
|
|
80
|
-
function _type_of(obj) {
|
|
81
|
-
"@swc/helpers - typeof";
|
|
82
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
83
|
-
}
|
|
84
|
-
function _is_native_reflect_construct() {
|
|
85
|
-
try {
|
|
86
|
-
var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
87
|
-
} catch (_) {}
|
|
88
|
-
return (_is_native_reflect_construct = function() {
|
|
89
|
-
return !!result;
|
|
90
|
-
})();
|
|
91
|
-
}
|
|
92
|
-
var ReferenceSubstitution = /*#__PURE__*/ function(Substitution) {
|
|
93
|
-
_inherits(ReferenceSubstitution, Substitution);
|
|
94
|
-
function ReferenceSubstitution(string, node, tokens, reference, metavariable) {
|
|
95
|
-
_class_call_check(this, ReferenceSubstitution);
|
|
96
|
-
var _this;
|
|
97
|
-
_this = _call_super(this, ReferenceSubstitution, [
|
|
98
|
-
string,
|
|
99
|
-
node,
|
|
100
|
-
tokens
|
|
101
|
-
]);
|
|
102
|
-
_this.reference = reference;
|
|
103
|
-
_this.metavariable = metavariable;
|
|
104
|
-
return _this;
|
|
105
|
-
}
|
|
106
|
-
_create_class(ReferenceSubstitution, [
|
|
107
|
-
{
|
|
108
|
-
key: "getReference",
|
|
109
|
-
value: function getReference() {
|
|
110
|
-
return this.reference;
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
key: "getMetavariable",
|
|
115
|
-
value: function getMetavariable() {
|
|
116
|
-
return this.metavariable;
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
key: "isReferenceEqualTo",
|
|
121
|
-
value: function isReferenceEqualTo(reference) {
|
|
122
|
-
return this.reference.isEqualTo(reference);
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
key: "isMetavariableEqualTo",
|
|
127
|
-
value: function isMetavariableEqualTo(metavariable) {
|
|
128
|
-
return this.metavariable.isEqualTo(metavariable);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
], [
|
|
132
|
-
{
|
|
133
|
-
key: "fromStatementNode",
|
|
134
|
-
value: function fromStatementNode(statementNode, context) {
|
|
135
|
-
var referenceSubstitution = null;
|
|
136
|
-
var referenceSubstitutionNode = statementNode.getReferenceSubstitutionNode();
|
|
137
|
-
if (referenceSubstitutionNode !== null) {
|
|
138
|
-
var lastReferenceNode = referenceSubstitutionNode.getLastReferenceNode(), firstReferenceNode = referenceSubstitutionNode.getFirstReferenceNode(), singularMetavariableNode = lastReferenceNode.getSingularMetavariableNode();
|
|
139
|
-
if (singularMetavariableNode !== null) {
|
|
140
|
-
var Reference = _dom.default.Reference, Metavariable = _dom.default.Metavariable, referenceNode = firstReferenceNode, metavariableNode = singularMetavariableNode, reference = Reference.fromReferenceNode(referenceNode, context), metavariable = Metavariable.fromMetavariableNode(metavariableNode, context), node = referenceSubstitutionNode, tokens = context.nodeAsTokens(node), string = stringFromReferenceAndMetavariable(reference, metavariable);
|
|
141
|
-
referenceSubstitution = new ReferenceSubstitution(string, node, tokens, reference, metavariable);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return referenceSubstitution;
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
key: "fromReferenceAndMetavariable",
|
|
149
|
-
value: function fromReferenceAndMetavariable(reference, metavariable, context) {
|
|
150
|
-
var string = stringFromReferenceAndMetavariable(reference, metavariable), lexer = context.getLexer(), parser = context.getParser(), referenceSubstitutionPartialContext = _reference.default.fromStringLexerAndParser(string, lexer, parser), node = referenceSubstitutionPartialContext.getNode(), tokens = referenceSubstitutionPartialContext.getTokens(), referenceSubstitution = new ReferenceSubstitution(string, node, tokens, reference, metavariable);
|
|
151
|
-
return referenceSubstitution;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
]);
|
|
155
|
-
return ReferenceSubstitution;
|
|
156
|
-
}(_substitution.default);
|
|
157
|
-
function stringFromReferenceAndMetavariable(reference, metavariable) {
|
|
158
|
-
var referenceString = reference.getString(), metavariableString = metavariable.getString(), string = "[".concat(referenceString, " for ").concat(metavariableString, "]");
|
|
159
|
-
return string;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vcmVmZXJlbmNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgZG9tIGZyb20gXCIuLi9kb21cIjtcbmltcG9ydCBTdWJzdGl0dXRpb24gZnJvbSBcIi4uL3N1YnN0aXR1dGlvblwiO1xuaW1wb3J0IFJlZmVyZW5jZVN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3BhcnRpYWwvc3Vic3RpdHV0aW9uL3JlZmVyZW5jZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWZlcmVuY2VTdWJzdGl0dXRpb24gZXh0ZW5kcyBTdWJzdGl0dXRpb24ge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIG5vZGUsIHRva2VucywgcmVmZXJlbmNlLCBtZXRhdmFyaWFibGUpIHtcbiAgICBzdXBlcihzdHJpbmcsIG5vZGUsIHRva2Vucyk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgaXNSZWZlcmVuY2VFcXVhbFRvKHJlZmVyZW5jZSkgeyByZXR1cm4gdGhpcy5yZWZlcmVuY2UuaXNFcXVhbFRvKHJlZmVyZW5jZSk7IH1cblxuICBpc01ldGF2YXJpYWJsZUVxdWFsVG8obWV0YXZhcmlhYmxlKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5pc0VxdWFsVG8obWV0YXZhcmlhYmxlKTsgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHJlZmVyZW5jZVN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCByZWZlcmVuY2VTdWJzdGl0dXRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRSZWZlcmVuY2VTdWJzdGl0dXRpb25Ob2RlKCk7XG5cbiAgICBpZiAocmVmZXJlbmNlU3Vic3RpdHV0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbGFzdFJlZmVyZW5jZU5vZGUgPSByZWZlcmVuY2VTdWJzdGl0dXRpb25Ob2RlLmdldExhc3RSZWZlcmVuY2VOb2RlKCksXG4gICAgICAgICAgICBmaXJzdFJlZmVyZW5jZU5vZGUgPSByZWZlcmVuY2VTdWJzdGl0dXRpb25Ob2RlLmdldEZpcnN0UmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICAgICAgc2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlID0gbGFzdFJlZmVyZW5jZU5vZGUuZ2V0U2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlKCk7XG5cbiAgICAgIGlmIChzaW5ndWxhck1ldGF2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgeyBSZWZlcmVuY2UsIE1ldGF2YXJpYWJsZSB9ID0gZG9tLFxuICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlID0gZmlyc3RSZWZlcmVuY2VOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHNpbmd1bGFyTWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHJlZmVyZW5jZVN1YnN0aXR1dGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgdG9rZW5zID0gY29udGV4dC5ub2RlQXNUb2tlbnMobm9kZSksXG4gICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUocmVmZXJlbmNlLCBtZXRhdmFyaWFibGUpO1xuXG4gICAgICAgIHJlZmVyZW5jZVN1YnN0aXR1dGlvbiA9IG5ldyBSZWZlcmVuY2VTdWJzdGl0dXRpb24oc3RyaW5nLCBub2RlLCB0b2tlbnMsIHJlZmVyZW5jZSwgbWV0YXZhcmlhYmxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUocmVmZXJlbmNlLCBtZXRhdmFyaWFibGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdHJpbmcgPSBzdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlKHJlZmVyZW5jZSwgbWV0YXZhcmlhYmxlKSxcbiAgICAgICAgICBsZXhlciA9IGNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgICBwYXJzZXIgPSBjb250ZXh0LmdldFBhcnNlcigpLFxuICAgICAgICAgIHJlZmVyZW5jZVN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0ID0gUmVmZXJlbmNlU3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQuZnJvbVN0cmluZ0xleGVyQW5kUGFyc2VyKHN0cmluZywgbGV4ZXIsIHBhcnNlciksXG4gICAgICAgICAgbm9kZSA9IHJlZmVyZW5jZVN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0LmdldE5vZGUoKSxcbiAgICAgICAgICB0b2tlbnMgPSByZWZlcmVuY2VTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5nZXRUb2tlbnMoKSxcbiAgICAgICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb24gPSBuZXcgUmVmZXJlbmNlU3Vic3RpdHV0aW9uKHN0cmluZywgbm9kZSwgdG9rZW5zLCByZWZlcmVuY2UsIG1ldGF2YXJpYWJsZSk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlU3Vic3RpdHV0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUocmVmZXJlbmNlLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0cmluZyA9IGBbJHtyZWZlcmVuY2VTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbIlJlZmVyZW5jZVN1YnN0aXR1dGlvbiIsInN0cmluZyIsIm5vZGUiLCJ0b2tlbnMiLCJyZWZlcmVuY2UiLCJtZXRhdmFyaWFibGUiLCJnZXRSZWZlcmVuY2UiLCJnZXRNZXRhdmFyaWFibGUiLCJpc1JlZmVyZW5jZUVxdWFsVG8iLCJpc0VxdWFsVG8iLCJpc01ldGF2YXJpYWJsZUVxdWFsVG8iLCJmcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJjb250ZXh0IiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uTm9kZSIsImdldFJlZmVyZW5jZVN1YnN0aXR1dGlvbk5vZGUiLCJsYXN0UmVmZXJlbmNlTm9kZSIsImdldExhc3RSZWZlcmVuY2VOb2RlIiwiZmlyc3RSZWZlcmVuY2VOb2RlIiwiZ2V0Rmlyc3RSZWZlcmVuY2VOb2RlIiwic2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlIiwiZ2V0U2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlIiwiUmVmZXJlbmNlIiwiZG9tIiwiTWV0YXZhcmlhYmxlIiwicmVmZXJlbmNlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmcm9tUmVmZXJlbmNlTm9kZSIsImZyb21NZXRhdmFyaWFibGVOb2RlIiwibm9kZUFzVG9rZW5zIiwic3RyaW5nRnJvbVJlZmVyZW5jZUFuZE1ldGF2YXJpYWJsZSIsImZyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUiLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQiLCJSZWZlcmVuY2VTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dCIsImZyb21TdHJpbmdMZXhlckFuZFBhcnNlciIsImdldE5vZGUiLCJnZXRUb2tlbnMiLCJTdWJzdGl0dXRpb24iLCJyZWZlcmVuY2VTdHJpbmciLCJnZXRTdHJpbmciLCJtZXRhdmFyaWFibGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7OzBEQUpMO21FQUNTO2dFQUN1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVqQyxJQUFBLEFBQU1BLHNDQUFOO2NBQU1BO2FBQUFBLHNCQUNQQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFlBQVk7Z0NBRHRDTDs7Z0JBRWpCLGtCQUZpQkE7WUFFWEM7WUFBUUM7WUFBTUM7O1FBRXBCLE1BQUtDLFNBQVMsR0FBR0E7UUFDakIsTUFBS0MsWUFBWSxHQUFHQTs7O2tCQUxITDs7WUFRbkJNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsU0FBUztZQUN2Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsWUFBWTtZQUMxQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUJKLFNBQVM7Z0JBQUksT0FBTyxJQUFJLENBQUNBLFNBQVMsQ0FBQ0ssU0FBUyxDQUFDTDtZQUFZOzs7WUFFNUVNLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0JMLFlBQVk7Z0JBQUksT0FBTyxJQUFJLENBQUNBLFlBQVksQ0FBQ0ksU0FBUyxDQUFDSjtZQUFlOzs7O1lBRWpGTSxLQUFBQTttQkFBUCxTQUFPQSxrQkFBa0JDLGFBQWEsRUFBRUMsT0FBTztnQkFDN0MsSUFBSUMsd0JBQXdCO2dCQUU1QixJQUFNQyw0QkFBNEJILGNBQWNJLDRCQUE0QjtnQkFFNUUsSUFBSUQsOEJBQThCLE1BQU07b0JBQ3RDLElBQU1FLG9CQUFvQkYsMEJBQTBCRyxvQkFBb0IsSUFDbEVDLHFCQUFxQkosMEJBQTBCSyxxQkFBcUIsSUFDcEVDLDJCQUEyQkosa0JBQWtCSywyQkFBMkI7b0JBRTlFLElBQUlELDZCQUE2QixNQUFNO3dCQUNyQyxJQUFRRSxZQUE0QkMsWUFBRyxDQUEvQkQsV0FBV0UsZUFBaUJELFlBQUcsQ0FBcEJDLGNBQ2JDLGdCQUFnQlAsb0JBQ2hCUSxtQkFBbUJOLDBCQUNuQmpCLFlBQVltQixVQUFVSyxpQkFBaUIsQ0FBQ0YsZUFBZWIsVUFDdkRSLGVBQWVvQixhQUFhSSxvQkFBb0IsQ0FBQ0Ysa0JBQWtCZCxVQUNuRVgsT0FBT2EsMkJBQ1BaLFNBQVNVLFFBQVFpQixZQUFZLENBQUM1QixPQUM5QkQsU0FBUzhCLG1DQUFtQzNCLFdBQVdDO3dCQUU3RFMsd0JBQXdCLElBeENYZCxzQkF3Q3FDQyxRQUFRQyxNQUFNQyxRQUFRQyxXQUFXQztvQkFDckY7Z0JBQ0Y7Z0JBRUEsT0FBT1M7WUFDVDs7O1lBRU9rQixLQUFBQTttQkFBUCxTQUFPQSw2QkFBNkI1QixTQUFTLEVBQUVDLFlBQVksRUFBRVEsT0FBTztnQkFDbEUsSUFBTVosU0FBUzhCLG1DQUFtQzNCLFdBQVdDLGVBQ3ZENEIsUUFBUXBCLFFBQVFxQixRQUFRLElBQ3hCQyxTQUFTdEIsUUFBUXVCLFNBQVMsSUFDMUJDLHNDQUFzQ0Msa0JBQW1DLENBQUNDLHdCQUF3QixDQUFDdEMsUUFBUWdDLE9BQU9FLFNBQ2xIakMsT0FBT21DLG9DQUFvQ0csT0FBTyxJQUNsRHJDLFNBQVNrQyxvQ0FBb0NJLFNBQVMsSUFDdEQzQix3QkFBd0IsSUF0RGJkLHNCQXNEdUNDLFFBQVFDLE1BQU1DLFFBQVFDLFdBQVdDO2dCQUV6RixPQUFPUztZQUNUOzs7V0F6RG1CZDtFQUE4QjBDLHFCQUFZO0FBNEQvRCxTQUFTWCxtQ0FBbUMzQixTQUFTLEVBQUVDLFlBQVk7SUFDakUsSUFBTXNDLGtCQUFrQnZDLFVBQVV3QyxTQUFTLElBQ3JDQyxxQkFBcUJ4QyxhQUFhdUMsU0FBUyxJQUMzQzNDLFNBQVMsQUFBQyxJQUEwQjRDLE9BQXZCRixpQkFBZ0IsU0FBMEIsT0FBbkJFLG9CQUFtQjtJQUU3RCxPQUFPNUM7QUFDVCJ9
|
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return StatementSubstitution;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
|
|
12
|
-
var _substitutions = /*#__PURE__*/ _interop_require_default(require("../substitutions"));
|
|
13
|
-
var _statement = /*#__PURE__*/ _interop_require_default(require("../context/partial/substitution/statement"));
|
|
14
|
-
var _unification = require("../utilities/unification");
|
|
15
|
-
var _brackets = require("../utilities/brackets");
|
|
16
|
-
var _json = require("../utilities/json");
|
|
17
|
-
function _assert_this_initialized(self) {
|
|
18
|
-
if (self === void 0) {
|
|
19
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
20
|
-
}
|
|
21
|
-
return self;
|
|
22
|
-
}
|
|
23
|
-
function _call_super(_this, derived, args) {
|
|
24
|
-
derived = _get_prototype_of(derived);
|
|
25
|
-
return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
26
|
-
}
|
|
27
|
-
function _class_call_check(instance, Constructor) {
|
|
28
|
-
if (!(instance instanceof Constructor)) {
|
|
29
|
-
throw new TypeError("Cannot call a class as a function");
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
function _defineProperties(target, props) {
|
|
33
|
-
for(var i = 0; i < props.length; i++){
|
|
34
|
-
var descriptor = props[i];
|
|
35
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
36
|
-
descriptor.configurable = true;
|
|
37
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
38
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
42
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
43
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
44
|
-
return Constructor;
|
|
45
|
-
}
|
|
46
|
-
function _get_prototype_of(o) {
|
|
47
|
-
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
48
|
-
return o.__proto__ || Object.getPrototypeOf(o);
|
|
49
|
-
};
|
|
50
|
-
return _get_prototype_of(o);
|
|
51
|
-
}
|
|
52
|
-
function _inherits(subClass, superClass) {
|
|
53
|
-
if (typeof superClass !== "function" && superClass !== null) {
|
|
54
|
-
throw new TypeError("Super expression must either be null or a function");
|
|
55
|
-
}
|
|
56
|
-
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
57
|
-
constructor: {
|
|
58
|
-
value: subClass,
|
|
59
|
-
writable: true,
|
|
60
|
-
configurable: true
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
if (superClass) _set_prototype_of(subClass, superClass);
|
|
64
|
-
}
|
|
65
|
-
function _interop_require_default(obj) {
|
|
66
|
-
return obj && obj.__esModule ? obj : {
|
|
67
|
-
default: obj
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
function _possible_constructor_return(self, call) {
|
|
71
|
-
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
72
|
-
return call;
|
|
73
|
-
}
|
|
74
|
-
return _assert_this_initialized(self);
|
|
75
|
-
}
|
|
76
|
-
function _set_prototype_of(o, p) {
|
|
77
|
-
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
78
|
-
o.__proto__ = p;
|
|
79
|
-
return o;
|
|
80
|
-
};
|
|
81
|
-
return _set_prototype_of(o, p);
|
|
82
|
-
}
|
|
83
|
-
function _type_of(obj) {
|
|
84
|
-
"@swc/helpers - typeof";
|
|
85
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
86
|
-
}
|
|
87
|
-
function _is_native_reflect_construct() {
|
|
88
|
-
try {
|
|
89
|
-
var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
90
|
-
} catch (_) {}
|
|
91
|
-
return (_is_native_reflect_construct = function() {
|
|
92
|
-
return !!result;
|
|
93
|
-
})();
|
|
94
|
-
}
|
|
95
|
-
var StatementSubstitution = /*#__PURE__*/ function(Substitution) {
|
|
96
|
-
_inherits(StatementSubstitution, Substitution);
|
|
97
|
-
function StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution) {
|
|
98
|
-
_class_call_check(this, StatementSubstitution);
|
|
99
|
-
var _this;
|
|
100
|
-
_this = _call_super(this, StatementSubstitution, [
|
|
101
|
-
string,
|
|
102
|
-
node,
|
|
103
|
-
tokens
|
|
104
|
-
]);
|
|
105
|
-
_this.resolved = resolved;
|
|
106
|
-
_this.statement = statement;
|
|
107
|
-
_this.metavariable = metavariable;
|
|
108
|
-
_this.substitution = substitution;
|
|
109
|
-
return _this;
|
|
110
|
-
}
|
|
111
|
-
_create_class(StatementSubstitution, [
|
|
112
|
-
{
|
|
113
|
-
key: "isResolved",
|
|
114
|
-
value: function isResolved() {
|
|
115
|
-
return this.resolved;
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
key: "getStatement",
|
|
120
|
-
value: function getStatement() {
|
|
121
|
-
return this.statement;
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
key: "getMetavariable",
|
|
126
|
-
value: function getMetavariable() {
|
|
127
|
-
return this.metavariable;
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
key: "getSubstitution",
|
|
132
|
-
value: function getSubstitution() {
|
|
133
|
-
return this.substitution;
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
key: "isStatementEqualTo",
|
|
138
|
-
value: function isStatementEqualTo(statement, context) {
|
|
139
|
-
statement = (0, _brackets.stripBracketsFromStatement)(statement, context); ///
|
|
140
|
-
var statementEqualTo = this.statement.isEqualTo(statement);
|
|
141
|
-
return statementEqualTo;
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
key: "isMetavariableEqualTo",
|
|
146
|
-
value: function isMetavariableEqualTo(metavariable) {
|
|
147
|
-
return this.metavariable.isEqualTo(metavariable);
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
key: "isSubstitutionEqualTo",
|
|
152
|
-
value: function isSubstitutionEqualTo(substitution) {
|
|
153
|
-
var substitutionEqualTo;
|
|
154
|
-
if (false) {
|
|
155
|
-
///
|
|
156
|
-
} else if (substitution === null && this.substitution === null) {
|
|
157
|
-
substitutionEqualTo = true;
|
|
158
|
-
} else if (substitution !== null && this.substitution === null) {
|
|
159
|
-
substitutionEqualTo = false;
|
|
160
|
-
} else if (substitution === null && this.substitution !== null) {
|
|
161
|
-
substitutionEqualTo = false;
|
|
162
|
-
} else {
|
|
163
|
-
substitutionEqualTo = this.substitution.isEqualTo(substitution);
|
|
164
|
-
}
|
|
165
|
-
return substitutionEqualTo;
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
key: "isSimple",
|
|
170
|
-
value: function isSimple() {
|
|
171
|
-
var simple = this.substitution === null;
|
|
172
|
-
return simple;
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
key: "matchName",
|
|
177
|
-
value: function matchName(name) {
|
|
178
|
-
return this.metavariable.matchName(name);
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
key: "getReplacementNode",
|
|
183
|
-
value: function getReplacementNode() {
|
|
184
|
-
var statementNode = this.statement.getNode(), replacementNode = statementNode; ///
|
|
185
|
-
return replacementNode;
|
|
186
|
-
}
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
key: "resolve",
|
|
190
|
-
value: function resolve(substitutions, generalContext, specificContext) {
|
|
191
|
-
var substitutionString = this.string; ///
|
|
192
|
-
var metavariable = this.getMetavariable(), simpleSubstitution = substitutions.findSimpleSubstitutionByMetavariable(metavariable);
|
|
193
|
-
if (simpleSubstitution !== null) {
|
|
194
|
-
specificContext.trace("Resolving the ".concat(substitutionString, " substitution..."));
|
|
195
|
-
var substitution = simpleSubstitution, substitutionResolved = substitution.resolveSubstitution(this.substitution, this.statement, substitutions, generalContext, specificContext);
|
|
196
|
-
this.resolved = substitutionResolved; ///
|
|
197
|
-
if (this.resolved) {
|
|
198
|
-
specificContext.debug("...resolved the ".concat(substitutionString, " substitution."));
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
key: "resolveSubstitution",
|
|
205
|
-
value: function resolveSubstitution(substitution, statement, substitutions, generalContext, specificContext) {
|
|
206
|
-
var substitutionResolved = false;
|
|
207
|
-
var substitutionString = substitution.getString();
|
|
208
|
-
specificContext.trace("Resolving the ".concat(substitutionString, " substitution..."));
|
|
209
|
-
var generalSubstitution = substitution, specificSubstitution = this.unifyStatement(statement, specificContext, specificContext); ///
|
|
210
|
-
if (specificSubstitution !== null) {
|
|
211
|
-
substitutions.snapshot();
|
|
212
|
-
var generalSubstitutionString = generalSubstitution.getString(), specificSubstitutionString = specificSubstitution.getString();
|
|
213
|
-
specificContext.trace("Unifying the '".concat(specificSubstitutionString, "' substitution with the '").concat(generalSubstitutionString, "' substitution..."));
|
|
214
|
-
var substitutionUnified = (0, _unification.unifySubstitution)(generalSubstitution, specificSubstitution, substitutions, generalContext, specificContext);
|
|
215
|
-
if (substitutionUnified) {
|
|
216
|
-
specificContext.trace("...unified the '".concat(specificSubstitutionString, "' substitution with the '").concat(generalSubstitutionString, "' substitution."));
|
|
217
|
-
}
|
|
218
|
-
substitutionUnified ? substitutions.continue() : substitutions.rollback(specificContext);
|
|
219
|
-
substitutionResolved = substitutionUnified; ///
|
|
220
|
-
}
|
|
221
|
-
if (substitutionResolved) {
|
|
222
|
-
specificContext.debug("...resolved the ".concat(substitutionString, " substitution."));
|
|
223
|
-
}
|
|
224
|
-
return substitutionResolved;
|
|
225
|
-
}
|
|
226
|
-
},
|
|
227
|
-
{
|
|
228
|
-
key: "unifyStatement",
|
|
229
|
-
value: function unifyStatement(statement, generalContext, specificContext) {
|
|
230
|
-
var specificSubstitution = null;
|
|
231
|
-
var substitutions = _substitutions.default.fromNothing(), statementUnified = this.statement.unifyStatement(statement, substitutions, generalContext, specificContext);
|
|
232
|
-
if (statementUnified) {
|
|
233
|
-
var substitutionsLength = substitutions.getLength();
|
|
234
|
-
if (substitutionsLength === 1) {
|
|
235
|
-
var firstSubstitution = substitutions.getFirstSubstitution();
|
|
236
|
-
specificSubstitution = firstSubstitution; ///
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return specificSubstitution;
|
|
240
|
-
}
|
|
241
|
-
},
|
|
242
|
-
{
|
|
243
|
-
key: "toJSON",
|
|
244
|
-
value: function toJSON() {
|
|
245
|
-
var metavariableJSON = (0, _json.metavariableToMetavariableJSON)(this.metavariable), statementJSON = (0, _json.statementToStatementJSON)(this.statement), metavariable = metavariableJSON, statement = statementJSON, string = this.string, json = {
|
|
246
|
-
string: string,
|
|
247
|
-
statement: statement,
|
|
248
|
-
metavariable: metavariable
|
|
249
|
-
};
|
|
250
|
-
return json;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
], [
|
|
254
|
-
{
|
|
255
|
-
key: "fromJSON",
|
|
256
|
-
value: function fromJSON(json, fileContext) {
|
|
257
|
-
var string = json.string, lexer = fileContext.getLexer(), parser = fileContext.getParser(), statementSubstitutionPartialContext = _statement.default.fromStringLexerAndParser(string, lexer, parser), node = statementSubstitutionPartialContext.getNode(), tokens = statementSubstitutionPartialContext.getTokens(), resolved = true, statement = (0, _json.statementFromJSON)(json, fileContext), metavariable = (0, _json.metavariableFromJSON)(json, fileContext), substitution = null, statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
|
|
258
|
-
return statementSubstitution;
|
|
259
|
-
}
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
key: "fromStatementAndMetavariable",
|
|
263
|
-
value: function fromStatementAndMetavariable(statement, metavariable, context) {
|
|
264
|
-
statement = (0, _brackets.stripBracketsFromStatement)(statement, context); ///
|
|
265
|
-
var string = stringFromStatementAndMetavariable(statement, metavariable), lexer = context.getLexer(), parser = context.getParser(), statementSubstitutionPartialContext = _statement.default.fromStringLexerAndParser(string, lexer, parser), node = statementSubstitutionPartialContext.getNode(), tokens = statementSubstitutionPartialContext.getTokens(), resolved = true, substitution = null, statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
|
|
266
|
-
return statementSubstitution;
|
|
267
|
-
}
|
|
268
|
-
},
|
|
269
|
-
{
|
|
270
|
-
key: "fromStatementMetavariableAndSubstitution",
|
|
271
|
-
value: function fromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context) {
|
|
272
|
-
statement = (0, _brackets.stripBracketsFromStatement)(statement, context); ///
|
|
273
|
-
var string = stringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution, context), lexer = context.getLexer(), parser = context.getParser(), statementSubstitutionPartialContext = _statement.default.fromStringLexerAndParser(string, lexer, parser), node = statementSubstitutionPartialContext.getNode(), tokens = statementSubstitutionPartialContext.getTokens(), resolved = false, statementSubstitution = new StatementSubstitution(string, node, tokens, resolved, statement, metavariable, substitution);
|
|
274
|
-
return statementSubstitution;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
]);
|
|
278
|
-
return StatementSubstitution;
|
|
279
|
-
}(_substitution.default);
|
|
280
|
-
function stringFromStatementAndMetavariable(statement, metavariable) {
|
|
281
|
-
var statementString = statement.getString(), metavariableString = metavariable.getString(), string = "[".concat(statementString, " for ").concat(metavariableString, "]");
|
|
282
|
-
return string;
|
|
283
|
-
}
|
|
284
|
-
function stringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution) {
|
|
285
|
-
var string;
|
|
286
|
-
var statementString = statement.getString(), metavariableString = metavariable.getString();
|
|
287
|
-
if (substitution === null) {
|
|
288
|
-
string = "[".concat(statementString, " for ").concat(metavariableString, "]");
|
|
289
|
-
} else {
|
|
290
|
-
var substitutionString = substitution.getString();
|
|
291
|
-
string = "[".concat(statementString, " for ").concat(metavariableString).concat(substitutionString, "]");
|
|
292
|
-
}
|
|
293
|
-
return string;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcbmltcG9ydCBTdWJzdGl0dXRpb25zIGZyb20gXCIuLi9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgU3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcGFydGlhbC9zdWJzdGl0dXRpb24vc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IHVuaWZ5U3Vic3RpdHV0aW9uIH0gZnJvbSBcIi4uL3V0aWxpdGllcy91bmlmaWNhdGlvblwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBzdGF0ZW1lbnRGcm9tSlNPTiwgc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OLCBtZXRhdmFyaWFibGVGcm9tSlNPTiwgbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlbWVudFN1YnN0aXR1dGlvbiBleHRlbmRzIFN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgbm9kZSwgdG9rZW5zLCByZXNvbHZlZCwgc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICAgIHN1cGVyKHN0cmluZywgbm9kZSwgdG9rZW5zKTtcblxuICAgIHRoaXMucmVzb2x2ZWQgPSByZXNvbHZlZDtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgICB0aGlzLnN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGlzUmVzb2x2ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQ7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldFN1YnN0aXR1dGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJzdGl0dXRpb247XG4gIH1cblxuICBpc1N0YXRlbWVudEVxdWFsVG8oc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgc3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCBzdGF0ZW1lbnRFcXVhbFRvID0gdGhpcy5zdGF0ZW1lbnQuaXNFcXVhbFRvKHN0YXRlbWVudCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50RXF1YWxUbztcbiAgfVxuXG4gIGlzTWV0YXZhcmlhYmxlRXF1YWxUbyhtZXRhdmFyaWFibGUpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLmlzRXF1YWxUbyhtZXRhdmFyaWFibGUpOyB9XG5cbiAgaXNTdWJzdGl0dXRpb25FcXVhbFRvKHN1YnN0aXR1dGlvbikge1xuICAgIGxldCBzdWJzdGl0dXRpb25FcXVhbFRvO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKChzdWJzdGl0dXRpb24gPT09IG51bGwpICYmICh0aGlzLnN1YnN0aXR1dGlvbiA9PT0gbnVsbCkpIHtcbiAgICAgIHN1YnN0aXR1dGlvbkVxdWFsVG8gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCkgJiYgKHRoaXMuc3Vic3RpdHV0aW9uID09PSBudWxsKSkge1xuICAgICAgc3Vic3RpdHV0aW9uRXF1YWxUbyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoKHN1YnN0aXR1dGlvbiA9PT0gbnVsbCkgJiYgKHRoaXMuc3Vic3RpdHV0aW9uICE9PSBudWxsKSkge1xuICAgICAgc3Vic3RpdHV0aW9uRXF1YWxUbyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJzdGl0dXRpb25FcXVhbFRvID0gdGhpcy5zdWJzdGl0dXRpb24uaXNFcXVhbFRvKHN1YnN0aXR1dGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbkVxdWFsVG87XG4gIH1cblxuICBpc1NpbXBsZSgpIHtcbiAgICBjb25zdCBzaW1wbGUgPSAodGhpcy5zdWJzdGl0dXRpb24gPT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHNpbXBsZTtcbiAgfVxuXG4gIG1hdGNoTmFtZShuYW1lKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5tYXRjaE5hbWUobmFtZSk7IH1cblxuICBnZXRSZXBsYWNlbWVudE5vZGUoKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHRoaXMuc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICByZXBsYWNlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlOyAvLy9cblxuICAgIHJldHVybiByZXBsYWNlbWVudE5vZGU7XG4gIH1cblxuICByZXNvbHZlKHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25TdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpLFxuICAgICAgICAgIHNpbXBsZVN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSk7XG5cbiAgICBpZiAoc2ltcGxlU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBzcGVjaWZpY0NvbnRleHQudHJhY2UoYFJlc29sdmluZyB0aGUgJHtzdWJzdGl0dXRpb25TdHJpbmd9IHN1YnN0aXR1dGlvbi4uLmApO1xuXG4gICAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBzaW1wbGVTdWJzdGl0dXRpb24sICAvLy9cbiAgICAgICAgICAgIHN1YnN0aXR1dGlvblJlc29sdmVkID0gc3Vic3RpdHV0aW9uLnJlc29sdmVTdWJzdGl0dXRpb24odGhpcy5zdWJzdGl0dXRpb24sIHRoaXMuc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgdGhpcy5yZXNvbHZlZCA9IHN1YnN0aXR1dGlvblJlc29sdmVkOyAvLy9cblxuICAgICAgaWYgKHRoaXMucmVzb2x2ZWQpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmRlYnVnKGAuLi5yZXNvbHZlZCB0aGUgJHtzdWJzdGl0dXRpb25TdHJpbmd9IHN1YnN0aXR1dGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXNvbHZlU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHN1YnN0aXR1dGlvblJlc29sdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBzcGVjaWZpY0NvbnRleHQudHJhY2UoYFJlc29sdmluZyB0aGUgJHtzdWJzdGl0dXRpb25TdHJpbmd9IHN1YnN0aXR1dGlvbi4uLmApO1xuXG4gICAgY29uc3QgZ2VuZXJhbFN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNTdWJzdGl0dXRpb24gPSB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3BlY2lmaWNDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpOyAgLy8vXG5cbiAgICBpZiAoc3BlY2lmaWNTdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgIHN1YnN0aXR1dGlvbnMuc25hcHNob3QoKTtcblxuICAgICAgY29uc3QgZ2VuZXJhbFN1YnN0aXR1dGlvblN0cmluZyA9IGdlbmVyYWxTdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICBzcGVjaWZpY1N1YnN0aXR1dGlvblN0cmluZyA9IHNwZWNpZmljU3Vic3RpdHV0aW9uLmdldFN0cmluZygpO1xuXG4gICAgICBzcGVjaWZpY0NvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY1N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsU3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uLi4uYCk7XG5cbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvblVuaWZpZWQgPSB1bmlmeVN1YnN0aXR1dGlvbihnZW5lcmFsU3Vic3RpdHV0aW9uLCBzcGVjaWZpY1N1YnN0aXR1dGlvbiwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cblxuICAgICAgaWYgKHN1YnN0aXR1dGlvblVuaWZpZWQpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGAuLi51bmlmaWVkIHRoZSAnJHtzcGVjaWZpY1N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsU3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICBzdWJzdGl0dXRpb25VbmlmaWVkID9cbiAgICAgICAgc3Vic3RpdHV0aW9ucy5jb250aW51ZSgpIDpcbiAgICAgICAgICBzdWJzdGl0dXRpb25zLnJvbGxiYWNrKHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIHN1YnN0aXR1dGlvblJlc29sdmVkID0gc3Vic3RpdHV0aW9uVW5pZmllZDsgIC8vL1xuICAgIH1cblxuICAgIGlmIChzdWJzdGl0dXRpb25SZXNvbHZlZCkge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LmRlYnVnKGAuLi5yZXNvbHZlZCB0aGUgJHtzdWJzdGl0dXRpb25TdHJpbmd9IHN1YnN0aXR1dGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uUmVzb2x2ZWQ7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgc3BlY2lmaWNTdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgY29uc3Qgc3Vic3RpdHV0aW9ucyA9IFN1YnN0aXR1dGlvbnMuZnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVkKSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25zTGVuZ3RoID0gc3Vic3RpdHV0aW9ucy5nZXRMZW5ndGgoKTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvbnNMZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uc3QgZmlyc3RTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmdldEZpcnN0U3Vic3RpdHV0aW9uKCk7XG5cbiAgICAgICAgc3BlY2lmaWNTdWJzdGl0dXRpb24gPSBmaXJzdFN1YnN0aXR1dGlvbjsgLy8vXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwZWNpZmljU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04odGhpcy5tZXRhdmFyaWFibGUpLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04odGhpcy5zdGF0ZW1lbnQpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5zdHJpbmcsXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIHN0YXRlbWVudCxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZVxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgIGxleGVyID0gZmlsZUNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgICBwYXJzZXIgPSBmaWxlQ29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dCA9IFN0YXRlbWVudFN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0LmZyb21TdHJpbmdMZXhlckFuZFBhcnNlcihzdHJpbmcsIGxleGVyLCBwYXJzZXIpLFxuICAgICAgICAgIG5vZGUgPSBzdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5nZXROb2RlKCksXG4gICAgICAgICAgdG9rZW5zID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQuZ2V0VG9rZW5zKCksXG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gbnVsbCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvbiA9IG5ldyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24oc3RyaW5nLCBub2RlLCB0b2tlbnMsIHJlc29sdmVkLCBzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICAgIHN0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gICAgY29uc3Qgc3RyaW5nID0gc3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dCA9IFN0YXRlbWVudFN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0LmZyb21TdHJpbmdMZXhlckFuZFBhcnNlcihzdHJpbmcsIGxleGVyLCBwYXJzZXIpLFxuICAgICAgICAgIG5vZGUgPSBzdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5nZXROb2RlKCksXG4gICAgICAgICAgdG9rZW5zID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQuZ2V0VG9rZW5zKCksXG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IG51bGwsXG4gICAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uID0gbmV3IFN0YXRlbWVudFN1YnN0aXR1dGlvbihzdHJpbmcsIG5vZGUsIHRva2VucywgcmVzb2x2ZWQsIHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24sIGNvbnRleHQpIHtcbiAgICBzdGF0ZW1lbnQgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAvLy9cblxuICAgIGNvbnN0IHN0cmluZyA9IHN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbiwgY29udGV4dCksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dCA9IFN0YXRlbWVudFN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0LmZyb21TdHJpbmdMZXhlckFuZFBhcnNlcihzdHJpbmcsIGxleGVyLCBwYXJzZXIpLFxuICAgICAgICAgIG5vZGUgPSBzdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5nZXROb2RlKCksXG4gICAgICAgICAgdG9rZW5zID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQuZ2V0VG9rZW5zKCksXG4gICAgICAgICAgcmVzb2x2ZWQgPSBmYWxzZSxcbiAgICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb24gPSBuZXcgU3RhdGVtZW50U3Vic3RpdHV0aW9uKHN0cmluZywgbm9kZSwgdG9rZW5zLCByZXNvbHZlZCwgc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbik7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pIHtcbiAgbGV0IHN0cmluZztcblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKTtcblxuICBpZiAoc3Vic3RpdHV0aW9uID09PSBudWxsKSB7XG4gICAgc3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ30ke3N1YnN0aXR1dGlvblN0cmluZ31dYDtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwic3RyaW5nIiwibm9kZSIsInRva2VucyIsInJlc29sdmVkIiwic3RhdGVtZW50IiwibWV0YXZhcmlhYmxlIiwic3Vic3RpdHV0aW9uIiwiaXNSZXNvbHZlZCIsImdldFN0YXRlbWVudCIsImdldE1ldGF2YXJpYWJsZSIsImdldFN1YnN0aXR1dGlvbiIsImlzU3RhdGVtZW50RXF1YWxUbyIsImNvbnRleHQiLCJzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudCIsInN0YXRlbWVudEVxdWFsVG8iLCJpc0VxdWFsVG8iLCJpc01ldGF2YXJpYWJsZUVxdWFsVG8iLCJpc1N1YnN0aXR1dGlvbkVxdWFsVG8iLCJzdWJzdGl0dXRpb25FcXVhbFRvIiwiaXNTaW1wbGUiLCJzaW1wbGUiLCJtYXRjaE5hbWUiLCJuYW1lIiwiZ2V0UmVwbGFjZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsImdldE5vZGUiLCJyZXBsYWNlbWVudE5vZGUiLCJyZXNvbHZlIiwic3Vic3RpdHV0aW9ucyIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic3Vic3RpdHV0aW9uU3RyaW5nIiwic2ltcGxlU3Vic3RpdHV0aW9uIiwiZmluZFNpbXBsZVN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlIiwidHJhY2UiLCJzdWJzdGl0dXRpb25SZXNvbHZlZCIsInJlc29sdmVTdWJzdGl0dXRpb24iLCJkZWJ1ZyIsImdldFN0cmluZyIsImdlbmVyYWxTdWJzdGl0dXRpb24iLCJzcGVjaWZpY1N1YnN0aXR1dGlvbiIsInVuaWZ5U3RhdGVtZW50Iiwic25hcHNob3QiLCJnZW5lcmFsU3Vic3RpdHV0aW9uU3RyaW5nIiwic3BlY2lmaWNTdWJzdGl0dXRpb25TdHJpbmciLCJzdWJzdGl0dXRpb25VbmlmaWVkIiwidW5pZnlTdWJzdGl0dXRpb24iLCJjb250aW51ZSIsInJvbGxiYWNrIiwiU3Vic3RpdHV0aW9ucyIsImZyb21Ob3RoaW5nIiwic3RhdGVtZW50VW5pZmllZCIsInN1YnN0aXR1dGlvbnNMZW5ndGgiLCJnZXRMZW5ndGgiLCJmaXJzdFN1YnN0aXR1dGlvbiIsImdldEZpcnN0U3Vic3RpdHV0aW9uIiwidG9KU09OIiwibWV0YXZhcmlhYmxlSlNPTiIsIm1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiIsInN0YXRlbWVudEpTT04iLCJzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJmaWxlQ29udGV4dCIsImxleGVyIiwiZ2V0TGV4ZXIiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dCIsIlN0YXRlbWVudFN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0IiwiZnJvbVN0cmluZ0xleGVyQW5kUGFyc2VyIiwiZ2V0VG9rZW5zIiwic3RhdGVtZW50RnJvbUpTT04iLCJtZXRhdmFyaWFibGVGcm9tSlNPTiIsInN0YXRlbWVudFN1YnN0aXR1dGlvbiIsImZyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUiLCJzdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlIiwiZnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsInN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24iLCJTdWJzdGl0dXRpb24iLCJzdGF0ZW1lbnRTdHJpbmciLCJtZXRhdmFyaWFibGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBVXFCQTs7O21FQVJJO29FQUNDO2dFQUNzQjsyQkFFZDt3QkFDUztvQkFDdUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbkcsSUFBQSxBQUFNQSxzQ0FBTjtjQUFNQTthQUFBQSxzQkFDUEMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLEVBQUVDLFlBQVksRUFBRUMsWUFBWTtnQ0FEOURQOztnQkFFakIsa0JBRmlCQTtZQUVYQztZQUFRQztZQUFNQzs7UUFFcEIsTUFBS0MsUUFBUSxHQUFHQTtRQUNoQixNQUFLQyxTQUFT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
|