semantifold 0.12.0 → 0.14.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.
Files changed (73) hide show
  1. package/README.md +2 -0
  2. package/build/src/backends/effects.js +5 -2
  3. package/build/src/backends/java.js +33 -14
  4. package/build/src/backends/javascript.js +83 -18
  5. package/build/src/backends/php.d.ts.map +1 -1
  6. package/build/src/backends/php.js +88 -16
  7. package/build/src/backends/ruby.js +37 -12
  8. package/build/src/backends/scalars.js +2 -2
  9. package/build/src/backends/shared.d.ts +2 -1
  10. package/build/src/backends/shared.d.ts.map +1 -1
  11. package/build/src/backends/shared.js +299 -42
  12. package/build/src/backends/typescript.js +83 -18
  13. package/build/src/backends/writer.d.ts +18 -4
  14. package/build/src/backends/writer.d.ts.map +1 -1
  15. package/build/src/backends/writer.js +40 -4
  16. package/build/src/frontends/java.d.ts +9 -1
  17. package/build/src/frontends/java.d.ts.map +1 -1
  18. package/build/src/frontends/java.js +90 -43
  19. package/build/src/frontends/javascript-typescript.d.ts +3 -1
  20. package/build/src/frontends/javascript-typescript.d.ts.map +1 -1
  21. package/build/src/frontends/javascript-typescript.js +133 -52
  22. package/build/src/frontends/php.d.ts +13 -1
  23. package/build/src/frontends/php.d.ts.map +1 -1
  24. package/build/src/frontends/php.js +226 -59
  25. package/build/src/frontends/ruby.d.ts +4 -1
  26. package/build/src/frontends/ruby.d.ts.map +1 -1
  27. package/build/src/frontends/ruby.js +113 -37
  28. package/build/src/frontends/types.d.ts +9 -2
  29. package/build/src/frontends/types.d.ts.map +1 -1
  30. package/build/src/frontends/types.js +26 -9
  31. package/build/src/language-registry.d.ts.map +1 -1
  32. package/build/src/language-registry.js +14 -6
  33. package/build/src/mapping.d.ts.map +1 -1
  34. package/build/src/mapping.js +4 -2
  35. package/build/src/semantic/effects.d.ts.map +1 -1
  36. package/build/src/semantic/effects.js +20 -6
  37. package/build/src/semantic/lifetime.js +28 -4
  38. package/build/src/semantic/provenance.d.ts.map +1 -1
  39. package/build/src/semantic/provenance.js +61 -9
  40. package/build/src/semantic/types.d.ts +214 -23
  41. package/build/src/semantic/types.d.ts.map +1 -1
  42. package/build/src/semantic/types.js +58 -11
  43. package/build/src/semantic/validate.d.ts +31 -2
  44. package/build/src/semantic/validate.d.ts.map +1 -1
  45. package/build/src/semantic/validate.js +450 -60
  46. package/docs/adr/20261026-typed-error-handling-extension.md +55 -0
  47. package/docs/adr-bounded-subtyping.md +180 -0
  48. package/docs/adr-numeric-tower.md +156 -0
  49. package/docs/architecture.md +1 -1
  50. package/docs/language-support.md +8 -8
  51. package/docs/testing.md +5 -3
  52. package/package.json +1 -1
  53. package/src/backends/effects.js +3 -1
  54. package/src/backends/java.js +33 -14
  55. package/src/backends/javascript.js +83 -18
  56. package/src/backends/php.js +89 -16
  57. package/src/backends/ruby.js +36 -12
  58. package/src/backends/scalars.js +1 -1
  59. package/src/backends/shared.js +298 -47
  60. package/src/backends/typescript.js +83 -18
  61. package/src/backends/writer.js +41 -3
  62. package/src/frontends/java.js +95 -43
  63. package/src/frontends/javascript-typescript.js +145 -53
  64. package/src/frontends/php.js +243 -58
  65. package/src/frontends/ruby.js +117 -35
  66. package/src/frontends/types.js +26 -8
  67. package/src/language-registry.js +13 -5
  68. package/src/mapping.js +3 -1
  69. package/src/semantic/effects.js +18 -5
  70. package/src/semantic/lifetime.js +29 -3
  71. package/src/semantic/provenance.js +60 -14
  72. package/src/semantic/types.js +62 -10
  73. package/src/semantic/validate.js +481 -61
