occam-verify-cli 1.0.862 → 1.0.866
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/context/liminal.js +16 -24
- package/lib/context/literal.js +1 -9
- package/lib/context/mnemic.js +5 -51
- package/lib/context/synoptic.js +26 -12
- package/lib/context.js +1 -37
- package/lib/element/assumption/metaLevel.js +3 -3
- package/lib/element/combinator.js +2 -2
- package/lib/element/conclusion.js +2 -2
- package/lib/element/constructor.js +2 -2
- package/lib/element/deduction.js +2 -2
- package/lib/element/label.js +2 -2
- package/lib/element/metavariable.js +10 -10
- package/lib/element/proofAssertion/premise.js +2 -2
- package/lib/element/proofAssertion/step.js +2 -2
- package/lib/element/proofAssertion/supposition.js +2 -2
- package/lib/element/reference.js +2 -2
- package/lib/element/substitution/frame.js +34 -34
- package/lib/element/substitution/reference.js +37 -36
- package/lib/element/substitution/statement.js +41 -38
- package/lib/element/substitution/term.js +35 -34
- package/lib/element/substitution.js +66 -29
- package/lib/element/variable.js +4 -4
- package/lib/process/unify.js +5 -5
- package/lib/utilities/context.js +52 -17
- package/lib/utilities/element.js +27 -66
- package/lib/utilities/json.js +27 -8
- package/lib/utilities/validation.js +7 -7
- package/package.json +4 -4
- package/src/context/liminal.js +15 -26
- package/src/context/literal.js +0 -14
- package/src/context/mnemic.js +8 -64
- package/src/context/synoptic.js +37 -11
- package/src/context.js +0 -54
- package/src/element/assumption/metaLevel.js +2 -2
- package/src/element/combinator.js +1 -1
- package/src/element/conclusion.js +1 -1
- package/src/element/constructor.js +1 -1
- package/src/element/deduction.js +1 -1
- package/src/element/label.js +1 -1
- package/src/element/metavariable.js +10 -10
- package/src/element/proofAssertion/premise.js +1 -1
- package/src/element/proofAssertion/step.js +1 -1
- package/src/element/proofAssertion/supposition.js +1 -1
- package/src/element/reference.js +1 -1
- package/src/element/substitution/frame.js +42 -38
- package/src/element/substitution/reference.js +46 -39
- package/src/element/substitution/statement.js +51 -41
- package/src/element/substitution/term.js +44 -38
- package/src/element/substitution.js +84 -35
- package/src/element/variable.js +3 -3
- package/src/process/unify.js +3 -5
- package/src/utilities/context.js +61 -23
- package/src/utilities/element.js +36 -70
- package/src/utilities/json.js +31 -12
- package/src/utilities/validation.js +9 -9
package/lib/utilities/json.js
CHANGED
|
@@ -153,12 +153,18 @@ _export(exports, {
|
|
|
153
153
|
get metavariablesToMetavariablesJSON () {
|
|
154
154
|
return metavariablesToMetavariablesJSON;
|
|
155
155
|
},
|
|
156
|
+
get mnemicContextFromJSON () {
|
|
157
|
+
return mnemicContextFromJSON;
|
|
158
|
+
},
|
|
156
159
|
get mnemicContextToMnemicContextJSON () {
|
|
157
160
|
return mnemicContextToMnemicContextJSON;
|
|
158
161
|
},
|
|
159
162
|
get mnemicContextsFromJSON () {
|
|
160
163
|
return mnemicContextsFromJSON;
|
|
161
164
|
},
|
|
165
|
+
get mnemicContextsToMnemicContextsJSON () {
|
|
166
|
+
return mnemicContextsToMnemicContextsJSON;
|
|
167
|
+
},
|
|
162
168
|
get nameFromJSON () {
|
|
163
169
|
return nameFromJSON;
|
|
164
170
|
},
|
|
@@ -437,6 +443,14 @@ function metavariableFromJSON(json, context) {
|
|
|
437
443
|
metavariable = Metavariable.fromJSON(json, context);
|
|
438
444
|
return metavariable;
|
|
439
445
|
}
|
|
446
|
+
function mnemicContextFromJSON(json, context) {
|
|
447
|
+
const releaseContext = context; ///
|
|
448
|
+
({ context } = json);
|
|
449
|
+
json = context; ///
|
|
450
|
+
context = releaseContext; ///
|
|
451
|
+
const mnemicContext = _mnemic.default.fromJSON(json, context);
|
|
452
|
+
return mnemicContext;
|
|
453
|
+
}
|
|
440
454
|
function procedureCallFromJSON(json, context) {
|
|
441
455
|
let { procedureCall = null } = json;
|
|
442
456
|
if (procedureCall !== null) {
|
|
@@ -700,13 +714,11 @@ function metavariablesFromJSON(json, context) {
|
|
|
700
714
|
}
|
|
701
715
|
function mnemicContextsFromJSON(json, context) {
|
|
702
716
|
const releaseContext = context; ///
|
|
703
|
-
const { contexts
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
const contextsJSON = contexts, mnemicContexts = contextsJSON.map((contextJSON)=>{
|
|
709
|
-
const json = contextJSON, context = releaseContext, mnemicContext = _mnemic.default.fromJSON(json, context);
|
|
717
|
+
const { contexts } = json;
|
|
718
|
+
const mnemicContexts = contexts.map((context)=>{
|
|
719
|
+
json = context; ///
|
|
720
|
+
context = releaseContext; ///
|
|
721
|
+
const mnemicContext = _mnemic.default.fromJSON(json, context);
|
|
710
722
|
return mnemicContext; ///
|
|
711
723
|
});
|
|
712
724
|
return mnemicContexts;
|
|
@@ -1024,6 +1036,13 @@ function metavariablesToMetavariablesJSON(metavariables) {
|
|
|
1024
1036
|
});
|
|
1025
1037
|
return metavariablesJSON;
|
|
1026
1038
|
}
|
|
1039
|
+
function mnemicContextsToMnemicContextsJSON(mnemicContexts) {
|
|
1040
|
+
const mnemicContextsJSON = mnemicContexts.map((mnemicContext)=>{
|
|
1041
|
+
const mnemicContextJSON = mnemicContext.toJSON();
|
|
1042
|
+
return mnemicContextJSON;
|
|
1043
|
+
});
|
|
1044
|
+
return mnemicContextsJSON;
|
|
1045
|
+
}
|
|
1027
1046
|
function propertyRelationsToPropertyRelationsJSON(propertyRelations) {
|
|
1028
1047
|
const propertyRelationsJSON = propertyRelations.map((propertyRelation)=>{
|
|
1029
1048
|
const propertyRelationJSON = propertyRelation.toJSON();
|
|
@@ -1061,4 +1080,4 @@ function findMetaTypeByName(name, context) {
|
|
|
1061
1080
|
return metaType;
|
|
1062
1081
|
}
|
|
1063
1082
|
|
|
1064
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBuYW1lIH0gPSBqc29uO1xuXG4gIGNvbnN0IG5hbWVKU09OID0gbmFtZTsgIC8vL1xuXG4gIG5hbWUgPSBuYW1lSlNPTjsgIC8vL1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybSB9ID0ganNvbjtcblxuICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gICAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzO1xuXG4gICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gdHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZSB9ID0ganNvbjtcblxuICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZTsgIC8vL1xuXG4gICAganNvbiA9IGZyYW1lSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHM7XG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBuZWdhdGVkIH0gPSBqc29uO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWR1Y3Rpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBEZWR1Y3Rpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uOyAgLy8vXG5cbiAganNvbiA9IGRlZHVjdGlvbkpTT047ICAvLy9cblxuICBkZWR1Y3Rpb24gPSBEZWR1Y3Rpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIGpzb24gPSBzaWduYXR1cmVKU09OOyAvLy9cblxuICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2U7ICAvLy9cblxuICBqc29uID0gcmVmZXJlbmNlSlNPTjsgLy8vXG5cbiAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBpZGVudGlmaWVyIH0gPSBqc29uO1xuXG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIGlkZW50aWZpZXIgPSBpZGVudGlmaWVySlNPTjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHByb3Zpc2lvbmFsIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcm92aXNpb25hbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb2NlZHVyZUNhbGwgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBQcm9jZWR1cmVDYWxsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsSlNPTiA9IHByb2NlZHVyZUNhbGw7ICAvLy9cblxuICAgIGpzb24gPSBwcm9jZWR1cmVDYWxsSlNPTjsgLy8vXG5cbiAgICBwcm9jZWR1cmVDYWxsID0gUHJvY2VkdXJlQ2FsbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9taW5hbFR5cGVOYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IG5vbWluYWxUeXBlTmFtZSB9ID0ganNvbjtcblxuICByZXR1cm4gbm9taW5hbFR5cGVOYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlOyAgLy8vXG5cbiAganNvbiA9IHByb2NlZHVyZVJlZmVyZW5jZUpTT047ICAvLy9cblxuICBwcm9jZWR1cmVSZWZlcmVuY2UgPSBQcm9jZWR1cmVSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzRnJvbUpTT04oanNvbiwgdHlwZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgeyB0eXBlczogdHlwZXNKU09OIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZSB9ID0gZWxlbWVudHM7XG5cbiAgdHlwZXNKU09OLmZvckVhY2goKHR5cGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZSA9IFR5cGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0ZXJtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0ZXJtc0pTT04gPSB0ZXJtczsgLy8vXG5cbiAgdGVybXMgPSB0ZXJtc0pTT04ubWFwKCh0ZXJtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0ZXJtSlNPTiwgIC8vL1xuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBydWxlc0pTT04gPSBydWxlczsgLy8vXG5cbiAgcnVsZXMgPSBydWxlc0pTT04ubWFwKChydWxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBydWxlSlNPTiwgIC8vL1xuICAgICAgICAgIHJ1bGUgPSBSdWxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0pO1xuXG4gIHJldHVybiBydWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZnJhbWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRnJhbWUgfSA9IGVsZW1lbnRzLFxuICAgIGZyYW1lc0pTT04gPSBmcmFtZXM7IC8vL1xuXG4gIGZyYW1lcyA9IGZyYW1lc0pTT04ubWFwKChmcmFtZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZnJhbWVKU09OLCAgLy8vXG4gICAgICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsYWJlbEpTT04sIC8vL1xuICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGF4aW9tcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEF4aW9tIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG5cbiAgYXhpb21zID0gYXhpb21zSlNPTi5tYXAoKGF4aW9tSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByZW1pc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJlbWlzZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zOyAvLy9cblxuICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHZhcmlhYmxlc0pTT04gPSB2YXJpYWJsZXM7IC8vL1xuXG4gIHZhcmlhYmxlcyA9IHZhcmlhYmxlc0pTT04ubWFwKCh2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllczsgLy8vXG5cbiAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXNKU09OLm1hcCgoZXF1YWxpdHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGVxdWFsaXR5SlNPTiwgIC8vL1xuICAgICAgICAgIGVxdWFsaXR5ID0gRXF1YWxpdHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvcGVydGllcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb3BlcnR5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvcGVydGllc0pTT04gPSBwcm9wZXJ0aWVzOyAvLy9cblxuICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0pTT04ubWFwKChwcm9wZXJ0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJvcGVydHlKU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHkgPSBQcm9wZXJ0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHN1cGVyVHlwZXM6IHN1cGVyVHlwZXNKU09OIH0gPSBqc29uO1xuXG4gIGNvbnN0IHN1cGVyVHlwZXMgPSBzdXBlclR5cGVzSlNPTi5tYXAoKHN1cGVyVHlwZUpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCBqc29uID0gc3VwZXJUeXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAgICAgIHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICAgIG5hbWUgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgICAgICAgICB0eXBlID0gZmluZFR5cGVCeU5hbWUobmFtZSwgY29udGV4dCksXG4gICAgICAgICAgICAgICAgc3VwZXJUeXBlID0gdHlwZTsgLy8vXG5cbiAgICAgICAgICByZXR1cm4gc3VwZXJUeXBlO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGh5cG90aGVzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBIeXBvdGhlc2lzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzOyAgLy8vXG5cbiAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLm1hcCgoaHlwb3RoZXNpc0pTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gaHlwb3RoZXNpc0pTT04sIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXMgPSBIeXBvdGhlc2lzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXM7XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcGFyYW1ldGVycyB9ID0ganNvbjtcblxuICBjb25zdCB7IFBhcmFtZXRlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVyczsgLy8vXG5cbiAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNKU09OLm1hcCgocGFyYW1ldGVySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwYXJhbWV0ZXJKU09OLCAgLy8vXG4gICAgICAgICAgcGFyYW1ldGVyID0gUGFyYW1ldGVyLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBqdWRnZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSnVkZ2VtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAganVkZ2VtZW50c0pTT04gPSBqdWRnZW1lbnRzOyAvLy9cblxuICBqdWRnZW1lbnRzID0ganVkZ2VtZW50c0pTT04ubWFwKChqdWRnZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGp1ZGdlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBqdWRnZW1lbnQgPSBKdWRnZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50O1xuICB9KTtcblxuICByZXR1cm4ganVkZ2VtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHM7IC8vL1xuXG4gIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzSlNPTi5tYXAoKHN0YXRlbWVudEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3RhdGVtZW50SlNPTiwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzZXJ0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGVBc3NlcnRpb24sIERlZmluZWRBc3NlcnRpb24sIFByb3BlcnR5QXNzZXJ0aW9uLCBTdWJwcm9vZkFzc2VydGlvbiwgU2F0aXNmaWVzQXNzZXJ0aW9uLCBDb250YWluZWRBc3NlcnRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnM7IC8vL1xuXG4gIGFzc2VydGlvbnMgPSBhc3NlcnRpb25zSlNPTi5tYXAoKGFzc2VydGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzZXJ0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc2VydGlvbiA9IFR5cGVBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eUFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTdWJwcm9vZkFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTYXRpc2ZpZXNBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVkQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc2VydGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyByZWZlcmVuY2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzOyAvLy9cblxuICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0pTT04ubWFwKChyZWZlcmVuY2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJlZmVyZW5jZUpTT04sICAvLy9cbiAgICAgICAgICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25qZWN0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmplY3R1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlczsgLy8vXG5cbiAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04ubWFwKChjb25qZWN0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25qZWN0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbmplY3R1cmUgPSBDb25qZWN0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb21iaW5hdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbWJpbmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9yczsgLy8vXG5cbiAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04ubWFwKChjb21iaW5hdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb21iaW5hdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3IgPSBDb21iaW5hdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3N1bXB0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgIGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zOyAvLy9cblxuICBhc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25zSlNPTi5tYXAoKGFzc3VtcHRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc3VtcHRpb25KU09OLCAgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvbiA9IEFzc3VtcHRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlUHJlZml4ZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlUHJlZml4IH0gPSBlbGVtZW50cyxcbiAgICAgICAgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlczsgLy8vXG5cbiAgdHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzSlNPTi5tYXAoKHR5cGVQcmVmaXhKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVQcmVmaXhKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeCA9IFR5cGVQcmVmaXguZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeDtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RydWN0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uc3RydWN0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzOyAvLy9cblxuICBjb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnNKU09OLm1hcCgoY29uc3RydWN0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbnN0cnVjdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF0aGVvcmVtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXRoZW9yZW1zSlNPTiA9IG1ldGF0aGVvcmVtczsgLy8vXG5cbiAgbWV0YXRoZW9yZW1zID0gbWV0YXRoZW9yZW1zSlNPTi5tYXAoKG1ldGF0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdGhlb3JlbUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdGhlb3JlbSA9IE1ldGF0aGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdXBwb3NpdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdXBwb3NpdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnM7ICAvLy9cblxuICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLm1hcCgoc3VwcG9zaXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1cHBvc2l0aW9uSlNPTiwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb24gPSBTdXBwb3NpdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN1YnN0aXR1dGlvbnMgfSA9IGpzb247ICAvLy9cblxuICBjb25zdCBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnM7IC8vL1xuXG4gIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTi5tYXAoKHN1YnN0aXR1dGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3Vic3RpdHV0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbkZyb21TdWJzdGl0dXRpb25KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzOyAvLy9cblxuICBtZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlc0pTT04ubWFwKChtZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IHsgY29udGV4dHMgPSBbXSB9ID0ganNvbjtcblxuICAoeyBjb250ZXh0ID0gbnVsbCB9ID0ganNvbik7XG5cbiAgaWYgKGNvbnRleHQgIT09IG51bGwpIHtcbiAgICBjb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgY29udGV4dHNKU09OID0gY29udGV4dHMsICAvLy9cbiAgICAgICAgbW5lbWljQ29udGV4dHMgPSBjb250ZXh0c0pTT04ubWFwKChjb250ZXh0SlNPTikgPT4ge1xuICAgICAgICAgIGNvbnN0IGpzb24gPSBjb250ZXh0SlNPTiwgLy8vXG4gICAgICAgICAgICAgICAgY29udGV4dCA9IHJlbGVhc2VDb250ZXh0LCAvLy9cbiAgICAgICAgICAgICAgICBtbmVtaWNDb250ZXh0ID0gTW5lbWljQ29udGV4dC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBtbmVtaWNDb250ZXh0OyAgLy8vXG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZFZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXM7IC8vL1xuXG4gIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRWYXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZGVjbGFyZWRWYXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSB2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5UmVsYXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0eVJlbGF0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb3BlcnR5UmVsYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0eVJlbGF0aW9uc0pTT04gPSBwcm9wZXJ0eVJlbGF0aW9uczsgLy8vXG5cbiAgcHJvcGVydHlSZWxhdGlvbnMgPSBwcm9wZXJ0eVJlbGF0aW9uc0pTT04ubWFwKChwcm9wZXJ0eVJlbGF0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eVJlbGF0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5UmVsYXRpb24gPSBQcm9wZXJ0eVJlbGF0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0eVJlbGF0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZXZlbEFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhTGV2ZWxBc3N1bXB0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGFMZXZlbEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04gPSBtZXRhTGV2ZWxBc3N1bXB0aW9uczsgLy8vXG5cbiAgbWV0YUxldmVsQXNzdW1wdGlvbnMgPSBtZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04ubWFwKChtZXRhTGV2ZWxBc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhTGV2ZWxBc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb24gPSBNZXRhTGV2ZWxBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhTGV2ZWxBc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZGVjbGFyZWRNZXRhdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRNZXRhdmFyaWFibGVzID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTi5tYXAoKGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGU7ICAvLy9cblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVUb05hbWVKU09OKG5hbWUpIHtcbiAgY29uc3QgbmFtZUpTT04gPSBuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIG5hbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybVRvVGVybUpTT04odGVybSkge1xuICBjb25zdCB0ZXJtSlNPTiA9ICh0ZXJtICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICB0ZXJtLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gdGVybUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlVG9UeXBlSlNPTih0eXBlKSB7XG4gIGNvbnN0IHR5cGVKU09OID0gKHR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lVG9GcmFtZUpTT04oZnJhbWUpIHtcbiAgY29uc3QgZnJhbWVKU09OID0gKGZyYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgZnJhbWUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gZnJhbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxUb0xhYmVsSlNPTihsYWJlbCkge1xuICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICByZXR1cm4gbGFiZWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZFRvTmVnYXRlZEpTT04obmVnYXRlZCkge1xuICBjb25zdCBuZWdhdGVkSlNPTiA9IG5lZ2F0ZWQ7ICAvLy9cblxuICByZXR1cm4gbmVnYXRlZEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmlhYmxlVG9WYXJpYWJsZUpTT04oYXJpYWJsZSkge1xuICBjb25zdCBhcmlhYmxlSlNPTiA9IGFyaWFibGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIGFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVUb01ldGFUeXBlSlNPTihtZXRhVHlwZSkge1xuICBjb25zdCBtZXRhVHlwZUpTT04gPSAobWV0YVR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhVHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBtZXRhVHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04ocmVmZXJlbmNlKSB7XG4gIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04oc3RhdGVtZW50KSB7XG4gIGNvbnN0IHN0YXRlbWVudEpTT04gPSAoc3RhdGVtZW50ICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTihkZWR1Y3Rpb24pIHtcbiAgY29uc3QgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvbi50b0pTT04oKTtcblxuICByZXR1cm4gZGVkdWN0aW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTihzaWduYXR1cmUpIHtcbiAgY29uc3Qgc2lnbmF0dXJlSlNPTiA9IChzaWduYXR1cmUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzaWduYXR1cmVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04oaWRlbnRpZmllcikge1xuICBjb25zdCBpZGVudGlmaWVySlNPTiA9IGlkZW50aWZpZXI7ICAvLy9cblxuICByZXR1cm4gaWRlbnRpZmllckpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTihjb25jbHVzaW9uKSB7XG4gIGNvbnN0IGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbi50b0pTT04oKTtcblxuICByZXR1cm4gY29uY2x1c2lvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHByb3Zpc2lvbmFsSlNPTiA9IHByb3Zpc2lvbmFsOyAgLy8vXG5cbiAgcmV0dXJuIHByb3Zpc2lvbmFsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTihtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OKHByb2NlZHVyZUNhbGwpIHtcbiAgY29uc3QgcHJvY2VkdXJlQ2FsbEpTT04gPSAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbC50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9taW5hbFR5cGVOYW1lVG9Ob21pbmFsVHlwZU5hbWVKU09OKG5vbWluYWxUeXBlTmFtZSkge1xuICBjb25zdCBub21pbmFsVHlwZU5hbWVKU09OID0gbm9taW5hbFR5cGVOYW1lOyAgLy8vXG5cbiAgcmV0dXJuIG5vbWluYWxUeXBlTmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0VG9NbmVtaWNDb250ZXh0SlNPTihtbmVtaWNDb250ZXh0KSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVSZWZlcmVuY2VUb1Byb2NlZHVyZVJlZmVyZW5jZUpTT04ocHJvY2VkdXJlUmVmZXJlbmNlKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZUpTT04gPSBwcm9jZWR1cmVSZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZVRvREVjbGFyZWRNZXRhdmFyaWFibGVKU09OKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiwgRnJhbWVTdWJzdGl0dXRpb24sIFN0YXRlbWVudFN1YnN0aXR1dGlvbiwgUmVmZXJlbmNlU3Vic3RpdHV0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBGcmFtZVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZW1lbnRTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1RvVGVybXNKU09OKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zSlNPTiA9IHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICAgIHJldHVybiB0ZXJtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcnVsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNUb0xhYmVsc0pTT04obGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNUb0ZyYW1lc0pTT04oZnJhbWVzKSB7XG4gIGNvbnN0IGZyYW1lc0pTT04gPSBmcmFtZXMubWFwKChmcmFtZSkgPT4ge1xuICAgIGNvbnN0IGZyYW1lSlNPTiA9IGZyYW1lLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGZyYW1lSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNUb0F4aW9tc0pTT04oYXhpb21zKSB7XG4gIGNvbnN0IGF4aW9tc0pTT04gPSBheGlvbXMubWFwKChheGlvbSkgPT4ge1xuICAgIGNvbnN0IGF4aW9tSlNPTiA9IGF4aW9tLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGF4aW9tSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1RvUHJlbWlzZXNKU09OKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzSlNPTiA9IHByZW1pc2VzLm1hcCgocHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VKU09OID0gcHJlbWlzZS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcmVtaXNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhlb3JlbXMpIHtcbiAgY29uc3QgdGhlb3JlbXNKU09OID0gdGhlb3JlbXMubWFwKCh0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgdGhlb3JlbUpTT04gPSB0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzVG9WYXJpYWJsZXNKU09OKHZhcmlhYmxlcykge1xuICBjb25zdCB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzLm1hcCgodmFyaWFibGUpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZUpTT04gPSB2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiB2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04oaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXMubWFwKChoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc0pTT04gPSBoeXBvdGhlc2lzLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNKU09OO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTihzdXBlclR5cGVzKSB7XG4gIGNvbnN0IHN1cGVyVHlwZXNKU09OID0gc3VwZXJUeXBlcy5tYXAoKHN1cGVyVHlwZSkgPT4ge1xuICAgIGNvbnN0IHN1cGVyVHlwZUpTT04gPSBzdXBlclR5cGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3VwZXJUeXBlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04ocGFyYW1ldGVycykge1xuICBjb25zdCBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnMubWFwKChwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJKU09OID0gcGFyYW1ldGVyLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHByb3BlcnRpZXMpIHtcbiAgY29uc3QgcHJvcGVydGllc0pTT04gPSBwcm9wZXJ0aWVzLm1hcCgocHJvcGVydHkpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eUpTT04gPSBwcm9wZXJ0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcm9wZXJ0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGp1ZGdlbWVudHNUb0p1ZGdlbWVudHNKU09OKGp1ZGdlbWVudHMpIHtcbiAgY29uc3QganVkZ2VtZW50c0pTT04gPSBqdWRnZW1lbnRzLm1hcCgoanVkZ2VtZW50KSA9PiB7XG4gICAgY29uc3QganVkZ2VtZW50SlNPTiA9IGp1ZGdlbWVudC50b0pTT04oKTtcblxuICAgIHJldHVybiBqdWRnZW1lbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4ganVkZ2VtZW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTihlcXVhbGl0aWVzKSB7XG4gIGNvbnN0IGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllcy5tYXAoKGVxdWFsaXR5KSA9PiB7XG4gICAgY29uc3QgZXF1YWxpdHlKU09OID0gZXF1YWxpdHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTihzdGF0ZW1lbnRzKSB7XG4gIGNvbnN0IHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50cy5tYXAoKHN0YXRlbWVudCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04oYXNzZXJ0aW9ucykge1xuICBjb25zdCBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnMubWFwKChhc3NlcnRpb24pID0+IHtcbiAgICBjb25zdCBhc3NlcnRpb25KU09OID0gYXNzZXJ0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OKHJlZmVyZW5jZXMpIHtcbiAgY29uc3QgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzLm1hcCgocmVmZXJlbmNlKSA9PiB7XG4gICAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICAgIHJldHVybiByZWZlcmVuY2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OKGNvbmplY3R1cmVzKSB7XG4gIGNvbnN0IGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzLm1hcCgoY29uamVjdHVyZSkgPT4ge1xuICAgIGNvbnN0IGNvbmplY3R1cmVKU09OID0gY29uamVjdHVyZS50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04oY29tYmluYXRvcnMpIHtcbiAgY29uc3QgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnMubWFwKChjb21iaW5hdG9yKSA9PiB7XG4gICAgY29uc3QgY29tYmluYXRvckpTT04gPSBjb21iaW5hdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTihhc3N1bXB0aW9ucykge1xuICBjb25zdCBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9ucy5tYXAoKGFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBhc3N1bXB0aW9uSlNPTiA9IGFzc3VtcHRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04oc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uSlNPTiA9IHN1cHBvc2l0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04oY29uc3RydWN0b3JzKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnMubWFwKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ySlNPTiA9IGNvbnN0cnVjdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04obWV0YXRoZW9yZW1zKSB7XG4gIGNvbnN0IG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXMubWFwKChtZXRhdGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IG1ldGF0aGVvcmVtSlNPTiA9IG1ldGF0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odHlwZVByZWZpeGVzKSB7XG4gIGNvbnN0IHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXMubWFwKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEpTT04gPSB0eXBlUHJlZml4LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTihwcm9wZXJ0eVJlbGF0aW9ucykge1xuICBjb25zdCBwcm9wZXJ0eVJlbGF0aW9uc0pTT04gPSBwcm9wZXJ0eVJlbGF0aW9ucy5tYXAoKHByb3BlcnR5UmVsYXRpb24pID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eVJlbGF0aW9uSlNPTiA9IHByb3BlcnR5UmVsYXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0eVJlbGF0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OKGRlY2xhcmVkVmFyaWFibGVzKSB7XG4gIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkVmFyaWFibGVzLm1hcCgoZGVjbGFyZWRWYXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVKU09OID0gZGVjbGFyZWRWYXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZXZlbEFzc3VtcHRpb25zVG9NZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04obWV0YUxldmVsQXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgbWV0YUxldmVsQXNzdW1wdGlvbnNKU09OID0gbWV0YUxldmVsQXNzdW1wdGlvbnMubWFwKChtZXRhTGV2ZWxBc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgbWV0YUxldmVsQXNzdW1wdGlvbkpTT04gPSBtZXRhTGV2ZWxBc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OKGRlY2xhcmVkTWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5mdW5jdGlvbiBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCBtZXRhVHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cbiJdLCJuYW1lcyI6WyJhcmlhYmxlVG9WYXJpYWJsZUpTT04iLCJhc3NlcnRpb25zRnJvbUpTT04iLCJhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTiIsImFzc3VtcHRpb25zRnJvbUpTT04iLCJhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OIiwiYXhpb21zRnJvbUpTT04iLCJheGlvbXNUb0F4aW9tc0pTT04iLCJjb21iaW5hdG9yc0Zyb21KU09OIiwiY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTiIsImNvbmNsdXNpb25Gcm9tSlNPTiIsImNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OIiwiY29uamVjdHVyZXNGcm9tSlNPTiIsImNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlVG9ERWNsYXJlZE1ldGF2YXJpYWJsZUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZFZhcmlhYmxlc1RvRGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImZyYW1lRnJvbUpTT04iLCJmcmFtZVRvRnJhbWVKU09OIiwiZnJhbWVzRnJvbUpTT04iLCJmcmFtZXNUb0ZyYW1lc0pTT04iLCJoeXBvdGhlc2VzRnJvbUpTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsImlkZW50aWZpZXJGcm9tSlNPTiIsImlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OIiwianVkZ2VtZW50c0Zyb21KU09OIiwianVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbnNGcm9tSlNPTiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zVG9NZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04iLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsIm1uZW1pY0NvbnRleHRUb01uZW1pY0NvbnRleHRKU09OIiwibW5lbWljQ29udGV4dHNGcm9tSlNPTiIsIm5hbWVGcm9tSlNPTiIsIm5hbWVUb05hbWVKU09OIiwibmVnYXRlZEZyb21KU09OIiwibmVnYXRlZFRvTmVnYXRlZEpTT04iLCJub21pbmFsVHlwZU5hbWVGcm9tSlNPTiIsIm5vbWluYWxUeXBlTmFtZVRvTm9taW5hbFR5cGVOYW1lSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc0Zyb21KU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwicmVmZXJlbmNlRnJvbUpTT04iLCJyZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04iLCJyZWZlcmVuY2VzRnJvbUpTT04iLCJyZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJydWxlc1RvUnVsZXNKU09OIiwic2lnbmF0dXJlRnJvbUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJzdGF0ZW1lbnRGcm9tSlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsInN0YXRlbWVudHNGcm9tSlNPTiIsInN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OIiwic3Vic3RpdHV0aW9uRnJvbVN1YnN0aXR1dGlvbkpTT04iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJ0ZXJtRnJvbUpTT04iLCJ0ZXJtVG9UZXJtSlNPTiIsInRlcm1zRnJvbUpTT04iLCJ0ZXJtc1RvVGVybXNKU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZXNGcm9tSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJ2YXJpYWJsZXNGcm9tSlNPTiIsInZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTiIsImpzb24iLCJjb250ZXh0IiwibmFtZSIsIm5hbWVKU09OIiwidGVybSIsInRlcm1KU09OIiwiVGVybSIsImVsZW1lbnRzIiwiZnJvbUpTT04iLCJ0eXBlIiwic3RyaW5nIiwiZmluZFR5cGVCeU5hbWUiLCJsYWJlbCIsIkxhYmVsIiwibGFiZWxKU09OIiwiZnJhbWUiLCJmcmFtZUpTT04iLCJGcmFtZSIsIm5lZ2F0ZWQiLCJtZXRhVHlwZSIsImZpbmRNZXRhVHlwZUJ5TmFtZSIsInN0YXRlbWVudCIsIlN0YXRlbWVudCIsInN0YXRlbWVudEpTT04iLCJkZWR1Y3Rpb24iLCJEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25KU09OIiwic2lnbmF0dXJlIiwiU2lnbmF0dXJlIiwic2lnbmF0dXJlSlNPTiIsInJlZmVyZW5jZSIsIlJlZmVyZW5jZSIsInJlZmVyZW5jZUpTT04iLCJpZGVudGlmaWVyIiwiaWRlbnRpZmllckpTT04iLCJjb25jbHVzaW9uIiwiQ29uY2x1c2lvbiIsImNvbmNsdXNpb25KU09OIiwicHJvdmlzaW9uYWwiLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsIm5vbWluYWxUeXBlTmFtZSIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJmcmFtZXMiLCJmcmFtZXNKU09OIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwidmFyaWFibGVzIiwiVmFyaWFibGUiLCJ2YXJpYWJsZXNKU09OIiwidmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJlcXVhbGl0aWVzIiwiRXF1YWxpdHkiLCJlcXVhbGl0aWVzSlNPTiIsImVxdWFsaXR5SlNPTiIsImVxdWFsaXR5IiwicHJvcGVydGllcyIsIlByb3BlcnR5IiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eUpTT04iLCJwcm9wZXJ0eSIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZUpTT04iLCJzdXBlclR5cGUiLCJoeXBvdGhlc2VzIiwiSHlwb3RoZXNpcyIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNpc0pTT04iLCJoeXBvdGhlc2lzIiwicGFyYW1ldGVycyIsIlBhcmFtZXRlciIsInBhcmFtZXRlcnNKU09OIiwicGFyYW1ldGVySlNPTiIsInBhcmFtZXRlciIsImp1ZGdlbWVudHMiLCJKdWRnZW1lbnQiLCJqdWRnZW1lbnRzSlNPTiIsImp1ZGdlbWVudEpTT04iLCJqdWRnZW1lbnQiLCJzdGF0ZW1lbnRzIiwic3RhdGVtZW50c0pTT04iLCJhc3NlcnRpb25zIiwiVHlwZUFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsIlN1YnByb29mQXNzZXJ0aW9uIiwiU2F0aXNmaWVzQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiYXNzZXJ0aW9uc0pTT04iLCJhc3NlcnRpb25KU09OIiwiYXNzZXJ0aW9uIiwicmVmZXJlbmNlcyIsInJlZmVyZW5jZXNKU09OIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiYXNzdW1wdGlvbnMiLCJBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbkpTT04iLCJhc3N1bXB0aW9uIiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsIm1ldGF0aGVvcmVtcyIsIk1ldGF0aGVvcmVtIiwibWV0YXRoZW9yZW1zSlNPTiIsIm1ldGF0aGVvcmVtSlNPTiIsIm1ldGF0aGVvcmVtIiwic3VwcG9zaXRpb25zIiwiU3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25KU09OIiwic3VwcG9zaXRpb24iLCJzdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9uc0pTT04iLCJzdWJzdGl0dXRpb25KU09OIiwic3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXNKU09OIiwicmVsZWFzZUNvbnRleHQiLCJjb250ZXh0cyIsImNvbnRleHRzSlNPTiIsIm1uZW1pY0NvbnRleHRzIiwiY29udGV4dEpTT04iLCJtbmVtaWNDb250ZXh0IiwiTW5lbWljQ29udGV4dCIsImRlY2xhcmVkVmFyaWFibGVzIiwiZGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVjbGFyZWRWYXJpYWJsZUpTT04iLCJkZWNsYXJlZFZhcmlhYmxlIiwicHJvcGVydHlSZWxhdGlvbnMiLCJQcm9wZXJ0eVJlbGF0aW9uIiwicHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbkpTT04iLCJwcm9wZXJ0eVJlbGF0aW9uIiwibWV0YUxldmVsQXNzdW1wdGlvbnMiLCJNZXRhTGV2ZWxBc3N1bXB0aW9uIiwibWV0YUxldmVsQXNzdW1wdGlvbnNKU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbkpTT04iLCJtZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwidG9KU09OIiwibmVnYXRlZEpTT04iLCJhcmlhYmxlIiwiYXJpYWJsZUpTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJub21pbmFsVHlwZU5hbWVKU09OIiwibW5lbWljQ29udGV4dEpTT04iLCJUZXJtU3Vic3RpdHV0aW9uIiwiRnJhbWVTdWJzdGl0dXRpb24iLCJTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJSZWZlcmVuY2VTdWJzdGl0dXRpb24iLCJ0eXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF3eEJnQkE7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
|
|
1083
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBuYW1lIH0gPSBqc29uO1xuXG4gIGNvbnN0IG5hbWVKU09OID0gbmFtZTsgIC8vL1xuXG4gIG5hbWUgPSBuYW1lSlNPTjsgIC8vL1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybSB9ID0ganNvbjtcblxuICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gICAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzO1xuXG4gICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gdHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZSB9ID0ganNvbjtcblxuICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZTsgIC8vL1xuXG4gICAganNvbiA9IGZyYW1lSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHM7XG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBuZWdhdGVkIH0gPSBqc29uO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWR1Y3Rpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBEZWR1Y3Rpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uOyAgLy8vXG5cbiAganNvbiA9IGRlZHVjdGlvbkpTT047ICAvLy9cblxuICBkZWR1Y3Rpb24gPSBEZWR1Y3Rpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIGpzb24gPSBzaWduYXR1cmVKU09OOyAvLy9cblxuICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2U7ICAvLy9cblxuICBqc29uID0gcmVmZXJlbmNlSlNPTjsgLy8vXG5cbiAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBpZGVudGlmaWVyIH0gPSBqc29uO1xuXG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIGlkZW50aWZpZXIgPSBpZGVudGlmaWVySlNPTjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHByb3Zpc2lvbmFsIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcm92aXNpb25hbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgKHsgY29udGV4dCB9ID0ganNvbik7XG5cbiAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgbW5lbWljQ29udGV4dCA9IE1uZW1pY0NvbnRleHQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVDYWxsID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsOyAgLy8vXG5cbiAgICBqc29uID0gcHJvY2VkdXJlQ2FsbEpTT047IC8vL1xuXG4gICAgcHJvY2VkdXJlQ2FsbCA9IFByb2NlZHVyZUNhbGwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbWluYWxUeXBlTmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBub21pbmFsVHlwZU5hbWUgfSA9IGpzb247XG5cbiAgcmV0dXJuIG5vbWluYWxUeXBlTmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OOyAgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGZyYW1lcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEZyYW1lIH0gPSBlbGVtZW50cyxcbiAgICBmcmFtZXNKU09OID0gZnJhbWVzOyAvLy9cblxuICBmcmFtZXMgPSBmcmFtZXNKU09OLm1hcCgoZnJhbWVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGZyYW1lSlNPTiwgIC8vL1xuICAgICAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVscyB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gIGxhYmVscyA9IGxhYmVsc0pTT04ubWFwKChsYWJlbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBeGlvbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXM7IC8vL1xuXG4gIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXhpb21KU09OLCAgLy8vXG4gICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlczsgIC8vL1xuXG4gIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLm1hcCgocHJlbWlzZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJlbWlzZUpTT04sIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBQcmVtaXNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzOyAvLy9cblxuICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNKU09OLm1hcCgodmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBlcXVhbGl0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBlcXVhbGl0aWVzSlNPTiA9IGVxdWFsaXRpZXM7IC8vL1xuXG4gIGVxdWFsaXRpZXMgPSBlcXVhbGl0aWVzSlNPTi5tYXAoKGVxdWFsaXR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBlcXVhbGl0eUpTT04sICAvLy9cbiAgICAgICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9wZXJ0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllczsgLy8vXG5cbiAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNKU09OLm1hcCgocHJvcGVydHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5SlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5ID0gUHJvcGVydHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBzdXBlclR5cGVzOiBzdXBlclR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04ubWFwKChzdXBlclR5cGVKU09OKSA9PiB7XG4gICAgICAgICAgY29uc3QganNvbiA9IHN1cGVyVHlwZUpTT04sICAvLy9cbiAgICAgICAgICAgICAgICB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgICBuYW1lID0gc3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgIHN1cGVyVHlwZSA9IHR5cGU7IC8vL1xuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBoeXBvdGhlc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSHlwb3RoZXNpcyB9ID0gZWxlbWVudHMsXG4gICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlczsgIC8vL1xuXG4gIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTi5tYXAoKGh5cG90aGVzaXNKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGh5cG90aGVzaXNKU09OLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzID0gSHlwb3RoZXNpcy5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHBhcmFtZXRlcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnM7IC8vL1xuXG4gIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzSlNPTi5tYXAoKHBhcmFtZXRlckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcGFyYW1ldGVySlNPTiwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlciA9IFBhcmFtZXRlci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsganVkZ2VtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IEp1ZGdlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50czsgLy8vXG5cbiAganVkZ2VtZW50cyA9IGp1ZGdlbWVudHNKU09OLm1hcCgoanVkZ2VtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBqdWRnZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzOyAvLy9cblxuICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0pTT04ubWFwKChzdGF0ZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc2VydGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIFNhdGlzZmllc0Fzc2VydGlvbiwgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIERlZmluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU2F0aXNmaWVzQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlczsgLy8vXG5cbiAgcmVmZXJlbmNlcyA9IHJlZmVyZW5jZXNKU09OLm1hcCgocmVmZXJlbmNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSByZWZlcmVuY2VKU09OLCAgLy8vXG4gICAgICAgICAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uamVjdHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25qZWN0dXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXM7IC8vL1xuXG4gIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLm1hcCgoY29uamVjdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29tYmluYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb21iaW5hdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnM7IC8vL1xuXG4gIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLm1hcCgoY29tYmluYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzdW1wdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9uczsgLy8vXG5cbiAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT04ubWFwKChhc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb24gPSBBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXM7IC8vL1xuXG4gIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04ubWFwKCh0eXBlUHJlZml4SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlUHJlZml4SlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXggPSBUeXBlUHJlZml4LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICBjb25zdCB7IGNvbnRleHRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzID0gY29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7XG4gICAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICAgIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7ICAvLy9cbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlY2xhcmVkVmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlc0pTT04ubWFwKChkZWNsYXJlZFZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZFZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnR5UmVsYXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHlSZWxhdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnR5UmVsYXRpb25zSlNPTiA9IHByb3BlcnR5UmVsYXRpb25zOyAvLy9cblxuICBwcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zSlNPTi5tYXAoKHByb3BlcnR5UmVsYXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5UmVsYXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbiA9IFByb3BlcnR5UmVsYXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxldmVsQXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFMZXZlbEFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YUxldmVsQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiA9IG1ldGFMZXZlbEFzc3VtcHRpb25zOyAvLy9cblxuICBtZXRhTGV2ZWxBc3N1bXB0aW9ucyA9IG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTi5tYXAoKG1ldGFMZXZlbEFzc3VtcHRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGFMZXZlbEFzc3VtcHRpb25KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvbiA9IE1ldGFMZXZlbEFzc3VtcHRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzOyAvLy9cblxuICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZVRvTmFtZUpTT04obmFtZSkge1xuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICByZXR1cm4gbmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtVG9UZXJtSlNPTih0ZXJtKSB7XG4gIGNvbnN0IHRlcm1KU09OID0gKHRlcm0gIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHRlcm0udG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0ZXJtSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb1R5cGVKU09OKHR5cGUpIHtcbiAgY29uc3QgdHlwZUpTT04gPSAodHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgdHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVUb0ZyYW1lSlNPTihmcmFtZSkge1xuICBjb25zdCBmcmFtZUpTT04gPSAoZnJhbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICBmcmFtZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBmcmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGVkVG9OZWdhdGVkSlNPTihuZWdhdGVkKSB7XG4gIGNvbnN0IG5lZ2F0ZWRKU09OID0gbmVnYXRlZDsgIC8vL1xuXG4gIHJldHVybiBuZWdhdGVkSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyaWFibGVUb1ZhcmlhYmxlSlNPTihhcmlhYmxlKSB7XG4gIGNvbnN0IGFyaWFibGVKU09OID0gYXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gYXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKG1ldGFUeXBlKSB7XG4gIGNvbnN0IG1ldGFUeXBlSlNPTiA9IChtZXRhVHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFUeXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTihyZWZlcmVuY2UpIHtcbiAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IChzdGF0ZW1lbnQgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyVG9JZGVudGlmaWVySlNPTihpZGVudGlmaWVyKSB7XG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVySlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04ocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW9uYWxKU09OID0gcHJvdmlzaW9uYWw7ICAvLy9cblxuICByZXR1cm4gcHJvdmlzaW9uYWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFRvUHJvY2VkdXJlQ2FsbEpTT04ocHJvY2VkdXJlQ2FsbCkge1xuICBjb25zdCBwcm9jZWR1cmVDYWxsSlNPTiA9IChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZWR1cmVDYWxsLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub21pbmFsVHlwZU5hbWVUb05vbWluYWxUeXBlTmFtZUpTT04obm9taW5hbFR5cGVOYW1lKSB7XG4gIGNvbnN0IG5vbWluYWxUeXBlTmFtZUpTT04gPSBub21pbmFsVHlwZU5hbWU7ICAvLy9cblxuICByZXR1cm4gbm9taW5hbFR5cGVOYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRUb01uZW1pY0NvbnRleHRKU09OKG1uZW1pY0NvbnRleHQpIHtcbiAgY29uc3QgbW5lbWljQ29udGV4dEpTT04gPSBtbmVtaWNDb250ZXh0LnRvSlNPTigpO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZVRvUHJvY2VkdXJlUmVmZXJlbmNlSlNPTihwcm9jZWR1cmVSZWZlcmVuY2UpIHtcbiAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkTWV0YXZhcmlhYmxlVG9ERWNsYXJlZE1ldGF2YXJpYWJsZUpTT04oZGVjbGFyZWRNZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbkZyb21TdWJzdGl0dXRpb25KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBUZXJtU3Vic3RpdHV0aW9uLCBGcmFtZVN1YnN0aXR1dGlvbiwgU3RhdGVtZW50U3Vic3RpdHV0aW9uLCBSZWZlcmVuY2VTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBUZXJtU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIEZyYW1lU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFN0YXRlbWVudFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2VTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zVG9UZXJtc0pTT04odGVybXMpIHtcbiAgY29uc3QgdGVybXNKU09OID0gdGVybXMubWFwKCh0ZXJtKSA9PiB7XG4gICAgY29uc3QgdGVybUpTT04gPSB0ZXJtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRlcm1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGVybXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNUb1R5cGVzSlNPTih0eXBlcykge1xuICBjb25zdCB0eXBlc0pTT04gPSB0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc1RvUnVsZXNKU09OKHJ1bGVzKSB7XG4gIGNvbnN0IHJ1bGVzSlNPTiA9IHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgIGNvbnN0IHJ1bGVKU09OID0gcnVsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBydWxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1RvTGFiZWxzSlNPTihsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbGFiZWxKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lc1RvRnJhbWVzSlNPTihmcmFtZXMpIHtcbiAgY29uc3QgZnJhbWVzSlNPTiA9IGZyYW1lcy5tYXAoKGZyYW1lKSA9PiB7XG4gICAgY29uc3QgZnJhbWVKU09OID0gZnJhbWUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZnJhbWVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZnJhbWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc1RvQXhpb21zSlNPTihheGlvbXMpIHtcbiAgY29uc3QgYXhpb21zSlNPTiA9IGF4aW9tcy5tYXAoKGF4aW9tKSA9PiB7XG4gICAgY29uc3QgYXhpb21KU09OID0gYXhpb20udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXhpb21KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzVG9QcmVtaXNlc0pTT04ocHJlbWlzZXMpIHtcbiAgY29uc3QgcHJlbWlzZXNKU09OID0gcHJlbWlzZXMubWFwKChwcmVtaXNlKSA9PiB7XG4gICAgY29uc3QgcHJlbWlzZUpTT04gPSBwcmVtaXNlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByZW1pc2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNUb1RoZW9yZW1zSlNPTih0aGVvcmVtcykge1xuICBjb25zdCB0aGVvcmVtc0pTT04gPSB0aGVvcmVtcy5tYXAoKHRoZW9yZW0pID0+IHtcbiAgICBjb25zdCB0aGVvcmVtSlNPTiA9IHRoZW9yZW0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZXNUb1ZhcmlhYmxlc0pTT04odmFyaWFibGVzKSB7XG4gIGNvbnN0IHZhcmlhYmxlc0pTT04gPSB2YXJpYWJsZXMubWFwKCh2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IHZhcmlhYmxlSlNPTiA9IHZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTihoeXBvdGhlc2VzKSB7XG4gIGNvbnN0IGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlcy5tYXAoKGh5cG90aGVzaXMpID0+IHtcbiAgICBjb25zdCBoeXBvdGhlc2lzSlNPTiA9IGh5cG90aGVzaXMudG9KU09OKCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpc0pTT047XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHN1cGVyVHlwZXMpIHtcbiAgY29uc3Qgc3VwZXJUeXBlc0pTT04gPSBzdXBlclR5cGVzLm1hcCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgY29uc3Qgc3VwZXJUeXBlSlNPTiA9IHN1cGVyVHlwZS50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBlclR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTihwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckpTT04gPSBwYXJhbWV0ZXIudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04ocHJvcGVydGllcykge1xuICBjb25zdCBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXMubWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5SlNPTiA9IHByb3BlcnR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04oanVkZ2VtZW50cykge1xuICBjb25zdCBqdWRnZW1lbnRzSlNPTiA9IGp1ZGdlbWVudHMubWFwKChqdWRnZW1lbnQpID0+IHtcbiAgICBjb25zdCBqdWRnZW1lbnRKU09OID0ganVkZ2VtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBqdWRnZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OKGVxdWFsaXRpZXMpIHtcbiAgY29uc3QgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzLm1hcCgoZXF1YWxpdHkpID0+IHtcbiAgICBjb25zdCBlcXVhbGl0eUpTT04gPSBlcXVhbGl0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBlcXVhbGl0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpIHtcbiAgY29uc3Qgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudC50b0pTT04oKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zVG9Bc3NlcnRpb25zSlNPTihhc3NlcnRpb25zKSB7XG4gIGNvbnN0IGFzc2VydGlvbnNKU09OID0gYXNzZXJ0aW9ucy5tYXAoKGFzc2VydGlvbikgPT4ge1xuICAgIGNvbnN0IGFzc2VydGlvbkpTT04gPSBhc3NlcnRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc2VydGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc1RvUmVmZXJlbmNlc0pTT04ocmVmZXJlbmNlcykge1xuICBjb25zdCByZWZlcmVuY2VzSlNPTiA9IHJlZmVyZW5jZXMubWFwKChyZWZlcmVuY2UpID0+IHtcbiAgICBjb25zdCByZWZlcmVuY2VKU09OID0gcmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiByZWZlcmVuY2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04oY29uamVjdHVyZXMpIHtcbiAgY29uc3QgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXMubWFwKChjb25qZWN0dXJlKSA9PiB7XG4gICAgY29uc3QgY29uamVjdHVyZUpTT04gPSBjb25qZWN0dXJlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmVKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTihjb21iaW5hdG9ycykge1xuICBjb25zdCBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9ycy5tYXAoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCBjb21iaW5hdG9ySlNPTiA9IGNvbWJpbmF0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc1RvQXNzdW1wdGlvbnNKU09OKGFzc3VtcHRpb25zKSB7XG4gIGNvbnN0IGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zLm1hcCgoYXNzdW1wdGlvbikgPT4ge1xuICAgIGNvbnN0IGFzc3VtcHRpb25KU09OID0gYXNzdW1wdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTihzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9ucy5tYXAoKHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25KU09OID0gc3VwcG9zaXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTihjb25zdHJ1Y3RvcnMpIHtcbiAgY29uc3QgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9ycy5tYXAoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgY29uc3QgY29uc3RydWN0b3JKU09OID0gY29uc3RydWN0b3IudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF0aGVvcmVtc1RvTWV0YXRoZW9yZW1zSlNPTihtZXRhdGhlb3JlbXMpIHtcbiAgY29uc3QgbWV0YXRoZW9yZW1zSlNPTiA9IG1ldGF0aGVvcmVtcy5tYXAoKG1ldGF0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgbWV0YXRoZW9yZW1KU09OID0gbWV0YXRoZW9yZW0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YXRoZW9yZW1KU09OO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTih0eXBlUHJlZml4ZXMpIHtcbiAgY29uc3QgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlcy5tYXAoKHR5cGVQcmVmaXgpID0+IHtcbiAgICBjb25zdCB0eXBlUHJlZml4SlNPTiA9IHR5cGVQcmVmaXgudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeEpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc1RvU3Vic3RpdHV0aW9uc0pTT04oc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMubWFwKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25KU09OID0gc3Vic3RpdHV0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OKG1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzLm1hcCgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c1RvTW5lbWljQ29udGV4dHNKU09OKG1uZW1pY0NvbnRleHRzKSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzSlNPTiA9IG1uZW1pY0NvbnRleHRzLm1hcCgobW5lbWljQ29udGV4dCkgPT4ge1xuICAgIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICAgIHJldHVybiBtbmVtaWNDb250ZXh0SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5UmVsYXRpb25zVG9Qcm9wZXJ0eVJlbGF0aW9uc0pTT04ocHJvcGVydHlSZWxhdGlvbnMpIHtcbiAgY29uc3QgcHJvcGVydHlSZWxhdGlvbnNKU09OID0gcHJvcGVydHlSZWxhdGlvbnMubWFwKChwcm9wZXJ0eVJlbGF0aW9uKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlSZWxhdGlvbkpTT04gPSBwcm9wZXJ0eVJlbGF0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRWYXJpYWJsZXNUb0RlY2xhcmVkVmFyaWFibGVzSlNPTihkZWNsYXJlZFZhcmlhYmxlcykge1xuICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlcy5tYXAoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkVmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhTGV2ZWxBc3N1bXB0aW9uc1RvTWV0YUxldmVsQXNzdW1wdGlvbnNKU09OKG1ldGFMZXZlbEFzc3VtcHRpb25zKSB7XG4gIGNvbnN0IG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiA9IG1ldGFMZXZlbEFzc3VtcHRpb25zLm1hcCgobWV0YUxldmVsQXNzdW1wdGlvbikgPT4ge1xuICAgIGNvbnN0IG1ldGFMZXZlbEFzc3VtcHRpb25KU09OID0gbWV0YUxldmVsQXNzdW1wdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhTGV2ZWxBc3N1bXB0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkTWV0YXZhcmlhYmxlc1RvRGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTihkZWNsYXJlZE1ldGF2YXJpYWJsZXMpIHtcbiAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlcy5tYXAoKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZnVuY3Rpb24gZmluZFR5cGVCeU5hbWUobmFtZSwgY29udGV4dCkge1xuICBjb25zdCB0eXBlTmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZnVuY3Rpb24gZmluZE1ldGFUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpIHtcbiAgY29uc3QgbWV0YVR5cGVOYW1lID0gbmFtZSwgIC8vL1xuICAgICAgICBtZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG4iXSwibmFtZXMiOlsiYXJpYWJsZVRvVmFyaWFibGVKU09OIiwiYXNzZXJ0aW9uc0Zyb21KU09OIiwiYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04iLCJhc3N1bXB0aW9uc0Zyb21KU09OIiwiYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTiIsImF4aW9tc0Zyb21KU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwiY29tYmluYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJjb25jbHVzaW9uRnJvbUpTT04iLCJjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiIsImNvbmplY3R1cmVzRnJvbUpTT04iLCJjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OIiwiY29uc3RydWN0b3JzRnJvbUpTT04iLCJjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZVRvREVjbGFyZWRNZXRhdmFyaWFibGVKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZFZhcmlhYmxlc0Zyb21KU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNUb0RlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwiZXF1YWxpdGllc0Zyb21KU09OIiwiZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04iLCJmcmFtZUZyb21KU09OIiwiZnJhbWVUb0ZyYW1lSlNPTiIsImZyYW1lc0Zyb21KU09OIiwiZnJhbWVzVG9GcmFtZXNKU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJpZGVudGlmaWVyRnJvbUpTT04iLCJpZGVudGlmaWVyVG9JZGVudGlmaWVySlNPTiIsImp1ZGdlbWVudHNGcm9tSlNPTiIsImp1ZGdlbWVudHNUb0p1ZGdlbWVudHNKU09OIiwibGFiZWxGcm9tSlNPTiIsImxhYmVsVG9MYWJlbEpTT04iLCJsYWJlbHNGcm9tSlNPTiIsImxhYmVsc1RvTGFiZWxzSlNPTiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zRnJvbUpTT04iLCJtZXRhTGV2ZWxBc3N1bXB0aW9uc1RvTWV0YUxldmVsQXNzdW1wdGlvbnNKU09OIiwibWV0YVR5cGVGcm9tSlNPTiIsIm1ldGFUeXBlVG9NZXRhVHlwZUpTT04iLCJtZXRhdGhlb3JlbXNGcm9tSlNPTiIsIm1ldGF0aGVvcmVtc1RvTWV0YXRoZW9yZW1zSlNPTiIsIm1ldGF2YXJpYWJsZUZyb21KU09OIiwibWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OIiwibWV0YXZhcmlhYmxlc0Zyb21KU09OIiwibWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04iLCJtbmVtaWNDb250ZXh0RnJvbUpTT04iLCJtbmVtaWNDb250ZXh0VG9NbmVtaWNDb250ZXh0SlNPTiIsIm1uZW1pY0NvbnRleHRzRnJvbUpTT04iLCJtbmVtaWNDb250ZXh0c1RvTW5lbWljQ29udGV4dHNKU09OIiwibmFtZUZyb21KU09OIiwibmFtZVRvTmFtZUpTT04iLCJuZWdhdGVkRnJvbUpTT04iLCJuZWdhdGVkVG9OZWdhdGVkSlNPTiIsIm5vbWluYWxUeXBlTmFtZUZyb21KU09OIiwibm9taW5hbFR5cGVOYW1lVG9Ob21pbmFsVHlwZU5hbWVKU09OIiwicGFyYW1ldGVyc0Zyb21KU09OIiwicGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04iLCJwcmVtaXNlc0Zyb21KU09OIiwicHJlbWlzZXNUb1ByZW1pc2VzSlNPTiIsInByb2NlZHVyZUNhbGxGcm9tSlNPTiIsInByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlRnJvbUpTT04iLCJwcm9jZWR1cmVSZWZlcmVuY2VUb1Byb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJwcm9wZXJ0aWVzRnJvbUpTT04iLCJwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5UmVsYXRpb25zRnJvbUpTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc1RvUHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvdmlzaW9uYWxGcm9tSlNPTiIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJyZWZlcmVuY2VGcm9tSlNPTiIsInJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTiIsInJlZmVyZW5jZXNGcm9tSlNPTiIsInJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsInNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTiIsInN0YXRlbWVudEZyb21KU09OIiwic3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGVybXNGcm9tSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwidHlwZVRvVHlwZUpTT04iLCJ0eXBlc0Zyb21KU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInZhcmlhYmxlc0Zyb21KU09OIiwidmFyaWFibGVzVG9WYXJpYWJsZXNKU09OIiwianNvbiIsImNvbnRleHQiLCJuYW1lIiwibmFtZUpTT04iLCJ0ZXJtIiwidGVybUpTT04iLCJUZXJtIiwiZWxlbWVudHMiLCJmcm9tSlNPTiIsInR5cGUiLCJzdHJpbmciLCJmaW5kVHlwZUJ5TmFtZSIsImxhYmVsIiwiTGFiZWwiLCJsYWJlbEpTT04iLCJmcmFtZSIsImZyYW1lSlNPTiIsIkZyYW1lIiwibmVnYXRlZCIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlOYW1lIiwic3RhdGVtZW50IiwiU3RhdGVtZW50Iiwic3RhdGVtZW50SlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImlkZW50aWZpZXIiLCJpZGVudGlmaWVySlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJwcm92aXNpb25hbCIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUpTT04iLCJyZWxlYXNlQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNbmVtaWNDb250ZXh0IiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsIm5vbWluYWxUeXBlTmFtZSIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJmcmFtZXMiLCJmcmFtZXNKU09OIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwidmFyaWFibGVzIiwiVmFyaWFibGUiLCJ2YXJpYWJsZXNKU09OIiwidmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJlcXVhbGl0aWVzIiwiRXF1YWxpdHkiLCJlcXVhbGl0aWVzSlNPTiIsImVxdWFsaXR5SlNPTiIsImVxdWFsaXR5IiwicHJvcGVydGllcyIsIlByb3BlcnR5IiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eUpTT04iLCJwcm9wZXJ0eSIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZUpTT04iLCJzdXBlclR5cGUiLCJoeXBvdGhlc2VzIiwiSHlwb3RoZXNpcyIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNpc0pTT04iLCJoeXBvdGhlc2lzIiwicGFyYW1ldGVycyIsIlBhcmFtZXRlciIsInBhcmFtZXRlcnNKU09OIiwicGFyYW1ldGVySlNPTiIsInBhcmFtZXRlciIsImp1ZGdlbWVudHMiLCJKdWRnZW1lbnQiLCJqdWRnZW1lbnRzSlNPTiIsImp1ZGdlbWVudEpTT04iLCJqdWRnZW1lbnQiLCJzdGF0ZW1lbnRzIiwic3RhdGVtZW50c0pTT04iLCJhc3NlcnRpb25zIiwiVHlwZUFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsIlN1YnByb29mQXNzZXJ0aW9uIiwiU2F0aXNmaWVzQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiYXNzZXJ0aW9uc0pTT04iLCJhc3NlcnRpb25KU09OIiwiYXNzZXJ0aW9uIiwicmVmZXJlbmNlcyIsInJlZmVyZW5jZXNKU09OIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiYXNzdW1wdGlvbnMiLCJBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbkpTT04iLCJhc3N1bXB0aW9uIiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsIm1ldGF0aGVvcmVtcyIsIk1ldGF0aGVvcmVtIiwibWV0YXRoZW9yZW1zSlNPTiIsIm1ldGF0aGVvcmVtSlNPTiIsIm1ldGF0aGVvcmVtIiwic3VwcG9zaXRpb25zIiwiU3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25KU09OIiwic3VwcG9zaXRpb24iLCJzdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9uc0pTT04iLCJzdWJzdGl0dXRpb25KU09OIiwic3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXNKU09OIiwiY29udGV4dHMiLCJtbmVtaWNDb250ZXh0cyIsImRlY2xhcmVkVmFyaWFibGVzIiwiZGVjbGFyZWRWYXJpYWJsZXNKU09OIiwiZGVjbGFyZWRWYXJpYWJsZUpTT04iLCJkZWNsYXJlZFZhcmlhYmxlIiwicHJvcGVydHlSZWxhdGlvbnMiLCJQcm9wZXJ0eVJlbGF0aW9uIiwicHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbkpTT04iLCJwcm9wZXJ0eVJlbGF0aW9uIiwibWV0YUxldmVsQXNzdW1wdGlvbnMiLCJNZXRhTGV2ZWxBc3N1bXB0aW9uIiwibWV0YUxldmVsQXNzdW1wdGlvbnNKU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbkpTT04iLCJtZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwidG9KU09OIiwibmVnYXRlZEpTT04iLCJhcmlhYmxlIiwiYXJpYWJsZUpTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJub21pbmFsVHlwZU5hbWVKU09OIiwibW5lbWljQ29udGV4dEpTT04iLCJUZXJtU3Vic3RpdHV0aW9uIiwiRnJhbWVTdWJzdGl0dXRpb24iLCJTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJSZWZlcmVuY2VTdWJzdGl0dXRpb24iLCJtbmVtaWNDb250ZXh0c0pTT04iLCJ0eXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsIm1ldGFUeXBlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFpeUJnQkE7ZUFBQUE7O1FBbFRBQztlQUFBQTs7UUE4akJBQztlQUFBQTs7UUF6ZkFDO2VBQUFBOztRQWlpQkFDO2VBQUFBOztRQXR4QkFDO2VBQUFBOztRQWdvQkFDO2VBQUFBOztRQTNaQUM7ZUFBQUE7O1FBdWlCQUM7ZUFBQUE7O1FBejZCQUM7ZUFBQUE7O1FBK3FCQUM7ZUFBQUE7O1FBN1RBQztlQUFBQTs7UUE2aUJBQztlQUFBQTs7UUE3ZUFDO2VBQUFBOztRQXFoQkFDO2VBQUFBOztRQTVPQUM7ZUFBQUE7O1FBdkpBQztlQUFBQTs7UUE2ZEFDO2VBQUFBOztRQTlnQkFDO2VBQUFBOztRQTBmQUM7ZUFBQUE7O1FBaGtDQUM7ZUFBQUE7O1FBOHNCQUM7ZUFBQUE7O1FBOWJBQztlQUFBQTs7UUEwcEJBQztlQUFBQTs7UUE5OUJBQztlQUFBQTs7UUFrdEJBQztlQUFBQTs7UUE5ZUFDO2VBQUFBOztRQXNwQkFDO2VBQUFBOztRQXRnQkFDO2VBQUFBOztRQXdqQkFDO2VBQUFBOztRQS8wQkFDO2VBQUFBOztRQW1yQkFDO2VBQUFBOztRQTVYQUM7ZUFBQUE7O1FBZ2tCQUM7ZUFB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
|
|
@@ -83,16 +83,16 @@ function validateStatementAsMetavariable(statement, context) {
|
|
|
83
83
|
const strict = true; ///
|
|
84
84
|
metavariable = metavariable.validate(strict, context);
|
|
85
85
|
if (metavariable !== null) {
|
|
86
|
-
statementValidatesAsMetavariable = true;
|
|
87
86
|
const { TermSubstitution, FrameSubstitution } = _elements.default;
|
|
88
87
|
let substitution;
|
|
89
|
-
const termSubstitution = TermSubstitution.fromStatement(statement,
|
|
88
|
+
const generalContext = context, specificContext = context, termSubstitution = TermSubstitution.fromStatement(statement, generalContext, specificContext), frameSubstitution = FrameSubstitution.fromStatement(statement, generalContext, specificContext);
|
|
90
89
|
substitution = termSubstitution || frameSubstitution;
|
|
91
|
-
if (substitution
|
|
92
|
-
|
|
90
|
+
if (substitution === null) {
|
|
91
|
+
statementValidatesAsMetavariable = true;
|
|
92
|
+
} else {
|
|
93
93
|
substitution = substitution.validate(generalContext, specificContext); ///
|
|
94
|
-
if (substitution
|
|
95
|
-
statementValidatesAsMetavariable =
|
|
94
|
+
if (substitution !== null) {
|
|
95
|
+
statementValidatesAsMetavariable = true;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
}
|
|
@@ -286,4 +286,4 @@ const validateStatements = [
|
|
|
286
286
|
validateStatementAsSatisfiesAssertion
|
|
287
287
|
];
|
|
288
288
|
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBjaG9vc2UsIGRlc2NlbmQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBicmFja2V0ZWRDb25zdHJ1Y3RvckZyb21Ob3RoaW5nLCBicmFja2V0ZWRDb21iaW5hdG9yRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2luc3RhbmNlXCI7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVGVybUFzVmFyaWFibGUodGVybSwgY29udGV4dCwgdmFsaWRhdGVGb3J3YXJkcykge1xuICBsZXQgdGVybVZhbGlkYXRlc0FzVmFyaWFibGUgPSBmYWxzZTtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cztcblxuICBsZXQgdmFyaWFibGU7XG5cbiAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICBpZiAodmFyaWFibGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgIHZhcmlhYmxlID0gdmFyaWFibGUudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICBpZiAodmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgU2V0dGluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0ncyB0eXBlIHRvIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcblxuICAgICAgdGVybS5zZXRUeXBlKHR5cGUpO1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZXNGb3J3YXJkcyA9IHZhbGlkYXRlRm9yd2FyZHModGVybSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNGb3J3YXJkcykge1xuICAgICAgICB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpIHtcbiAgbGV0IHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKCk7XG5cbiAgY29uc3RydWN0b3JzLnNvbWUoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgbGV0IHRlcm1VbmlmaWVzO1xuXG4gICAgY2hvb3NlKChjb250ZXh0KSA9PiB7XG4gICAgICB0ZXJtVW5pZmllcyA9IGNvbnN0cnVjdG9yLnVuaWZ5VGVybSh0ZXJtLCBjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKTtcblxuICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycyA9IHRydWU7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycztcbn1cblxuZnVuY3Rpb24gdW5pZnlUZXJtV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpIHtcbiAgbGV0IHRlcm1VbmlmaWVzV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IGJyYWNrZXRlZENvbnN0cnVjdG9yID0gYnJhY2tldGVkQ29uc3RydWN0b3JGcm9tTm90aGluZygpO1xuXG4gIHRlcm1VbmlmaWVzV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yID0gYnJhY2tldGVkQ29uc3RydWN0b3IudW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpO1xuXG4gIHJldHVybiB0ZXJtVW5pZmllc1dpdGhCcmFja2V0ZWRDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc01ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlID0gZmFsc2U7XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzO1xuXG4gIGxldCBtZXRhdmFyaWFibGU7XG5cbiAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCBzdHJpY3QgPSB0cnVlOyAgLy8vXG5cbiAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGUudmFsaWRhdGUoc3RyaWN0LCBjb250ZXh0KTtcblxuICAgIGlmIChtZXRhdmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlID0gdHJ1ZTtcblxuICAgICAgY29uc3QgeyBUZXJtU3Vic3RpdHV0aW9uLCBGcmFtZVN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHM7XG5cbiAgICAgIGxldCBzdWJzdGl0dXRpb247XG5cbiAgICAgIGNvbnN0IHRlcm1TdWJzdGl0dXRpb24gPSBUZXJtU3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSxcbiAgICAgICAgICAgIGZyYW1lU3Vic3RpdHV0aW9uID0gRnJhbWVTdWJzdGl0dXRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICBzdWJzdGl0dXRpb24gPSAodGVybVN1YnN0aXR1dGlvbiB8fCBmcmFtZVN1YnN0aXR1dGlvbik7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZ2VuZXJhbENvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbi52YWxpZGF0ZShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTsgIC8vL1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb24gPT09IG51bGwpIHtcbiAgICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIG1ldGF2YXJpYWJsZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzQXNNZXRhdmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JzKHN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9ycyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbWJpbmF0b3JzID0gY29udGV4dC5nZXRDb21iaW5hdG9ycygpO1xuXG4gIGNvbWJpbmF0b3JzLnNvbWUoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllcztcblxuICAgIGRlc2NlbmQoKGNvbnRleHQpID0+IHtcbiAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSBjb21iaW5hdG9yLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9ycyA9IHRydWU7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aEJyYWNrZXRlZENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRVbmlmaWVzV2l0aEJyYWNrZXRlZENvbWJpbmF0b3I7XG5cbiAgY29uc3QgYnJhY2tldGVkQ29tYmluYXRvciA9IGJyYWNrZXRlZENvbWJpbmF0b3JGcm9tTm90aGluZygpO1xuXG4gIHN0YXRlbWVudFVuaWZpZXNXaXRoQnJhY2tldGVkQ29tYmluYXRvciA9IGJyYWNrZXRlZENvbWJpbmF0b3IudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllc1dpdGhCcmFja2V0ZWRDb21iaW5hdG9yO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzRXF1YWxpdHkoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXNBc0VxdWFsaXR5ID0gZmFsc2U7XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHM7XG5cbiAgbGV0IGVxdWFsaXR5O1xuXG4gIGVxdWFsaXR5ID0gRXF1YWxpdHkuZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS4uLmApO1xuXG4gICAgZXF1YWxpdHkgPSBlcXVhbGl0eS52YWxpZGF0ZShjb250ZXh0KTsgIC8vL1xuXG4gICAgaWYgKGVxdWFsaXR5ICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXNBc0VxdWFsaXR5ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzQXNFcXVhbGl0eSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNKdWRnZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGxldCB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0p1ZGdlbWVudCA9IGZhbHNlO1xuXG4gIGxldCBqdWRnZW1lbnQ7XG5cbiAgY29uc3QgeyBKdWRnZW1lbnQgfSA9IGVsZW1lbnRzO1xuXG4gIGp1ZGdlbWVudCA9IEp1ZGdlbWVudC5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKGp1ZGdlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGp1ZGdlbWVudC4uLmApO1xuXG4gICAganVkZ2VtZW50ID0ganVkZ2VtZW50LnZhbGlkYXRlKGNvbnRleHQpOyAgLy8vXG5cbiAgICBpZiAoanVkZ2VtZW50ICE9PSBudWxsKSB7XG4gICAgICB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0p1ZGdlbWVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlc1N0YXRlbWVudEFzSnVkZ2VtZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGp1ZGdlbWVudC5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzU3RhdGVtZW50QXNKdWRnZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgdmFsaWRhdGVzU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgeyBUeXBlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cztcblxuICBsZXQgdHlwZUFzc2VydGlvbjtcblxuICB0eXBlQXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb24udmFsaWRhdGUoY29udGV4dCk7ICAvLy9cblxuICAgIGlmICh0eXBlQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICB2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlc1N0YXRlbWVudEFzVHlwZUFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24oc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGxldCB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB7IERlZmluZWRBc3NlcnRpb24gfSA9IGVsZW1lbnRzO1xuXG4gIGxldCBkZWZpbmVkQXNzZXJ0aW9uO1xuXG4gIGRlZmluZWRBc3NlcnRpb24gPSBEZWZpbmVkQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoZGVmaW5lZEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBkZWZpbmVkQXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvbi52YWxpZGF0ZShjb250ZXh0KTsgIC8vL1xuXG4gICAgaWYgKGRlZmluZWRBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIHZhbGlkYXRlc1N0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlc1N0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzUHJvcGVydHlBc3NlcnRpb24oc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXNBc1Byb3BlcnR5QXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgeyBQcm9wZXJ0eUFzc2VydGlvbiB9ID0gZWxlbWVudHM7XG5cbiAgbGV0IHByb3BlcnR5QXNzZXJ0aW9uO1xuXG4gIHByb3BlcnR5QXNzZXJ0aW9uID0gUHJvcGVydHlBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChwcm9wZXJ0eUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHByb3BlcnR5IGFzc2VydGlvbi4uLmApO1xuXG4gICAgcHJvcGVydHlBc3NlcnRpb24gPSBwcm9wZXJ0eUFzc2VydGlvbi52YWxpZGF0ZShjb250ZXh0KTsgIC8vL1xuXG4gICAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXNBc1Byb3BlcnR5QXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzQXNQcm9wZXJ0eUFzc2VydGlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBwcm9wZXJ0eSBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlc0FzUHJvcGVydHlBc3NlcnRpb247XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNTdWJwcm9vZkFzc2VydGlvbihzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZhbGlkYXRlc0FzU3VicHJvb2ZBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB7IFN1YnByb29mQXNzZXJ0aW9uIH0gPSBlbGVtZW50cztcblxuICBsZXQgc3VicHJvb2ZBc3NlcnRpb247XG5cbiAgc3VicHJvb2ZBc3NlcnRpb24gPSBTdWJwcm9vZkFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHN1YnByb29mQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgc3VicHJvb2YgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBzdWJwcm9vZkFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uLnZhbGlkYXRlKGNvbnRleHQpOyAgLy8vXG5cbiAgICBpZiAoc3VicHJvb2ZBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzU3VicHJvb2ZBc3NlcnRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXNBc1N1YnByb29mQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzQXNTdWJwcm9vZkFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbihzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHZhbGlkYXRlc1N0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgeyBDb250YWluZWRBc3NlcnRpb24gfSA9IGVsZW1lbnRzO1xuXG4gIGxldCBjb250YWluZWRBc3NlcnRpb247XG5cbiAgY29udGFpbmVkQXNzZXJ0aW9uID0gQ29udGFpbmVkQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoY29udGFpbmVkQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uLnZhbGlkYXRlKGNvbnRleHQpOyAgLy8vXG5cbiAgICBpZiAoY29udGFpbmVkQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlc1N0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlc1N0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzU2F0aXNmaWVzQXNzZXJ0aW9uKHN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgdmFsaWRhdGVzQVN0YXRlbWVudHNTYXRpc2ZpZXNBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB7IFNhdGlzZmllc0Fzc2VydGlvbiB9ID0gZWxlbWVudHM7XG5cbiAgbGV0IHNhdGlzZmllc0Fzc2VydGlvbjtcblxuICBzYXRpc2ZpZXNBc3NlcnRpb24gPSBTYXRpc2ZpZXNBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChzYXRpc2ZpZXNBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzYXRpc2ZpZXMgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBzYXRpc2ZpZXNBc3NlcnRpb24gPSBzYXRpc2ZpZXNBc3NlcnRpb24udmFsaWRhdGUoY29udGV4dCk7ICAvLy9cblxuICAgIGlmIChzYXRpc2ZpZXNBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIHZhbGlkYXRlc0FTdGF0ZW1lbnRzU2F0aXNmaWVzQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzQVN0YXRlbWVudHNTYXRpc2ZpZXNBc3NlcnRpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgc2F0aXNmaWVzIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzQVN0YXRlbWVudHNTYXRpc2ZpZXNBc3NlcnRpb247XG59XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVRlcm1zID0gW1xuICB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLFxuICB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzLFxuICB1bmlmeVRlcm1XaXRoQnJhY2tldGVkQ29uc3RydWN0b3Jcbl07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudHMgPSBbXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNNZXRhdmFyaWFibGUsXG4gIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JzLFxuICB1bmlmeVN0YXRlbWVudFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzRXF1YWxpdHksXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNKdWRnZW1lbnQsXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzU3VicHJvb2ZBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNTYXRpc2ZpZXNBc3NlcnRpb25cbl07XG4iXSwibmFtZXMiOlsidmFsaWRhdGVTdGF0ZW1lbnRzIiwidmFsaWRhdGVUZXJtcyIsInZhbGlkYXRlVGVybUFzVmFyaWFibGUiLCJ0ZXJtIiwiY29udGV4dCIsInZhbGlkYXRlRm9yd2FyZHMiLCJ0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSIsIlZhcmlhYmxlIiwiZWxlbWVudHMiLCJ2YXJpYWJsZSIsImZyb21UZXJtIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWRhdGUiLCJ0eXBlIiwiZ2V0VHlwZSIsInR5cGVTdHJpbmciLCJzZXRUeXBlIiwidmFsaWRhdGVzRm9yd2FyZHMiLCJkZWJ1ZyIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvcnMiLCJ0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJzb21lIiwiY29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllcyIsImNob29zZSIsInVuaWZ5VGVybSIsImNvbW1pdCIsInVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVzV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yIiwiYnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRDb25zdHJ1Y3RvckZyb21Ob3RoaW5nIiwidmFsaWRhdGVTdGF0ZW1lbnRBc01ldGF2YXJpYWJsZSIsInN0YXRlbWVudCIsInN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlIiwiTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsInN0cmljdCIsIlRlcm1TdWJzdGl0dXRpb24iLCJGcmFtZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbiIsInRlcm1TdWJzdGl0dXRpb24iLCJmcmFtZVN1YnN0aXR1dGlvbiIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcnMiLCJzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3JzIiwiY29tYmluYXRvcnMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRVbmlmaWVzIiwiZGVzY2VuZCIsInVuaWZ5U3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnRXaXRoQnJhY2tldGVkQ29tYmluYXRvciIsInN0YXRlbWVudFVuaWZpZXNXaXRoQnJhY2tldGVkQ29tYmluYXRvciIsImJyYWNrZXRlZENvbWJpbmF0b3IiLCJicmFja2V0ZWRDb21iaW5hdG9yRnJvbU5vdGhpbmciLCJ2YWxpZGF0ZVN0YXRlbWVudEFzRXF1YWxpdHkiLCJzdGF0ZW1lbnRWYWxpZGF0ZXNBc0VxdWFsaXR5IiwiRXF1YWxpdHkiLCJlcXVhbGl0eSIsInZhbGlkYXRlU3RhdGVtZW50QXNKdWRnZW1lbnQiLCJ2YWxpZGF0ZXNTdGF0ZW1lbnRBc0p1ZGdlbWVudCIsImp1ZGdlbWVudCIsIkp1ZGdlbWVudCIsInZhbGlkYXRlU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uIiwidmFsaWRhdGVzU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uIiwiVHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiIsInZhbGlkYXRlc1N0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uIiwic3RhdGVtZW50VmFsaWRhdGVzQXNQcm9wZXJ0eUFzc2VydGlvbiIsIlByb3BlcnR5QXNzZXJ0aW9uIiwicHJvcGVydHlBc3NlcnRpb24iLCJ2YWxpZGF0ZVN0YXRlbWVudEFzU3VicHJvb2ZBc3NlcnRpb24iLCJzdGF0ZW1lbnRWYWxpZGF0ZXNBc1N1YnByb29mQXNzZXJ0aW9uIiwiU3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbiIsInZhbGlkYXRlU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24iLCJ2YWxpZGF0ZXNTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImNvbnRhaW5lZEFzc2VydGlvbiIsInZhbGlkYXRlU3RhdGVtZW50QXNTYXRpc2ZpZXNBc3NlcnRpb24iLCJ2YWxpZGF0ZXNBU3RhdGVtZW50c1NhdGlzZmllc0Fzc2VydGlvbiIsIlNhdGlzZmllc0Fzc2VydGlvbiIsInNhdGlzZmllc0Fzc2VydGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBMFlhQTtlQUFBQTs7UUFOQUM7ZUFBQUE7OztpRUFsWVE7eUJBRVc7MEJBQ2dEOzs7Ozs7QUFFaEYsU0FBU0MsdUJBQXVCQyxJQUFJLEVBQUVDLE9BQU8sRUFBRUMsZ0JBQWdCO0lBQzdELElBQUlDLDBCQUEwQjtJQUU5QixNQUFNLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyxpQkFBUTtJQUU3QixJQUFJQztJQUVKQSxXQUFXRixTQUFTRyxRQUFRLENBQUNQLE1BQU1DO0lBRW5DLElBQUlLLGFBQWEsTUFBTTtRQUNyQixNQUFNRSxhQUFhUixLQUFLUyxTQUFTO1FBRWpDUixRQUFRUyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsV0FBVyx1QkFBdUIsQ0FBQztRQUVwRUYsV0FBV0EsU0FBU0ssUUFBUSxDQUFDVjtRQUU3QixJQUFJSyxhQUFhLE1BQU07WUFDckIsTUFBTU0sT0FBT04sU0FBU08sT0FBTyxJQUN2QkMsYUFBYUYsS0FBS0gsU0FBUztZQUVqQ1IsUUFBUVMsS0FBSyxDQUFDLENBQUMsYUFBYSxFQUFFRixXQUFXLHNCQUFzQixFQUFFTSxXQUFXLE9BQU8sQ0FBQztZQUVwRmQsS0FBS2UsT0FBTyxDQUFDSDtZQUViLE1BQU1JLG9CQUFvQmQsaUJBQWlCRjtZQUUzQyxJQUFJZ0IsbUJBQW1CO2dCQUNyQmIsMEJBQTBCO1lBQzVCO1FBQ0Y7UUFFQSxJQUFJQSx5QkFBeUI7WUFDM0JGLFFBQVFnQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVQsV0FBVyxxQkFBcUIsQ0FBQztRQUN0RTtJQUNGO0lBRUEsT0FBT0w7QUFDVDtBQUVBLFNBQVNlLDBCQUEwQmxCLElBQUksRUFBRUMsT0FBTyxFQUFFQyxnQkFBZ0I7SUFDaEUsSUFBSWlCLDhCQUE4QjtJQUVsQyxNQUFNQyxlQUFlbkIsUUFBUW9CLGVBQWU7SUFFNUNELGFBQWFFLElBQUksQ0FBQyxDQUFDQztRQUNqQixJQUFJQztRQUVKQyxJQUFBQSxlQUFNLEVBQUMsQ0FBQ3hCO1lBQ051QixjQUFjRCxZQUFZRyxTQUFTLENBQUMxQixNQUFNQyxTQUFTQztZQUVuRCxJQUFJc0IsYUFBYTtnQkFDZnZCLFFBQVEwQixNQUFNO1lBQ2hCO1FBQ0YsR0FBRzFCO1FBRUgsSUFBSXVCLGFBQWE7WUFDZkwsOEJBQThCO1lBRTlCLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT0E7QUFDVDtBQUVBLFNBQVNTLGtDQUFrQzVCLElBQUksRUFBRUMsT0FBTyxFQUFFQyxnQkFBZ0I7SUFDeEUsSUFBSTJCO0lBRUosTUFBTUMsdUJBQXVCQyxJQUFBQSx5Q0FBK0I7SUFFNURGLHNDQUFzQ0MscUJBQXFCSixTQUFTLENBQUMxQixNQUFNQyxTQUFTQztJQUVwRixPQUFPMkI7QUFDVDtBQUVBLFNBQVNHLGdDQUFnQ0MsU0FBUyxFQUFFaEMsT0FBTztJQUN6RCxJQUFJaUMsbUNBQW1DO0lBRXZDLE1BQU0sRUFBRUMsWUFBWSxFQUFFLEdBQUc5QixpQkFBUTtJQUVqQyxJQUFJK0I7SUFFSkEsZUFBZUQsYUFBYUUsYUFBYSxDQUFDSixXQUFXaEM7SUFFckQsSUFBSW1DLGlCQUFpQixNQUFNO1FBQ3pCLE1BQU1FLGtCQUFrQkwsVUFBVXhCLFNBQVM7UUFFM0NSLFFBQVFTLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFNEIsZ0JBQWdCLGdDQUFnQyxDQUFDO1FBRWxGLE1BQU1DLFNBQVMsTUFBTyxHQUFHO1FBRXpCSCxlQUFlQSxhQUFhekIsUUFBUSxDQUFDNEIsUUFBUXRDO1FBRTdDLElBQUltQyxpQkFBaUIsTUFBTTtZQUN6QkYsbUNBQW1DO1lBRW5DLE1BQU0sRUFBRU0sZ0JBQWdCLEVBQUVDLGlCQUFpQixFQUFFLEdBQUdwQyxpQkFBUTtZQUV4RCxJQUFJcUM7WUFFSixNQUFNQyxtQkFBbUJILGlCQUFpQkgsYUFBYSxDQUFDSixXQUFXaEMsVUFDN0QyQyxvQkFBb0JILGtCQUFrQkosYUFBYSxDQUFDSixXQUFXaEM7WUFFckV5QyxlQUFnQkMsb0JBQW9CQztZQUVwQyxJQUFJRixpQkFBaUIsTUFBTTtnQkFDekIsTUFBTUcsaUJBQWlCNUMsU0FDakI2QyxrQkFBa0I3QyxTQUFVLEdBQUc7Z0JBRXJDeUMsZUFBZUEsYUFBYS9CLFFBQVEsQ0FBQ2tDLGdCQUFnQkMsa0JBQW1CLEdBQUc7Z0JBRTNFLElBQUlKLGlCQUFpQixNQUFNO29CQUN6QlIsbUNBQW1DO2dCQUNyQztZQUNGO1FBQ0Y7UUFFQSxJQUFJQSxrQ0FBa0M7WUFDcENqQyxRQUFRZ0IsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVxQixnQkFBZ0IsOEJBQThCLENBQUM7UUFDcEY7SUFDRjtJQUVBLE9BQU9KO0FBQ1Q7QUFFQSxTQUFTYSw4QkFBOEJkLFNBQVMsRUFBRWhDLE9BQU87SUFDdkQsSUFBSStDLGtDQUFrQztJQUV0QyxNQUFNQyxjQUFjaEQsUUFBUWlELGNBQWM7SUFFMUNELFlBQVkzQixJQUFJLENBQUMsQ0FBQzZCO1FBQ2hCLElBQUlDO1FBRUpDLElBQUFBLGdCQUFPLEVBQUMsQ0FBQ3BEO1lBQ1BtRCxtQkFBbUJELFdBQVdHLGNBQWMsQ0FBQ3JCLFdBQVdoQztRQUMxRCxHQUFHQTtRQUVILElBQUltRCxrQkFBa0I7WUFDcEJKLGtDQUFrQztZQUVsQyxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9BO0FBQ1Q7QUFFQSxTQUFTTyxzQ0FBc0N0QixTQUFTLEVBQUVoQyxPQUFPO0lBQy9ELElBQUl1RDtJQUVKLE1BQU1DLHNCQUFzQkMsSUFBQUEsd0NBQThCO0lBRTFERiwwQ0FBMENDLG9CQUFvQkgsY0FBYyxDQUFDckIsV0FBV2hDO0lBRXhGLE9BQU91RDtBQUNUO0FBRUEsU0FBU0csNEJBQTRCMUIsU0FBUyxFQUFFaEMsT0FBTztJQUNyRCxJQUFJMkQsK0JBQStCO0lBRW5DLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUd4RCxpQkFBUTtJQUU3QixJQUFJeUQ7SUFFSkEsV0FBV0QsU0FBU3hCLGFBQWEsQ0FBQ0osV0FBV2hDO0lBRTdDLElBQUk2RCxhQUFhLE1BQU07UUFDckIsTUFBTXhCLGtCQUFrQkwsVUFBVXhCLFNBQVM7UUFFM0NSLFFBQVFTLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFNEIsZ0JBQWdCLDZCQUE2QixDQUFDO1FBRS9Fd0IsV0FBV0EsU0FBU25ELFFBQVEsQ0FBQ1YsVUFBVyxHQUFHO1FBRTNDLElBQUk2RCxhQUFhLE1BQU07WUFDckJGLCtCQUErQjtRQUNqQztRQUVBLElBQUlBLDhCQUE4QjtZQUNoQzNELFFBQVFnQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRXFCLGdCQUFnQiwyQkFBMkIsQ0FBQztRQUNqRjtJQUNGO0lBRUEsT0FBT3NCO0FBQ1Q7QUFFQSxTQUFTRyw2QkFBNkI5QixTQUFTLEVBQUVoQyxPQUFPO0lBQ3RELElBQUkrRCxnQ0FBZ0M7SUFFcEMsSUFBSUM7SUFFSixNQUFNLEVBQUVDLFNBQVMsRUFBRSxHQUFHN0QsaUJBQVE7SUFFOUI0RCxZQUFZQyxVQUFVN0IsYUFBYSxDQUFDSixXQUFXaEM7SUFFL0MsSUFBSWdFLGNBQWMsTUFBTTtRQUN0QixNQUFNM0Isa0JBQWtCTCxVQUFVeEIsU0FBUztRQUUzQ1IsUUFBUVMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU0QixnQkFBZ0IsNkJBQTZCLENBQUM7UUFFL0UyQixZQUFZQSxVQUFVdEQsUUFBUSxDQUFDVixVQUFXLEdBQUc7UUFFN0MsSUFBSWdFLGNBQWMsTUFBTTtZQUN0QkQsZ0NBQWdDO1FBQ2xDO1FBRUEsSUFBSUEsK0JBQStCO1lBQ2pDL0QsUUFBUWdCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFcUIsZ0JBQWdCLDJCQUEyQixDQUFDO1FBQ2pGO0lBQ0Y7SUFFQSxPQUFPMEI7QUFDVDtBQUVBLFNBQVNHLGlDQUFpQ2xDLFNBQVMsRUFBRWhDLE9BQU87SUFDMUQsSUFBSW1FLG9DQUFvQztJQUV4QyxNQUFNLEVBQUVDLGFBQWEsRUFBRSxHQUFHaEUsaUJBQVE7SUFFbEMsSUFBSWlFO0lBRUpBLGdCQUFnQkQsY0FBY2hDLGFBQWEsQ0FBQ0osV0FBV2hDO0lBRXZELElBQUlxRSxrQkFBa0IsTUFBTTtRQUMxQixNQUFNaEMsa0JBQWtCTCxVQUFVeEIsU0FBUztRQUUzQ1IsUUFBUVMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU0QixnQkFBZ0Isa0NBQWtDLENBQUM7UUFFcEZnQyxnQkFBZ0JBLGNBQWMzRCxRQUFRLENBQUNWLFVBQVcsR0FBRztRQUVyRCxJQUFJcUUsa0JBQWtCLE1BQU07WUFDMUJGLG9DQUFvQztRQUN0QztRQUVBLElBQUlBLG1DQUFtQztZQUNyQ25FLFFBQVFnQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRXFCLGdCQUFnQixnQ0FBZ0MsQ0FBQztRQUN0RjtJQUNGO0lBRUEsT0FBTzhCO0FBQ1Q7QUFFQSxTQUFTRyxvQ0FBb0N0QyxTQUFTLEVBQUVoQyxPQUFPO0lBQzdELElBQUl1RSx1Q0FBdUM7SUFFM0MsTUFBTSxFQUFFQyxnQkFBZ0IsRUFBRSxHQUFHcEUsaUJBQVE7SUFFckMsSUFBSXFFO0lBRUpBLG1CQUFtQkQsaUJBQWlCcEMsYUFBYSxDQUFDSixXQUFXaEM7SUFFN0QsSUFBSXlFLHFCQUFxQixNQUFNO1FBQzdCLE1BQU1wQyxrQkFBa0JMLFVBQVV4QixTQUFTO1FBRTNDUixRQUFRUyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRTRCLGdCQUFnQixxQ0FBcUMsQ0FBQztRQUV2Rm9DLG1CQUFtQkEsaUJBQWlCL0QsUUFBUSxDQUFDVixVQUFXLEdBQUc7UUFFM0QsSUFBSXlFLHFCQUFxQixNQUFNO1lBQzdCRix1Q0FBdUM7UUFDekM7UUFFQSxJQUFJQSxzQ0FBc0M7WUFDeEN2RSxRQUFRZ0IsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVxQixnQkFBZ0IsbUNBQW1DLENBQUM7UUFDekY7SUFDRjtJQUVBLE9BQU9rQztBQUNUO0FBRUEsU0FBU0cscUNBQXFDMUMsU0FBUyxFQUFFaEMsT0FBTztJQUM5RCxJQUFJMkUsd0NBQXdDO0lBRTVDLE1BQU0sRUFBRUMsaUJBQWlCLEVBQUUsR0FBR3hFLGlCQUFRO0lBRXRDLElBQUl5RTtJQUVKQSxvQkFBb0JELGtCQUFrQnhDLGFBQWEsQ0FBQ0osV0FBV2hDO0lBRS9ELElBQUk2RSxzQkFBc0IsTUFBTTtRQUM5QixNQUFNeEMsa0JBQWtCTCxVQUFVeEIsU0FBUztRQUUzQ1IsUUFBUVMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU0QixnQkFBZ0Isc0NBQXNDLENBQUM7UUFFeEZ3QyxvQkFBb0JBLGtCQUFrQm5FLFFBQVEsQ0FBQ1YsVUFBVyxHQUFHO1FBRTdELElBQUk2RSxzQkFBc0IsTUFBTTtZQUM5QkYsd0NBQXdDO1FBQzFDO1FBRUEsSUFBSUEsdUNBQXVDO1lBQ3pDM0UsUUFBUWdCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFcUIsZ0JBQWdCLG9DQUFvQyxDQUFDO1FBQzFGO0lBQ0Y7SUFFQSxPQUFPc0M7QUFDVDtBQUVBLFNBQVNHLHFDQUFxQzlDLFNBQVMsRUFBRWhDLE9BQU87SUFDOUQsSUFBSStFLHdDQUF3QztJQUU1QyxNQUFNLEVBQUVDLGlCQUFpQixFQUFFLEdBQUc1RSxpQkFBUTtJQUV0QyxJQUFJNkU7SUFFSkEsb0JBQW9CRCxrQkFBa0I1QyxhQUFhLENBQUNKLFdBQVdoQztJQUUvRCxJQUFJaUYsc0JBQXNCLE1BQU07UUFDOUIsTUFBTTVDLGtCQUFrQkwsVUFBVXhCLFNBQVM7UUFFM0NSLFFBQVFTLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFNEIsZ0JBQWdCLHNDQUFzQyxDQUFDO1FBRXhGNEMsb0JBQW9CQSxrQkFBa0J2RSxRQUFRLENBQUNWLFVBQVcsR0FBRztRQUU3RCxJQUFJaUYsc0JBQXNCLE1BQU07WUFDOUJGLHdDQUF3QztRQUMxQztRQUVBLElBQUlBLHVDQUF1QztZQUN6Qy9FLFFBQVFnQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRXFCLGdCQUFnQixvQ0FBb0MsQ0FBQztRQUMxRjtJQUNGO0lBRUEsT0FBTzBDO0FBQ1Q7QUFFQSxTQUFTRyxzQ0FBc0NsRCxTQUFTLEVBQUVoQyxPQUFPO0lBQy9ELElBQUltRix5Q0FBeUM7SUFFN0MsTUFBTSxFQUFFQyxrQkFBa0IsRUFBRSxHQUFHaEYsaUJBQVE7SUFFdkMsSUFBSWlGO0lBRUpBLHFCQUFxQkQsbUJBQW1CaEQsYUFBYSxDQUFDSixXQUFXaEM7SUFFakUsSUFBSXFGLHVCQUF1QixNQUFNO1FBQy9CLE1BQU1oRCxrQkFBa0JMLFVBQVV4QixTQUFTO1FBRTNDUixRQUFRUyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRTRCLGdCQUFnQix1Q0FBdUMsQ0FBQztRQUV6RmdELHFCQUFxQkEsbUJBQW1CM0UsUUFBUSxDQUFDVixVQUFXLEdBQUc7UUFFL0QsSUFBSXFGLHVCQUF1QixNQUFNO1lBQy9CRix5Q0FBeUM7UUFDM0M7UUFFQSxJQUFJQSx3Q0FBd0M7WUFDMUNuRixRQUFRZ0IsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVxQixnQkFBZ0IscUNBQXFDLENBQUM7UUFDM0Y7SUFDRjtJQUVBLE9BQU84QztBQUNUO0FBRUEsU0FBU0csc0NBQXNDdEQsU0FBUyxFQUFFaEMsT0FBTztJQUMvRCxJQUFJdUYseUNBQXlDO0lBRTdDLE1BQU0sRUFBRUMsa0JBQWtCLEVBQUUsR0FBR3BGLGlCQUFRO0lBRXZDLElBQUlxRjtJQUVKQSxxQkFBcUJELG1CQUFtQnBELGFBQWEsQ0FBQ0osV0FBV2hDO0lBRWpFLElBQUl5Rix1QkFBdUIsTUFBTTtRQUMvQixNQUFNcEQsa0JBQWtCTCxVQUFVeEIsU0FBUztRQUUzQ1IsUUFBUVMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU0QixnQkFBZ0IsdUNBQXVDLENBQUM7UUFFekZvRCxxQkFBcUJBLG1CQUFtQi9FLFFBQVEsQ0FBQ1YsVUFBVyxHQUFHO1FBRS9ELElBQUl5Rix1QkFBdUIsTUFBTTtZQUMvQkYseUNBQXlDO1FBQzNDO1FBRUEsSUFBSUEsd0NBQXdDO1lBQzFDdkYsUUFBUWdCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFcUIsZ0JBQWdCLHFDQUFxQyxDQUFDO1FBQzNGO0lBQ0Y7SUFFQSxPQUFPa0Q7QUFDVDtBQUVPLE1BQU0xRixnQkFBZ0I7SUFDM0JDO0lBQ0FtQjtJQUNBVTtDQUNEO0FBRU0sTUFBTS9CLHFCQUFxQjtJQUNoQ21DO0lBQ0FlO0lBQ0FRO0lBQ0FJO0lBQ0FJO0lBQ0FJO0lBQ0FJO0lBQ0FJO0lBQ0FJO0lBQ0FJO0lBQ0FJO0NBQ0QifQ==
|
|
289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBjaG9vc2UsIGRlc2NlbmQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBicmFja2V0ZWRDb25zdHJ1Y3RvckZyb21Ob3RoaW5nLCBicmFja2V0ZWRDb21iaW5hdG9yRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2luc3RhbmNlXCI7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVGVybUFzVmFyaWFibGUodGVybSwgY29udGV4dCwgdmFsaWRhdGVGb3J3YXJkcykge1xuICBsZXQgdGVybVZhbGlkYXRlc0FzVmFyaWFibGUgPSBmYWxzZTtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cztcblxuICBsZXQgdmFyaWFibGU7XG5cbiAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICBpZiAodmFyaWFibGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgIHZhcmlhYmxlID0gdmFyaWFibGUudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICBpZiAodmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgU2V0dGluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0ncyB0eXBlIHRvIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcblxuICAgICAgdGVybS5zZXRUeXBlKHR5cGUpO1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZXNGb3J3YXJkcyA9IHZhbGlkYXRlRm9yd2FyZHModGVybSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNGb3J3YXJkcykge1xuICAgICAgICB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpIHtcbiAgbGV0IHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKCk7XG5cbiAgY29uc3RydWN0b3JzLnNvbWUoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgbGV0IHRlcm1VbmlmaWVzO1xuXG4gICAgY2hvb3NlKChjb250ZXh0KSA9PiB7XG4gICAgICB0ZXJtVW5pZmllcyA9IGNvbnN0cnVjdG9yLnVuaWZ5VGVybSh0ZXJtLCBjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKTtcblxuICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycyA9IHRydWU7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycztcbn1cblxuZnVuY3Rpb24gdW5pZnlUZXJtV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpIHtcbiAgbGV0IHRlcm1VbmlmaWVzV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xuXG4gIGNvbnN0IGJyYWNrZXRlZENvbnN0cnVjdG9yID0gYnJhY2tldGVkQ29uc3RydWN0b3JGcm9tTm90aGluZygpO1xuXG4gIHRlcm1VbmlmaWVzV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yID0gYnJhY2tldGVkQ29uc3RydWN0b3IudW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlRm9yd2FyZHMpO1xuXG4gIHJldHVybiB0ZXJtVW5pZmllc1dpdGhCcmFja2V0ZWRDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc01ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlID0gZmFsc2U7XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzO1xuXG4gIGxldCBtZXRhdmFyaWFibGU7XG5cbiAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCBzdHJpY3QgPSB0cnVlOyAgLy8vXG5cbiAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGUudmFsaWRhdGUoc3RyaWN0LCBjb250ZXh0KTtcblxuICAgIGlmIChtZXRhdmFyaWFibGUgIT09IG51bGwpIHtcblxuICAgICAgY29uc3QgeyBUZXJtU3Vic3RpdHV0aW9uLCBGcmFtZVN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHM7XG5cbiAgICAgIGxldCBzdWJzdGl0dXRpb247XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCksXG4gICAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvbiA9IEZyYW1lU3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgc3Vic3RpdHV0aW9uID0gKHRlcm1TdWJzdGl0dXRpb24gfHwgZnJhbWVTdWJzdGl0dXRpb24pO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uID09PSBudWxsKSB7XG4gICAgICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbi52YWxpZGF0ZShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTsgIC8vL1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzQXNNZXRhdmFyaWFibGUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgbWV0YXZhcmlhYmxlLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcnMoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3JzID0gZmFsc2U7XG5cbiAgY29uc3QgY29tYmluYXRvcnMgPSBjb250ZXh0LmdldENvbWJpbmF0b3JzKCk7XG5cbiAgY29tYmluYXRvcnMuc29tZSgoY29tYmluYXRvcikgPT4ge1xuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzO1xuXG4gICAgZGVzY2VuZCgoY29udGV4dCkgPT4ge1xuICAgICAgc3RhdGVtZW50VW5pZmllcyA9IGNvbWJpbmF0b3IudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3JzID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9ycztcbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoQnJhY2tldGVkQ29tYmluYXRvcihzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZXNXaXRoQnJhY2tldGVkQ29tYmluYXRvcjtcblxuICBjb25zdCBicmFja2V0ZWRDb21iaW5hdG9yID0gYnJhY2tldGVkQ29tYmluYXRvckZyb21Ob3RoaW5nKCk7XG5cbiAgc3RhdGVtZW50VW5pZmllc1dpdGhCcmFja2V0ZWRDb21iaW5hdG9yID0gYnJhY2tldGVkQ29tYmluYXRvci51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzV2l0aEJyYWNrZXRlZENvbWJpbmF0b3I7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNFcXVhbGl0eShzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHkgPSBmYWxzZTtcblxuICBjb25zdCB7IEVxdWFsaXR5IH0gPSBlbGVtZW50cztcblxuICBsZXQgZXF1YWxpdHk7XG5cbiAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKGVxdWFsaXR5ICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5Li4uYCk7XG5cbiAgICBlcXVhbGl0eSA9IGVxdWFsaXR5LnZhbGlkYXRlKGNvbnRleHQpOyAgLy8vXG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHkgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXNBc0VxdWFsaXR5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzQXNFcXVhbGl0eTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc0p1ZGdlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHZhbGlkYXRlc1N0YXRlbWVudEFzSnVkZ2VtZW50ID0gZmFsc2U7XG5cbiAgbGV0IGp1ZGdlbWVudDtcblxuICBjb25zdCB7IEp1ZGdlbWVudCB9ID0gZWxlbWVudHM7XG5cbiAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoanVkZ2VtZW50ICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEganVkZ2VtZW50Li4uYCk7XG5cbiAgICBqdWRnZW1lbnQgPSBqdWRnZW1lbnQudmFsaWRhdGUoY29udGV4dCk7ICAvLy9cblxuICAgIGlmIChqdWRnZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIHZhbGlkYXRlc1N0YXRlbWVudEFzSnVkZ2VtZW50ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzU3RhdGVtZW50QXNKdWRnZW1lbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEganVkZ2VtZW50LmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0p1ZGdlbWVudDtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24oc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGxldCB2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB7IFR5cGVBc3NlcnRpb24gfSA9IGVsZW1lbnRzO1xuXG4gIGxldCB0eXBlQXNzZXJ0aW9uO1xuXG4gIHR5cGVBc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAodHlwZUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICB0eXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvbi52YWxpZGF0ZShjb250ZXh0KTsgIC8vL1xuXG4gICAgaWYgKHR5cGVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIHZhbGlkYXRlc1N0YXRlbWVudEFzVHlwZUFzc2VydGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlc1N0YXRlbWVudEFzVHlwZUFzc2VydGlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbihzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHZhbGlkYXRlc1N0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHsgRGVmaW5lZEFzc2VydGlvbiB9ID0gZWxlbWVudHM7XG5cbiAgbGV0IGRlZmluZWRBc3NlcnRpb247XG5cbiAgZGVmaW5lZEFzc2VydGlvbiA9IERlZmluZWRBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChkZWZpbmVkQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGRlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uLnZhbGlkYXRlKGNvbnRleHQpOyAgLy8vXG5cbiAgICBpZiAoZGVmaW5lZEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgdmFsaWRhdGVzU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb247XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNQcm9wZXJ0eUFzc2VydGlvbihzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZhbGlkYXRlc0FzUHJvcGVydHlBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB7IFByb3BlcnR5QXNzZXJ0aW9uIH0gPSBlbGVtZW50cztcblxuICBsZXQgcHJvcGVydHlBc3NlcnRpb247XG5cbiAgcHJvcGVydHlBc3NlcnRpb24gPSBQcm9wZXJ0eUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBwcm9wZXJ0eUFzc2VydGlvbiA9IHByb3BlcnR5QXNzZXJ0aW9uLnZhbGlkYXRlKGNvbnRleHQpOyAgLy8vXG5cbiAgICBpZiAocHJvcGVydHlBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzUHJvcGVydHlBc3NlcnRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXNBc1Byb3BlcnR5QXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHByb3BlcnR5IGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzQXNQcm9wZXJ0eUFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1N1YnByb29mQXNzZXJ0aW9uKHN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzQXNTdWJwcm9vZkFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHsgU3VicHJvb2ZBc3NlcnRpb24gfSA9IGVsZW1lbnRzO1xuXG4gIGxldCBzdWJwcm9vZkFzc2VydGlvbjtcblxuICBzdWJwcm9vZkFzc2VydGlvbiA9IFN1YnByb29mQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoc3VicHJvb2ZBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgIHN1YnByb29mQXNzZXJ0aW9uID0gc3VicHJvb2ZBc3NlcnRpb24udmFsaWRhdGUoY29udGV4dCk7ICAvLy9cblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgc3RhdGVtZW50VmFsaWRhdGVzQXNTdWJwcm9vZkFzc2VydGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlc0FzU3VicHJvb2ZBc3NlcnRpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgc3VicHJvb2YgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXNBc1N1YnByb29mQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uKHN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgdmFsaWRhdGVzU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB7IENvbnRhaW5lZEFzc2VydGlvbiB9ID0gZWxlbWVudHM7XG5cbiAgbGV0IGNvbnRhaW5lZEFzc2VydGlvbjtcblxuICBjb250YWluZWRBc3NlcnRpb24gPSBDb250YWluZWRBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChjb250YWluZWRBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb24udmFsaWRhdGUoY29udGV4dCk7ICAvLy9cblxuICAgIGlmIChjb250YWluZWRBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIHZhbGlkYXRlc1N0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb247XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNTYXRpc2ZpZXNBc3NlcnRpb24oc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGxldCB2YWxpZGF0ZXNBU3RhdGVtZW50c1NhdGlzZmllc0Fzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHsgU2F0aXNmaWVzQXNzZXJ0aW9uIH0gPSBlbGVtZW50cztcblxuICBsZXQgc2F0aXNmaWVzQXNzZXJ0aW9uO1xuXG4gIHNhdGlzZmllc0Fzc2VydGlvbiA9IFNhdGlzZmllc0Fzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHNhdGlzZmllc0Fzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHNhdGlzZmllcyBhc3NlcnRpb24uLi5gKTtcblxuICAgIHNhdGlzZmllc0Fzc2VydGlvbiA9IHNhdGlzZmllc0Fzc2VydGlvbi52YWxpZGF0ZShjb250ZXh0KTsgIC8vL1xuXG4gICAgaWYgKHNhdGlzZmllc0Fzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgdmFsaWRhdGVzQVN0YXRlbWVudHNTYXRpc2ZpZXNBc3NlcnRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXNBU3RhdGVtZW50c1NhdGlzZmllc0Fzc2VydGlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzYXRpc2ZpZXMgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNBU3RhdGVtZW50c1NhdGlzZmllc0Fzc2VydGlvbjtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlVGVybXMgPSBbXG4gIHZhbGlkYXRlVGVybUFzVmFyaWFibGUsXG4gIHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvcnMsXG4gIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvclxuXTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50cyA9IFtcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc01ldGF2YXJpYWJsZSxcbiAgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcnMsXG4gIHVuaWZ5U3RhdGVtZW50V2l0aEJyYWNrZXRlZENvbWJpbmF0b3IsXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNFcXVhbGl0eSxcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc0p1ZGdlbWVudCxcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzUHJvcGVydHlBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNTdWJwcm9vZkFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc1NhdGlzZmllc0Fzc2VydGlvblxuXTtcbiJdLCJuYW1lcyI6WyJ2YWxpZGF0ZVN0YXRlbWVudHMiLCJ2YWxpZGF0ZVRlcm1zIiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsInRlcm0iLCJjb250ZXh0IiwidmFsaWRhdGVGb3J3YXJkcyIsInRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlIiwiVmFyaWFibGUiLCJlbGVtZW50cyIsInZhcmlhYmxlIiwiZnJvbVRlcm0iLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2YWxpZGF0ZSIsInR5cGUiLCJnZXRUeXBlIiwidHlwZVN0cmluZyIsInNldFR5cGUiLCJ2YWxpZGF0ZXNGb3J3YXJkcyIsImRlYnVnIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyIsInRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9ycyIsImdldENvbnN0cnVjdG9ycyIsInNvbWUiLCJjb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVzIiwiY2hvb3NlIiwidW5pZnlUZXJtIiwiY29tbWl0IiwidW5pZnlUZXJtV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yIiwidGVybVVuaWZpZXNXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRDb25zdHJ1Y3RvciIsImJyYWNrZXRlZENvbnN0cnVjdG9yRnJvbU5vdGhpbmciLCJ2YWxpZGF0ZVN0YXRlbWVudEFzTWV0YXZhcmlhYmxlIiwic3RhdGVtZW50Iiwic3RhdGVtZW50VmFsaWRhdGVzQXNNZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwic3RyaWN0IiwiVGVybVN1YnN0aXR1dGlvbiIsIkZyYW1lU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ0ZXJtU3Vic3RpdHV0aW9uIiwiZnJhbWVTdWJzdGl0dXRpb24iLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9ycyIsInN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImdldENvbWJpbmF0b3JzIiwiY29tYmluYXRvciIsInN0YXRlbWVudFVuaWZpZXMiLCJkZXNjZW5kIiwidW5pZnlTdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yIiwic3RhdGVtZW50VW5pZmllc1dpdGhCcmFja2V0ZWRDb21iaW5hdG9yIiwiYnJhY2tldGVkQ29tYmluYXRvciIsImJyYWNrZXRlZENvbWJpbmF0b3JGcm9tTm90aGluZyIsInZhbGlkYXRlU3RhdGVtZW50QXNFcXVhbGl0eSIsInN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHkiLCJFcXVhbGl0eSIsImVxdWFsaXR5IiwidmFsaWRhdGVTdGF0ZW1lbnRBc0p1ZGdlbWVudCIsInZhbGlkYXRlc1N0YXRlbWVudEFzSnVkZ2VtZW50IiwianVkZ2VtZW50IiwiSnVkZ2VtZW50IiwidmFsaWRhdGVTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInZhbGlkYXRlU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uIiwidmFsaWRhdGVzU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uIiwiRGVmaW5lZEFzc2VydGlvbiIsImRlZmluZWRBc3NlcnRpb24iLCJ2YWxpZGF0ZVN0YXRlbWVudEFzUHJvcGVydHlBc3NlcnRpb24iLCJzdGF0ZW1lbnRWYWxpZGF0ZXNBc1Byb3BlcnR5QXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbiIsInZhbGlkYXRlU3RhdGVtZW50QXNTdWJwcm9vZkFzc2VydGlvbiIsInN0YXRlbWVudFZhbGlkYXRlc0FzU3VicHJvb2ZBc3NlcnRpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsInN1YnByb29mQXNzZXJ0aW9uIiwidmFsaWRhdGVTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbiIsInZhbGlkYXRlc1N0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1NhdGlzZmllc0Fzc2VydGlvbiIsInZhbGlkYXRlc0FTdGF0ZW1lbnRzU2F0aXNmaWVzQXNzZXJ0aW9uIiwiU2F0aXNmaWVzQXNzZXJ0aW9uIiwic2F0aXNmaWVzQXNzZXJ0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUEwWWFBO2VBQUFBOztRQU5BQztlQUFBQTs7O2lFQWxZUTt5QkFFVzswQkFDZ0Q7Ozs7OztBQUVoRixTQUFTQyx1QkFBdUJDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxnQkFBZ0I7SUFDN0QsSUFBSUMsMEJBQTBCO0lBRTlCLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdDLGlCQUFRO0lBRTdCLElBQUlDO0lBRUpBLFdBQVdGLFNBQVNHLFFBQVEsQ0FBQ1AsTUFBTUM7SUFFbkMsSUFBSUssYUFBYSxNQUFNO1FBQ3JCLE1BQU1FLGFBQWFSLEtBQUtTLFNBQVM7UUFFakNSLFFBQVFTLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixXQUFXLHVCQUF1QixDQUFDO1FBRXBFRixXQUFXQSxTQUFTSyxRQUFRLENBQUNWO1FBRTdCLElBQUlLLGFBQWEsTUFBTTtZQUNyQixNQUFNTSxPQUFPTixTQUFTTyxPQUFPLElBQ3ZCQyxhQUFhRixLQUFLSCxTQUFTO1lBRWpDUixRQUFRUyxLQUFLLENBQUMsQ0FBQyxhQUFhLEVBQUVGLFdBQVcsc0JBQXNCLEVBQUVNLFdBQVcsT0FBTyxDQUFDO1lBRXBGZCxLQUFLZSxPQUFPLENBQUNIO1lBRWIsTUFBTUksb0JBQW9CZCxpQkFBaUJGO1lBRTNDLElBQUlnQixtQkFBbUI7Z0JBQ3JCYiwwQkFBMEI7WUFDNUI7UUFDRjtRQUVBLElBQUlBLHlCQUF5QjtZQUMzQkYsUUFBUWdCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFVCxXQUFXLHFCQUFxQixDQUFD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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.866",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.47",
|
|
14
14
|
"necessary": "^17.1.7",
|
|
15
|
-
"occam-furtle": "^3.0.
|
|
15
|
+
"occam-furtle": "^3.0.186",
|
|
16
16
|
"occam-grammars": "^1.3.520",
|
|
17
|
-
"occam-languages": "^0.0.
|
|
17
|
+
"occam-languages": "^0.0.184",
|
|
18
18
|
"occam-lexers": "^23.1.44",
|
|
19
19
|
"occam-model": "^1.0.505",
|
|
20
|
-
"occam-nominal": "^1.0.
|
|
20
|
+
"occam-nominal": "^1.0.94",
|
|
21
21
|
"occam-parsers": "^23.1.50",
|
|
22
22
|
"occam-server": "^7.0.6"
|
|
23
23
|
},
|