@tricoteuses/assemblee 1.9.12 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -5
- package/lib/api.js +1 -1
- package/lib/api.mjs +1 -1
- package/lib/bugs/acteur-00010/plugin.test.js +5 -5
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +17 -18
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +6 -6
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +31 -32
- package/lib/bugs/agenda-00002.mjs +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +5 -5
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +17 -18
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +10 -10
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +28 -29
- package/lib/bugs/agenda-00011.mjs +3 -3
- package/lib/bugs.js +27 -29
- package/lib/bugs.mjs +3 -3
- package/lib/cleaners/actes_legislatifs.js +5 -5
- package/lib/cleaners/actes_legislatifs.mjs +1 -1
- package/lib/cleaners/acteurs.js +5 -5
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +5 -5
- package/lib/cleaners/amendements.mjs +1 -1
- package/lib/cleaners/debats.js +1 -1
- package/lib/cleaners/debats.mjs +1 -1
- package/lib/cleaners/documents.js +5 -5
- package/lib/cleaners/documents.mjs +1 -1
- package/lib/cleaners/dossiers_legislatifs.js +5 -5
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
- package/lib/cleaners/index.d.ts +0 -1
- package/lib/cleaners/index.js +1 -8
- package/lib/cleaners/index.mjs +1 -2
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/organes.mjs +1 -1
- package/lib/cleaners/questions.js +1 -1
- package/lib/cleaners/questions.mjs +1 -1
- package/lib/cleaners/reunions.js +5 -5
- package/lib/cleaners/reunions.mjs +1 -1
- package/lib/cleaners/scrutins.js +8 -8
- package/lib/cleaners/scrutins.mjs +1 -1
- package/lib/cleaners/xml.js +8 -8
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.d.ts +1 -13
- package/lib/datasets.js +10 -29
- package/lib/datasets.mjs +2 -21
- package/lib/dates.js +3 -4
- package/lib/dates.mjs +1 -1
- package/lib/dossiers_legislatifs.js +8 -8
- package/lib/dossiers_legislatifs.mjs +1 -1
- package/lib/file_systems.js +15 -14
- package/lib/file_systems.mjs +3 -3
- package/lib/git.js +5 -5
- package/lib/git.mjs +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +8 -1
- package/lib/index.mjs +2 -1
- package/lib/inserters.js +4 -4
- package/lib/inserters.mjs +1 -1
- package/lib/loaders.d.ts +0 -5
- package/lib/loaders.js +255 -299
- package/lib/loaders.mjs +1 -13
- package/lib/logger.js +1 -1
- package/lib/logger.mjs +1 -1
- package/lib/organes.js +1 -1
- package/lib/organes.mjs +1 -1
- package/lib/parsers/documents.js +11 -11
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/index.d.ts +1 -0
- package/lib/parsers/index.js +8 -1
- package/lib/parsers/index.mjs +2 -1
- package/lib/parsers/recherche_amendements.js +17 -15
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/parsers/textes_lois.d.ts +22 -15
- package/lib/parsers/textes_lois.js +264 -752
- package/lib/parsers/textes_lois.mjs +249 -597
- package/lib/raw_types/acteurs_et_organes.js +9 -9
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.d.ts +1 -0
- package/lib/raw_types/agendas.js +11 -10
- package/lib/raw_types/agendas.mjs +3 -2
- package/lib/raw_types/amendements.js +9 -9
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.js +9 -9
- package/lib/raw_types/debats.mjs +1 -1
- package/lib/raw_types/dossiers_legislatifs.d.ts +1 -0
- package/lib/raw_types/dossiers_legislatifs.js +13 -9
- package/lib/raw_types/dossiers_legislatifs.mjs +5 -1
- package/lib/raw_types/questions.js +9 -9
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.js +9 -9
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +25 -26
- package/lib/scripts/bugs_helper.mjs +3 -3
- package/lib/scripts/clean_reorganized_data.js +256 -245
- package/lib/scripts/clean_reorganized_data.mjs +18 -29
- package/lib/scripts/diff_amendements.js +9 -8
- package/lib/scripts/diff_amendements.mjs +1 -1
- package/lib/scripts/document_dossiers_legislatifs.js +24 -27
- package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
- package/lib/scripts/get_today_reunions.js +3 -2
- package/lib/scripts/get_today_reunions.mjs +1 -1
- package/lib/scripts/merge_scrutins.js +9 -8
- package/lib/scripts/merge_scrutins.mjs +1 -1
- package/lib/scripts/parse_textes_lois.js +6 -5
- package/lib/scripts/parse_textes_lois.mjs +1 -1
- package/lib/scripts/process_open_dataset.d.ts +0 -2
- package/lib/scripts/process_open_dataset.js +19 -19
- package/lib/scripts/process_open_dataset.mjs +3 -5
- package/lib/scripts/raw_types_from_amendements.d.ts +0 -1
- package/lib/scripts/raw_types_from_amendements.js +122 -198
- package/lib/scripts/raw_types_from_amendements.mjs +105 -60
- package/lib/scripts/reorganize_data.js +14 -15
- package/lib/scripts/reorganize_data.mjs +3 -3
- package/lib/scripts/retrieve_deputes_photos.js +40 -31
- package/lib/scripts/retrieve_deputes_photos.mjs +10 -2
- package/lib/scripts/retrieve_documents.d.ts +1 -1
- package/lib/scripts/retrieve_documents.js +230 -138
- package/lib/scripts/retrieve_documents.mjs +87 -38
- package/lib/scripts/retrieve_open_data.js +27 -30
- package/lib/scripts/retrieve_open_data.mjs +5 -8
- package/lib/scripts/retrieve_pending_amendments.js +14 -14
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
- package/lib/scripts/retrieve_senateurs_photos.js +10 -10
- package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
- package/lib/scripts/retrieve_textes_lois.js +17 -15
- package/lib/scripts/retrieve_textes_lois.mjs +1 -1
- package/lib/scripts/shared/cli_helpers.d.ts +11 -0
- package/lib/scripts/shared/cli_helpers.js +13 -2
- package/lib/scripts/shared/cli_helpers.mjs +12 -1
- package/lib/scripts/test_iter_load.js +5 -19
- package/lib/scripts/test_iter_load.mjs +2 -9
- package/lib/scripts/test_load.js +2 -2
- package/lib/scripts/test_load.mjs +1 -1
- package/lib/scripts/test_load_big_files.js +2 -2
- package/lib/scripts/test_load_big_files.mjs +1 -1
- package/lib/scripts/validate_json.js +17 -18
- package/lib/scripts/validate_json.mjs +3 -3
- package/lib/shared_types/codes_actes.d.ts +2 -0
- package/lib/shared_types/codes_actes.js +3 -1
- package/lib/shared_types/codes_actes.mjs +3 -1
- package/lib/strings.js +1 -1
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -9
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.d.ts +1 -0
- package/lib/types/agendas.js +11 -10
- package/lib/types/agendas.mjs +3 -2
- package/lib/types/amendements.js +9 -9
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.js +9 -9
- package/lib/types/debats.mjs +1 -1
- package/lib/types/dossiers_legislatifs.d.ts +14 -0
- package/lib/types/dossiers_legislatifs.js +51 -9
- package/lib/types/dossiers_legislatifs.mjs +43 -1
- package/lib/types/legislatures.js +1 -1
- package/lib/types/legislatures.mjs +1 -1
- package/lib/types/questions.js +9 -9
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +9 -9
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +2 -2
- package/lib/urls.mjs +1 -1
- package/package.json +14 -20
- package/lib/cleaners/textes_loi.d.ts +0 -1
- package/lib/cleaners/textes_loi.js +0 -12
- package/lib/cleaners/textes_loi.mjs +0 -5
- package/lib/examples/PIONANR5L15B0020/input.d.ts +0 -2
- package/lib/examples/PIONANR5L15B0020/input.js +0 -10
- package/lib/examples/PIONANR5L15B0020/input.mjs +0 -193
- package/lib/examples/PIONANR5L15B0020/input.ts +0 -193
- package/lib/examples/PIONANR5L15B0020/loi.json +0 -26
- package/lib/examples/PIONANR5L15B0020/loi_populated.json +0 -29
- package/lib/examples/PIONANR5L15B0020/meta.json +0 -28
- package/lib/examples/PIONANR5L15B0020/motifs.json +0 -5
- package/lib/examples/PIONANR5L15B0020/motifs_populated.json +0 -6
- package/lib/examples/PIONANR5L15B0020/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B0914/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B0914/input.js +0 -10
- package/lib/examples/PRJLANR5L16B0914/input.mjs +0 -322
- package/lib/examples/PRJLANR5L16B0914/input.ts +0 -322
- package/lib/examples/PRJLANR5L16B0914/loi.json +0 -14
- package/lib/examples/PRJLANR5L16B0914/loi_populated.json +0 -20
- package/lib/examples/PRJLANR5L16B0914/meta.json +0 -35
- package/lib/examples/PRJLANR5L16B0914/motifs.json +0 -4
- package/lib/examples/PRJLANR5L16B0914/motifs_populated.json +0 -5
- package/lib/examples/PRJLANR5L16B0914/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B2014/README.md +0 -2
- package/lib/examples/PRJLANR5L16B2014/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2014/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2014/input.mjs +0 -577
- package/lib/examples/PRJLANR5L16B2014/input.ts +0 -577
- package/lib/examples/PRJLANR5L16B2014/loi.json +0 -369
- package/lib/examples/PRJLANR5L16B2014/meta.json +0 -31
- package/lib/examples/PRJLANR5L16B2014/motifs.json +0 -5
- package/lib/examples/PRJLANR5L16B2014/sommaire.json +0 -51
- package/lib/examples/PRJLANR5L16B2424/alineas.json +0 -44
- package/lib/examples/PRJLANR5L16B2424/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2424/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2424/input.mjs +0 -322
- package/lib/examples/PRJLANR5L16B2424/input.ts +0 -322
- package/lib/examples/PRJLANR5L16B2424/loi.json +0 -74
- package/lib/examples/PRJLANR5L16B2424/loi_populated.json +0 -87
- package/lib/examples/PRJLANR5L16B2424/meta.json +0 -31
- package/lib/examples/PRJLANR5L16B2424/motifs.json +0 -4
- package/lib/examples/PRJLANR5L16B2424/motifs_populated.json +0 -5
- package/lib/examples/PRJLANR5L16B2424/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B2462/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2462/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2462/input.mjs +0 -1308
- package/lib/examples/PRJLANR5L16B2462/input.ts +0 -1308
- package/lib/examples/PRJLANR5L16B2462/loi.json +0 -74
- package/lib/examples/PRJLANR5L16B2462/loi_populated.json +0 -310
- package/lib/examples/PRJLANR5L16B2462/meta.json +0 -29
- package/lib/examples/PRJLANR5L16B2462/motifs.json +0 -6
- package/lib/examples/PRJLANR5L16B2462/motifs_populated.json +0 -6
- package/lib/examples/PRJLANR5L16B2462/sommaire.json +0 -50
- package/lib/examples/README.md +0 -3
- package/lib/raw_types/textes_loi.d.ts +0 -93
- package/lib/raw_types/textes_loi.js +0 -429
- package/lib/raw_types/textes_loi.mjs +0 -378
- package/lib/schemas/texte_loi/Alinea.json +0 -36
- package/lib/schemas/texte_loi/ExposeMotifs.json +0 -24
- package/lib/schemas/texte_loi/MetaDonnees.json +0 -126
- package/lib/schemas/texte_loi/ProjetLoi.json +0 -64
- package/lib/schemas/texte_loi/Sommaire.json +0 -48
- package/lib/schemas/texte_loi/TexteLoi.json +0 -225
- package/lib/schemas/texte_loi/TexteLoiPartiel.json +0 -237
- package/lib/scripts/process_textes_loi_dataset.d.ts +0 -7
- package/lib/scripts/process_textes_loi_dataset.js +0 -373
- package/lib/scripts/process_textes_loi_dataset.mjs +0 -239
- package/lib/types/textes_loi.d.ts +0 -94
- package/lib/types/textes_loi.js +0 -429
- package/lib/types/textes_loi.mjs +0 -378
package/lib/inserters.js
CHANGED
|
@@ -25,9 +25,9 @@ exports.insertDossierReferences = insertDossierReferences;
|
|
|
25
25
|
exports.insertOrganeReferences = insertOrganeReferences;
|
|
26
26
|
exports.insertReunionReferences = insertReunionReferences;
|
|
27
27
|
exports.insertScrutinReferences = insertScrutinReferences;
|
|
28
|
-
function _createForOfIteratorHelper(
|
|
29
|
-
function _unsupportedIterableToArray(
|
|
30
|
-
function _arrayLikeToArray(
|
|
28
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
29
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
30
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
31
31
|
function insertActeLegislatifReferences(acte, data, visitedUids) {
|
|
32
32
|
if (!visitedUids.has(acte.uid)) {
|
|
33
33
|
visitedUids.add(acte.uid);
|
|
@@ -518,4 +518,4 @@ function insertScrutinReferences(scrutin, _data, visitedUids) {
|
|
|
518
518
|
}
|
|
519
519
|
return scrutin;
|
|
520
520
|
}
|
|
521
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJyYXBwb3J0ZXVyIiwidmFsdWUiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwiZXJyIiwiZSIsImYiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uUmVmIiwicmV1bmlvbiIsImluc2VydFJldW5pb25SZWZlcmVuY2VzIiwib2RqUmVmIiwib2RqIiwicG9pbnRzT2RqIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInNjcnV0aW5CeVVpZCIsInZvdGVSZWZzIiwic2NydXRpbnMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0Iiwidm90ZVJlZiIsInNjcnV0aW4iLCJwdXNoIiwiaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMiLCJ2b3RlcyIsIl9pdGVyYXRvcjUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiX3N0ZXA1IiwiY2hpbGRBY3RlIiwiX2l0ZXJhdG9yNiIsIm1hbmRhdHMiLCJfc3RlcDYiLCJtYW5kYXQiLCJvcmdhbmVzIiwiX2l0ZXJhdG9yNyIsIm9yZ2FuZXNSZWZzIiwiX3N0ZXA3IiwiaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMiLCJhbWVuZGVtZW50Iiwic2lnbmF0YWlyZXMiLCJhdXRldXIiLCJhdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSIsImdvdXZlcm5lbWVudFJlZiIsImdvdXZlcm5lbWVudCIsImdyb3VwZVBvbGl0aXF1ZVJlZiIsImdyb3VwZVBvbGl0aXF1ZSIsImNvc2lnbmF0YWlyZXNSZWZzIiwiY29zaWduYXRhaXJlcyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsIl9pdGVyYXRvcjkiLCJhdXRldXJzIiwiX3N0ZXA5IiwiYWN0ZXVyU3VtbWFyeSIsImRvc3NpZXJCeVVpZCIsImRvc3NpZXIiLCJkb3NzaWVyUmVmIiwiaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMiLCJfaXRlcmF0b3IxMCIsImRpdmlzaW9ucyIsIl9zdGVwMTAiLCJjaGlsZERpdmlzaW9uIiwiX2l0ZXJhdG9yMTEiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwiX2Rvc3NpZXIkYWN0ZXNMZWdpc2xhIiwiX2l0ZXJhdG9yMTMiLCJfc3RlcDEzIiwiaW5pdGlhdGV1ciIsIl9pdGVyYXRvcjE0IiwiYWN0ZXVycyIsIl9zdGVwMTQiLCJtYW5kYXRSZWYiLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJvcmdhbmVQYXJlbnRSZWYiLCJvcmdhbmVQYXJlbnQiLCJvcmdhbmVQcmVjZWRlbnRSZWYiLCJvcmdhbmVQcmVjZWRlbnQiLCJkZW1hbmRldXJzIiwiX2l0ZXJhdG9yMTYiLCJfc3RlcDE2Iiwib3JnYW5lU3VtbWFyeSIsIm9yZ2FuZVJldW5pUmVmIiwib3JnYW5lUmV1bmkiLCJwYXJ0aWNpcGFudHMiLCJfaXRlcmF0b3IxNyIsInBhcnRpY2lwYW50c0ludGVybmVzIiwiX3N0ZXAxNyIsInBhcnRpY2lwYW50SW50ZXJuZSIsIl9kYXRhIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luc2VydGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RldXIsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQWN0ZUxlZ2lzbGF0aWYsXG4gIERpdmlzaW9uLFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuZnVuY3Rpb24gaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKFxuICBhY3RlOiBBY3RlTGVnaXNsYXRpZixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGFjdGUudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RlLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW2FjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUub3JnYW5lID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnByb3ZlbmFuY2VSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthY3RlLnByb3ZlbmFuY2VSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5wcm92ZW5hbmNlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnJhcHBvcnRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgcmFwcG9ydGV1ciBvZiBhY3RlLnJhcHBvcnRldXJzKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcmFwcG9ydGV1ci5hY3RldXJSZWZdXG4gICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcHBvcnRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnJldW5pb25CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmV1bmlvblJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByZXVuaW9uID0gZGF0YS5yZXVuaW9uQnlVaWRbYWN0ZS5yZXVuaW9uUmVmXVxuICAgICAgaWYgKHJldW5pb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnJldW5pb24gPSByZXVuaW9uXG4gICAgICAgIGluc2VydFJldW5pb25SZWZlcmVuY2VzKHJldW5pb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICBpZiAoYWN0ZS5vZGpSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkICYmIG9kai5wb2ludHNPZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqKSB7XG4gICAgICAgICAgICAgIGlmIChwb2ludE9kai51aWQgPT09IGFjdGUub2RqUmVmKSB7XG4gICAgICAgICAgICAgICAgYWN0ZS5vZGogPSBwb2ludE9kalxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVBZG9wdGVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFkb3B0ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBZG9wdGUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWN0ZS50ZXh0ZUFzc29jaWVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFzc29jaWVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnRleHRlQXNzb2NpZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnRleHRlc0Fzc29jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgdGV4dGVBc3NvY2llIG9mIGFjdGUudGV4dGVzQXNzb2NpZXMpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbdGV4dGVBc3NvY2llLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnNjcnV0aW5CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudm90ZVJlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc2NydXRpbnMgPSBbXVxuICAgICAgZm9yIChjb25zdCB2b3RlUmVmIG9mIGFjdGUudm90ZVJlZnMpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IGRhdGEuc2NydXRpbkJ5VWlkW3ZvdGVSZWZdXG4gICAgICAgIGlmIChzY3J1dGluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGlucy5wdXNoKHNjcnV0aW4pXG4gICAgICAgICAgaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoc2NydXRpbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFjdGUudm90ZXMgPSBzY3J1dGluc1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGRBY3RlIG9mIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcyB8fCBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGNoaWxkQWN0ZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFjdGV1clJlZmVyZW5jZXMoXG4gIGFjdGV1cjogQWN0ZXVyLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZXVyLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYWN0ZXVyLnVpZClcblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVJlZiBvZiBtYW5kYXQub3JnYW5lc1JlZnMpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZXMucHVzaChvcmdhbmUpXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1hbmRhdC5vcmdhbmVzID0gb3JnYW5lc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3RldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzKFxuICBhbWVuZGVtZW50OiBBbWVuZGVtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYW1lbmRlbWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFtZW5kZW1lbnQudWlkKVxuXG4gICAgY29uc3Qgc2lnbmF0YWlyZXMgPSBhbWVuZGVtZW50LnNpZ25hdGFpcmVzXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIuYWN0ZXVyUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYXV0ZXVyLmFjdGV1clJlZl1cbiAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lID1cbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZFthdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZl1cbiAgICAgIGlmIChhdXRldXJSYXBwb3J0ZXVyT3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmF1dGV1clJhcHBvcnRldXJPcmdhbmUgPSBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBnb3V2ZXJuZW1lbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5nb3V2ZXJuZW1lbnRSZWZdXG4gICAgICBpZiAoZ291dmVybmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudCA9IGdvdXZlcm5lbWVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKGdvdXZlcm5lbWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5ncm91cGVQb2xpdGlxdWVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXNSZWZzID0gc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1JlZnNcbiAgICAgIGlmIChjb3NpZ25hdGFpcmVzUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IGNvc2lnbmF0YWlyZVJlZiBvZiBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZSA9IGRhdGEuYWN0ZXVyQnlVaWRbY29zaWduYXRhaXJlUmVmXVxuICAgICAgICAgIGlmIChjb3NpZ25hdGFpcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29zaWduYXRhaXJlcy5wdXNoKGNvc2lnbmF0YWlyZSlcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoY29zaWduYXRhaXJlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlcyA9IGNvc2lnbmF0YWlyZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYW1lbmRlbWVudFxufVxuXG5mdW5jdGlvbiBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoXG4gIGRpdmlzaW9uOiBEaXZpc2lvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRpdmlzaW9uLmF1dGV1cnMpIHtcbiAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZXVyU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhLmRvc3NpZXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RpdmlzaW9uLmRvc3NpZXJSZWZdXG4gICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGl2aXNpb24uZG9zc2llciA9IGRvc3NpZXJcbiAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGREaXZpc2lvbiBvZiBkaXZpc2lvbi5kaXZpc2lvbnMgfHwgW10pIHtcbiAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoY2hpbGREaXZpc2lvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gIH1cblxuICByZXR1cm4gZGl2aXNpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhcbiAgZG9jdW1lbnQ6IERvY3VtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9jdW1lbnQudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb2N1bWVudC51aWQpXG5cbiAgICBmb3IgKGNvbnN0IGF1dGV1ciBvZiBkb2N1bWVudC5hdXRldXJzKSB7XG4gICAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhdXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBkYXRhLmRvc3NpZXJCeVVpZFtkb2N1bWVudC5kb3NzaWVyUmVmXVxuICAgICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2N1bWVudC5kb3NzaWVyID0gZG9zc2llclxuICAgICAgICBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyhkb3NzaWVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRpdmlzaW9uIG9mIGRvY3VtZW50LmRpdmlzaW9ucyB8fCBbXSkge1xuICAgICAgaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzKGRpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKFxuICBkb3NzaWVyOiBEb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGRvc3NpZXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb3NzaWVyLnVpZClcblxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMgPz8gW10pIHtcbiAgICAgIGluc2VydEFjdGVMZWdpc2xhdGlmUmVmZXJlbmNlcyhhY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWF0ZXVyID0gZG9zc2llci5pbml0aWF0ZXVyXG4gICAgaWYgKGluaXRpYXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgaW5pdGlhdGV1ci5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdCBvZiBhY3RldXIubWFuZGF0cyB8fCBbXSkge1xuICAgICAgICAgICAgICBpZiAobWFuZGF0LnVpZCA9PT0gYWN0ZXVyU3VtbWFyeS5tYW5kYXRSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RldXJTdW1tYXJ5Lm1hbmRhdCA9IG1hbmRhdFxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGluaXRpYXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2luaXRpYXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbml0aWF0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb3NzaWVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKFxuICBvcmdhbmU6IE9yZ2FuZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKG9yZ2FuZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKG9yZ2FuZS51aWQpXG5cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnRSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUGFyZW50ID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmUub3JnYW5lUGFyZW50UmVmXVxuICAgICAgaWYgKG9yZ2FuZVBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnQgPSBvcmdhbmVQYXJlbnRcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVQYXJlbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVByZWNlZGVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQcmVjZWRlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQcmVjZWRlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUHJlY2VkZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVByZWNlZGVudCA9IG9yZ2FuZVByZWNlZGVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVByZWNlZGVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIG9yZ2FuZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMoXG4gIHJldW5pb246IFJldW5pb24sXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhyZXVuaW9uLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQocmV1bmlvbi51aWQpXG5cbiAgICBjb25zdCBkZW1hbmRldXJzID0gcmV1bmlvbi5kZW1hbmRldXJzXG4gICAgaWYgKGRlbWFuZGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgZGVtYW5kZXVycy5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZVN1bW1hcnkgPSBkZW1hbmRldXJzLm9yZ2FuZVxuICAgICAgICBpZiAob3JnYW5lU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmVTdW1tYXJ5Lm9yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZVN1bW1hcnkub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVSZXVuaSA9IGRhdGEub3JnYW5lQnlVaWRbcmV1bmlvbi5vcmdhbmVSZXVuaVJlZl1cbiAgICAgIGlmIChvcmdhbmVSZXVuaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldW5pb24ub3JnYW5lUmV1bmkgPSBvcmdhbmVSZXVuaVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVJldW5pLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRzID0gcmV1bmlvbi5wYXJ0aWNpcGFudHNcbiAgICAgIGlmIChwYXJ0aWNpcGFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50SW50ZXJuZSBvZiBwYXJ0aWNpcGFudHMucGFydGljaXBhbnRzSW50ZXJuZXMgfHxcbiAgICAgICAgICBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SW50ZXJuZS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV1bmlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoXG4gIHNjcnV0aW46IFNjcnV0aW4sXG4gIF9kYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHNjcnV0aW4udWlkKVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHNjcnV0aW5cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBLFNBQVNBLDhCQUE4QkEsQ0FDckNDLElBQW9CLEVBQ3BCQyxJQUFnQixFQUNoQkMsV0FBd0IsRUFDeEI7RUFDQSxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBRyxDQUFDSCxJQUFJLENBQUNJLEdBQUcsQ0FBQyxFQUFFO0lBQzlCRixXQUFXLENBQUNHLEdBQUcsQ0FBQ0wsSUFBSSxDQUFDSSxHQUFHLENBQUM7SUFFekIsSUFDRUgsSUFBSSxDQUFDSyxhQUFhLEtBQUtDLFNBQVMsSUFDaENQLElBQUksQ0FBQ1EsZ0NBQWdDLEtBQUtELFNBQVMsRUFDbkQ7TUFDQSxJQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBYSxDQUFDTixJQUFJLENBQUNRLGdDQUFnQyxDQUFDO01BQzFFLElBQUlDLFFBQVEsS0FBS0YsU0FBUyxFQUFFO1FBQzFCUCxJQUFJLENBQUNVLDZCQUE2QixHQUFHRCxRQUFRO1FBQzdDRSx3QkFBd0IsQ0FBQ0YsUUFBUSxFQUFFUixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUN2RDtJQUNGO0lBQ0EsSUFBSUQsSUFBSSxDQUFDVyxXQUFXLEtBQUtMLFNBQVMsSUFBSVAsSUFBSSxDQUFDYSxTQUFTLEtBQUtOLFNBQVMsRUFBRTtNQUNsRSxJQUFNTyxNQUFNLEdBQUdiLElBQUksQ0FBQ1csV0FBVyxDQUFDWixJQUFJLENBQUNhLFNBQVMsQ0FBQztNQUMvQyxJQUFJQyxNQUFNLEtBQUtQLFNBQVMsRUFBRTtRQUN4QlAsSUFBSSxDQUFDYyxNQUFNLEdBQUdBLE1BQU07UUFDcEJDLHNCQUFzQixDQUFDRCxNQUFNLEVBQUViLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQ25EO0lBQ0Y7SUFDQSxJQUFJRCxJQUFJLENBQUNXLFdBQVcsS0FBS0ws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
|
|
521
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJyYXBwb3J0ZXVyIiwidmFsdWUiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwiZXJyIiwiZSIsImYiLCJyZXVuaW9uQnlVaWQiLCJyZXVuaW9uUmVmIiwicmV1bmlvbiIsImluc2VydFJldW5pb25SZWZlcmVuY2VzIiwib2RqUmVmIiwib2RqIiwicG9pbnRzT2RqIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInNjcnV0aW5CeVVpZCIsInZvdGVSZWZzIiwic2NydXRpbnMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0Iiwidm90ZVJlZiIsInNjcnV0aW4iLCJwdXNoIiwiaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMiLCJ2b3RlcyIsIl9pdGVyYXRvcjUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiX3N0ZXA1IiwiY2hpbGRBY3RlIiwiX2l0ZXJhdG9yNiIsIm1hbmRhdHMiLCJfc3RlcDYiLCJtYW5kYXQiLCJvcmdhbmVzIiwiX2l0ZXJhdG9yNyIsIm9yZ2FuZXNSZWZzIiwiX3N0ZXA3IiwiaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMiLCJhbWVuZGVtZW50Iiwic2lnbmF0YWlyZXMiLCJhdXRldXIiLCJhdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSIsImdvdXZlcm5lbWVudFJlZiIsImdvdXZlcm5lbWVudCIsImdyb3VwZVBvbGl0aXF1ZVJlZiIsImdyb3VwZVBvbGl0aXF1ZSIsImNvc2lnbmF0YWlyZXNSZWZzIiwiY29zaWduYXRhaXJlcyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsIl9pdGVyYXRvcjkiLCJhdXRldXJzIiwiX3N0ZXA5IiwiYWN0ZXVyU3VtbWFyeSIsImRvc3NpZXJCeVVpZCIsImRvc3NpZXIiLCJkb3NzaWVyUmVmIiwiaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMiLCJfaXRlcmF0b3IxMCIsImRpdmlzaW9ucyIsIl9zdGVwMTAiLCJjaGlsZERpdmlzaW9uIiwiX2l0ZXJhdG9yMTEiLCJfc3RlcDExIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwiX2Rvc3NpZXIkYWN0ZXNMZWdpc2xhIiwiX2l0ZXJhdG9yMTMiLCJfc3RlcDEzIiwiaW5pdGlhdGV1ciIsIl9pdGVyYXRvcjE0IiwiYWN0ZXVycyIsIl9zdGVwMTQiLCJtYW5kYXRSZWYiLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJvcmdhbmVQYXJlbnRSZWYiLCJvcmdhbmVQYXJlbnQiLCJvcmdhbmVQcmVjZWRlbnRSZWYiLCJvcmdhbmVQcmVjZWRlbnQiLCJkZW1hbmRldXJzIiwiX2l0ZXJhdG9yMTYiLCJfc3RlcDE2Iiwib3JnYW5lU3VtbWFyeSIsIm9yZ2FuZVJldW5pUmVmIiwib3JnYW5lUmV1bmkiLCJwYXJ0aWNpcGFudHMiLCJfaXRlcmF0b3IxNyIsInBhcnRpY2lwYW50c0ludGVybmVzIiwiX3N0ZXAxNyIsInBhcnRpY2lwYW50SW50ZXJuZSIsIl9kYXRhIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luc2VydGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RldXIsIE9yZ2FuZSB9IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQWN0ZUxlZ2lzbGF0aWYsXG4gIERpdmlzaW9uLFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuL3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfVxuICByZWFkb25seSBhbWVuZGVtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH1cbn1cblxuZnVuY3Rpb24gaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKFxuICBhY3RlOiBBY3RlTGVnaXNsYXRpZixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGFjdGUudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RlLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZGF0YS5kb2N1bWVudEJ5VWlkW2FjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLmRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUub3JnYW5lID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnByb3ZlbmFuY2VSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthY3RlLnByb3ZlbmFuY2VSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5wcm92ZW5hbmNlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnJhcHBvcnRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgcmFwcG9ydGV1ciBvZiBhY3RlLnJhcHBvcnRldXJzKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcmFwcG9ydGV1ci5hY3RldXJSZWZdXG4gICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcHBvcnRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnJldW5pb25CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmV1bmlvblJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByZXVuaW9uID0gZGF0YS5yZXVuaW9uQnlVaWRbYWN0ZS5yZXVuaW9uUmVmXVxuICAgICAgaWYgKHJldW5pb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnJldW5pb24gPSByZXVuaW9uXG4gICAgICAgIGluc2VydFJldW5pb25SZWZlcmVuY2VzKHJldW5pb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICBpZiAoYWN0ZS5vZGpSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkICYmIG9kai5wb2ludHNPZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqKSB7XG4gICAgICAgICAgICAgIGlmIChwb2ludE9kai51aWQgPT09IGFjdGUub2RqUmVmKSB7XG4gICAgICAgICAgICAgICAgYWN0ZS5vZGogPSBwb2ludE9kalxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVBZG9wdGVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFkb3B0ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBZG9wdGUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWN0ZS50ZXh0ZUFzc29jaWVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS50ZXh0ZUFzc29jaWVSZWZdXG4gICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnRleHRlQXNzb2NpZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmRvY3VtZW50QnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RlLnRleHRlc0Fzc29jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgdGV4dGVBc3NvY2llIG9mIGFjdGUudGV4dGVzQXNzb2NpZXMpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbdGV4dGVBc3NvY2llLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLnNjcnV0aW5CeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudm90ZVJlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc2NydXRpbnMgPSBbXVxuICAgICAgZm9yIChjb25zdCB2b3RlUmVmIG9mIGFjdGUudm90ZVJlZnMpIHtcbiAgICAgICAgY29uc3Qgc2NydXRpbiA9IGRhdGEuc2NydXRpbkJ5VWlkW3ZvdGVSZWZdXG4gICAgICAgIGlmIChzY3J1dGluICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGlucy5wdXNoKHNjcnV0aW4pXG4gICAgICAgICAgaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoc2NydXRpbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFjdGUudm90ZXMgPSBzY3J1dGluc1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGRBY3RlIG9mIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcyB8fCBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGNoaWxkQWN0ZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFjdGV1clJlZmVyZW5jZXMoXG4gIGFjdGV1cjogQWN0ZXVyLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZXVyLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYWN0ZXVyLnVpZClcblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVJlZiBvZiBtYW5kYXQub3JnYW5lc1JlZnMpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZXMucHVzaChvcmdhbmUpXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1hbmRhdC5vcmdhbmVzID0gb3JnYW5lc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3RldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzKFxuICBhbWVuZGVtZW50OiBBbWVuZGVtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYW1lbmRlbWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFtZW5kZW1lbnQudWlkKVxuXG4gICAgY29uc3Qgc2lnbmF0YWlyZXMgPSBhbWVuZGVtZW50LnNpZ25hdGFpcmVzXG4gICAgY29uc3QgYXV0ZXVyID0gc2lnbmF0YWlyZXMuYXV0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIuYWN0ZXVyUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYXV0ZXVyLmFjdGV1clJlZl1cbiAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lID1cbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZFthdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZl1cbiAgICAgIGlmIChhdXRldXJSYXBwb3J0ZXVyT3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmF1dGV1clJhcHBvcnRldXJPcmdhbmUgPSBhdXRldXJSYXBwb3J0ZXVyT3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBnb3V2ZXJuZW1lbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5nb3V2ZXJuZW1lbnRSZWZdXG4gICAgICBpZiAoZ291dmVybmVtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdvdXZlcm5lbWVudCA9IGdvdXZlcm5lbWVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKGdvdXZlcm5lbWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5ncm91cGVQb2xpdGlxdWVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXNSZWZzID0gc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlc1JlZnNcbiAgICAgIGlmIChjb3NpZ25hdGFpcmVzUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZXMgPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IGNvc2lnbmF0YWlyZVJlZiBvZiBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmcyB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IGNvc2lnbmF0YWlyZSA9IGRhdGEuYWN0ZXVyQnlVaWRbY29zaWduYXRhaXJlUmVmXVxuICAgICAgICAgIGlmIChjb3NpZ25hdGFpcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29zaWduYXRhaXJlcy5wdXNoKGNvc2lnbmF0YWlyZSlcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoY29zaWduYXRhaXJlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2lnbmF0YWlyZXMuY29zaWduYXRhaXJlcyA9IGNvc2lnbmF0YWlyZXNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYW1lbmRlbWVudFxufVxuXG5mdW5jdGlvbiBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoXG4gIGRpdmlzaW9uOiBEaXZpc2lvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRpdmlzaW9uLmF1dGV1cnMpIHtcbiAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgIGlmIChkYXRhLmFjdGV1ckJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZXVyU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgaWYgKG9yZ2FuZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhLmRvc3NpZXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RpdmlzaW9uLmRvc3NpZXJSZWZdXG4gICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGl2aXNpb24uZG9zc2llciA9IGRvc3NpZXJcbiAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGREaXZpc2lvbiBvZiBkaXZpc2lvbi5kaXZpc2lvbnMgfHwgW10pIHtcbiAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoY2hpbGREaXZpc2lvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gIH1cblxuICByZXR1cm4gZGl2aXNpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhcbiAgZG9jdW1lbnQ6IERvY3VtZW50LFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9jdW1lbnQudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb2N1bWVudC51aWQpXG5cbiAgICBmb3IgKGNvbnN0IGF1dGV1ciBvZiBkb2N1bWVudC5hdXRldXJzKSB7XG4gICAgICBjb25zdCBhY3RldXJTdW1tYXJ5ID0gYXV0ZXVyLmFjdGV1clxuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhdXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFthdXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhdXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBkYXRhLmRvc3NpZXJCeVVpZFtkb2N1bWVudC5kb3NzaWVyUmVmXVxuICAgICAgaWYgKGRvc3NpZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2N1bWVudC5kb3NzaWVyID0gZG9zc2llclxuICAgICAgICBpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyhkb3NzaWVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRpdmlzaW9uIG9mIGRvY3VtZW50LmRpdmlzaW9ucyB8fCBbXSkge1xuICAgICAgaW5zZXJ0RGl2aXNpb25SZWZlcmVuY2VzKGRpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKFxuICBkb3NzaWVyOiBEb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKGRvc3NpZXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChkb3NzaWVyLnVpZClcblxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMgPz8gW10pIHtcbiAgICAgIGluc2VydEFjdGVMZWdpc2xhdGlmUmVmZXJlbmNlcyhhY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWF0ZXVyID0gZG9zc2llci5pbml0aWF0ZXVyXG4gICAgaWYgKGluaXRpYXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgaW5pdGlhdGV1ci5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdCBvZiBhY3RldXIubWFuZGF0cyB8fCBbXSkge1xuICAgICAgICAgICAgICBpZiAobWFuZGF0LnVpZCA9PT0gYWN0ZXVyU3VtbWFyeS5tYW5kYXRSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RldXJTdW1tYXJ5Lm1hbmRhdCA9IG1hbmRhdFxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGluaXRpYXRldXIub3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2luaXRpYXRldXIub3JnYW5lUmVmXVxuICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbml0aWF0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb3NzaWVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKFxuICBvcmdhbmU6IE9yZ2FuZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKG9yZ2FuZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKG9yZ2FuZS51aWQpXG5cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnRSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3Qgb3JnYW5lUGFyZW50ID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmUub3JnYW5lUGFyZW50UmVmXVxuICAgICAgaWYgKG9yZ2FuZVBhcmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9yZ2FuZS5vcmdhbmVQYXJlbnQgPSBvcmdhbmVQYXJlbnRcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmVQYXJlbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVByZWNlZGVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQcmVjZWRlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQcmVjZWRlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUHJlY2VkZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVByZWNlZGVudCA9IG9yZ2FuZVByZWNlZGVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVByZWNlZGVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIG9yZ2FuZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMoXG4gIHJldW5pb246IFJldW5pb24sXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhyZXVuaW9uLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQocmV1bmlvbi51aWQpXG5cbiAgICBjb25zdCBkZW1hbmRldXJzID0gcmV1bmlvbi5kZW1hbmRldXJzXG4gICAgaWYgKGRlbWFuZGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgZGVtYW5kZXVycy5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZVN1bW1hcnkgPSBkZW1hbmRldXJzLm9yZ2FuZVxuICAgICAgICBpZiAob3JnYW5lU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmVTdW1tYXJ5Lm9yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZVN1bW1hcnkub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVSZXVuaSA9IGRhdGEub3JnYW5lQnlVaWRbcmV1bmlvbi5vcmdhbmVSZXVuaVJlZl1cbiAgICAgIGlmIChvcmdhbmVSZXVuaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldW5pb24ub3JnYW5lUmV1bmkgPSBvcmdhbmVSZXVuaVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVJldW5pLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRzID0gcmV1bmlvbi5wYXJ0aWNpcGFudHNcbiAgICAgIGlmIChwYXJ0aWNpcGFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50SW50ZXJuZSBvZiBwYXJ0aWNpcGFudHMucGFydGljaXBhbnRzSW50ZXJuZXMgfHxcbiAgICAgICAgICBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SW50ZXJuZS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV1bmlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoXG4gIHNjcnV0aW46IFNjcnV0aW4sXG4gIF9kYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHNjcnV0aW4udWlkKVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHNjcnV0aW5cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBLFNBQVNBLDhCQUE4QkEsQ0FDckNDLElBQW9CLEVBQ3BCQyxJQUFnQixFQUNoQkMsV0FBd0IsRUFDeEI7RUFDQSxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBRyxDQUFDSCxJQUFJLENBQUNJLEdBQUcsQ0FBQyxFQUFFO0lBQzlCRixXQUFXLENBQUNHLEdBQUcsQ0FBQ0wsSUFBSSxDQUFDSSxHQUFHLENBQUM7SUFFekIsSUFDRUgsSUFBSSxDQUFDSyxhQUFhLEtBQUtDLFNBQVMsSUFDaENQLElBQUksQ0FBQ1EsZ0NBQWdDLEtBQUtELFNBQVMsRUFDbkQ7TUFDQSxJQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBYSxDQUFDTixJQUFJLENBQUNRLGdDQUFnQyxDQUFDO01BQzFFLElBQUlDLFFBQVEsS0FBS0YsU0FBUyxFQUFFO1FBQzFCUCxJQUFJLENBQUNVLDZCQUE2QixHQUFHRCxRQUFRO1FBQzdDRSx3QkFBd0IsQ0FBQ0YsUUFBUSxFQUFFUixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUN2RDtJQUNGO0lBQ0EsSUFBSUQsSUFBSSxDQUFDVyxXQUFXLEtBQUtMLFNBQVMsSUFBSVAsSUFBSSxDQUFDYSxTQUFTLEtBQUtOLFNBQVMsRUFBRTtNQUNsRSxJQUFNTyxNQUFNLEdBQUdiLElBQUksQ0FBQ1csV0FBVyxDQUFDWixJQUFJLENBQUNhLFNBQVMsQ0FBQztNQUMvQyxJQUFJQyxNQUFNLEtBQUtQLFNBQVMsRUFBRTtRQUN4QlAsSUFBSSxDQUFDYyxNQUFNLEdBQUdBLE1BQU07UUFDcEJDLHNCQUFzQixDQUFDRCxNQUFNLEVBQUViLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQ25EO0lBQ0Y7SUFDQSxJQUFJRCxJQUFJLENBQUNXLFdBQVcsS0FBS0ws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
|
package/lib/inserters.mjs
CHANGED
|
@@ -334,4 +334,4 @@ export function insertScrutinReferences(scrutin, _data, visitedUids) {
|
|
|
334
334
|
}
|
|
335
335
|
return scrutin;
|
|
336
336
|
}
|
|
337
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsInJhcHBvcnRldXIiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvblJlZiIsInJldW5pb24iLCJpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyIsIm9kalJlZiIsIm9kaiIsInBvaW50c09kaiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwic2NydXRpbkJ5VWlkIiwidm90ZVJlZnMiLCJzY3J1dGlucyIsInZvdGVSZWYiLCJzY3J1dGluIiwicHVzaCIsImluc2VydFNjcnV0aW5SZWZlcmVuY2VzIiwidm90ZXMiLCJjaGlsZEFjdGUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwibWFuZGF0IiwibWFuZGF0cyIsIm9yZ2FuZXMiLCJvcmdhbmVzUmVmcyIsImluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzIiwiYW1lbmRlbWVudCIsInNpZ25hdGFpcmVzIiwiYXV0ZXVyIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiIsImF1dGV1clJhcHBvcnRldXJPcmdhbmUiLCJnb3V2ZXJuZW1lbnRSZWYiLCJnb3V2ZXJuZW1lbnQiLCJncm91cGVQb2xpdGlxdWVSZWYiLCJncm91cGVQb2xpdGlxdWUiLCJjb3NpZ25hdGFpcmVzUmVmcyIsImNvc2lnbmF0YWlyZXMiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsImF1dGV1cnMiLCJhY3RldXJTdW1tYXJ5IiwiZG9zc2llckJ5VWlkIiwiZG9zc2llciIsImRvc3NpZXJSZWYiLCJpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyIsImNoaWxkRGl2aXNpb24iLCJkaXZpc2lvbnMiLCJpbml0aWF0ZXVyIiwiYWN0ZXVycyIsIm1hbmRhdFJlZiIsIm9yZ2FuZVBhcmVudFJlZiIsIm9yZ2FuZVBhcmVudCIsIm9yZ2FuZVByZWNlZGVudFJlZiIsIm9yZ2FuZVByZWNlZGVudCIsImRlbWFuZGV1cnMiLCJvcmdhbmVTdW1tYXJ5Iiwib3JnYW5lUmV1bmlSZWYiLCJvcmdhbmVSZXVuaSIsInBhcnRpY2lwYW50cyIsInBhcnRpY2lwYW50SW50ZXJuZSIsInBhcnRpY2lwYW50c0ludGVybmVzIiwiX2RhdGEiXSwic291cmNlcyI6WyIuLi9zcmMvaW5zZXJ0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGV1ciwgT3JnYW5lIH0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBBY3RlTGVnaXNsYXRpZixcbiAgRGl2aXNpb24sXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoXG4gIGFjdGU6IEFjdGVMZWdpc2xhdGlmLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFjdGUudWlkKVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYWN0ZS5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucHJvdmVuYW5jZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUucHJvdmVuYW5jZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnByb3ZlbmFuY2UgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmFwcG9ydGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCByYXBwb3J0ZXVyIG9mIGFjdGUucmFwcG9ydGV1cnMpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtyYXBwb3J0ZXVyLmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwcG9ydGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEucmV1bmlvbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5yZXVuaW9uUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJldW5pb24gPSBkYXRhLnJldW5pb25CeVVpZFthY3RlLnJldW5pb25SZWZdXG4gICAgICBpZiAocmV1bmlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUucmV1bmlvbiA9IHJldW5pb25cbiAgICAgICAgaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMocmV1bmlvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIGlmIChhY3RlLm9kalJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQgJiYgb2RqLnBvaW50c09kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGopIHtcbiAgICAgICAgICAgICAgaWYgKHBvaW50T2RqLnVpZCA9PT0gYWN0ZS5vZGpSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RlLm9kaiA9IHBvaW50T2RqXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS50ZXh0ZUFkb3B0ZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQWRvcHRlUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS50ZXh0ZUFkb3B0ZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLnRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVzQXNzb2NpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXh0ZUFzc29jaWUgb2YgYWN0ZS50ZXh0ZXNBc3NvY2llcykge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFt0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llUmVmXVxuICAgICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWUgPSBkb2N1bWVudFxuICAgICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuc2NydXRpbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS52b3RlUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzY3J1dGlucyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHZvdGVSZWYgb2YgYWN0ZS52b3RlUmVmcykge1xuICAgICAgICBjb25zdCBzY3J1dGluID0gZGF0YS5zY3J1dGluQnlVaWRbdm90ZVJlZl1cbiAgICAgICAgaWYgKHNjcnV0aW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhzY3J1dGluLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWN0ZS52b3RlcyA9IHNjcnV0aW5zXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZEFjdGUgb2YgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzIHx8IFtdKSB7XG4gICAgICBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoY2hpbGRBY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWN0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhcbiAgYWN0ZXVyOiBBY3RldXIsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhY3RldXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RldXIudWlkKVxuXG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBtYW5kYXQgb2YgYWN0ZXVyLm1hbmRhdHMgfHwgW10pIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3Qgb3JnYW5lUmVmIG9mIG1hbmRhdC5vcmdhbmVzUmVmcykge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lcy5wdXNoKG9yZ2FuZSlcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFuZGF0Lm9yZ2FuZXMgPSBvcmdhbmVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGV1clxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMoXG4gIGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYW1lbmRlbWVudC51aWQpXG5cbiAgICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAgICBjb25zdCBhdXRldXIgPSBzaWduYXRhaXJlcy5hdXRldXJcbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5hY3RldXJSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthdXRldXIuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGF1dGV1clJhcHBvcnRldXJPcmdhbmUgPVxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmXVxuICAgICAgaWYgKGF1dGV1clJhcHBvcnRldXJPcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSA9IGF1dGV1clJhcHBvcnRldXJPcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhhdXRldXJSYXBwb3J0ZXVyT3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ291dmVybmVtZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGdvdXZlcm5lbWVudCA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdvdXZlcm5lbWVudFJlZl1cbiAgICAgIGlmIChnb3V2ZXJuZW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ291dmVybmVtZW50ID0gZ291dmVybmVtZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoZ291dmVybmVtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY29zaWduYXRhaXJlc1JlZnMgPSBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmc1xuICAgICAgaWYgKGNvc2lnbmF0YWlyZXNSZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29zaWduYXRhaXJlcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3QgY29zaWduYXRhaXJlUmVmIG9mIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgY29zaWduYXRhaXJlID0gZGF0YS5hY3RldXJCeVVpZFtjb3NpZ25hdGFpcmVSZWZdXG4gICAgICAgICAgaWYgKGNvc2lnbmF0YWlyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb3NpZ25hdGFpcmVzLnB1c2goY29zaWduYXRhaXJlKVxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhjb3NpZ25hdGFpcmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzID0gY29zaWduYXRhaXJlc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbWVuZGVtZW50XG59XG5cbmZ1bmN0aW9uIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhcbiAgZGl2aXNpb246IERpdmlzaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgZm9yIChjb25zdCBhdXRldXIgb2YgZGl2aXNpb24uYXV0ZXVycykge1xuICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkb3NzaWVyID0gZGF0YS5kb3NzaWVyQnlVaWRbZGl2aXNpb24uZG9zc2llclJlZl1cbiAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkaXZpc2lvbi5kb3NzaWVyID0gZG9zc2llclxuICAgICAgaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoZG9zc2llciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZERpdmlzaW9uIG9mIGRpdmlzaW9uLmRpdmlzaW9ucyB8fCBbXSkge1xuICAgIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhjaGlsZERpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgfVxuXG4gIHJldHVybiBkaXZpc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogRG9jdW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhkb2N1bWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvY3VtZW50LnVpZClcblxuICAgIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRvY3VtZW50LmF1dGV1cnMpIHtcbiAgICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kb3NzaWVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RvY3VtZW50LmRvc3NpZXJSZWZdXG4gICAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmRvc3NpZXIgPSBkb3NzaWVyXG4gICAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGl2aXNpb24gb2YgZG9jdW1lbnQuZGl2aXNpb25zIHx8IFtdKSB7XG4gICAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoZGl2aXNpb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb2N1bWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoXG4gIGRvc3NpZXI6IERvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9zc2llci51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvc3NpZXIudWlkKVxuXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyA/PyBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGFjdGUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYXRldXIgPSBkb3NzaWVyLmluaXRpYXRldXJcbiAgICBpZiAoaW5pdGlhdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBpbml0aWF0ZXVyLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkubWFuZGF0UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgICAgICAgIGlmIChtYW5kYXQudWlkID09PSBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZikge1xuICAgICAgICAgICAgICAgIGFjdGV1clN1bW1hcnkubWFuZGF0ID0gbWFuZGF0XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbaW5pdGlhdGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluaXRpYXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvc3NpZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoXG4gIG9yZ2FuZTogT3JnYW5lLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMob3JnYW5lLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQob3JnYW5lLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQYXJlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQYXJlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudCA9IG9yZ2FuZVBhcmVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVBhcmVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvcmdhbmUub3JnYW5lUHJlY2VkZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZVByZWNlZGVudCA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lLm9yZ2FuZVByZWNlZGVudFJlZl1cbiAgICAgIGlmIChvcmdhbmVQcmVjZWRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcmdhbmUub3JnYW5lUHJlY2VkZW50ID0gb3JnYW5lUHJlY2VkZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lUHJlY2VkZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gb3JnYW5lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyhcbiAgcmV1bmlvbjogUmV1bmlvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKHJldW5pb24udWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChyZXVuaW9uLnVpZClcblxuICAgIGNvbnN0IGRlbWFuZGV1cnMgPSByZXVuaW9uLmRlbWFuZGV1cnNcbiAgICBpZiAoZGVtYW5kZXVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBkZW1hbmRldXJzLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lU3VtbWFyeSA9IGRlbWFuZGV1cnMub3JnYW5lXG4gICAgICAgIGlmIChvcmdhbmVTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVN1bW1hcnkub3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lU3VtbWFyeS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICByZXVuaW9uLm9yZ2FuZVJldW5pUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZVJldW5pID0gZGF0YS5vcmdhbmVCeVVpZFtyZXVuaW9uLm9yZ2FuZVJldW5pUmVmXVxuICAgICAgaWYgKG9yZ2FuZVJldW5pICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaSA9IG9yZ2FuZVJldW5pXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lUmV1bmksIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudHMgPSByZXVuaW9uLnBhcnRpY2lwYW50c1xuICAgICAgaWYgKHBhcnRpY2lwYW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgcGFydGljaXBhbnRJbnRlcm5lIG9mIHBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudHNJbnRlcm5lcyB8fFxuICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtwYXJ0aWNpcGFudEludGVybmUuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXVuaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhcbiAgc2NydXRpbjogU2NydXRpbixcbiAgX2RhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhzY3J1dGluLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoc2NydXRpbi51aWQpXG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gc2NydXRpblxufVxuIl0sIm1hcHBpbmdzIjoiQUFxQkEsU0FBU0EsOEJBQThCQSxDQUNyQ0MsSUFBb0IsRUFDcEJDLElBQWdCLEVBQ2hCQyxXQUF3QixFQUN4QjtFQUNBLElBQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFHLENBQUNILElBQUksQ0FBQ0ksR0FBRyxDQUFDLEVBQUU7SUFDOUJGLFdBQVcsQ0FBQ0csR0FBRyxDQUFDTCxJQUFJLENBQUNJLEdBQUcsQ0FBQztJQUV6QixJQUNFSCxJQUFJLENBQUNLLGFBQWEsS0FBS0MsU0FBUyxJQUNoQ1AsSUFBSSxDQUFDUSxnQ0FBZ0MsS0FBS0QsU0FBUyxFQUNuRDtNQUNBLE1BQU1FLFFBQVEsR0FBR1IsSUFBSSxDQUFDSyxhQUFhLENBQUNOLElBQUksQ0FBQ1EsZ0NBQWdDLENBQUM7TUFDMUUsSUFBSUMsUUFBUSxLQUFLRixTQUFTLEVBQUU7UUFDMUJQLElBQUksQ0FBQ1UsNkJBQTZCLEdBQUdELFFBQVE7UUFDN0NFLHdCQUF3QixDQUFDRixRQUFRLEVBQUVSLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQ3ZEO0lBQ0Y7SUFDQSxJQUFJRCxJQUFJLENBQUNXLFdBQVcsS0FBS0wsU0FBUyxJQUFJUCxJQUFJLENBQUNhLFNBQVMsS0FBS04sU0FBUyxFQUFFO01BQ2xFLE1BQU1PLE1BQU0sR0FBR2IsSUFBSSxDQUFDVyxXQUFXLENBQUNaLElBQUksQ0FBQ2EsU0FBUyxDQUFDO01BQy9DLElBQUlDLE1BQU0sS0FBS1AsU0FBUyxFQUFFO1FBQ3hCUCxJQUFJLENBQUNjLE1BQU0sR0FBR0EsTUFBTTtRQUNwQkMsc0JBQXNCLENBQUNELE1BQU0sRUFBRWIsSUFBSSxFQUFFQyxXQUFXLENBQUM7TUFDbkQ7SUFDRjtJQUNBLElBQUlELElBQUksQ0FBQ1csV0FBVyxLQUFLTCxTQUFTLElBQUlQLElBQUksQ0FBQ2dCLGFBQWEsS0FBS1QsU0FBUyxFQUFFO01BQ3RFLE1BQU1PLE1BQU0sR0FBR2IsSUFBSSxDQUFDVyxXQUFXLENBQUNaLElBQUksQ0FBQ2dCLGFBQWEsQ0FBQztNQUNuRCxJQUFJRixNQUFNLEtBQUtQLFNBQVMsRUFBRTtRQUN4QlAsSUFBSSxDQUFDaUIsVUFBVSxHQUFHSCxNQUFNO1FBQ3hCQyxzQkFBc0IsQ0FBQ0QsTUFBTSxFQUFFYixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUNuRDtJQUNGO0lBQ0EsSUFBSUQsSUFBSSxDQUFDaUIsV0FBVyxLQUFLWCxTQUFTLElBQUlQLElBQUksQ0FBQ21CLFdBQVcsS0FBS1osU0FBUyxFQUFFO01BQ3BFLEtBQUssTUFBTWEsVUFBVSxJQUFJcEIsSUFBSSxDQUFDbUIsV0FBVyxFQUFFO1FBQ3pDLE1BQU1FLE1BQU0sR0FBR3BCLElBQUksQ0FBQ2lCLFdBQVcsQ0FBQ0UsVUFBVSxDQUFDRSxTQUFTLENBQUM7UUFDckQsSUFBSUQsTUFBTSxLQUFLZCxTQUFTLEVBQUU7VUFDeEJhLFVBQVUsQ0FBQ0MsTUFBTSxHQUFHQSxNQUFNO1VBQzFCRSxzQkFBc0IsQ0FBQ0YsTUFBTSxFQUFFcEIsSUFBSSxFQUFFQyxXQUFXLENBQUM7UUFDbkQ7TUFDRjtJQUNGO0lBQ0EsSUFBSUQsSUFBSSxDQUFDdUIsWUFBWSxLQUFLakIsU0FBUyxJQUFJUCxJQUFJLENBQUN5QixVQUFVLEtBQUtsQixTQUFTLEVBQUU7TUFDcEUsTUFBTW1CLE9BQU8sR0FBR3pCLElBQUksQ0FBQ3VCLFlBQVksQ0FBQ3hCLElBQUksQ0FBQ3lCLFVBQVUsQ0FBQztNQUNsRCxJQUFJQyxPQUFPLEtBQUtuQixTQUFTLEVBQUU7UUFDekJQLElBQUksQ0FBQzBCLE9BQU8sR0FBR0EsT0FBTztRQUN0QkMsdUJBQXVCLENBQUNELE9BQU8sRUFBRXpCLElBQUksRUFBRUMsV0FBVyxDQUFDO1FBQ25ELElBQUlGLElBQUksQ0FBQzRCLE1BQU0sS0FBS3JCLFNBQVMsRUFBRTtVQUM3QixNQUFNc0IsR0FBRyxHQUFHSCxPQUFPLENBQUNHLEdBQUc7VUFDdkIsSUFBSUEsR0FBRyxLQUFLdEIsU0FBUyxJQUFJc0IsR0FBRyxDQUFDQyxTQUFTLEtBQUt2QixTQUFTLEVBQUU7WUFDcEQsS0FBSyxNQUFNd0IsUUFBUSxJQUFJRixHQUFHLENBQUNDLFNBQVMsRUFBRTtjQUNwQyxJQUFJQyxRQUFRLENBQUMzQixHQUFHLEtBQUtKLElBQUksQ0FBQzRCLE1BQU0sRUFBRTtnQkFDaEM1QixJQUFJLENBQUM2QixHQUFHLEdBQUdFLFFBQVE7Z0JBQ25CO2NBQ0Y7WUFDRjtVQUNGO1FBQ0Y7TUFDRjtJQUNGO0lBQ0EsSUFBSTlCLElBQUksQ0FBQ0ssYUFBYSxLQUFLQyxTQUFTLElBQUlQLElBQUksQ0FBQ2dDLGNBQWMsS0FBS3pCLFNBQVMsRUFBRTtNQUN6RSxNQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBYSxDQUFDTixJQUFJLENBQUNnQyxjQUFjLENBQUM7TUFDeEQsSUFBSXZCLFFBQVEsS0FBS0YsU0FBUyxFQUFFO1FBQzFCUCxJQUFJLENBQUNpQyxXQUFXLEdBQUd4QixRQUFRO1FBQzNCRSx3QkFBd0IsQ0FBQ0YsUUFBUSxFQUFFUixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUN2RDtJQUNGO0lBQ0EsSUFDRUQsSUFBSSxDQUFDSyxhQUFhLEtBQUtDLFNBQVMsSUFDaENQLElBQUksQ0FBQ2tDLGVBQWUsS0FBSzNCLFNBQVMsRUFDbEM7TUFDQSxNQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBYSxDQUFDTixJQUFJLENBQUNrQyxlQUFlLENBQUM7TUFDekQsSUFBSXpCLFFBQVEsS0FBS0YsU0FBUyxFQUFFO1FBQzFCUCxJQUFJLENBQUNtQyxZQUFZLEdBQUcxQixRQUFRO1FBQzVCRSx3QkFBd0IsQ0FBQ0YsUUFBUSxFQUFFUixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUN2RDtJQUNGO0lBQ0EsSUFBSUQsSUFBSSxDQUFDSyxhQUFhLEtBQUtDLFNBQVMsSUFBSVAsSUFBSSxDQUFDb0MsY0FBYyxLQUFLN0IsU0FBUyxFQUFFO01BQ3pFLEtBQUssTUFBTTRCLFlBQVksSUFBSW5DLElBQUksQ0FBQ29DLGNBQWMsRUFBRTtRQUM5QyxNQUFNM0IsUUFBUSxHQUFHUixJQUFJLENBQUNLLGFBQWEsQ0FBQzZCLFlBQVksQ0FBQ0QsZUFBZSxDQUFDO1FBQ2pFLElBQUl6QixRQUFRLEtBQUtGLFNBQVMsRUFBRTtVQUMxQjRCLFlBQVksQ0FBQ0EsWUFBWSxHQUFHMUIsUUFBUTtVQUNwQ0Usd0JBQXdCLENBQUNGLFFBQVEsRUFBRVIsSUFBSSxFQUFFQyxXQUFXLENBQUM7UUFDdkQ7TUFDRjtJQUNGO0lBQ0EsSUFBSUQsSUFBSSxDQUFDb0MsWUFBWSxLQUFLOUIsU0FBUyxJQUFJUCxJQUFJLENBQUNzQyxRQUFRLEtBQUsvQixTQUFTLEVBQUU7TUFDbEUsTUFBTWdDLFFBQVEsR0FBRyxFQUFFO01BQ25CLEtBQUssTUFBTUMsT0FBTyxJQUFJeEMsSUFBSSxDQUFDc0MsUUFBUSxFQUFFO1FBQ25DLE1BQU1HLE9BQU8sR0FBR3hDLElBQUksQ0FBQ29DLFlBQVksQ0FBQ0csT0FBTyxDQUFDO1FBQzFDLElBQUlDLE9BQU8sS0FBS2xDLFNBQVMsRUFBRTtVQUN6QmdDLFFBQVEsQ0FBQ0csSUFBSSxDQUFDRCxPQUFPLENBQUM7VUFDdEJFLHVCQUF1QixDQUFDRixPQUFPLEVBQUV4QyxJQUFJLEVBQUVDLFdBQVcsQ0FBQztRQUNyRDtNQUNGO01BQ0FGLElBQUksQ0FBQzRDLEtBQUssR0FBR0wsUUFBUTtJQUN2QjtJQUVBLEtBQUssTUFBTU0sU0FBUyxJQUFJN0MsSUFBSSxDQUFDOEMsZ0JBQWdCLElBQUksRUFBRSxFQUFFO01BQ25EL0MsOEJBQThCLENBQUM4QyxTQUFTLEVBQUU1QyxJQUFJLEVBQUVDLFdBQVcsQ0FBQztJQUM5RDtFQUNGO0VBRUEsT0FBT0YsSUFBSTtBQUNiO0FBRUEsT0FBTyxTQUFTdUIsc0JBQXNCQSxDQUNwQ0YsTUFBYyxFQUNkcEIsSUFBZ0IsRUFDaEJDLFdBQXdCLEVBQ3hCO0VBQ0EsSUFBSSxDQUFDQSxXQUFXLENBQUNDLEdBQUcsQ0FBQ2tCLE1BQU0sQ0FBQ2pCLEdBQUcsQ0FBQyxFQUFFO0lBQ2hDRixXQUFXLENBQUNHLEdBQUcsQ0FBQ2dCLE1BQU0sQ0FBQ2pCLEdBQUcsQ0FBQztJQUUzQixJQUFJSCxJQUFJLENBQUNXLFdBQVcsS0FBS0wsU0FBUyxFQUFFO01BQ2xDLEtBQUssTUFBTXdDLE1BQU0sSUFBSTFCLE1BQU0sQ0FBQzJCLE9BQU8sSUFBSSxFQUFFLEVBQUU7UUFDekMsTUFBTUMsT0FBTyxHQUFHLEVBQUU7UUFDbEIsS0FBSyxNQUFNcEMsU0FBUyxJQUFJa0MsTUFBTSxDQUFDRyxXQUFXLEVBQUU7VUFDMUMsTUFBTXBDLE1BQU0sR0FBR2IsSUFBSSxDQUFDVyxXQUFXLENBQUNDLFNBQVMsQ0FBQztVQUMxQyxJQUFJQyxNQUFNLEtBQUtQLFNBQVMsRUFBRTtZQUN4QjBDLE9BQU8sQ0FBQ1AsSUFBSSxDQUFDNUIsTUFBTSxDQUFDO1lBQ3BCQyxzQkFBc0IsQ0FBQ0QsTUFBTSxFQUFFYixJQUFJLEVBQUVDLFdBQVcsQ0FBQztVQUNuRDtRQUNGO1FBQ0E2QyxNQUFNLENBQUNFLE9BQU8sR0FBR0EsT0FBTztNQUMxQjtJQUNGO0VBQ0Y7RUFFQSxPQUFPNUIsTUFBTTtBQUNmO0FBRUEsT0FBTyxTQUFTOEIsMEJBQTBCQSxDQUN4Q0MsVUFBc0IsRUFDdEJuRCxJQUFnQixFQUNoQkMsV0FBd0IsRUFDeEI7RUFDQSxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBRyxDQUFDaUQsVUFBVSxDQUFDaEQsR0FBRyxDQUFDLEVBQUU7SUFDcENGLFdBQVcsQ0FBQ0csR0FBRyxDQUFDK0MsVUFBVSxDQUFDaEQsR0FBRyxDQUFDO0lBRS9CLE1BQU1pRCxXQUFXLEdBQUdELFVBQVUsQ0FBQ0MsV0FBVztJQUMxQyxNQUFNQyxNQUFNLEdBQUdELFdBQVcsQ0FBQ0MsTUFBTTtJQUNqQyxJQUFJckQsSUFBSSxDQUFDaUIsV0FBVyxLQUFLWCxTQUFTLElBQUkrQyxNQUFNLENBQUNoQyxTQUFTLEtBQUtmLFNBQVMsRUFBRTtNQUNwRSxNQUFNYyxNQUFNLEdBQUdwQixJQUFJLENBQUNpQixXQUFXLENBQUNvQyxNQUFNLENBQUNoQyxTQUFTLENBQUM7TUFDakQsSUFBSUQsTUFBTSxLQUFLZCxTQUFTLEVBQUU7UUFDeEIrQyxNQUFNLENBQUNqQyxNQUFNLEdBQUdBLE1BQU07UUFDdEJFLHNCQUFzQixDQUFDRixNQUFNLEVBQUVwQixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUNuRDtJQUNGO0lBQ0EsSUFDRUQsSUFBSSxDQUFDVyxXQUFXLEtBQUtMLFNBQVMsSUFDOUIrQyxNQUFNLENBQUNDLHlCQUF5QixLQUFLaEQsU0FBUyxFQUM5QztNQUNBLE1BQU1pRCxzQkFBc0IsR0FDMUJ2RCxJQUFJLENBQUNXLFdBQVcsQ0FBQzBDLE1BQU0sQ0FBQ0MseUJBQXlCLENBQUM7TUFDcEQsSUFBSUMsc0JBQXNCLEtBQUtqRCxTQUFTLEVBQUU7UUFDeEMrQyxNQUFNLENBQUNFLHNCQUFzQixHQUFHQSxzQkFBc0I7UUFDdER6QyxzQkFBc0IsQ0FBQ3lDLHNCQUFzQixFQUFFdkQsSUFBSSxFQUFFQyxXQUFXLENBQUM7TUFDbkU7SUFDRjtJQUNBLElBQ0VELElBQUksQ0FBQ1csV0FBVyxLQUFLTCxTQUFTLElBQzlCK0MsTUFBTSxDQUFDRyxlQUFlLEtBQUtsRCxTQUFTLEVBQ3BDO01BQ0EsTUFBTW1ELFlBQVksR0FBR3pELElBQUksQ0FBQ1csV0FBVyxDQUFDMEMsTUFBTSxDQUFDRyxlQUFlLENBQUM7TUFDN0QsSUFBSUMsWUFBWSxLQUFLbkQsU0FBUyxFQUFFO1FBQzlCK0MsTUFBTSxDQUFDSSxZQUFZLEdBQUdBLFlBQVk7UUFDbEMzQyxzQkFBc0IsQ0FBQzJDLFlBQVksRUFBRXpELElBQUksRUFBRUMsV0FBVyxDQUFDO01BQ3pEO0lBQ0Y7SUFDQSxJQUNFRCxJQUFJLENBQUNXLFdBQVcsS0FBS0wsU0FBUyxJQUM5QitDLE1BQU0sQ0FBQ0ssa0JBQWtCLEtBQUtwRCxTQUFTLEVBQ3ZDO01BQ0EsTUFBTU8sTUFBTSxHQUFHYixJQUFJLENBQUNXLFdBQVcsQ0FBQzBDLE1BQU0sQ0FBQ0ssa0JBQWtCLENBQUM7TUFDMUQsSUFBSTdDLE1BQU0sS0FBS1AsU0FBUyxFQUFFO1FBQ3hCK0MsTUFBTSxDQUFDTSxlQUFlLEdBQUc5QyxNQUFNO1FBQy9CQyxzQkFBc0IsQ0FBQ0QsTUFBTSxFQUFFYixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUNuRDtJQUNGO0lBQ0EsSUFBSUQsSUFBSSxDQUFDaUIsV0FBVyxLQUFLWCxTQUFTLEVBQUU7TUFDbEMsTUFBTXNELGlCQUFpQixHQUFHUixXQUFXLENBQUNRLGlCQUFpQjtNQUN2RCxJQUFJQSxpQkFBaUIsS0FBS3RELFNBQVMsRUFBRTtRQUNuQyxNQUFNdUQsYUFBYSxHQUFHLEVBQUU7UUFDeEIsS0FBSyxNQUFNQyxlQUFlLElBQUlWLFdBQVcsQ0FBQ1EsaUJBQWlCLElBQUksRUFBRSxFQUFFO1VBQ2pFLE1BQU1HLFlBQVksR0FBRy9ELElBQUksQ0FBQ2lCLFdBQVcsQ0FBQzZDLGVBQWUsQ0FBQztVQUN0RCxJQUFJQyxZQUFZLEtBQUt6RCxTQUFTLEVBQUU7WUFDOUJ1RCxhQUFhLENBQUNwQixJQUFJLENBQUNzQixZQUFZLENBQUM7WUFDaEN6QyxzQkFBc0IsQ0FBQ3lDLFlBQVksRUFBRS9ELElBQUksRUFBRUMsV0FBVyxDQUFDO1VBQ3pEO1FBQ0Y7UUFDQW1ELFdBQVcsQ0FBQ1MsYUFBYSxHQUFHQSxhQUFhO01BQzNDO0lBQ0Y7RUFDRjtFQUVBLE9BQU9WLFVBQVU7QUFDbkI7QUFFQSxTQUFTYSx3QkFBd0JBLENBQy9CQyxRQUFrQixFQUNsQmpFLElBQWdCLEVBQ2hCQyxXQUF3QixFQUN4QjtFQUNBLEtBQUssTUFBTW9ELE1BQU0sSUFBSVksUUFBUSxDQUFDQyxPQUFPLEVBQUU7SUFDckMsTUFBTUMsYUFBYSxHQUFHZCxNQUFNLENBQUNqQyxNQUFNO0lBQ25DLElBQUlwQixJQUFJLENBQUNpQixXQUFXLEtBQUtYLFNBQVMsSUFBSTZELGFBQWEsS0FBSzdELFNBQVMsRUFBRTtNQUNqRSxNQUFNYyxNQUFNLEdBQUdwQixJQUFJLENBQUNpQixXQUFXLENBQUNrRCxhQUFhLENBQUM5QyxTQUFTLENBQUM7TUFDeEQsSUFBSUQsTUFBTSxLQUFLZCxTQUFTLEVBQUU7UUFDeEI2RCxhQUFhLENBQUMvQyxNQUFNLEdBQUdBLE1BQU07UUFDN0JFLHNCQUFzQixDQUFDRixNQUFNLEVBQUVwQixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUNuRDtJQUNGO0lBRUEsSUFBSUQsSUFBSSxDQUFDVyxXQUFXLEtBQUtMLFNBQVMsSUFBSStDLE1BQU0sQ0FBQ3pDLFNBQVMsS0FBS04sU0FBUyxFQUFFO01BQ3BFLE1BQU1PLE1BQU0sR0FBR2IsSUFBSSxDQUFDVyxXQUFXLENBQUMwQyxNQUFNLENBQUN6QyxTQUFTLENBQUM7TUFDakQsSUFBSUMsTUFBTSxLQUFLUCxTQUFTLEVBQUU7UUFDeEIrQyxNQUFNLENBQUN4QyxNQUFNLEdBQUdBLE1BQU07UUFDdEJDLHNCQUFzQixDQUFDRCxNQUFNLEVBQUViLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQ25EO0lBQ0Y7RUFDRjtFQUVBLElBQUlELElBQUksQ0FBQ29FLFlBQVksS0FBSzlELFNBQVMsRUFBRTtJQUNuQyxNQUFNK0QsT0FBTyxHQUFHckUsSUFBSSxDQUFDb0UsWUFBWSxDQUFDSCxRQUFRLENBQUNLLFVBQVUsQ0FBQztJQUN0RCxJQUFJRCxPQUFPLEtBQUsvRCxTQUFTLEVBQUU7TUFDekIyRCxRQUFRLENBQUNJLE9BQU8sR0FBR0EsT0FBTztNQUMxQkUsdUJBQXVCLENBQUNGLE9BQU8sRUFBRXJFLElBQUksRUFBRUMsV0FBVyxDQUFDO0lBQ3JEO0VBQ0Y7RUFFQSxLQUFLLE1BQU11RSxhQUFhLElBQUlQLFFBQVEsQ0FBQ1EsU0FBUyxJQUFJLEVBQUUsRUFBRTtJQUNwRFQsd0JBQXdCLENBQUNRLGFBQWEsRUFBRXhFLElBQUksRUFBRUMsV0FBVyxDQUFDO0VBQzVEO0VBRUEsT0FBT2dFLFFBQVE7QUFDakI7QUFFQSxPQUFPLFNBQVN2RCx3QkFBd0JBLENBQ3RDRixRQUFrQixFQUNsQlIsSUFBZ0IsRUFDaEJDLFdBQXdCLEVBQ3hCO0VBQ0EsSUFBSSxDQUFDQSxXQUFXLENBQUNDLEdBQUcsQ0FBQ00sUUFBUSxDQUFDTCxHQUFHLENBQUMsRUFBRTtJQUNsQ0YsV0FBVyxDQUFDRyxHQUFHLENBQUNJLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDO0lBRTdCLEtBQUssTUFBTWtELE1BQU0sSUFBSTdDLFFBQVEsQ0FBQzBELE9BQU8sRUFBRTtNQUNyQyxNQUFNQyxhQUFhLEdBQUdkLE1BQU0sQ0FBQ2pDLE1BQU07TUFDbkMsSUFBSXBCLElBQUksQ0FBQ2lCLFdBQVcsS0FBS1gsU0FBUyxJQUFJNkQsYUFBYSxLQUFLN0QsU0FBUyxFQUFFO1FBQ2pFLE1BQU1jLE1BQU0sR0FBR3BCLElBQUksQ0FBQ2lCLFdBQVcsQ0FBQ2tELGFBQWEsQ0FBQzlDLFNBQVMsQ0FBQztRQUN4RCxJQUFJRCxNQUFNLEtBQUtkLFNBQVMsRUFBRTtVQUN4QjZELGFBQWEsQ0FBQy9DLE1BQU0sR0FBR0EsTUFBTTtVQUM3QkUsc0JBQXNCLENBQUNGLE1BQU0sRUFBRXBCLElBQUksRUFBRUMsV0FBVyxDQUFDO1FBQ25EO01BQ0Y7TUFFQSxJQUFJRCxJQUFJLENBQUNXLFdBQVcsS0FBS0wsU0FBUyxJQUFJK0MsTUFBTSxDQUFDekMsU0FBUyxLQUFLTixTQUFTLEVBQUU7UUFDcEUsTUFBTU8sTUFBTSxHQUFHYixJQUFJLENBQUNXLFdBQVcsQ0FBQzBDLE1BQU0sQ0FBQ3pDLFNBQVMsQ0FBQztRQUNqRCxJQUFJQyxNQUFNLEtBQUtQLFNBQVMsRUFBRTtVQUN4QitDLE1BQU0sQ0FBQ3hDLE1BQU0sR0FBR0EsTUFBTTtVQUN0QkMsc0JBQXNCLENBQUNELE1BQU0sRUFBRWIsSUFBSSxFQUFFQyxXQUFXLENBQUM7UUFDbkQ7TUFDRjtJQUNGO0lBRUEsSUFBSUQsSUFBSSxDQUFDb0UsWUFBWSxLQUFLOUQsU0FBUyxFQUFFO01BQ25DLE1BQU0rRCxPQUFPLEdBQUdyRSxJQUFJLENBQUNvRSxZQUFZLENBQUM1RCxRQUFRLENBQUM4RCxVQUFVLENBQUM7TUFDdEQsSUFBSUQsT0FBTyxLQUFLL0QsU0FBUyxFQUFFO1FBQ3pCRSxRQUFRLENBQUM2RCxPQUFPLEdBQUdBLE9BQU87UUFDMUJFLHVCQUF1QixDQUFDRixPQUFPLEVBQUVyRSxJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUNyRDtJQUNGO0lBRUEsS0FBSyxNQUFNZ0UsUUFBUSxJQUFJekQsUUFBUSxDQUFDaUUsU0FBUyxJQUFJLEVBQUUsRUFBRTtNQUMvQ1Qsd0JBQXdCLENBQUNDLFFBQVEsRUFBRWpFLElBQUksRUFBRUMsV0FBVyxDQUFDO0lBQ3ZEO0VBQ0Y7RUFFQSxPQUFPTyxRQUFRO0FBQ2pCO0FBRUEsT0FBTyxTQUFTK0QsdUJBQXVCQSxDQUNyQ0YsT0FBNkIsRUFDN0JyRSxJQUFnQixFQUNoQkMsV0FBd0IsRUFDeEI7RUFDQSxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBRyxDQUFDbUUsT0FBTyxDQUFDbEUsR0FBRyxDQUFDLEVBQUU7SUFDakNGLFdBQVcsQ0FBQ0csR0FBRyxDQUFDaUUsT0FBTyxDQUFDbEUsR0FBRyxDQUFDO0lBRTVCLEtBQUssTUFBTUosSUFBSSxJQUFJc0UsT0FBTyxDQUFDeEIsZ0JBQWdCLElBQUksRUFBRSxFQUFFO01BQ2pEL0MsOEJBQThCLENBQUNDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxXQUFXLENBQUM7SUFDekQ7SUFFQSxNQUFNeUUsVUFBVSxHQUFHTCxPQUFPLENBQUNLLFVBQVU7SUFDckMsSUFBSUEsVUFBVSxLQUFLcEUsU0FBUyxFQUFFO01BQzVCLElBQUlOLElBQUksQ0FBQ2lCLFdBQVcsS0FBS1gsU0FBUyxFQUFFO1FBQ2xDLEtBQUssTUFBTTZELGFBQWEsSUFBSU8sVUFBVSxDQUFDQyxPQUFPLElBQUksRUFBRSxFQUFFO1VBQ3BELE1BQU12RCxNQUFNLEdBQUdwQixJQUFJLENBQUNpQixXQUFXLENBQUNrRCxhQUFhLENBQUM5QyxTQUFTLENBQUM7VUFDeEQsSUFBSUQsTUFBTSxLQUFLZCxTQUFTLEVBQUU7WUFDeEI2RCxhQUFhLENBQUMvQyxNQUFNLEdBQUdBLE1BQU07WUFDN0JFLHNCQUFzQixDQUFDRixNQUFNLEVBQUVwQixJQUFJLEVBQUVDLFdBQVcsQ0FBQztVQUNuRDtVQUNBLElBQUltQixNQUFNLEtBQUtkLFNBQVMsSUFBSTZELGFBQWEsQ0FBQ1MsU0FBUyxLQUFLdEUsU0FBUyxFQUFFO1lBQ2pFLEtBQUssTUFBTXdDLE1BQU0sSUFBSTFCLE1BQU0sQ0FBQzJCLE9BQU8sSUFBSSxFQUFFLEVBQUU7Y0FDekMsSUFBSUQsTUFBTSxDQUFDM0MsR0FBRyxLQUFLZ0UsYUFBYSxDQUFDUyxTQUFTLEVBQUU7Z0JBQzFDVCxhQUFhLENBQUNyQixNQUFNLEdBQUdBLE1BQU07Z0JBQzdCO2NBQ0Y7WUFDRjtVQUNGO1FBQ0Y7TUFDRjtNQUNBLElBQ0U5QyxJQUFJLENBQUNXLFdBQVcsS0FBS0wsU0FBUyxJQUM5Qm9FLFVBQVUsQ0FBQzlELFNBQVMsS0FBS04sU0FBUyxFQUNsQztRQUNBLE1BQU1PLE1BQU0sR0FBR2IsSUFBSSxDQUFDVyxXQUFXLENBQUMrRCxVQUFVLENBQUM5RCxTQUFTLENBQUM7UUFDckQsSUFBSUMsTUFBTSxLQUFLUCxTQUFTLEVBQUU7VUFDeEJvRSxVQUFVLENBQUM3RCxNQUFNLEdBQUdBLE1BQU07VUFDMUJDLHNCQUFzQixDQUFDRCxNQUFNLEVBQUViLElBQUksRUFBRUMsV0FBVyxDQUFDO1FBQ25EO01BQ0Y7SUFDRjtFQUNGO0VBRUEsT0FBT29FLE9BQU87QUFDaEI7QUFFQSxPQUFPLFNBQVN2RCxzQkFBc0JBLENBQ3BDRCxNQUFjLEVBQ2RiLElBQWdCLEVBQ2hCQyxXQUF3QixFQUN4QjtFQUNBLElBQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFHLENBQUNXLE1BQU0sQ0FBQ1YsR0FBRyxDQUFDLEVBQUU7SUFDaENGLFdBQVcsQ0FBQ0csR0FBRyxDQUFDUyxNQUFNLENBQUNWLEdBQUcsQ0FBQztJQUUzQixJQUNFSCxJQUFJLENBQUNXLFdBQVcsS0FBS0wsU0FBUyxJQUM5Qk8sTUFBTSxDQUFDZ0UsZUFBZSxLQUFLdkUsU0FBUyxFQUNwQztNQUNBLE1BQU13RSxZQUFZLEdBQUc5RSxJQUFJLENBQUNXLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDZ0UsZUFBZSxDQUFDO01BQzdELElBQUlDLFlBQVksS0FBS3hFLFNBQVMsRUFBRTtRQUM5Qk8sTUFBTSxDQUFDaUUsWUFBWSxHQUFHQSxZQUFZO1FBQ2xDaEUsc0JBQXNCLENBQUNnRSxZQUFZLEVBQUU5RSxJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUN6RDtJQUNGO0lBRUEsSUFDRUQsSUFBSSxDQUFDVyxXQUFXLEtBQUtMLFNBQVMsSUFDOUJPLE1BQU0sQ0FBQ2tFLGtCQUFrQixLQUFLekUsU0FBUyxFQUN2QztNQUNBLE1BQU0wRSxlQUFlLEdBQUdoRixJQUFJLENBQUNXLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDa0Usa0JBQWtCLENBQUM7TUFDbkUsSUFBSUMsZUFBZSxLQUFLMUUsU0FBUyxFQUFFO1FBQ2pDTyxNQUFNLENBQUNtRSxlQUFlLEdBQUdBLGVBQWU7UUFDeENsRSxzQkFBc0IsQ0FBQ2tFLGVBQWUsRUFBRWhGLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQzVEO0lBQ0Y7O0lBRUE7RUFDRjtFQUVBLE9BQU9ZLE1BQU07QUFDZjtBQUVBLE9BQU8sU0FBU2EsdUJBQXVCQSxDQUNyQ0QsT0FBZ0IsRUFDaEJ6QixJQUFnQixFQUNoQkMsV0FBd0IsRUFDeEI7RUFDQSxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBRyxDQUFDdUIsT0FBTyxDQUFDdEIsR0FBRyxDQUFDLEVBQUU7SUFDakNGLFdBQVcsQ0FBQ0csR0FBRyxDQUFDcUIsT0FBTyxDQUFDdEIsR0FBRyxDQUFDO0lBRTVCLE1BQU04RSxVQUFVLEdBQUd4RCxPQUFPLENBQUN3RCxVQUFVO0lBQ3JDLElBQUlBLFVBQVUsS0FBSzNFLFNBQVMsRUFBRTtNQUM1QixJQUFJTixJQUFJLENBQUNpQixXQUFXLEtBQUtYLFNBQVMsRUFBRTtRQUNsQyxLQUFLLE1BQU02RCxhQUFhLElBQUljLFVBQVUsQ0FBQ04sT0FBTyxJQUFJLEVBQUUsRUFBRTtVQUNwRCxNQUFNdkQsTUFBTSxHQUFHcEIsSUFBSSxDQUFDaUIsV0FBVyxDQUFDa0QsYUFBYSxDQUFDOUMsU0FBUyxDQUFDO1VBQ3hELElBQUlELE1BQU0sS0FBS2QsU0FBUyxFQUFFO1lBQ3hCNkQsYUFBYSxDQUFDL0MsTUFBTSxHQUFHQSxNQUFNO1lBQzdCRSxzQkFBc0IsQ0FBQ0YsTUFBTSxFQUFFcEIsSUFBSSxFQUFFQyxXQUFXLENBQUM7VUFDbkQ7UUFDRjtNQUNGO01BQ0EsSUFBSUQsSUFBSSxDQUFDVyxXQUFXLEtBQUtMLFNBQVMsRUFBRTtRQUNsQyxNQUFNNEUsYUFBYSxHQUFHRCxVQUFVLENBQUNwRSxNQUFNO1FBQ3ZDLElBQUlxRSxhQUFhLEtBQUs1RSxTQUFTLEVBQUU7VUFDL0IsTUFBTU8sTUFBTSxHQUFHYixJQUFJLENBQUNXLFdBQVcsQ0FBQ3VFLGFBQWEsQ0FBQ3RFLFNBQVMsQ0FBQztVQUN4RCxJQUFJQyxNQUFNLEtBQUtQLFNBQVMsRUFBRTtZQUN4QjRFLGFBQWEsQ0FBQ3JFLE1BQU0sR0FBR0EsTUFBTTtZQUM3QkMsc0JBQXNCLENBQUNELE1BQU0sRUFBRWIsSUFBSSxFQUFFQyxXQUFXLENBQUM7VUFDbkQ7UUFDRjtNQUNGO0lBQ0Y7SUFDQSxJQUNFRCxJQUFJLENBQUNXLFdBQVcsS0FBS0wsU0FBUyxJQUM5Qm1CLE9BQU8sQ0FBQzBELGNBQWMsS0FBSzdFLFNBQVMsRUFDcEM7TUFDQSxNQUFNOEUsV0FBVyxHQUFHcEYsSUFBSSxDQUFDVyxXQUFXLENBQUNjLE9BQU8sQ0FBQzBELGNBQWMsQ0FBQztNQUM1RCxJQUFJQyxXQUFXLEtBQUs5RSxTQUFTLEVBQUU7UUFDN0JtQixPQUFPLENBQUMyRCxXQUFXLEdBQUdBLFdBQVc7UUFDakN0RSxzQkFBc0IsQ0FBQ3NFLFdBQVcsRUFBRXBGLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQ3hEO0lBQ0Y7SUFDQSxJQUFJRCxJQUFJLENBQUNpQixXQUFXLEtBQUtYLFNBQVMsRUFBRTtNQUNsQyxNQUFNK0UsWUFBWSxHQUFHNUQsT0FBTyxDQUFDNEQsWUFBWTtNQUN6QyxJQUFJQSxZQUFZLEtBQUsvRSxTQUFTLEVBQUU7UUFDOUIsS0FBSyxNQUFNZ0Ysa0JBQWtCLElBQUlELFlBQVksQ0FBQ0Usb0JBQW9CLElBQ2hFLEVBQUUsRUFBRTtVQUNKLE1BQU1uRSxNQUFNLEdBQUdwQixJQUFJLENBQUNpQixXQUFXLENBQUNxRSxrQkFBa0IsQ0FBQ2pFLFNBQVMsQ0FBQztVQUM3RCxJQUFJRCxNQUFNLEtBQUtkLFNBQVMsRUFBRTtZQUN4QmdGLGtCQUFrQixDQUFDbEUsTUFBTSxHQUFHQSxNQUFNO1lBQ2xDRSxzQkFBc0IsQ0FBQ0YsTUFBTSxFQUFFcEIsSUFBSSxFQUFFQyxXQUFXLENBQUM7VUFDbkQ7UUFDRjtNQUNGO0lBQ0Y7RUFDRjtFQUVBLE9BQU93QixPQUFPO0FBQ2hCO0FBRUEsT0FBTyxTQUFTaUIsdUJBQXVCQSxDQUNyQ0YsT0FBZ0IsRUFDaEJnRCxLQUFpQixFQUNqQnZGLFdBQXdCLEVBQ3hCO0VBQ0EsSUFBSSxDQUFDQSxXQUFXLENBQUNDLEdBQUcsQ0FBQ3NDLE9BQU8sQ0FBQ3JDLEdBQUcsQ0FBQyxFQUFFO0lBQ2pDRixXQUFXLENBQUNHLEdBQUcsQ0FBQ29DLE9BQU8sQ0FBQ3JDLEdBQUcsQ0FBQzs7SUFFNUI7RUFDRjtFQUVBLE9BQU9xQyxPQUFPO0FBQ2hCIn0=
|
|
337
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsInJhcHBvcnRldXIiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvblJlZiIsInJldW5pb24iLCJpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyIsIm9kalJlZiIsIm9kaiIsInBvaW50c09kaiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwic2NydXRpbkJ5VWlkIiwidm90ZVJlZnMiLCJzY3J1dGlucyIsInZvdGVSZWYiLCJzY3J1dGluIiwicHVzaCIsImluc2VydFNjcnV0aW5SZWZlcmVuY2VzIiwidm90ZXMiLCJjaGlsZEFjdGUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwibWFuZGF0IiwibWFuZGF0cyIsIm9yZ2FuZXMiLCJvcmdhbmVzUmVmcyIsImluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzIiwiYW1lbmRlbWVudCIsInNpZ25hdGFpcmVzIiwiYXV0ZXVyIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiIsImF1dGV1clJhcHBvcnRldXJPcmdhbmUiLCJnb3V2ZXJuZW1lbnRSZWYiLCJnb3V2ZXJuZW1lbnQiLCJncm91cGVQb2xpdGlxdWVSZWYiLCJncm91cGVQb2xpdGlxdWUiLCJjb3NpZ25hdGFpcmVzUmVmcyIsImNvc2lnbmF0YWlyZXMiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsImF1dGV1cnMiLCJhY3RldXJTdW1tYXJ5IiwiZG9zc2llckJ5VWlkIiwiZG9zc2llciIsImRvc3NpZXJSZWYiLCJpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyIsImNoaWxkRGl2aXNpb24iLCJkaXZpc2lvbnMiLCJpbml0aWF0ZXVyIiwiYWN0ZXVycyIsIm1hbmRhdFJlZiIsIm9yZ2FuZVBhcmVudFJlZiIsIm9yZ2FuZVBhcmVudCIsIm9yZ2FuZVByZWNlZGVudFJlZiIsIm9yZ2FuZVByZWNlZGVudCIsImRlbWFuZGV1cnMiLCJvcmdhbmVTdW1tYXJ5Iiwib3JnYW5lUmV1bmlSZWYiLCJvcmdhbmVSZXVuaSIsInBhcnRpY2lwYW50cyIsInBhcnRpY2lwYW50SW50ZXJuZSIsInBhcnRpY2lwYW50c0ludGVybmVzIiwiX2RhdGEiXSwic291cmNlcyI6WyIuLi9zcmMvaW5zZXJ0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGV1ciwgT3JnYW5lIH0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBBY3RlTGVnaXNsYXRpZixcbiAgRGl2aXNpb24sXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoXG4gIGFjdGU6IEFjdGVMZWdpc2xhdGlmLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFjdGUudWlkKVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYWN0ZS5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucHJvdmVuYW5jZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUucHJvdmVuYW5jZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnByb3ZlbmFuY2UgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmFwcG9ydGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCByYXBwb3J0ZXVyIG9mIGFjdGUucmFwcG9ydGV1cnMpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtyYXBwb3J0ZXVyLmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwcG9ydGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEucmV1bmlvbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5yZXVuaW9uUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJldW5pb24gPSBkYXRhLnJldW5pb25CeVVpZFthY3RlLnJldW5pb25SZWZdXG4gICAgICBpZiAocmV1bmlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUucmV1bmlvbiA9IHJldW5pb25cbiAgICAgICAgaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMocmV1bmlvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIGlmIChhY3RlLm9kalJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQgJiYgb2RqLnBvaW50c09kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGopIHtcbiAgICAgICAgICAgICAgaWYgKHBvaW50T2RqLnVpZCA9PT0gYWN0ZS5vZGpSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RlLm9kaiA9IHBvaW50T2RqXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS50ZXh0ZUFkb3B0ZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQWRvcHRlUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS50ZXh0ZUFkb3B0ZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLnRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVzQXNzb2NpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXh0ZUFzc29jaWUgb2YgYWN0ZS50ZXh0ZXNBc3NvY2llcykge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFt0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llUmVmXVxuICAgICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWUgPSBkb2N1bWVudFxuICAgICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuc2NydXRpbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS52b3RlUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzY3J1dGlucyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHZvdGVSZWYgb2YgYWN0ZS52b3RlUmVmcykge1xuICAgICAgICBjb25zdCBzY3J1dGluID0gZGF0YS5zY3J1dGluQnlVaWRbdm90ZVJlZl1cbiAgICAgICAgaWYgKHNjcnV0aW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhzY3J1dGluLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWN0ZS52b3RlcyA9IHNjcnV0aW5zXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZEFjdGUgb2YgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzIHx8IFtdKSB7XG4gICAgICBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoY2hpbGRBY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWN0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhcbiAgYWN0ZXVyOiBBY3RldXIsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhY3RldXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RldXIudWlkKVxuXG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBtYW5kYXQgb2YgYWN0ZXVyLm1hbmRhdHMgfHwgW10pIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3Qgb3JnYW5lUmVmIG9mIG1hbmRhdC5vcmdhbmVzUmVmcykge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lcy5wdXNoKG9yZ2FuZSlcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFuZGF0Lm9yZ2FuZXMgPSBvcmdhbmVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGV1clxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMoXG4gIGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYW1lbmRlbWVudC51aWQpXG5cbiAgICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAgICBjb25zdCBhdXRldXIgPSBzaWduYXRhaXJlcy5hdXRldXJcbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5hY3RldXJSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthdXRldXIuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGF1dGV1clJhcHBvcnRldXJPcmdhbmUgPVxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmXVxuICAgICAgaWYgKGF1dGV1clJhcHBvcnRldXJPcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSA9IGF1dGV1clJhcHBvcnRldXJPcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhhdXRldXJSYXBwb3J0ZXVyT3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ291dmVybmVtZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGdvdXZlcm5lbWVudCA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdvdXZlcm5lbWVudFJlZl1cbiAgICAgIGlmIChnb3V2ZXJuZW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ291dmVybmVtZW50ID0gZ291dmVybmVtZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoZ291dmVybmVtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY29zaWduYXRhaXJlc1JlZnMgPSBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmc1xuICAgICAgaWYgKGNvc2lnbmF0YWlyZXNSZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29zaWduYXRhaXJlcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3QgY29zaWduYXRhaXJlUmVmIG9mIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgY29zaWduYXRhaXJlID0gZGF0YS5hY3RldXJCeVVpZFtjb3NpZ25hdGFpcmVSZWZdXG4gICAgICAgICAgaWYgKGNvc2lnbmF0YWlyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb3NpZ25hdGFpcmVzLnB1c2goY29zaWduYXRhaXJlKVxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhjb3NpZ25hdGFpcmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzID0gY29zaWduYXRhaXJlc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbWVuZGVtZW50XG59XG5cbmZ1bmN0aW9uIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhcbiAgZGl2aXNpb246IERpdmlzaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgZm9yIChjb25zdCBhdXRldXIgb2YgZGl2aXNpb24uYXV0ZXVycykge1xuICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkb3NzaWVyID0gZGF0YS5kb3NzaWVyQnlVaWRbZGl2aXNpb24uZG9zc2llclJlZl1cbiAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkaXZpc2lvbi5kb3NzaWVyID0gZG9zc2llclxuICAgICAgaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoZG9zc2llciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZERpdmlzaW9uIG9mIGRpdmlzaW9uLmRpdmlzaW9ucyB8fCBbXSkge1xuICAgIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhjaGlsZERpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgfVxuXG4gIHJldHVybiBkaXZpc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogRG9jdW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhkb2N1bWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvY3VtZW50LnVpZClcblxuICAgIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRvY3VtZW50LmF1dGV1cnMpIHtcbiAgICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kb3NzaWVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RvY3VtZW50LmRvc3NpZXJSZWZdXG4gICAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmRvc3NpZXIgPSBkb3NzaWVyXG4gICAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGl2aXNpb24gb2YgZG9jdW1lbnQuZGl2aXNpb25zIHx8IFtdKSB7XG4gICAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoZGl2aXNpb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb2N1bWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoXG4gIGRvc3NpZXI6IERvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9zc2llci51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvc3NpZXIudWlkKVxuXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyA/PyBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGFjdGUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYXRldXIgPSBkb3NzaWVyLmluaXRpYXRldXJcbiAgICBpZiAoaW5pdGlhdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBpbml0aWF0ZXVyLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkubWFuZGF0UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgICAgICAgIGlmIChtYW5kYXQudWlkID09PSBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZikge1xuICAgICAgICAgICAgICAgIGFjdGV1clN1bW1hcnkubWFuZGF0ID0gbWFuZGF0XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbaW5pdGlhdGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluaXRpYXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvc3NpZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoXG4gIG9yZ2FuZTogT3JnYW5lLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMob3JnYW5lLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQob3JnYW5lLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQYXJlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQYXJlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudCA9IG9yZ2FuZVBhcmVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVBhcmVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvcmdhbmUub3JnYW5lUHJlY2VkZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZVByZWNlZGVudCA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lLm9yZ2FuZVByZWNlZGVudFJlZl1cbiAgICAgIGlmIChvcmdhbmVQcmVjZWRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcmdhbmUub3JnYW5lUHJlY2VkZW50ID0gb3JnYW5lUHJlY2VkZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lUHJlY2VkZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gb3JnYW5lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyhcbiAgcmV1bmlvbjogUmV1bmlvbixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZFVpZHM6IFNldDxzdHJpbmc+LFxuKSB7XG4gIGlmICghdmlzaXRlZFVpZHMuaGFzKHJldW5pb24udWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChyZXVuaW9uLnVpZClcblxuICAgIGNvbnN0IGRlbWFuZGV1cnMgPSByZXVuaW9uLmRlbWFuZGV1cnNcbiAgICBpZiAoZGVtYW5kZXVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBkZW1hbmRldXJzLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lU3VtbWFyeSA9IGRlbWFuZGV1cnMub3JnYW5lXG4gICAgICAgIGlmIChvcmdhbmVTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZVN1bW1hcnkub3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lU3VtbWFyeS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICByZXVuaW9uLm9yZ2FuZVJldW5pUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZVJldW5pID0gZGF0YS5vcmdhbmVCeVVpZFtyZXVuaW9uLm9yZ2FuZVJldW5pUmVmXVxuICAgICAgaWYgKG9yZ2FuZVJldW5pICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaSA9IG9yZ2FuZVJldW5pXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lUmV1bmksIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudHMgPSByZXVuaW9uLnBhcnRpY2lwYW50c1xuICAgICAgaWYgKHBhcnRpY2lwYW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgcGFydGljaXBhbnRJbnRlcm5lIG9mIHBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudHNJbnRlcm5lcyB8fFxuICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtwYXJ0aWNpcGFudEludGVybmUuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXVuaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhcbiAgc2NydXRpbjogU2NydXRpbixcbiAgX2RhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhzY3J1dGluLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoc2NydXRpbi51aWQpXG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gc2NydXRpblxufVxuIl0sIm1hcHBpbmdzIjoiQUFxQkEsU0FBU0EsOEJBQThCQSxDQUNyQ0MsSUFBb0IsRUFDcEJDLElBQWdCLEVBQ2hCQyxXQUF3QixFQUN4QjtFQUNBLElBQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFHLENBQUNILElBQUksQ0FBQ0ksR0FBRyxDQUFDLEVBQUU7SUFDOUJGLFdBQVcsQ0FBQ0csR0FBRyxDQUFDTCxJQUFJLENBQUNJLEdBQUcsQ0FBQztJQUV6QixJQUNFSCxJQUFJLENBQUNLLGFBQWEsS0FBS0MsU0FBUyxJQUNoQ1AsSUFBSSxDQUFDUSxnQ0FBZ0MsS0FBS0QsU0FBUyxFQUNuRDtNQUNBLE1BQU1FLFFBQVEsR0FBR1IsSUFBSSxDQUFDSyxhQUFhLENBQUNOLElBQUksQ0FBQ1EsZ0NBQWdDLENBQUM7TUFDMUUsSUFBSUMsUUFBUSxLQUFLRixTQUFTLEVBQUU7UUFDMUJQLElBQUks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
|
package/lib/loaders.d.ts
CHANGED
|
@@ -9,7 +9,6 @@ import { Legislature } from "./types/legislatures";
|
|
|
9
9
|
import { Scrutin } from "./types/scrutins";
|
|
10
10
|
import { Question } from "./types/questions";
|
|
11
11
|
import { CompteRendu } from "./types/debats";
|
|
12
|
-
import { TextesLoi } from "./types/textes_loi";
|
|
13
12
|
import { DocumentUrlFormat } from "./urls";
|
|
14
13
|
export interface Data {
|
|
15
14
|
readonly acteurByUid: {
|
|
@@ -91,10 +90,6 @@ export declare function iterLoadAssembleeComptesRendus(dataDir: string, legislat
|
|
|
91
90
|
compteRendu: CompteRendu;
|
|
92
91
|
datasetLegislature: Legislature;
|
|
93
92
|
}, void, unknown>;
|
|
94
|
-
export declare function iterLoadAssembleeTexteLoi(dataDir: string, legislature: Legislature, options?: {}): Generator<{
|
|
95
|
-
texteLoi: TextesLoi;
|
|
96
|
-
datasetLegislature: Legislature;
|
|
97
|
-
}, void, unknown>;
|
|
98
93
|
export declare function loadAssembleeData(dataDir: string, enabledDatasets: EnabledDatasets, legislature: Legislature, { log }?: {
|
|
99
94
|
log?: boolean | undefined;
|
|
100
95
|
}): Data;
|