@@ -157,6 +157,7 @@ export function createLanguageRegistry(candidateRecords) {
157
157
  if (typeof candidate.roundTrip != "boolean")
158
158
  invalidRegistry(`Registry record '${id}' requires a Boolean round-trip declaration.`, id);
159
159
  const featuresCandidate = candidate.features ?? {
160
+ boundedSubtyping: false,
160
161
  closedRecords: false,
161
162
  conditionControlledLoops: false,
162
163
  conditionalExpressions: false,
@@ -172,7 +173,8 @@ export function createLanguageRegistry(candidateRecords) {
172
173
  typeParametersAndGenerics: false
173
174
  };
174
175
  if (!isPlainObject(featuresCandidate) ||
175
- Object.keys(featuresCandidate).sort().join(",") != "closedRecords,conditionControlledLoops,conditionalExpressions,effectfulCapabilitiesAndResources,generalFunctionsAndCalls,immutableCollections,optionalValues,orderedListIteration,orderedMapIteration,referenceClasses,stringInterpolation,typeParametersAndGenerics,typedErrors" ||
176
+ Object.keys(featuresCandidate).sort().join(",") != "boundedSubtyping,closedRecords,conditionControlledLoops,conditionalExpressions,effectfulCapabilitiesAndResources,generalFunctionsAndCalls,immutableCollections,optionalValues,orderedListIteration,orderedMapIteration,referenceClasses,stringInterpolation,typeParametersAndGenerics,typedErrors" ||
177
+ typeof featuresCandidate.boundedSubtyping != "boolean" ||
176
178
  typeof featuresCandidate.closedRecords != "boolean" ||
177
179
  typeof featuresCandidate.conditionControlledLoops != "boolean" ||
178
180
  typeof featuresCandidate.conditionalExpressions != "boolean" ||
@@ -183,12 +185,14 @@ export function createLanguageRegistry(candidateRecords) {
183
185
  typeof featuresCandidate.orderedListIteration != "boolean" ||
184
186
  typeof featuresCandidate.orderedMapIteration != "boolean" ||
185
187
  typeof featuresCandidate.referenceClasses != "boolean" ||
188
+ (featuresCandidate.boundedSubtyping && !featuresCandidate.referenceClasses) ||
186
189
  typeof featuresCandidate.stringInterpolation != "boolean" ||
187
190
  typeof featuresCandidate.typedErrors != "boolean" ||
188
191
  typeof featuresCandidate.typeParametersAndGenerics != "boolean") {
189
192
  invalidRegistry(`Registry record '${id}' has an invalid feature declaration.`, id);
190
193
  }
191
194
  const features = deepFreeze(/** @type {import("./semantic/types.js").LanguageFeatureCapabilities} */ ({
195
+ boundedSubtyping: featuresCandidate.boundedSubtyping,
192
196
  closedRecords: featuresCandidate.closedRecords,
193
197
  conditionControlledLoops: featuresCandidate.conditionControlledLoops,
194
198
  conditionalExpressions: featuresCandidate.conditionalExpressions,
@@ -540,6 +544,7 @@ const records = [
540
544
  optionalValues: false,
541
545
  orderedListIteration: false,
542
546
  orderedMapIteration: false,
547
+ boundedSubtyping: false,
543
548
  referenceClasses: false,
544
549
  typedErrors: false,
545
550
  typeParametersAndGenerics: false
@@ -579,6 +584,7 @@ const records = [
579
584
  optionalValues: false,
580
585
  orderedListIteration: false,
581
586
  orderedMapIteration: false,
587
+ boundedSubtyping: false,
582
588
  referenceClasses: false,
583
589
  typedErrors: false,
584
590
  typeParametersAndGenerics: false
@@ -604,6 +610,7 @@ const records = [
604
610
  optionalValues: false,
605
611
  orderedListIteration: false,
606
612
  orderedMapIteration: false,
613
+ boundedSubtyping: false,
607
614
  referenceClasses: false,
608
615
  typedErrors: false,
609
616
  typeParametersAndGenerics: false
@@ -619,7 +626,7 @@ const records = [
619
626
  artifactMultiplicity: "multiple",
620
627
  binaryBackend: generateBrowserWasm,
621
628
  defaultFilename: "program.wasm",
622
- features: { closedRecords: false, conditionControlledLoops: false, conditionalExpressions: false, stringInterpolation: false, effectfulCapabilitiesAndResources: false, generalFunctionsAndCalls: false, immutableCollections: false, optionalValues: false, orderedListIteration: false, orderedMapIteration: false, referenceClasses: false, typedErrors: false, typeParametersAndGenerics: false },
629
+ features: { boundedSubtyping: false, closedRecords: false, conditionControlledLoops: false, conditionalExpressions: false, stringInterpolation: false, effectfulCapabilitiesAndResources: false, generalFunctionsAndCalls: false, immutableCollections: false, optionalValues: false, orderedListIteration: false, orderedMapIteration: false, referenceClasses: false, typedErrors: false, typeParametersAndGenerics: false },
623
630
  id: "wasm",
624
631
  mapping: { binaryRanges: true, richText: true, sourceMapV3: true },
625
632
  mediaType: "application/wasm",
@@ -629,7 +636,7 @@ const records = [
629
636
  acceptance: { stages: ["generate", "compile", "validate", "instantiate", "execute"], toolchains: ["android"] },
630
637
  applicationBackend: generateAndroidApplication,
631
638
  artifactMultiplicity: "multiple",
632
- features: { closedRecords: false, conditionControlledLoops: false, conditionalExpressions: false, stringInterpolation: false, effectfulCapabilitiesAndResources: false, generalFunctionsAndCalls: false, immutableCollections: false, optionalValues: false, orderedListIteration: false, orderedMapIteration: false, referenceClasses: false, typedErrors: false, typeParametersAndGenerics: false },
639
+ features: { boundedSubtyping: false, closedRecords: false, conditionControlledLoops: false, conditionalExpressions: false, stringInterpolation: false, effectfulCapabilitiesAndResources: false, generalFunctionsAndCalls: false, immutableCollections: false, optionalValues: false, orderedListIteration: false, orderedMapIteration: false, referenceClasses: false, typedErrors: false, typeParametersAndGenerics: false },
633
640
  id: "android",
634
641
  mapping: { binaryRanges: true, richText: true, sourceMapV3: true },
635
642
  roundTrip: false
@@ -638,7 +645,7 @@ const records = [
638
645
  acceptance: { stages: ["generate"], toolchains: [] },
639
646
  applicationBackend: generateIosApplication,
640
647
  artifactMultiplicity: "multiple",
641
- features: { closedRecords: false, conditionControlledLoops: false, conditionalExpressions: false, stringInterpolation: false, effectfulCapabilitiesAndResources: false, generalFunctionsAndCalls: false, immutableCollections: false, optionalValues: false, orderedListIteration: false, orderedMapIteration: false, referenceClasses: false, typedErrors: false, typeParametersAndGenerics: false },
648
+ features: { boundedSubtyping: false, closedRecords: false, conditionControlledLoops: false, conditionalExpressions: false, stringInterpolation: false, effectfulCapabilitiesAndResources: false, generalFunctionsAndCalls: false, immutableCollections: false, optionalValues: false, orderedListIteration: false, orderedMapIteration: false, referenceClasses: false, typedErrors: false, typeParametersAndGenerics: false },
642
649
  id: "ios",
643
650
  mapping: { binaryRanges: true, richText: true, sourceMapV3: true },
644
651
  roundTrip: false
@@ -647,7 +654,7 @@ const records = [
647
654
  acceptance: { stages: ["generate", "restore", "compile", "validate", "instantiate", "execute"], toolchains: ["flutter", "android"] },
648
655
  applicationBackend: generateFlutterApplication,
649
656
  artifactMultiplicity: "multiple",
650
- features: { closedRecords: false, conditionControlledLoops: false, conditionalExpressions: false, stringInterpolation: false, effectfulCapabilitiesAndResources: false, generalFunctionsAndCalls: false, immutableCollections: false, optionalValues: false, orderedListIteration: false, orderedMapIteration: false, referenceClasses: false, typedErrors: false, typeParametersAndGenerics: false },
657
+ features: { boundedSubtyping: false, closedRecords: false, conditionControlledLoops: false, conditionalExpressions: false, stringInterpolation: false, effectfulCapabilitiesAndResources: false, generalFunctionsAndCalls: false, immutableCollections: false, optionalValues: false, orderedListIteration: false, orderedMapIteration: false, referenceClasses: false, typedErrors: false, typeParametersAndGenerics: false },
651
658
  id: "flutter",
652
659
  mapping: { binaryRanges: true, richText: true, sourceMapV3: true },
653
660
  roundTrip: false
@@ -668,6 +675,7 @@ function language(values) {
668
675
  return {
669
676
  artifactMultiplicity: "single",
670
677
  features: {
678
+ boundedSubtyping: String(values.id) == "php",
671
679
  closedRecords: ["php", "ruby", "javascript", "typescript", "java"].includes(String(values.id)),
672
680
  conditionControlledLoops: ["php", "ruby", "javascript", "typescript", "java"].includes(String(values.id)),
673
681
  conditionalExpressions: ["php", "ruby", "javascript", "typescript", "java"].includes(String(values.id)),
@@ -750,4 +758,4 @@ function deepFreeze(value) {
750
758
  deepFreeze(nested);
751
759
  return Object.freeze(value);
752
760
  }
753
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGFuZ3VhZ2UtcmVnaXN0cnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxZQUFZLENBQUE7QUFDdkMsT0FBTyxFQUFDLHFCQUFxQixFQUFFLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFBO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sc0JBQXNCLENBQUE7QUFDbkQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sc0JBQXNCLENBQUE7QUFDMUQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNEJBQTRCLENBQUE7QUFDaEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDakQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUE7QUFDdEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFBO0FBQ2pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQ3RELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQUM3QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sc0JBQXNCLENBQUE7QUFDbkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQy9DLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQ3RE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RSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVGLGlDQUFpQyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xILHdCQUF3QixFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pHLG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JHLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvRixvQkFBb0IsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFN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QUMsQ0FBQTtJQUU3RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge2lzRGVuc2VBcnJheX0gZnJvbSBcIi4vYXJyYXkuanNcIlxuaW1wb3J0IHtTZW1hbnRpZm9sZERpYWdub3N0aWMsIHVuc3VwcG9ydGVkUm9sZX0gZnJvbSBcIi4vZGlhZ25vc3RpYy5qc1wiXG5pbXBvcnQge2dlbmVyYXRlSmF2YX0gZnJvbSBcIi4vYmFja2VuZHMvamF2YS5qc1wiXG5pbXBvcnQge2dlbmVyYXRlS290bGlufSBmcm9tIFwiLi9iYWNrZW5kcy9rb3RsaW4uanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUNTaGFycFByb2plY3R9IGZyb20gXCIuL2JhY2tlbmRzL2NzaGFycC5qc1wiXG5pbXBvcnQge2NyZWF0ZUNTaGFycENoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMvY3NoYXJwLWNoZWNrLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVHb01vZHVsZX0gZnJvbSBcIi4vYmFja2VuZHMvZ28uanNcIlxuaW1wb3J0IHtnZW5lcmF0ZVJ1c3RQcm9qZWN0fSBmcm9tIFwiLi9iYWNrZW5kcy9ydXN0LmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVTd2lmdH0gZnJvbSBcIi4vYmFja2VuZHMvc3dpZnQuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZURhcnRQYWNrYWdlfSBmcm9tIFwiLi9iYWNrZW5kcy9kYXJ0LmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVaaWdQcm9qZWN0fSBmcm9tIFwiLi9iYWNrZW5kcy96aWcuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUphdmFTY3JpcHR9IGZyb20gXCIuL2JhY2tlbmRzL2phdmFzY3JpcHQuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZVBocH0gZnJvbSBcIi4vYmFja2VuZHMvcGhwLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVQeXRob259IGZyb20gXCIuL2JhY2tlbmRzL3B5dGhvbi5qc1wiXG5pbXBvcnQge2dlbmVyYXRlUnVieX0gZnJvbSBcIi4vYmFja2VuZHMvcnVieS5qc1wiXG5pbXBvcnQge2dlbmVyYXRlVHlwZVNjcmlwdH0gZnJvbSBcIi4vYmFja2VuZHMvdHlwZXNjcmlwdC5qc1wiXG5pbXBvcnQge2dlbmVyYXRlQnJvd3Nlcldhc219IGZyb20gXCIuL2JhY2tlbmRzL3dhc20uanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUlvc0FwcGxpY2F0aW9ufSBmcm9tIFwiLi9iYWNrZW5kcy9pb3MuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUFuZHJvaWRBcHBsaWNhdGlvbn0gZnJvbSBcIi4vYmFja2VuZHMvYW5kcm9pZC5qc1wiXG5pbXBvcnQge2dlbmVyYXRlRmx1dHRlckFwcGxpY2F0aW9ufSBmcm9tIFwiLi9iYWNrZW5kcy9mbHV0dGVyLmpzXCJcbmltcG9ydCB7cGFyc2VKYXZhfSBmcm9tIFwiLi9mcm9udGVuZHMvamF2YS5qc1wiXG5pbXBvcnQge3BhcnNlS290bGlufSBmcm9tIFwiLi9mcm9udGVuZHMva290bGluLmpzXCJcbmltcG9ydCB7cGFyc2VDU2hhcnB9IGZyb20gXCIuL2Zyb250ZW5kcy9jc2hhcnAuanNcIlxuaW1wb3J0IHtwYXJzZUdvfSBmcm9tIFwiLi9mcm9udGVuZHMvZ28uanNcIlxuaW1wb3J0IHtwYXJzZVJ1c3R9IGZyb20gXCIuL2Zyb250ZW5kcy9ydXN0LmpzXCJcbmltcG9ydCB7cGFyc2VTd2lmdH0gZnJvbSBcIi4vZnJvbnRlbmRzL3N3aWZ0LmpzXCJcbmltcG9ydCB7cGFyc2VEYXJ0fSBmcm9tIFwiLi9mcm9udGVuZHMvZGFydC5qc1wiXG5pbXBvcnQge3BhcnNlWmlnfSBmcm9tIFwiLi9mcm9udGVuZHMvemlnLmpzXCJcbmltcG9ydCB7cGFyc2VDcHB9IGZyb20gXCIuL2Zyb250ZW5kcy9jcHAuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUNwcH0gZnJvbSBcIi4vYmFja2VuZHMvY3BwLmpzXCJcbmltcG9ydCB7cGFyc2VDfSBmcm9tIFwiLi9mcm9udGVuZHMvYy5qc1wiXG5pbXBvcnQge2dlbmVyYXRlQ1Byb2dyYW19IGZyb20gXCIuL2JhY2tlbmRzL2MuanNcIlxuaW1wb3J0IHtwYXJzZUphdmFTY3JpcHRUeXBlU2NyaXB0fSBmcm9tIFwiLi9mcm9udGVuZHMvamF2YXNjcmlwdC10eXBlc2NyaXB0LmpzXCJcbmltcG9ydCB7cGFyc2VQaHB9IGZyb20gXCIuL2Zyb250ZW5kcy9waHAuanNcIlxuaW1wb3J0IHtwYXJzZVB5dGhvbn0gZnJvbSBcIi4vZnJvbnRlbmRzL3B5dGhvbi5qc1wiXG5pbXBvcnQge3BhcnNlUnVieX0gZnJvbSBcIi4vZnJvbnRlbmRzL3J1YnkuanNcIlxuaW1wb3J0IHtjcmVhdGVKYXZhQ2hlY2tQbGFufSBmcm9tIFwiLi9iYWNrZW5kcy9qYXZhLWNoZWNrLmpzXCJcbmltcG9ydCB7Y3JlYXRlSmF2YVNjcmlwdENoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMvamF2YXNjcmlwdC1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZUtvdGxpbkNoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMva290bGluLWNoZWNrLmpzXCJcbmltcG9ydCB7Y3JlYXRlUGhwQ2hlY2tQbGFufSBmcm9tIFwiLi9iYWNrZW5kcy9waHAtY2hlY2suanNcIlxuaW1wb3J0IHtjcmVhdGVQeXRob25DaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL3B5dGhvbi1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZVJ1YnlDaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL3J1YnktY2hlY2suanNcIlxuaW1wb3J0IHtjcmVhdGVUeXBlU2NyaXB0Q2hlY2tQbGFufSBmcm9tIFwiLi9iYWNrZW5kcy90eXBlc2NyaXB0LWNoZWNrLmpzXCJcbmltcG9ydCB7Y3JlYXRlR29DaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL2dvLWNoZWNrLmpzXCJcbmltcG9ydCB7Y3JlYXRlQ0NoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMvYy1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZUNwcENoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMvY3BwLWNoZWNrLmpzXCJcbmltcG9ydCB7Y3JlYXRlUnVzdENoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMvcnVzdC1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZVN3aWZ0Q2hlY2tQbGFufSBmcm9tIFwiLi9iYWNrZW5kcy9zd2lmdC1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZURhcnRDaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL2RhcnQtY2hlY2suanNcIlxuaW1wb3J0IHtjcmVhdGVaaWdDaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL3ppZy1jaGVjay5qc1wiXG5cbmNvbnN0IHJlZ2lzdHJ5Um9sZXMgPSBPYmplY3QuZnJlZXplKFtcImZyb250ZW5kXCIsIFwidGV4dEJhY2tlbmRcIiwgXCJiaW5hcnlCYWNrZW5kXCIsIFwiYXBwbGljYXRpb25CYWNrZW5kXCIsIFwiaW50ZXJvcGVyYWJpbGl0eVwiXSlcbmNvbnN0IGFjY2VwdGFuY2VTdGFnZU9yZGVyID0gW1wicGFyc2VcIiwgXCJnZW5lcmF0ZVwiLCBcInJlc3RvcmVcIiwgXCJjb21waWxlXCIsIFwibGlua1wiLCBcInZhbGlkYXRlXCIsIFwiaW5zdGFudGlhdGVcIiwgXCJleGVjdXRlXCJdXG5jb25zdCBhY2NlcHRhbmNlU3RhZ2VzID0gbmV3IE1hcChhY2NlcHRhbmNlU3RhZ2VPcmRlci5tYXAoKHN0YWdlLCBpbmRleCkgPT4gW3N0YWdlLCBpbmRleF0pKVxuY29uc3QgZGV2ZWxvcGVyQ2hlY2tTdGFnZXMgPSBuZXcgU2V0KFtcInJlc3RvcmVcIiwgXCJjb21waWxlXCIsIFwibGlua1wiLCBcInZhbGlkYXRlXCJdKVxuY29uc3QgcmVnaXN0cnlLZXlzID0gbmV3IFNldChbXG4gIFwiYWNjZXB0YW5jZVwiLCBcImFwcGxpY2F0aW9uQmFja2VuZFwiLCBcImFydGlmYWN0TXVsdGlwbGljaXR5XCIsIFwiYmluYXJ5QmFja2VuZFwiLCBcImNoZWNrXCIsIFwiZGVmYXVsdEZpbGVuYW1lXCIsIFwiZnJvbnRlbmRcIiwgXCJpZFwiLFxuICBcImZlYXR1cmVzXCIsIFwiaW50ZXJvcGVyYWJpbGl0eVwiLCBcIm1hcHBpbmdcIiwgXCJtZWRpYVR5cGVcIiwgXCJwcm92aWRlclwiLCBcInJvdW5kVHJpcFwiLCBcInRleHRCYWNrZW5kXCJcbl0pXG5cbi8qKiBAdHlwZWRlZiB7XCJmcm9udGVuZFwiIHwgXCJ0ZXh0QmFja2VuZFwiIHwgXCJiaW5hcnlCYWNrZW5kXCIgfCBcImFwcGxpY2F0aW9uQmFja2VuZFwiIHwgXCJpbnRlcm9wZXJhYmlsaXR5XCJ9IFJlZ2lzdHJ5Um9sZSAqL1xuLyoqIEB0eXBlZGVmIHsoLi4udmFsdWVzOiB1bmtub3duW10pID0+IHVua25vd259IFJlZ2lzdHJ5SW1wbGVtZW50YXRpb24gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBGcm9udGVuZElucHV0XG4gKiBAcHJvcGVydHkge3JlYWRvbmx5IGltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuRWZmZWN0Q2FwYWJpbGl0eURlY2xhcmF0aW9uW119IFtjYXBhYmlsaXRpZXNdIC0gQ29tcGlsZXItYXV0aG9yaXplZCBkZWNsYXJhdGlvbnMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZmlsZW5hbWUgLSBTb3VyY2UgZmlsZW5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc291cmNlIC0gU291cmNlIHRleHQuXG4gKiBAcHJvcGVydHkge3tpc0VudHJ5OiBib29sZWFuLCBmdW5jdGlvbnM6IE1hcDxzdHJpbmcsIGltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuRnVuY3Rpb25EZWNsYXJhdGlvbj4sIHJlY29yZHM6IE1hcDxzdHJpbmcsIGltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuUmVjb3JkRGVjbGFyYXRpb24+LCBlcnJvcnM/OiBNYXA8c3RyaW5nLCBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkVycm9yRGVjbGFyYXRpb24+LCB2YWx1ZVJlY29yZHM/OiBNYXA8c3RyaW5nLCBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLlJlY29yZERlY2xhcmF0aW9uPn19IFtwcm9ncmFtXSAtIFByb2dyYW0gY29udmVyc2lvbiBjb250ZXh0LlxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIEZyb250ZW5kXG4gKiBAcGFyYW0ge0Zyb250ZW5kSW5wdXR9IGlucHV0IC0gRnJvbnRlbmQgcmVxdWVzdC5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTW9kdWxlfSBTZW1hbnRpYyBtb2R1bGUuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBMYW5ndWFnZVJlZ2lzdHJ5UmVjb3JkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaWQgLSBTdGFibGUgaWRlbnRpdHkuXG4gKiBAcHJvcGVydHkge3tzdGFnZXM6IGltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuQWNjZXB0YW5jZVN0YWdlW10sIHRvb2xjaGFpbnM6IHN0cmluZ1tdfX0gYWNjZXB0YW5jZSAtIEFjY2VwdGFuY2UgZGVjbGFyYXRpb24uXG4gKiBAcHJvcGVydHkge1JlYWRvbmx5PExhbmd1YWdlUmVnaXN0cnlDaGVja1JlY29yZD59IGNoZWNrIC0gRGV2ZWxvcGVyLWNoZWNrIGRlY2xhcmF0aW9uLlxuICogQHByb3BlcnR5IHtcInNpbmdsZVwiIHwgXCJtdWx0aXBsZVwifSBhcnRpZmFjdE11bHRpcGxpY2l0eSAtIEFydGlmYWN0IG11bHRpcGxpY2l0eS5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5MYW5ndWFnZUZlYXR1cmVDYXBhYmlsaXRpZXN9IGZlYXR1cmVzIC0gU2VtYW50aWMgZmVhdHVyZSBjYXBhYmlsaXRpZXMuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuTGFuZ3VhZ2VNYXBwaW5nQ2FwYWJpbGl0aWVzfSBtYXBwaW5nIC0gTWFwcGluZyBjYXBhYmlsaXRpZXMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJvdW5kVHJpcCAtIFJvdW5kLXRyaXAgZGVjbGFyYXRpb24uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2RlZmF1bHRGaWxlbmFtZV0gLSBEZWZhdWx0IGJhY2tlbmQgZmlsZW5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW21lZGlhVHlwZV0gLSBEZWZhdWx0IGJhY2tlbmQgbWVkaWEgdHlwZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3Byb3ZpZGVyXSAtIFRhcmdldCBob3N0IHN0ZGxpYiBwcm92aWRlci9uYXRpdmUtYmluZGluZyByb2xlLlxuICogQHByb3BlcnR5IHtSZWdpc3RyeUltcGxlbWVudGF0aW9ufSBbZnJvbnRlbmRdIC0gRnJvbnRlbmQgYWRhcHRlci5cbiAqIEBwcm9wZXJ0eSB7UmVnaXN0cnlJbXBsZW1lbnRhdGlvbn0gW3RleHRCYWNrZW5kXSAtIFRleHQgYmFja2VuZC5cbiAqIEBwcm9wZXJ0eSB7UmVnaXN0cnlJbXBsZW1lbnRhdGlvbn0gW2JpbmFyeUJhY2tlbmRdIC0gQmluYXJ5IGJhY2tlbmQuXG4gKiBAcHJvcGVydHkge1JlZ2lzdHJ5SW1wbGVtZW50YXRpb259IFthcHBsaWNhdGlvbkJhY2tlbmRdIC0gQXBwbGljYXRpb24tYXJ0aWZhY3QgYmFja2VuZC5cbiAqIEBwcm9wZXJ0eSB7UmVnaXN0cnlJbXBsZW1lbnRhdGlvbn0gW2ludGVyb3BlcmFiaWxpdHldIC0gSW50ZXJvcGVyYWJpbGl0eSBicmlkZ2UuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7UmVhZG9ubHk8e1xuICogICBhcnRpZmFjdHM6IGltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuR2VuZXJhdGVkQXJ0aWZhY3RTZXQsXG4gKiAgIGJ1aWxkUGF0aDogc3RyaW5nLFxuICogICBwcm9qZWN0SWQ6IHN0cmluZyxcbiAqICAgc291cmNlUGF0aDogc3RyaW5nLFxuICogICB0YXJnZXRJZDogc3RyaW5nLFxuICogICB0b29sczogcmVhZG9ubHkgaW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5EaXNjb3ZlcmVkVG9vbGNoYWluW11cbiAqIH0+fSBUYXJnZXRDaGVja1BsYW5Db250ZXh0XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgVGFyZ2V0Q2hlY2tQbGFuRmFjdG9yeVxuICogQHBhcmFtIHtUYXJnZXRDaGVja1BsYW5Db250ZXh0fSBjb250ZXh0IC0gRXhhY3Qgc3RhZ2VkIHRhcmdldCBjb250ZXh0LlxuICogQHJldHVybnMge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGFyZ2V0Q2hlY2tQbGFufSBJbW11dGFibGUgcGxhbi5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIExhbmd1YWdlUmVnaXN0cnlDaGVja1JlY29yZFxuICogQHByb3BlcnR5IHtUYXJnZXRDaGVja1BsYW5GYWN0b3J5fSBbZmFjdG9yeV0gLSBUYXJnZXQtb3duZWQgcGxhbiBmYWN0b3J5IGZvciBzdXBwb3J0ZWQgY2hlY2tzLlxuICogQHByb3BlcnR5IHtyZWFkb25seSBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkFjY2VwdGFuY2VTdGFnZVtdfSBzdGFnZXMgLSBFeGFjdCBub24tZXhlY3V0aW5nIHN0YWdlcy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc3VwcG9ydGVkIC0gV2hldGhlciB0aGUgdGFyZ2V0IHN1cHBsaWVzIGEgY2hlY2sgcGxhbi5cbiAqIEBwcm9wZXJ0eSB7cmVhZG9ubHkgc3RyaW5nW119IHRvb2xjaGFpbnMgLSBFeGFjdCBkZWNsYXJlZCBjYW5vbmljYWwgdG9vbGNoYWlucy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIExhbmd1YWdlUmVnaXN0cnlcbiAqIEBwcm9wZXJ0eSB7cmVhZG9ubHkgaW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5MYW5ndWFnZUNhcGFiaWxpdGllc1tdfSBkZXNjcmlwdG9ycyAtIFB1YmxpYyBkZXNjcmlwdG9ycy5cbiAqIEBwcm9wZXJ0eSB7cmVhZG9ubHkgc3RyaW5nW119IGlkcyAtIFJlZ2lzdGVyZWQgSURzIGluIHN0YWJsZSBvcmRlci5cbiAqIEBwcm9wZXJ0eSB7KGlkOiBzdHJpbmcpID0+IFJlYWRvbmx5PExhbmd1YWdlUmVnaXN0cnlSZWNvcmQ+fSByZWNvcmQgLSBFeGFjdCByZWNvcmQgbG9va3VwLlxuICogQHByb3BlcnR5IHsoaWQ6IHN0cmluZywgcm9sZTogUmVnaXN0cnlSb2xlLCBsb2NhdGlvbj86IGltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb24pID0+IFJlZ2lzdHJ5SW1wbGVtZW50YXRpb259IHJlc29sdmUgLSBSb2xlIGxvb2t1cC5cbiAqL1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYW4gaW1tdXRhYmxlIHJvbGUgcmVnaXN0cnkgZnJvbSBvcmRlcmVkIHJlY29yZHMuXG4gKiBAcGFyYW0ge3Vua25vd259IGNhbmRpZGF0ZVJlY29yZHMgLSBPcmRlcmVkIGxhbmd1YWdlIHJlY29yZHMuXG4gKiBAcmV0dXJucyB7UmVhZG9ubHk8TGFuZ3VhZ2VSZWdpc3RyeT59IFJlZ2lzdHJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGFuZ3VhZ2VSZWdpc3RyeShjYW5kaWRhdGVSZWNvcmRzKSB7XG4gIGlmICghaXNEZW5zZUFycmF5KGNhbmRpZGF0ZVJlY29yZHMpKSBpbnZhbGlkUmVnaXN0cnkoXCJSZWdpc3RyeSByZWNvcmRzIG11c3QgYmUgYW4gb3JkZXJlZCBkZW5zZSBhcnJheS5cIilcblxuICAvKiogQHR5cGUge01hcDxzdHJpbmcsIFJlYWRvbmx5PExhbmd1YWdlUmVnaXN0cnlSZWNvcmQ+Pn0gKi9cbiAgY29uc3QgcmVjb3Jkc0J5SWQgPSBuZXcgTWFwKClcbiAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkxhbmd1YWdlQ2FwYWJpbGl0aWVzW119ICovXG4gIGNvbnN0IGRlc2NyaXB0b3JzID0gW11cblxuICBmb3IgKGxldCByZWNvcmRJbmRleCA9IDA7IHJlY29yZEluZGV4IDwgY2FuZGlkYXRlUmVjb3Jkcy5sZW5ndGg7IHJlY29yZEluZGV4ICs9IDEpIHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBjYW5kaWRhdGVSZWNvcmRzW3JlY29yZEluZGV4XVxuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGNhbmRpZGF0ZSkpIGludmFsaWRSZWdpc3RyeShcIkV2ZXJ5IHJlZ2lzdHJ5IHJlY29yZCBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0LlwiKVxuICAgIGNvbnN0IGlkID0gY2FuZGlkYXRlLmlkXG5cbiAgICBpZiAodHlwZW9mIGlkICE9IFwic3RyaW5nXCIgfHwgaWQubGVuZ3RoID09IDAgfHwgIS9eW2Etel1bYS16MC05LV0qJC91LnRlc3QoaWQpKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoXCJFdmVyeSByZWdpc3RyeSByZWNvcmQgcmVxdWlyZXMgYSBzdGFibGUgbG93ZXJjYXNlIElELlwiLCB0eXBlb2YgaWQgPT0gXCJzdHJpbmdcIiA/IGlkIDogdW5kZWZpbmVkKVxuICAgIH1cbiAgICBpZiAocmVjb3Jkc0J5SWQuaGFzKGlkKSkgaW52YWxpZFJlZ2lzdHJ5KGBEdXBsaWNhdGUgcmVnaXN0cnkgSUQgJyR7aWR9Jy5gLCBpZClcbiAgICBpZiAoT2JqZWN0LmtleXMoY2FuZGlkYXRlKS5zb21lKChrZXkpID0+ICFyZWdpc3RyeUtleXMuaGFzKGtleSkpKSBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyB1bmtub3duIGZpZWxkcy5gLCBpZClcbiAgICBpZiAoY2FuZGlkYXRlLnByb3ZpZGVyICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGNhbmRpZGF0ZS5wcm92aWRlciAhPSBcImJvb2xlYW5cIikge1xuICAgICAgaW52YWxpZFJlZ2lzdHJ5KGBSZWdpc3RyeSByZWNvcmQgJyR7aWR9JyBkZWNsYXJlcyBhbiBpbnZhbGlkIHByb3ZpZGVyIHJvbGUuYCwgaWQpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByb2xlIG9mIHJlZ2lzdHJ5Um9sZXMpIHtcbiAgICAgIGlmIChjYW5kaWRhdGVbcm9sZV0gIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgY2FuZGlkYXRlW3JvbGVdICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJvbGUgJyR7cm9sZX0nIGZvciAnJHtpZH0nIG11c3QgYmUgYSBmdW5jdGlvbiB3aGVuIHByZXNlbnQuYCwgaWQpXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGFydGlmYWN0TXVsdGlwbGljaXR5ID0gY2FuZGlkYXRlLmFydGlmYWN0TXVsdGlwbGljaXR5XG5cbiAgICBpZiAoYXJ0aWZhY3RNdWx0aXBsaWNpdHkgIT0gXCJzaW5nbGVcIiAmJiBhcnRpZmFjdE11bHRpcGxpY2l0eSAhPSBcIm11bHRpcGxlXCIpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgaGFzIGFuIGludmFsaWQgYXJ0aWZhY3QgbXVsdGlwbGljaXR5LmAsIGlkKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGNhbmRpZGF0ZS5yb3VuZFRyaXAgIT0gXCJib29sZWFuXCIpIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgcmVxdWlyZXMgYSBCb29sZWFuIHJvdW5kLXRyaXAgZGVjbGFyYXRpb24uYCwgaWQpXG4gICAgY29uc3QgZmVhdHVyZXNDYW5kaWRhdGUgPSBjYW5kaWRhdGUuZmVhdHVyZXMgPz8ge1xuICAgICAgY2xvc2VkUmVjb3JkczogZmFsc2UsXG4gICAgICBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZhbHNlLFxuICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczogZmFsc2UsXG4gICAgICBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmYWxzZSxcbiAgICAgIGVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlczogZmFsc2UsXG4gICAgICBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IGZhbHNlLFxuICAgICAgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IGZhbHNlLFxuICAgICAgb3B0aW9uYWxWYWx1ZXM6IGZhbHNlLFxuICAgICAgb3JkZXJlZExpc3RJdGVyYXRpb246IGZhbHNlLFxuICAgICAgb3JkZXJlZE1hcEl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICByZWZlcmVuY2VDbGFzc2VzOiBmYWxzZSxcbiAgICAgIHR5cGVkRXJyb3JzOiBmYWxzZSxcbiAgICAgIHR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3M6IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGZlYXR1cmVzQ2FuZGlkYXRlKSB8fFxuICAgICAgT2JqZWN0LmtleXMoZmVhdHVyZXNDYW5kaWRhdGUpLnNvcnQoKS5qb2luKFwiLFwiKSAhPSBcImNsb3NlZFJlY29yZHMsY29uZGl0aW9uQ29udHJvbGxlZExvb3BzLGNvbmRpdGlvbmFsRXhwcmVzc2lvbnMsZWZmZWN0ZnVsQ2FwYWJpbGl0aWVzQW5kUmVzb3VyY2VzLGdlbmVyYWxGdW5jdGlvbnNBbmRDYWxscyxpbW11dGFibGVDb2xsZWN0aW9ucyxvcHRpb25hbFZhbHVlcyxvcmRlcmVkTGlzdEl0ZXJhdGlvbixvcmRlcmVkTWFwSXRlcmF0aW9uLHJlZmVyZW5jZUNsYXNzZXMsc3RyaW5nSW50ZXJwb2xhdGlvbix0eXBlUGFyYW1ldGVyc0FuZEdlbmVyaWNzLHR5cGVkRXJyb3JzXCIgfHxcbiAgICAgIHR5cGVvZiBmZWF0dXJlc0NhbmRpZGF0ZS5jbG9zZWRSZWNvcmRzICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgZmVhdHVyZXNDYW5kaWRhdGUuY29uZGl0aW9uQ29udHJvbGxlZExvb3BzICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgZmVhdHVyZXNDYW5kaWRhdGUuY29uZGl0aW9uYWxFeHByZXNzaW9ucyAhPSBcImJvb2xlYW5cIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLmVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlcyAhPSBcImJvb2xlYW5cIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLmdlbmVyYWxGdW5jdGlvbnNBbmRDYWxscyAhPSBcImJvb2xlYW5cIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLmltbXV0YWJsZUNvbGxlY3Rpb25zICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgZmVhdHVyZXNDYW5kaWRhdGUub3B0aW9uYWxWYWx1ZXMgIT0gXCJib29sZWFuXCIgfHxcbiAgICAgIHR5cGVvZiBmZWF0dXJlc0NhbmRpZGF0ZS5vcmRlcmVkTGlzdEl0ZXJhdGlvbiAhPSBcImJvb2xlYW5cIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLm9yZGVyZWRNYXBJdGVyYXRpb24gIT0gXCJib29sZWFuXCIgfHxcbiAgICAgIHR5cGVvZiBmZWF0dXJlc0NhbmRpZGF0ZS5yZWZlcmVuY2VDbGFzc2VzICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgZmVhdHVyZXNDYW5kaWRhdGUuc3RyaW5nSW50ZXJwb2xhdGlvbiAhPSBcImJvb2xlYW5cIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLnR5cGVkRXJyb3JzICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgZmVhdHVyZXNDYW5kaWRhdGUudHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljcyAhPSBcImJvb2xlYW5cIikge1xuICAgICAgaW52YWxpZFJlZ2lzdHJ5KGBSZWdpc3RyeSByZWNvcmQgJyR7aWR9JyBoYXMgYW4gaW52YWxpZCBmZWF0dXJlIGRlY2xhcmF0aW9uLmAsIGlkKVxuICAgIH1cbiAgICBjb25zdCBmZWF0dXJlcyA9IGRlZXBGcmVlemUoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkxhbmd1YWdlRmVhdHVyZUNhcGFiaWxpdGllc30gKi8gKHtcbiAgICAgIGNsb3NlZFJlY29yZHM6IGZlYXR1cmVzQ2FuZGlkYXRlLmNsb3NlZFJlY29yZHMsXG4gICAgICBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZlYXR1cmVzQ2FuZGlkYXRlLmNvbmRpdGlvbkNvbnRyb2xsZWRMb29wcyxcbiAgICAgIGNvbmRpdGlvbmFsRXhwcmVzc2lvbnM6IGZlYXR1cmVzQ2FuZGlkYXRlLmNvbmRpdGlvbmFsRXhwcmVzc2lvbnMsXG4gICAgICBlZmZlY3RmdWxDYXBhYmlsaXRpZXNBbmRSZXNvdXJjZXM6IGZlYXR1cmVzQ2FuZGlkYXRlLmVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlcyxcbiAgICAgIGdlbmVyYWxGdW5jdGlvbnNBbmRDYWxsczogZmVhdHVyZXNDYW5kaWRhdGUuZ2VuZXJhbEZ1bmN0aW9uc0FuZENhbGxzLFxuICAgICAgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IGZlYXR1cmVzQ2FuZGlkYXRlLmltbXV0YWJsZUNvbGxlY3Rpb25zLFxuICAgICAgb3B0aW9uYWxWYWx1ZXM6IGZlYXR1cmVzQ2FuZGlkYXRlLm9wdGlvbmFsVmFsdWVzLFxuICAgICAgb3JkZXJlZExpc3RJdGVyYXRpb246IGZlYXR1cmVzQ2FuZGlkYXRlLm9yZGVyZWRMaXN0SXRlcmF0aW9uLFxuICAgICAgb3JkZXJlZE1hcEl0ZXJhdGlvbjogZmVhdHVyZXNDYW5kaWRhdGUub3JkZXJlZE1hcEl0ZXJhdGlvbixcbiAgICAgIHJlZmVyZW5jZUNsYXNzZXM6IGZlYXR1cmVzQ2FuZGlkYXRlLnJlZmVyZW5jZUNsYXNzZXMsXG4gICAgICBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmZWF0dXJlc0NhbmRpZGF0ZS5zdHJpbmdJbnRlcnBvbGF0aW9uLFxuICAgICAgdHlwZWRFcnJvcnM6IGZlYXR1cmVzQ2FuZGlkYXRlLnR5cGVkRXJyb3JzLFxuICAgICAgdHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljczogZmVhdHVyZXNDYW5kaWRhdGUudHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljc1xuICAgIH0pKVxuICAgIGNvbnN0IG1hcHBpbmdDYW5kaWRhdGUgPSBjYW5kaWRhdGUubWFwcGluZ1xuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KG1hcHBpbmdDYW5kaWRhdGUpKSBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyBhbiBpbnZhbGlkIG1hcHBpbmcgZGVjbGFyYXRpb24uYCwgaWQpXG4gICAgY29uc3QgbWFwcGluZ1NuYXBzaG90ID0ge1xuICAgICAgYmluYXJ5UmFuZ2VzOiBtYXBwaW5nQ2FuZGlkYXRlLmJpbmFyeVJhbmdlcyxcbiAgICAgIHJpY2hUZXh0OiBtYXBwaW5nQ2FuZGlkYXRlLnJpY2hUZXh0LFxuICAgICAgc291cmNlTWFwVjM6IG1hcHBpbmdDYW5kaWRhdGUuc291cmNlTWFwVjNcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1hcHBpbmdTbmFwc2hvdC5yaWNoVGV4dCAhPSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgbWFwcGluZ1NuYXBzaG90LnNvdXJjZU1hcFYzICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgbWFwcGluZ1NuYXBzaG90LmJpbmFyeVJhbmdlcyAhPSBcImJvb2xlYW5cIikge1xuICAgICAgaW52YWxpZFJlZ2lzdHJ5KGBSZWdpc3RyeSByZWNvcmQgJyR7aWR9JyBoYXMgYW4gaW52YWxpZCBtYXBwaW5nIGRlY2xhcmF0aW9uLmAsIGlkKVxuICAgIH1cbiAgICBjb25zdCBtYXBwaW5nID0gZGVlcEZyZWV6ZSgvKiogQHR5cGUge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuTGFuZ3VhZ2VNYXBwaW5nQ2FwYWJpbGl0aWVzfSAqLyAobWFwcGluZ1NuYXBzaG90KSlcbiAgICBjb25zdCBhY2NlcHRhbmNlQ2FuZGlkYXRlID0gY2FuZGlkYXRlLmFjY2VwdGFuY2VcblxuICAgIGlmICghaXNQbGFpbk9iamVjdChhY2NlcHRhbmNlQ2FuZGlkYXRlKSB8fCAhaXNEZW5zZUFycmF5KGFjY2VwdGFuY2VDYW5kaWRhdGUuc3RhZ2VzKSB8fFxuICAgICAgIWlzRGVuc2VBcnJheShhY2NlcHRhbmNlQ2FuZGlkYXRlLnRvb2xjaGFpbnMpKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyBhbiBpbnZhbGlkIGFjY2VwdGFuY2UgZGVjbGFyYXRpb24uYCwgaWQpXG4gICAgfVxuICAgIC8qKiBAdHlwZSB7dW5rbm93bltdfSAqL1xuICAgIGNvbnN0IHN0YWdlU25hcHNob3QgPSBbXVxuICAgIC8qKiBAdHlwZSB7dW5rbm93bltdfSAqL1xuICAgIGNvbnN0IHRvb2xjaGFpblNuYXBzaG90ID0gW11cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhY2NlcHRhbmNlQ2FuZGlkYXRlLnN0YWdlcy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIHN0YWdlU25hcHNob3QucHVzaChhY2NlcHRhbmNlQ2FuZGlkYXRlLnN0YWdlc1tpbmRleF0pXG4gICAgfVxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhY2NlcHRhbmNlQ2FuZGlkYXRlLnRvb2xjaGFpbnMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICB0b29sY2hhaW5TbmFwc2hvdC5wdXNoKGFjY2VwdGFuY2VDYW5kaWRhdGUudG9vbGNoYWluc1tpbmRleF0pXG4gICAgfVxuICAgIGlmICghc3RhZ2VTbmFwc2hvdC5ldmVyeSgoc3RhZ2UpID0+IHR5cGVvZiBzdGFnZSA9PSBcInN0cmluZ1wiICYmIGFjY2VwdGFuY2VTdGFnZXMuaGFzKHN0YWdlKSkgfHxcbiAgICAgICF0b29sY2hhaW5TbmFwc2hvdC5ldmVyeSgodG9vbGNoYWluKSA9PiB0eXBlb2YgdG9vbGNoYWluID09IFwic3RyaW5nXCIgJiYgdG9vbGNoYWluLmxlbmd0aCA+IDApKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyBhbiBpbnZhbGlkIGFjY2VwdGFuY2UgZGVjbGFyYXRpb24uYCwgaWQpXG4gICAgfVxuICAgIGNvbnN0IHN0YWdlcyA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5BY2NlcHRhbmNlU3RhZ2VbXX0gKi8gKHN0YWdlU25hcHNob3QpXG4gICAgY29uc3QgdG9vbGNoYWlucyA9IC8qKiBAdHlwZSB7c3RyaW5nW119ICovICh0b29sY2hhaW5TbmFwc2hvdClcbiAgICBsZXQgcHJldmlvdXNTdGFnZSA9IC0xXG4gICAgY29uc3QgZGVjbGFyZWRTdGFnZXMgPSBuZXcgU2V0KClcblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygc3RhZ2VzKSB7XG4gICAgICBjb25zdCBzdGFnZUluZGV4ID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChhY2NlcHRhbmNlU3RhZ2VzLmdldCgvKiogQHR5cGUge3N0cmluZ30gKi8gKHN0YWdlKSkpXG5cbiAgICAgIGlmIChkZWNsYXJlZFN0YWdlcy5oYXMoc3RhZ2UpIHx8IHN0YWdlSW5kZXggPCBwcmV2aW91c1N0YWdlKSBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyB1bm9yZGVyZWQgb3IgZHVwbGljYXRlIGFjY2VwdGFuY2Ugc3RhZ2VzLmAsIGlkKVxuICAgICAgZGVjbGFyZWRTdGFnZXMuYWRkKHN0YWdlKVxuICAgICAgcHJldmlvdXNTdGFnZSA9IHN0YWdlSW5kZXhcbiAgICB9XG4gICAgaWYgKG5ldyBTZXQodG9vbGNoYWlucykuc2l6ZSAhPSB0b29sY2hhaW5zLmxlbmd0aCkge1xuICAgICAgaW52YWxpZFJlZ2lzdHJ5KGBSZWdpc3RyeSByZWNvcmQgJyR7aWR9JyBoYXMgZHVwbGljYXRlIGFjY2VwdGFuY2UgdG9vbGNoYWlucy5gLCBpZClcbiAgICB9XG4gICAgY29uc3QgY2hlY2tDYW5kaWRhdGUgPSBjYW5kaWRhdGUuY2hlY2tcbiAgICAvKiogQHR5cGUge1JlYWRvbmx5PExhbmd1YWdlUmVnaXN0cnlDaGVja1JlY29yZD59ICovXG4gICAgbGV0IGNoZWNrXG5cbiAgICBpZiAoY2hlY2tDYW5kaWRhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hlY2sgPSBkZWVwRnJlZXplKHtzdGFnZXM6IFtdLCBzdXBwb3J0ZWQ6IGZhbHNlLCB0b29sY2hhaW5zOiBbXX0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghaXNQbGFpbk9iamVjdChjaGVja0NhbmRpZGF0ZSkgfHwgT2JqZWN0LmtleXMoY2hlY2tDYW5kaWRhdGUpLnNvcnQoKS5qb2luKFwiLFwiKSAhPSBcImZhY3Rvcnksc3RhZ2VzLHRvb2xjaGFpbnNcIiB8fFxuICAgICAgICB0eXBlb2YgY2hlY2tDYW5kaWRhdGUuZmFjdG9yeSAhPSBcImZ1bmN0aW9uXCIgfHwgIWlzRGVuc2VBcnJheShjaGVja0NhbmRpZGF0ZS5zdGFnZXMpIHx8XG4gICAgICAgICFpc0RlbnNlQXJyYXkoY2hlY2tDYW5kaWRhdGUudG9vbGNoYWlucykgfHwgY2hlY2tDYW5kaWRhdGUuc3RhZ2VzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgaGFzIGFuIGludmFsaWQgZGV2ZWxvcGVyLWNoZWNrIGRlY2xhcmF0aW9uLmAsIGlkKVxuICAgICAgfVxuICAgICAgLyoqIEB0eXBlIHt1bmtub3duW119ICovXG4gICAgICBjb25zdCBjaGVja1N0YWdlU25hcHNob3QgPSBbXVxuICAgICAgLyoqIEB0eXBlIHt1bmtub3duW119ICovXG4gICAgICBjb25zdCBjaGVja1Rvb2xjaGFpblNuYXBzaG90ID0gW11cblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNoZWNrQ2FuZGlkYXRlLnN0YWdlcy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgY2hlY2tTdGFnZVNuYXBzaG90LnB1c2goY2hlY2tDYW5kaWRhdGUuc3RhZ2VzW2luZGV4XSlcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjaGVja0NhbmRpZGF0ZS50b29sY2hhaW5zLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICBjaGVja1Rvb2xjaGFpblNuYXBzaG90LnB1c2goY2hlY2tDYW5kaWRhdGUudG9vbGNoYWluc1tpbmRleF0pXG4gICAgICB9XG4gICAgICBpZiAoIWNoZWNrU3RhZ2VTbmFwc2hvdC5ldmVyeShzdGFnZSA9PiB0eXBlb2Ygc3RhZ2UgPT0gXCJzdHJpbmdcIiAmJiBkZXZlbG9wZXJDaGVja1N0YWdlcy5oYXMoc3RhZ2UpICYmXG4gICAgICAgIGRlY2xhcmVkU3RhZ2VzLmhhcyhzdGFnZSkpIHx8ICFjaGVja1Rvb2xjaGFpblNuYXBzaG90LmV2ZXJ5KHRvb2xjaGFpbiA9PiB0eXBlb2YgdG9vbGNoYWluID09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgdG9vbGNoYWlucy5pbmNsdWRlcyh0b29sY2hhaW4pKSB8fCBuZXcgU2V0KGNoZWNrU3RhZ2VTbmFwc2hvdCkuc2l6ZSAhPSBjaGVja1N0YWdlU25hcHNob3QubGVuZ3RoIHx8XG4gICAgICAgIG5ldyBTZXQoY2hlY2tUb29sY2hhaW5TbmFwc2hvdCkuc2l6ZSAhPSBjaGVja1Rvb2xjaGFpblNuYXBzaG90Lmxlbmd0aCkge1xuICAgICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGRldmVsb3BlciBjaGVja3MgbXVzdCB1c2Ugb3JkZXJlZCBub24tZXhlY3V0aW5nIGRlY2xhcmVkIHN0YWdlcyBhbmQgdG9vbGNoYWlucy5gLCBpZClcbiAgICAgIH1cbiAgICAgIGxldCBwcmV2aW91c0NoZWNrU3RhZ2UgPSAtMVxuXG4gICAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIGNoZWNrU3RhZ2VTbmFwc2hvdCkge1xuICAgICAgICBjb25zdCBzdGFnZUluZGV4ID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChhY2NlcHRhbmNlU3RhZ2VzLmdldCgvKiogQHR5cGUge3N0cmluZ30gKi8gKHN0YWdlKSkpXG5cbiAgICAgICAgaWYgKHN0YWdlSW5kZXggPCBwcmV2aW91c0NoZWNrU3RhZ2UpIHtcbiAgICAgICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyB1bm9yZGVyZWQgZGV2ZWxvcGVyLWNoZWNrIHN0YWdlcy5gLCBpZClcbiAgICAgICAgfVxuICAgICAgICBwcmV2aW91c0NoZWNrU3RhZ2UgPSBzdGFnZUluZGV4XG4gICAgICB9XG4gICAgICBjaGVjayA9IGRlZXBGcmVlemUoe1xuICAgICAgICBmYWN0b3J5OiAvKiogQHR5cGUge1RhcmdldENoZWNrUGxhbkZhY3Rvcnl9ICovIChjaGVja0NhbmRpZGF0ZS5mYWN0b3J5KSxcbiAgICAgICAgc3RhZ2VzOiAvKiogQHR5cGUge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuQWNjZXB0YW5jZVN0YWdlW119ICovIChjaGVja1N0YWdlU25hcHNob3QpLFxuICAgICAgICBzdXBwb3J0ZWQ6IHRydWUsXG4gICAgICAgIHRvb2xjaGFpbnM6IC8qKiBAdHlwZSB7c3RyaW5nW119ICovIChjaGVja1Rvb2xjaGFpblNuYXBzaG90KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBoYXNGcm9udGVuZCA9IHR5cGVvZiBjYW5kaWRhdGUuZnJvbnRlbmQgPT0gXCJmdW5jdGlvblwiXG4gICAgY29uc3QgaGFzVGV4dEJhY2tlbmQgPSB0eXBlb2YgY2FuZGlkYXRlLnRleHRCYWNrZW5kID09IFwiZnVuY3Rpb25cIlxuICAgIGNvbnN0IGhhc0JpbmFyeUJhY2tlbmQgPSB0eXBlb2YgY2FuZGlkYXRlLmJpbmFyeUJhY2tlbmQgPT0gXCJmdW5jdGlvblwiXG4gICAgY29uc3QgaGFzQXBwbGljYXRpb25CYWNrZW5kID0gdHlwZW9mIGNhbmRpZGF0ZS5hcHBsaWNhdGlvbkJhY2tlbmQgPT0gXCJmdW5jdGlvblwiXG4gICAgY29uc3QgaGFzQmFja2VuZCA9IGhhc1RleHRCYWNrZW5kIHx8IGhhc0JpbmFyeUJhY2tlbmQgfHwgaGFzQXBwbGljYXRpb25CYWNrZW5kXG5cbiAgICBpZiAoY2hlY2suc3VwcG9ydGVkICYmICFoYXNCYWNrZW5kKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGRlY2xhcmVzIGRldmVsb3BlciBjaGVja3Mgd2l0aG91dCBhIGJhY2tlbmQgcm9sZS5gLCBpZClcbiAgICB9XG5cbiAgICBpZiAoKG1hcHBpbmcucmljaFRleHQgfHwgbWFwcGluZy5zb3VyY2VNYXBWMyB8fCBtYXBwaW5nLmJpbmFyeVJhbmdlcykgJiYgIWhhc0JhY2tlbmQgfHxcbiAgICAgIG1hcHBpbmcuc291cmNlTWFwVjMgJiYgIW1hcHBpbmcucmljaFRleHQgfHxcbiAgICAgIG1hcHBpbmcuYmluYXJ5UmFuZ2VzICYmICFoYXNCaW5hcnlCYWNrZW5kICYmICFoYXNBcHBsaWNhdGlvbkJhY2tlbmQpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgZGVjbGFyZXMgbWFwcGluZyBzdXBwb3J0IHdpdGhvdXQgaXRzIHJlcXVpcmVkIGJhY2tlbmQgcm9sZS5gLCBpZClcbiAgICB9XG4gICAgaWYgKGNhbmRpZGF0ZS5yb3VuZFRyaXAgJiYgKCFoYXNGcm9udGVuZCB8fCAhaGFzQmFja2VuZCkpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgZGVjbGFyZXMgcm91bmQtdHJpcCBzdXBwb3J0IHdpdGhvdXQgZnJvbnRlbmQgYW5kIGJhY2tlbmQgcm9sZXMuYCwgaWQpXG4gICAgfVxuICAgIGlmIChzdGFnZXMuaW5jbHVkZXMoXCJwYXJzZVwiKSAmJiAhaGFzRnJvbnRlbmQgfHwgc3RhZ2VzLmluY2x1ZGVzKFwiZ2VuZXJhdGVcIikgJiYgIWhhc0JhY2tlbmQpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgZGVjbGFyZXMgYW4gYWNjZXB0YW5jZSBzdGFnZSB3aXRob3V0IGl0cyByZXF1aXJlZCByb2xlLmAsIGlkKVxuICAgIH1cblxuICAgIGNvbnN0IGhhc0RlZmF1bHRlZEJhY2tlbmQgPSBoYXNUZXh0QmFja2VuZCB8fCBoYXNCaW5hcnlCYWNrZW5kXG5cbiAgICBpZiAoKGhhc0RlZmF1bHRlZEJhY2tlbmQgfHwgY2FuZGlkYXRlLmRlZmF1bHRGaWxlbmFtZSAhPT0gdW5kZWZpbmVkKSAmJlxuICAgICAgKHR5cGVvZiBjYW5kaWRhdGUuZGVmYXVsdEZpbGVuYW1lICE9IFwic3RyaW5nXCIgfHwgY2FuZGlkYXRlLmRlZmF1bHRGaWxlbmFtZS5sZW5ndGggPT0gMCkpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgYmFja2VuZCAnJHtpZH0nIHJlcXVpcmVzIGEgZGVmYXVsdCBmaWxlbmFtZS5gLCBpZClcbiAgICB9XG4gICAgaWYgKChoYXNEZWZhdWx0ZWRCYWNrZW5kIHx8IGNhbmRpZGF0ZS5tZWRpYVR5cGUgIT09IHVuZGVmaW5lZCkgJiZcbiAgICAgICh0eXBlb2YgY2FuZGlkYXRlLm1lZGlhVHlwZSAhPSBcInN0cmluZ1wiIHx8IGNhbmRpZGF0ZS5tZWRpYVR5cGUubGVuZ3RoID09IDApKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IGJhY2tlbmQgJyR7aWR9JyByZXF1aXJlcyBhIG1lZGlhIHR5cGUuYCwgaWQpXG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXB0YW5jZSA9IGRlZXBGcmVlemUoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkxhbmd1YWdlQWNjZXB0YW5jZUNhcGFiaWxpdGllc30gKi8gKHtcbiAgICAgIHN0YWdlcyxcbiAgICAgIHRvb2xjaGFpbnNcbiAgICB9KSlcbiAgICBjb25zdCByZWNvcmQgPSBkZWVwRnJlZXplKC8qKiBAdHlwZSB7TGFuZ3VhZ2VSZWdpc3RyeVJlY29yZH0gKi8gKHtcbiAgICAgIGFjY2VwdGFuY2UsXG4gICAgICBhcnRpZmFjdE11bHRpcGxpY2l0eSxcbiAgICAgIGNoZWNrLFxuICAgICAgZmVhdHVyZXMsXG4gICAgICBpZCxcbiAgICAgIG1hcHBpbmcsXG4gICAgICByb3VuZFRyaXA6IGNhbmRpZGF0ZS5yb3VuZFRyaXAsXG4gICAgICAuLi4odHlwZW9mIGNhbmRpZGF0ZS5kZWZhdWx0RmlsZW5hbWUgPT0gXCJzdHJpbmdcIiA/IHtkZWZhdWx0RmlsZW5hbWU6IGNhbmRpZGF0ZS5kZWZhdWx0RmlsZW5hbWV9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUubWVkaWFUeXBlID09IFwic3RyaW5nXCIgPyB7bWVkaWFUeXBlOiBjYW5kaWRhdGUubWVkaWFUeXBlfSA6IHt9KSxcbiAgICAgIC4uLih0eXBlb2YgY2FuZGlkYXRlLnByb3ZpZGVyID09IFwiYm9vbGVhblwiID8ge3Byb3ZpZGVyOiBjYW5kaWRhdGUucHJvdmlkZXJ9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUuZnJvbnRlbmQgPT0gXCJmdW5jdGlvblwiID8ge2Zyb250ZW5kOiBjYW5kaWRhdGUuZnJvbnRlbmR9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUudGV4dEJhY2tlbmQgPT0gXCJmdW5jdGlvblwiID8ge3RleHRCYWNrZW5kOiBjYW5kaWRhdGUudGV4dEJhY2tlbmR9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUuYmluYXJ5QmFja2VuZCA9PSBcImZ1bmN0aW9uXCIgPyB7YmluYXJ5QmFja2VuZDogY2FuZGlkYXRlLmJpbmFyeUJhY2tlbmR9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUuYXBwbGljYXRpb25CYWNrZW5kID09IFwiZnVuY3Rpb25cIiA/IHthcHBsaWNhdGlvbkJhY2tlbmQ6IGNhbmRpZGF0ZS5hcHBsaWNhdGlvbkJhY2tlbmR9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUuaW50ZXJvcGVyYWJpbGl0eSA9PSBcImZ1bmN0aW9uXCIgPyB7aW50ZXJvcGVyYWJpbGl0eTogY2FuZGlkYXRlLmludGVyb3BlcmFiaWxpdHl9IDoge30pXG4gICAgfSkpXG4gICAgY29uc3QgZGVzY3JpcHRvciA9IGRlZXBGcmVlemUoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkxhbmd1YWdlQ2FwYWJpbGl0aWVzfSAqLyAoe1xuICAgICAgYWNjZXB0YW5jZSxcbiAgICAgIGFydGlmYWN0TXVsdGlwbGljaXR5LFxuICAgICAgY2hlY2s6IGRlZXBGcmVlemUoe3N0YWdlczogY2hlY2suc3RhZ2VzLCBzdXBwb3J0ZWQ6IGNoZWNrLnN1cHBvcnRlZCwgdG9vbGNoYWluczogY2hlY2sudG9vbGNoYWluc30pLFxuICAgICAgZmVhdHVyZXMsXG4gICAgICBpZCxcbiAgICAgIG1hcHBpbmcsXG4gICAgICByb2xlczoge1xuICAgICAgICBhcHBsaWNhdGlvbkJhY2tlbmQ6IHR5cGVvZiBjYW5kaWRhdGUuYXBwbGljYXRpb25CYWNrZW5kID09IFwiZnVuY3Rpb25cIixcbiAgICAgICAgYmluYXJ5QmFja2VuZDogdHlwZW9mIGNhbmRpZGF0ZS5iaW5hcnlCYWNrZW5kID09IFwiZnVuY3Rpb25cIixcbiAgICAgICAgZnJvbnRlbmQ6IHR5cGVvZiBjYW5kaWRhdGUuZnJvbnRlbmQgPT0gXCJmdW5jdGlvblwiLFxuICAgICAgICBpbnRlcm9wZXJhYmlsaXR5OiB0eXBlb2YgY2FuZGlkYXRlLmludGVyb3BlcmFiaWxpdHkgPT0gXCJmdW5jdGlvblwiLFxuICAgICAgICBwcm92aWRlcjogY2FuZGlkYXRlLnByb3ZpZGVyID09PSB0cnVlLFxuICAgICAgICB0ZXh0QmFja2VuZDogdHlwZW9mIGNhbmRpZGF0ZS50ZXh0QmFja2VuZCA9PSBcImZ1bmN0aW9uXCJcbiAgICAgIH0sXG4gICAgICByb3VuZFRyaXA6IGNhbmRpZGF0ZS5yb3VuZFRyaXBcbiAgICB9KSlcblxuICAgIHJlY29yZHNCeUlkLnNldChpZCwgcmVjb3JkKVxuICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcilcbiAgfVxuXG4gIGNvbnN0IGZyb3plbkRlc2NyaXB0b3JzID0gZGVlcEZyZWV6ZShkZXNjcmlwdG9ycylcbiAgY29uc3QgaWRzID0gT2JqZWN0LmZyZWV6ZShmcm96ZW5EZXNjcmlwdG9ycy5tYXAoKHtpZH0pID0+IGlkKSlcblxuICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7XG4gICAgZGVzY3JpcHRvcnM6IGZyb3plbkRlc2NyaXB0b3JzLFxuICAgIGlkcyxcbiAgICByZWNvcmQoaWQpIHtcbiAgICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHNCeUlkLmdldChpZClcblxuICAgICAgaWYgKCFyZWNvcmQpIHVuc3VwcG9ydGVkTGFuZ3VhZ2UoaWQpXG5cbiAgICAgIHJldHVybiByZWNvcmRcbiAgICB9LFxuICAgIHJlc29sdmUoaWQsIHJvbGUsIGxvY2F0aW9uKSB7XG4gICAgICBpZiAoIXJlZ2lzdHJ5Um9sZXMuaW5jbHVkZXMocm9sZSkpIGludmFsaWRSZWdpc3RyeShgVW5rbm93biByZWdpc3RyeSByb2xlICcke3JvbGV9Jy5gLCBpZClcbiAgICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHNCeUlkLmdldChpZClcblxuICAgICAgaWYgKCFyZWNvcmQpIHVuc3VwcG9ydGVkTGFuZ3VhZ2UoaWQsIGxvY2F0aW9uLCByb2xlKVxuICAgICAgY29uc3QgaW1wbGVtZW50YXRpb24gPSByZWNvcmRbcm9sZV1cblxuICAgICAgaWYgKHR5cGVvZiBpbXBsZW1lbnRhdGlvbiAhPSBcImZ1bmN0aW9uXCIpIHVuc3VwcG9ydGVkUm9sZShpZCwgcHVibGljUm9sZU5hbWUocm9sZSksIGxvY2F0aW9uKVxuXG4gICAgICByZXR1cm4gaW1wbGVtZW50YXRpb25cbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogUEhQIHJlZ2lzdHJ5IGZyb250ZW5kIHdyYXBwZXIuXG4gKiBAdHlwZSB7RnJvbnRlbmR9XG4gKi9cbmNvbnN0IHBocEZyb250ZW5kID0gKHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBwcm9ncmFtLCBzb3VyY2V9KSA9PiBwYXJzZVBocCh7Y2FwYWJpbGl0aWVzLCBmaWxlbmFtZSwgcHJvZ3JhbSwgc291cmNlfSlcblxuLyoqXG4gKiBSdWJ5IHJlZ2lzdHJ5IGZyb250ZW5kIHdyYXBwZXIuXG4gKiBAdHlwZSB7RnJvbnRlbmR9XG4gKi9cbmNvbnN0IHJ1YnlGcm9udGVuZCA9ICh7Y2FwYWJpbGl0aWVzLCBmaWxlbmFtZSwgcHJvZ3JhbSwgc291cmNlfSkgPT4gcGFyc2VSdWJ5KHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBwcm9ncmFtLCBzb3VyY2V9KVxuXG4vKipcbiAqIEphdmFTY3JpcHQgcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgamF2YVNjcmlwdEZyb250ZW5kID0gKHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBwcm9ncmFtLCBzb3VyY2V9KSA9PiBwYXJzZUphdmFTY3JpcHRUeXBlU2NyaXB0KHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBsYW5ndWFnZTogXCJqYXZhc2NyaXB0XCIsIHByb2dyYW0sIHNvdXJjZX0pXG5cbi8qKlxuICogVHlwZVNjcmlwdCByZWdpc3RyeSBmcm9udGVuZCB3cmFwcGVyLlxuICogQHR5cGUge0Zyb250ZW5kfVxuICovXG5jb25zdCB0eXBlU2NyaXB0RnJvbnRlbmQgPSAoe2NhcGFiaWxpdGllcywgZmlsZW5hbWUsIHByb2dyYW0sIHNvdXJjZX0pID0+IHBhcnNlSmF2YVNjcmlwdFR5cGVTY3JpcHQoe2NhcGFiaWxpdGllcywgZmlsZW5hbWUsIGxhbmd1YWdlOiBcInR5cGVzY3JpcHRcIiwgcHJvZ3JhbSwgc291cmNlfSlcblxuLyoqXG4gKiBKYXZhIHJlZ2lzdHJ5IGZyb250ZW5kIHdyYXBwZXIuXG4gKiBAdHlwZSB7RnJvbnRlbmR9XG4gKi9cbmNvbnN0IGphdmFGcm9udGVuZCA9ICh7Y2FwYWJpbGl0aWVzLCBmaWxlbmFtZSwgcHJvZ3JhbSwgc291cmNlfSkgPT4gcGFyc2VKYXZhKHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBwcm9ncmFtLCBzb3VyY2V9KVxuXG4vKipcbiAqIEtvdGxpbiByZWdpc3RyeSBmcm9udGVuZCB3cmFwcGVyLlxuICogQHR5cGUge0Zyb250ZW5kfVxuICovXG5jb25zdCBrb3RsaW5Gcm9udGVuZCA9ICh7ZmlsZW5hbWUsIHNvdXJjZX0pID0+IHBhcnNlS290bGluKHtmaWxlbmFtZSwgc291cmNlfSlcblxuLyoqXG4gKiBQeXRob24gcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgcHl0aG9uRnJvbnRlbmQgPSAoe2ZpbGVuYW1lLCBzb3VyY2V9KSA9PiBwYXJzZVB5dGhvbih7ZmlsZW5hbWUsIHNvdXJjZX0pXG5cbi8qKlxuICogQyMgcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgY3NoYXJwRnJvbnRlbmQgPSAoe2ZpbGVuYW1lLCBzb3VyY2V9KSA9PiBwYXJzZUNTaGFycCh7ZmlsZW5hbWUsIHNvdXJjZX0pXG5cbi8qKlxuICogR28gcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgZ29Gcm9udGVuZCA9ICh7ZmlsZW5hbWUsIHNvdXJjZX0pID0+IHBhcnNlR28oe2ZpbGVuYW1lLCBzb3VyY2V9KVxuXG4vKipcbiAqIERhcnQgcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgZGFydEZyb250ZW5kID0gKHtmaWxlbmFtZSwgc291cmNlfSkgPT4gcGFyc2VEYXJ0KHtmaWxlbmFtZSwgc291cmNlfSlcblxuLyoqXG4gKiBaaWcgcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgemlnRnJvbnRlbmQgPSAoe2ZpbGVuYW1lLCBzb3VyY2V9KSA9PiBwYXJzZVppZyh7ZmlsZW5hbWUsIHNvdXJjZX0pXG5cbmNvbnN0IHJlY29yZHMgPSBbXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwidmFsaWRhdGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJwaHA4MlwiXX0sXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVQaHBDaGVja1BsYW4sIHN0YWdlczogW1widmFsaWRhdGVcIl0sIHRvb2xjaGFpbnM6IFtcInBocDgyXCJdfSxcbiAgICBkZWZhdWx0RmlsZW5hbWU6IFwicHJvZ3JhbS5waHBcIixcbiAgICBmcm9udGVuZDogcGhwRnJvbnRlbmQsXG4gICAgaWQ6IFwicGhwXCIsXG4gICAgbWVkaWFUeXBlOiBcImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwXCIsXG4gICAgdGV4dEJhY2tlbmQ6IGdlbmVyYXRlUGhwXG4gIH0pLFxuICBsYW5ndWFnZSh7XG4gICAgYWNjZXB0YW5jZToge3N0YWdlczogW1wicGFyc2VcIiwgXCJnZW5lcmF0ZVwiLCBcInZhbGlkYXRlXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wicnVieVwiXX0sXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVSdWJ5Q2hlY2tQbGFuLCBzdGFnZXM6IFtcInZhbGlkYXRlXCJdLCB0b29sY2hhaW5zOiBbXCJydWJ5XCJdfSxcbiAgICBkZWZhdWx0RmlsZW5hbWU6IFwicHJvZ3JhbS5yYlwiLFxuICAgIGZyb250ZW5kOiBydWJ5RnJvbnRlbmQsXG4gICAgaWQ6IFwicnVieVwiLFxuICAgIG1lZGlhVHlwZTogXCJ0ZXh0L3gtcnVieVwiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZVJ1YnlcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwidmFsaWRhdGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJub2RlXCJdfSxcbiAgICBjaGVjazoge2ZhY3Rvcnk6IGNyZWF0ZUphdmFTY3JpcHRDaGVja1BsYW4sIHN0YWdlczogW1widmFsaWRhdGVcIl0sIHRvb2xjaGFpbnM6IFtcIm5vZGVcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLmpzXCIsXG4gICAgZnJvbnRlbmQ6IGphdmFTY3JpcHRGcm9udGVuZCxcbiAgICBpZDogXCJqYXZhc2NyaXB0XCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQvamF2YXNjcmlwdFwiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZUphdmFTY3JpcHRcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcInRzY1wiLCBcIm5vZGVcIl19LFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlVHlwZVNjcmlwdENoZWNrUGxhbiwgc3RhZ2VzOiBbXCJjb21waWxlXCJdLCB0b29sY2hhaW5zOiBbXCJ0c2NcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLnRzXCIsXG4gICAgZnJvbnRlbmQ6IHR5cGVTY3JpcHRGcm9udGVuZCxcbiAgICBpZDogXCJ0eXBlc2NyaXB0XCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQvdHlwZXNjcmlwdFwiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZVR5cGVTY3JpcHRcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImphdmFjXCIsIFwiamF2YVwiXX0sXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVKYXZhQ2hlY2tQbGFuLCBzdGFnZXM6IFtcImNvbXBpbGVcIl0sIHRvb2xjaGFpbnM6IFtcImphdmFjXCJdfSxcbiAgICBkZWZhdWx0RmlsZW5hbWU6IFwiTWFpbi5qYXZhXCIsXG4gICAgZnJvbnRlbmQ6IGphdmFGcm9udGVuZCxcbiAgICBpZDogXCJqYXZhXCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQveC1qYXZhLXNvdXJjZVwiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZUphdmFcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImtvdGxpbmNcIiwgXCJqYXZhMjVcIl19LFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlS290bGluQ2hlY2tQbGFuLCBzdGFnZXM6IFtcImNvbXBpbGVcIl0sIHRvb2xjaGFpbnM6IFtcImtvdGxpbmNcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJQcm9ncmFtLmt0XCIsXG4gICAgZnJvbnRlbmQ6IGtvdGxpbkZyb250ZW5kLFxuICAgIGlkOiBcImtvdGxpblwiLFxuICAgIG1lZGlhVHlwZTogXCJ0ZXh0L3gta290bGluXCIsXG4gICAgdGV4dEJhY2tlbmQ6IGdlbmVyYXRlS290bGluXG4gIH0pLFxuICBsYW5ndWFnZSh7XG4gICAgYWNjZXB0YW5jZToge3N0YWdlczogW1wicGFyc2VcIiwgXCJnZW5lcmF0ZVwiLCBcImNvbXBpbGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJweXRob25cIl19LFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlUHl0aG9uQ2hlY2tQbGFuLCBzdGFnZXM6IFtcImNvbXBpbGVcIl0sIHRvb2xjaGFpbnM6IFtcInB5dGhvblwiXX0sXG4gICAgZGVmYXVsdEZpbGVuYW1lOiBcInByb2dyYW0ucHlcIixcbiAgICBmcm9udGVuZDogcHl0aG9uRnJvbnRlbmQsXG4gICAgaWQ6IFwicHl0aG9uXCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQveC1weXRob25cIixcbiAgICB0ZXh0QmFja2VuZDogZ2VuZXJhdGVQeXRob25cbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwicmVzdG9yZVwiLCBcImNvbXBpbGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJkb3RuZXRcIl19LFxuICAgIGFydGlmYWN0TXVsdGlwbGljaXR5OiBcIm11bHRpcGxlXCIsXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVDU2hhcnBDaGVja1BsYW4sIHN0YWdlczogW1wicmVzdG9yZVwiLCBcImNvbXBpbGVcIl0sIHRvb2xjaGFpbnM6IFtcImRvdG5ldFwiXX0sXG4gICAgZGVmYXVsdEZpbGVuYW1lOiBcIlByb2dyYW0uY3NcIixcbiAgICBmcm9udGVuZDogY3NoYXJwRnJvbnRlbmQsXG4gICAgaWQ6IFwiY3NoYXJwXCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQveC1jc2hhcnBcIixcbiAgICB0ZXh0QmFja2VuZDogZ2VuZXJhdGVDU2hhcnBQcm9qZWN0XG4gIH0pLFxuICBsYW5ndWFnZSh7XG4gICAgYWNjZXB0YW5jZToge3N0YWdlczogW1wicGFyc2VcIiwgXCJnZW5lcmF0ZVwiLCBcImNvbXBpbGVcIiwgXCJ2YWxpZGF0ZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImdvXCJdfSxcbiAgICBhcnRpZmFjdE11bHRpcGxpY2l0eTogXCJtdWx0aXBsZVwiLFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlR29DaGVja1BsYW4sIHN0YWdlczogW1wiY29tcGlsZVwiLCBcInZhbGlkYXRlXCJdLCB0b29sY2hhaW5zOiBbXCJnb1wiXX0sXG4gICAgZGVmYXVsdEZpbGVuYW1lOiBcIm1haW4uZ29cIixcbiAgICBmcm9udGVuZDogZ29Gcm9udGVuZCxcbiAgICBpZDogXCJnb1wiLFxuICAgIG1lZGlhVHlwZTogXCJ0ZXh0L3gtZ29cIixcbiAgICB0ZXh0QmFja2VuZDogZ2VuZXJhdGVHb01vZHVsZVxuICB9KSxcbiAgbGFuZ3VhZ2Uoe1xuICAgIGFjY2VwdGFuY2U6IHtzdGFnZXM6IFtcInBhcnNlXCIsIFwiZ2VuZXJhdGVcIiwgXCJjb21waWxlXCIsIFwibGlua1wiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImNsYW5nXCJdfSxcbiAgICBhcnRpZmFjdE11bHRpcGxpY2l0eTogXCJtdWx0aXBsZVwiLFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlQ0NoZWNrUGxhbiwgc3RhZ2VzOiBbXCJjb21waWxlXCIsIFwibGlua1wiXSwgdG9vbGNoYWluczogW1wiY2xhbmdcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLmNcIixcbiAgICBmZWF0dXJlczoge1xuICAgICAgY2xvc2VkUmVjb3JkczogZmFsc2UsXG4gICAgICBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZhbHNlLFxuICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczogZmFsc2UsXG4gICAgICBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmYWxzZSxcbiAgICAgIGVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlczogZmFsc2UsXG4gICAgICBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IHRydWUsXG4gICAgICBpbW11dGFibGVDb2xsZWN0aW9uczogZmFsc2UsXG4gICAgICBvcHRpb25hbFZhbHVlczogZmFsc2UsXG4gICAgICBvcmRlcmVkTGlzdEl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICBvcmRlcmVkTWFwSXRlcmF0aW9uOiBmYWxzZSxcbiAgICAgIHJlZmVyZW5jZUNsYXNzZXM6IGZhbHNlLFxuICAgICAgdHlwZWRFcnJvcnM6IGZhbHNlLFxuICAgICAgdHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljczogZmFsc2VcbiAgICB9LFxuICAgIGZyb250ZW5kOiBwYXJzZUMsXG4gICAgaWQ6IFwiY1wiLFxuICAgIG1lZGlhVHlwZTogXCJ0ZXh0L3gtY1wiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZUNQcm9ncmFtXG4gIH0pLFxuICBsYW5ndWFnZSh7XG4gICAgYWNjZXB0YW5jZToge3N0YWdlczogW1wicGFyc2VcIiwgXCJnZW5lcmF0ZVwiLCBcImNvbXBpbGVcIiwgXCJsaW5rXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wiY2xhbmdwcFwiXX0sXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVDcHBDaGVja1BsYW4sIHN0YWdlczogW1wiY29tcGlsZVwiLCBcImxpbmtcIl0sIHRvb2xjaGFpbnM6IFtcImNsYW5ncHBcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLmNwcFwiLCBmcm9udGVuZDogcGFyc2VDcHAsIGlkOiBcImNwcFwiLCBtZWRpYVR5cGU6IFwidGV4dC94LWMrK3NyY1wiLCB0ZXh0QmFja2VuZDogZ2VuZXJhdGVDcHBcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcInZhbGlkYXRlXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wicnVzdGNcIiwgXCJjYXJnb1wiXX0sXG4gICAgYXJ0aWZhY3RNdWx0aXBsaWNpdHk6IFwibXVsdGlwbGVcIixcbiAgICBjaGVjazoge2ZhY3Rvcnk6IGNyZWF0ZVJ1c3RDaGVja1BsYW4sIHN0YWdlczogW1wiY29tcGlsZVwiLCBcInZhbGlkYXRlXCJdLCB0b29sY2hhaW5zOiBbXCJydXN0Y1wiLCBcImNhcmdvXCJdfSxcbiAgICBkZWZhdWx0RmlsZW5hbWU6IFwic3JjL21haW4ucnNcIiwgZnJvbnRlbmQ6IHBhcnNlUnVzdCwgaWQ6IFwicnVzdFwiLCBtZWRpYVR5cGU6IFwidGV4dC94LXJ1c3RcIiwgdGV4dEJhY2tlbmQ6IGdlbmVyYXRlUnVzdFByb2plY3RcbiAgfSksXG4gIGxhbmd1YWdlKHthY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcInN3aWZ0Y1wiXX0sXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVTd2lmdENoZWNrUGxhbiwgc3RhZ2VzOiBbXCJjb21waWxlXCJdLCB0b29sY2hhaW5zOiBbXCJzd2lmdGNcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLnN3aWZ0XCIsIGZyb250ZW5kOiBwYXJzZVN3aWZ0LCBpZDogXCJzd2lmdFwiLCBtZWRpYVR5cGU6IFwidGV4dC94LXN3aWZ0XCIsIHRleHRCYWNrZW5kOiBnZW5lcmF0ZVN3aWZ0fSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwicmVzdG9yZVwiLCBcImNvbXBpbGVcIiwgXCJ2YWxpZGF0ZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImRhcnRcIl19LFxuICAgIGFydGlmYWN0TXVsdGlwbGljaXR5OiBcIm11bHRpcGxlXCIsXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVEYXJ0Q2hlY2tQbGFuLCBzdGFnZXM6IFtcInJlc3RvcmVcIiwgXCJjb21waWxlXCIsIFwidmFsaWRhdGVcIl0sIHRvb2xjaGFpbnM6IFtcImRhcnRcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJiaW4vcHJvZ3JhbS5kYXJ0XCIsXG4gICAgZmVhdHVyZXM6IHtcbiAgICAgIGNsb3NlZFJlY29yZHM6IGZhbHNlLFxuICAgICAgY29uZGl0aW9uQ29udHJvbGxlZExvb3BzOiBmYWxzZSxcbiAgICAgIGNvbmRpdGlvbmFsRXhwcmVzc2lvbnM6IGZhbHNlLFxuICAgICAgc3RyaW5nSW50ZXJwb2xhdGlvbjogZmFsc2UsXG4gICAgICBlZmZlY3RmdWxDYXBhYmlsaXRpZXNBbmRSZXNvdXJjZXM6IGZhbHNlLFxuICAgICAgZ2VuZXJhbEZ1bmN0aW9uc0FuZENhbGxzOiB0cnVlLFxuICAgICAgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IGZhbHNlLFxuICAgICAgb3B0aW9uYWxWYWx1ZXM6IGZhbHNlLFxuICAgICAgb3JkZXJlZExpc3RJdGVyYXRpb246IGZhbHNlLFxuICAgICAgb3JkZXJlZE1hcEl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICByZWZlcmVuY2VDbGFzc2VzOiBmYWxzZSxcbiAgICAgIHR5cGVkRXJyb3JzOiBmYWxzZSxcbiAgICAgIHR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3M6IGZhbHNlXG4gICAgfSxcbiAgICBmcm9udGVuZDogZGFydEZyb250ZW5kLFxuICAgIGlkOiBcImRhcnRcIixcbiAgICBtZWRpYVR5cGU6IFwidGV4dC94LWRhcnRcIixcbiAgICB0ZXh0QmFja2VuZDogZ2VuZXJhdGVEYXJ0UGFja2FnZVxuICB9KSxcbiAgbGFuZ3VhZ2Uoe1xuICAgIGFjY2VwdGFuY2U6IHtzdGFnZXM6IFtcInBhcnNlXCIsIFwiZ2VuZXJhdGVcIiwgXCJjb21waWxlXCIsIFwidmFsaWRhdGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJ6aWdcIl19LFxuICAgIGFydGlmYWN0TXVsdGlwbGljaXR5OiBcIm11bHRpcGxlXCIsXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVaaWdDaGVja1BsYW4sIHN0YWdlczogW1wiY29tcGlsZVwiLCBcInZhbGlkYXRlXCJdLCB0b29sY2hhaW5zOiBbXCJ6aWdcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJzcmMvbWFpbi56aWdcIixcbiAgICBmZWF0dXJlczoge1xuICAgICAgY2xvc2VkUmVjb3JkczogZmFsc2UsXG4gICAgICBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZhbHNlLFxuICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczogZmFsc2UsXG4gICAgICBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmYWxzZSxcbiAgICAgIGVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlczogZmFsc2UsXG4gICAgICBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IHRydWUsXG4gICAgICBpbW11dGFibGVDb2xsZWN0aW9uczogZmFsc2UsXG4gICAgICBvcHRpb25hbFZhbHVlczogZmFsc2UsXG4gICAgICBvcmRlcmVkTGlzdEl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICBvcmRlcmVkTWFwSXRlcmF0aW9uOiBmYWxzZSxcbiAgICAgIHJlZmVyZW5jZUNsYXNzZXM6IGZhbHNlLFxuICAgICAgdHlwZWRFcnJvcnM6IGZhbHNlLFxuICAgICAgdHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljczogZmFsc2VcbiAgICB9LFxuICAgIGZyb250ZW5kOiB6aWdGcm9udGVuZCxcbiAgICBpZDogXCJ6aWdcIixcbiAgICBtZWRpYVR5cGU6IFwidGV4dC94LXppZ1wiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZVppZ1Byb2plY3RcbiAgfSksXG4gIHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJnZW5lcmF0ZVwiLCBcInZhbGlkYXRlXCIsIFwiaW5zdGFudGlhdGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJ3YXNtLXZhbGlkYXRlXCIsIFwibm9kZVwiLCBcImNocm9taXVtXCJdfSxcbiAgICBhcHBsaWNhdGlvbkJhY2tlbmQ6IGdlbmVyYXRlQnJvd3Nlcldhc20sXG4gICAgYXJ0aWZhY3RNdWx0aXBsaWNpdHk6IFwibXVsdGlwbGVcIixcbiAgICBiaW5hcnlCYWNrZW5kOiBnZW5lcmF0ZUJyb3dzZXJXYXNtLFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLndhc21cIixcbiAgICBmZWF0dXJlczoge2Nsb3NlZFJlY29yZHM6IGZhbHNlLCBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZhbHNlLCBjb25kaXRpb25hbEV4cHJlc3Npb25zOiBmYWxzZSwgc3RyaW5nSW50ZXJwb2xhdGlvbjogZmFsc2UsIGVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlczogZmFsc2UsIGdlbmVyYWxGdW5jdGlvbnNBbmRDYWxsczogZmFsc2UsIGltbXV0YWJsZUNvbGxlY3Rpb25zOiBmYWxzZSwgb3B0aW9uYWxWYWx1ZXM6IGZhbHNlLCBvcmRlcmVkTGlzdEl0ZXJhdGlvbjogZmFsc2UsIG9yZGVyZWRNYXBJdGVyYXRpb246IGZhbHNlLCByZWZlcmVuY2VDbGFzc2VzOiBmYWxzZSwgdHlwZWRFcnJvcnM6IGZhbHNlLCB0eXBlUGFyYW1ldGVyc0FuZEdlbmVyaWNzOiBmYWxzZX0sXG4gICAgaWQ6IFwid2FzbVwiLFxuICAgIG1hcHBpbmc6IHtiaW5hcnlSYW5nZXM6IHRydWUsIHJpY2hUZXh0OiB0cnVlLCBzb3VyY2VNYXBWMzogdHJ1ZX0sXG4gICAgbWVkaWFUeXBlOiBcImFwcGxpY2F0aW9uL3dhc21cIixcbiAgICByb3VuZFRyaXA6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJnZW5lcmF0ZVwiLCBcImNvbXBpbGVcIiwgXCJ2YWxpZGF0ZVwiLCBcImluc3RhbnRpYXRlXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wiYW5kcm9pZFwiXX0sXG4gICAgYXBwbGljYXRpb25CYWNrZW5kOiBnZW5lcmF0ZUFuZHJvaWRBcHBsaWNhdGlvbixcbiAgICBhcnRpZmFjdE11bHRpcGxpY2l0eTogXCJtdWx0aXBsZVwiLFxuICAgIGZlYXR1cmVzOiB7Y2xvc2VkUmVjb3JkczogZmFsc2UsIGNvbmRpdGlvbkNvbnRyb2xsZWRMb29wczogZmFsc2UsIGNvbmRpdGlvbmFsRXhwcmVzc2lvbnM6IGZhbHNlLCBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmYWxzZSwgZWZmZWN0ZnVsQ2FwYWJpbGl0aWVzQW5kUmVzb3VyY2VzOiBmYWxzZSwgZ2VuZXJhbEZ1bmN0aW9uc0FuZENhbGxzOiBmYWxzZSwgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IGZhbHNlLCBvcHRpb25hbFZhbHVlczogZmFsc2UsIG9yZGVyZWRMaXN0SXRlcmF0aW9uOiBmYWxzZSwgb3JkZXJlZE1hcEl0ZXJhdGlvbjogZmFsc2UsIHJlZmVyZW5jZUNsYXNzZXM6IGZhbHNlLCB0eXBlZEVycm9yczogZmFsc2UsIHR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3M6IGZhbHNlfSxcbiAgICBpZDogXCJhbmRyb2lkXCIsXG4gICAgbWFwcGluZzoge2JpbmFyeVJhbmdlczogdHJ1ZSwgcmljaFRleHQ6IHRydWUsIHNvdXJjZU1hcFYzOiB0cnVlfSxcbiAgICByb3VuZFRyaXA6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJnZW5lcmF0ZVwiXSwgdG9vbGNoYWluczogW119LFxuICAgIGFwcGxpY2F0aW9uQmFja2VuZDogZ2VuZXJhdGVJb3NBcHBsaWNhdGlvbixcbiAgICBhcnRpZmFjdE11bHRpcGxpY2l0eTogXCJtdWx0aXBsZVwiLFxuICAgIGZlYXR1cmVzOiB7Y2xvc2VkUmVjb3JkczogZmFsc2UsIGNvbmRpdGlvbkNvbnRyb2xsZWRMb29wczogZmFsc2UsIGNvbmRpdGlvbmFsRXhwcmVzc2lvbnM6IGZhbHNlLCBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmYWxzZSwgZWZmZWN0ZnVsQ2FwYWJpbGl0aWVzQW5kUmVzb3VyY2VzOiBmYWxzZSwgZ2VuZXJhbEZ1bmN0aW9uc0FuZENhbGxzOiBmYWxzZSwgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IGZhbHNlLCBvcHRpb25hbFZhbHVlczogZmFsc2UsIG9yZGVyZWRMaXN0SXRlcmF0aW9uOiBmYWxzZSwgb3JkZXJlZE1hcEl0ZXJhdGlvbjogZmFsc2UsIHJlZmVyZW5jZUNsYXNzZXM6IGZhbHNlLCB0eXBlZEVycm9yczogZmFsc2UsIHR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3M6IGZhbHNlfSxcbiAgICBpZDogXCJpb3NcIixcbiAgICBtYXBwaW5nOiB7YmluYXJ5UmFuZ2VzOiB0cnVlLCByaWNoVGV4dDogdHJ1ZSwgc291cmNlTWFwVjM6IHRydWV9LFxuICAgIHJvdW5kVHJpcDogZmFsc2VcbiAgfSxcbiAge1xuICAgIGFjY2VwdGFuY2U6IHtzdGFnZXM6IFtcImdlbmVyYXRlXCIsIFwicmVzdG9yZVwiLCBcImNvbXBpbGVcIiwgXCJ2YWxpZGF0ZVwiLCBcImluc3RhbnRpYXRlXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wiZmx1dHRlclwiLCBcImFuZHJvaWRcIl19LFxuICAgIGFwcGxpY2F0aW9uQmFja2VuZDogZ2VuZXJhdGVGbHV0dGVyQXBwbGljYXRpb24sXG4gICAgYXJ0aWZhY3RNdWx0aXBsaWNpdHk6IFwibXVsdGlwbGVcIixcbiAgICBmZWF0dXJlczoge2Nsb3NlZFJlY29yZHM6IGZhbHNlLCBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZhbHNlLCBjb25kaXRpb25hbEV4cHJlc3Npb25zOiBmYWxzZSwgc3RyaW5nSW50ZXJwb2xhdGlvbjogZmFsc2UsIGVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlczogZmFsc2UsIGdlbmVyYWxGdW5jdGlvbnNBbmRDYWxsczogZmFsc2UsIGltbXV0YWJsZUNvbGxlY3Rpb25zOiBmYWxzZSwgb3B0aW9uYWxWYWx1ZXM6IGZhbHNlLCBvcmRlcmVkTGlzdEl0ZXJhdGlvbjogZmFsc2UsIG9yZGVyZWRNYXBJdGVyYXRpb246IGZhbHNlLCByZWZlcmVuY2VDbGFzc2VzOiBmYWxzZSwgdHlwZWRFcnJvcnM6IGZhbHNlLCB0eXBlUGFyYW1ldGVyc0FuZEdlbmVyaWNzOiBmYWxzZX0sXG4gICAgaWQ6IFwiZmx1dHRlclwiLFxuICAgIG1hcHBpbmc6IHtiaW5hcnlSYW5nZXM6IHRydWUsIHJpY2hUZXh0OiB0cnVlLCBzb3VyY2VNYXBWMzogdHJ1ZX0sXG4gICAgcm91bmRUcmlwOiBmYWxzZVxuICB9XG5dXG5cbmV4cG9ydCBjb25zdCBsYW5ndWFnZVJlZ2lzdHJ5ID0gY3JlYXRlTGFuZ3VhZ2VSZWdpc3RyeShyZWNvcmRzKVxuZXhwb3J0IGNvbnN0IGxhbmd1YWdlQ2FwYWJpbGl0aWVzID0gbGFuZ3VhZ2VSZWdpc3RyeS5kZXNjcmlwdG9yc1xuLyoqIEB0eXBlIHtyZWFkb25seSBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2VbXX0gKi9cbmV4cG9ydCBjb25zdCBzdXBwb3J0ZWRMYW5ndWFnZXMgPSBPYmplY3QuZnJlZXplKGxhbmd1YWdlQ2FwYWJpbGl0aWVzXG4gIC5maWx0ZXIoKHtyb2xlc30pID0+IHJvbGVzLmZyb250ZW5kICYmIHJvbGVzLnRleHRCYWNrZW5kKVxuICAubWFwKCh7aWR9KSA9PiAvKiogQHR5cGUge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNMYW5ndWFnZX0gKi8gKGlkKSkpXG5cbi8qKlxuICogU3VwcGxpZXMgY29tbW9uIG9yaWdpbmFsLWZpdmUgY2FwYWJpbGl0eSBkZWNsYXJhdGlvbnMuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSB2YWx1ZXMgLSBMYW5ndWFnZS1zcGVjaWZpYyByZWNvcmQgZmllbGRzLlxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBDb21wbGV0ZSByZWNvcmQuXG4gKi9cbmZ1bmN0aW9uIGxhbmd1YWdlKHZhbHVlcykge1xuICByZXR1cm4ge1xuICAgIGFydGlmYWN0TXVsdGlwbGljaXR5OiBcInNpbmdsZVwiLFxuICAgIGZlYXR1cmVzOiB7XG4gICAgICBjbG9zZWRSZWNvcmRzOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIGNvbmRpdGlvbkNvbnRyb2xsZWRMb29wczogW1wicGhwXCIsIFwicnVieVwiLCBcImphdmFzY3JpcHRcIiwgXCJ0eXBlc2NyaXB0XCIsIFwiamF2YVwiXS5pbmNsdWRlcyhTdHJpbmcodmFsdWVzLmlkKSksXG4gICAgICBjb25kaXRpb25hbEV4cHJlc3Npb25zOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIHN0cmluZ0ludGVycG9sYXRpb246IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiXS5pbmNsdWRlcyhTdHJpbmcodmFsdWVzLmlkKSksXG4gICAgICBlZmZlY3RmdWxDYXBhYmlsaXRpZXNBbmRSZXNvdXJjZXM6IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpLFxuICAgICAgZ2VuZXJhbEZ1bmN0aW9uc0FuZENhbGxzOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIGltbXV0YWJsZUNvbGxlY3Rpb25zOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIG9wdGlvbmFsVmFsdWVzOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIG9yZGVyZWRMaXN0SXRlcmF0aW9uOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIG9yZGVyZWRNYXBJdGVyYXRpb246IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpLFxuICAgICAgcmVmZXJlbmNlQ2xhc3NlczogW1wicGhwXCIsIFwicnVieVwiLCBcImphdmFzY3JpcHRcIiwgXCJ0eXBlc2NyaXB0XCIsIFwiamF2YVwiXS5pbmNsdWRlcyhTdHJpbmcodmFsdWVzLmlkKSksXG4gICAgICB0eXBlZEVycm9yczogW1wicGhwXCIsIFwicnVieVwiLCBcImphdmFzY3JpcHRcIiwgXCJ0eXBlc2NyaXB0XCIsIFwiamF2YVwiXS5pbmNsdWRlcyhTdHJpbmcodmFsdWVzLmlkKSksXG4gICAgICB0eXBlUGFyYW1ldGVyc0FuZEdlbmVyaWNzOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKVxuICAgIH0sXG4gICAgbWFwcGluZzoge2JpbmFyeVJhbmdlczogZmFsc2UsIHJpY2hUZXh0OiB0cnVlLCBzb3VyY2VNYXBWMzogdHJ1ZX0sXG4gICAgcHJvdmlkZXI6IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpLFxuICAgIHJvdW5kVHJpcDogdHJ1ZSxcbiAgICAuLi52YWx1ZXNcbiAgfVxufVxuXG4vKipcbiAqIEZvcm1hdHMgYW4gaW50ZXJuYWwgcmVnaXN0cnkga2V5IGZvciBhIHB1YmxpYyByb2xlIGRpYWdub3N0aWMuXG4gKiBAcGFyYW0ge3N0cmluZ30gcm9sZSAtIEludGVybmFsIHJvbGUga2V5LlxuICogQHJldHVybnMge3N0cmluZ30gUHVibGljIHJvbGUgbmFtZS5cbiAqL1xuZnVuY3Rpb24gcHVibGljUm9sZU5hbWUocm9sZSkge1xuICBpZiAocm9sZSA9PSBcInRleHRCYWNrZW5kXCIpIHJldHVybiBcInRleHQgYmFja2VuZFwiXG4gIGlmIChyb2xlID09IFwiYmluYXJ5QmFja2VuZFwiKSByZXR1cm4gXCJiaW5hcnkgYmFja2VuZFwiXG4gIGlmIChyb2xlID09IFwiYXBwbGljYXRpb25CYWNrZW5kXCIpIHJldHVybiBcImFwcGxpY2F0aW9uLWFydGlmYWN0IGJhY2tlbmRcIlxuXG4gIHJldHVybiByb2xlXG59XG5cbi8qKlxuICogVGhyb3dzIGFuIHVua25vd24tbGFuZ3VhZ2UgZGlhZ25vc3RpYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIFVua25vd24gaWRlbnRpdHkuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb24gfCB1bmRlZmluZWR9IFtsb2NhdGlvbl0gLSBSZWxhdGVkIGxvY2F0aW9uLlxuICogQHBhcmFtIHtSZWdpc3RyeVJvbGUgfCB1bmRlZmluZWR9IFtyb2xlXSAtIFJlcXVlc3RlZCByb2xlLlxuICogQHJldHVybnMge25ldmVyfSBBbHdheXMgdGhyb3dzLlxuICovXG5mdW5jdGlvbiB1bnN1cHBvcnRlZExhbmd1YWdlKGlkLCBsb2NhdGlvbiwgcm9sZSkge1xuICBjb25zdCBtZXNzYWdlID0gcm9sZSA9PSBcImZyb250ZW5kXCIgPyBcIk5vIGZyb250ZW5kIGFkYXB0ZXIgaXMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBsYW5ndWFnZS5cIiA6XG4gICAgcm9sZSA9PSBcInRleHRCYWNrZW5kXCIgPyBcIk5vIHNvdXJjZSBiYWNrZW5kIGlzIHJlZ2lzdGVyZWQgZm9yIHRoaXMgbGFuZ3VhZ2UuXCIgOlxuICAgICAgXCJObyBsYW5ndWFnZSBvciB0YXJnZXQgaXMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBJRC5cIlxuXG4gIHRocm93IG5ldyBTZW1hbnRpZm9sZERpYWdub3N0aWMoe1xuICAgIGNvZGU6IFwiVU5TVVBQT1JURURfTEFOR1VBR0VcIixcbiAgICBsYW5ndWFnZTogaWQsXG4gICAgbG9jYXRpb24sXG4gICAgbWVzc2FnZVxuICB9KVxufVxuXG4vKipcbiAqIFRocm93cyBhIG5vcm1hbGl6ZWQgcmVnaXN0cnktc2hhcGUgZGlhZ25vc3RpYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gRmFpbHVyZSBkZXRhaWwuXG4gKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gW2lkXSAtIENhbmRpZGF0ZSByZWdpc3RyeSBJRC5cbiAqIEByZXR1cm5zIHtuZXZlcn0gQWx3YXlzIHRocm93cy5cbiAqL1xuZnVuY3Rpb24gaW52YWxpZFJlZ2lzdHJ5KG1lc3NhZ2UsIGlkID0gXCJyZWdpc3RyeVwiKSB7XG4gIHRocm93IG5ldyBTZW1hbnRpZm9sZERpYWdub3N0aWMoe2NvZGU6IFwiSU5WQUxJRF9SRUdJU1RSWVwiLCBsYW5ndWFnZTogaWQsIG1lc3NhZ2V9KVxufVxuXG4vKipcbiAqIENoZWNrcyBmb3IgYW4gb3JkaW5hcnkgc3RyaW5nLWtleWVkIG9iamVjdC5cbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBDYW5kaWRhdGUgdmFsdWUuXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj59IFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LlxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpID09IE9iamVjdC5wcm90b3R5cGVcbn1cblxuLyoqXG4gKiBEZWVwbHkgZnJlZXplcyByZWdpc3RyeSByZWNvcmRzIGFuZCBwdWJsaWMgZGVzY3JpcHRvcnMuXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHtUfSB2YWx1ZSAtIFJlZ2lzdHJ5LW93bmVkIHZhbHVlLlxuICogQHJldHVybnMge1R9IEZyb3plbiB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZGVlcEZyZWV6ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPSBcIm9iamVjdFwiIHx8IE9iamVjdC5pc0Zyb3plbih2YWx1ZSkpIHJldHVybiB2YWx1ZVxuXG4gIGZvciAoY29uc3QgbmVzdGVkIG9mIE9iamVjdC52YWx1ZXModmFsdWUpKSBkZWVwRnJlZXplKG5lc3RlZClcblxuICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh2YWx1ZSlcbn1cbiJdfQ==
761
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2UtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGFuZ3VhZ2UtcmVnaXN0cnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxZQUFZLENBQUE7QUFDdkMsT0FBTyxFQUFDLHFCQUFxQixFQUFFLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFBO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sc0JBQXNCLENBQUE7QUFDbkQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sc0JBQXNCLENBQUE7QUFDMUQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNEJBQTRCLENBQUE7QUFDaEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDakQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUE7QUFDdEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFBO0FBQ2pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQ3RELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3BELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQUM3QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sc0JBQXNCLENBQUE7QUFDbkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQy9DLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFBO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9CQUFvQixDQUFBO0FBQ3RE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QVksRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRyxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0Ysb0JBQW9CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckcsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDcEcsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakcsV0FBVyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVGLHlCQUF5QixFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzNHO1FBQ0QsT0FBTyxFQUFFLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUM7UUFDakUsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLFNBQVMsRUFBRSxJQUFJO1FBQ2YsR0FBRyxNQUFNO0tBQ1YsQ0FBQTtBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxjQUFjLENBQUMsSUFBSTtJQUMxQixJQUFJLElBQUksSUFBSSxhQUFhO1FBQUUsT0FBTyxjQUFjLENBQUE7SUFDaEQsSUFBSSxJQUFJLElBQUksZUFBZTtRQUFFLE9BQU8sZ0JBQWdCLENBQUE7SUFDcEQsSUFBSSxJQUFJLElBQUksb0JBQW9CO1FBQUUsT0FBTyw4QkFBOEIsQ0FBQTtJQUV2RSxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSTtJQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQzNGLElBQUksSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7WUFDNUUsa0RBQWtELENBQUE7SUFFdEQsTUFBTSxJQUFJLHFCQUFxQixDQUFDO1FBQzlCLElBQUksRUFBRSxzQkFBc0I7UUFDNUIsUUFBUSxFQUFFLEVBQUU7UUFDWixRQUFRO1FBQ1IsT0FBTztLQUNSLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsZUFBZSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsVUFBVTtJQUMvQyxNQUFNLElBQUkscUJBQXFCLENBQUMsRUFBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFBO0FBQ3BGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUMsS0FBSztJQUMxQixPQUFPLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUE7QUFDL0gsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxVQUFVLENBQUMsS0FBSztJQUN2QixJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRTlFLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFN0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtpc0RlbnNlQXJyYXl9IGZyb20gXCIuL2FycmF5LmpzXCJcbmltcG9ydCB7U2VtYW50aWZvbGREaWFnbm9zdGljLCB1bnN1cHBvcnRlZFJvbGV9IGZyb20gXCIuL2RpYWdub3N0aWMuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUphdmF9IGZyb20gXCIuL2JhY2tlbmRzL2phdmEuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUtvdGxpbn0gZnJvbSBcIi4vYmFja2VuZHMva290bGluLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVDU2hhcnBQcm9qZWN0fSBmcm9tIFwiLi9iYWNrZW5kcy9jc2hhcnAuanNcIlxuaW1wb3J0IHtjcmVhdGVDU2hhcnBDaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL2NzaGFycC1jaGVjay5qc1wiXG5pbXBvcnQge2dlbmVyYXRlR29Nb2R1bGV9IGZyb20gXCIuL2JhY2tlbmRzL2dvLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVSdXN0UHJvamVjdH0gZnJvbSBcIi4vYmFja2VuZHMvcnVzdC5qc1wiXG5pbXBvcnQge2dlbmVyYXRlU3dpZnR9IGZyb20gXCIuL2JhY2tlbmRzL3N3aWZ0LmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVEYXJ0UGFja2FnZX0gZnJvbSBcIi4vYmFja2VuZHMvZGFydC5qc1wiXG5pbXBvcnQge2dlbmVyYXRlWmlnUHJvamVjdH0gZnJvbSBcIi4vYmFja2VuZHMvemlnLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVKYXZhU2NyaXB0fSBmcm9tIFwiLi9iYWNrZW5kcy9qYXZhc2NyaXB0LmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVQaHB9IGZyb20gXCIuL2JhY2tlbmRzL3BocC5qc1wiXG5pbXBvcnQge2dlbmVyYXRlUHl0aG9ufSBmcm9tIFwiLi9iYWNrZW5kcy9weXRob24uanNcIlxuaW1wb3J0IHtnZW5lcmF0ZVJ1Ynl9IGZyb20gXCIuL2JhY2tlbmRzL3J1YnkuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZVR5cGVTY3JpcHR9IGZyb20gXCIuL2JhY2tlbmRzL3R5cGVzY3JpcHQuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUJyb3dzZXJXYXNtfSBmcm9tIFwiLi9iYWNrZW5kcy93YXNtLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVJb3NBcHBsaWNhdGlvbn0gZnJvbSBcIi4vYmFja2VuZHMvaW9zLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVBbmRyb2lkQXBwbGljYXRpb259IGZyb20gXCIuL2JhY2tlbmRzL2FuZHJvaWQuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUZsdXR0ZXJBcHBsaWNhdGlvbn0gZnJvbSBcIi4vYmFja2VuZHMvZmx1dHRlci5qc1wiXG5pbXBvcnQge3BhcnNlSmF2YX0gZnJvbSBcIi4vZnJvbnRlbmRzL2phdmEuanNcIlxuaW1wb3J0IHtwYXJzZUtvdGxpbn0gZnJvbSBcIi4vZnJvbnRlbmRzL2tvdGxpbi5qc1wiXG5pbXBvcnQge3BhcnNlQ1NoYXJwfSBmcm9tIFwiLi9mcm9udGVuZHMvY3NoYXJwLmpzXCJcbmltcG9ydCB7cGFyc2VHb30gZnJvbSBcIi4vZnJvbnRlbmRzL2dvLmpzXCJcbmltcG9ydCB7cGFyc2VSdXN0fSBmcm9tIFwiLi9mcm9udGVuZHMvcnVzdC5qc1wiXG5pbXBvcnQge3BhcnNlU3dpZnR9IGZyb20gXCIuL2Zyb250ZW5kcy9zd2lmdC5qc1wiXG5pbXBvcnQge3BhcnNlRGFydH0gZnJvbSBcIi4vZnJvbnRlbmRzL2RhcnQuanNcIlxuaW1wb3J0IHtwYXJzZVppZ30gZnJvbSBcIi4vZnJvbnRlbmRzL3ppZy5qc1wiXG5pbXBvcnQge3BhcnNlQ3BwfSBmcm9tIFwiLi9mcm9udGVuZHMvY3BwLmpzXCJcbmltcG9ydCB7Z2VuZXJhdGVDcHB9IGZyb20gXCIuL2JhY2tlbmRzL2NwcC5qc1wiXG5pbXBvcnQge3BhcnNlQ30gZnJvbSBcIi4vZnJvbnRlbmRzL2MuanNcIlxuaW1wb3J0IHtnZW5lcmF0ZUNQcm9ncmFtfSBmcm9tIFwiLi9iYWNrZW5kcy9jLmpzXCJcbmltcG9ydCB7cGFyc2VKYXZhU2NyaXB0VHlwZVNjcmlwdH0gZnJvbSBcIi4vZnJvbnRlbmRzL2phdmFzY3JpcHQtdHlwZXNjcmlwdC5qc1wiXG5pbXBvcnQge3BhcnNlUGhwfSBmcm9tIFwiLi9mcm9udGVuZHMvcGhwLmpzXCJcbmltcG9ydCB7cGFyc2VQeXRob259IGZyb20gXCIuL2Zyb250ZW5kcy9weXRob24uanNcIlxuaW1wb3J0IHtwYXJzZVJ1Ynl9IGZyb20gXCIuL2Zyb250ZW5kcy9ydWJ5LmpzXCJcbmltcG9ydCB7Y3JlYXRlSmF2YUNoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMvamF2YS1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZUphdmFTY3JpcHRDaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL2phdmFzY3JpcHQtY2hlY2suanNcIlxuaW1wb3J0IHtjcmVhdGVLb3RsaW5DaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL2tvdGxpbi1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZVBocENoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMvcGhwLWNoZWNrLmpzXCJcbmltcG9ydCB7Y3JlYXRlUHl0aG9uQ2hlY2tQbGFufSBmcm9tIFwiLi9iYWNrZW5kcy9weXRob24tY2hlY2suanNcIlxuaW1wb3J0IHtjcmVhdGVSdWJ5Q2hlY2tQbGFufSBmcm9tIFwiLi9iYWNrZW5kcy9ydWJ5LWNoZWNrLmpzXCJcbmltcG9ydCB7Y3JlYXRlVHlwZVNjcmlwdENoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMvdHlwZXNjcmlwdC1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZUdvQ2hlY2tQbGFufSBmcm9tIFwiLi9iYWNrZW5kcy9nby1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZUNDaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL2MtY2hlY2suanNcIlxuaW1wb3J0IHtjcmVhdGVDcHBDaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL2NwcC1jaGVjay5qc1wiXG5pbXBvcnQge2NyZWF0ZVJ1c3RDaGVja1BsYW59IGZyb20gXCIuL2JhY2tlbmRzL3J1c3QtY2hlY2suanNcIlxuaW1wb3J0IHtjcmVhdGVTd2lmdENoZWNrUGxhbn0gZnJvbSBcIi4vYmFja2VuZHMvc3dpZnQtY2hlY2suanNcIlxuaW1wb3J0IHtjcmVhdGVEYXJ0Q2hlY2tQbGFufSBmcm9tIFwiLi9iYWNrZW5kcy9kYXJ0LWNoZWNrLmpzXCJcbmltcG9ydCB7Y3JlYXRlWmlnQ2hlY2tQbGFufSBmcm9tIFwiLi9iYWNrZW5kcy96aWctY2hlY2suanNcIlxuXG5jb25zdCByZWdpc3RyeVJvbGVzID0gT2JqZWN0LmZyZWV6ZShbXCJmcm9udGVuZFwiLCBcInRleHRCYWNrZW5kXCIsIFwiYmluYXJ5QmFja2VuZFwiLCBcImFwcGxpY2F0aW9uQmFja2VuZFwiLCBcImludGVyb3BlcmFiaWxpdHlcIl0pXG5jb25zdCBhY2NlcHRhbmNlU3RhZ2VPcmRlciA9IFtcInBhcnNlXCIsIFwiZ2VuZXJhdGVcIiwgXCJyZXN0b3JlXCIsIFwiY29tcGlsZVwiLCBcImxpbmtcIiwgXCJ2YWxpZGF0ZVwiLCBcImluc3RhbnRpYXRlXCIsIFwiZXhlY3V0ZVwiXVxuY29uc3QgYWNjZXB0YW5jZVN0YWdlcyA9IG5ldyBNYXAoYWNjZXB0YW5jZVN0YWdlT3JkZXIubWFwKChzdGFnZSwgaW5kZXgpID0+IFtzdGFnZSwgaW5kZXhdKSlcbmNvbnN0IGRldmVsb3BlckNoZWNrU3RhZ2VzID0gbmV3IFNldChbXCJyZXN0b3JlXCIsIFwiY29tcGlsZVwiLCBcImxpbmtcIiwgXCJ2YWxpZGF0ZVwiXSlcbmNvbnN0IHJlZ2lzdHJ5S2V5cyA9IG5ldyBTZXQoW1xuICBcImFjY2VwdGFuY2VcIiwgXCJhcHBsaWNhdGlvbkJhY2tlbmRcIiwgXCJhcnRpZmFjdE11bHRpcGxpY2l0eVwiLCBcImJpbmFyeUJhY2tlbmRcIiwgXCJjaGVja1wiLCBcImRlZmF1bHRGaWxlbmFtZVwiLCBcImZyb250ZW5kXCIsIFwiaWRcIixcbiAgXCJmZWF0dXJlc1wiLCBcImludGVyb3BlcmFiaWxpdHlcIiwgXCJtYXBwaW5nXCIsIFwibWVkaWFUeXBlXCIsIFwicHJvdmlkZXJcIiwgXCJyb3VuZFRyaXBcIiwgXCJ0ZXh0QmFja2VuZFwiXG5dKVxuXG4vKiogQHR5cGVkZWYge1wiZnJvbnRlbmRcIiB8IFwidGV4dEJhY2tlbmRcIiB8IFwiYmluYXJ5QmFja2VuZFwiIHwgXCJhcHBsaWNhdGlvbkJhY2tlbmRcIiB8IFwiaW50ZXJvcGVyYWJpbGl0eVwifSBSZWdpc3RyeVJvbGUgKi9cbi8qKiBAdHlwZWRlZiB7KC4uLnZhbHVlczogdW5rbm93bltdKSA9PiB1bmtub3dufSBSZWdpc3RyeUltcGxlbWVudGF0aW9uICovXG5cbi8qKlxuICogQHR5cGVkZWYgRnJvbnRlbmRJbnB1dFxuICogQHByb3BlcnR5IHtyZWFkb25seSBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkVmZmVjdENhcGFiaWxpdHlEZWNsYXJhdGlvbltdfSBbY2FwYWJpbGl0aWVzXSAtIENvbXBpbGVyLWF1dGhvcml6ZWQgZGVjbGFyYXRpb25zLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGZpbGVuYW1lIC0gU291cmNlIGZpbGVuYW1lLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNvdXJjZSAtIFNvdXJjZSB0ZXh0LlxuICogQHByb3BlcnR5IHt7aXNFbnRyeTogYm9vbGVhbiwgZnVuY3Rpb25zOiBNYXA8c3RyaW5nLCBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkZ1bmN0aW9uRGVjbGFyYXRpb24+LCByZWNvcmRzOiBNYXA8c3RyaW5nLCBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLlJlY29yZERlY2xhcmF0aW9uPiwgZXJyb3JzPzogTWFwPHN0cmluZywgaW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5FcnJvckRlY2xhcmF0aW9uPiwgdmFsdWVSZWNvcmRzPzogTWFwPHN0cmluZywgaW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5SZWNvcmREZWNsYXJhdGlvbj59fSBbcHJvZ3JhbV0gLSBQcm9ncmFtIGNvbnZlcnNpb24gY29udGV4dC5cbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBGcm9udGVuZFxuICogQHBhcmFtIHtGcm9udGVuZElucHV0fSBpbnB1dCAtIEZyb250ZW5kIHJlcXVlc3QuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gU2VtYW50aWMgbW9kdWxlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgTGFuZ3VhZ2VSZWdpc3RyeVJlY29yZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkIC0gU3RhYmxlIGlkZW50aXR5LlxuICogQHByb3BlcnR5IHt7c3RhZ2VzOiBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkFjY2VwdGFuY2VTdGFnZVtdLCB0b29sY2hhaW5zOiBzdHJpbmdbXX19IGFjY2VwdGFuY2UgLSBBY2NlcHRhbmNlIGRlY2xhcmF0aW9uLlxuICogQHByb3BlcnR5IHtSZWFkb25seTxMYW5ndWFnZVJlZ2lzdHJ5Q2hlY2tSZWNvcmQ+fSBjaGVjayAtIERldmVsb3Blci1jaGVjayBkZWNsYXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7XCJzaW5nbGVcIiB8IFwibXVsdGlwbGVcIn0gYXJ0aWZhY3RNdWx0aXBsaWNpdHkgLSBBcnRpZmFjdCBtdWx0aXBsaWNpdHkuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuTGFuZ3VhZ2VGZWF0dXJlQ2FwYWJpbGl0aWVzfSBmZWF0dXJlcyAtIFNlbWFudGljIGZlYXR1cmUgY2FwYWJpbGl0aWVzLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkxhbmd1YWdlTWFwcGluZ0NhcGFiaWxpdGllc30gbWFwcGluZyAtIE1hcHBpbmcgY2FwYWJpbGl0aWVzLlxuICogQHByb3BlcnR5IHtib29sZWFufSByb3VuZFRyaXAgLSBSb3VuZC10cmlwIGRlY2xhcmF0aW9uLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkZWZhdWx0RmlsZW5hbWVdIC0gRGVmYXVsdCBiYWNrZW5kIGZpbGVuYW1lLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFttZWRpYVR5cGVdIC0gRGVmYXVsdCBiYWNrZW5kIG1lZGlhIHR5cGUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwcm92aWRlcl0gLSBUYXJnZXQgaG9zdCBzdGRsaWIgcHJvdmlkZXIvbmF0aXZlLWJpbmRpbmcgcm9sZS5cbiAqIEBwcm9wZXJ0eSB7UmVnaXN0cnlJbXBsZW1lbnRhdGlvbn0gW2Zyb250ZW5kXSAtIEZyb250ZW5kIGFkYXB0ZXIuXG4gKiBAcHJvcGVydHkge1JlZ2lzdHJ5SW1wbGVtZW50YXRpb259IFt0ZXh0QmFja2VuZF0gLSBUZXh0IGJhY2tlbmQuXG4gKiBAcHJvcGVydHkge1JlZ2lzdHJ5SW1wbGVtZW50YXRpb259IFtiaW5hcnlCYWNrZW5kXSAtIEJpbmFyeSBiYWNrZW5kLlxuICogQHByb3BlcnR5IHtSZWdpc3RyeUltcGxlbWVudGF0aW9ufSBbYXBwbGljYXRpb25CYWNrZW5kXSAtIEFwcGxpY2F0aW9uLWFydGlmYWN0IGJhY2tlbmQuXG4gKiBAcHJvcGVydHkge1JlZ2lzdHJ5SW1wbGVtZW50YXRpb259IFtpbnRlcm9wZXJhYmlsaXR5XSAtIEludGVyb3BlcmFiaWxpdHkgYnJpZGdlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1JlYWRvbmx5PHtcbiAqICAgYXJ0aWZhY3RzOiBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkdlbmVyYXRlZEFydGlmYWN0U2V0LFxuICogICBidWlsZFBhdGg6IHN0cmluZyxcbiAqICAgcHJvamVjdElkOiBzdHJpbmcsXG4gKiAgIHNvdXJjZVBhdGg6IHN0cmluZyxcbiAqICAgdGFyZ2V0SWQ6IHN0cmluZyxcbiAqICAgdG9vbHM6IHJlYWRvbmx5IGltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuRGlzY292ZXJlZFRvb2xjaGFpbltdXG4gKiB9Pn0gVGFyZ2V0Q2hlY2tQbGFuQ29udGV4dFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIFRhcmdldENoZWNrUGxhbkZhY3RvcnlcbiAqIEBwYXJhbSB7VGFyZ2V0Q2hlY2tQbGFuQ29udGV4dH0gY29udGV4dCAtIEV4YWN0IHN0YWdlZCB0YXJnZXQgY29udGV4dC5cbiAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLlRhcmdldENoZWNrUGxhbn0gSW1tdXRhYmxlIHBsYW4uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBMYW5ndWFnZVJlZ2lzdHJ5Q2hlY2tSZWNvcmRcbiAqIEBwcm9wZXJ0eSB7VGFyZ2V0Q2hlY2tQbGFuRmFjdG9yeX0gW2ZhY3RvcnldIC0gVGFyZ2V0LW93bmVkIHBsYW4gZmFjdG9yeSBmb3Igc3VwcG9ydGVkIGNoZWNrcy5cbiAqIEBwcm9wZXJ0eSB7cmVhZG9ubHkgaW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5BY2NlcHRhbmNlU3RhZ2VbXX0gc3RhZ2VzIC0gRXhhY3Qgbm9uLWV4ZWN1dGluZyBzdGFnZXMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHN1cHBvcnRlZCAtIFdoZXRoZXIgdGhlIHRhcmdldCBzdXBwbGllcyBhIGNoZWNrIHBsYW4uXG4gKiBAcHJvcGVydHkge3JlYWRvbmx5IHN0cmluZ1tdfSB0b29sY2hhaW5zIC0gRXhhY3QgZGVjbGFyZWQgY2Fub25pY2FsIHRvb2xjaGFpbnMuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBMYW5ndWFnZVJlZ2lzdHJ5XG4gKiBAcHJvcGVydHkge3JlYWRvbmx5IGltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuTGFuZ3VhZ2VDYXBhYmlsaXRpZXNbXX0gZGVzY3JpcHRvcnMgLSBQdWJsaWMgZGVzY3JpcHRvcnMuXG4gKiBAcHJvcGVydHkge3JlYWRvbmx5IHN0cmluZ1tdfSBpZHMgLSBSZWdpc3RlcmVkIElEcyBpbiBzdGFibGUgb3JkZXIuXG4gKiBAcHJvcGVydHkgeyhpZDogc3RyaW5nKSA9PiBSZWFkb25seTxMYW5ndWFnZVJlZ2lzdHJ5UmVjb3JkPn0gcmVjb3JkIC0gRXhhY3QgcmVjb3JkIGxvb2t1cC5cbiAqIEBwcm9wZXJ0eSB7KGlkOiBzdHJpbmcsIHJvbGU6IFJlZ2lzdHJ5Um9sZSwgbG9jYXRpb24/OiBpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLlNvdXJjZUxvY2F0aW9uKSA9PiBSZWdpc3RyeUltcGxlbWVudGF0aW9ufSByZXNvbHZlIC0gUm9sZSBsb29rdXAuXG4gKi9cblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGFuIGltbXV0YWJsZSByb2xlIHJlZ2lzdHJ5IGZyb20gb3JkZXJlZCByZWNvcmRzLlxuICogQHBhcmFtIHt1bmtub3dufSBjYW5kaWRhdGVSZWNvcmRzIC0gT3JkZXJlZCBsYW5ndWFnZSByZWNvcmRzLlxuICogQHJldHVybnMge1JlYWRvbmx5PExhbmd1YWdlUmVnaXN0cnk+fSBSZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxhbmd1YWdlUmVnaXN0cnkoY2FuZGlkYXRlUmVjb3Jkcykge1xuICBpZiAoIWlzRGVuc2VBcnJheShjYW5kaWRhdGVSZWNvcmRzKSkgaW52YWxpZFJlZ2lzdHJ5KFwiUmVnaXN0cnkgcmVjb3JkcyBtdXN0IGJlIGFuIG9yZGVyZWQgZGVuc2UgYXJyYXkuXCIpXG5cbiAgLyoqIEB0eXBlIHtNYXA8c3RyaW5nLCBSZWFkb25seTxMYW5ndWFnZVJlZ2lzdHJ5UmVjb3JkPj59ICovXG4gIGNvbnN0IHJlY29yZHNCeUlkID0gbmV3IE1hcCgpXG4gIC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5MYW5ndWFnZUNhcGFiaWxpdGllc1tdfSAqL1xuICBjb25zdCBkZXNjcmlwdG9ycyA9IFtdXG5cbiAgZm9yIChsZXQgcmVjb3JkSW5kZXggPSAwOyByZWNvcmRJbmRleCA8IGNhbmRpZGF0ZVJlY29yZHMubGVuZ3RoOyByZWNvcmRJbmRleCArPSAxKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gY2FuZGlkYXRlUmVjb3Jkc1tyZWNvcmRJbmRleF1cblxuICAgIGlmICghaXNQbGFpbk9iamVjdChjYW5kaWRhdGUpKSBpbnZhbGlkUmVnaXN0cnkoXCJFdmVyeSByZWdpc3RyeSByZWNvcmQgbXVzdCBiZSBhIHBsYWluIG9iamVjdC5cIilcbiAgICBjb25zdCBpZCA9IGNhbmRpZGF0ZS5pZFxuXG4gICAgaWYgKHR5cGVvZiBpZCAhPSBcInN0cmluZ1wiIHx8IGlkLmxlbmd0aCA9PSAwIHx8ICEvXlthLXpdW2EtejAtOS1dKiQvdS50ZXN0KGlkKSkge1xuICAgICAgaW52YWxpZFJlZ2lzdHJ5KFwiRXZlcnkgcmVnaXN0cnkgcmVjb3JkIHJlcXVpcmVzIGEgc3RhYmxlIGxvd2VyY2FzZSBJRC5cIiwgdHlwZW9mIGlkID09IFwic3RyaW5nXCIgPyBpZCA6IHVuZGVmaW5lZClcbiAgICB9XG4gICAgaWYgKHJlY29yZHNCeUlkLmhhcyhpZCkpIGludmFsaWRSZWdpc3RyeShgRHVwbGljYXRlIHJlZ2lzdHJ5IElEICcke2lkfScuYCwgaWQpXG4gICAgaWYgKE9iamVjdC5rZXlzKGNhbmRpZGF0ZSkuc29tZSgoa2V5KSA9PiAhcmVnaXN0cnlLZXlzLmhhcyhrZXkpKSkgaW52YWxpZFJlZ2lzdHJ5KGBSZWdpc3RyeSByZWNvcmQgJyR7aWR9JyBoYXMgdW5rbm93biBmaWVsZHMuYCwgaWQpXG4gICAgaWYgKGNhbmRpZGF0ZS5wcm92aWRlciAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBjYW5kaWRhdGUucHJvdmlkZXIgIT0gXCJib29sZWFuXCIpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgZGVjbGFyZXMgYW4gaW52YWxpZCBwcm92aWRlciByb2xlLmAsIGlkKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qgcm9sZSBvZiByZWdpc3RyeVJvbGVzKSB7XG4gICAgICBpZiAoY2FuZGlkYXRlW3JvbGVdICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGNhbmRpZGF0ZVtyb2xlXSAhPSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgaW52YWxpZFJlZ2lzdHJ5KGBSZWdpc3RyeSByb2xlICcke3JvbGV9JyBmb3IgJyR7aWR9JyBtdXN0IGJlIGEgZnVuY3Rpb24gd2hlbiBwcmVzZW50LmAsIGlkKVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBhcnRpZmFjdE11bHRpcGxpY2l0eSA9IGNhbmRpZGF0ZS5hcnRpZmFjdE11bHRpcGxpY2l0eVxuXG4gICAgaWYgKGFydGlmYWN0TXVsdGlwbGljaXR5ICE9IFwic2luZ2xlXCIgJiYgYXJ0aWZhY3RNdWx0aXBsaWNpdHkgIT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyBhbiBpbnZhbGlkIGFydGlmYWN0IG11bHRpcGxpY2l0eS5gLCBpZClcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjYW5kaWRhdGUucm91bmRUcmlwICE9IFwiYm9vbGVhblwiKSBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIHJlcXVpcmVzIGEgQm9vbGVhbiByb3VuZC10cmlwIGRlY2xhcmF0aW9uLmAsIGlkKVxuICAgIGNvbnN0IGZlYXR1cmVzQ2FuZGlkYXRlID0gY2FuZGlkYXRlLmZlYXR1cmVzID8/IHtcbiAgICAgIGJvdW5kZWRTdWJ0eXBpbmc6IGZhbHNlLFxuICAgICAgY2xvc2VkUmVjb3JkczogZmFsc2UsXG4gICAgICBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZhbHNlLFxuICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczogZmFsc2UsXG4gICAgICBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmYWxzZSxcbiAgICAgIGVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlczogZmFsc2UsXG4gICAgICBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IGZhbHNlLFxuICAgICAgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IGZhbHNlLFxuICAgICAgb3B0aW9uYWxWYWx1ZXM6IGZhbHNlLFxuICAgICAgb3JkZXJlZExpc3RJdGVyYXRpb246IGZhbHNlLFxuICAgICAgb3JkZXJlZE1hcEl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICByZWZlcmVuY2VDbGFzc2VzOiBmYWxzZSxcbiAgICAgIHR5cGVkRXJyb3JzOiBmYWxzZSxcbiAgICAgIHR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3M6IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KGZlYXR1cmVzQ2FuZGlkYXRlKSB8fFxuICAgICAgT2JqZWN0LmtleXMoZmVhdHVyZXNDYW5kaWRhdGUpLnNvcnQoKS5qb2luKFwiLFwiKSAhPSBcImJvdW5kZWRTdWJ0eXBpbmcsY2xvc2VkUmVjb3Jkcyxjb25kaXRpb25Db250cm9sbGVkTG9vcHMsY29uZGl0aW9uYWxFeHByZXNzaW9ucyxlZmZlY3RmdWxDYXBhYmlsaXRpZXNBbmRSZXNvdXJjZXMsZ2VuZXJhbEZ1bmN0aW9uc0FuZENhbGxzLGltbXV0YWJsZUNvbGxlY3Rpb25zLG9wdGlvbmFsVmFsdWVzLG9yZGVyZWRMaXN0SXRlcmF0aW9uLG9yZGVyZWRNYXBJdGVyYXRpb24scmVmZXJlbmNlQ2xhc3NlcyxzdHJpbmdJbnRlcnBvbGF0aW9uLHR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3MsdHlwZWRFcnJvcnNcIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLmJvdW5kZWRTdWJ0eXBpbmcgIT0gXCJib29sZWFuXCIgfHxcbiAgICAgIHR5cGVvZiBmZWF0dXJlc0NhbmRpZGF0ZS5jbG9zZWRSZWNvcmRzICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgZmVhdHVyZXNDYW5kaWRhdGUuY29uZGl0aW9uQ29udHJvbGxlZExvb3BzICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgZmVhdHVyZXNDYW5kaWRhdGUuY29uZGl0aW9uYWxFeHByZXNzaW9ucyAhPSBcImJvb2xlYW5cIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLmVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlcyAhPSBcImJvb2xlYW5cIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLmdlbmVyYWxGdW5jdGlvbnNBbmRDYWxscyAhPSBcImJvb2xlYW5cIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLmltbXV0YWJsZUNvbGxlY3Rpb25zICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgZmVhdHVyZXNDYW5kaWRhdGUub3B0aW9uYWxWYWx1ZXMgIT0gXCJib29sZWFuXCIgfHxcbiAgICAgIHR5cGVvZiBmZWF0dXJlc0NhbmRpZGF0ZS5vcmRlcmVkTGlzdEl0ZXJhdGlvbiAhPSBcImJvb2xlYW5cIiB8fFxuICAgICAgdHlwZW9mIGZlYXR1cmVzQ2FuZGlkYXRlLm9yZGVyZWRNYXBJdGVyYXRpb24gIT0gXCJib29sZWFuXCIgfHxcbiAgICAgIHR5cGVvZiBmZWF0dXJlc0NhbmRpZGF0ZS5yZWZlcmVuY2VDbGFzc2VzICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICAoZmVhdHVyZXNDYW5kaWRhdGUuYm91bmRlZFN1YnR5cGluZyAmJiAhZmVhdHVyZXNDYW5kaWRhdGUucmVmZXJlbmNlQ2xhc3NlcykgfHxcbiAgICAgIHR5cGVvZiBmZWF0dXJlc0NhbmRpZGF0ZS5zdHJpbmdJbnRlcnBvbGF0aW9uICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgZmVhdHVyZXNDYW5kaWRhdGUudHlwZWRFcnJvcnMgIT0gXCJib29sZWFuXCIgfHxcbiAgICAgIHR5cGVvZiBmZWF0dXJlc0NhbmRpZGF0ZS50eXBlUGFyYW1ldGVyc0FuZEdlbmVyaWNzICE9IFwiYm9vbGVhblwiKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyBhbiBpbnZhbGlkIGZlYXR1cmUgZGVjbGFyYXRpb24uYCwgaWQpXG4gICAgfVxuICAgIGNvbnN0IGZlYXR1cmVzID0gZGVlcEZyZWV6ZSgvKiogQHR5cGUge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuTGFuZ3VhZ2VGZWF0dXJlQ2FwYWJpbGl0aWVzfSAqLyAoe1xuICAgICAgYm91bmRlZFN1YnR5cGluZzogZmVhdHVyZXNDYW5kaWRhdGUuYm91bmRlZFN1YnR5cGluZyxcbiAgICAgIGNsb3NlZFJlY29yZHM6IGZlYXR1cmVzQ2FuZGlkYXRlLmNsb3NlZFJlY29yZHMsXG4gICAgICBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZlYXR1cmVzQ2FuZGlkYXRlLmNvbmRpdGlvbkNvbnRyb2xsZWRMb29wcyxcbiAgICAgIGNvbmRpdGlvbmFsRXhwcmVzc2lvbnM6IGZlYXR1cmVzQ2FuZGlkYXRlLmNvbmRpdGlvbmFsRXhwcmVzc2lvbnMsXG4gICAgICBlZmZlY3RmdWxDYXBhYmlsaXRpZXNBbmRSZXNvdXJjZXM6IGZlYXR1cmVzQ2FuZGlkYXRlLmVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlcyxcbiAgICAgIGdlbmVyYWxGdW5jdGlvbnNBbmRDYWxsczogZmVhdHVyZXNDYW5kaWRhdGUuZ2VuZXJhbEZ1bmN0aW9uc0FuZENhbGxzLFxuICAgICAgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IGZlYXR1cmVzQ2FuZGlkYXRlLmltbXV0YWJsZUNvbGxlY3Rpb25zLFxuICAgICAgb3B0aW9uYWxWYWx1ZXM6IGZlYXR1cmVzQ2FuZGlkYXRlLm9wdGlvbmFsVmFsdWVzLFxuICAgICAgb3JkZXJlZExpc3RJdGVyYXRpb246IGZlYXR1cmVzQ2FuZGlkYXRlLm9yZGVyZWRMaXN0SXRlcmF0aW9uLFxuICAgICAgb3JkZXJlZE1hcEl0ZXJhdGlvbjogZmVhdHVyZXNDYW5kaWRhdGUub3JkZXJlZE1hcEl0ZXJhdGlvbixcbiAgICAgIHJlZmVyZW5jZUNsYXNzZXM6IGZlYXR1cmVzQ2FuZGlkYXRlLnJlZmVyZW5jZUNsYXNzZXMsXG4gICAgICBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmZWF0dXJlc0NhbmRpZGF0ZS5zdHJpbmdJbnRlcnBvbGF0aW9uLFxuICAgICAgdHlwZWRFcnJvcnM6IGZlYXR1cmVzQ2FuZGlkYXRlLnR5cGVkRXJyb3JzLFxuICAgICAgdHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljczogZmVhdHVyZXNDYW5kaWRhdGUudHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljc1xuICAgIH0pKVxuICAgIGNvbnN0IG1hcHBpbmdDYW5kaWRhdGUgPSBjYW5kaWRhdGUubWFwcGluZ1xuXG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KG1hcHBpbmdDYW5kaWRhdGUpKSBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyBhbiBpbnZhbGlkIG1hcHBpbmcgZGVjbGFyYXRpb24uYCwgaWQpXG4gICAgY29uc3QgbWFwcGluZ1NuYXBzaG90ID0ge1xuICAgICAgYmluYXJ5UmFuZ2VzOiBtYXBwaW5nQ2FuZGlkYXRlLmJpbmFyeVJhbmdlcyxcbiAgICAgIHJpY2hUZXh0OiBtYXBwaW5nQ2FuZGlkYXRlLnJpY2hUZXh0LFxuICAgICAgc291cmNlTWFwVjM6IG1hcHBpbmdDYW5kaWRhdGUuc291cmNlTWFwVjNcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1hcHBpbmdTbmFwc2hvdC5yaWNoVGV4dCAhPSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgbWFwcGluZ1NuYXBzaG90LnNvdXJjZU1hcFYzICE9IFwiYm9vbGVhblwiIHx8XG4gICAgICB0eXBlb2YgbWFwcGluZ1NuYXBzaG90LmJpbmFyeVJhbmdlcyAhPSBcImJvb2xlYW5cIikge1xuICAgICAgaW52YWxpZFJlZ2lzdHJ5KGBSZWdpc3RyeSByZWNvcmQgJyR7aWR9JyBoYXMgYW4gaW52YWxpZCBtYXBwaW5nIGRlY2xhcmF0aW9uLmAsIGlkKVxuICAgIH1cbiAgICBjb25zdCBtYXBwaW5nID0gZGVlcEZyZWV6ZSgvKiogQHR5cGUge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuTGFuZ3VhZ2VNYXBwaW5nQ2FwYWJpbGl0aWVzfSAqLyAobWFwcGluZ1NuYXBzaG90KSlcbiAgICBjb25zdCBhY2NlcHRhbmNlQ2FuZGlkYXRlID0gY2FuZGlkYXRlLmFjY2VwdGFuY2VcblxuICAgIGlmICghaXNQbGFpbk9iamVjdChhY2NlcHRhbmNlQ2FuZGlkYXRlKSB8fCAhaXNEZW5zZUFycmF5KGFjY2VwdGFuY2VDYW5kaWRhdGUuc3RhZ2VzKSB8fFxuICAgICAgIWlzRGVuc2VBcnJheShhY2NlcHRhbmNlQ2FuZGlkYXRlLnRvb2xjaGFpbnMpKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyBhbiBpbnZhbGlkIGFjY2VwdGFuY2UgZGVjbGFyYXRpb24uYCwgaWQpXG4gICAgfVxuICAgIC8qKiBAdHlwZSB7dW5rbm93bltdfSAqL1xuICAgIGNvbnN0IHN0YWdlU25hcHNob3QgPSBbXVxuICAgIC8qKiBAdHlwZSB7dW5rbm93bltdfSAqL1xuICAgIGNvbnN0IHRvb2xjaGFpblNuYXBzaG90ID0gW11cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhY2NlcHRhbmNlQ2FuZGlkYXRlLnN0YWdlcy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIHN0YWdlU25hcHNob3QucHVzaChhY2NlcHRhbmNlQ2FuZGlkYXRlLnN0YWdlc1tpbmRleF0pXG4gICAgfVxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhY2NlcHRhbmNlQ2FuZGlkYXRlLnRvb2xjaGFpbnMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICB0b29sY2hhaW5TbmFwc2hvdC5wdXNoKGFjY2VwdGFuY2VDYW5kaWRhdGUudG9vbGNoYWluc1tpbmRleF0pXG4gICAgfVxuICAgIGlmICghc3RhZ2VTbmFwc2hvdC5ldmVyeSgoc3RhZ2UpID0+IHR5cGVvZiBzdGFnZSA9PSBcInN0cmluZ1wiICYmIGFjY2VwdGFuY2VTdGFnZXMuaGFzKHN0YWdlKSkgfHxcbiAgICAgICF0b29sY2hhaW5TbmFwc2hvdC5ldmVyeSgodG9vbGNoYWluKSA9PiB0eXBlb2YgdG9vbGNoYWluID09IFwic3RyaW5nXCIgJiYgdG9vbGNoYWluLmxlbmd0aCA+IDApKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyBhbiBpbnZhbGlkIGFjY2VwdGFuY2UgZGVjbGFyYXRpb24uYCwgaWQpXG4gICAgfVxuICAgIGNvbnN0IHN0YWdlcyA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5BY2NlcHRhbmNlU3RhZ2VbXX0gKi8gKHN0YWdlU25hcHNob3QpXG4gICAgY29uc3QgdG9vbGNoYWlucyA9IC8qKiBAdHlwZSB7c3RyaW5nW119ICovICh0b29sY2hhaW5TbmFwc2hvdClcbiAgICBsZXQgcHJldmlvdXNTdGFnZSA9IC0xXG4gICAgY29uc3QgZGVjbGFyZWRTdGFnZXMgPSBuZXcgU2V0KClcblxuICAgIGZvciAoY29uc3Qgc3RhZ2Ugb2Ygc3RhZ2VzKSB7XG4gICAgICBjb25zdCBzdGFnZUluZGV4ID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChhY2NlcHRhbmNlU3RhZ2VzLmdldCgvKiogQHR5cGUge3N0cmluZ30gKi8gKHN0YWdlKSkpXG5cbiAgICAgIGlmIChkZWNsYXJlZFN0YWdlcy5oYXMoc3RhZ2UpIHx8IHN0YWdlSW5kZXggPCBwcmV2aW91c1N0YWdlKSBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyB1bm9yZGVyZWQgb3IgZHVwbGljYXRlIGFjY2VwdGFuY2Ugc3RhZ2VzLmAsIGlkKVxuICAgICAgZGVjbGFyZWRTdGFnZXMuYWRkKHN0YWdlKVxuICAgICAgcHJldmlvdXNTdGFnZSA9IHN0YWdlSW5kZXhcbiAgICB9XG4gICAgaWYgKG5ldyBTZXQodG9vbGNoYWlucykuc2l6ZSAhPSB0b29sY2hhaW5zLmxlbmd0aCkge1xuICAgICAgaW52YWxpZFJlZ2lzdHJ5KGBSZWdpc3RyeSByZWNvcmQgJyR7aWR9JyBoYXMgZHVwbGljYXRlIGFjY2VwdGFuY2UgdG9vbGNoYWlucy5gLCBpZClcbiAgICB9XG4gICAgY29uc3QgY2hlY2tDYW5kaWRhdGUgPSBjYW5kaWRhdGUuY2hlY2tcbiAgICAvKiogQHR5cGUge1JlYWRvbmx5PExhbmd1YWdlUmVnaXN0cnlDaGVja1JlY29yZD59ICovXG4gICAgbGV0IGNoZWNrXG5cbiAgICBpZiAoY2hlY2tDYW5kaWRhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hlY2sgPSBkZWVwRnJlZXplKHtzdGFnZXM6IFtdLCBzdXBwb3J0ZWQ6IGZhbHNlLCB0b29sY2hhaW5zOiBbXX0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghaXNQbGFpbk9iamVjdChjaGVja0NhbmRpZGF0ZSkgfHwgT2JqZWN0LmtleXMoY2hlY2tDYW5kaWRhdGUpLnNvcnQoKS5qb2luKFwiLFwiKSAhPSBcImZhY3Rvcnksc3RhZ2VzLHRvb2xjaGFpbnNcIiB8fFxuICAgICAgICB0eXBlb2YgY2hlY2tDYW5kaWRhdGUuZmFjdG9yeSAhPSBcImZ1bmN0aW9uXCIgfHwgIWlzRGVuc2VBcnJheShjaGVja0NhbmRpZGF0ZS5zdGFnZXMpIHx8XG4gICAgICAgICFpc0RlbnNlQXJyYXkoY2hlY2tDYW5kaWRhdGUudG9vbGNoYWlucykgfHwgY2hlY2tDYW5kaWRhdGUuc3RhZ2VzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgaGFzIGFuIGludmFsaWQgZGV2ZWxvcGVyLWNoZWNrIGRlY2xhcmF0aW9uLmAsIGlkKVxuICAgICAgfVxuICAgICAgLyoqIEB0eXBlIHt1bmtub3duW119ICovXG4gICAgICBjb25zdCBjaGVja1N0YWdlU25hcHNob3QgPSBbXVxuICAgICAgLyoqIEB0eXBlIHt1bmtub3duW119ICovXG4gICAgICBjb25zdCBjaGVja1Rvb2xjaGFpblNuYXBzaG90ID0gW11cblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNoZWNrQ2FuZGlkYXRlLnN0YWdlcy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgY2hlY2tTdGFnZVNuYXBzaG90LnB1c2goY2hlY2tDYW5kaWRhdGUuc3RhZ2VzW2luZGV4XSlcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjaGVja0NhbmRpZGF0ZS50b29sY2hhaW5zLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICBjaGVja1Rvb2xjaGFpblNuYXBzaG90LnB1c2goY2hlY2tDYW5kaWRhdGUudG9vbGNoYWluc1tpbmRleF0pXG4gICAgICB9XG4gICAgICBpZiAoIWNoZWNrU3RhZ2VTbmFwc2hvdC5ldmVyeShzdGFnZSA9PiB0eXBlb2Ygc3RhZ2UgPT0gXCJzdHJpbmdcIiAmJiBkZXZlbG9wZXJDaGVja1N0YWdlcy5oYXMoc3RhZ2UpICYmXG4gICAgICAgIGRlY2xhcmVkU3RhZ2VzLmhhcyhzdGFnZSkpIHx8ICFjaGVja1Rvb2xjaGFpblNuYXBzaG90LmV2ZXJ5KHRvb2xjaGFpbiA9PiB0eXBlb2YgdG9vbGNoYWluID09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgdG9vbGNoYWlucy5pbmNsdWRlcyh0b29sY2hhaW4pKSB8fCBuZXcgU2V0KGNoZWNrU3RhZ2VTbmFwc2hvdCkuc2l6ZSAhPSBjaGVja1N0YWdlU25hcHNob3QubGVuZ3RoIHx8XG4gICAgICAgIG5ldyBTZXQoY2hlY2tUb29sY2hhaW5TbmFwc2hvdCkuc2l6ZSAhPSBjaGVja1Rvb2xjaGFpblNuYXBzaG90Lmxlbmd0aCkge1xuICAgICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGRldmVsb3BlciBjaGVja3MgbXVzdCB1c2Ugb3JkZXJlZCBub24tZXhlY3V0aW5nIGRlY2xhcmVkIHN0YWdlcyBhbmQgdG9vbGNoYWlucy5gLCBpZClcbiAgICAgIH1cbiAgICAgIGxldCBwcmV2aW91c0NoZWNrU3RhZ2UgPSAtMVxuXG4gICAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIGNoZWNrU3RhZ2VTbmFwc2hvdCkge1xuICAgICAgICBjb25zdCBzdGFnZUluZGV4ID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChhY2NlcHRhbmNlU3RhZ2VzLmdldCgvKiogQHR5cGUge3N0cmluZ30gKi8gKHN0YWdlKSkpXG5cbiAgICAgICAgaWYgKHN0YWdlSW5kZXggPCBwcmV2aW91c0NoZWNrU3RhZ2UpIHtcbiAgICAgICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGhhcyB1bm9yZGVyZWQgZGV2ZWxvcGVyLWNoZWNrIHN0YWdlcy5gLCBpZClcbiAgICAgICAgfVxuICAgICAgICBwcmV2aW91c0NoZWNrU3RhZ2UgPSBzdGFnZUluZGV4XG4gICAgICB9XG4gICAgICBjaGVjayA9IGRlZXBGcmVlemUoe1xuICAgICAgICBmYWN0b3J5OiAvKiogQHR5cGUge1RhcmdldENoZWNrUGxhbkZhY3Rvcnl9ICovIChjaGVja0NhbmRpZGF0ZS5mYWN0b3J5KSxcbiAgICAgICAgc3RhZ2VzOiAvKiogQHR5cGUge2ltcG9ydChcIi4vc2VtYW50aWMvdHlwZXMuanNcIikuQWNjZXB0YW5jZVN0YWdlW119ICovIChjaGVja1N0YWdlU25hcHNob3QpLFxuICAgICAgICBzdXBwb3J0ZWQ6IHRydWUsXG4gICAgICAgIHRvb2xjaGFpbnM6IC8qKiBAdHlwZSB7c3RyaW5nW119ICovIChjaGVja1Rvb2xjaGFpblNuYXBzaG90KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBoYXNGcm9udGVuZCA9IHR5cGVvZiBjYW5kaWRhdGUuZnJvbnRlbmQgPT0gXCJmdW5jdGlvblwiXG4gICAgY29uc3QgaGFzVGV4dEJhY2tlbmQgPSB0eXBlb2YgY2FuZGlkYXRlLnRleHRCYWNrZW5kID09IFwiZnVuY3Rpb25cIlxuICAgIGNvbnN0IGhhc0JpbmFyeUJhY2tlbmQgPSB0eXBlb2YgY2FuZGlkYXRlLmJpbmFyeUJhY2tlbmQgPT0gXCJmdW5jdGlvblwiXG4gICAgY29uc3QgaGFzQXBwbGljYXRpb25CYWNrZW5kID0gdHlwZW9mIGNhbmRpZGF0ZS5hcHBsaWNhdGlvbkJhY2tlbmQgPT0gXCJmdW5jdGlvblwiXG4gICAgY29uc3QgaGFzQmFja2VuZCA9IGhhc1RleHRCYWNrZW5kIHx8IGhhc0JpbmFyeUJhY2tlbmQgfHwgaGFzQXBwbGljYXRpb25CYWNrZW5kXG5cbiAgICBpZiAoY2hlY2suc3VwcG9ydGVkICYmICFoYXNCYWNrZW5kKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IHJlY29yZCAnJHtpZH0nIGRlY2xhcmVzIGRldmVsb3BlciBjaGVja3Mgd2l0aG91dCBhIGJhY2tlbmQgcm9sZS5gLCBpZClcbiAgICB9XG5cbiAgICBpZiAoKG1hcHBpbmcucmljaFRleHQgfHwgbWFwcGluZy5zb3VyY2VNYXBWMyB8fCBtYXBwaW5nLmJpbmFyeVJhbmdlcykgJiYgIWhhc0JhY2tlbmQgfHxcbiAgICAgIG1hcHBpbmcuc291cmNlTWFwVjMgJiYgIW1hcHBpbmcucmljaFRleHQgfHxcbiAgICAgIG1hcHBpbmcuYmluYXJ5UmFuZ2VzICYmICFoYXNCaW5hcnlCYWNrZW5kICYmICFoYXNBcHBsaWNhdGlvbkJhY2tlbmQpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgZGVjbGFyZXMgbWFwcGluZyBzdXBwb3J0IHdpdGhvdXQgaXRzIHJlcXVpcmVkIGJhY2tlbmQgcm9sZS5gLCBpZClcbiAgICB9XG4gICAgaWYgKGNhbmRpZGF0ZS5yb3VuZFRyaXAgJiYgKCFoYXNGcm9udGVuZCB8fCAhaGFzQmFja2VuZCkpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgZGVjbGFyZXMgcm91bmQtdHJpcCBzdXBwb3J0IHdpdGhvdXQgZnJvbnRlbmQgYW5kIGJhY2tlbmQgcm9sZXMuYCwgaWQpXG4gICAgfVxuICAgIGlmIChzdGFnZXMuaW5jbHVkZXMoXCJwYXJzZVwiKSAmJiAhaGFzRnJvbnRlbmQgfHwgc3RhZ2VzLmluY2x1ZGVzKFwiZ2VuZXJhdGVcIikgJiYgIWhhc0JhY2tlbmQpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgcmVjb3JkICcke2lkfScgZGVjbGFyZXMgYW4gYWNjZXB0YW5jZSBzdGFnZSB3aXRob3V0IGl0cyByZXF1aXJlZCByb2xlLmAsIGlkKVxuICAgIH1cblxuICAgIGNvbnN0IGhhc0RlZmF1bHRlZEJhY2tlbmQgPSBoYXNUZXh0QmFja2VuZCB8fCBoYXNCaW5hcnlCYWNrZW5kXG5cbiAgICBpZiAoKGhhc0RlZmF1bHRlZEJhY2tlbmQgfHwgY2FuZGlkYXRlLmRlZmF1bHRGaWxlbmFtZSAhPT0gdW5kZWZpbmVkKSAmJlxuICAgICAgKHR5cGVvZiBjYW5kaWRhdGUuZGVmYXVsdEZpbGVuYW1lICE9IFwic3RyaW5nXCIgfHwgY2FuZGlkYXRlLmRlZmF1bHRGaWxlbmFtZS5sZW5ndGggPT0gMCkpIHtcbiAgICAgIGludmFsaWRSZWdpc3RyeShgUmVnaXN0cnkgYmFja2VuZCAnJHtpZH0nIHJlcXVpcmVzIGEgZGVmYXVsdCBmaWxlbmFtZS5gLCBpZClcbiAgICB9XG4gICAgaWYgKChoYXNEZWZhdWx0ZWRCYWNrZW5kIHx8IGNhbmRpZGF0ZS5tZWRpYVR5cGUgIT09IHVuZGVmaW5lZCkgJiZcbiAgICAgICh0eXBlb2YgY2FuZGlkYXRlLm1lZGlhVHlwZSAhPSBcInN0cmluZ1wiIHx8IGNhbmRpZGF0ZS5tZWRpYVR5cGUubGVuZ3RoID09IDApKSB7XG4gICAgICBpbnZhbGlkUmVnaXN0cnkoYFJlZ2lzdHJ5IGJhY2tlbmQgJyR7aWR9JyByZXF1aXJlcyBhIG1lZGlhIHR5cGUuYCwgaWQpXG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXB0YW5jZSA9IGRlZXBGcmVlemUoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkxhbmd1YWdlQWNjZXB0YW5jZUNhcGFiaWxpdGllc30gKi8gKHtcbiAgICAgIHN0YWdlcyxcbiAgICAgIHRvb2xjaGFpbnNcbiAgICB9KSlcbiAgICBjb25zdCByZWNvcmQgPSBkZWVwRnJlZXplKC8qKiBAdHlwZSB7TGFuZ3VhZ2VSZWdpc3RyeVJlY29yZH0gKi8gKHtcbiAgICAgIGFjY2VwdGFuY2UsXG4gICAgICBhcnRpZmFjdE11bHRpcGxpY2l0eSxcbiAgICAgIGNoZWNrLFxuICAgICAgZmVhdHVyZXMsXG4gICAgICBpZCxcbiAgICAgIG1hcHBpbmcsXG4gICAgICByb3VuZFRyaXA6IGNhbmRpZGF0ZS5yb3VuZFRyaXAsXG4gICAgICAuLi4odHlwZW9mIGNhbmRpZGF0ZS5kZWZhdWx0RmlsZW5hbWUgPT0gXCJzdHJpbmdcIiA/IHtkZWZhdWx0RmlsZW5hbWU6IGNhbmRpZGF0ZS5kZWZhdWx0RmlsZW5hbWV9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUubWVkaWFUeXBlID09IFwic3RyaW5nXCIgPyB7bWVkaWFUeXBlOiBjYW5kaWRhdGUubWVkaWFUeXBlfSA6IHt9KSxcbiAgICAgIC4uLih0eXBlb2YgY2FuZGlkYXRlLnByb3ZpZGVyID09IFwiYm9vbGVhblwiID8ge3Byb3ZpZGVyOiBjYW5kaWRhdGUucHJvdmlkZXJ9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUuZnJvbnRlbmQgPT0gXCJmdW5jdGlvblwiID8ge2Zyb250ZW5kOiBjYW5kaWRhdGUuZnJvbnRlbmR9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUudGV4dEJhY2tlbmQgPT0gXCJmdW5jdGlvblwiID8ge3RleHRCYWNrZW5kOiBjYW5kaWRhdGUudGV4dEJhY2tlbmR9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUuYmluYXJ5QmFja2VuZCA9PSBcImZ1bmN0aW9uXCIgPyB7YmluYXJ5QmFja2VuZDogY2FuZGlkYXRlLmJpbmFyeUJhY2tlbmR9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUuYXBwbGljYXRpb25CYWNrZW5kID09IFwiZnVuY3Rpb25cIiA/IHthcHBsaWNhdGlvbkJhY2tlbmQ6IGNhbmRpZGF0ZS5hcHBsaWNhdGlvbkJhY2tlbmR9IDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjYW5kaWRhdGUuaW50ZXJvcGVyYWJpbGl0eSA9PSBcImZ1bmN0aW9uXCIgPyB7aW50ZXJvcGVyYWJpbGl0eTogY2FuZGlkYXRlLmludGVyb3BlcmFiaWxpdHl9IDoge30pXG4gICAgfSkpXG4gICAgY29uc3QgZGVzY3JpcHRvciA9IGRlZXBGcmVlemUoLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLkxhbmd1YWdlQ2FwYWJpbGl0aWVzfSAqLyAoe1xuICAgICAgYWNjZXB0YW5jZSxcbiAgICAgIGFydGlmYWN0TXVsdGlwbGljaXR5LFxuICAgICAgY2hlY2s6IGRlZXBGcmVlemUoe3N0YWdlczogY2hlY2suc3RhZ2VzLCBzdXBwb3J0ZWQ6IGNoZWNrLnN1cHBvcnRlZCwgdG9vbGNoYWluczogY2hlY2sudG9vbGNoYWluc30pLFxuICAgICAgZmVhdHVyZXMsXG4gICAgICBpZCxcbiAgICAgIG1hcHBpbmcsXG4gICAgICByb2xlczoge1xuICAgICAgICBhcHBsaWNhdGlvbkJhY2tlbmQ6IHR5cGVvZiBjYW5kaWRhdGUuYXBwbGljYXRpb25CYWNrZW5kID09IFwiZnVuY3Rpb25cIixcbiAgICAgICAgYmluYXJ5QmFja2VuZDogdHlwZW9mIGNhbmRpZGF0ZS5iaW5hcnlCYWNrZW5kID09IFwiZnVuY3Rpb25cIixcbiAgICAgICAgZnJvbnRlbmQ6IHR5cGVvZiBjYW5kaWRhdGUuZnJvbnRlbmQgPT0gXCJmdW5jdGlvblwiLFxuICAgICAgICBpbnRlcm9wZXJhYmlsaXR5OiB0eXBlb2YgY2FuZGlkYXRlLmludGVyb3BlcmFiaWxpdHkgPT0gXCJmdW5jdGlvblwiLFxuICAgICAgICBwcm92aWRlcjogY2FuZGlkYXRlLnByb3ZpZGVyID09PSB0cnVlLFxuICAgICAgICB0ZXh0QmFja2VuZDogdHlwZW9mIGNhbmRpZGF0ZS50ZXh0QmFja2VuZCA9PSBcImZ1bmN0aW9uXCJcbiAgICAgIH0sXG4gICAgICByb3VuZFRyaXA6IGNhbmRpZGF0ZS5yb3VuZFRyaXBcbiAgICB9KSlcblxuICAgIHJlY29yZHNCeUlkLnNldChpZCwgcmVjb3JkKVxuICAgIGRlc2NyaXB0b3JzLnB1c2goZGVzY3JpcHRvcilcbiAgfVxuXG4gIGNvbnN0IGZyb3plbkRlc2NyaXB0b3JzID0gZGVlcEZyZWV6ZShkZXNjcmlwdG9ycylcbiAgY29uc3QgaWRzID0gT2JqZWN0LmZyZWV6ZShmcm96ZW5EZXNjcmlwdG9ycy5tYXAoKHtpZH0pID0+IGlkKSlcblxuICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7XG4gICAgZGVzY3JpcHRvcnM6IGZyb3plbkRlc2NyaXB0b3JzLFxuICAgIGlkcyxcbiAgICByZWNvcmQoaWQpIHtcbiAgICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHNCeUlkLmdldChpZClcblxuICAgICAgaWYgKCFyZWNvcmQpIHVuc3VwcG9ydGVkTGFuZ3VhZ2UoaWQpXG5cbiAgICAgIHJldHVybiByZWNvcmRcbiAgICB9LFxuICAgIHJlc29sdmUoaWQsIHJvbGUsIGxvY2F0aW9uKSB7XG4gICAgICBpZiAoIXJlZ2lzdHJ5Um9sZXMuaW5jbHVkZXMocm9sZSkpIGludmFsaWRSZWdpc3RyeShgVW5rbm93biByZWdpc3RyeSByb2xlICcke3JvbGV9Jy5gLCBpZClcbiAgICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZHNCeUlkLmdldChpZClcblxuICAgICAgaWYgKCFyZWNvcmQpIHVuc3VwcG9ydGVkTGFuZ3VhZ2UoaWQsIGxvY2F0aW9uLCByb2xlKVxuICAgICAgY29uc3QgaW1wbGVtZW50YXRpb24gPSByZWNvcmRbcm9sZV1cblxuICAgICAgaWYgKHR5cGVvZiBpbXBsZW1lbnRhdGlvbiAhPSBcImZ1bmN0aW9uXCIpIHVuc3VwcG9ydGVkUm9sZShpZCwgcHVibGljUm9sZU5hbWUocm9sZSksIGxvY2F0aW9uKVxuXG4gICAgICByZXR1cm4gaW1wbGVtZW50YXRpb25cbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogUEhQIHJlZ2lzdHJ5IGZyb250ZW5kIHdyYXBwZXIuXG4gKiBAdHlwZSB7RnJvbnRlbmR9XG4gKi9cbmNvbnN0IHBocEZyb250ZW5kID0gKHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBwcm9ncmFtLCBzb3VyY2V9KSA9PiBwYXJzZVBocCh7Y2FwYWJpbGl0aWVzLCBmaWxlbmFtZSwgcHJvZ3JhbSwgc291cmNlfSlcblxuLyoqXG4gKiBSdWJ5IHJlZ2lzdHJ5IGZyb250ZW5kIHdyYXBwZXIuXG4gKiBAdHlwZSB7RnJvbnRlbmR9XG4gKi9cbmNvbnN0IHJ1YnlGcm9udGVuZCA9ICh7Y2FwYWJpbGl0aWVzLCBmaWxlbmFtZSwgcHJvZ3JhbSwgc291cmNlfSkgPT4gcGFyc2VSdWJ5KHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBwcm9ncmFtLCBzb3VyY2V9KVxuXG4vKipcbiAqIEphdmFTY3JpcHQgcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgamF2YVNjcmlwdEZyb250ZW5kID0gKHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBwcm9ncmFtLCBzb3VyY2V9KSA9PiBwYXJzZUphdmFTY3JpcHRUeXBlU2NyaXB0KHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBsYW5ndWFnZTogXCJqYXZhc2NyaXB0XCIsIHByb2dyYW0sIHNvdXJjZX0pXG5cbi8qKlxuICogVHlwZVNjcmlwdCByZWdpc3RyeSBmcm9udGVuZCB3cmFwcGVyLlxuICogQHR5cGUge0Zyb250ZW5kfVxuICovXG5jb25zdCB0eXBlU2NyaXB0RnJvbnRlbmQgPSAoe2NhcGFiaWxpdGllcywgZmlsZW5hbWUsIHByb2dyYW0sIHNvdXJjZX0pID0+IHBhcnNlSmF2YVNjcmlwdFR5cGVTY3JpcHQoe2NhcGFiaWxpdGllcywgZmlsZW5hbWUsIGxhbmd1YWdlOiBcInR5cGVzY3JpcHRcIiwgcHJvZ3JhbSwgc291cmNlfSlcblxuLyoqXG4gKiBKYXZhIHJlZ2lzdHJ5IGZyb250ZW5kIHdyYXBwZXIuXG4gKiBAdHlwZSB7RnJvbnRlbmR9XG4gKi9cbmNvbnN0IGphdmFGcm9udGVuZCA9ICh7Y2FwYWJpbGl0aWVzLCBmaWxlbmFtZSwgcHJvZ3JhbSwgc291cmNlfSkgPT4gcGFyc2VKYXZhKHtjYXBhYmlsaXRpZXMsIGZpbGVuYW1lLCBwcm9ncmFtLCBzb3VyY2V9KVxuXG4vKipcbiAqIEtvdGxpbiByZWdpc3RyeSBmcm9udGVuZCB3cmFwcGVyLlxuICogQHR5cGUge0Zyb250ZW5kfVxuICovXG5jb25zdCBrb3RsaW5Gcm9udGVuZCA9ICh7ZmlsZW5hbWUsIHNvdXJjZX0pID0+IHBhcnNlS290bGluKHtmaWxlbmFtZSwgc291cmNlfSlcblxuLyoqXG4gKiBQeXRob24gcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgcHl0aG9uRnJvbnRlbmQgPSAoe2ZpbGVuYW1lLCBzb3VyY2V9KSA9PiBwYXJzZVB5dGhvbih7ZmlsZW5hbWUsIHNvdXJjZX0pXG5cbi8qKlxuICogQyMgcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgY3NoYXJwRnJvbnRlbmQgPSAoe2ZpbGVuYW1lLCBzb3VyY2V9KSA9PiBwYXJzZUNTaGFycCh7ZmlsZW5hbWUsIHNvdXJjZX0pXG5cbi8qKlxuICogR28gcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgZ29Gcm9udGVuZCA9ICh7ZmlsZW5hbWUsIHNvdXJjZX0pID0+IHBhcnNlR28oe2ZpbGVuYW1lLCBzb3VyY2V9KVxuXG4vKipcbiAqIERhcnQgcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgZGFydEZyb250ZW5kID0gKHtmaWxlbmFtZSwgc291cmNlfSkgPT4gcGFyc2VEYXJ0KHtmaWxlbmFtZSwgc291cmNlfSlcblxuLyoqXG4gKiBaaWcgcmVnaXN0cnkgZnJvbnRlbmQgd3JhcHBlci5cbiAqIEB0eXBlIHtGcm9udGVuZH1cbiAqL1xuY29uc3QgemlnRnJvbnRlbmQgPSAoe2ZpbGVuYW1lLCBzb3VyY2V9KSA9PiBwYXJzZVppZyh7ZmlsZW5hbWUsIHNvdXJjZX0pXG5cbmNvbnN0IHJlY29yZHMgPSBbXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwidmFsaWRhdGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJwaHA4MlwiXX0sXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVQaHBDaGVja1BsYW4sIHN0YWdlczogW1widmFsaWRhdGVcIl0sIHRvb2xjaGFpbnM6IFtcInBocDgyXCJdfSxcbiAgICBkZWZhdWx0RmlsZW5hbWU6IFwicHJvZ3JhbS5waHBcIixcbiAgICBmcm9udGVuZDogcGhwRnJvbnRlbmQsXG4gICAgaWQ6IFwicGhwXCIsXG4gICAgbWVkaWFUeXBlOiBcImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwXCIsXG4gICAgdGV4dEJhY2tlbmQ6IGdlbmVyYXRlUGhwXG4gIH0pLFxuICBsYW5ndWFnZSh7XG4gICAgYWNjZXB0YW5jZToge3N0YWdlczogW1wicGFyc2VcIiwgXCJnZW5lcmF0ZVwiLCBcInZhbGlkYXRlXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wicnVieVwiXX0sXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVSdWJ5Q2hlY2tQbGFuLCBzdGFnZXM6IFtcInZhbGlkYXRlXCJdLCB0b29sY2hhaW5zOiBbXCJydWJ5XCJdfSxcbiAgICBkZWZhdWx0RmlsZW5hbWU6IFwicHJvZ3JhbS5yYlwiLFxuICAgIGZyb250ZW5kOiBydWJ5RnJvbnRlbmQsXG4gICAgaWQ6IFwicnVieVwiLFxuICAgIG1lZGlhVHlwZTogXCJ0ZXh0L3gtcnVieVwiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZVJ1YnlcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwidmFsaWRhdGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJub2RlXCJdfSxcbiAgICBjaGVjazoge2ZhY3Rvcnk6IGNyZWF0ZUphdmFTY3JpcHRDaGVja1BsYW4sIHN0YWdlczogW1widmFsaWRhdGVcIl0sIHRvb2xjaGFpbnM6IFtcIm5vZGVcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLmpzXCIsXG4gICAgZnJvbnRlbmQ6IGphdmFTY3JpcHRGcm9udGVuZCxcbiAgICBpZDogXCJqYXZhc2NyaXB0XCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQvamF2YXNjcmlwdFwiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZUphdmFTY3JpcHRcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcInRzY1wiLCBcIm5vZGVcIl19LFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlVHlwZVNjcmlwdENoZWNrUGxhbiwgc3RhZ2VzOiBbXCJjb21waWxlXCJdLCB0b29sY2hhaW5zOiBbXCJ0c2NcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLnRzXCIsXG4gICAgZnJvbnRlbmQ6IHR5cGVTY3JpcHRGcm9udGVuZCxcbiAgICBpZDogXCJ0eXBlc2NyaXB0XCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQvdHlwZXNjcmlwdFwiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZVR5cGVTY3JpcHRcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImphdmFjXCIsIFwiamF2YVwiXX0sXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVKYXZhQ2hlY2tQbGFuLCBzdGFnZXM6IFtcImNvbXBpbGVcIl0sIHRvb2xjaGFpbnM6IFtcImphdmFjXCJdfSxcbiAgICBkZWZhdWx0RmlsZW5hbWU6IFwiTWFpbi5qYXZhXCIsXG4gICAgZnJvbnRlbmQ6IGphdmFGcm9udGVuZCxcbiAgICBpZDogXCJqYXZhXCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQveC1qYXZhLXNvdXJjZVwiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZUphdmFcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImtvdGxpbmNcIiwgXCJqYXZhMjVcIl19LFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlS290bGluQ2hlY2tQbGFuLCBzdGFnZXM6IFtcImNvbXBpbGVcIl0sIHRvb2xjaGFpbnM6IFtcImtvdGxpbmNcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJQcm9ncmFtLmt0XCIsXG4gICAgZnJvbnRlbmQ6IGtvdGxpbkZyb250ZW5kLFxuICAgIGlkOiBcImtvdGxpblwiLFxuICAgIG1lZGlhVHlwZTogXCJ0ZXh0L3gta290bGluXCIsXG4gICAgdGV4dEJhY2tlbmQ6IGdlbmVyYXRlS290bGluXG4gIH0pLFxuICBsYW5ndWFnZSh7XG4gICAgYWNjZXB0YW5jZToge3N0YWdlczogW1wicGFyc2VcIiwgXCJnZW5lcmF0ZVwiLCBcImNvbXBpbGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJweXRob25cIl19LFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlUHl0aG9uQ2hlY2tQbGFuLCBzdGFnZXM6IFtcImNvbXBpbGVcIl0sIHRvb2xjaGFpbnM6IFtcInB5dGhvblwiXX0sXG4gICAgZGVmYXVsdEZpbGVuYW1lOiBcInByb2dyYW0ucHlcIixcbiAgICBmcm9udGVuZDogcHl0aG9uRnJvbnRlbmQsXG4gICAgaWQ6IFwicHl0aG9uXCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQveC1weXRob25cIixcbiAgICB0ZXh0QmFja2VuZDogZ2VuZXJhdGVQeXRob25cbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwicmVzdG9yZVwiLCBcImNvbXBpbGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJkb3RuZXRcIl19LFxuICAgIGFydGlmYWN0TXVsdGlwbGljaXR5OiBcIm11bHRpcGxlXCIsXG4gICAgY2hlY2s6IHtmYWN0b3J5OiBjcmVhdGVDU2hhcnBDaGVja1BsYW4sIHN0YWdlczogW1wicmVzdG9yZVwiLCBcImNvbXBpbGVcIl0sIHRvb2xjaGFpbnM6IFtcImRvdG5ldFwiXX0sXG4gICAgZGVmYXVsdEZpbGVuYW1lOiBcIlByb2dyYW0uY3NcIixcbiAgICBmcm9udGVuZDogY3NoYXJwRnJvbnRlbmQsXG4gICAgaWQ6IFwiY3NoYXJwXCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQveC1jc2hhcnBcIixcbiAgICB0ZXh0QmFja2VuZDogZ2VuZXJhdGVDU2hhcnBQcm9qZWN0XG4gIH0pLFxuICBsYW5ndWFnZSh7XG4gICAgYWNjZXB0YW5jZToge3N0YWdlczogW1wicGFyc2VcIiwgXCJnZW5lcmF0ZVwiLCBcImNvbXBpbGVcIiwgXCJ2YWxpZGF0ZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImdvXCJdfSxcbiAgICBhcnRpZmFjdE11bHRpcGxpY2l0eTogXCJtdWx0aXBsZVwiLFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlR29DaGVja1BsYW4sIHN0YWdlczogW1wiY29tcGlsZVwiLCBcInZhbGlkYXRlXCJdLCB0b29sY2hhaW5zOiBbXCJnb1wiXX0sXG4gICAgZGVmYXVsdEZpbGVuYW1lOiBcIm1haW4uZ29cIixcbiAgICBmcm9udGVuZDogZ29Gcm9udGVuZCxcbiAgICBpZDogXCJnb1wiLFxuICAgIG1lZGlhVHlwZTogXCJ0ZXh0L3gtZ29cIixcbiAgICB0ZXh0QmFja2VuZDogZ2VuZXJhdGVHb01vZHVsZVxuICB9KSxcbiAgbGFuZ3VhZ2Uoe1xuICAgIGFjY2VwdGFuY2U6IHtzdGFnZXM6IFtcInBhcnNlXCIsIFwiZ2VuZXJhdGVcIiwgXCJjb21waWxlXCIsIFwibGlua1wiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImNsYW5nXCJdfSxcbiAgICBhcnRpZmFjdE11bHRpcGxpY2l0eTogXCJtdWx0aXBsZVwiLFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlQ0NoZWNrUGxhbiwgc3RhZ2VzOiBbXCJjb21waWxlXCIsIFwibGlua1wiXSwgdG9vbGNoYWluczogW1wiY2xhbmdcIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLmNcIixcbiAgICBmZWF0dXJlczoge1xuICAgICAgY2xvc2VkUmVjb3JkczogZmFsc2UsXG4gICAgICBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZhbHNlLFxuICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczogZmFsc2UsXG4gICAgICBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmYWxzZSxcbiAgICAgIGVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlczogZmFsc2UsXG4gICAgICBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IHRydWUsXG4gICAgICBpbW11dGFibGVDb2xsZWN0aW9uczogZmFsc2UsXG4gICAgICBvcHRpb25hbFZhbHVlczogZmFsc2UsXG4gICAgICBvcmRlcmVkTGlzdEl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICBvcmRlcmVkTWFwSXRlcmF0aW9uOiBmYWxzZSxcbiAgICAgIGJvdW5kZWRTdWJ0eXBpbmc6IGZhbHNlLFxuICAgICAgcmVmZXJlbmNlQ2xhc3NlczogZmFsc2UsXG4gICAgICB0eXBlZEVycm9yczogZmFsc2UsXG4gICAgICB0eXBlUGFyYW1ldGVyc0FuZEdlbmVyaWNzOiBmYWxzZVxuICAgIH0sXG4gICAgZnJvbnRlbmQ6IHBhcnNlQyxcbiAgICBpZDogXCJjXCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQveC1jXCIsXG4gICAgdGV4dEJhY2tlbmQ6IGdlbmVyYXRlQ1Byb2dyYW1cbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcImxpbmtcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJjbGFuZ3BwXCJdfSxcbiAgICBjaGVjazoge2ZhY3Rvcnk6IGNyZWF0ZUNwcENoZWNrUGxhbiwgc3RhZ2VzOiBbXCJjb21waWxlXCIsIFwibGlua1wiXSwgdG9vbGNoYWluczogW1wiY2xhbmdwcFwiXX0sXG4gICAgZGVmYXVsdEZpbGVuYW1lOiBcInByb2dyYW0uY3BwXCIsIGZyb250ZW5kOiBwYXJzZUNwcCwgaWQ6IFwiY3BwXCIsIG1lZGlhVHlwZTogXCJ0ZXh0L3gtYysrc3JjXCIsIHRleHRCYWNrZW5kOiBnZW5lcmF0ZUNwcFxuICB9KSxcbiAgbGFuZ3VhZ2Uoe1xuICAgIGFjY2VwdGFuY2U6IHtzdGFnZXM6IFtcInBhcnNlXCIsIFwiZ2VuZXJhdGVcIiwgXCJjb21waWxlXCIsIFwidmFsaWRhdGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJydXN0Y1wiLCBcImNhcmdvXCJdfSxcbiAgICBhcnRpZmFjdE11bHRpcGxpY2l0eTogXCJtdWx0aXBsZVwiLFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlUnVzdENoZWNrUGxhbiwgc3RhZ2VzOiBbXCJjb21waWxlXCIsIFwidmFsaWRhdGVcIl0sIHRvb2xjaGFpbnM6IFtcInJ1c3RjXCIsIFwiY2FyZ29cIl19LFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJzcmMvbWFpbi5yc1wiLCBmcm9udGVuZDogcGFyc2VSdXN0LCBpZDogXCJydXN0XCIsIG1lZGlhVHlwZTogXCJ0ZXh0L3gtcnVzdFwiLCB0ZXh0QmFja2VuZDogZ2VuZXJhdGVSdXN0UHJvamVjdFxuICB9KSxcbiAgbGFuZ3VhZ2Uoe2FjY2VwdGFuY2U6IHtzdGFnZXM6IFtcInBhcnNlXCIsIFwiZ2VuZXJhdGVcIiwgXCJjb21waWxlXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wic3dpZnRjXCJdfSxcbiAgICBjaGVjazoge2ZhY3Rvcnk6IGNyZWF0ZVN3aWZ0Q2hlY2tQbGFuLCBzdGFnZXM6IFtcImNvbXBpbGVcIl0sIHRvb2xjaGFpbnM6IFtcInN3aWZ0Y1wiXX0sXG4gICAgZGVmYXVsdEZpbGVuYW1lOiBcInByb2dyYW0uc3dpZnRcIiwgZnJvbnRlbmQ6IHBhcnNlU3dpZnQsIGlkOiBcInN3aWZ0XCIsIG1lZGlhVHlwZTogXCJ0ZXh0L3gtc3dpZnRcIiwgdGV4dEJhY2tlbmQ6IGdlbmVyYXRlU3dpZnR9KSxcbiAgbGFuZ3VhZ2Uoe1xuICAgIGFjY2VwdGFuY2U6IHtzdGFnZXM6IFtcInBhcnNlXCIsIFwiZ2VuZXJhdGVcIiwgXCJyZXN0b3JlXCIsIFwiY29tcGlsZVwiLCBcInZhbGlkYXRlXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wiZGFydFwiXX0sXG4gICAgYXJ0aWZhY3RNdWx0aXBsaWNpdHk6IFwibXVsdGlwbGVcIixcbiAgICBjaGVjazoge2ZhY3Rvcnk6IGNyZWF0ZURhcnRDaGVja1BsYW4sIHN0YWdlczogW1wicmVzdG9yZVwiLCBcImNvbXBpbGVcIiwgXCJ2YWxpZGF0ZVwiXSwgdG9vbGNoYWluczogW1wiZGFydFwiXX0sXG4gICAgZGVmYXVsdEZpbGVuYW1lOiBcImJpbi9wcm9ncmFtLmRhcnRcIixcbiAgICBmZWF0dXJlczoge1xuICAgICAgY2xvc2VkUmVjb3JkczogZmFsc2UsXG4gICAgICBjb25kaXRpb25Db250cm9sbGVkTG9vcHM6IGZhbHNlLFxuICAgICAgY29uZGl0aW9uYWxFeHByZXNzaW9uczogZmFsc2UsXG4gICAgICBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmYWxzZSxcbiAgICAgIGVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlczogZmFsc2UsXG4gICAgICBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IHRydWUsXG4gICAgICBpbW11dGFibGVDb2xsZWN0aW9uczogZmFsc2UsXG4gICAgICBvcHRpb25hbFZhbHVlczogZmFsc2UsXG4gICAgICBvcmRlcmVkTGlzdEl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICBvcmRlcmVkTWFwSXRlcmF0aW9uOiBmYWxzZSxcbiAgICAgIGJvdW5kZWRTdWJ0eXBpbmc6IGZhbHNlLFxuICAgICAgcmVmZXJlbmNlQ2xhc3NlczogZmFsc2UsXG4gICAgICB0eXBlZEVycm9yczogZmFsc2UsXG4gICAgICB0eXBlUGFyYW1ldGVyc0FuZEdlbmVyaWNzOiBmYWxzZVxuICAgIH0sXG4gICAgZnJvbnRlbmQ6IGRhcnRGcm9udGVuZCxcbiAgICBpZDogXCJkYXJ0XCIsXG4gICAgbWVkaWFUeXBlOiBcInRleHQveC1kYXJ0XCIsXG4gICAgdGV4dEJhY2tlbmQ6IGdlbmVyYXRlRGFydFBhY2thZ2VcbiAgfSksXG4gIGxhbmd1YWdlKHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJwYXJzZVwiLCBcImdlbmVyYXRlXCIsIFwiY29tcGlsZVwiLCBcInZhbGlkYXRlXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wiemlnXCJdfSxcbiAgICBhcnRpZmFjdE11bHRpcGxpY2l0eTogXCJtdWx0aXBsZVwiLFxuICAgIGNoZWNrOiB7ZmFjdG9yeTogY3JlYXRlWmlnQ2hlY2tQbGFuLCBzdGFnZXM6IFtcImNvbXBpbGVcIiwgXCJ2YWxpZGF0ZVwiXSwgdG9vbGNoYWluczogW1wiemlnXCJdfSxcbiAgICBkZWZhdWx0RmlsZW5hbWU6IFwic3JjL21haW4uemlnXCIsXG4gICAgZmVhdHVyZXM6IHtcbiAgICAgIGNsb3NlZFJlY29yZHM6IGZhbHNlLFxuICAgICAgY29uZGl0aW9uQ29udHJvbGxlZExvb3BzOiBmYWxzZSxcbiAgICAgIGNvbmRpdGlvbmFsRXhwcmVzc2lvbnM6IGZhbHNlLFxuICAgICAgc3RyaW5nSW50ZXJwb2xhdGlvbjogZmFsc2UsXG4gICAgICBlZmZlY3RmdWxDYXBhYmlsaXRpZXNBbmRSZXNvdXJjZXM6IGZhbHNlLFxuICAgICAgZ2VuZXJhbEZ1bmN0aW9uc0FuZENhbGxzOiB0cnVlLFxuICAgICAgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IGZhbHNlLFxuICAgICAgb3B0aW9uYWxWYWx1ZXM6IGZhbHNlLFxuICAgICAgb3JkZXJlZExpc3RJdGVyYXRpb246IGZhbHNlLFxuICAgICAgb3JkZXJlZE1hcEl0ZXJhdGlvbjogZmFsc2UsXG4gICAgICBib3VuZGVkU3VidHlwaW5nOiBmYWxzZSxcbiAgICAgIHJlZmVyZW5jZUNsYXNzZXM6IGZhbHNlLFxuICAgICAgdHlwZWRFcnJvcnM6IGZhbHNlLFxuICAgICAgdHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljczogZmFsc2VcbiAgICB9LFxuICAgIGZyb250ZW5kOiB6aWdGcm9udGVuZCxcbiAgICBpZDogXCJ6aWdcIixcbiAgICBtZWRpYVR5cGU6IFwidGV4dC94LXppZ1wiLFxuICAgIHRleHRCYWNrZW5kOiBnZW5lcmF0ZVppZ1Byb2plY3RcbiAgfSksXG4gIHtcbiAgICBhY2NlcHRhbmNlOiB7c3RhZ2VzOiBbXCJnZW5lcmF0ZVwiLCBcInZhbGlkYXRlXCIsIFwiaW5zdGFudGlhdGVcIiwgXCJleGVjdXRlXCJdLCB0b29sY2hhaW5zOiBbXCJ3YXNtLXZhbGlkYXRlXCIsIFwibm9kZVwiLCBcImNocm9taXVtXCJdfSxcbiAgICBhcHBsaWNhdGlvbkJhY2tlbmQ6IGdlbmVyYXRlQnJvd3Nlcldhc20sXG4gICAgYXJ0aWZhY3RNdWx0aXBsaWNpdHk6IFwibXVsdGlwbGVcIixcbiAgICBiaW5hcnlCYWNrZW5kOiBnZW5lcmF0ZUJyb3dzZXJXYXNtLFxuICAgIGRlZmF1bHRGaWxlbmFtZTogXCJwcm9ncmFtLndhc21cIixcbiAgICBmZWF0dXJlczoge2JvdW5kZWRTdWJ0eXBpbmc6IGZhbHNlLCBjbG9zZWRSZWNvcmRzOiBmYWxzZSwgY29uZGl0aW9uQ29udHJvbGxlZExvb3BzOiBmYWxzZSwgY29uZGl0aW9uYWxFeHByZXNzaW9uczogZmFsc2UsIHN0cmluZ0ludGVycG9sYXRpb246IGZhbHNlLCBlZmZlY3RmdWxDYXBhYmlsaXRpZXNBbmRSZXNvdXJjZXM6IGZhbHNlLCBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IGZhbHNlLCBpbW11dGFibGVDb2xsZWN0aW9uczogZmFsc2UsIG9wdGlvbmFsVmFsdWVzOiBmYWxzZSwgb3JkZXJlZExpc3RJdGVyYXRpb246IGZhbHNlLCBvcmRlcmVkTWFwSXRlcmF0aW9uOiBmYWxzZSwgcmVmZXJlbmNlQ2xhc3NlczogZmFsc2UsIHR5cGVkRXJyb3JzOiBmYWxzZSwgdHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljczogZmFsc2V9LFxuICAgIGlkOiBcIndhc21cIixcbiAgICBtYXBwaW5nOiB7YmluYXJ5UmFuZ2VzOiB0cnVlLCByaWNoVGV4dDogdHJ1ZSwgc291cmNlTWFwVjM6IHRydWV9LFxuICAgIG1lZGlhVHlwZTogXCJhcHBsaWNhdGlvbi93YXNtXCIsXG4gICAgcm91bmRUcmlwOiBmYWxzZVxuICB9LFxuICB7XG4gICAgYWNjZXB0YW5jZToge3N0YWdlczogW1wiZ2VuZXJhdGVcIiwgXCJjb21waWxlXCIsIFwidmFsaWRhdGVcIiwgXCJpbnN0YW50aWF0ZVwiLCBcImV4ZWN1dGVcIl0sIHRvb2xjaGFpbnM6IFtcImFuZHJvaWRcIl19LFxuICAgIGFwcGxpY2F0aW9uQmFja2VuZDogZ2VuZXJhdGVBbmRyb2lkQXBwbGljYXRpb24sXG4gICAgYXJ0aWZhY3RNdWx0aXBsaWNpdHk6IFwibXVsdGlwbGVcIixcbiAgICBmZWF0dXJlczoge2JvdW5kZWRTdWJ0eXBpbmc6IGZhbHNlLCBjbG9zZWRSZWNvcmRzOiBmYWxzZSwgY29uZGl0aW9uQ29udHJvbGxlZExvb3BzOiBmYWxzZSwgY29uZGl0aW9uYWxFeHByZXNzaW9uczogZmFsc2UsIHN0cmluZ0ludGVycG9sYXRpb246IGZhbHNlLCBlZmZlY3RmdWxDYXBhYmlsaXRpZXNBbmRSZXNvdXJjZXM6IGZhbHNlLCBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IGZhbHNlLCBpbW11dGFibGVDb2xsZWN0aW9uczogZmFsc2UsIG9wdGlvbmFsVmFsdWVzOiBmYWxzZSwgb3JkZXJlZExpc3RJdGVyYXRpb246IGZhbHNlLCBvcmRlcmVkTWFwSXRlcmF0aW9uOiBmYWxzZSwgcmVmZXJlbmNlQ2xhc3NlczogZmFsc2UsIHR5cGVkRXJyb3JzOiBmYWxzZSwgdHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljczogZmFsc2V9LFxuICAgIGlkOiBcImFuZHJvaWRcIixcbiAgICBtYXBwaW5nOiB7YmluYXJ5UmFuZ2VzOiB0cnVlLCByaWNoVGV4dDogdHJ1ZSwgc291cmNlTWFwVjM6IHRydWV9LFxuICAgIHJvdW5kVHJpcDogZmFsc2VcbiAgfSxcbiAge1xuICAgIGFjY2VwdGFuY2U6IHtzdGFnZXM6IFtcImdlbmVyYXRlXCJdLCB0b29sY2hhaW5zOiBbXX0sXG4gICAgYXBwbGljYXRpb25CYWNrZW5kOiBnZW5lcmF0ZUlvc0FwcGxpY2F0aW9uLFxuICAgIGFydGlmYWN0TXVsdGlwbGljaXR5OiBcIm11bHRpcGxlXCIsXG4gICAgZmVhdHVyZXM6IHtib3VuZGVkU3VidHlwaW5nOiBmYWxzZSwgY2xvc2VkUmVjb3JkczogZmFsc2UsIGNvbmRpdGlvbkNvbnRyb2xsZWRMb29wczogZmFsc2UsIGNvbmRpdGlvbmFsRXhwcmVzc2lvbnM6IGZhbHNlLCBzdHJpbmdJbnRlcnBvbGF0aW9uOiBmYWxzZSwgZWZmZWN0ZnVsQ2FwYWJpbGl0aWVzQW5kUmVzb3VyY2VzOiBmYWxzZSwgZ2VuZXJhbEZ1bmN0aW9uc0FuZENhbGxzOiBmYWxzZSwgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IGZhbHNlLCBvcHRpb25hbFZhbHVlczogZmFsc2UsIG9yZGVyZWRMaXN0SXRlcmF0aW9uOiBmYWxzZSwgb3JkZXJlZE1hcEl0ZXJhdGlvbjogZmFsc2UsIHJlZmVyZW5jZUNsYXNzZXM6IGZhbHNlLCB0eXBlZEVycm9yczogZmFsc2UsIHR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3M6IGZhbHNlfSxcbiAgICBpZDogXCJpb3NcIixcbiAgICBtYXBwaW5nOiB7YmluYXJ5UmFuZ2VzOiB0cnVlLCByaWNoVGV4dDogdHJ1ZSwgc291cmNlTWFwVjM6IHRydWV9LFxuICAgIHJvdW5kVHJpcDogZmFsc2VcbiAgfSxcbiAge1xuICAgIGFjY2VwdGFuY2U6IHtzdGFnZXM6IFtcImdlbmVyYXRlXCIsIFwicmVzdG9yZVwiLCBcImNvbXBpbGVcIiwgXCJ2YWxpZGF0ZVwiLCBcImluc3RhbnRpYXRlXCIsIFwiZXhlY3V0ZVwiXSwgdG9vbGNoYWluczogW1wiZmx1dHRlclwiLCBcImFuZHJvaWRcIl19LFxuICAgIGFwcGxpY2F0aW9uQmFja2VuZDogZ2VuZXJhdGVGbHV0dGVyQXBwbGljYXRpb24sXG4gICAgYXJ0aWZhY3RNdWx0aXBsaWNpdHk6IFwibXVsdGlwbGVcIixcbiAgICBmZWF0dXJlczoge2JvdW5kZWRTdWJ0eXBpbmc6IGZhbHNlLCBjbG9zZWRSZWNvcmRzOiBmYWxzZSwgY29uZGl0aW9uQ29udHJvbGxlZExvb3BzOiBmYWxzZSwgY29uZGl0aW9uYWxFeHByZXNzaW9uczogZmFsc2UsIHN0cmluZ0ludGVycG9sYXRpb246IGZhbHNlLCBlZmZlY3RmdWxDYXBhYmlsaXRpZXNBbmRSZXNvdXJjZXM6IGZhbHNlLCBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IGZhbHNlLCBpbW11dGFibGVDb2xsZWN0aW9uczogZmFsc2UsIG9wdGlvbmFsVmFsdWVzOiBmYWxzZSwgb3JkZXJlZExpc3RJdGVyYXRpb246IGZhbHNlLCBvcmRlcmVkTWFwSXRlcmF0aW9uOiBmYWxzZSwgcmVmZXJlbmNlQ2xhc3NlczogZmFsc2UsIHR5cGVkRXJyb3JzOiBmYWxzZSwgdHlwZVBhcmFtZXRlcnNBbmRHZW5lcmljczogZmFsc2V9LFxuICAgIGlkOiBcImZsdXR0ZXJcIixcbiAgICBtYXBwaW5nOiB7YmluYXJ5UmFuZ2VzOiB0cnVlLCByaWNoVGV4dDogdHJ1ZSwgc291cmNlTWFwVjM6IHRydWV9LFxuICAgIHJvdW5kVHJpcDogZmFsc2VcbiAgfVxuXVxuXG5leHBvcnQgY29uc3QgbGFuZ3VhZ2VSZWdpc3RyeSA9IGNyZWF0ZUxhbmd1YWdlUmVnaXN0cnkocmVjb3JkcylcbmV4cG9ydCBjb25zdCBsYW5ndWFnZUNhcGFiaWxpdGllcyA9IGxhbmd1YWdlUmVnaXN0cnkuZGVzY3JpcHRvcnNcbi8qKiBAdHlwZSB7cmVhZG9ubHkgaW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY0xhbmd1YWdlW119ICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydGVkTGFuZ3VhZ2VzID0gT2JqZWN0LmZyZWV6ZShsYW5ndWFnZUNhcGFiaWxpdGllc1xuICAuZmlsdGVyKCh7cm9sZXN9KSA9PiByb2xlcy5mcm9udGVuZCAmJiByb2xlcy50ZXh0QmFja2VuZClcbiAgLm1hcCgoe2lkfSkgPT4gLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3NlbWFudGljL3R5cGVzLmpzXCIpLlNlbWFudGljTGFuZ3VhZ2V9ICovIChpZCkpKVxuXG4vKipcbiAqIFN1cHBsaWVzIGNvbW1vbiBvcmlnaW5hbC1maXZlIGNhcGFiaWxpdHkgZGVjbGFyYXRpb25zLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gdmFsdWVzIC0gTGFuZ3VhZ2Utc3BlY2lmaWMgcmVjb3JkIGZpZWxkcy5cbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gQ29tcGxldGUgcmVjb3JkLlxuICovXG5mdW5jdGlvbiBsYW5ndWFnZSh2YWx1ZXMpIHtcbiAgcmV0dXJuIHtcbiAgICBhcnRpZmFjdE11bHRpcGxpY2l0eTogXCJzaW5nbGVcIixcbiAgICBmZWF0dXJlczoge1xuICAgICAgYm91bmRlZFN1YnR5cGluZzogU3RyaW5nKHZhbHVlcy5pZCkgPT0gXCJwaHBcIixcbiAgICAgIGNsb3NlZFJlY29yZHM6IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpLFxuICAgICAgY29uZGl0aW9uQ29udHJvbGxlZExvb3BzOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIGNvbmRpdGlvbmFsRXhwcmVzc2lvbnM6IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpLFxuICAgICAgc3RyaW5nSW50ZXJwb2xhdGlvbjogW1wicGhwXCIsIFwicnVieVwiLCBcImphdmFzY3JpcHRcIiwgXCJ0eXBlc2NyaXB0XCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIGVmZmVjdGZ1bENhcGFiaWxpdGllc0FuZFJlc291cmNlczogW1wicGhwXCIsIFwicnVieVwiLCBcImphdmFzY3JpcHRcIiwgXCJ0eXBlc2NyaXB0XCIsIFwiamF2YVwiXS5pbmNsdWRlcyhTdHJpbmcodmFsdWVzLmlkKSksXG4gICAgICBnZW5lcmFsRnVuY3Rpb25zQW5kQ2FsbHM6IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpLFxuICAgICAgaW1tdXRhYmxlQ29sbGVjdGlvbnM6IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpLFxuICAgICAgb3B0aW9uYWxWYWx1ZXM6IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpLFxuICAgICAgb3JkZXJlZExpc3RJdGVyYXRpb246IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpLFxuICAgICAgb3JkZXJlZE1hcEl0ZXJhdGlvbjogW1wicGhwXCIsIFwicnVieVwiLCBcImphdmFzY3JpcHRcIiwgXCJ0eXBlc2NyaXB0XCIsIFwiamF2YVwiXS5pbmNsdWRlcyhTdHJpbmcodmFsdWVzLmlkKSksXG4gICAgICByZWZlcmVuY2VDbGFzc2VzOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIHR5cGVkRXJyb3JzOiBbXCJwaHBcIiwgXCJydWJ5XCIsIFwiamF2YXNjcmlwdFwiLCBcInR5cGVzY3JpcHRcIiwgXCJqYXZhXCJdLmluY2x1ZGVzKFN0cmluZyh2YWx1ZXMuaWQpKSxcbiAgICAgIHR5cGVQYXJhbWV0ZXJzQW5kR2VuZXJpY3M6IFtcInBocFwiLCBcInJ1YnlcIiwgXCJqYXZhc2NyaXB0XCIsIFwidHlwZXNjcmlwdFwiLCBcImphdmFcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbHVlcy5pZCkpXG4gICAgfSxcbiAgICBtYXBwaW5nOiB7YmluYXJ5UmFuZ2VzOiBmYWxzZSwgcmljaFRleHQ6IHRydWUsIHNvdXJjZU1hcFYzOiB0cnVlfSxcbiAgICBwcm92aWRlcjogW1wicGhwXCIsIFwicnVieVwiLCBcImphdmFzY3JpcHRcIiwgXCJ0eXBlc2NyaXB0XCIsIFwiamF2YVwiXS5pbmNsdWRlcyhTdHJpbmcodmFsdWVzLmlkKSksXG4gICAgcm91bmRUcmlwOiB0cnVlLFxuICAgIC4uLnZhbHVlc1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0cyBhbiBpbnRlcm5hbCByZWdpc3RyeSBrZXkgZm9yIGEgcHVibGljIHJvbGUgZGlhZ25vc3RpYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSByb2xlIC0gSW50ZXJuYWwgcm9sZSBrZXkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBQdWJsaWMgcm9sZSBuYW1lLlxuICovXG5mdW5jdGlvbiBwdWJsaWNSb2xlTmFtZShyb2xlKSB7XG4gIGlmIChyb2xlID09IFwidGV4dEJhY2tlbmRcIikgcmV0dXJuIFwidGV4dCBiYWNrZW5kXCJcbiAgaWYgKHJvbGUgPT0gXCJiaW5hcnlCYWNrZW5kXCIpIHJldHVybiBcImJpbmFyeSBiYWNrZW5kXCJcbiAgaWYgKHJvbGUgPT0gXCJhcHBsaWNhdGlvbkJhY2tlbmRcIikgcmV0dXJuIFwiYXBwbGljYXRpb24tYXJ0aWZhY3QgYmFja2VuZFwiXG5cbiAgcmV0dXJuIHJvbGVcbn1cblxuLyoqXG4gKiBUaHJvd3MgYW4gdW5rbm93bi1sYW5ndWFnZSBkaWFnbm9zdGljLlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVW5rbm93biBpZGVudGl0eS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5Tb3VyY2VMb2NhdGlvbiB8IHVuZGVmaW5lZH0gW2xvY2F0aW9uXSAtIFJlbGF0ZWQgbG9jYXRpb24uXG4gKiBAcGFyYW0ge1JlZ2lzdHJ5Um9sZSB8IHVuZGVmaW5lZH0gW3JvbGVdIC0gUmVxdWVzdGVkIHJvbGUuXG4gKiBAcmV0dXJucyB7bmV2ZXJ9IEFsd2F5cyB0aHJvd3MuXG4gKi9cbmZ1bmN0aW9uIHVuc3VwcG9ydGVkTGFuZ3VhZ2UoaWQsIGxvY2F0aW9uLCByb2xlKSB7XG4gIGNvbnN0IG1lc3NhZ2UgPSByb2xlID09IFwiZnJvbnRlbmRcIiA/IFwiTm8gZnJvbnRlbmQgYWRhcHRlciBpcyByZWdpc3RlcmVkIGZvciB0aGlzIGxhbmd1YWdlLlwiIDpcbiAgICByb2xlID09IFwidGV4dEJhY2tlbmRcIiA/IFwiTm8gc291cmNlIGJhY2tlbmQgaXMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBsYW5ndWFnZS5cIiA6XG4gICAgICBcIk5vIGxhbmd1YWdlIG9yIHRhcmdldCBpcyByZWdpc3RlcmVkIGZvciB0aGlzIElELlwiXG5cbiAgdGhyb3cgbmV3IFNlbWFudGlmb2xkRGlhZ25vc3RpYyh7XG4gICAgY29kZTogXCJVTlNVUFBPUlRFRF9MQU5HVUFHRVwiLFxuICAgIGxhbmd1YWdlOiBpZCxcbiAgICBsb2NhdGlvbixcbiAgICBtZXNzYWdlXG4gIH0pXG59XG5cbi8qKlxuICogVGhyb3dzIGEgbm9ybWFsaXplZCByZWdpc3RyeS1zaGFwZSBkaWFnbm9zdGljLlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBGYWlsdXJlIGRldGFpbC5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBbaWRdIC0gQ2FuZGlkYXRlIHJlZ2lzdHJ5IElELlxuICogQHJldHVybnMge25ldmVyfSBBbHdheXMgdGhyb3dzLlxuICovXG5mdW5jdGlvbiBpbnZhbGlkUmVnaXN0cnkobWVzc2FnZSwgaWQgPSBcInJlZ2lzdHJ5XCIpIHtcbiAgdGhyb3cgbmV3IFNlbWFudGlmb2xkRGlhZ25vc3RpYyh7Y29kZTogXCJJTlZBTElEX1JFR0lTVFJZXCIsIGxhbmd1YWdlOiBpZCwgbWVzc2FnZX0pXG59XG5cbi8qKlxuICogQ2hlY2tzIGZvciBhbiBvcmRpbmFyeSBzdHJpbmcta2V5ZWQgb2JqZWN0LlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIENhbmRpZGF0ZSB2YWx1ZS5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gV2hldGhlciB0aGUgdmFsdWUgaXMgYSBwbGFpbiBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSBcIm9iamVjdFwiICYmIHZhbHVlICE9IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgPT0gT2JqZWN0LnByb3RvdHlwZVxufVxuXG4vKipcbiAqIERlZXBseSBmcmVlemVzIHJlZ2lzdHJ5IHJlY29yZHMgYW5kIHB1YmxpYyBkZXNjcmlwdG9ycy5cbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1R9IHZhbHVlIC0gUmVnaXN0cnktb3duZWQgdmFsdWUuXG4gKiBAcmV0dXJucyB7VH0gRnJvemVuIHZhbHVlLlxuICovXG5mdW5jdGlvbiBkZWVwRnJlZXplKHZhbHVlKSB7XG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9IFwib2JqZWN0XCIgfHwgT2JqZWN0LmlzRnJvemVuKHZhbHVlKSkgcmV0dXJuIHZhbHVlXG5cbiAgZm9yIChjb25zdCBuZXN0ZWQgb2YgT2JqZWN0LnZhbHVlcyh2YWx1ZSkpIGRlZXBGcmVlemUobmVzdGVkKVxuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKHZhbHVlKVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/mapping.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/mapping.js"],"names":[],"mappings":"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"}