single-scripture-rcl 3.3.3-beta.31 → 3.3.3-beta.41
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.
|
@@ -802,22 +802,16 @@ export default function ScriptureCard(_ref) {
|
|
|
802
802
|
if (scriptureConfig !== null && scriptureConfig !== void 0 && scriptureConfig.versesForRef && !isEqual(versesForRef, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef)) {
|
|
803
803
|
var _originalScriptureRes;
|
|
804
804
|
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
// _map.set(`${chapter}:${verse}`, verseObjects)
|
|
808
|
-
// if (currentVerseSpans?.length) { // add support for verse ranges
|
|
809
|
-
// for (const verseSpan of currentVerseSpans) {
|
|
810
|
-
// _map.set(verseSpan, verseObjects)
|
|
811
|
-
// }
|
|
812
|
-
// }
|
|
813
|
-
// if (!isEqual(verseObjectsMap, _map)) {
|
|
814
|
-
// setVerseObjectsMap(_map)
|
|
815
|
-
// }
|
|
805
|
+
var _map = new Map();
|
|
806
|
+
|
|
816
807
|
var _versesForRef = scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef;
|
|
817
808
|
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
809
|
+
if (_versesForRef !== null && _versesForRef !== void 0 && _versesForRef.length) {
|
|
810
|
+
setState({
|
|
811
|
+
versesForRef: _versesForRef
|
|
812
|
+
});
|
|
813
|
+
}
|
|
814
|
+
|
|
821
815
|
var originalVerses = {};
|
|
822
816
|
var bookVerseObject = originalScriptureResource === null || originalScriptureResource === void 0 ? void 0 : (_originalScriptureRes = originalScriptureResource.bookObjects) === null || _originalScriptureRes === void 0 ? void 0 : _originalScriptureRes.chapters;
|
|
823
817
|
|
|
@@ -829,16 +823,16 @@ export default function ScriptureCard(_ref) {
|
|
|
829
823
|
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
830
824
|
var verseRef = _step6.value;
|
|
831
825
|
var _chapter = verseRef.chapter,
|
|
832
|
-
_verse = verseRef.verse
|
|
833
|
-
verseData = verseRef.verseData;
|
|
826
|
+
_verse = verseRef.verse;
|
|
834
827
|
|
|
835
|
-
if (!
|
|
836
|
-
|
|
828
|
+
if (!originalVerses[_chapter]) {
|
|
829
|
+
originalVerses[_chapter] = {};
|
|
837
830
|
}
|
|
838
831
|
|
|
832
|
+
var verseObjects = [];
|
|
833
|
+
|
|
839
834
|
if (typeof verseRef.verse === 'string' && verseRef.verse.includes('-')) {
|
|
840
|
-
var verses = getVerses(
|
|
841
|
-
var verseObjects = [];
|
|
835
|
+
var verses = getVerses(bookVerseObject, "".concat(_chapter, ":").concat(_verse));
|
|
842
836
|
|
|
843
837
|
var _iterator7 = _createForOfIteratorHelper(verses),
|
|
844
838
|
_step7;
|
|
@@ -854,13 +848,16 @@ export default function ScriptureCard(_ref) {
|
|
|
854
848
|
} finally {
|
|
855
849
|
_iterator7.f();
|
|
856
850
|
}
|
|
857
|
-
|
|
858
|
-
bookVerseObject[_chapter][_verse] = {
|
|
859
|
-
verseObjects: verseObjects
|
|
860
|
-
};
|
|
861
851
|
} else {
|
|
862
|
-
|
|
852
|
+
verseObjects = bookVerseObject[_chapter][_verse].verseObjects;
|
|
863
853
|
}
|
|
854
|
+
|
|
855
|
+
verseObjects = cleanupVerseObjects(verseObjects);
|
|
856
|
+
originalVerses[_chapter][_verse] = {
|
|
857
|
+
verseObjects: verseObjects
|
|
858
|
+
};
|
|
859
|
+
|
|
860
|
+
_map.set("".concat(_chapter, ":").concat(_verse), verseObjects);
|
|
864
861
|
}
|
|
865
862
|
} catch (err) {
|
|
866
863
|
_iterator6.e(err);
|
|
@@ -868,16 +865,21 @@ export default function ScriptureCard(_ref) {
|
|
|
868
865
|
_iterator6.f();
|
|
869
866
|
}
|
|
870
867
|
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
868
|
+
setVerseObjectsMap(_map);
|
|
869
|
+
|
|
870
|
+
if (selectedQuote !== null && selectedQuote !== void 0 && selectedQuote.quote) {
|
|
871
|
+
var quoteMatches = getQuoteMatchesInBookRef({
|
|
872
|
+
bookObject: originalVerses,
|
|
873
|
+
ref: selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.reference,
|
|
874
|
+
quote: selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.quote,
|
|
875
|
+
occurrence: selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.occurrence
|
|
876
|
+
});
|
|
877
|
+
setSelections(quoteMatches);
|
|
878
|
+
console.log('quoteMatches', quoteMatches);
|
|
879
|
+
}
|
|
878
880
|
}
|
|
879
881
|
}
|
|
880
|
-
}, [scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef, originalScriptureResource === null || originalScriptureResource === void 0 ? void 0 : originalScriptureResource.bookObjects]);
|
|
882
|
+
}, [scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef, originalScriptureResource === null || originalScriptureResource === void 0 ? void 0 : originalScriptureResource.bookObjects, selectedQuote]);
|
|
881
883
|
var renderedScripturePanes = versesForRef === null || versesForRef === void 0 ? void 0 : versesForRef.map(function (_currentVerseData, index) {
|
|
882
884
|
var _currentVerseData$ver;
|
|
883
885
|
|
|
@@ -895,8 +897,7 @@ export default function ScriptureCard(_ref) {
|
|
|
895
897
|
var _scriptureAlignmentEditConfig = _objectSpread(_objectSpread({}, scriptureAlignmentEditConfig), {}, {
|
|
896
898
|
currentIndex: index,
|
|
897
899
|
initialVerseObjects: initialVerseObjects,
|
|
898
|
-
reference: _reference
|
|
899
|
-
setOriginalScriptureResource: setOriginalScriptureResource
|
|
900
|
+
reference: _reference
|
|
900
901
|
});
|
|
901
902
|
|
|
902
903
|
return /*#__PURE__*/React.createElement(ScripturePane, _extends({}, scriptureConfig, {
|
|
@@ -915,7 +916,8 @@ export default function ScriptureCard(_ref) {
|
|
|
915
916
|
scriptureAlignmentEditConfig: _scriptureAlignmentEditConfig,
|
|
916
917
|
setWordAlignerStatus: setWordAlignerStatus,
|
|
917
918
|
server: server,
|
|
918
|
-
translate: translate
|
|
919
|
+
translate: translate,
|
|
920
|
+
setOriginalScriptureResource: setOriginalScriptureResource
|
|
919
921
|
}));
|
|
920
922
|
});
|
|
921
923
|
return /*#__PURE__*/React.createElement(SelectionsContextProvider, {
|
|
@@ -1060,4 +1062,4 @@ ScriptureCard.propTypes = {
|
|
|
1060
1062
|
/**This is currently selected quote */
|
|
1061
1063
|
selectedQuote: PropTypes.object
|
|
1062
1064
|
};
|
|
1063
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJDYXJkIiwidXNlQ2FyZFN0YXRlIiwidXNlVXNlckJyYW5jaCIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsImdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiaXNFcXVhbCIsImdldFZlcnNlcyIsIlNjcmlwdHVyZVBhbmUiLCJTY3JpcHR1cmVTZWxlY3RvciIsInVzZVNjcmlwdHVyZVNldHRpbmdzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsIlNjcmlwdHVyZUNhcmQiLCJpZCIsImlzTlQiLCJ0aXRsZSIsInNlcnZlciIsImFwcFJlZiIsImNhcmROdW0iLCJjbGFzc2VzIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwiZ2V0TGFuZ3VhZ2UiLCJyZWZlcmVuY2UiLCJ2ZXJzZSIsImNoYXB0ZXIiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJyZXNvdXJjZUxpbmsiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwib25SZXNvdXJjZUVycm9yIiwiaHR0cENvbmZpZyIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJnZXRMZXhpY29uRGF0YSIsImZldGNoR2xvc3Nlc0ZvclZlcnNlIiwidHJhbnNsYXRlIiwib25NaW5pbWl6ZSIsImxvZ2dlZEluVXNlciIsImF1dGhlbnRpY2F0aW9uIiwic2V0U2F2ZWRDaGFuZ2VzIiwiYm9va0luZGV4Iiwic2VsZWN0ZWRRdW90ZSIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidXNlU3RhdGUiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2hhIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNGb3JSZWYiLCJzdGF0ZSIsInNldFN0YXRlXyIsIk1hcCIsInZlcnNlT2JqZWN0c01hcCIsInNldFZlcnNlT2JqZWN0c01hcCIsIm9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UiLCJzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsInNlbGVjdGlvbnMiLCJfc2V0U2VsZWN0aW9ucyIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwic2V0VXJsRXJyb3IiLCJlcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2NyaXB0dXJlQ29uZmlnIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoUmVzcF8iLCJmZXRjaFJlc3BvbnNlIiwicmVwbyIsInJlZmVyZW5jZV8iLCJzZXRTZWxlY3Rpb25zIiwibmV3U2VsZWN0aW9ucyIsIl9uZXdTZWxlY3Rpb25zIiwic2l6ZSIsImN1cnJlbnRWZXJzZVNwYW5zIiwibGVuZ3RoIiwicHJpbWFyeVJlZmVyZW5jZSIsIl9zZWxlY3Rpb25zIiwiZ2V0IiwidmVyc2VTcGFuIiwic2V0IiwidXNlRWZmZWN0IiwiX3NoYSIsImRhdGEiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJzdWJzdHJpbmciLCJjYXJkSWQiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJ1c2luZ1VzZXJCcmFuY2hfIiwic3RhcnRFZGl0QnJhbmNoIiwiYWN0aW9ucyIsInN0YXJ0RWRpdCIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsIndvcmtpbmdSZWZfIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsImhlYWRlcnMiLCJmaWx0ZXJzIiwiaXRlbUluZGV4IiwibWFya2Rvd25WaWV3Iiwic2V0RmlsdGVycyIsInNldEl0ZW1JbmRleCIsInNldE1hcmtkb3duVmlldyIsInJlZlN0eWxlIiwidXNlTWVtbyIsImZvbnRGYW1pbHkiLCJNYXRoIiwicm91bmQiLCJjb250ZW50U3R5bGUiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJ1bmRlZmluZWQiLCJmZXRjaEdsb3NzRGF0YUZvclZlcnNlIiwidmVyc2VPYmplY3RzIiwidmVyc2VSZWYiLCJfdmVyc2VPYmplY3RzIiwidmVyc2VEYXRhIiwiY29uY2F0IiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRva2VuIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJicmFuY2giLCJvblNhdmVFZGl0IiwiX3NhdmVFZGl0IiwidGhlbiIsInN1Y2Nlc3MiLCJ1bnNhdmVkQ2FyZEluZGljZXMiLCJjYXJkSW5kZXgiLCJpbmZvIiwicmVsb2FkUmVzb3VyY2UiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJiaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJzcGxpdCIsImNoYXB0ZXJJbmRleCIsImN1cnJlbnRDaGFwdGVyIiwidmVyc2VDaHVua3MiLCJ2ZXJzZUluZGV4IiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwidmVyc2VOdW1MZW4iLCJuZXdDaGFwdGVyIiwiam9pbiIsImdldFJlc3BvbnNlRGF0YSIsIm1lcmdlRmFpbCIsInBhcnNlSW50IiwibmV3Qm9va0pzb24iLCJuZXdWZXJzZVRleHQiLCJ0YXJnZXRWZXJzZU9iamVjdHNfIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwib3JpZ2luYWxWZXJzZXMiLCJib29rVmVyc2VPYmplY3QiLCJib29rT2JqZWN0cyIsImNoYXB0ZXJzIiwiaW5jbHVkZXMiLCJ2ZXJzZXMiLCJ2ZXJzZUl0ZW0iLCJ2byIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJxdW90ZSIsIm9jY3VycmVuY2UiLCJyZW5kZXJlZFNjcmlwdHVyZVBhbmVzIiwibWFwIiwiX2N1cnJlbnRWZXJzZURhdGEiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX3JlZmVyZW5jZSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiZnVuYyIsImlzUmVxdWlyZWQiLCJudW1iZXIiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImJvb2wiLCJvYmplY3QiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsT0FBTyxLQUFLQyxTQUFaLE1BQTJCLFlBQTNCO0FBQ0EsU0FBU0MsSUFBVCxFQUFlQyx5QkFBZixRQUFnRCx5QkFBaEQ7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFNBQW5CO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixxQkFBeEI7QUFDQSxTQUNFQyxJQURGLEVBRUVDLFlBRkYsRUFHRUMsYUFIRixFQUlFQyxXQUpGLEVBS0VDLHlCQUxGLFFBTU8sdUJBTlA7QUFPQSxTQUFTQyx3QkFBVCxRQUF5QyxrQkFBekM7QUFDQSxTQUFTQyxnQkFBVCxFQUEyQkMseUJBQTNCLFFBQTRELGtCQUE1RDtBQUNBLE9BQU8sS0FBS0MsT0FBWixNQUF5QixZQUF6QjtBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsU0FBU0MsYUFBVCxFQUF3QkMsaUJBQXhCLFFBQWlELElBQWpEO0FBQ0EsU0FBU0Msb0JBQVQsUUFBcUMsa0NBQXJDO0FBQ0EsU0FDRUMsYUFERixFQUVFQyxlQUZGLEVBR0VDLGtCQUhGLEVBSUVDLDJCQUpGLEVBS0VDLGVBTEYsRUFNRUMsbUJBTkYsUUFPTywrQkFQUDtBQVFBLFNBQVNDLEtBQVQsUUFBc0IseUJBQXRCO0FBQ0EsU0FDRUMsWUFERixFQUVFQyxlQUZGLEVBR0VDLFlBSEYsUUFJTyxhQUpQO0FBTUEsSUFBTUMsa0JBQWtCLEdBQUcsd0JBQTNCO0FBQ0EsSUFBTUMsS0FBSyxHQUFHLFNBQWQ7QUFDQSxJQUFNQyxLQUFLLEdBQUc7QUFBRUMsRUFBQUEsU0FBUyxFQUFFLE1BQWI7QUFBcUJDLEVBQUFBLEtBQUssRUFBRTtBQUE1QixDQUFkO0FBRUEsZUFBZSxTQUFTQyxhQUFULE9BcUNaO0FBQUE7O0FBQUEsTUFwQ0RDLEVBb0NDLFFBcENEQSxFQW9DQztBQUFBLE1BbkNEQyxJQW1DQyxRQW5DREEsSUFtQ0M7QUFBQSxNQWxDREMsS0FrQ0MsUUFsQ0RBLEtBa0NDO0FBQUEsTUFqQ0RDLE1BaUNDLFFBakNEQSxNQWlDQztBQUFBLE1BaENEQyxNQWdDQyxRQWhDREEsTUFnQ0M7QUFBQSxNQS9CREMsT0ErQkMsUUEvQkRBLE9BK0JDO0FBQUEsTUE5QkRDLE9BOEJDLFFBOUJEQSxPQThCQztBQUFBLDJCQTdCREMsUUE2QkM7QUFBQSxNQTVCQ0MsS0E0QkQsaUJBNUJDQSxLQTRCRDtBQUFBLE1BM0JDQyxVQTJCRCxpQkEzQkNBLFVBMkJEO0FBQUEsTUExQkNDLFVBMEJELGlCQTFCQ0EsVUEwQkQ7QUFBQSxNQXpCQ0MscUJBeUJELGlCQXpCQ0EscUJBeUJEO0FBQUEsTUF2QkRDLFdBdUJDLFFBdkJEQSxXQXVCQztBQUFBLDRCQXRCREMsU0FzQkM7QUFBQSxNQXJCQ0MsS0FxQkQsa0JBckJDQSxLQXFCRDtBQUFBLE1BcEJDQyxPQW9CRCxrQkFwQkNBLE9Bb0JEO0FBQUEsTUFuQllDLE1BbUJaLGtCQW5CQ0MsU0FtQkQ7QUFBQSxNQWpCREMsWUFpQkMsUUFqQkRBLFlBaUJDO0FBQUEsTUFoQkRDLG1CQWdCQyxRQWhCREEsbUJBZ0JDO0FBQUEsTUFmREMsa0JBZUMsUUFmREEsa0JBZUM7QUFBQSxNQWREQyxlQWNDLFFBZERBLGVBY0M7QUFBQSxNQWJEQyxVQWFDLFFBYkRBLFVBYUM7QUFBQSxNQVpEQyxZQVlDLFFBWkRBLFlBWUM7QUFBQSxNQVhEQyxhQVdDLFFBWERBLGFBV0M7QUFBQSxNQVZEQyxjQVVDLFFBVkRBLGNBVUM7QUFBQSxNQVREQyxvQkFTQyxRQVREQSxvQkFTQztBQUFBLE1BUkRDLFNBUUMsUUFSREEsU0FRQztBQUFBLE1BUERDLFVBT0MsUUFQREEsVUFPQztBQUFBLE1BTkRDLFlBTUMsUUFOREEsWUFNQztBQUFBLE1BTERDLGNBS0MsUUFMREEsY0FLQztBQUFBLE1BSkRDLGVBSUMsUUFKREEsZUFJQztBQUFBLE1BSERDLFNBR0MsUUFIREEsU0FHQztBQUFBLE1BRkRDLGFBRUMsUUFGREEsYUFFQztBQUFBLE1BRERDLG9CQUNDLFFBRERBLG9CQUNDOztBQUFBLHdCQUMwQnJFLEtBQUssQ0FBQ3NFLFFBQU4sQ0FBZTtBQUN4Q0MsSUFBQUEsa0JBQWtCLEVBQUUsS0FEb0I7QUFFeENDLElBQUFBLEdBQUcsRUFBRWpDLE1BRm1DO0FBR3hDa0MsSUFBQUEsV0FBVyxFQUFFLEtBSDJCO0FBSXhDQyxJQUFBQSxXQUFXLEVBQUUsSUFKMkI7QUFLeENDLElBQUFBLEdBQUcsRUFBRSxJQUxtQztBQU14Q0MsSUFBQUEsU0FBUyxFQUFFLEtBTjZCO0FBT3hDQyxJQUFBQSxRQUFRLEVBQUUsSUFQOEI7QUFReENDLElBQUFBLGVBQWUsRUFBRSxLQVJ1QjtBQVN4Q0MsSUFBQUEsa0JBQWtCLEVBQUUsRUFUb0I7QUFVeENDLElBQUFBLFlBQVksRUFBRTtBQVYwQixHQUFmLENBRDFCO0FBQUE7QUFBQSxNQUNNQyxLQUROO0FBQUEsTUFDYUMsU0FEYjs7QUFBQSxNQWNDVixHQWRELEdBd0JHUyxLQXhCSCxDQWNDVCxHQWREO0FBQUEsTUFlQ0MsV0FmRCxHQXdCR1EsS0F4QkgsQ0FlQ1IsV0FmRDtBQUFBLE1BZ0JDQyxXQWhCRCxHQXdCR08sS0F4QkgsQ0FnQkNQLFdBaEJEO0FBQUEsTUFpQkNDLEdBakJELEdBd0JHTSxLQXhCSCxDQWlCQ04sR0FqQkQ7QUFBQSxNQWtCQ0MsU0FsQkQsR0F3QkdLLEtBeEJILENBa0JDTCxTQWxCRDtBQUFBLE1BbUJDQyxRQW5CRCxHQXdCR0ksS0F4QkgsQ0FtQkNKLFFBbkJEO0FBQUEsTUFvQkNDLGVBcEJELEdBd0JHRyxLQXhCSCxDQW9CQ0gsZUFwQkQ7QUFBQSxNQXFCQ0Msa0JBckJELEdBd0JHRSxLQXhCSCxDQXFCQ0Ysa0JBckJEO0FBQUEsTUFzQkNSLGtCQXRCRCxHQXdCR1UsS0F4QkgsQ0FzQkNWLGtCQXRCRDtBQUFBLE1BdUJDUyxZQXZCRCxHQXdCR0MsS0F4QkgsQ0F1QkNELFlBdkJEOztBQUFBLHlCQTBCNkNoRixLQUFLLENBQUNzRSxRQUFOLENBQWUsSUFBSWEsR0FBSixFQUFmLENBMUI3QztBQUFBO0FBQUEsTUEwQk1DLGVBMUJOO0FBQUEsTUEwQnVCQyxrQkExQnZCOztBQUFBLHlCQTJCaUVyRixLQUFLLENBQUNzRSxRQUFOLENBQWUsSUFBZixDQTNCakU7QUFBQTtBQUFBLE1BMkJNZ0IseUJBM0JOO0FBQUEsTUEyQmlDQyw0QkEzQmpDOztBQUFBLDZCQTRCK0JqQyxtQkFBbUIsQ0FBQ3pCLGtCQUFrQixHQUFHVyxPQUF0QixFQUErQixHQUEvQixDQTVCbEQ7QUFBQTtBQUFBLE1BNEJNZ0QsUUE1Qk47QUFBQSxNQTRCZ0JDLFdBNUJoQjs7QUFBQSx5QkE2Qm9DekYsS0FBSyxDQUFDc0UsUUFBTixDQUFlLElBQUlhLEdBQUosRUFBZixDQTdCcEM7QUFBQTtBQUFBLE1BNkJNTyxVQTdCTjtBQUFBLE1BNkJrQkMsY0E3QmxCOztBQThCRCxNQUFNQyxLQUFLLEdBQUd4RCxJQUFJLENBQUNlLE1BQUQsQ0FBbEI7O0FBRUEsV0FBUzBDLFFBQVQsQ0FBa0JDLFFBQWxCLEVBQTRCO0FBQzFCWixJQUFBQSxTQUFTLENBQUMsVUFBQWEsU0FBUztBQUFBLDZDQUFVQSxTQUFWLEdBQXdCRCxRQUF4QjtBQUFBLEtBQVYsQ0FBVDtBQUNEOztBQUVELE1BQUloQixlQUFKLEVBQXFCO0FBQ25CckIsSUFBQUEsVUFBVSxtQ0FBUUEsVUFBUjtBQUFvQnVDLE1BQUFBLEtBQUssRUFBRTtBQUFFQyxRQUFBQSxNQUFNLEVBQUU7QUFBVjtBQUEzQixNQUFWLENBRG1CLENBQ2tDO0FBQ3REOztBQXRDQSw4QkE4Q0cvRSxvQkFBb0IsQ0FBQztBQUN2QmtCLElBQUFBLElBQUksRUFBSkEsSUFEdUI7QUFFdkJDLElBQUFBLEtBQUssRUFBTEEsS0FGdUI7QUFHdkJZLElBQUFBLEtBQUssRUFBTEEsS0FIdUI7QUFJdkJOLElBQUFBLEtBQUssRUFBTEEsS0FKdUI7QUFLdkJRLElBQUFBLE1BQU0sRUFBTkEsTUFMdUI7QUFNdkJaLElBQUFBLE1BQU0sRUFBRWlDLEdBTmU7QUFPdkJsQyxJQUFBQSxNQUFNLEVBQU5BLE1BUHVCO0FBUXZCRSxJQUFBQSxPQUFPLEVBQVBBLE9BUnVCO0FBU3ZCVSxJQUFBQSxPQUFPLEVBQVBBLE9BVHVCO0FBVXZCTixJQUFBQSxVQUFVLEVBQVZBLFVBVnVCO0FBV3ZCQyxJQUFBQSxVQUFVLEVBQVZBLFVBWHVCO0FBWXZCUSxJQUFBQSxZQUFZLEVBQVpBLFlBWnVCO0FBYXZCQyxJQUFBQSxtQkFBbUIsRUFBbkJBLG1CQWJ1QjtBQWN2QkMsSUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFkdUI7QUFldkJULElBQUFBLHFCQUFxQixFQUFyQkEscUJBZnVCO0FBZ0J2Qm9ELElBQUFBLFdBQVcsRUFBRSxxQkFBQ0MsS0FBRDtBQUFBLGFBQVdOLFFBQVEsQ0FBQztBQUFFaEIsUUFBQUEsUUFBUSxFQUFFc0I7QUFBWixPQUFELENBQW5CO0FBQUEsS0FoQlU7QUFpQnZCMUMsSUFBQUEsVUFBVSxFQUFWQSxVQWpCdUI7QUFrQnZCQyxJQUFBQSxZQUFZLEVBQVpBLFlBbEJ1QjtBQW1CdkJDLElBQUFBLGFBQWEsRUFBYkEsYUFuQnVCO0FBb0J2QnlDLElBQUFBLFNBQVMsRUFBRTtBQXBCWSxHQUFELENBOUN2QjtBQUFBLE1BeUNDQyxjQXpDRCx5QkF5Q0NBLGNBekNEO0FBQUEsTUEwQ0NDLGVBMUNELHlCQTBDQ0EsZUExQ0Q7QUFBQSxNQTJDQ0MsWUEzQ0QseUJBMkNDQSxZQTNDRDtBQUFBLE1BNENDQyxpQkE1Q0QseUJBNENDQSxpQkE1Q0Q7QUFBQSxNQTZDQ0Msb0JBN0NELHlCQTZDQ0Esb0JBN0NEOztBQXFFRCxNQUFNQyxVQUFVLEdBQUdKLGVBQUgsYUFBR0EsZUFBSCx1QkFBR0EsZUFBZSxDQUFFSyxhQUFwQyxDQXJFQyxDQXNFRDs7QUFDQSxNQUFNQyxJQUFJLGFBQU1OLGVBQU4sYUFBTUEsZUFBTixnREFBTUEsZUFBZSxDQUFFNUQsUUFBdkIsMERBQU0sc0JBQTJCRSxVQUFqQyxjQUErQzBELGVBQS9DLGFBQStDQSxlQUEvQyxpREFBK0NBLGVBQWUsQ0FBRTVELFFBQWhFLDJEQUErQyx1QkFBMkJVLFNBQTFFLENBQVY7QUFDQSxNQUFNeUQsVUFBVSxHQUFHLENBQUFQLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsWUFBQUEsZUFBZSxDQUFFdEQsU0FBakIsS0FBOEIsSUFBakQ7QUFFQTtBQUNGO0FBQ0E7QUFDQTs7QUFDRSxXQUFTOEQsYUFBVCxDQUF1QkMsYUFBdkIsRUFBc0M7QUFBQTs7QUFDcEMsUUFBSUMsY0FBYyxHQUFHRCxhQUFyQjs7QUFFQSxRQUFJQSxhQUFhLFNBQWIsSUFBQUEsYUFBYSxXQUFiLElBQUFBLGFBQWEsQ0FBRUUsSUFBZiwwQkFBdUJDLGlCQUF2QiwrQ0FBdUIsbUJBQW1CQyxNQUE5QyxFQUFzRDtBQUFFO0FBQ3RESCxNQUFBQSxjQUFjLEdBQUcsSUFBSTdCLEdBQUosQ0FBUTRCLGFBQVIsQ0FBakIsQ0FEb0QsQ0FDWjs7QUFDeEMsVUFBSUssZ0JBQWdCLGFBQU1sRSxPQUFOLGNBQWlCRCxLQUFqQixDQUFwQjs7QUFDQSxVQUFNb0UsV0FBVyxHQUFHTCxjQUFjLENBQUNNLEdBQWYsQ0FBbUJGLGdCQUFuQixDQUFwQjs7QUFIb0QsaURBSzVCRixpQkFMNEI7QUFBQTs7QUFBQTtBQUtwRCw0REFBMkM7QUFBQSxjQUFoQ0ssU0FBZ0M7O0FBQ3pDUCxVQUFBQSxjQUFjLENBQUNRLEdBQWYsQ0FBbUJELFNBQW5CLEVBQThCRixXQUE5QjtBQUNEO0FBUG1EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRckQ7O0FBRUQsUUFBSSxDQUFDdkcsT0FBTyxDQUFDNEUsVUFBRCxFQUFhc0IsY0FBYixDQUFaLEVBQTBDO0FBQ3hDckIsTUFBQUEsY0FBYyxDQUFDcUIsY0FBRCxDQUFkO0FBQ0Q7QUFDRjs7QUFFRGhILEVBQUFBLEtBQUssQ0FBQ3lILFNBQU4sQ0FBZ0IsWUFBTTtBQUFBOztBQUFFO0FBQ3RCLFFBQU1DLElBQUksR0FBRyxDQUFBaEIsVUFBVSxTQUFWLElBQUFBLFVBQVUsV0FBVixnQ0FBQUEsVUFBVSxDQUFFaUIsSUFBWixzRUFBa0JoRCxHQUFsQixLQUF5QixJQUF0Qzs7QUFDQWlELElBQUFBLE9BQU8sQ0FBQ0MsR0FBUixlQUFtQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVsQixVQUFmLENBQW5CLHlCQUE0RGEsSUFBNUQ7O0FBRUEsUUFBSUEsSUFBSSxLQUFLL0MsR0FBYixFQUFrQjtBQUNoQmtCLE1BQUFBLFFBQVEsQ0FBQztBQUFFbEIsUUFBQUEsR0FBRyxFQUFFK0M7QUFBUCxPQUFELENBQVI7QUFDRDtBQUNGLEdBUEQsRUFPRyxDQUFDaEIsVUFBRCxDQVBILEVBaEdDLENBeUdEOztBQUNBLE1BQU1zQixjQUFjLEdBQUcsQ0FBQTFCLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsc0NBQUFBLGVBQWUsQ0FBRTVELFFBQWpCLGtGQUEyQlUsU0FBM0IsS0FBd0NQLFVBQS9ELENBMUdDLENBMkdEOztBQUNBLE1BQUlvRixJQUFJLEdBQUcsQ0FBQTNCLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsc0NBQUFBLGVBQWUsQ0FBRTVELFFBQWpCLGtGQUEyQjhCLEdBQTNCLEtBQWtDakMsTUFBN0M7QUFDQSxNQUFNMkYsZ0JBQWdCLEdBQUdsRSxZQUFZLElBQUlDLGNBQWhCLElBQ3RCcEIsVUFBVSxLQUFLbEIsZUFETyxLQUVyQnNHLElBQUksS0FBSyxRQUFWLElBQXdCQSxJQUFJLENBQUNFLFNBQUwsQ0FBZSxDQUFmLEVBQWtCbkUsWUFBWSxDQUFDbUQsTUFBL0IsTUFBMkNuRCxZQUY3QyxDQUF6QixDQTdHQyxDQStHcUY7O0FBL0dyRix1QkFvSEd4RCxhQUFhLENBQUM7QUFDaEJtQyxJQUFBQSxLQUFLLEVBQUxBLEtBRGdCO0FBRWhCTCxJQUFBQSxNQUFNLEVBQU5BLE1BRmdCO0FBR2hCQyxJQUFBQSxNQUFNLEVBQU5BLE1BSGdCO0FBSWhCSyxJQUFBQSxVQUFVLEVBQVZBLFVBSmdCO0FBS2hCd0YsSUFBQUEsTUFBTSxFQUFFakcsRUFMUTtBQU1oQjZCLElBQUFBLFlBQVksRUFBRWtFLGdCQUFnQixHQUFHbEUsWUFBSCxHQUFrQixJQU5oQztBQU9oQkMsSUFBQUEsY0FBYyxFQUFFaUUsZ0JBQWdCLEdBQUdqRSxjQUFILEdBQW9CLElBUHBDO0FBUWhCK0QsSUFBQUEsY0FBYyxFQUFkQSxjQVJnQjtBQVNoQnhFLElBQUFBLGVBQWUsRUFBZkEsZUFUZ0I7QUFVaEJGLElBQUFBLG1CQUFtQixFQUFuQkE7QUFWZ0IsR0FBRCxDQXBIaEI7QUFBQSw0Q0FrSEMyQixLQWxIRDtBQUFBLE1Ba0hVb0QscUJBbEhWLHdCQWtIVUEscUJBbEhWO0FBQUEsTUFrSGtEQyxnQkFsSGxELHdCQWtIaUN4RCxlQWxIakM7QUFBQSxNQW1IdUJ5RCxlQW5IdkIsa0JBbUhDQyxPQW5IRCxDQW1IWUMsU0FuSFo7O0FBaUlELE1BQU1DLFVBQVUsR0FBR1IsZ0JBQWdCLEdBQUdHLHFCQUFILEdBQTJCOUYsTUFBOUQ7QUFDQSxNQUFJb0csY0FBSjtBQUVBM0ksRUFBQUEsS0FBSyxDQUFDeUgsU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBSWEsZ0JBQWdCLEtBQUt4RCxlQUF6QixFQUEwQztBQUN4Q2UsTUFBQUEsUUFBUSxDQUFDO0FBQUVmLFFBQUFBLGVBQWUsRUFBRXdEO0FBQW5CLE9BQUQsQ0FBUjtBQUNEO0FBQ0YsR0FKRCxFQUlHLENBQUNBLGdCQUFELEVBQW1CeEQsZUFBbkIsQ0FKSDtBQU1BOUUsRUFBQUEsS0FBSyxDQUFDeUgsU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBSW1CLFdBQVcsR0FBR0YsVUFBVSxJQUFJbkcsTUFBaEM7O0FBRUEsUUFBSWlDLEdBQUcsS0FBS29FLFdBQVosRUFBeUI7QUFDdkIvQyxNQUFBQSxRQUFRLENBQUM7QUFBRXJCLFFBQUFBLEdBQUcsRUFBRW9FO0FBQVAsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQU5ELEVBTUcsQ0FBQ0YsVUFBRCxFQUFhbEUsR0FBYixFQUFrQmpDLE1BQWxCLENBTkg7QUFRQXZDLEVBQUFBLEtBQUssQ0FBQ3lILFNBQU4sQ0FBZ0IsWUFBTTtBQUFBOztBQUFFO0FBQ3RCLFFBQU10QixLQUFLLEdBQUdHLGVBQUgsYUFBR0EsZUFBSCxpREFBR0EsZUFBZSxDQUFFdUMsY0FBcEIsMkRBQUcsdUJBQWtDcEksV0FBbEMsQ0FBZDs7QUFFQSxRQUFJMEYsS0FBSixFQUFXO0FBQUU7QUFDWCxVQUFNMEMsY0FBYyxHQUFHdkMsZUFBSCxhQUFHQSxlQUFILHVCQUFHQSxlQUFlLENBQUV1QyxjQUF4Qzs7QUFDQSxVQUFNeEYsYUFBWSxHQUFHakMsZUFBZSxDQUFDa0YsZUFBRCxDQUFwQzs7QUFDQSxVQUFNd0MsT0FBTyxHQUFHekgsa0JBQWtCLENBQUN3SCxjQUFELEVBQWlCdkcsTUFBakIsRUFBeUJlLGFBQXpCLEVBQXVDdUMsS0FBdkMsQ0FBbEM7QUFDQSxVQUFNbUQsYUFBYSxHQUFHRixjQUFjLENBQUNuSSx5QkFBRCxDQUFwQztBQUNBOEMsTUFBQUEsZUFBZSxJQUFJQSxlQUFlLENBQUNzRixPQUFELEVBQVVDLGFBQVYsRUFBeUJGLGNBQXpCLENBQWxDO0FBQ0Q7QUFDRixHQVZELEVBVUcsQ0FBQ3ZDLGVBQUQsYUFBQ0EsZUFBRCxpREFBQ0EsZUFBZSxDQUFFdUMsY0FBbEIsMkRBQUMsdUJBQWtDcEksV0FBbEMsQ0FBRCxDQVZIOztBQVlBLE1BQUk2RixlQUFlLENBQUNqRSxLQUFoQixJQUF5QmlFLGVBQWUsQ0FBQzBDLE9BQTdDLEVBQXNEO0FBQ3BETCxJQUFBQSxjQUFjLGFBQU1yQyxlQUFlLENBQUNqRSxLQUF0QixlQUFnQ2lFLGVBQWUsQ0FBQzBDLE9BQWhELENBQWQ7QUFDQXZDLElBQUFBLG9CQUFvQixDQUFDd0MsV0FBckIsQ0FBaUMzQyxlQUFlLENBQUNqRCxZQUFqRCxFQUErRHNGLGNBQS9EO0FBQ0QsR0FIRCxNQUdPO0FBQ0xBLElBQUFBLGNBQWMsd0NBQWQ7QUFDRDtBQUVEOzs7QUFDQSxXQUFTTyxvQkFBVCxHQUFnQztBQUM5QixRQUFNQyx3QkFBd0IsR0FBRzdILDJCQUEyQixDQUFDO0FBQzNEUSxNQUFBQSxLQUFLLEVBQUxBLEtBRDJEO0FBRTNEdUIsTUFBQUEsWUFBWSxFQUFFaUQsZUFBZSxDQUFDakQsWUFGNkI7QUFHM0RrRCxNQUFBQSxZQUFZLEVBQVpBLFlBSDJEO0FBSTNERSxNQUFBQSxvQkFBb0IsRUFBcEJBO0FBSjJELEtBQUQsQ0FBNUQ7QUFPQSx3QkFBTyxvQkFBQyxpQkFBRCxlQUF1QjBDLHdCQUF2QjtBQUFpRCxNQUFBLEtBQUssRUFBRXBILEtBQXhEO0FBQStELE1BQUEsWUFBWSxFQUFFOEM7QUFBN0UsT0FBUDtBQUNEOztBQUVELFdBQVN1RSxXQUFULEdBQXVCO0FBQ3JCO0FBQ0F2RCxJQUFBQSxRQUFRLENBQUM7QUFBRWhCLE1BQUFBLFFBQVEsRUFBRTtBQUFaLEtBQUQsQ0FBUjtBQUNELEdBcExBLENBc0xEOzs7QUFDQSxNQUFNd0UsV0FBVyxHQUFHL0MsZUFBSCxhQUFHQSxlQUFILGlEQUFHQSxlQUFlLENBQUU1RCxRQUFwQiwyREFBRyx1QkFBMkJFLFVBQS9DO0FBQ0EsTUFBTTBHLFFBQVEsR0FBR3ZHLFdBQVcsQ0FBQztBQUFFSCxJQUFBQSxVQUFVLEVBQUV5RztBQUFkLEdBQUQsQ0FBNUI7QUFDQSxNQUFNRSxTQUFTLEdBQUcsQ0FBQ0QsUUFBRCxhQUFDQSxRQUFELHVCQUFDQSxRQUFRLENBQUVDLFNBQVgsS0FBeUIsS0FBM0M7O0FBQ0EsTUFBTXZHLFNBQVMscUJBQVFzRCxlQUFlLENBQUN0RCxTQUF4QixDQUFmOztBQUVBLE1BQU13RyxRQUFRLEdBQUlILFdBQVcsS0FBSyxLQUFsQztBQUNBLE1BQU1JLFVBQVUsR0FBR0QsUUFBUSxHQUFHLEdBQUgsR0FBUyxDQUFwQyxDQTdMQyxDQTZMcUM7O0FBQ3RDLE1BQU1FLGNBQWMsR0FBR2xFLFFBQVEsR0FBR2lFLFVBQWxDO0FBRUEsTUFBTUUsS0FBSyxHQUFHLElBQWQ7O0FBaE1DLHNCQXdNR3BKLFlBQVksQ0FBQztBQUFFb0osSUFBQUEsS0FBSyxFQUFMQTtBQUFGLEdBQUQsQ0F4TWY7QUFBQSwwQ0FrTUMxRSxLQWxNRDtBQUFBLE1BbU1HMkUsT0FuTUgsdUJBbU1HQSxPQW5NSDtBQUFBLE1BbU1ZQyxPQW5NWix1QkFtTVlBLE9Bbk1aO0FBQUEsTUFtTXFCQyxTQW5NckIsdUJBbU1xQkEsU0FuTXJCO0FBQUEsTUFtTWdDQyxZQW5NaEMsdUJBbU1nQ0EsWUFuTWhDO0FBQUEsNENBcU1DdkIsT0FyTUQ7QUFBQSxNQXNNR3dCLFVBdE1ILHlCQXNNR0EsVUF0TUg7QUFBQSxNQXNNZUMsWUF0TWYseUJBc01lQSxZQXRNZjtBQUFBLE1Bc002QkMsZUF0TTdCLHlCQXNNNkJBLGVBdE03Qjs7QUEwTUQsTUFBTUMsUUFBUSxHQUFHbkssS0FBSyxDQUFDb0ssT0FBTixDQUFjO0FBQUEsV0FBTztBQUNwQ0MsTUFBQUEsVUFBVSxFQUFFLFdBRHdCO0FBRXBDN0UsTUFBQUEsUUFBUSxZQUFLOEUsSUFBSSxDQUFDQyxLQUFMLENBQVdiLGNBQWMsR0FBRyxHQUE1QixDQUFMO0FBRjRCLEtBQVA7QUFBQSxHQUFkLEVBR2IsQ0FBQ0EsY0FBRCxDQUhhLENBQWpCO0FBS0EsTUFBTWMsWUFBWSxHQUFHeEssS0FBSyxDQUFDb0ssT0FBTixDQUFjO0FBQUEsV0FBTztBQUN4Q0MsTUFBQUEsVUFBVSxFQUFFLFdBRDRCO0FBRXhDN0UsTUFBQUEsUUFBUSxZQUFLa0UsY0FBTDtBQUZnQyxLQUFQO0FBQUEsR0FBZCxFQUdqQixDQUFDQSxjQUFELENBSGlCLENBQXJCO0FBS0EsTUFBTWUsY0FBYyxnQkFBRyxvQkFBQyxLQUFELFFBQVE5QixjQUFSLENBQXZCO0FBQ0EsTUFBSStCLG1CQUFtQixHQUFHbkgsa0JBQTFCO0FBQ0EsTUFBTW9ILGtCQUFrQixHQUFHcEosZUFBZSwyQkFBQytFLGVBQWUsQ0FBQyxVQUFELENBQWhCLDJEQUFDLHVCQUE2QmxELFNBQTlCLENBQTFDOztBQUVBLE1BQUlHLGtCQUFrQixLQUFLcUgsU0FBM0IsRUFBc0M7QUFBRTtBQUN0Q0YsSUFBQUEsbUJBQW1CLEdBQUcsQ0FBQ0Msa0JBQXZCO0FBQ0Q7O0FBRUQzSyxFQUFBQSxLQUFLLENBQUN5SCxTQUFOLENBQWdCLFlBQU07QUFBRTtBQUN0QixRQUFNb0Qsc0JBQXNCO0FBQUEsMEVBQUc7QUFBQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUN6QkMsZ0JBQUFBLFlBRHlCLEdBQ1YsRUFEVSxFQUc3Qjs7QUFINkIsd0RBSU4sQ0FBQXhFLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsWUFBQUEsZUFBZSxDQUFFdEIsWUFBakIsS0FBaUMsRUFKM0I7O0FBQUE7QUFJN0IseUVBQTREO0FBQWpEK0Ysb0JBQUFBLFFBQWlEO0FBQ3BEQyxvQkFBQUEsYUFEb0QsR0FDcENELFFBRG9DLGFBQ3BDQSxRQURvQyw4Q0FDcENBLFFBQVEsQ0FBRUUsU0FEMEIsd0RBQ3BDLG9CQUFxQkgsWUFEZTtBQUUxREEsb0JBQUFBLFlBQVksR0FBR0EsWUFBWSxDQUFDSSxNQUFiLENBQW9CRixhQUFwQixDQUFmO0FBQ0Q7QUFQNEI7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxzQkFTekIsQ0FBQ3pILGtCQUFELHNCQUF1QnVILFlBQXZCLDJDQUF1QixlQUFjM0QsTUFBckMsSUFBK0N0RCxvQkFUdEI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSx1QkFXckJBLG9CQUFvQixDQUFDaUgsWUFBRCxFQUFlekIsV0FBZixDQVhDOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUg7O0FBQUEsc0JBQXRCd0Isc0JBQXNCO0FBQUE7QUFBQTtBQUFBLE9BQTVCOztBQWVBLFFBQUlGLGtCQUFKLEVBQXdCO0FBQ3RCRSxNQUFBQSxzQkFBc0I7QUFDdkI7QUFDRixHQW5CRCxFQW1CRyxDQUFFN0YsWUFBRixFQUFnQnFFLFdBQWhCLENBbkJIO0FBcUJBLE1BQU04QixVQUFVLEdBQUcsQ0FBQ1Isa0JBQXBCO0FBQ0EsTUFBTVMsZUFBZSxHQUFHLENBQUNULGtCQUF6QjtBQUNBLE1BQU1VLGVBQWUsR0FBR2hGLGNBQWMsR0FBRzNDLFlBQUgsR0FBa0JDLGFBQXhEO0FBQ0EsTUFBTTJILDRCQUE0QixHQUFHO0FBQ25DckgsSUFBQUEsY0FBYyxFQUFFaUUsZ0JBQWdCLEdBQUdqRSxjQUFILEdBQW9CLElBRGpCO0FBRW5DRSxJQUFBQSxTQUFTLEVBQVRBLFNBRm1DO0FBR25Db0gsSUFBQUEsZUFBZSxFQUFFdkksU0FIa0I7QUFJbkNtSSxJQUFBQSxVQUFVLEVBQVZBLFVBSm1DO0FBS25DQyxJQUFBQSxlQUFlLEVBQWZBLGVBTG1DO0FBTW5DM0gsSUFBQUEsVUFBVSxFQUFWQSxVQU5tQztBQU9uQztBQUNBNEMsSUFBQUEsY0FBYyxFQUFkQSxjQVJtQztBQVNuQ3JDLElBQUFBLFlBQVksRUFBRWtFLGdCQUFnQixHQUFHbEUsWUFBSCxHQUFrQixJQVRiO0FBVW5DbEIsSUFBQUEscUJBQXFCLEVBQXJCQSxxQkFWbUM7QUFXbkM7QUFDQXVJLElBQUFBLGVBQWUsRUFBZkEsZUFabUM7QUFhbkMvRSxJQUFBQSxlQUFlLEVBQWZBLGVBYm1DO0FBY25DRSxJQUFBQSxpQkFBaUIsRUFBakJBLGlCQWRtQztBQWVuQytCLElBQUFBLGVBQWUsRUFBZkEsZUFmbUM7QUFnQm5DckUsSUFBQUEsZUFBZSxFQUFFc0gsZ0JBaEJrQjtBQWlCbkNDLElBQUFBLGNBQWMsRUFBRTdGLEtBQUssR0FBR2xFLFlBQUgsR0FBa0JFLFlBakJKO0FBa0JuQzhKLElBQUFBLGNBQWMsRUFBRXBDLFFBbEJtQjtBQW1CbkNqSCxJQUFBQSxLQUFLLEVBQUVzRyxjQW5CNEI7QUFvQm5DTixJQUFBQSxxQkFBcUIsRUFBRTdEO0FBcEJZLEdBQXJDO0FBdUJBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0UsV0FBU2dILGdCQUFULENBQTBCRyxZQUExQixFQUF3Q0MsS0FBeEMsU0FBeUc7QUFBQSxpQ0FBeERDLFVBQXdEO0FBQUEsUUFBeERBLFVBQXdELGlDQUEzQyxJQUEyQztBQUFBLG1DQUFyQ0MsWUFBcUM7QUFBQSxRQUFyQ0EsWUFBcUMsbUNBQXRCLElBQXNCO0FBQUEsNEJBQWhCN0csS0FBZ0I7QUFBQSxRQUFoQkEsS0FBZ0IsNEJBQVIsSUFBUTs7QUFDdkcsUUFBTThHLG1CQUFtQixxQkFBUWhILGtCQUFSLENBQXpCOztBQUVBLFFBQUk2RyxLQUFKLEVBQVc7QUFDVCxVQUFJRyxtQkFBbUIsQ0FBQ0MsY0FBcEIsQ0FBbUNMLFlBQW5DLENBQUosRUFBc0Q7QUFDcEQsZUFBT0ksbUJBQW1CLENBQUNKLFlBQUQsQ0FBMUI7QUFDRDtBQUNGLEtBSkQsTUFJTztBQUNMSSxNQUFBQSxtQkFBbUIsQ0FBQ0osWUFBRCxDQUFuQixHQUFvQztBQUFFRSxRQUFBQSxVQUFVLEVBQVZBLFVBQUY7QUFBY0MsUUFBQUEsWUFBWSxFQUFaQSxZQUFkO0FBQTRCN0csUUFBQUEsS0FBSyxFQUFMQTtBQUE1QixPQUFwQyxDQURLLENBQ21FO0FBQ3pFOztBQUVELFFBQU1nSCxtQkFBbUIsR0FBRyxDQUFDLENBQUNDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSixtQkFBWixFQUFpQzVFLE1BQS9EOztBQUVBLFFBQUk1QyxrQkFBa0IsSUFBSTBILG1CQUExQixFQUErQztBQUM3Qy9ILE1BQUFBLGVBQWUsSUFBSUEsZUFBZSxDQUFDckIsVUFBRCxFQUFhLENBQUNvSixtQkFBZCxDQUFsQztBQUNBcEcsTUFBQUEsUUFBUSxDQUFDO0FBQUV0QixRQUFBQSxrQkFBa0IsRUFBRTBIO0FBQXRCLE9BQUQsQ0FBUjtBQUNEOztBQUVELFFBQUksQ0FBQ25MLE9BQU8sQ0FBQ2lMLG1CQUFELEVBQXNCaEgsa0JBQXRCLENBQVosRUFBdUQ7QUFDckRjLE1BQUFBLFFBQVEsQ0FBQztBQUFFZCxRQUFBQSxrQkFBa0IsRUFBRWdIO0FBQXRCLE9BQUQsQ0FBUjtBQUNEO0FBQ0Y7QUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBOzs7QUFDRSxXQUFTSyxjQUFULENBQXdCQyxRQUF4QixFQUFrQ0MsTUFBbEMsRUFBMEM7QUFDeEMsUUFBTXJFLElBQUksR0FBR29FLFFBQVEsR0FBRyxFQUF4QjtBQUNBLFFBQU1FLE1BQU0sR0FBR3RFLElBQUksQ0FBQ2QsTUFBcEI7QUFDQSxRQUFNcUYsS0FBSyxHQUFHRixNQUFNLENBQUNHLFNBQVAsQ0FBaUIsVUFBQ0MsS0FBRCxFQUFRQyxHQUFSLEVBQWdCO0FBQzdDLFVBQUlBLEdBQUcsR0FBRyxDQUFWLEVBQWE7QUFDWCxZQUFJRCxLQUFLLENBQUN2RSxTQUFOLENBQWdCLENBQWhCLEVBQW1Cb0UsTUFBbkIsTUFBK0J0RSxJQUFuQyxFQUF5QztBQUN2QyxjQUFNMkUsUUFBUSxHQUFHRixLQUFLLENBQUNILE1BQUQsQ0FBdEI7O0FBRUEsY0FBS0ssUUFBUSxHQUFHLEdBQVosSUFBcUJBLFFBQVEsR0FBRyxHQUFwQyxFQUEwQztBQUN4QyxtQkFBTyxJQUFQO0FBQ0Q7QUFDRjtBQUNGOztBQUNELGFBQU8sS0FBUDtBQUNELEtBWGEsQ0FBZDtBQVlBLFdBQU9KLEtBQVA7QUFDRDs7QUFFRCxXQUFTSyxXQUFULEdBQXVCO0FBQUE7O0FBQ3JCLFFBQU1DLFFBQVEsR0FBR3hHLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsNkJBQUFBLGVBQWUsQ0FBRXRELFNBQWpCLHdFQUE0QkksU0FBNUIsR0FBd0NrRCxlQUFlLENBQUN0RCxTQUFoQixDQUEwQkksU0FBMUIsQ0FBb0MySixXQUFwQyxFQUF4QyxHQUE0RixFQUE3RztBQUNBLHFCQUFVNUksU0FBVixjQUF1QjJJLFFBQXZCO0FBQ0Q7O0FBRUQsTUFBTUUsUUFBUSxHQUFHSCxXQUFXLEVBQTVCLENBdFVDLENBd1VEOztBQXhVQyxpQkF5VXNCeE0sT0FBTyxDQUFDO0FBQzdCc0UsSUFBQUEsR0FBRyxFQUFIQSxHQUQ2QjtBQUU3QmhDLElBQUFBLEtBQUssRUFBTEEsS0FGNkI7QUFHN0JzSyxJQUFBQSxPQUFPLEVBQUV2SSxXQUhvQjtBQUk3QndJLElBQUFBLE1BQU07QUFDSmxILE1BQUFBLEtBQUssRUFBRTtBQUFFQyxRQUFBQSxNQUFNLEVBQUU7QUFBVjtBQURILE9BRURoQyxjQUZDLGFBRURBLGNBRkMsdUJBRURBLGNBQWMsQ0FBRWlKLE1BRmY7QUFHSkMsTUFBQUEsS0FBSyxFQUFFbEosY0FBRixhQUFFQSxjQUFGLHVCQUFFQSxjQUFjLENBQUVrSixLQUhuQjtBQUlKO0FBQ0FDLE1BQUFBLE9BQU8sRUFBRSxnQkFBQTNKLFVBQVUsVUFBVixrREFBWTRKLGFBQVosc0JBQTZCNUosVUFBN0IsaURBQTZCLGFBQVkySixPQUF6QyxLQUFvRDtBQUx6RCxNQUp1QjtBQVc3QkUsSUFBQUEsTUFBTSxFQUFFdEosWUFYcUI7QUFZN0JtSixJQUFBQSxLQUFLLEVBQUVsSixjQUFGLGFBQUVBLGNBQUYsdUJBQUVBLGNBQWMsQ0FBRWtKLEtBWk07QUFhN0JJLElBQUFBLE1BQU0sRUFBRWxGLHFCQWJxQjtBQWM3QjJFLElBQUFBLFFBQVEsRUFBUkEsUUFkNkI7QUFlN0JwRyxJQUFBQSxJQUFJLEVBQUpBO0FBZjZCLEdBQUQsQ0F6VTdCO0FBQUEsTUF5VU80RyxVQXpVUCxZQXlVT0EsVUF6VVA7O0FBMlZEeE4sRUFBQUEsS0FBSyxDQUFDeUgsU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBTWdHLFNBQVM7QUFBQSwwRUFBRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBYztBQUMxQkYsZ0JBQUFBLE1BRFksR0FDRmxGLHFCQUFxQixLQUFLLFFBQTNCLEdBQXVDQSxxQkFBdkMsR0FBK0R1QyxTQUQ1RDs7QUFBQSxvQkFHWDJDLE1BSFc7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSx1QkFJQ2hGLGVBQWUsRUFKaEI7O0FBQUE7QUFJZGdGLGdCQUFBQSxNQUpjOztBQUFBO0FBQUE7QUFBQSx1QkFPVkMsVUFBVSxDQUFDRCxNQUFELENBQVYsQ0FBbUJHLElBQW5CLENBQXdCLFVBQUNDLE9BQUQsRUFBYTtBQUFFO0FBQzNDLHNCQUFJQSxPQUFKLEVBQWE7QUFDWC9GLG9CQUFBQSxPQUFPLENBQUNDLEdBQVI7QUFDQWhDLG9CQUFBQSxRQUFRLENBQUM7QUFDUGpCLHNCQUFBQSxTQUFTLEVBQUU7QUFESixxQkFBRCxDQUFSO0FBSUEsd0JBQU1nSixrQkFBa0IsR0FBRzFCLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZcEgsa0JBQVosQ0FBM0I7O0FBRUEsd0JBQUk2SSxrQkFBSixhQUFJQSxrQkFBSixlQUFJQSxrQkFBa0IsQ0FBRXpHLE1BQXhCLEVBQWdDO0FBQUEsa0VBQ055RyxrQkFETTtBQUFBOztBQUFBO0FBQzlCLCtFQUE0QztBQUFBLDhCQUFqQ0MsU0FBaUM7QUFBQSw4QkFDbEMvQixZQURrQyxHQUNqQi9HLGtCQUFrQixDQUFDOEksU0FBRCxDQURELENBQ2xDL0IsWUFEa0M7QUFFMUNBLDBCQUFBQSxZQUFZLElBQUlBLFlBQVksRUFBNUI7QUFDRDtBQUo2QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSy9COztBQUVEbEUsb0JBQUFBLE9BQU8sQ0FBQ2tHLElBQVIsQ0FBYSwyQ0FBYjtBQUNBeEgsb0JBQUFBLGVBQWUsU0FBZixJQUFBQSxlQUFlLFdBQWYsWUFBQUEsZUFBZSxDQUFFeUgsY0FBakI7QUFDRCxtQkFqQkQsTUFpQk87QUFDTG5HLG9CQUFBQSxPQUFPLENBQUN6QixLQUFSLENBQWMsd0RBQWQ7QUFDQU4sb0JBQUFBLFFBQVEsQ0FBQztBQUFFakIsc0JBQUFBLFNBQVMsRUFBRTtBQUFiLHFCQUFELENBQVI7QUFDRDtBQUNGLGlCQXRCSyxDQVBVOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUg7O0FBQUEsc0JBQVQ2SSxTQUFTO0FBQUE7QUFBQTtBQUFBLE9BQWY7O0FBZ0NBLFFBQUk3SSxTQUFKLEVBQWU7QUFDYmdELE1BQUFBLE9BQU8sQ0FBQ0MsR0FBUjs7QUFDQTRGLE1BQUFBLFNBQVM7QUFDVjtBQUNGLEdBckNELEVBcUNHLENBQUM3SSxTQUFELENBckNIO0FBdUNBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNFLFdBQVNvSiw4QkFBVCxDQUF3Q0MsU0FBeEMsRUFBbUR6SixHQUFuRCxFQUF3RDBKLG1CQUF4RCxFQUE2RTFMLE9BQTdFLEVBQThGO0FBQzVGLFFBQUkyTCxPQUFKO0FBQ0EsUUFBTUMsYUFBYSxHQUFHSCxTQUFILGFBQUdBLFNBQUgsdUJBQUdBLFNBQVMsQ0FBRUksS0FBWCxDQUFpQixNQUFqQixDQUF0QjtBQUNBLFFBQU1DLFlBQVksR0FBR2xDLGNBQWMsQ0FBQzVILEdBQUQsYUFBQ0EsR0FBRCx1QkFBQ0EsR0FBRyxDQUFFdEIsT0FBTixFQUFla0wsYUFBZixDQUFuQzs7QUFFQSxRQUFJRSxZQUFZLElBQUksQ0FBcEIsRUFBdUI7QUFDckIsVUFBTUMsY0FBYyxHQUFHSCxhQUFhLENBQUNFLFlBQUQsQ0FBcEM7QUFDQSxVQUFNRSxXQUFXLEdBQUdELGNBQWMsQ0FBQ0YsS0FBZixDQUFxQixNQUFyQixDQUFwQjtBQUNBLFVBQU1JLFVBQVUsR0FBR3JDLGNBQWMsQ0FBQzVILEdBQUQsYUFBQ0EsR0FBRCx1QkFBQ0EsR0FBRyxDQUFFdkIsS0FBTixFQUFhdUwsV0FBYixDQUFqQzs7QUFFQSxVQUFJQyxVQUFVLElBQUksQ0FBbEIsRUFBcUI7QUFDbkIsWUFBTUMsWUFBWSxHQUFHN04seUJBQXlCLENBQUM4TixzQkFBMUIsQ0FBaURULG1CQUFqRCxDQUFyQjtBQUNBdEcsUUFBQUEsT0FBTyxDQUFDQyxHQUFSLDhCQUFrQ3JGLE9BQWxDLHVDQUFzRWtNLFlBQVksQ0FBQ3ZHLFNBQWIsQ0FBdUIsQ0FBdkIsRUFBMEIsR0FBMUIsQ0FBdEU7QUFDQSxZQUFNeUcsUUFBUSxHQUFHSixXQUFXLENBQUNDLFVBQUQsQ0FBNUI7QUFDQSxZQUFNSSxXQUFXLEdBQUcsQ0FBQyxDQUFBckssR0FBRyxTQUFILElBQUFBLEdBQUcsV0FBSCxZQUFBQSxHQUFHLENBQUV2QixLQUFMLElBQWEsRUFBZCxFQUFrQmtFLE1BQXRDO0FBQ0FxSCxRQUFBQSxXQUFXLENBQUNDLFVBQUQsQ0FBWCxHQUEwQkcsUUFBUSxDQUFDekcsU0FBVCxDQUFtQixDQUFuQixFQUFzQjBHLFdBQVcsR0FBRyxDQUFwQyxJQUF5Q0gsWUFBbkU7QUFDQSxZQUFNSSxVQUFVLEdBQUdOLFdBQVcsQ0FBQ08sSUFBWixDQUFpQixNQUFqQixDQUFuQjtBQUNBWCxRQUFBQSxhQUFhLENBQUNFLFlBQUQsQ0FBYixHQUE4QlEsVUFBOUI7QUFDQVgsUUFBQUEsT0FBTyxHQUFHQyxhQUFhLENBQUNXLElBQWQsQ0FBbUIsTUFBbkIsQ0FBVjtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT1osT0FBUDtBQUNEOztBQUVEbk8sRUFBQUEsS0FBSyxDQUFDeUgsU0FBTixDQUFnQixZQUFNO0FBQUU7QUFDdEIsUUFBSWhELFdBQUosRUFBaUI7QUFDZixVQUFNbUosa0JBQWtCLEdBQUcxQixNQUFNLENBQUNDLElBQVAsQ0FBWXBILGtCQUFaLENBQTNCOztBQUVBLFVBQUk2SSxrQkFBSixhQUFJQSxrQkFBSixlQUFJQSxrQkFBa0IsQ0FBRXpHLE1BQXhCLEVBQWdDO0FBQzlCLFlBQUk4RyxTQUFTLEdBQUcvTixJQUFJLENBQUM4TyxlQUFMLENBQXFCMUksZUFBckIsYUFBcUJBLGVBQXJCLHVCQUFxQkEsZUFBZSxDQUFFSyxhQUF0QyxDQUFoQjtBQUNBLFlBQUlzSSxTQUFTLEdBQUcsS0FBaEI7QUFDQSxZQUFJek0sUUFBTyxHQUFHLENBQWQ7O0FBSDhCLG9EQUtOb0wsa0JBTE07QUFBQTs7QUFBQTtBQUs5QixpRUFBNEM7QUFBQSxnQkFBakNDLFVBQWlDO0FBQzFDckwsWUFBQUEsUUFBTyxHQUFHME0sUUFBUSxDQUFDckIsVUFBRCxDQUFsQjtBQUQwQyx5Q0FFWjlJLGtCQUFrQixDQUFDdkMsUUFBRCxDQUZOO0FBQUEsZ0JBRWxDcUosWUFGa0MsMEJBRWxDQSxVQUZrQztBQUFBLGdCQUV0QjVHLE9BRnNCLDBCQUV0QkEsS0FGc0I7O0FBSTFDLGdCQUFJNEcsWUFBSixFQUFnQjtBQUNkLGtCQUFJc0MsUUFBTyxTQUFYOztBQURjLGlDQUtWdEMsWUFBVSxDQUFDNUcsT0FBRCxDQUxBO0FBQUEsa0JBR1pULEtBSFksZ0JBR1pBLEdBSFk7QUFBQSxrQkFJWjBKLG9CQUpZLGdCQUlaQSxtQkFKWTs7QUFPZCxrQkFBSUEsb0JBQW1CLElBQUlELFNBQTNCLEVBQXNDO0FBQUU7QUFDdENFLGdCQUFBQSxRQUFPLEdBQUdILDhCQUE4QixDQUFDQyxTQUFELEVBQVl6SixLQUFaLEVBQWlCMEosb0JBQWpCLEVBQXNDMUwsUUFBdEMsQ0FBeEM7QUFDRDs7QUFFRCxrQkFBSTJMLFFBQUosRUFBYTtBQUNYRixnQkFBQUEsU0FBUyxHQUFHRSxRQUFaO0FBQ0QsZUFGRCxNQUVPO0FBQ0xjLGdCQUFBQSxTQUFTLEdBQUcsSUFBWjtBQUNBO0FBQ0Q7QUFDRjtBQUNGO0FBM0I2QjtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQTZCOUIsWUFBSUEsU0FBSixFQUFlO0FBQUU7QUFDZnJILFVBQUFBLE9BQU8sQ0FBQ0MsR0FBUiw4QkFBa0NyRixRQUFsQztBQUNBLGNBQUkyTSxXQUFKOztBQUZhLHNEQUlXdkIsa0JBSlg7QUFBQTs7QUFBQTtBQUliLG1FQUE0QztBQUFBLGtCQUFqQ0MsU0FBaUM7O0FBQzFDLGtCQUFNckwsU0FBTyxHQUFHME0sUUFBUSxDQUFDckIsU0FBRCxDQUF4Qjs7QUFEMEMsMENBRVo5SSxrQkFBa0IsQ0FBQ3ZDLFNBQUQsQ0FGTjtBQUFBLGtCQUVsQ3FKLFVBRmtDLHlCQUVsQ0EsVUFGa0M7QUFBQSxrQkFFdEI1RyxNQUZzQix5QkFFdEJBLEtBRnNCOztBQUkxQyxrQkFBSTRHLFVBQUosRUFBZ0I7QUFDZCxvQkFBSXNDLE9BQU8sU0FBWDs7QUFEYyxrQ0FNVnRDLFVBQVUsQ0FBQzVHLE1BQUQsQ0FOQTtBQUFBLG9CQUdabUssWUFIWSxlQUdaQSxZQUhZO0FBQUEsb0JBSVo1SyxLQUpZLGVBSVpBLEdBSlk7QUFBQSxvQkFLWjBKLG1CQUxZLGVBS1pBLG1CQUxZOztBQVFkLG9CQUFJQSxtQkFBbUIsSUFBSSxDQUFDQyxPQUE1QixFQUFxQztBQUNuQyxzQkFBSWtCLG1CQUFtQixHQUFHLElBQTFCOztBQUVBLHNCQUFJN0ssS0FBSixFQUFTO0FBQ1Asd0JBQUk0SyxZQUFKLEVBQWtCO0FBQUEsa0RBQ2V4TyxnQkFBZ0IsQ0FBQzBPLDZCQUFqQixDQUErQ3BCLG1CQUEvQyxFQUFvRWtCLFlBQXBFLENBRGY7QUFBQSwwQkFDUkcsa0JBRFEseUJBQ1JBLGtCQURROztBQUVoQkYsc0JBQUFBLG1CQUFtQixHQUFHRSxrQkFBdEI7QUFDRCxxQkFIRCxNQUdPO0FBQ0xGLHNCQUFBQSxtQkFBbUIsR0FBR25CLG1CQUF0QjtBQUNEOztBQUNEaUIsb0JBQUFBLFdBQVcsR0FBR0UsbUJBQW1CLEtBQUkvSSxlQUFKLGFBQUlBLGVBQUosdUJBQUlBLGVBQWUsQ0FBRWtKLFdBQWpCLENBQTZCaEwsS0FBRyxDQUFDdEIsT0FBakMsRUFBMENzQixLQUFHLENBQUN2QixLQUE5QyxFQUFxRDtBQUFFNkgsc0JBQUFBLFlBQVksRUFBRXVFO0FBQWhCLHFCQUFyRCxDQUFKLENBQWpDO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7QUE5Qlk7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFnQ2JwQixVQUFBQSxTQUFTLEdBQUc3TixNQUFNLENBQUNxUCxNQUFQLENBQWNOLFdBQWQsRUFBMkI7QUFBRU8sWUFBQUEsY0FBYyxFQUFFO0FBQWxCLFdBQTNCLENBQVo7QUFDRDs7QUFFRDlILFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixtREFBdURvRyxTQUFTLENBQUM5RixTQUFWLENBQW9CLENBQXBCLEVBQXVCLEdBQXZCLENBQXZEO0FBQ0F0QyxRQUFBQSxRQUFRLENBQUM7QUFBRW5CLFVBQUFBLFdBQVcsRUFBRXVKLFNBQWY7QUFBMEJySixVQUFBQSxTQUFTLEVBQUUsSUFBckM7QUFBMkNILFVBQUFBLFdBQVcsRUFBRTtBQUF4RCxTQUFELENBQVI7QUFDRDtBQUNGO0FBQ0YsR0F4RUQsRUF3RUcsQ0FBQ0EsV0FBRCxDQXhFSDtBQTBFQXpFLEVBQUFBLEtBQUssQ0FBQ3lILFNBQU4sQ0FBZ0IsWUFBTTtBQUNwQixRQUFJbkIsZUFBZSxTQUFmLElBQUFBLGVBQWUsV0FBZixJQUFBQSxlQUFlLENBQUV0QixZQUFqQixJQUFpQyxDQUFDbEUsT0FBTyxDQUFDa0UsWUFBRCxFQUFlc0IsZUFBZixhQUFlQSxlQUFmLHVCQUFlQSxlQUFlLENBQUV0QixZQUFoQyxDQUE3QyxFQUE0RjtBQUFBOztBQUMxRjtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUEsVUFBTUEsYUFBWSxHQUFHc0IsZUFBSCxhQUFHQSxlQUFILHVCQUFHQSxlQUFlLENBQUV0QixZQUF0Qzs7QUFDQWEsTUFBQUEsUUFBUSxDQUFDO0FBQUViLFFBQUFBLFlBQVksRUFBWkE7QUFBRixPQUFELENBQVI7QUFDQSxVQUFNMkssY0FBYyxHQUFHLEVBQXZCO0FBQ0EsVUFBTUMsZUFBZSxHQUFHdEsseUJBQUgsYUFBR0EseUJBQUgsZ0RBQUdBLHlCQUF5QixDQUFFdUssV0FBOUIsMERBQUcsc0JBQXdDQyxRQUFoRTs7QUFFQSxVQUFJRixlQUFKLEVBQXFCO0FBQUEsb0RBQ0k1SyxhQUFZLElBQUksRUFEcEI7QUFBQTs7QUFBQTtBQUNuQixpRUFBMkM7QUFBQSxnQkFBaEMrRixRQUFnQztBQUFBLGdCQUV2QzdILFFBRnVDLEdBS3JDNkgsUUFMcUMsQ0FFdkM3SCxPQUZ1QztBQUFBLGdCQUd2Q0QsTUFIdUMsR0FLckM4SCxRQUxxQyxDQUd2QzlILEtBSHVDO0FBQUEsZ0JBSXZDZ0ksU0FKdUMsR0FLckNGLFFBTHFDLENBSXZDRSxTQUp1Qzs7QUFPekMsZ0JBQUksQ0FBQzJFLGVBQWUsQ0FBQzFNLFFBQUQsQ0FBcEIsRUFBK0I7QUFDN0IwTSxjQUFBQSxlQUFlLENBQUMxTSxRQUFELENBQWYsR0FBMkIsRUFBM0I7QUFDRDs7QUFFRCxnQkFBSyxPQUFPNkgsUUFBUSxDQUFDOUgsS0FBaEIsS0FBMEIsUUFBM0IsSUFBeUM4SCxRQUFRLENBQUM5SCxLQUFULENBQWU4TSxRQUFmLENBQXdCLEdBQXhCLENBQTdDLEVBQTRFO0FBQzFFLGtCQUFNQyxNQUFNLEdBQUdqUCxTQUFTLENBQUM0TyxjQUFELFlBQW9Cek0sUUFBcEIsY0FBK0JELE1BQS9CLEVBQXhCO0FBQ0Esa0JBQUk2SCxZQUFZLEdBQUcsRUFBbkI7O0FBRjBFLDBEQUlsRGtGLE1BSmtEO0FBQUE7O0FBQUE7QUFJMUUsdUVBQWdDO0FBQUEsc0JBQXJCQyxTQUFxQjtBQUM5QixzQkFBTUMsRUFBRSxHQUFHRCxTQUFTLENBQUNoRixTQUFWLENBQW9CSCxZQUEvQjtBQUNBQSxrQkFBQUEsWUFBWSxHQUFHQSxZQUFZLENBQUNJLE1BQWIsQ0FBb0JnRixFQUFwQixDQUFmO0FBQ0Q7QUFQeUU7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFRMUVOLGNBQUFBLGVBQWUsQ0FBQzFNLFFBQUQsQ0FBZixDQUF5QkQsTUFBekIsSUFBa0M7QUFBRTZILGdCQUFBQSxZQUFZLEVBQVpBO0FBQUYsZUFBbEM7QUFDRCxhQVRELE1BU087QUFDTDhFLGNBQUFBLGVBQWUsQ0FBQzFNLFFBQUQsQ0FBZixDQUF5QkQsTUFBekIsSUFBa0MwTSxjQUFjLENBQUN6TSxRQUFELENBQWQsQ0FBd0JELE1BQXhCLENBQWxDO0FBQ0Q7QUFDRjtBQXhCa0I7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUEwQm5CLFlBQU1rTixZQUFZLEdBQUd4UCx3QkFBd0IsQ0FBQztBQUM1Q3lQLFVBQUFBLFVBQVUsRUFBRVIsZUFEZ0M7QUFFNUNwTCxVQUFBQSxHQUFHLEVBQUVKLGFBQUYsYUFBRUEsYUFBRix1QkFBRUEsYUFBYSxDQUFFcEIsU0FGd0I7QUFHNUNxTixVQUFBQSxLQUFLLEVBQUVqTSxhQUFGLGFBQUVBLGFBQUYsdUJBQUVBLGFBQWEsQ0FBRWlNLEtBSHNCO0FBSTVDQyxVQUFBQSxVQUFVLEVBQUVsTSxhQUFGLGFBQUVBLGFBQUYsdUJBQUVBLGFBQWEsQ0FBRWtNO0FBSmlCLFNBQUQsQ0FBN0M7QUFNQTFJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGNBQVosRUFBNEJzSSxZQUE1QjtBQUNEO0FBQ0Y7QUFDRixHQXhERCxFQXdERyxDQUFDN0osZUFBRCxhQUFDQSxlQUFELHVCQUFDQSxlQUFlLENBQUV0QixZQUFsQixFQUFnQ00seUJBQWhDLGFBQWdDQSx5QkFBaEMsdUJBQWdDQSx5QkFBeUIsQ0FBRXVLLFdBQTNELENBeERIO0FBMERBLE1BQU1VLHNCQUFzQixHQUFHdkwsWUFBSCxhQUFHQSxZQUFILHVCQUFHQSxZQUFZLENBQUV3TCxHQUFkLENBQWtCLFVBQUNDLGlCQUFELEVBQW9CakUsS0FBcEIsRUFBOEI7QUFBQTs7QUFDN0UsUUFBTWtFLG1CQUFtQixHQUFHLENBQUFELGlCQUFpQixTQUFqQixJQUFBQSxpQkFBaUIsV0FBakIscUNBQUFBLGlCQUFpQixDQUFFeEYsU0FBbkIsZ0ZBQThCSCxZQUE5QixLQUE4QyxJQUExRSxDQUQ2RSxDQUU3RTs7QUFGNkUsZ0JBR2xEMkYsaUJBQWlCLElBQUksRUFINkI7QUFBQSxRQUdyRXZOLE9BSHFFLFNBR3JFQSxPQUhxRTtBQUFBLFFBRzVERCxLQUg0RCxTQUc1REEsS0FINEQ7O0FBSTdFLFFBQU0wTixVQUFVLG1DQUNYM04sU0FEVztBQUVkRSxNQUFBQSxPQUFPLEVBQVBBLE9BRmM7QUFHZEQsTUFBQUEsS0FBSyxFQUFMQTtBQUhjLE1BQWhCOztBQUtBLFFBQU0yTiw2QkFBNkIsbUNBQzlCdEYsNEJBRDhCO0FBRWpDSyxNQUFBQSxZQUFZLEVBQUVhLEtBRm1CO0FBR2pDa0UsTUFBQUEsbUJBQW1CLEVBQW5CQSxtQkFIaUM7QUFJakMxTixNQUFBQSxTQUFTLEVBQUUyTixVQUpzQjtBQUtqQ3BMLE1BQUFBLDRCQUE0QixFQUE1QkE7QUFMaUMsTUFBbkM7O0FBUUEsd0JBQ0Usb0JBQUMsYUFBRCxlQUNNZSxlQUROO0FBRUUsTUFBQSxZQUFZLEVBQUVrRSxZQUZoQjtBQUdFLE1BQUEsWUFBWSxFQUFFZ0MsS0FIaEI7QUFJRSxNQUFBLFNBQVMsRUFBRWpELFNBSmI7QUFLRSxNQUFBLGtCQUFrQixFQUFFbUIsbUJBTHRCO0FBTUUsTUFBQSxRQUFRLEVBQUVsRixRQU5aO0FBT0UsTUFBQSxjQUFjLEVBQUU1QixjQVBsQjtBQVFFLE1BQUEsSUFBSSxFQUFFZ0MsS0FSUjtBQVNFLE1BQUEsR0FBRyxFQUFFNEcsS0FUUDtBQVVFLE1BQUEsUUFBUSxFQUFFckMsUUFWWjtBQVdFLE1BQUEsU0FBUyxFQUFFd0csVUFYYjtBQVlFLE1BQUEsTUFBTSxFQUFFL0wsU0FaVixDQWFFO0FBYkY7QUFjRSxNQUFBLDRCQUE0QixFQUFFZ00sNkJBZGhDO0FBZUUsTUFBQSxvQkFBb0IsRUFBRXZNLG9CQWZ4QjtBQWdCRSxNQUFBLE1BQU0sRUFBRS9CLE1BaEJWO0FBaUJFLE1BQUEsU0FBUyxFQUFFd0I7QUFqQmIsT0FERjtBQXFCRCxHQXRDOEIsQ0FBL0I7QUF3Q0Esc0JBQ0Usb0JBQUMseUJBQUQ7QUFDRSxJQUFBLFVBQVUsRUFBRTRCLFVBRGQ7QUFFRSxJQUFBLFlBQVksRUFBRW9CLGFBRmhCO0FBR0UsSUFBQSxLQUFLLEVBQUUxQyxhQUFGLGFBQUVBLGFBQUYsdUJBQUVBLGFBQWEsQ0FBRWlNLEtBSHhCO0FBSUUsSUFBQSxVQUFVLEVBQUVsUCxhQUFhLENBQUNpRCxhQUFELGFBQUNBLGFBQUQsdUJBQUNBLGFBQWEsQ0FBRWtNLFVBQWhCLENBSjNCO0FBS0UsSUFBQSxlQUFlLEVBQUVsTDtBQUxuQixrQkFPRSxvQkFBQyxJQUFEO0FBQ0UsSUFBQSxFQUFFLDJCQUFvQjVDLE9BQXBCLENBREo7QUFFRSxJQUFBLEtBQUssRUFBRWlJLGNBRlQ7QUFHRSxJQUFBLGFBQWEsRUFBRTlCLGNBQWMsR0FBRyxXQUhsQztBQUlFLElBQUEsS0FBSyxFQUFFZ0IsS0FKVDtBQUtFLElBQUEsT0FBTyxFQUFFbEgsT0FMWDtBQU1FLElBQUEsT0FBTyxFQUFFbUgsT0FOWDtBQU9FLElBQUEsT0FBTyxFQUFFQyxPQVBYO0FBUUUsSUFBQSxRQUFRLEVBQUVyRSxRQVJaO0FBU0UsSUFBQSxTQUFTLEVBQUVzRSxTQVRiO0FBVUUsSUFBQSxVQUFVLEVBQUVFLFVBVmQ7QUFXRSxJQUFBLFdBQVcsRUFBRXZFLFdBWGY7QUFZRSxJQUFBLFlBQVksRUFBRXdFLFlBWmhCO0FBYUUsSUFBQSxZQUFZLEVBQUVGLFlBYmhCO0FBY0UsSUFBQSxlQUFlLEVBQUVHLGVBZG5CO0FBZUUsSUFBQSxrQkFBa0IsRUFBRWhCLG9CQWZ0QjtBQWdCRSxJQUFBLGtCQUFrQixNQWhCcEI7QUFpQkUsSUFBQSxXQUFXLEVBQUVFLFdBakJmO0FBa0JFLElBQUEsVUFBVSxFQUFFckYsVUFBVSxHQUFHO0FBQUEsYUFBTUEsVUFBVSxDQUFDNUIsRUFBRCxDQUFoQjtBQUFBLEtBQUgsR0FBMEIsSUFsQmxEO0FBbUJFLElBQUEsUUFBUSxFQUFFZ0osVUFBVSxJQUFJQyxlQW5CMUI7QUFvQkUsSUFBQSxLQUFLLEVBQUV4RyxTQUFTLElBQUksQ0FBQ0wsa0JBcEJ2QjtBQXFCRSxJQUFBLFVBQVUsRUFBRTtBQUFBLGFBQU1zQixRQUFRLENBQUM7QUFBRXBCLFFBQUFBLFdBQVcsRUFBRTtBQUFmLE9BQUQsQ0FBZDtBQUFBO0FBckJkLGtCQXVCRTtBQUFLLElBQUEsRUFBRSxFQUFDO0FBQVIsS0FDRzhMLHNCQURILENBdkJGLENBUEYsQ0FERjtBQXFDRDtBQUVEck8sYUFBYSxDQUFDMk8sU0FBZCxHQUEwQjtBQUN4QjtBQUNBMU8sRUFBQUEsRUFBRSxFQUFFbEMsU0FBUyxDQUFDNlEsTUFGVTs7QUFHeEI7QUFDQTFPLEVBQUFBLElBQUksRUFBRW5DLFNBQVMsQ0FBQzhRLElBQVYsQ0FBZUMsVUFKRzs7QUFLeEI7QUFDQTNPLEVBQUFBLEtBQUssRUFBRXBDLFNBQVMsQ0FBQzZRLE1BQVYsQ0FBaUJFLFVBTkE7O0FBT3hCO0FBQ0FqTyxFQUFBQSxXQUFXLEVBQUU5QyxTQUFTLENBQUM4USxJQUFWLENBQWVDLFVBUko7O0FBU3hCO0FBQ0F4TyxFQUFBQSxPQUFPLEVBQUV2QyxTQUFTLENBQUNnUixNQUFWLENBQWlCRCxVQVZGOztBQVd4QjtBQUNBdE8sRUFBQUEsUUFBUSxFQUFFekMsU0FBUyxDQUFDaVIsS0FBVixDQUFnQjtBQUN4QjtBQUNBdE8sSUFBQUEsVUFBVSxFQUFFM0MsU0FBUyxDQUFDNlEsTUFBVixDQUFpQkUsVUFGTDs7QUFHeEI7QUFDQXJPLElBQUFBLEtBQUssRUFBRTFDLFNBQVMsQ0FBQzZRLE1BQVYsQ0FBaUJFLFVBSkE7O0FBS3hCO0FBQ0FuTyxJQUFBQSxVQUFVLEVBQUU1QyxTQUFTLENBQUM2USxNQUFWLENBQWlCRSxVQU5MOztBQU94QjtBQUNBbE8sSUFBQUEscUJBQXFCLEVBQUU3QyxTQUFTLENBQUM2USxNQUFWLENBQWlCRTtBQVJoQixHQUFoQixDQVpjO0FBc0J4QmhPLEVBQUFBLFNBQVMsRUFBRS9DLFNBQVMsQ0FBQ2lSLEtBQVYsQ0FBZ0I7QUFDekI7QUFDQTlOLElBQUFBLFNBQVMsRUFBRW5ELFNBQVMsQ0FBQzZRLE1BQVYsQ0FBaUJFLFVBRkg7O0FBR3pCO0FBQ0E5TixJQUFBQSxPQUFPLEVBQUVqRCxTQUFTLENBQUNrUixTQUFWLENBQW9CLENBQUNsUixTQUFTLENBQUNnUixNQUFYLEVBQW1CaFIsU0FBUyxDQUFDNlEsTUFBN0IsQ0FBcEIsRUFBMERFLFVBSjFDOztBQUt6QjtBQUNBL04sSUFBQUEsS0FBSyxFQUFFaEQsU0FBUyxDQUFDa1IsU0FBVixDQUFvQixDQUFDbFIsU0FBUyxDQUFDZ1IsTUFBWCxFQUFtQmhSLFNBQVMsQ0FBQzZRLE1BQTdCLENBQXBCLEVBQTBERTtBQU54QyxHQUFoQixDQXRCYTs7QUE4QnhCO0FBQ0ExTyxFQUFBQSxNQUFNLEVBQUVyQyxTQUFTLENBQUM2USxNQUFWLENBQWlCRSxVQS9CRDs7QUFnQ3hCO0FBQ0F6TyxFQUFBQSxNQUFNLEVBQUV0QyxTQUFTLENBQUM2USxNQUFWLENBQWlCRSxVQWpDRDs7QUFrQ3hCO0FBQ0F6TixFQUFBQSxrQkFBa0IsRUFBRXRELFNBQVMsQ0FBQ21SLElBbkNOOztBQW9DeEI7QUFDQTNPLEVBQUFBLE9BQU8sRUFBRXhDLFNBQVMsQ0FBQ29SLE1BckNLOztBQXNDeEI7QUFDQWhPLEVBQUFBLFlBQVksRUFBRXBELFNBQVMsQ0FBQ3FSLEdBdkNBOztBQXdDeEI7QUFDQWhPLEVBQUFBLG1CQUFtQixFQUFFckQsU0FBUyxDQUFDOFEsSUFBVixDQUFlQyxVQXpDWjs7QUEwQ3hCO0FBQ0Y7QUFDQTtBQUNBO0FBQ0V4TixFQUFBQSxlQUFlLEVBQUV2RCxTQUFTLENBQUM4USxJQTlDSDs7QUErQ3hCO0FBQ0F0TixFQUFBQSxVQUFVLEVBQUV4RCxTQUFTLENBQUNvUixNQWhERTs7QUFpRHhCO0FBQ0EzTixFQUFBQSxZQUFZLEVBQUV6RCxTQUFTLENBQUM2USxNQWxEQTs7QUFtRHhCO0FBQ0FuTixFQUFBQSxhQUFhLEVBQUUxRCxTQUFTLENBQUM2USxNQXBERDs7QUFxRHhCO0FBQ0FsTixFQUFBQSxjQUFjLEVBQUUzRCxTQUFTLENBQUM4USxJQXRERjs7QUF1RHhCO0FBQ0FsTixFQUFBQSxvQkFBb0IsRUFBRTVELFNBQVMsQ0FBQzhRLElBeERSOztBQXlEeEI7QUFDQWpOLEVBQUFBLFNBQVMsRUFBRTdELFNBQVMsQ0FBQzhRLElBMURHOztBQTJEeEI7QUFDQWhOLEVBQUFBLFVBQVUsRUFBRTlELFNBQVMsQ0FBQzhRLElBNURFOztBQTZEeEI7QUFDQS9NLEVBQUFBLFlBQVksRUFBRS9ELFNBQVMsQ0FBQzZRLE1BOURBOztBQStEeEI7QUFDQTdNLEVBQUFBLGNBQWMsRUFBRWhFLFNBQVMsQ0FBQ29SLE1BaEVGOztBQWlFeEI7QUFDQW5OLEVBQUFBLGVBQWUsRUFBRWpFLFNBQVMsQ0FBQzhRLElBbEVIOztBQW1FeEI7QUFDQTVNLEVBQUFBLFNBQVMsRUFBRWxFLFNBQVMsQ0FBQzZRLE1BcEVHOztBQXFFeEI7QUFDQXpNLEVBQUFBLG9CQUFvQixFQUFFcEUsU0FBUyxDQUFDOFEsSUF0RVI7O0FBdUV4QjtBQUNBM00sRUFBQUEsYUFBYSxFQUFFbkUsU0FBUyxDQUFDb1I7QUF4RUQsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQge1xuICBDYXJkLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZVVzZXJCcmFuY2gsXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgeyBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYgfSBmcm9tICd1dy1xdW90ZS1oZWxwZXJzJ1xuaW1wb3J0IHsgQWxpZ25tZW50SGVscGVycywgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyB9IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgeyBTY3JpcHR1cmVQYW5lLCBTY3JpcHR1cmVTZWxlY3RvciB9IGZyb20gJy4uJ1xuaW1wb3J0IHsgdXNlU2NyaXB0dXJlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIGZpeE9jY3VycmVuY2UsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgaWQsXG4gIGlzTlQsXG4gIHRpdGxlLFxuICBzZXJ2ZXIsXG4gIGFwcFJlZixcbiAgY2FyZE51bSxcbiAgY2xhc3NlcyxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICBnZXRMYW5ndWFnZSxcbiAgcmVmZXJlbmNlOiB7XG4gICAgdmVyc2UsXG4gICAgY2hhcHRlcixcbiAgICBwcm9qZWN0SWQ6IGJvb2tJZCxcbiAgfSxcbiAgcmVzb3VyY2VMaW5rLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgaHR0cENvbmZpZyxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZmV0Y2hHbG9zc2VzRm9yVmVyc2UsXG4gIHRyYW5zbGF0ZSxcbiAgb25NaW5pbWl6ZSxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBhdXRoZW50aWNhdGlvbixcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBib29rSW5kZXgsXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxufSkge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICByZWY6IGFwcFJlZixcbiAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgc2hhOiBudWxsLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIHJlZixcbiAgICBzYXZlQ2xpY2tlZCxcbiAgICBzYXZlQ29udGVudCxcbiAgICBzaGEsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW3ZlcnNlT2JqZWN0c01hcCwgc2V0VmVyc2VPYmplY3RzTWFwXSA9IFJlYWN0LnVzZVN0YXRlKG5ldyBNYXAoKSlcbiAgY29uc3QgW29yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UsIHNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgW3NlbGVjdGlvbnMsIF9zZXRTZWxlY3Rpb25zXSA9IFJlYWN0LnVzZVN0YXRlKG5ldyBNYXAoKSlcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGlmICh1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICBodHRwQ29uZmlnID0geyAuLi5odHRwQ29uZmlnLCBjYWNoZTogeyBtYXhBZ2U6IDAgfSB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG4gIH1cblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBpc05ULFxuICAgIHRpdGxlLFxuICAgIHZlcnNlLFxuICAgIG93bmVyLFxuICAgIGJvb2tJZCxcbiAgICBhcHBSZWY6IHJlZixcbiAgICBzZXJ2ZXIsXG4gICAgY2FyZE51bSxcbiAgICBjaGFwdGVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICByZXNvdXJjZUxpbmssXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIGh0dHBDb25maWcsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgd2hvbGVCb29rOiB0cnVlLFxuICB9KVxuXG4gIGNvbnN0IGZldGNoUmVzcF8gPSBzY3JpcHR1cmVDb25maWc/LmZldGNoUmVzcG9uc2VcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCByZWZlcmVuY2VfID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UgfHwgbnVsbFxuXG4gIC8qKlxuICAgKiB1cGRhdGUgc2VsZWN0aW9ucyBpZiBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7TWFwfSBuZXdTZWxlY3Rpb25zXG4gICAqL1xuICBmdW5jdGlvbiBzZXRTZWxlY3Rpb25zKG5ld1NlbGVjdGlvbnMpIHtcbiAgICBsZXQgX25ld1NlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG5cbiAgICBpZiAobmV3U2VsZWN0aW9ucz8uc2l6ZSAmJiBjdXJyZW50VmVyc2VTcGFucz8ubGVuZ3RoKSB7IC8vIGFkZCBzdXBwb3J0IGZvciB2ZXJzZSByYW5nZVxuICAgICAgX25ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKG5ld1NlbGVjdGlvbnMpIC8vIHNoYWxsb3cgY29weVxuICAgICAgbGV0IHByaW1hcnlSZWZlcmVuY2UgPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcbiAgICAgIGNvbnN0IF9zZWxlY3Rpb25zID0gX25ld1NlbGVjdGlvbnMuZ2V0KHByaW1hcnlSZWZlcmVuY2UpXG5cbiAgICAgIGZvciAoY29uc3QgdmVyc2VTcGFuIG9mIGN1cnJlbnRWZXJzZVNwYW5zKSB7XG4gICAgICAgIF9uZXdTZWxlY3Rpb25zLnNldCh2ZXJzZVNwYW4sIF9zZWxlY3Rpb25zKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChzZWxlY3Rpb25zLCBfbmV3U2VsZWN0aW9ucykpIHtcbiAgICAgIF9zZXRTZWxlY3Rpb25zKF9uZXdTZWxlY3Rpb25zKVxuICAgIH1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGdldCB0aGUgX3NoYSBmcm9tIGxhc3Qgc2NyaXB0dXJlIGRvd25sb2FkXG4gICAgY29uc3QgX3NoYSA9IGZldGNoUmVzcF8/LmRhdGE/LnNoYSB8fCBudWxsXG4gICAgY29uc29sZS5sb2coYGZvciAke0pTT04uc3RyaW5naWZ5KHJlZmVyZW5jZV8pfSBuZXcgc2hhIGlzICR7X3NoYX1gKVxuXG4gICAgaWYgKF9zaGEgIT09IHNoYSkge1xuICAgICAgc2V0U3RhdGUoeyBzaGE6IF9zaGEgfSlcbiAgICB9XG4gIH0sIFtmZXRjaFJlc3BfXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9IGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJlxuICAgIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uc3Vic3RyaW5nKDAsIGxvZ2dlZEluVXNlci5sZW5ndGgpID09PSBsb2dnZWRJblVzZXIpICkgLy8gbm90IHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZTogeyB3b3JraW5nUmVzb3VyY2VCcmFuY2gsIHVzaW5nVXNlckJyYW5jaDogdXNpbmdVc2VyQnJhbmNoXyB9LFxuICAgIGFjdGlvbnM6IHsgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2ggfSxcbiAgfSA9IHVzZVVzZXJCcmFuY2goe1xuICAgIG93bmVyLFxuICAgIHNlcnZlcixcbiAgICBhcHBSZWYsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKHVzaW5nVXNlckJyYW5jaF8gIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IHVzaW5nVXNlckJyYW5jaF8gfSlcbiAgICB9XG4gIH0sIFt1c2luZ1VzZXJCcmFuY2hfLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGxldCB3b3JraW5nUmVmXyA9IHdvcmtpbmdSZWYgfHwgYXBwUmVmXG5cbiAgICBpZiAocmVmICE9PSB3b3JraW5nUmVmXykge1xuICAgICAgc2V0U3RhdGUoeyByZWY6IHdvcmtpbmdSZWZfIH0pXG4gICAgfVxuICB9LCBbd29ya2luZ1JlZiwgcmVmLCBhcHBSZWZdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHsgLi4uc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZSB9XG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG4gIGNvbnN0IHVzaW5nT3JpZ2luYWxCaWJsZSA9IGlzT3JpZ2luYWxCaWJsZShzY3JpcHR1cmVDb25maWdbJ3Jlc291cmNlJ10/LnByb2plY3RJZClcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gcHJlLWNhY2hlIGdsb3NzZXMgb24gdmVyc2UgY2hhbmdlXG4gICAgY29uc3QgZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAvLyBnZXQgdmVyc2Ugb2JqZWN0cyBvZiBhbGwgdGhlIHZlcnNlc1xuICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZiBvZiBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZiB8fCBbXSkge1xuICAgICAgICBjb25zdCBfdmVyc2VPYmplY3RzID0gdmVyc2VSZWY/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzXG4gICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQoX3ZlcnNlT2JqZWN0cylcbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlV29yZFBvcG92ZXIgJiYgdmVyc2VPYmplY3RzPy5sZW5ndGggJiYgZmV0Y2hHbG9zc2VzRm9yVmVyc2UpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgYXdhaXQgZmV0Y2hHbG9zc2VzRm9yVmVyc2UodmVyc2VPYmplY3RzLCBsYW5ndWFnZUlkXylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXNpbmdPcmlnaW5hbEJpYmxlKSB7XG4gICAgICBmZXRjaEdsb3NzRGF0YUZvclZlcnNlKClcbiAgICB9XG4gIH0sIFsgdmVyc2VzRm9yUmVmLCBsYW5ndWFnZUlkXyBdKVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5wcm9qZWN0SWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLnByb2plY3RJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHsgb25TYXZlRWRpdCB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCA1MDAwLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgbGV0IGJyYW5jaCA9ICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09ICdtYXN0ZXInKSA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IHVuZGVmaW5lZFxuXG4gICAgICBpZiAoIWJyYW5jaCkge1xuICAgICAgICBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKSAvLyBtYWtlIHN1cmUgdXNlciBicmFuY2ggZXhpc3RzIGFuZCBnZXQgbmFtZVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBvblNhdmVFZGl0KGJyYW5jaCkudGhlbigoc3VjY2VzcykgPT4geyAvLyBwdXNoIGNoYW5nZWQgdG8gc2VydmVyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjbGVhckNoYW5nZXMgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCcpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgX3NhdmVFZGl0KClcbiAgICB9XG4gIH0sIFtzdGFydFNhdmVdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBjb25zdCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuXG4gICAgICBpZiAodmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gbmV3IFVTRk0gZm9yIGNhcmQ6fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGhcbiAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byB2ZXJzZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICBsZXQgYmlibGVVc2ZtID0gY29yZS5nZXRSZXNwb25zZURhdGEoc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlKVxuICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtKSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7IHZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzXyB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ29udGVudDogYmlibGVVc2ZtLCBzdGFydFNhdmU6IHRydWUsIHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZiAmJiAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmKSkge1xuICAgICAgLy8gY29uc3QgX21hcCA9IG5ldyBNYXAoKVxuICAgICAgLy8gY29uc3QgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyhvcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlPy52ZXJzZU9iamVjdHMpLy9jb252ZXJ0aW5nIG9jY3VyZW5jZSBmcm9tIHN0cmluZyB0byBpbnRlZ2Vyc1xuICAgICAgLy8gX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG5cbiAgICAgIC8vIGlmIChjdXJyZW50VmVyc2VTcGFucz8ubGVuZ3RoKSB7IC8vIGFkZCBzdXBwb3J0IGZvciB2ZXJzZSByYW5nZXNcbiAgICAgIC8vICAgZm9yIChjb25zdCB2ZXJzZVNwYW4gb2YgY3VycmVudFZlcnNlU3BhbnMpIHtcbiAgICAgIC8vICAgICBfbWFwLnNldCh2ZXJzZVNwYW4sIHZlcnNlT2JqZWN0cylcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuXG4gICAgICAvLyBpZiAoIWlzRXF1YWwodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgLy8gICBzZXRWZXJzZU9iamVjdHNNYXAoX21hcClcbiAgICAgIC8vIH1cblxuICAgICAgY29uc3QgdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmIH0pXG4gICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlPy5ib29rT2JqZWN0cz8uY2hhcHRlcnNcblxuICAgICAgaWYgKGJvb2tWZXJzZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmIG9mIHZlcnNlc0ZvclJlZiB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICAgIHZlcnNlRGF0YSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcblxuICAgICAgICAgIGlmICghYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlUmVmLnZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlUmVmLnZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMob3JpZ2luYWxWZXJzZXMsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcbiAgICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXSA9IG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW3ZlcnNlXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1b3RlTWF0Y2hlcyA9IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZih7XG4gICAgICAgICAgYm9va09iamVjdDogYm9va1ZlcnNlT2JqZWN0LFxuICAgICAgICAgIHJlZjogc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuICAgICAgICBjb25zb2xlLmxvZygncXVvdGVNYXRjaGVzJywgcXVvdGVNYXRjaGVzKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLCBvcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlPy5ib29rT2JqZWN0c10pXG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IHZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IG51bGxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4ucmVmZXJlbmNlLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIHNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UsXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgb25TZWxlY3Rpb25zPXtzZXRTZWxlY3Rpb25zfVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlfVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIHZlcnNlT2JqZWN0c01hcD17dmVyc2VPYmplY3RzTWFwfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkKSA6IG51bGx9XG4gICAgICAgIGVkaXRhYmxlPXtlbmFibGVFZGl0IHx8IGVuYWJsZUFsaWdubWVudH1cbiAgICAgICAgc2F2ZWQ9e3N0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfVxuICAgICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPVwic2NyaXB0dXJlLXBhbmUtbGlzdFwiPlxuICAgICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQ2FyZD5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBwcm9qZWN0SWQgKGJvb2tJRCkgdG8gdXNlICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gcHJlLWxvYWQgbGV4aWNvbiBkYXRhIGZvciB2ZXJzZSAqL1xuICBmZXRjaEdsb3NzZXNGb3JWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbn0iXX0=
|
|
1065
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJDYXJkIiwidXNlQ2FyZFN0YXRlIiwidXNlVXNlckJyYW5jaCIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsImdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiaXNFcXVhbCIsImdldFZlcnNlcyIsIlNjcmlwdHVyZVBhbmUiLCJTY3JpcHR1cmVTZWxlY3RvciIsInVzZVNjcmlwdHVyZVNldHRpbmdzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsIlNjcmlwdHVyZUNhcmQiLCJpZCIsImlzTlQiLCJ0aXRsZSIsInNlcnZlciIsImFwcFJlZiIsImNhcmROdW0iLCJjbGFzc2VzIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwiZ2V0TGFuZ3VhZ2UiLCJyZWZlcmVuY2UiLCJ2ZXJzZSIsImNoYXB0ZXIiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJyZXNvdXJjZUxpbmsiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwib25SZXNvdXJjZUVycm9yIiwiaHR0cENvbmZpZyIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJnZXRMZXhpY29uRGF0YSIsImZldGNoR2xvc3Nlc0ZvclZlcnNlIiwidHJhbnNsYXRlIiwib25NaW5pbWl6ZSIsImxvZ2dlZEluVXNlciIsImF1dGhlbnRpY2F0aW9uIiwic2V0U2F2ZWRDaGFuZ2VzIiwiYm9va0luZGV4Iiwic2VsZWN0ZWRRdW90ZSIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidXNlU3RhdGUiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2hhIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNGb3JSZWYiLCJzdGF0ZSIsInNldFN0YXRlXyIsIk1hcCIsInZlcnNlT2JqZWN0c01hcCIsInNldFZlcnNlT2JqZWN0c01hcCIsIm9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UiLCJzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsInNlbGVjdGlvbnMiLCJfc2V0U2VsZWN0aW9ucyIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwic2V0VXJsRXJyb3IiLCJlcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2NyaXB0dXJlQ29uZmlnIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoUmVzcF8iLCJmZXRjaFJlc3BvbnNlIiwicmVwbyIsInJlZmVyZW5jZV8iLCJzZXRTZWxlY3Rpb25zIiwibmV3U2VsZWN0aW9ucyIsIl9uZXdTZWxlY3Rpb25zIiwic2l6ZSIsImN1cnJlbnRWZXJzZVNwYW5zIiwibGVuZ3RoIiwicHJpbWFyeVJlZmVyZW5jZSIsIl9zZWxlY3Rpb25zIiwiZ2V0IiwidmVyc2VTcGFuIiwic2V0IiwidXNlRWZmZWN0IiwiX3NoYSIsImRhdGEiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJzdWJzdHJpbmciLCJjYXJkSWQiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJ1c2luZ1VzZXJCcmFuY2hfIiwic3RhcnRFZGl0QnJhbmNoIiwiYWN0aW9ucyIsInN0YXJ0RWRpdCIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsIndvcmtpbmdSZWZfIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsImhlYWRlcnMiLCJmaWx0ZXJzIiwiaXRlbUluZGV4IiwibWFya2Rvd25WaWV3Iiwic2V0RmlsdGVycyIsInNldEl0ZW1JbmRleCIsInNldE1hcmtkb3duVmlldyIsInJlZlN0eWxlIiwidXNlTWVtbyIsImZvbnRGYW1pbHkiLCJNYXRoIiwicm91bmQiLCJjb250ZW50U3R5bGUiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJ1bmRlZmluZWQiLCJmZXRjaEdsb3NzRGF0YUZvclZlcnNlIiwidmVyc2VPYmplY3RzIiwidmVyc2VSZWYiLCJfdmVyc2VPYmplY3RzIiwidmVyc2VEYXRhIiwiY29uY2F0IiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRva2VuIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJicmFuY2giLCJvblNhdmVFZGl0IiwiX3NhdmVFZGl0IiwidGhlbiIsInN1Y2Nlc3MiLCJ1bnNhdmVkQ2FyZEluZGljZXMiLCJjYXJkSW5kZXgiLCJpbmZvIiwicmVsb2FkUmVzb3VyY2UiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJiaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJzcGxpdCIsImNoYXB0ZXJJbmRleCIsImN1cnJlbnRDaGFwdGVyIiwidmVyc2VDaHVua3MiLCJ2ZXJzZUluZGV4IiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwidmVyc2VOdW1MZW4iLCJuZXdDaGFwdGVyIiwiam9pbiIsImdldFJlc3BvbnNlRGF0YSIsIm1lcmdlRmFpbCIsInBhcnNlSW50IiwibmV3Qm9va0pzb24iLCJuZXdWZXJzZVRleHQiLCJ0YXJnZXRWZXJzZU9iamVjdHNfIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX21hcCIsIm9yaWdpbmFsVmVyc2VzIiwiYm9va1ZlcnNlT2JqZWN0IiwiYm9va09iamVjdHMiLCJjaGFwdGVycyIsImluY2x1ZGVzIiwidmVyc2VzIiwidmVyc2VJdGVtIiwidm8iLCJxdW90ZSIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIm1hcCIsIl9jdXJyZW50VmVyc2VEYXRhIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9yZWZlcmVuY2UiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJib29sIiwib2JqZWN0IiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FBS0MsU0FBWixNQUEyQixZQUEzQjtBQUNBLFNBQVNDLElBQVQsRUFBZUMseUJBQWYsUUFBZ0QseUJBQWhEO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixTQUFuQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IscUJBQXhCO0FBQ0EsU0FDRUMsSUFERixFQUVFQyxZQUZGLEVBR0VDLGFBSEYsRUFJRUMsV0FKRixFQUtFQyx5QkFMRixRQU1PLHVCQU5QO0FBT0EsU0FBU0Msd0JBQVQsUUFBeUMsa0JBQXpDO0FBQ0EsU0FBU0MsZ0JBQVQsRUFBMkJDLHlCQUEzQixRQUE0RCxrQkFBNUQ7QUFDQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUFTQyxTQUFULFFBQTBCLHVCQUExQjtBQUNBLFNBQVNDLGFBQVQsRUFBd0JDLGlCQUF4QixRQUFpRCxJQUFqRDtBQUNBLFNBQVNDLG9CQUFULFFBQXFD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QUEsWUFBWSxFQUFFL0QsU0FBUyxDQUFDOFEsTUE5REE7O0FBK0R4QjtBQUNBOU0sRUFBQUEsY0FBYyxFQUFFaEUsU0FBUyxDQUFDcVIsTUFoRUY7O0FBaUV4QjtBQUNBcE4sRUFBQUEsZUFBZSxFQUFFakUsU0FBUyxDQUFDK1EsSUFsRUg7O0FBbUV4QjtBQUNBN00sRUFBQUEsU0FBUyxFQUFFbEUsU0FBUyxDQUFDOFEsTUFwRUc7O0FBcUV4QjtBQUNBMU0sRUFBQUEsb0JBQW9CLEVBQUVwRSxTQUFTLENBQUMrUSxJQXRFUjs7QUF1RXhCO0FBQ0E1TSxFQUFBQSxhQUFhLEVBQUVuRSxTQUFTLENBQUNxUjtBQXhFRCxDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7XG4gIENhcmQsXG4gIHVzZUNhcmRTdGF0ZSxcbiAgdXNlVXNlckJyYW5jaCxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBpZCxcbiAgaXNOVCxcbiAgdGl0bGUsXG4gIHNlcnZlcixcbiAgYXBwUmVmLFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIGdldExhbmd1YWdlLFxuICByZWZlcmVuY2U6IHtcbiAgICB2ZXJzZSxcbiAgICBjaGFwdGVyLFxuICAgIHByb2plY3RJZDogYm9va0lkLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgb25SZXNvdXJjZUVycm9yLFxuICBodHRwQ29uZmlnLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGdldExleGljb25EYXRhLFxuICBmZXRjaEdsb3NzZXNGb3JWZXJzZSxcbiAgdHJhbnNsYXRlLFxuICBvbk1pbmltaXplLFxuICBsb2dnZWRJblVzZXIsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIGJvb2tJbmRleCxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG59KSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzaGE6IG51bGwsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNoYSxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbdmVyc2VPYmplY3RzTWFwLCBzZXRWZXJzZU9iamVjdHNNYXBdID0gUmVhY3QudXNlU3RhdGUobmV3IE1hcCgpKVxuICBjb25zdCBbb3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSwgc2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBbc2VsZWN0aW9ucywgX3NldFNlbGVjdGlvbnNdID0gUmVhY3QudXNlU3RhdGUobmV3IE1hcCgpKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaWYgKHVzaW5nVXNlckJyYW5jaCkge1xuICAgIGh0dHBDb25maWcgPSB7IC4uLmh0dHBDb25maWcsIGNhY2hlOiB7IG1heEFnZTogMCB9IH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2V0U2NyaXB0dXJlLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICB9ID0gdXNlU2NyaXB0dXJlU2V0dGluZ3Moe1xuICAgIGlzTlQsXG4gICAgdGl0bGUsXG4gICAgdmVyc2UsXG4gICAgb3duZXIsXG4gICAgYm9va0lkLFxuICAgIGFwcFJlZjogcmVmLFxuICAgIHNlcnZlcixcbiAgICBjYXJkTnVtLFxuICAgIGNoYXB0ZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgc2V0VXJsRXJyb3I6IChlcnJvcikgPT4gc2V0U3RhdGUoeyB1cmxFcnJvcjogZXJyb3IgfSksXG4gICAgaHR0cENvbmZpZyxcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hSZXNwXyA9IHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZVxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHJlcG8gPSBgJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkfV8ke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZH1gXG4gIGNvbnN0IHJlZmVyZW5jZV8gPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSB8fCBudWxsXG5cbiAgLyoqXG4gICAqIHVwZGF0ZSBzZWxlY3Rpb25zIGlmIGNoYW5nZWRcbiAgICogQHBhcmFtIHtNYXB9IG5ld1NlbGVjdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIHNldFNlbGVjdGlvbnMobmV3U2VsZWN0aW9ucykge1xuICAgIGxldCBfbmV3U2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcblxuICAgIGlmIChuZXdTZWxlY3Rpb25zPy5zaXplICYmIGN1cnJlbnRWZXJzZVNwYW5zPy5sZW5ndGgpIHsgLy8gYWRkIHN1cHBvcnQgZm9yIHZlcnNlIHJhbmdlXG4gICAgICBfbmV3U2VsZWN0aW9ucyA9IG5ldyBNYXAobmV3U2VsZWN0aW9ucykgLy8gc2hhbGxvdyBjb3B5XG4gICAgICBsZXQgcHJpbWFyeVJlZmVyZW5jZSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxuICAgICAgY29uc3QgX3NlbGVjdGlvbnMgPSBfbmV3U2VsZWN0aW9ucy5nZXQocHJpbWFyeVJlZmVyZW5jZSlcblxuICAgICAgZm9yIChjb25zdCB2ZXJzZVNwYW4gb2YgY3VycmVudFZlcnNlU3BhbnMpIHtcbiAgICAgICAgX25ld1NlbGVjdGlvbnMuc2V0KHZlcnNlU3BhbiwgX3NlbGVjdGlvbnMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKHNlbGVjdGlvbnMsIF9uZXdTZWxlY3Rpb25zKSkge1xuICAgICAgX3NldFNlbGVjdGlvbnMoX25ld1NlbGVjdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZ2V0IHRoZSBfc2hhIGZyb20gbGFzdCBzY3JpcHR1cmUgZG93bmxvYWRcbiAgICBjb25zdCBfc2hhID0gZmV0Y2hSZXNwXz8uZGF0YT8uc2hhIHx8IG51bGxcbiAgICBjb25zb2xlLmxvZyhgZm9yICR7SlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlXyl9IG5ldyBzaGEgaXMgJHtfc2hhfWApXG5cbiAgICBpZiAoX3NoYSAhPT0gc2hhKSB7XG4gICAgICBzZXRTdGF0ZSh7IHNoYTogX3NoYSB9KVxuICAgIH1cbiAgfSwgW2ZldGNoUmVzcF9dKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gbG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmXG4gICAgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiZcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5zdWJzdHJpbmcoMCwgbG9nZ2VkSW5Vc2VyLmxlbmd0aCkgPT09IGxvZ2dlZEluVXNlcikgKSAvLyBub3QgdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoOiB1c2luZ1VzZXJCcmFuY2hfIH0sXG4gICAgYWN0aW9uczogeyBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgb3duZXIsXG4gICAgc2VydmVyLFxuICAgIGFwcFJlZixcbiAgICBsYW5ndWFnZUlkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgfSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAodXNpbmdVc2VyQnJhbmNoXyAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogdXNpbmdVc2VyQnJhbmNoXyB9KVxuICAgIH1cbiAgfSwgW3VzaW5nVXNlckJyYW5jaF8sIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgbGV0IHdvcmtpbmdSZWZfID0gd29ya2luZ1JlZiB8fCBhcHBSZWZcblxuICAgIGlmIChyZWYgIT09IHdvcmtpbmdSZWZfKSB7XG4gICAgICBzZXRTdGF0ZSh7IHJlZjogd29ya2luZ1JlZl8gfSlcbiAgICB9XG4gIH0sIFt3b3JraW5nUmVmLCByZWYsIGFwcFJlZl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgcmVmZXJlbmNlID0geyAuLi5zY3JpcHR1cmVDb25maWcucmVmZXJlbmNlIH1cblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG4gIGlmIChkaXNhYmxlV29yZFBvcG92ZXIgPT09IHVuZGVmaW5lZCkgeyAvLyBpZiBub3Qgc3BlY2lmaWVkLCB0aGVuIGRldGVybWluZSBpZiBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZVxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBwcmUtY2FjaGUgZ2xvc3NlcyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBjb25zdCBmZXRjaEdsb3NzRGF0YUZvclZlcnNlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgIC8vIGdldCB2ZXJzZSBvYmplY3RzIG9mIGFsbCB0aGUgdmVyc2VzXG4gICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmIG9mIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IF92ZXJzZU9iamVjdHMgPSB2ZXJzZVJlZj8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHNcbiAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdChfdmVyc2VPYmplY3RzKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWRpc2FibGVXb3JkUG9wb3ZlciAmJiB2ZXJzZU9iamVjdHM/Lmxlbmd0aCAmJiBmZXRjaEdsb3NzZXNGb3JWZXJzZSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICBhd2FpdCBmZXRjaEdsb3NzZXNGb3JWZXJzZSh2ZXJzZU9iamVjdHMsIGxhbmd1YWdlSWRfKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIGZldGNoR2xvc3NEYXRhRm9yVmVyc2UoKVxuICAgIH1cbiAgfSwgWyB2ZXJzZXNGb3JSZWYsIGxhbmd1YWdlSWRfIF0pXG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiByZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3QgeyBvblNhdmVFZGl0IH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDUwMDAsXG4gICAgfSxcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBsZXQgYnJhbmNoID0gKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gJ21hc3RlcicpID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogdW5kZWZpbmVkXG5cbiAgICAgIGlmICghYnJhbmNoKSB7XG4gICAgICAgIGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpIC8vIG1ha2Ugc3VyZSB1c2VyIGJyYW5jaCBleGlzdHMgYW5kIGdldCBuYW1lXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IG9uU2F2ZUVkaXQoYnJhbmNoKS50aGVuKChzdWNjZXNzKSA9PiB7IC8vIHB1c2ggY2hhbmdlZCB0byBzZXJ2ZXJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNsZWFyQ2hhbmdlcyB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJylcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICBfc2F2ZUVkaXQoKVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGNvbnN0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG5cbiAgICAgIGlmICh2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSBuZXcgVVNGTSBmb3IgY2FyZDp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aFxuICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHZlcnNlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGxldCBiaWJsZVVzZm0gPSBjb3JlLmdldFJlc3BvbnNlRGF0YShzY3JpcHR1cmVDb25maWc/LmZldGNoUmVzcG9uc2UpXG4gICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm0pIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgIGJpYmxlVXNmbSA9IG5ld1VzZm1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHsgdmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNfIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYmlibGVVc2ZtID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDb250ZW50OiBiaWJsZVVzZm0sIHN0YXJ0U2F2ZTogdHJ1ZSwgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmICYmICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBjb25zdCBfbWFwID0gbmV3IE1hcCgpXG5cbiAgICAgIGNvbnN0IHZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG5cbiAgICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgICBzZXRTdGF0ZSh7IHZlcnNlc0ZvclJlZiB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlPy5ib29rT2JqZWN0cz8uY2hhcHRlcnNcblxuICAgICAgaWYgKGJvb2tWZXJzZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmIG9mIHZlcnNlc0ZvclJlZiB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlUmVmLnZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlUmVmLnZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0udmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuICAgICAgICBzZXRWZXJzZU9iamVjdHNNYXAoX21hcClcblxuICAgICAgICBpZiAoc2VsZWN0ZWRRdW90ZT8ucXVvdGUpIHtcbiAgICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgICAgYm9va09iamVjdDogb3JpZ2luYWxWZXJzZXMsXG4gICAgICAgICAgICByZWY6IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZSxcbiAgICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICAgIG9jY3VycmVuY2U6IHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRTZWxlY3Rpb25zKHF1b3RlTWF0Y2hlcylcbiAgICAgICAgICBjb25zb2xlLmxvZygncXVvdGVNYXRjaGVzJywgcXVvdGVNYXRjaGVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsIG9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2U/LmJvb2tPYmplY3RzLCBzZWxlY3RlZFF1b3RlXSlcblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgbnVsbFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5yZWZlcmVuY2UsXG4gICAgICBjaGFwdGVyLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlPXtzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17c2V0U2VsZWN0aW9uc31cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHByZS1sb2FkIGxleGljb24gZGF0YSBmb3IgdmVyc2UgKi9cbiAgZmV0Y2hHbG9zc2VzRm9yVmVyc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "single-scripture-rcl",
|
|
3
3
|
"description": "A React Component Library for Rendering a Single Scripture Resource.",
|
|
4
|
-
"version": "3.3.3-beta.
|
|
4
|
+
"version": "3.3.3-beta.41",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
|
|
@@ -32,8 +32,7 @@
|
|
|
32
32
|
"tc-ui-toolkit": "^5.3.3",
|
|
33
33
|
"translation-helps-rcl": "^3.3.5",
|
|
34
34
|
"word-aligner": "^1.0.0",
|
|
35
|
-
"word-aligner-rcl": "^0.9.2"
|
|
36
|
-
"uw-quote-helpers": "^0.0.1-beta.6"
|
|
35
|
+
"word-aligner-rcl": "^0.9.2"
|
|
37
36
|
},
|
|
38
37
|
"devDependencies": {
|
|
39
38
|
"@babel/cli": "^7.12.1",
|
|
@@ -86,7 +85,6 @@
|
|
|
86
85
|
"ts-jest": "^29.0.5",
|
|
87
86
|
"use-deep-compare-effect": "1.8.1",
|
|
88
87
|
"usfm-js": "3.4.2",
|
|
89
|
-
"uw-quote-helpers": "^0.0.1-beta.6",
|
|
90
88
|
"webpack": "^4.44.2",
|
|
91
89
|
"word-aligner": "^1.0.0",
|
|
92
90
|
"word-aligner-rcl": "0.9.2"
|
|
@@ -100,6 +98,7 @@
|
|
|
100
98
|
"source-map-loader": "^1.1.3",
|
|
101
99
|
"styled-components": "^5.2.1",
|
|
102
100
|
"ts-loader": "^8.0.12",
|
|
103
|
-
"typescript": "^4.1.3"
|
|
101
|
+
"typescript": "^4.1.3",
|
|
102
|
+
"uw-quote-helpers": "0.0.1-beta.15"
|
|
104
103
|
}
|
|
105
104
|
}
|